Disassembly: 
  L1: 6a 54 ?? push 0x54<84>
   b8 c2 98 42 00 ?? mov eax, 0x004298c2
   e8 5d 24 00 00 ?? call function 0x00406a23
  
  L2: 8b 5d 08 ?? mov ebx, dword ss:[ebp + 8]
   8b f1 ?? mov esi, ecx
   83 fb ff ?? cmp ebx, 0xff<255,-1>
   75 0a ?? jne basic block L6
  
  L3: 33 c0 ?? xor eax, eax
  
  L4: e8 cf 24 00 00 ?? call function 0x00406aa6
  
  L5: c2 04 00 ?? ret 4
  
  L6: 8b 46 24 ?? mov eax, dword ds:[esi + 0x24<36>]
   8b 08 ?? mov ecx, dword ds:[eax]
   33 ff ?? xor edi, edi
   3b cf ?? cmp ecx, edi
   74 1d ?? je basic block L10
  
  L7: 8b 46 34 ?? mov eax, dword ds:[esi + 0x34<52>]
   8b 10 ?? mov edx, dword ds:[eax]
   03 d1 ?? add edx, ecx
   3b ca ?? cmp ecx, edx
   73 12 ?? jae basic block L10
  
  L8: ff 08 ?? dec dword ds:[eax]
   8b 76 24 ?? mov esi, dword ds:[esi + 0x24<36>]
   8b 06 ?? mov eax, dword ds:[esi]
   8d 48 01 ?? lea ecx, ds:[eax + 1]
   89 0e ?? mov dword ds:[esi], ecx
   88 18 ?? mov byte ds:[eax], bl
  
  L9: 8b c3 ?? mov eax, ebx
   eb d0 ?? jmp basic block L4
  
  L10: 8b 46 4c ?? mov eax, dword ds:[esi + 0x4c<76>]
   3b c7 ?? cmp eax, edi
   75 05 ?? jne basic block L12
  
  L11: 83 c8 ff ?? or eax, 0xff<255,-1>
   eb c4 ?? jmp basic block L4
  
  L12: 39 7e 3c ?? cmp dword ds:[esi + 0x3c<60>], edi
   75 0f ?? jne basic block L16
  
  L13: 50 ?? push eax
   53 ?? push ebx
   e8 f5 f7 ff ff ?? call function 0x00403e0f
  
  L14: 59 ?? pop ecx
   59 ?? pop ecx
   84 c0 ?? test al, al
   74 e9 ?? je basic block L11
  
  L15: eb dc ?? jmp basic block L9
  
  L16: 57 ?? push edi
   6a 08 ?? push 8
   8d 4d d4 ?? lea ecx, ss:[ebp + 0xd4<212,-44>]
   88 5d d0 ?? mov byte ss:[ebp + 0xd0<208,-48>], bl
   e8 8c fd ff ff ?? call function 0x004043bc
  
  L17: 8d 45 b8 ?? lea eax, ss:[ebp + 0xb8<184,-72>]
   50 ?? push eax
   8d 4d d4 ?? lea ecx, ss:[ebp + 0xd4<212,-44>]
   89 7d fc ?? mov dword ss:[ebp + 0xfc<252,-4>], edi
   e8 78 fa ff ff ?? call function 0x004040b7
  
  L18: 8b c8 ?? mov ecx, eax
   e8 5c f0 ff ff ?? call function 0x004036a2
  
  L19: 8b 7d e8 ?? mov edi, dword ss:[ebp + 0xe8<232,-24>]
   8b d8 ?? mov ebx, eax
   8d 45 b0 ?? lea eax, ss:[ebp + 0xb0<176,-80>]
   50 ?? push eax
   8d 4d d4 ?? lea ecx, ss:[ebp + 0xd4<212,-44>]
   e8 60 fa ff ff ?? call function 0x004040b7
  
  L20: 8b c8 ?? mov ecx, eax
   e8 44 f0 ff ff ?? call function 0x004036a2
  
  L21: 8d 55 c8 ?? lea edx, ss:[ebp + 0xc8<200,-56>]
   03 fb ?? add edi, ebx
   52 ?? push edx
   8d 5e 44 ?? lea ebx, ds:[esi + 0x44<68>]
   e9 a8 00 00 00 ?? jmp basic block L39
  
  L22: 83 f8 01 ?? cmp eax, 1
   0f 8f c3 00 00 00 ?? jg basic block L42
  
  L23: 8d 45 a8 ?? lea eax, ss:[ebp + 0xa8<168,-88>]
   50 ?? push eax
   8d 4d d4 ?? lea ecx, ss:[ebp + 0xd4<212,-44>]
   e8 36 fa ff ff ?? call function 0x004040b7
  
  L24: 8b c8 ?? mov ecx, eax
   e8 1a f0 ff ff ?? call function 0x004036a2
  
  L25: 8b 7d c8 ?? mov edi, dword ss:[ebp + 0xc8<200,-56>]
   2b f8 ?? sub edi, eax
   74 2a ?? je basic block L30
  
  L26: 8d 45 a0 ?? lea eax, ss:[ebp + 0xa0<160,-96>]
   50 ?? push eax
   8d 4d d4 ?? lea ecx, ss:[ebp + 0xd4<212,-44>]
   e8 1c fa ff ff ?? call function 0x004040b7
  
  L27: 8b c8 ?? mov ecx, eax
   e8 00 f0 ff ff ?? call function 0x004036a2
  
  L28: ff 76 4c ?? push dword ds:[esi + 0x4c<76>]
   57 ?? push edi
   6a 01 ?? push 1
   50 ?? push eax
   e8 ff 2d 00 00 ?? call function 0x004074ad
  
  L29: 83 c4 10 ?? add esp, 0x10<16>
   3b f8 ?? cmp edi, eax
   0f 85 95 00 00 00 ?? jne basic block L45
  
  L30: 8d 45 d0 ?? lea eax, ss:[ebp + 0xd0<208,-48>]
   c6 46 41 01 ?? mov byte ds:[esi + 0x41<65>], 1
   39 45 c4 ?? cmp dword ss:[ebp + 0xc4<196,-60>], eax
   0f 85 9b 00 00 00 ?? jne basic block L48
  
  L31: 85 ff ?? test edi, edi
   77 12 ?? ja basic block L34
  
  L32: 83 7d e8 20 ?? cmp dword ss:[ebp + 0xe8<232,-24>], 0x20<32>
   73 7b ?? jae basic block L45
  
  L33: 6a 00 ?? push 0
   6a 08 ?? push 8
   8d 4d d4 ?? lea ecx, ss:[ebp + 0xd4<212,-44>]
   e8 b1 fa ff ff ?? call function 0x00404190
  
  L34: 8d 45 b8 ?? lea eax, ss:[ebp + 0xb8<184,-72>]
   50 ?? push eax
   8d 4d d4 ?? lea ecx, ss:[ebp + 0xd4<212,-44>]
   e8 cc f9 ff ff ?? call function 0x004040b7
  
  L35: 8b c8 ?? mov ecx, eax
   e8 b0 ef ff ff ?? call function 0x004036a2
  
  L36: 8b 7d e8 ?? mov edi, dword ss:[ebp + 0xe8<232,-24>]
   89 45 c0 ?? mov dword ss:[ebp + 0xc0<192,-64>], eax
   8d 45 b0 ?? lea eax, ss:[ebp + 0xb0<176,-80>]
   50 ?? push eax
   8d 4d d4 ?? lea ecx, ss:[ebp + 0xd4<212,-44>]
   e8 b3 f9 ff ff ?? call function 0x004040b7
  
  L37: 8b c8 ?? mov ecx, eax
   e8 97 ef ff ff ?? call function 0x004036a2
  
  L38: 8d 55 c8 ?? lea edx, ss:[ebp + 0xc8<200,-56>]
   52 ?? push edx
   8b 55 c0 ?? mov edx, dword ss:[ebp + 0xc0<192,-64>]
   03 fa ?? add edi, edx
  
  L39: 8b 4e 3c ?? mov ecx, dword ds:[esi + 0x3c<60>]
   57 ?? push edi
   50 ?? push eax
   8d 55 c4 ?? lea edx, ss:[ebp + 0xc4<196,-60>]
   52 ?? push edx
   8d 55 d1 ?? lea edx, ss:[ebp + 0xd1<209,-47>]
   52 ?? push edx
   8d 55 d0 ?? lea edx, ss:[ebp + 0xd0<208,-48>]
   52 ?? push edx
   89 45 cc ?? mov dword ss:[ebp + 0xcc<204,-52>], eax
   8b 01 ?? mov eax, dword ds:[ecx]
   53 ?? push ebx
   ff 50 14 ?? call dword ds:[eax + 0x14<20>]
  
  L40: 85 c0 ?? test eax, eax
   0f 8d 36 ff ff ff ?? jge basic block L22
  
  L41: eb 16 ?? jmp basic block L45
  
  L42: 83 f8 03 ?? cmp eax, 3
   75 11 ?? jne basic block L45
  
  L43: ff 76 4c ?? push dword ds:[esi + 0x4c<76>]
   ff 75 d0 ?? push dword ss:[ebp + 0xd0<208,-48>]
   e8 c7 f6 ff ff ?? call function 0x00403e0f
  
  L44: 59 ?? pop ecx
   59 ?? pop ecx
   84 c0 ?? test al, al
   75 16 ?? jne basic block L48
  
  L45: 83 ce ff ?? or esi, 0xff<255,-1>
  
  L46: 6a 00 ?? push 0
   6a 01 ?? push 1
   8d 4d d4 ?? lea ecx, ss:[ebp + 0xd4<212,-44>]
   e8 9d c9 ff ff ?? call function 0x004010fa
  
  L47: 8b c6 ?? mov eax, esi
   e9 6e fe ff ff ?? jmp basic block L4
  
  L48: 8b 75 08 ?? mov esi, dword ss:[ebp + 8]
   eb e8 ?? jmp basic block L46
  
  