Disassembly: 
  L1: 6a 0c ?? push 12
   68 90 2d 43 00 ?? push 0x00432d90
   e8 98 6c 00 00 ?? call function 0x0040d94c
  
  L2: 33 ff ?? xor edi, edi
   89 7d e4 ?? mov dword ss:[ebp + 0xe4<228,-28>], edi
   33 c0 ?? xor eax, eax
   8b 75 08 ?? mov esi, dword ss:[ebp + 8]
   3b f7 ?? cmp esi, edi
   0f 95 c0 ?? setne al
   3b c7 ?? cmp eax, edi
   75 20 ?? jne basic block L6
  
  L3: e8 56 58 00 00 ?? call function 0x0040c522
  
  L4: c7 00 16 00 00 00 ?? mov dword ds:[eax], 0x00000016<22>
   57 ?? push edi
   57 ?? push edi
   57 ?? push edi
   57 ?? push edi
   57 ?? push edi
   e8 e4 fc ff ff ?? call function 0x004069c0
  
  L5: 83 c4 14 ?? add esp, 0x14<20>
   83 c8 ff ?? or eax, 0xff<255,-1>
   e9 b4 00 00 00 ?? jmp basic block L30
  
  L6: 56 ?? push esi
   e8 ec 0d 00 00 ?? call function 0x00407ad9
  
  L7: 59 ?? pop ecx
   89 7d fc ?? mov dword ss:[ebp + 0xfc<252,-4>], edi
   f6 46 0c 40 ?? test byte ds:[esi + 12], 0x40<64>
   75 77 ?? jne basic block L22
  
  L8: 56 ?? push esi
   e8 c3 83 00 00 ?? call function 0x0040f0c0
  
  L9: 59 ?? pop ecx
   83 f8 ff ?? cmp eax, 0xff<255,-1>
   74 1b ?? je basic block L12
  
  L10: 83 f8 fe ?? cmp eax, 0xfe<254,-2>
   74 16 ?? je basic block L12
  
  L11: 8b d0 ?? mov edx, eax
   c1 fa 05 ?? sar edx, 5
   8b c8 ?? mov ecx, eax
   83 e1 1f ?? and ecx, 0x1f<31>
   c1 e1 06 ?? shl ecx, 6
   03 0c 95 a0 66 43 00 ?? add ecx, dword ds:[0x004366a0 + edx * 4]
   eb 05 ?? jmp basic block L13
  
  L12: b9 80 49 43 00 ?? mov ecx, 0x00434980
  
  L13: f6 41 24 7f ?? test byte ds:[ecx + 0x24<36>], 0x7f<127>
   75 29 ?? jne basic block L19
  
  L14: 83 f8 ff ?? cmp eax, 0xff<255,-1>
   74 19 ?? je basic block L17
  
  L15: 83 f8 fe ?? cmp eax, 0xfe<254,-2>
   74 14 ?? je basic block L17
  
  L16: 8b c8 ?? mov ecx, eax
   c1 f9 05 ?? sar ecx, 5
   83 e0 1f ?? and eax, 0x1f<31>
   c1 e0 06 ?? shl eax, 6
   03 04 8d a0 66 43 00 ?? add eax, dword ds:[0x004366a0 + ecx * 4]
   eb 05 ?? jmp basic block L18
  
  L17: b8 80 49 43 00 ?? mov eax, 0x00434980
  
  L18: f6 40 24 80 ?? test byte ds:[eax + 0x24<36>], 0x80<128,-128>
   74 1c ?? je basic block L22
  
  L19: e8 cb 57 00 00 ?? call function 0x0040c522
  
  L20: c7 00 16 00 00 00 ?? mov dword ds:[eax], 0x00000016<22>
   57 ?? push edi
   57 ?? push edi
   57 ?? push edi
   57 ?? push edi
   57 ?? push edi
   e8 59 fc ff ff ?? call function 0x004069c0
  
  L21: 83 c4 14 ?? add esp, 0x14<20>
   83 4d e4 ff ?? or dword ss:[ebp + 0xe4<228,-28>], 0xff<255,-1>
  
  L22: 39 7d e4 ?? cmp dword ss:[ebp + 0xe4<228,-28>], edi
   75 19 ?? jne basic block L28
  
  L23: ff 4e 04 ?? dec dword ds:[esi + 4]
   78 0a ?? js basic block L25
  
  L24: 8b 0e ?? mov ecx, dword ds:[esi]
   0f b6 01 ?? movzx eax, byte ds:[ecx]
   41 ?? inc ecx
   89 0e ?? mov dword ds:[esi], ecx
   eb 07 ?? jmp basic block L27
  
  L25: 56 ?? push esi
   e8 0d 82 00 00 ?? call function 0x0040ef95
  
  L26: 59 ?? pop ecx
  
  L27: 89 45 e4 ?? mov dword ss:[ebp + 0xe4<228,-28>], eax
  
  L28: c7 45 fc fe ff ff ff ?? mov dword ss:[ebp + 0xfc<252,-4>], 0xfffffffe<4294967294,-2>
   e8 0c 00 00 00 ?? call function 0x00406da4
  
  L29: 8b 45 e4 ?? mov eax, dword ss:[ebp + 0xe4<228,-28>]
  
  L30: e8 f1 6b 00 00 ?? call function 0x0040d991
  
  L31: c3 ?? ret
  
  