Disassembly: 
  L1: 55 ?? push ebp
   8b ec ?? mov ebp, esp
   6a ff ?? push 0xff<255,-1>
   68 40 6a 40 00 ?? push 0x00406a40
   64 a1 00 00 00 00 ?? mov eax, dword fs:[0]
   50 ?? push eax
   51 ?? push ecx
   83 ec 1c ?? sub esp, 0x1c<28>
   53 ?? push ebx
   56 ?? push esi
   57 ?? push edi
   b8 cc cc cc cc ?? mov eax, 0xcccccccc
   89 45 d4 ?? mov dword ss:[ebp + 0xd4<212,-44>], eax
   89 45 d8 ?? mov dword ss:[ebp + 0xd8<216,-40>], eax
   89 45 dc ?? mov dword ss:[ebp + 0xdc<220,-36>], eax
   89 45 e0 ?? mov dword ss:[ebp + 0xe0<224,-32>], eax
   89 45 e4 ?? mov dword ss:[ebp + 0xe4<228,-28>], eax
   89 45 e8 ?? mov dword ss:[ebp + 0xe8<232,-24>], eax
   89 45 ec ?? mov dword ss:[ebp + 0xec<236,-20>], eax
   a1 04 a0 40 00 ?? mov eax, dword ds:[0x0040a004]
   33 c5 ?? xor eax, ebp
   50 ?? push eax
   8d 45 f4 ?? lea eax, ss:[ebp + 0xf4<244,-12>]
   64 a3 00 00 00 00 ?? mov dword fs:[0], eax
   89 65 f0 ?? mov dword ss:[ebp + 0xf0<240,-16>], esp
   89 4d ec ?? mov dword ss:[ebp + 0xec<236,-20>], ecx
   8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   83 c8 0f ?? or eax, 15
   89 45 e8 ?? mov dword ss:[ebp + 0xe8<232,-24>], eax
   8b 4d ec ?? mov ecx, dword ss:[ebp + 0xec<236,-20>]
   e8 d6 01 00 00 ?? call function 0x00402ca0
  
  L2: 3b 45 e8 ?? cmp eax, dword ss:[ebp + 0xe8<232,-24>]
   73 08 ?? jae basic block L4
  
  L3: 8b 4d 08 ?? mov ecx, dword ss:[ebp + 8]
   89 4d e8 ?? mov dword ss:[ebp + 0xe8<232,-24>], ecx
   eb 6a ?? jmp basic block L16
  
  L4: 8b 45 e8 ?? mov eax, dword ss:[ebp + 0xe8<232,-24>]
   33 d2 ?? xor edx, edx
   b9 03 00 00 00 ?? mov ecx, 3
   f7 f1 ?? div ecx
   8b f0 ?? mov esi, eax
   8b 4d ec ?? mov ecx, dword ss:[ebp + 0xec<236,-20>]
   e8 63 f8 ff ff ?? call function 0x00402350
  
  L5: 8b 10 ?? mov edx, dword ds:[eax]
   d1 ea ?? shr edx, 1
   3b d6 ?? cmp edx, esi
   77 02 ?? ja basic block L7
  
  L6: eb 4a ?? jmp basic block L16
  
  L7: 8b 4d ec ?? mov ecx, dword ss:[ebp + 0xec<236,-20>]
   e8 51 f8 ff ff ?? call function 0x00402350
  
  L8: 8b 30 ?? mov esi, dword ds:[eax]
   d1 ee ?? shr esi, 1
   8b 4d ec ?? mov ecx, dword ss:[ebp + 0xec<236,-20>]
   e8 95 01 00 00 ?? call function 0x00402ca0
  
  L9: 8b f8 ?? mov edi, eax
   2b fe ?? sub edi, esi
   8b 4d ec ?? mov ecx, dword ss:[ebp + 0xec<236,-20>]
   e8 39 f8 ff ff ?? call function 0x00402350
  
  L10: 39 38 ?? cmp dword ds:[eax], edi
   77 1b ?? ja basic block L14
  
  L11: 8b 4d ec ?? mov ecx, dword ss:[ebp + 0xec<236,-20>]
   e8 2d f8 ff ff ?? call function 0x00402350
  
  L12: 8b 30 ?? mov esi, dword ds:[eax]
   d1 ee ?? shr esi, 1
   8b 4d ec ?? mov ecx, dword ss:[ebp + 0xec<236,-20>]
   e8 21 f8 ff ff ?? call function 0x00402350
  
  L13: 03 30 ?? add esi, dword ds:[eax]
   89 75 e8 ?? mov dword ss:[ebp + 0xe8<232,-24>], esi
   eb 0b ?? jmp basic block L16
  
  L14: 8b 4d ec ?? mov ecx, dword ss:[ebp + 0xec<236,-20>]
   e8 62 01 00 00 ?? call function 0x00402ca0
  
  L15: 89 45 e8 ?? mov dword ss:[ebp + 0xe8<232,-24>], eax
  
  L16: c7 45 fc 00 00 00 00 ?? mov dword ss:[ebp + 0xfc<252,-4>], 0
   8b 45 e8 ?? mov eax, dword ss:[ebp + 0xe8<232,-24>]
   83 c0 01 ?? add eax, 1
   50 ?? push eax
   8b 4d ec ?? mov ecx, dword ss:[ebp + 0xec<236,-20>]
   e8 b9 f0 ff ff ?? call function 0x00401c10
  
  L17: 8b c8 ?? mov ecx, eax
   e8 82 02 00 00 ?? call function 0x00402de0
  
  L18: 89 45 d8 ?? mov dword ss:[ebp + 0xd8<216,-40>], eax
   8b 4d d8 ?? mov ecx, dword ss:[ebp + 0xd8<216,-40>]
   89 4d e0 ?? mov dword ss:[ebp + 0xe0<224,-32>], ecx
   eb 5f ?? jmp 0x00402bc8
   c7 45 fc ff ff ff ff ?? mov dword ss:[ebp + 0xfc<252,-4>], 0xffffffff<4294967295,-1>
   eb 07 ?? jmp basic block L28
  
  L19: 89 65 f0 ?? mov dword ss:[ebp + 0xf0<240,-16>], esp
   8b 55 08 ?? mov edx, dword ss:[ebp + 8]
   89 55 e8 ?? mov dword ss:[ebp + 0xe8<232,-24>], edx
   c6 45 fc 02 ?? mov byte ss:[ebp + 0xfc<252,-4>], 2
   8b 45 e8 ?? mov eax, dword ss:[ebp + 0xe8<232,-24>]
   83 c0 01 ?? add eax, 1
   50 ?? push eax
   8b 4d ec ?? mov ecx, dword ss:[ebp + 0xec<236,-20>]
   e8 8b f0 ff ff ?? call function 0x00401c10
  
  L20: 8b c8 ?? mov ecx, eax
   e8 54 02 00 00 ?? call function 0x00402de0
  
  L21: 89 45 d4 ?? mov dword ss:[ebp + 0xd4<212,-44>], eax
   8b 4d d4 ?? mov ecx, dword ss:[ebp + 0xd4<212,-44>]
   89 4d e0 ?? mov dword ss:[ebp + 0xe0<224,-32>], ecx
   eb 1b ?? jmp 0x00402bb2
   c7 45 fc 01 00 00 00 ?? mov dword ss:[ebp + 0xfc<252,-4>], 1
   eb 07 ?? jmp basic block L26
  
  L22: 6a 00 ?? push 0
   6a 01 ?? push 1
   8b 4d ec ?? mov ecx, dword ss:[ebp + 0xec<236,-20>]
   e8 dd f1 ff ff ?? call function 0x00401d80
  
  L23: 6a 00 ?? push 0
   6a 00 ?? push 0
   e8 5a 27 00 00 ?? call function 0x00405306
  
  L24: b8 bb 2b 40 00 ?? mov eax, basic block L25
   c3 ?? ret
  
  L25: c7 45 fc 01 00 00 00 ?? mov dword ss:[ebp + 0xfc<252,-4>], 1
  
  L26: b8 d1 2b 40 00 ?? mov eax, basic block L27
   c3 ?? ret
  
  L27: c7 45 fc ff ff ff ff ?? mov dword ss:[ebp + 0xfc<252,-4>], 0xffffffff<4294967295,-1>
  
  L28: 83 7d 0c 00 ?? cmp dword ss:[ebp + 12], 0
   76 22 ?? jbe basic block L33
  
  L29: 8b 55 0c ?? mov edx, dword ss:[ebp + 12]
   52 ?? push edx
   8b 4d ec ?? mov ecx, dword ss:[ebp + 0xec<236,-20>]
   e8 66 f1 ff ff ?? call function 0x00401d50
  
  L30: 50 ?? push eax
   8b 45 e0 ?? mov eax, dword ss:[ebp + 0xe0<224,-32>]
   50 ?? push eax
   e8 6c 07 00 00 ?? call function 0x00403360
  
  L31: 83 c4 04 ?? add esp, 4
   50 ?? push eax
   e8 63 e4 ff ff ?? call function 0x00401060
  
  L32: 83 c4 0c ?? add esp, 12
  
  L33: 6a 00 ?? push 0
   6a 01 ?? push 1
   8b 4d ec ?? mov ecx, dword ss:[ebp + 0xec<236,-20>]
   e8 74 f1 ff ff ?? call function 0x00401d80
  
  L34: 8d 4d e0 ?? lea ecx, ss:[ebp + 0xe0<224,-32>]
   51 ?? push ecx
   8b 4d ec ?? mov ecx, dword ss:[ebp + 0xec<236,-20>]
   e8 68 f7 ff ff ?? call function 0x00402380
  
  L35: 50 ?? push eax
   e8 02 07 00 00 ?? call function 0x00403320
  
  L36: 83 c4 04 ?? add esp, 4
   50 ?? push eax
   8b 4d ec ?? mov ecx, dword ss:[ebp + 0xec<236,-20>]
   e8 e6 ef ff ff ?? call function 0x00401c10
  
  L37: 8b c8 ?? mov ecx, eax
   e8 7f 07 00 00 ?? call function 0x004033b0
  
  L38: 8b 4d ec ?? mov ecx, dword ss:[ebp + 0xec<236,-20>]
   e8 17 f7 ff ff ?? call function 0x00402350
  
  L39: 8b 55 e8 ?? mov edx, dword ss:[ebp + 0xe8<232,-24>]
   89 10 ?? mov dword ds:[eax], edx
   8b 45 0c ?? mov eax, dword ss:[ebp + 12]
   50 ?? push eax
   8b 4d ec ?? mov ecx, dword ss:[ebp + 0xec<236,-20>]
   e8 16 fb ff ff ?? call function 0x00402760
  
  L40: 52 ?? push edx
   8b cd ?? mov ecx, ebp
   50 ?? push eax
   8d 15 7c 2c 40 00 ?? lea edx, ds:[0x00402c7c]
   e8 e7 2a 00 00 ?? call function 0x00405740
  
  L41: 58 ?? pop eax
   5a ?? pop edx
   8b 4d f4 ?? mov ecx, dword ss:[ebp + 0xf4<244,-12>]
   64 89 0d 00 00 00 00 ?? mov dword fs:[0], ecx
   59 ?? pop ecx
   5f ?? pop edi
   5e ?? pop esi
   5b ?? pop ebx
   83 c4 2c ?? add esp, 0x2c<44>
   3b ec ?? cmp ebp, esp
   e8 2d 2b 00 00 ?? call function 0x004057a0
  
  L42: 8b e5 ?? mov esp, ebp
   5d ?? pop ebp
   c2 08 00 ?? ret 8
  
  