Disassembly: 
  L1: 55 ?? push ebp
   8b ec ?? mov ebp, esp
   6a fe ?? push 0xfe<254,-2>
   68 d8 61 40 00 ?? push 0x004061d8
   68 40 32 40 00 ?? push function 0x00403240
   64 a1 00 00 00 00 ?? mov eax, dword fs:[0]
   50 ?? push eax
   83 c4 d0 ?? add esp, 0xd0<208,-48>
   53 ?? push ebx
   56 ?? push esi
   57 ?? push edi
   a1 04 70 40 00 ?? mov eax, dword ds:[0x00407004]
   31 45 f8 ?? xor dword ss:[ebp + 0xf8<248,-8>], eax
   33 c5 ?? xor eax, ebp
   50 ?? push eax
   8d 45 f0 ?? lea eax, ss:[ebp + 0xf0<240,-16>]
   64 a3 00 00 00 00 ?? mov dword fs:[0], eax
   89 65 e8 ?? mov dword ss:[ebp + 0xe8<232,-24>], esp
   6a 01 ?? push 1
   e8 b6 0b 00 00 ?? call function 0x004028f0
  
  L2: 83 c4 04 ?? add esp, 4
   0f b6 c0 ?? movzx eax, al
   85 c0 ?? test eax, eax
   75 07 ?? jne basic block L4
  
  L3: 6a 07 ?? push 7
   e8 d5 11 00 00 ?? call function 0x00402f20
  
  L4: c6 45 e7 00 ?? mov byte ss:[ebp + 0xe7<231,-25>], 0
   c7 45 fc 00 00 00 00 ?? mov dword ss:[ebp + 0xfc<252,-4>], 0
   e8 05 0a 00 00 ?? call function 0x00402760
  
  L5: 88 45 e6 ?? mov byte ss:[ebp + 0xe6<230,-26>], al
   83 3d fc 73 40 00 01 ?? cmp dword ds:[0x004073fc], 1
   75 09 ?? jne basic block L8
  
  L6: 6a 07 ?? push 7
   e8 b2 11 00 00 ?? call function 0x00402f20
  
  L7: eb 61 ?? jmp basic block L15
  
  L8: 83 3d fc 73 40 00 00 ?? cmp dword ds:[0x004073fc], 0
   75 54 ?? jne basic block L14
  
  L9: c7 05 fc 73 40 00 01 00 ?? mov dword ds:[0x004073fc], 1
   00 00
   68 84 51 40 00 ?? push 0x00405184
   68 78 51 40 00 ?? push 0x00405178
   e8 8c 18 00 00 ?? call function 0x0040361e
  
  L10: 83 c4 08 ?? add esp, 8
   85 c0 ?? test eax, eax
   74 16 ?? je basic block L12
  
  L11: c7 45 c8 ff 00 00 00 ?? mov dword ss:[ebp + 0xc8<200,-56>], 0x000000ff<255>
   c7 45 fc fe ff ff ff ?? mov dword ss:[ebp + 0xfc<252,-4>], 0xfffffffe<4294967294,-2>
   8b 45 c8 ?? mov eax, dword ss:[ebp + 0xc8<200,-56>]
   e9 4c 01 00 00 ?? jmp basic block L46
  
  L12: 68 74 51 40 00 ?? push 0x00405174
   68 6c 51 40 00 ?? push 0x0040516c
   e8 5a 18 00 00 ?? call function 0x00403618
  
  L13: 83 c4 08 ?? add esp, 8
   c7 05 fc 73 40 00 02 00 ?? mov dword ds:[0x004073fc], 2
   00 00
   eb 04 ?? jmp basic block L15
  
  L14: c6 45 e7 01 ?? mov byte ss:[ebp + 0xe7<231,-25>], 1
  
  L15: 0f b6 4d e6 ?? movzx ecx, byte ss:[ebp + 0xe6<230,-26>]
   51 ?? push ecx
   e8 65 0d 00 00 ?? call function 0x00402b40
  
  L16: 83 c4 04 ?? add esp, 4
   e8 1d 11 00 00 ?? call function 0x00402f00
  
  L17: 89 45 e0 ?? mov dword ss:[ebp + 0xe0<224,-32>], eax
   8b 55 e0 ?? mov edx, dword ss:[ebp + 0xe0<224,-32>]
   83 3a 00 ?? cmp dword ds:[edx], 0
   74 2c ?? je basic block L22
  
  L18: 8b 45 e0 ?? mov eax, dword ss:[ebp + 0xe0<224,-32>]
   50 ?? push eax
   e8 19 0c 00 00 ?? call function 0x00402a10
  
  L19: 83 c4 04 ?? add esp, 4
   0f b6 c8 ?? movzx ecx, al
   85 c9 ?? test ecx, ecx
   74 19 ?? je basic block L22
  
  L20: 6a 00 ?? push 0
   6a 02 ?? push 2
   6a 00 ?? push 0
   8b 55 e0 ?? mov edx, dword ss:[ebp + 0xe0<224,-32>]
   8b 02 ?? mov eax, dword ds:[edx]
   89 45 d8 ?? mov dword ss:[ebp + 0xd8<216,-40>], eax
   8b 4d d8 ?? mov ecx, dword ss:[ebp + 0xd8<216,-40>]
   e8 09 14 00 00 ?? call function 0x00403220
  
  L21: ff 55 d8 ?? call dword ss:[ebp + 0xd8<216,-40>]
  
  L22: e8 f1 10 00 00 ?? call function 0x00402f10
  
  L23: 89 45 dc ?? mov dword ss:[ebp + 0xdc<220,-36>], eax
   8b 4d dc ?? mov ecx, dword ss:[ebp + 0xdc<220,-36>]
   83 39 00 ?? cmp dword ds:[ecx], 0
   74 21 ?? je basic block L28
  
  L24: 8b 55 dc ?? mov edx, dword ss:[ebp + 0xdc<220,-36>]
   52 ?? push edx
   e8 dd 0b 00 00 ?? call function 0x00402a10
  
  L25: 83 c4 04 ?? add esp, 4
   0f b6 c0 ?? movzx eax, al
   85 c0 ?? test eax, eax
   74 0e ?? je basic block L28
  
  L26: 8b 4d dc ?? mov ecx, dword ss:[ebp + 0xdc<220,-36>]
   8b 11 ?? mov edx, dword ds:[ecx]
   52 ?? push edx
   e8 06 18 00 00 ?? call function 0x0040364e
  
  L27: 83 c4 04 ?? add esp, 4
  
  L28: e8 00 01 00 00 ?? call function 0x00401f50
  
  L29: 89 45 d4 ?? mov dword ss:[ebp + 0xd4<212,-44>], eax
   e8 58 12 00 00 ?? call function 0x004030b0
  
  L30: 0f b6 c0 ?? movzx eax, al
   85 c0 ?? test eax, eax
   75 09 ?? jne basic block L32
  
  L31: 8b 4d d4 ?? mov ecx, dword ss:[ebp + 0xd4<212,-44>]
   51 ?? push ecx
   e8 bc 17 00 00 ?? call function 0x00403624
  
  L32: 0f b6 55 e7 ?? movzx edx, byte ss:[ebp + 0xe7<231,-25>]
   85 d2 ?? test edx, edx
   75 05 ?? jne basic block L34
  
  L33: e8 cd 17 00 00 ?? call function 0x00403642
  
  L34: 6a 00 ?? push 0
   6a 01 ?? push 1
   e8 f2 0c 00 00 ?? call function 0x00402b70
  
  L35: 83 c4 08 ?? add esp, 8
   8b 45 d4 ?? mov eax, dword ss:[ebp + 0xd4<212,-44>]
   89 45 c4 ?? mov dword ss:[ebp + 0xc4<196,-60>], eax
   c7 45 fc fe ff ff ff ?? mov dword ss:[ebp + 0xfc<252,-4>], 0xfffffffe<4294967294,-2>
   8b 45 c4 ?? mov eax, dword ss:[ebp + 0xc4<196,-60>]
   eb 68 ?? jmp basic block L46
  
  L36: c7 45 fc fe ff ff ff ?? mov dword ss:[ebp + 0xfc<252,-4>], 0xfffffffe<4294967294,-2>
   eb 5f ?? jmp basic block L46
  
  L37: 8b 4d ec ?? mov ecx, dword ss:[ebp + 0xec<236,-20>]
   8b 11 ?? mov edx, dword ds:[ecx]
   8b 02 ?? mov eax, dword ds:[edx]
   89 45 d0 ?? mov dword ss:[ebp + 0xd0<208,-48>], eax
   8b 4d ec ?? mov ecx, dword ss:[ebp + 0xec<236,-20>]
   51 ?? push ecx
   8b 55 d0 ?? mov edx, dword ss:[ebp + 0xd0<208,-48>]
   52 ?? push edx
   e8 41 17 00 00 ?? call function 0x004035f4
  
  L38: 83 c4 08 ?? add esp, 8
   c3 ?? ret
  
  L39: 8b 65 e8 ?? mov esp, dword ss:[ebp + 0xe8<232,-24>]
   8b 45 d0 ?? mov eax, dword ss:[ebp + 0xd0<208,-48>]
   89 45 cc ?? mov dword ss:[ebp + 0xcc<204,-52>], eax
   e8 eb 11 00 00 ?? call function 0x004030b0
  
  L40: 0f b6 c8 ?? movzx ecx, al
   85 c9 ?? test ecx, ecx
   75 09 ?? jne basic block L42
  
  L41: 8b 55 cc ?? mov edx, dword ss:[ebp + 0xcc<204,-52>]
   52 ?? push edx
   e8 55 17 00 00 ?? call function 0x0040362a
  
  L42: 0f b6 45 e7 ?? movzx eax, byte ss:[ebp + 0xe7<231,-25>]
   85 c0 ?? test eax, eax
   75 05 ?? jne basic block L44
  
  L43: e8 66 17 00 00 ?? call function 0x00403648
  
  L44: 8b 4d cc ?? mov ecx, dword ss:[ebp + 0xcc<204,-52>]
   89 4d c0 ?? mov dword ss:[ebp + 0xc0<192,-64>], ecx
   c7 45 fc fe ff ff ff ?? mov dword ss:[ebp + 0xfc<252,-4>], 0xfffffffe<4294967294,-2>
   8b 45 c0 ?? mov eax, dword ss:[ebp + 0xc0<192,-64>]
   eb 07 ?? jmp basic block L46
  
  L45: c7 45 fc fe ff ff ff ?? mov dword ss:[ebp + 0xfc<252,-4>], 0xfffffffe<4294967294,-2>
  
  L46: 8b 4d f0 ?? mov ecx, dword ss:[ebp + 0xf0<240,-16>]
   64 89 0d 00 00 00 00 ?? mov dword fs:[0], ecx
   59 ?? pop ecx
   5f ?? pop edi
   5e ?? pop esi
   5b ?? pop ebx
   8b e5 ?? mov esp, ebp
   5d ?? pop ebp
   c3 ?? ret
  
  