Disassembly: 
  L1: 6a 58 ?? push 0x58<88>
   b8 df 85 43 00 ?? mov eax, 0x004385df
   e8 35 2e 00 00 ?? call function 0x0040a9b5
  
  L2: 8b f1 ?? mov esi, ecx
   8b 46 20 ?? mov eax, dword ds:[esi + 0x20<32>]
   8b 00 ?? mov eax, dword ds:[eax]
   85 c0 ?? test eax, eax
   74 28 ?? je basic block L7
  
  L3: 8b 46 20 ?? mov eax, dword ds:[esi + 0x20<32>]
   8b 4e 30 ?? mov ecx, dword ds:[esi + 0x30<48>]
   8b 00 ?? mov eax, dword ds:[eax]
   8b 09 ?? mov ecx, dword ds:[ecx]
   03 c8 ?? add ecx, eax
   3b c1 ?? cmp eax, ecx
   73 18 ?? jae basic block L7
  
  L4: 8b 46 30 ?? mov eax, dword ds:[esi + 0x30<48>]
   ff 08 ?? dec dword ds:[eax]
   8b 76 20 ?? mov esi, dword ds:[esi + 0x20<32>]
   8b 06 ?? mov eax, dword ds:[esi]
   8d 48 01 ?? lea ecx, ds:[eax + 1]
   89 0e ?? mov dword ds:[esi], ecx
   0f b6 00 ?? movzx eax, byte ds:[eax]
  
  L5: e8 86 2e 00 00 ?? call function 0x0040aa38
  
  L6: c3 ?? ret
  
  L7: 8b 46 4c ?? mov eax, dword ds:[esi + 0x4c<76>]
   85 c0 ?? test eax, eax
   75 05 ?? jne basic block L9
  
  L8: 83 c8 ff ?? or eax, 0xff<255,-1>
   eb ee ?? jmp basic block L5
  
  L9: 83 7e 3c 00 ?? cmp dword ds:[esi + 0x3c<60>], 0
   75 16 ?? jne basic block L13
  
  L10: 50 ?? push eax
   8d 45 d3 ?? lea eax, ss:[ebp + 0xd3<211,-45>]
   50 ?? push eax
   e8 78 fc ff ff ?? call function 0x00407847
  
  L11: 59 ?? pop ecx
   59 ?? pop ecx
   84 c0 ?? test al, al
   74 e5 ?? je basic block L8
  
  L12: 0f b6 45 d3 ?? movzx eax, byte ss:[ebp + 0xd3<211,-45>]
   eb d2 ?? jmp basic block L5
  
  L13: 8d 4d d4 ?? lea ecx, ss:[ebp + 0xd4<212,-44>]
   e8 9f 94 ff ff ?? call function 0x00401082
  
  L14: 83 65 fc 00 ?? and dword ss:[ebp + 0xfc<252,-4>], 0
   e9 c2 00 00 00 ?? jmp basic block L33
  
  L15: 50 ?? push eax
   6a 01 ?? push 1
   8d 4d d4 ?? lea ecx, ss:[ebp + 0xd4<212,-44>]
   e8 06 97 ff ff ?? call function 0x004012fd
  
  L16: 8d 45 bc ?? lea eax, ss:[ebp + 0xbc<188,-68>]
   50 ?? push eax
   8d 4d d4 ?? lea ecx, ss:[ebp + 0xd4<212,-44>]
   e8 0c ff ff ff ?? call function 0x00407b0f
  
  L17: 8b c8 ?? mov ecx, eax
   e8 51 f5 ff ff ?? call function 0x0040715b
  
  L18: 8b 7d e8 ?? mov edi, dword ss:[ebp + 0xe8<232,-24>]
   8b d8 ?? mov ebx, eax
   8d 45 9c ?? lea eax, ss:[ebp + 0x9c<156,-100>]
   50 ?? push eax
   8d 4d d4 ?? lea ecx, ss:[ebp + 0xd4<212,-44>]
   e8 f4 fe ff ff ?? call function 0x00407b0f
  
  L19: 8b c8 ?? mov ecx, eax
   e8 39 f5 ff ff ?? call function 0x0040715b
  
  L20: 8b 4e 3c ?? mov ecx, dword ds:[esi + 0x3c<60>]
   8b 11 ?? mov edx, dword ds:[ecx]
   89 45 c8 ?? mov dword ss:[ebp + 0xc8<200,-56>], eax
   8d 45 c4 ?? lea eax, ss:[ebp + 0xc4<196,-60>]
   50 ?? push eax
   8d 45 d4 ?? lea eax, ss:[ebp + 0xd4<212,-44>]
   50 ?? push eax
   8d 45 d3 ?? lea eax, ss:[ebp + 0xd3<211,-45>]
   50 ?? push eax
   8d 45 cc ?? lea eax, ss:[ebp + 0xcc<204,-52>]
   50 ?? push eax
   03 fb ?? add edi, ebx
   57 ?? push edi
   ff 75 c8 ?? push dword ss:[ebp + 0xc8<200,-56>]
   8d 46 44 ?? lea eax, ds:[esi + 0x44<68>]
   50 ?? push eax
   ff 52 10 ?? call dword ds:[edx + 0x10<16>]
  
  L21: 85 c0 ?? test eax, eax
   7c 75 ?? jl basic block L35
  
  L22: 33 ff ?? xor edi, edi
   47 ?? inc edi
   3b c7 ?? cmp eax, edi
   7e 31 ?? jle basic block L29
  
  L23: 83 f8 03 ?? cmp eax, 3
   75 69 ?? jne basic block L35
  
  L24: 39 7d e8 ?? cmp dword ss:[ebp + 0xe8<232,-24>], edi
   72 52 ?? jb basic block L33
  
  L25: 8d 45 b4 ?? lea eax, ss:[ebp + 0xb4<180,-76>]
   50 ?? push eax
   8d 4d d4 ?? lea ecx, ss:[ebp + 0xd4<212,-44>]
   e8 a7 fe ff ff ?? call function 0x00407b0f
  
  L26: 57 ?? push edi
   8b c8 ?? mov ecx, eax
   e8 eb f4 ff ff ?? call function 0x0040715b
  
  L27: 50 ?? push eax
   8d 45 d3 ?? lea eax, ss:[ebp + 0xd3<211,-45>]
   57 ?? push edi
   50 ?? push eax
   e8 fa 29 00 00 ?? call function 0x0040a675
  
  L28: 83 c4 10 ?? add esp, 0x10<16>
   e9 84 00 00 00 ?? jmp basic block L44
  
  L29: 8d 45 d3 ?? lea eax, ss:[ebp + 0xd3<211,-45>]
   8d 4d d4 ?? lea ecx, ss:[ebp + 0xd4<212,-44>]
   39 45 c4 ?? cmp dword ss:[ebp + 0xc4<196,-60>], eax
   75 48 ?? jne basic block L38
  
  L30: 8d 45 a4 ?? lea eax, ss:[ebp + 0xa4<164,-92>]
   50 ?? push eax
   e8 78 fe ff ff ?? call function 0x00407b0f
  
  L31: 8b c8 ?? mov ecx, eax
   e8 bd f4 ff ff ?? call function 0x0040715b
  
  L32: 8b 4d cc ?? mov ecx, dword ss:[ebp + 0xcc<204,-52>]
   2b c8 ?? sub ecx, eax
   51 ?? push ecx
   6a 00 ?? push 0
   8d 4d d4 ?? lea ecx, ss:[ebp + 0xd4<212,-44>]
   e8 b0 94 ff ff ?? call function 0x0040115e
  
  L33: ff 76 4c ?? push dword ds:[esi + 0x4c<76>]
   e8 a0 2d 00 00 ?? call function 0x0040aa56
  
  L34: 59 ?? pop ecx
   83 f8 ff ?? cmp eax, 0xff<255,-1>
   0f 85 2c ff ff ff ?? jne basic block L15
  
  L35: 83 ce ff ?? or esi, 0xff<255,-1>
  
  L36: 6a 00 ?? push 0
   6a 01 ?? push 1
   8d 4d d4 ?? lea ecx, ss:[ebp + 0xd4<212,-44>]
   e8 20 95 ff ff ?? call function 0x004011ef
  
  L37: 8b c6 ?? mov eax, esi
   e9 d7 fe ff ff ?? jmp basic block L5
  
  L38: 8d 45 ac ?? lea eax, ss:[ebp + 0xac<172,-84>]
   50 ?? push eax
   e8 30 fe ff ff ?? call function 0x00407b0f
  
  L39: 8b c8 ?? mov ecx, eax
   e8 75 f4 ff ff ?? call function 0x0040715b
  
  L40: 8b 7d e8 ?? mov edi, dword ss:[ebp + 0xe8<232,-24>]
   2b 7d cc ?? sub edi, dword ss:[ebp + 0xcc<204,-52>]
   03 f8 ?? add edi, eax
   eb 13 ?? jmp basic block L43
  
  L41: 8b 45 cc ?? mov eax, dword ss:[ebp + 0xcc<204,-52>]
   ff 76 4c ?? push dword ds:[esi + 0x4c<76>]
   4f ?? dec edi
   0f be 04 07 ?? movsx eax, byte ds:[edi + eax]
   50 ?? push eax
   e8 86 32 00 00 ?? call function 0x0040af87
  
  L42: 59 ?? pop ecx
   59 ?? pop ecx
  
  L43: 85 ff ?? test edi, edi
   7f e9 ?? jg basic block L41
  
  L44: 0f b6 75 d3 ?? movzx esi, byte ss:[ebp + 0xd3<211,-45>]
   eb b6 ?? jmp basic block L36
  
  