Disassembly: 
  L1: 55 ?? push ebp
   8b ec ?? mov ebp, esp
   6a fe ?? push 0xfe<254,-2>
   68 38 60 40 00 ?? push 0x00406038
   68 80 25 40 00 ?? push function 0x00402580
   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 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 d6 08 00 00 ?? call function 0x00401c00
  
  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 05 0f 00 00 ?? call function 0x00402240
  
  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 25 07 00 00 ?? call function 0x00401a70
  
  L5: 88 45 e6 ?? mov byte ss:[ebp + 0xe6<230,-26>], al
   83 3d bc 73 40 00 01 ?? cmp dword ds:[0x004073bc], 1
   75 09 ?? jne basic block L8
  
  L6: 6a 07 ?? push 7
   e8 e2 0e 00 00 ?? call function 0x00402240
  
  L7: eb 61 ?? jmp basic block L15
  
  L8: 83 3d bc 73 40 00 00 ?? cmp dword ds:[0x004073bc], 0
   75 54 ?? jne basic block L14
  
  L9: c7 05 bc 73 40 00 01 00 ?? mov dword ds:[0x004073bc], 1
   00 00
   68 30 51 40 00 ?? push 0x00405130
   68 24 51 40 00 ?? push 0x00405124
   e8 7a 18 00 00 ?? call function 0x00402bfc
  
  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 20 51 40 00 ?? push 0x00405120
   68 18 51 40 00 ?? push 0x00405118
   e8 48 18 00 00 ?? call function 0x00402bf6
  
  L13: 83 c4 08 ?? add esp, 8
   c7 05 bc 73 40 00 02 00 ?? mov dword ds:[0x004073bc], 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 95 0a 00 00 ?? call function 0x00401e60
  
  L16: 83 c4 04 ?? add esp, 4
   e8 4d 0e 00 00 ?? call function 0x00402220
  
  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 49 09 00 00 ?? call function 0x00401d30
  
  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 10 51 40 00 ?? call dword ds:[0x00405110]
  
  L21: ff 55 d8 ?? call dword ss:[ebp + 0xd8<216,-40>]
  
  L22: e8 1a 0e 00 00 ?? call function 0x00402230
  
  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 06 09 00 00 ?? call function 0x00401d30
  
  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 ed 17 00 00 ?? call function 0x00402c2c
  
  L27: 83 c4 04 ?? add esp, 4
  
  L28: e8 f9 00 00 00 ?? call function 0x00401540
  
  L29: 89 45 d4 ?? mov dword ss:[ebp + 0xd4<212,-44>], eax
   e8 91 0f 00 00 ?? call function 0x004023e0
  
  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 a3 17 00 00 ?? call function 0x00402c02
  
  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 b4 17 00 00 ?? call function 0x00402c20
  
  L34: 6a 00 ?? push 0
   6a 01 ?? push 1
   e8 1b 0a 00 00 ?? call function 0x00401e90
  
  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 28 17 00 00 ?? call function 0x00402bd2
  
  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 24 0f 00 00 ?? call function 0x004023e0
  
  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 3c 17 00 00 ?? call function 0x00402c08
  
  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 4d 17 00 00 ?? call function 0x00402c26
  
  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
  
  