Disassembly: 
  L1: 55 ?? push ebp
   8b ec ?? mov ebp, esp
   51 ?? push ecx
   56 ?? push esi
   ff 75 0c ?? push dword ss:[ebp + 12]
   c7 45 fc 00 00 00 00 ?? mov dword ss:[ebp + 0xfc<252,-4>], 0
   ff 15 7c 30 40 00 ?? call dword ds:[0x0040307c]
  
  L2: 8b 75 08 ?? mov esi, dword ss:[ebp + 8]
   83 c4 04 ?? add esp, 4
   85 c0 ?? test eax, eax
   ba b4 31 40 00 ?? mov edx, 0x004031b4<"unknown error">
   0f 45 d0 ?? cmovne edx, eax
   c7 46 14 0f 00 00 00 ?? mov dword ds:[esi + 0x14<20>], 15
   c7 46 10 00 00 00 00 ?? mov dword ds:[esi + 0x10<16>], 0
   c6 06 00 ?? mov byte ds:[esi], 0
   80 3a 00 ?? cmp byte ds:[edx], 0
   75 14 ?? jne basic block L5
  
  L3: 33 c9 ?? xor ecx, ecx
   51 ?? push ecx
   52 ?? push edx
   8b ce ?? mov ecx, esi
   e8 7a 04 00 00 ?? call function 0x004018e0
  
  L4: 8b c6 ?? mov eax, esi
   5e ?? pop esi
   8b e5 ?? mov esp, ebp
   5d ?? pop ebp
   c2 08 00 ?? ret 8
  
  L5: 8b ca ?? mov ecx, edx
   57 ?? push edi
   8d 79 01 ?? lea edi, ds:[ecx + 1]
  
  L6: 8a 01 ?? mov al, byte ds:[ecx]
   41 ?? inc ecx
   84 c0 ?? test al, al
  
  L7: 75 f9 ?? jne basic block L6
  
  L8: 2b cf ?? sub ecx, edi
   5f ?? pop edi
   51 ?? push ecx
   52 ?? push edx
   8b ce ?? mov ecx, esi
   e8 58 04 00 00 ?? call function 0x004018e0
  
  L9: 8b c6 ?? mov eax, esi
   5e ?? pop esi
   8b e5 ?? mov esp, ebp
   5d ?? pop ebp
   c2 08 00 ?? ret 8
  
  