Disassembly: 
  L1: 8b ff ?? mov edi, edi
   55 ?? push ebp
   8b ec ?? mov ebp, esp
   83 ec 10 ?? sub esp, 0x10<16>
   53 ?? push ebx
   56 ?? push esi
   8b 75 0c ?? mov esi, dword ss:[ebp + 12]
   33 db ?? xor ebx, ebx
   3b f3 ?? cmp esi, ebx
   74 15 ?? je basic block L6
  
  L2: 39 5d 10 ?? cmp dword ss:[ebp + 0x10<16>], ebx
   74 10 ?? je basic block L6
  
  L3: 38 1e ?? cmp byte ds:[esi], bl
   75 12 ?? jne basic block L8
  
  L4: 8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   3b c3 ?? cmp eax, ebx
   74 05 ?? je basic block L6
  
  L5: 33 c9 ?? xor ecx, ecx
   66 89 08 ?? mov word ds:[eax], cx
  
  L6: 33 c0 ?? xor eax, eax
  
  L7: 5e ?? pop esi
   5b ?? pop ebx
   c9 ?? leave
   c3 ?? ret
  
  L8: ff 75 14 ?? push dword ss:[ebp + 0x14<20>]
   8d 4d f0 ?? lea ecx, ss:[ebp + 0xf0<240,-16>]
   e8 57 b4 fe ff ?? call function 0x004091d4
  
  L9: 8b 45 f0 ?? mov eax, dword ss:[ebp + 0xf0<240,-16>]
   39 58 14 ?? cmp dword ds:[eax + 0x14<20>], ebx
   75 1f ?? jne basic block L15
  
  L10: 8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   3b c3 ?? cmp eax, ebx
   74 07 ?? je basic block L12
  
  L11: 66 0f b6 0e ?? movzx cx, byte ds:[esi]
   66 89 08 ?? mov word ds:[eax], cx
  
  L12: 38 5d fc ?? cmp byte ss:[ebp + 0xfc<252,-4>], bl
   74 07 ?? je basic block L14
  
  L13: 8b 45 f8 ?? mov eax, dword ss:[ebp + 0xf8<248,-8>]
   83 60 70 fd ?? and dword ds:[eax + 0x70<112>], 0xfd<253,-3>
  
  L14: 33 c0 ?? xor eax, eax
   40 ?? inc eax
   eb ca ?? jmp basic block L7
  
  L15: 8d 45 f0 ?? lea eax, ss:[ebp + 0xf0<240,-16>]
   50 ?? push eax
   0f b6 06 ?? movzx eax, byte ds:[esi]
   50 ?? push eax
   e8 c4 00 00 00 ?? call function 0x0041de75
  
  L16: 59 ?? pop ecx
   59 ?? pop ecx
   85 c0 ?? test eax, eax
   74 7d ?? je basic block L29
  
  L17: 8b 45 f0 ?? mov eax, dword ss:[ebp + 0xf0<240,-16>]
   8b 88 ac 00 00 00 ?? mov ecx, dword ds:[eax + 0x000000ac<172>]
   83 f9 01 ?? cmp ecx, 1
   7e 25 ?? jle basic block L21
  
  L18: 39 4d 10 ?? cmp dword ss:[ebp + 0x10<16>], ecx
   7c 20 ?? jl basic block L21
  
  L19: 33 d2 ?? xor edx, edx
   39 5d 08 ?? cmp dword ss:[ebp + 8], ebx
   0f 95 c2 ?? setne dl
   52 ?? push edx
   ff 75 08 ?? push dword ss:[ebp + 8]
   51 ?? push ecx
   56 ?? push esi
   6a 09 ?? push 9
   ff 70 04 ?? push dword ds:[eax + 4]
   ff 15 40 92 43 00 ?? call dword ds:[0x00439240]
  
  L20: 85 c0 ?? test eax, eax
   8b 45 f0 ?? mov eax, dword ss:[ebp + 0xf0<240,-16>]
   75 10 ?? jne basic block L23
  
  L21: 8b 4d 10 ?? mov ecx, dword ss:[ebp + 0x10<16>]
   3b 88 ac 00 00 00 ?? cmp ecx, dword ds:[eax + 0x000000ac<172>]
   72 20 ?? jb basic block L25
  
  L22: 38 5e 01 ?? cmp byte ds:[esi + 1], bl
   74 1b ?? je basic block L25
  
  L23: 8b 80 ac 00 00 00 ?? mov eax, dword ds:[eax + 0x000000ac<172>]
   38 5d fc ?? cmp byte ss:[ebp + 0xfc<252,-4>], bl
   0f 84 65 ff ff ff ?? je basic block L7
  
  L24: 8b 4d f8 ?? mov ecx, dword ss:[ebp + 0xf8<248,-8>]
   83 61 70 fd ?? and dword ds:[ecx + 0x70<112>], 0xfd<253,-3>
   e9 59 ff ff ff ?? jmp basic block L7
  
  L25: e8 08 eb fe ff ?? call function 0x0040c922
  
  L26: c7 00 2a 00 00 00 ?? mov dword ds:[eax], 0x0000002a<42>
   38 5d fc ?? cmp byte ss:[ebp + 0xfc<252,-4>], bl
   74 07 ?? je basic block L28
  
  L27: 8b 45 f8 ?? mov eax, dword ss:[ebp + 0xf8<248,-8>]
   83 60 70 fd ?? and dword ds:[eax + 0x70<112>], 0xfd<253,-3>
  
  L28: 83 c8 ff ?? or eax, 0xff<255,-1>
   e9 3a ff ff ff ?? jmp basic block L7
  
  L29: 33 c0 ?? xor eax, eax
   39 5d 08 ?? cmp dword ss:[ebp + 8], ebx
   0f 95 c0 ?? setne al
   50 ?? push eax
   ff 75 08 ?? push dword ss:[ebp + 8]
   8b 45 f0 ?? mov eax, dword ss:[ebp + 0xf0<240,-16>]
   6a 01 ?? push 1
   56 ?? push esi
   6a 09 ?? push 9
   ff 70 04 ?? push dword ds:[eax + 4]
   ff 15 40 92 43 00 ?? call dword ds:[0x00439240]
  
  L30: 85 c0 ?? test eax, eax
   0f 85 3a ff ff ff ?? jne basic block L12
  
  L31: eb ba ?? jmp basic block L25
  
  