Disassembly: 
  L1: 55 ?? push ebp
   8b ec ?? mov ebp, esp
   6a fe ?? push 0xfe<254,-2>
   68 50 77 40 00 ?? push 0x00407750
   68 50 35 40 00 ?? push function 0x00403550
   64 a1 00 00 00 00 ?? mov eax, dword fs:[0]
   50 ?? push eax
   83 c4 cc ?? add esp, 0xcc<204,-52>
   53 ?? push ebx
   56 ?? push esi
   57 ?? push edi
   a1 04 90 40 00 ?? mov eax, dword ds:[0x00409004]
   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 a6 0b 00 00 ?? call function 0x00402bd0
  
  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 0x00403210
  
  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 f5 09 00 00 ?? call function 0x00402a40
  
  L5: 88 45 e6 ?? mov byte ss:[ebp + 0xe6<230,-26>], al
   83 3d 2c 94 40 00 01 ?? cmp dword ds:[0x0040942c], 1
   75 09 ?? jne basic block L8
  
  L6: 6a 07 ?? push 7
   e8 b2 11 00 00 ?? call function 0x00403210
  
  L7: eb 61 ?? jmp basic block L15
  
  L8: 83 3d 2c 94 40 00 00 ?? cmp dword ds:[0x0040942c], 0
   75 54 ?? jne basic block L14
  
  L9: c7 05 2c 94 40 00 01 00 ?? mov dword ds:[0x0040942c], 1
   00 00
   68 9c 61 40 00 ?? push 0x0040619c
   68 90 61 40 00 ?? push 0x00406190
   e8 2a 1c 00 00 ?? call function 0x00403cac
  
  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 53 01 00 00 ?? jmp basic block L46
  
  L12: 68 8c 61 40 00 ?? push 0x0040618c
   68 84 61 40 00 ?? push 0x00406184
   e8 f8 1b 00 00 ?? call function 0x00403ca6
  
  L13: 83 c4 08 ?? add esp, 8
   c7 05 2c 94 40 00 02 00 ?? mov dword ds:[0x0040942c], 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 0x00402e30
  
  L16: 83 c4 04 ?? add esp, 4
   e8 1d 11 00 00 ?? call function 0x004031f0
  
  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 33 ?? 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 0x00402d00
  
  L19: 83 c4 04 ?? add esp, 4
   0f b6 c8 ?? movzx ecx, al
   85 c9 ?? test ecx, ecx
   74 20 ?? je basic block L22
  
  L20: 8b 55 e0 ?? mov edx, dword ss:[ebp + 0xe0<224,-32>]
   8b 02 ?? mov eax, dword ds:[edx]
   89 45 c4 ?? mov dword ss:[ebp + 0xc4<196,-60>], eax
   6a 00 ?? push 0
   6a 02 ?? push 2
   6a 00 ?? push 0
   8b 4d c4 ?? mov ecx, dword ss:[ebp + 0xc4<196,-60>]
   89 4d d8 ?? mov dword ss:[ebp + 0xd8<216,-40>], ecx
   8b 4d d8 ?? mov ecx, dword ss:[ebp + 0xd8<216,-40>]
   ff 15 78 61 40 00 ?? call dword ds:[0x00406178]
  
  L21: ff 55 d8 ?? call dword ss:[ebp + 0xd8<216,-40>]
  
  L22: e8 ea 10 00 00 ?? call function 0x00403200
  
  L23: 89 45 dc ?? mov dword ss:[ebp + 0xdc<220,-36>], eax
   8b 55 dc ?? mov edx, dword ss:[ebp + 0xdc<220,-36>]
   83 3a 00 ?? cmp dword ds:[edx], 0
   74 21 ?? je basic block L28
  
  L24: 8b 45 dc ?? mov eax, dword ss:[ebp + 0xdc<220,-36>]
   50 ?? push eax
   e8 d6 0b 00 00 ?? call function 0x00402d00
  
  L25: 83 c4 04 ?? add esp, 4
   0f b6 c8 ?? movzx ecx, al
   85 c9 ?? test ecx, ecx
   74 0e ?? je basic block L28
  
  L26: 8b 55 dc ?? mov edx, dword ss:[ebp + 0xdc<220,-36>]
   8b 02 ?? mov eax, dword ds:[edx]
   50 ?? push eax
   e8 9d 1b 00 00 ?? call function 0x00403cdc
  
  L27: 83 c4 04 ?? add esp, 4
  
  L28: e8 f9 00 00 00 ?? call function 0x00402240
  
  L29: 89 45 d4 ?? mov dword ss:[ebp + 0xd4<212,-44>], eax
   e8 61 12 00 00 ?? call function 0x004033b0
  
  L30: 0f b6 c8 ?? movzx ecx, al
   85 c9 ?? test ecx, ecx
   75 09 ?? jne basic block L32
  
  L31: 8b 55 d4 ?? mov edx, dword ss:[ebp + 0xd4<212,-44>]
   52 ?? push edx
   e8 53 1b 00 00 ?? call function 0x00403cb2
  
  L32: 0f b6 45 e7 ?? movzx eax, byte ss:[ebp + 0xe7<231,-25>]
   85 c0 ?? test eax, eax
   75 05 ?? jne basic block L34
  
  L33: e8 64 1b 00 00 ?? call function 0x00403cd0
  
  L34: 6a 00 ?? push 0
   6a 01 ?? push 1
   e8 eb 0c 00 00 ?? call function 0x00402e60
  
  L35: 83 c4 08 ?? add esp, 8
   8b 4d d4 ?? mov ecx, dword ss:[ebp + 0xd4<212,-44>]
   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 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 55 ec ?? mov edx, dword ss:[ebp + 0xec<236,-20>]
   8b 02 ?? mov eax, dword ds:[edx]
   8b 08 ?? mov ecx, dword ds:[eax]
   89 4d d0 ?? mov dword ss:[ebp + 0xd0<208,-48>], ecx
   8b 55 ec ?? mov edx, dword ss:[ebp + 0xec<236,-20>]
   52 ?? push edx
   8b 45 d0 ?? mov eax, dword ss:[ebp + 0xd0<208,-48>]
   50 ?? push eax
   e8 d8 1a 00 00 ?? call function 0x00403c82
  
  L38: 83 c4 08 ?? add esp, 8
   c3 ?? ret
  
  L39: 8b 65 e8 ?? mov esp, dword ss:[ebp + 0xe8<232,-24>]
   8b 4d d0 ?? mov ecx, dword ss:[ebp + 0xd0<208,-48>]
   89 4d cc ?? mov dword ss:[ebp + 0xcc<204,-52>], ecx
   e8 f4 11 00 00 ?? call function 0x004033b0
  
  L40: 0f b6 d0 ?? movzx edx, al
   85 d2 ?? test edx, edx
   75 09 ?? jne basic block L42
  
  L41: 8b 45 cc ?? mov eax, dword ss:[ebp + 0xcc<204,-52>]
   50 ?? push eax
   e8 ec 1a 00 00 ?? call function 0x00403cb8
  
  L42: 0f b6 4d e7 ?? movzx ecx, byte ss:[ebp + 0xe7<231,-25>]
   85 c9 ?? test ecx, ecx
   75 05 ?? jne basic block L44
  
  L43: e8 fd 1a 00 00 ?? call function 0x00403cd6
  
  L44: 8b 55 cc ?? mov edx, dword ss:[ebp + 0xcc<204,-52>]
   89 55 bc ?? mov dword ss:[ebp + 0xbc<188,-68>], edx
   c7 45 fc fe ff ff ff ?? mov dword ss:[ebp + 0xfc<252,-4>], 0xfffffffe<4294967294,-2>
   8b 45 bc ?? mov eax, dword ss:[ebp + 0xbc<188,-68>]
   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
  
  