Disassembly: 
  L1: 55 ?? push ebp
   8b ec ?? mov ebp, esp
   6a ff ?? push 0xff<255,-1>
   68 be 2b 40 00 ?? push 0x00402bbe
   64 a1 00 00 00 00 ?? mov eax, dword fs:[0]
   50 ?? push eax
   83 ec 18 ?? sub esp, 0x18<24>
   53 ?? push ebx
   56 ?? push esi
   57 ?? push edi
   a1 04 40 40 00 ?? mov eax, dword ds:[0x00404004]
   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 68 06 00 00 ?? call function 0x00401727
  
  L2: 83 c4 04 ?? add esp, 4
   c7 40 1c 0f 00 00 00 ?? mov dword ds:[eax + 0x1c<28>], 15
   c7 40 18 00 00 00 00 ?? mov dword ds:[eax + 0x18<24>], 0
   83 78 1c 10 ?? cmp dword ds:[eax + 0x1c<28>], 0x10<16>
   8d 70 08 ?? lea esi, ds:[eax + 8]
   89 45 f0 ?? mov dword ss:[ebp + 0xf0<240,-16>], eax
   72 04 ?? jb basic block L4
  
  L3: 8b 06 ?? mov eax, dword ds:[esi]
   eb 02 ?? jmp basic block L5
  
  L4: 8b c6 ?? mov eax, esi
  
  L5: 68 44 05 00 00 ?? push 0x00000544<1348>
   c6 00 00 ?? mov byte ds:[eax], 0
   e8 d5 07 00 00 ?? call function 0x004018c4
  
  L6: 83 c4 04 ?? add esp, 4
   85 c0 ?? test eax, eax
   74 1f ?? je basic block L9
  
  L7: 68 70 13 40 00 ?? push function 0x00401370
   68 f0 12 40 00 ?? push function 0x004012f0
   6a 2a ?? push 0x2a<42>
   8d 78 04 ?? lea edi, ds:[eax + 4]
   c7 00 2a 00 00 00 ?? mov dword ds:[eax], 0x0000002a<42>
   6a 20 ?? push 0x20<32>
   57 ?? push edi
   e8 c8 07 00 00 ?? call function 0x004018db
  
  L8: eb 02 ?? jmp basic block L10
  
  L9: 33 ff ?? xor edi, edi
  
  L10: 6a 18 ?? push 0x18<24>
   e8 09 06 00 00 ?? call function 0x00401727
  
  L11: 68 f0 00 00 00 ?? push 0x000000f0<240>
   89 45 e0 ?? mov dword ss:[ebp + 0xe0<224,-32>], eax
   e8 99 07 00 00 ?? call function 0x004018c4
  
  L12: 68 98 40 40 00 ?? push 0x00404098
   6a 20 ?? push 0x20<32>
   89 45 dc ?? mov dword ss:[ebp + 0xdc<220,-36>], eax
   e8 20 06 00 00 ?? call function 0x0040175a
  
  L13: 8b d8 ?? mov ebx, eax
   83 c4 10 ?? add esp, 0x10<16>
   85 db ?? test ebx, ebx
   74 1e ?? je basic block L17
  
  L14: 8d 4b 08 ?? lea ecx, ds:[ebx + 8]
   c7 41 14 0f 00 00 00 ?? mov dword ds:[ecx + 0x14<20>], 15
   c7 41 10 00 00 00 00 ?? mov dword ds:[ecx + 0x10<16>], 0
   83 79 14 10 ?? cmp dword ds:[ecx + 0x14<20>], 0x10<16>
   72 02 ?? jb basic block L16
  
  L15: 8b 09 ?? mov ecx, dword ds:[ecx]
  
  L16: c6 01 00 ?? mov byte ds:[ecx], 0
   eb 02 ?? jmp basic block L18
  
  L17: 33 db ?? xor ebx, ebx
  
  L18: 68 98 40 40 00 ?? push 0x00404098
   68 44 05 00 00 ?? push 0x00000544<1348>
   e8 5b 07 00 00 ?? call function 0x004018cd
  
  L19: 83 c4 08 ?? add esp, 8
   85 c0 ?? test eax, eax
   74 22 ?? je basic block L22
  
  L20: 68 70 13 40 00 ?? push function 0x00401370
   68 f0 12 40 00 ?? push function 0x004012f0
   6a 2a ?? push 0x2a<42>
   c7 00 2a 00 00 00 ?? mov dword ds:[eax], 0x0000002a<42>
   83 c0 04 ?? add eax, 4
   6a 20 ?? push 0x20<32>
   50 ?? push eax
   89 45 ec ?? mov dword ss:[ebp + 0xec<236,-20>], eax
   e8 42 07 00 00 ?? call function 0x004018db
  
  L21: eb 05 ?? jmp basic block L23
  
  L22: 33 c0 ?? xor eax, eax
   89 45 ec ?? mov dword ss:[ebp + 0xec<236,-20>], eax
  
  L23: 68 98 40 40 00 ?? push 0x00404098
   6a 18 ?? push 0x18<24>
   e8 ae 05 00 00 ?? call function 0x0040175a
  
  L24: 68 98 40 40 00 ?? push 0x00404098
   68 f0 00 00 00 ?? push 0x000000f0<240>
   89 45 e8 ?? mov dword ss:[ebp + 0xe8<232,-24>], eax
   e8 0f 07 00 00 ?? call function 0x004018cd
  
  L25: 83 c4 10 ?? add esp, 0x10<16>
   89 45 e4 ?? mov dword ss:[ebp + 0xe4<228,-28>], eax
   83 7d f0 00 ?? cmp dword ss:[ebp + 0xf0<240,-16>], 0
   74 1e ?? je basic block L29
  
  L26: c7 46 14 0f 00 00 00 ?? mov dword ds:[esi + 0x14<20>], 15
   c7 46 10 00 00 00 00 ?? mov dword ds:[esi + 0x10<16>], 0
   83 7e 14 10 ?? cmp dword ds:[esi + 0x14<20>], 0x10<16>
   72 02 ?? jb basic block L28
  
  L27: 8b 36 ?? mov esi, dword ds:[esi]
  
  L28: c6 06 00 ?? mov byte ds:[esi], 0
   8b 75 f0 ?? mov esi, dword ss:[ebp + 0xf0<240,-16>]
   eb 02 ?? jmp basic block L30
  
  L29: 33 f6 ?? xor esi, esi
  
  L30: 85 ff ?? test edi, edi
   74 1f ?? je basic block L33
  
  L31: 68 70 13 40 00 ?? push function 0x00401370
   68 f0 12 40 00 ?? push function 0x004012f0
   6a 2a ?? push 0x2a<42>
   c7 07 2a 00 00 00 ?? mov dword ds:[edi], 0x0000002a<42>
   83 c7 04 ?? add edi, 4
   6a 20 ?? push 0x20<32>
   57 ?? push edi
   e8 d0 06 00 00 ?? call function 0x004018db
  
  L32: eb 02 ?? jmp basic block L34
  
  L33: 33 ff ?? xor edi, edi
  
  L34: 85 f6 ?? test esi, esi
   74 13 ?? je basic block L38
  
  L35: 8d 4e 08 ?? lea ecx, ds:[esi + 8]
   e8 95 01 00 00 ?? call function 0x004013b0
  
  L36: 6a 20 ?? push 0x20<32>
   56 ?? push esi
   e8 93 06 00 00 ?? call function 0x004018b6
  
  L37: 83 c4 08 ?? add esp, 8
  
  L38: 85 ff ?? test edi, edi
   74 32 ?? je basic block L42
  
  L39: 68 70 13 40 00 ?? push function 0x00401370
   c7 45 fc 00 00 00 00 ?? mov dword ss:[ebp + 0xfc<252,-4>], 0
   8d 77 fc ?? lea esi, ds:[edi + 0xfc<252,-4>]
   ff 36 ?? push dword ds:[esi]
   6a 20 ?? push 0x20<32>
   57 ?? push edi
   e8 6e 05 00 00 ?? call function 0x004017b1
  
  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 c7 04 00 00 ?? call function 0x00401719
  
  L41: 83 c4 08 ?? add esp, 8
   c7 45 fc ff ff ff ff ?? mov dword ss:[ebp + 0xfc<252,-4>], 0xffffffff<4294967295,-1>
  
  L42: 85 db ?? test ebx, ebx
   74 13 ?? je basic block L46
  
  L43: 8d 4b 08 ?? lea ecx, ds:[ebx + 8]
   e8 48 01 00 00 ?? call function 0x004013b0
  
  L44: 6a 20 ?? push 0x20<32>
   53 ?? push ebx
   e8 46 06 00 00 ?? call function 0x004018b6
  
  L45: 83 c4 08 ?? add esp, 8
  
  L46: 8b 45 ec ?? mov eax, dword ss:[ebp + 0xec<236,-20>]
   85 c0 ?? test eax, eax
   74 2b ?? je basic block L50
  
  L47: 68 70 13 40 00 ?? push function 0x00401370
   8d 70 fc ?? lea esi, ds:[eax + 0xfc<252,-4>]
   c7 45 fc 01 00 00 00 ?? mov dword ss:[ebp + 0xfc<252,-4>], 1
   ff 36 ?? push dword ds:[esi]
   6a 20 ?? push 0x20<32>
   50 ?? push eax
   e8 1e 05 00 00 ?? call function 0x004017b1
  
  L48: 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 77 04 00 00 ?? call function 0x00401719
  
  L49: 83 c4 08 ?? add esp, 8
  
  L50: 8b 45 e8 ?? mov eax, dword ss:[ebp + 0xe8<232,-24>]
   85 c0 ?? test eax, eax
   74 0b ?? je basic block L53
  
  L51: 6a 18 ?? push 0x18<24>
   50 ?? push eax
   e8 02 06 00 00 ?? call function 0x004018b6
  
  L52: 83 c4 08 ?? add esp, 8
  
  L53: 8b 45 e4 ?? mov eax, dword ss:[ebp + 0xe4<228,-28>]
   85 c0 ?? test eax, eax
   74 09 ?? je basic block L56
  
  L54: 50 ?? push eax
   e8 50 04 00 00 ?? call function 0x00401714
  
  L55: 83 c4 04 ?? add esp, 4
  
  L56: 6a 18 ?? push 0x18<24>
   ff 75 e0 ?? push dword ss:[ebp + 0xe0<224,-32>]
   e8 e5 05 00 00 ?? call function 0x004018b6
  
  L57: ff 75 dc ?? push dword ss:[ebp + 0xdc<220,-36>]
   e8 3b 04 00 00 ?? call function 0x00401714
  
  L58: 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
  
  