Disassembly: 
  L1: 55 ?? push ebp
   8b ec ?? mov ebp, esp
   6a ff ?? push 0xff<255,-1>
   68 a0 2d 40 00 ?? push 0x00402da0
   64 a1 00 00 00 00 ?? mov eax, dword fs:[0]
   50 ?? push eax
   83 ec 14 ?? sub esp, 0x14<20>
   53 ?? push ebx
   56 ?? push esi
   57 ?? push edi
   a1 04 50 40 00 ?? mov eax, dword ds:[0x00405004]
   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
   6a 20 ?? push 0x20<32>
   e8 1b 06 00 00 ?? call function 0x004016aa
  
  L2: 8b f0 ?? mov esi, eax
   68 44 05 00 00 ?? push 0x00000544<1348>
   c7 46 08 00 00 00 00 ?? mov dword ds:[esi + 8], 0
   c7 46 18 00 00 00 00 ?? mov dword ds:[esi + 0x18<24>], 0
   c7 46 1c 0f 00 00 00 ?? mov dword ds:[esi + 0x1c<28>], 15
   e8 d6 07 00 00 ?? call function 0x00401886
  
  L3: 83 c4 08 ?? add esp, 8
   c7 00 2a 00 00 00 ?? mov dword ds:[eax], 0x0000002a<42>
   83 c0 04 ?? add eax, 4
   68 a0 13 40 00 ?? push function 0x004013a0
   68 10 13 40 00 ?? push function 0x00401310
   6a 2a ?? push 0x2a<42>
   6a 20 ?? push 0x20<32>
   50 ?? push eax
   89 45 f0 ?? mov dword ss:[ebp + 0xf0<240,-16>], eax
   e8 ca 07 00 00 ?? call function 0x0040189d
  
  L4: 6a 18 ?? push 0x18<24>
   e8 d0 05 00 00 ?? call function 0x004016aa
  
  L5: 68 f0 00 00 00 ?? push 0x000000f0<240>
   89 45 e4 ?? mov dword ss:[ebp + 0xe4<228,-28>], eax
   e8 9f 07 00 00 ?? call function 0x00401886
  
  L6: 68 28 31 40 00 ?? push 0x00403128
   6a 20 ?? push 0x20<32>
   89 45 e0 ?? mov dword ss:[ebp + 0xe0<224,-32>], eax
   e8 e4 05 00 00 ?? call function 0x004016da
  
  L7: 8b f8 ?? mov edi, eax
   83 c4 10 ?? add esp, 0x10<16>
   85 ff ?? test edi, edi
   74 17 ?? je basic block L9
  
  L8: c7 47 08 00 00 00 00 ?? mov dword ds:[edi + 8], 0
   c7 47 18 00 00 00 00 ?? mov dword ds:[edi + 0x18<24>], 0
   c7 47 1c 0f 00 00 00 ?? mov dword ds:[edi + 0x1c<28>], 15
   eb 02 ?? jmp basic block L10
  
  L9: 33 ff ?? xor edi, edi
  
  L10: 68 28 31 40 00 ?? push 0x00403128
   68 44 05 00 00 ?? push 0x00000544<1348>
   e8 68 07 00 00 ?? call function 0x0040188f
  
  L11: 83 c4 08 ?? add esp, 8
   85 c0 ?? test eax, eax
   74 1f ?? je basic block L14
  
  L12: 68 a0 13 40 00 ?? push function 0x004013a0
   68 10 13 40 00 ?? push function 0x00401310
   6a 2a ?? push 0x2a<42>
   8d 58 04 ?? lea ebx, ds:[eax + 4]
   c7 00 2a 00 00 00 ?? mov dword ds:[eax], 0x0000002a<42>
   6a 20 ?? push 0x20<32>
   53 ?? push ebx
   e8 52 07 00 00 ?? call function 0x0040189d
  
  L13: eb 02 ?? jmp basic block L15
  
  L14: 33 db ?? xor ebx, ebx
  
  L15: 68 28 31 40 00 ?? push 0x00403128
   6a 18 ?? push 0x18<24>
   e8 7f 05 00 00 ?? call function 0x004016da
  
  L16: 68 28 31 40 00 ?? push 0x00403128
   68 f0 00 00 00 ?? push 0x000000f0<240>
   89 45 ec ?? mov dword ss:[ebp + 0xec<236,-20>], eax
   e8 22 07 00 00 ?? call function 0x0040188f
  
  L17: 83 c4 10 ?? add esp, 0x10<16>
   89 45 e8 ?? mov dword ss:[ebp + 0xe8<232,-24>], eax
   c7 46 08 00 00 00 00 ?? mov dword ds:[esi + 8], 0
   c7 46 18 00 00 00 00 ?? mov dword ds:[esi + 0x18<24>], 0
   c7 46 1c 0f 00 00 00 ?? mov dword ds:[esi + 0x1c<28>], 15
   68 a0 13 40 00 ?? push function 0x004013a0
   68 10 13 40 00 ?? push function 0x00401310
   6a 2a ?? push 0x2a<42>
   6a 20 ?? push 0x20<32>
   ff 75 f0 ?? push dword ss:[ebp + 0xf0<240,-16>]
   e8 ff 06 00 00 ?? call function 0x0040189d
  
  L18: 8b 4e 1c ?? mov ecx, dword ds:[esi + 0x1c<28>]
   83 f9 10 ?? cmp ecx, 0x10<16>
   72 2c ?? jb basic block L24
  
  L19: 8b 46 08 ?? mov eax, dword ds:[esi + 8]
   41 ?? inc ecx
   81 f9 00 10 00 00 ?? cmp ecx, 0x00001000<4096>
   72 16 ?? jb basic block L22
  
  L20: 8b 50 fc ?? mov edx, dword ds:[eax + 0xfc<252,-4>]
   83 c1 23 ?? add ecx, 0x23<35>
   2b c2 ?? sub eax, edx
   83 c0 fc ?? add eax, 0xfc<252,-4>
   83 f8 1f ?? cmp eax, 0x1f<31>
   0f 87 2f 01 00 00 ?? ja basic block L51
  
  L21: 8b c2 ?? mov eax, edx
  
  L22: 51 ?? push ecx
   50 ?? push eax
   e8 a9 06 00 00 ?? call function 0x00401878
  
  L23: 83 c4 08 ?? add esp, 8
  
  L24: 6a 20 ?? push 0x20<32>
   56 ?? push esi
   c7 46 18 00 00 00 00 ?? mov dword ds:[esi + 0x18<24>], 0
   c7 46 1c 0f 00 00 00 ?? mov dword ds:[esi + 0x1c<28>], 15
   c6 46 08 00 ?? mov byte ds:[esi + 8], 0
   e8 8c 06 00 00 ?? call function 0x00401878
  
  L25: 8b 45 f0 ?? mov eax, dword ss:[ebp + 0xf0<240,-16>]
   83 c4 08 ?? add esp, 8
   85 c0 ?? test eax, eax
   74 32 ?? je basic block L29
  
  L26: 68 a0 13 40 00 ?? push function 0x004013a0
   8d 70 fc ?? lea esi, ds:[eax + 0xfc<252,-4>]
   c7 45 fc 00 00 00 00 ?? mov dword ss:[ebp + 0xfc<252,-4>], 0
   ff 36 ?? push dword ds:[esi]
   6a 20 ?? push 0x20<32>
   50 ?? push eax
   e8 25 05 00 00 ?? call function 0x00401734
  
  L27: 8b 06 ?? mov eax, dword ds:[esi]
   c1 e0 05 ?? shl eax, 5
   83 c0 04 ?? add eax, 4
   50 ?? push eax
   56 ?? push esi
   e8 7e 04 00 00 ?? call function 0x0040169c
  
  L28: 83 c4 08 ?? add esp, 8
   c7 45 fc ff ff ff ff ?? mov dword ss:[ebp + 0xfc<252,-4>], 0xffffffff<4294967295,-1>
  
  L29: 85 ff ?? test edi, edi
   74 51 ?? je basic block L38
  
  L30: 8b 4f 1c ?? mov ecx, dword ds:[edi + 0x1c<28>]
   83 f9 10 ?? cmp ecx, 0x10<16>
   72 2c ?? jb basic block L36
  
  L31: 8b 47 08 ?? mov eax, dword ds:[edi + 8]
   41 ?? inc ecx
   81 f9 00 10 00 00 ?? cmp ecx, 0x00001000<4096>
   72 16 ?? jb basic block L34
  
  L32: 8b 50 fc ?? mov edx, dword ds:[eax + 0xfc<252,-4>]
   83 c1 23 ?? add ecx, 0x23<35>
   2b c2 ?? sub eax, edx
   83 c0 fc ?? add eax, 0xfc<252,-4>
   83 f8 1f ?? cmp eax, 0x1f<31>
   0f 87 a1 00 00 00 ?? ja basic block L51
  
  L33: 8b c2 ?? mov eax, edx
  
  L34: 51 ?? push ecx
   50 ?? push eax
   e8 1b 06 00 00 ?? call function 0x00401878
  
  L35: 83 c4 08 ?? add esp, 8
  
  L36: 6a 20 ?? push 0x20<32>
   57 ?? push edi
   c7 47 18 00 00 00 00 ?? mov dword ds:[edi + 0x18<24>], 0
   c7 47 1c 0f 00 00 00 ?? mov dword ds:[edi + 0x1c<28>], 15
   c6 47 08 00 ?? mov byte ds:[edi + 8], 0
   e8 fe 05 00 00 ?? call function 0x00401878
  
  L37: 83 c4 08 ?? add esp, 8
  
  L38: 85 db ?? test ebx, ebx
   74 2b ?? je basic block L42
  
  L39: 68 a0 13 40 00 ?? push function 0x004013a0
   c7 45 fc 01 00 00 00 ?? mov dword ss:[ebp + 0xfc<252,-4>], 1
   8d 73 fc ?? lea esi, ds:[ebx + 0xfc<252,-4>]
   ff 36 ?? push dword ds:[esi]
   6a 20 ?? push 0x20<32>
   53 ?? push ebx
   e8 9a 04 00 00 ?? call function 0x00401734
  
  L40: 8b 06 ?? mov eax, dword ds:[esi]
   c1 e0 05 ?? shl eax, 5
   83 c0 04 ?? add eax, 4
   50 ?? push eax
   56 ?? push esi
   e8 f3 03 00 00 ?? call function 0x0040169c
  
  L41: 83 c4 08 ?? add esp, 8
  
  L42: 8b 45 ec ?? mov eax, dword ss:[ebp + 0xec<236,-20>]
   85 c0 ?? test eax, eax
   74 0b ?? je basic block L45
  
  L43: 6a 18 ?? push 0x18<24>
   50 ?? push eax
   e8 bd 05 00 00 ?? call function 0x00401878
  
  L44: 83 c4 08 ?? add esp, 8
  
  L45: 8b 45 e8 ?? mov eax, dword ss:[ebp + 0xe8<232,-24>]
   85 c0 ?? test eax, eax
   74 09 ?? je basic block L48
  
  L46: 50 ?? push eax
   e8 cc 03 00 00 ?? call function 0x00401697
  
  L47: 83 c4 04 ?? add esp, 4
  
  L48: 6a 18 ?? push 0x18<24>
   ff 75 e4 ?? push dword ss:[ebp + 0xe4<228,-28>]
   e8 a0 05 00 00 ?? call function 0x00401878
  
  L49: ff 75 e0 ?? push dword ss:[ebp + 0xe0<224,-32>]
   e8 b7 03 00 00 ?? call function 0x00401697
  
  L50: 83 c4 0c ?? add esp, 12
   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
   8b e5 ?? mov esp, ebp
   5d ?? pop ebp
   c3 ?? ret
  
  L51: ff 15 b0 30 40 00 ?? call dword ds:[0x004030b0<":<@">]
  
  L52: cc ?? int3
  
  L53: cc ?? int3
  
  L54: cc ?? int3
  
  L55: cc ?? int3
  
  L56: cc ?? int3
  
  L57: cc ?? int3
  
  L58: cc ?? int3
  
  L59: cc ?? int3
  
  L60: cc ?? int3
  
  L61: cc ?? int3
  
  L62: cc ?? int3
  
  L63: cc ?? int3
  
  L64: cc ?? int3
  
  L65: cc ?? int3
  
  L66: cc ?? int3
  
  L67: cc ?? int3
  
  L68: cc ?? int3
  
  L69: cc ?? int3
  
  L70: cc ?? int3
  
  L71: cc ?? int3
  
  L72: cc ?? int3
  
  