Disassembly: 
  L1: 55 ?? push ebp
   8b ec ?? mov ebp, esp
   6a ff ?? push 0xff<255,-1>
   68 98 59 40 00 ?? push 0x00405998
   64 a1 00 00 00 00 ?? mov eax, dword fs:[0]
   50 ?? push eax
   51 ?? push ecx
   83 ec 6c ?? sub esp, 0x6c<108>
   53 ?? push ebx
   56 ?? push esi
   57 ?? push edi
   8d 7d 84 ?? lea edi, ss:[ebp + 0x84<132,-124>]
   b9 1b 00 00 00 ?? mov ecx, 0x0000001b<27>
   b8 cc cc cc cc ?? mov eax, 0xcccccccc
   f3 ab ?? rep_stosd
   a1 00 90 40 00 ?? mov eax, dword ds:[0x00409000]
   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
   c7 45 ec 00 00 00 00 ?? mov dword ss:[ebp + 0xec<236,-20>], 0
   8b 4d 0c ?? mov ecx, dword ss:[ebp + 12]
   e8 c6 f0 ff ff ?? call function 0x00401d90
  
  L2: 89 45 e8 ?? mov dword ss:[ebp + 0xe8<232,-24>], eax
   8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   8b 08 ?? mov ecx, dword ds:[eax]
   8b 55 08 ?? mov edx, dword ss:[ebp + 8]
   03 51 04 ?? add edx, dword ds:[ecx + 4]
   8b f4 ?? mov esi, esp
   8b ca ?? mov ecx, edx
   ff 15 64 60 40 00 ?? call dword ds:[function 0x00406064]
  
  L3: 3b f4 ?? cmp esi, esp
   e8 e7 1b 00 00 ?? call function 0x004048d0
  
  L4: 89 45 b8 ?? mov dword ss:[ebp + 0xb8<184,-72>], eax
   89 55 bc ?? mov dword ss:[ebp + 0xbc<188,-68>], edx
   83 7d bc 00 ?? cmp dword ss:[ebp + 0xbc<188,-68>], 0
   7c 4d ?? jl basic block L13
  
  L5: 7f 06 ?? jg basic block L7
  
  L6: 83 7d b8 00 ?? cmp dword ss:[ebp + 0xb8<184,-72>], 0
   76 45 ?? jbe basic block L13
  
  L7: 8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   8b 08 ?? mov ecx, dword ds:[eax]
   8b 55 08 ?? mov edx, dword ss:[ebp + 8]
   03 51 04 ?? add edx, dword ds:[ecx + 4]
   8b f4 ?? mov esi, esp
   8b ca ?? mov ecx, edx
   ff 15 64 60 40 00 ?? call dword ds:[function 0x00406064]
  
  L8: 3b f4 ?? cmp esi, esp
   e8 b7 1b 00 00 ?? call function 0x004048d0
  
  L9: 3b 45 e8 ?? cmp eax, dword ss:[ebp + 0xe8<232,-24>]
   76 24 ?? jbe basic block L13
  
  L10: 8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   8b 08 ?? mov ecx, dword ds:[eax]
   8b 55 08 ?? mov edx, dword ss:[ebp + 8]
   03 51 04 ?? add edx, dword ds:[ecx + 4]
   8b f4 ?? mov esi, esp
   8b ca ?? mov ecx, edx
   ff 15 64 60 40 00 ?? call dword ds:[function 0x00406064]
  
  L11: 3b f4 ?? cmp esi, esp
   e8 96 1b 00 00 ?? call function 0x004048d0
  
  L12: 2b 45 e8 ?? sub eax, dword ss:[ebp + 0xe8<232,-24>]
   89 45 b4 ?? mov dword ss:[ebp + 0xb4<180,-76>], eax
   eb 07 ?? jmp basic block L14
  
  L13: c7 45 b4 00 00 00 00 ?? mov dword ss:[ebp + 0xb4<180,-76>], 0
  
  L14: 8b 45 b4 ?? mov eax, dword ss:[ebp + 0xb4<180,-76>]
   89 45 e4 ?? mov dword ss:[ebp + 0xe4<228,-28>], eax
   8b 4d 08 ?? mov ecx, dword ss:[ebp + 8]
   51 ?? push ecx
   8d 4d d8 ?? lea ecx, ss:[ebp + 0xd8<216,-40>]
   e8 65 f2 ff ff ?? call function 0x00401fc0
  
  L15: c7 45 fc 00 00 00 00 ?? mov dword ss:[ebp + 0xfc<252,-4>], 0
   8d 4d d8 ?? lea ecx, ss:[ebp + 0xd8<216,-40>]
   e8 c6 f3 ff ff ?? call function 0x00402130
  
  L16: 0f b6 d0 ?? movzx edx, al
   85 d2 ?? test edx, edx
   75 0e ?? jne basic block L18
  
  L17: 8b 45 ec ?? mov eax, dword ss:[ebp + 0xec<236,-20>]
   83 c8 04 ?? or eax, 4
   89 45 ec ?? mov dword ss:[ebp + 0xec<236,-20>], eax
   e9 3c 02 00 00 ?? jmp basic block L63
  
  L18: c6 45 fc 01 ?? mov byte ss:[ebp + 0xfc<252,-4>], 1
   8b 4d 08 ?? mov ecx, dword ss:[ebp + 8]
   8b 11 ?? mov edx, dword ds:[ecx]
   8b 4d 08 ?? mov ecx, dword ss:[ebp + 8]
   03 4a 04 ?? add ecx, dword ds:[edx + 4]
   8b f4 ?? mov esi, esp
   ff 15 58 60 40 00 ?? call dword ds:[function 0x00406058]
  
  L19: 3b f4 ?? cmp esi, esp
   e8 33 1b 00 00 ?? call function 0x004048d0
  
  L20: 89 45 b0 ?? mov dword ss:[ebp + 0xb0<176,-80>], eax
   8b 45 b0 ?? mov eax, dword ss:[ebp + 0xb0<176,-80>]
   25 c0 01 00 00 ?? and eax, 0x000001c0<448>
   83 f8 40 ?? cmp eax, 0x40<64>
   0f 84 9e 00 00 00 ?? je basic block L34
  
  L21: eb 09 ?? jmp basic block L22
  
  L22: 83 7d e4 00 ?? cmp dword ss:[ebp + 0xe4<228,-28>], 0
   0f 86 89 00 00 00 ?? jbe basic block L34
  
  L23: 8b 55 08 ?? mov edx, dword ss:[ebp + 8]
   8b 02 ?? mov eax, dword ds:[edx]
   8b 4d 08 ?? mov ecx, dword ss:[ebp + 8]
   03 48 04 ?? add ecx, dword ds:[eax + 4]
   8b f4 ?? mov esi, esp
   ff 15 84 60 40 00 ?? call dword ds:[function 0x00406084]
  
  L24: 3b f4 ?? cmp esi, esp
   e8 f0 1a 00 00 ?? call function 0x004048d0
  
  L25: 88 45 af ?? mov byte ss:[ebp + 0xaf<175,-81>], al
   8b 4d 08 ?? mov ecx, dword ss:[ebp + 8]
   8b 11 ?? mov edx, dword ds:[ecx]
   8b 4d 08 ?? mov ecx, dword ss:[ebp + 8]
   03 4a 04 ?? add ecx, dword ds:[edx + 4]
   8b f4 ?? mov esi, esp
   ff 15 78 60 40 00 ?? call dword ds:[function 0x00406078]
  
  L26: 3b f4 ?? cmp esi, esp
   e8 d3 1a 00 00 ?? call function 0x004048d0
  
  L27: 89 45 a8 ?? mov dword ss:[ebp + 0xa8<168,-88>], eax
   8b f4 ?? mov esi, esp
   0f b6 45 af ?? movzx eax, byte ss:[ebp + 0xaf<175,-81>]
   50 ?? push eax
   8b 4d a8 ?? mov ecx, dword ss:[ebp + 0xa8<168,-88>]
   ff 15 98 60 40 00 ?? call dword ds:[function 0x00406098]
  
  L28: 3b f4 ?? cmp esi, esp
   e8 b9 1a 00 00 ?? call function 0x004048d0
  
  L29: 89 45 a4 ?? mov dword ss:[ebp + 0xa4<164,-92>], eax
   8b 4d a4 ?? mov ecx, dword ss:[ebp + 0xa4<164,-92>]
   89 4d d0 ?? mov dword ss:[ebp + 0xd0<208,-48>], ecx
   e8 9b e4 ff ff ?? call function 0x004012c0
  
  L30: 89 45 cc ?? mov dword ss:[ebp + 0xcc<204,-52>], eax
   8d 55 d0 ?? lea edx, ss:[ebp + 0xd0<208,-48>]
   52 ?? push edx
   8d 45 cc ?? lea eax, ss:[ebp + 0xcc<204,-52>]
   50 ?? push eax
   e8 5b e4 ff ff ?? call function 0x00401290
  
  L31: 83 c4 08 ?? add esp, 8
   0f b6 c8 ?? movzx ecx, al
   85 c9 ?? test ecx, ecx
   74 0b ?? je basic block L33
  
  L32: 8b 55 ec ?? mov edx, dword ss:[ebp + 0xec<236,-20>]
   83 ca 04 ?? or edx, 4
   89 55 ec ?? mov dword ss:[ebp + 0xec<236,-20>], edx
   eb 05 ?? jmp basic block L34
  
  L33: e9 64 ff ff ff ?? jmp 0x00402db3
   8b 4d e4 ?? mov ecx, dword ss:[ebp + 0xe4<228,-28>]
   83 e9 01 ?? sub ecx, 1
   89 4d e4 ?? mov dword ss:[ebp + 0xe4<228,-28>], ecx
  
  L34: 83 7d ec 00 ?? cmp dword ss:[ebp + 0xec<236,-20>], 0
   75 70 ?? jne basic block L43
  
  L35: 8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   8b 08 ?? mov ecx, dword ds:[eax]
   8b 55 08 ?? mov edx, dword ss:[ebp + 8]
   03 51 04 ?? add edx, dword ds:[ecx + 4]
   8b f4 ?? mov esi, esp
   8b ca ?? mov ecx, edx
   ff 15 78 60 40 00 ?? call dword ds:[function 0x00406078]
  
  L36: 3b f4 ?? cmp esi, esp
   e8 5f 1a 00 00 ?? call function 0x004048d0
  
  L37: 89 45 a0 ?? mov dword ss:[ebp + 0xa0<160,-96>], eax
   8b 45 e8 ?? mov eax, dword ss:[ebp + 0xe8<232,-24>]
   33 c9 ?? xor ecx, ecx
   8b f4 ?? mov esi, esp
   51 ?? push ecx
   50 ?? push eax
   8b 4d 0c ?? mov ecx, dword ss:[ebp + 12]
   e8 bb ed ff ff ?? call function 0x00401c40
  
  L38: 50 ?? push eax
   8b 4d a0 ?? mov ecx, dword ss:[ebp + 0xa0<160,-96>]
   ff 15 9c 60 40 00 ?? call dword ds:[function 0x0040609c<"by@">]
  
  L39: 3b f4 ?? cmp esi, esp
   e8 3a 1a 00 00 ?? call function 0x004048d0
  
  L40: 89 45 98 ?? mov dword ss:[ebp + 0x98<152,-104>], eax
   89 55 9c ?? mov dword ss:[ebp + 0x9c<156,-100>], edx
   8b 55 e8 ?? mov edx, dword ss:[ebp + 0xe8<232,-24>]
   33 c0 ?? xor eax, eax
   89 55 90 ?? mov dword ss:[ebp + 0x90<144,-112>], edx
   89 45 94 ?? mov dword ss:[ebp + 0x94<148,-108>], eax
   8b 4d 98 ?? mov ecx, dword ss:[ebp + 0x98<152,-104>]
   3b 4d 90 ?? cmp ecx, dword ss:[ebp + 0x90<144,-112>]
   75 08 ?? jne basic block L42
  
  L41: 8b 55 9c ?? mov edx, dword ss:[ebp + 0x9c<156,-100>]
   3b 55 94 ?? cmp edx, dword ss:[ebp + 0x94<148,-108>]
   74 0e ?? je basic block L43
  
  L42: 8b 45 ec ?? mov eax, dword ss:[ebp + 0xec<236,-20>]
   83 c8 04 ?? or eax, 4
   89 45 ec ?? mov dword ss:[ebp + 0xec<236,-20>], eax
   e9 9e 00 00 00 ?? jmp basic block L56
  
  L43: eb 09 ?? jmp basic block L44
  
  L44: 83 7d e4 00 ?? cmp dword ss:[ebp + 0xe4<228,-28>], 0
   0f 86 89 00 00 00 ?? jbe basic block L56
  
  L45: 8b 55 08 ?? mov edx, dword ss:[ebp + 8]
   8b 02 ?? mov eax, dword ds:[edx]
   8b 4d 08 ?? mov ecx, dword ss:[ebp + 8]
   03 48 04 ?? add ecx, dword ds:[eax + 4]
   8b f4 ?? mov esi, esp
   ff 15 84 60 40 00 ?? call dword ds:[function 0x00406084]
  
  L46: 3b f4 ?? cmp esi, esp
   e8 dc 19 00 00 ?? call function 0x004048d0
  
  L47: 88 45 8f ?? mov byte ss:[ebp + 0x8f<143,-113>], al
   8b 4d 08 ?? mov ecx, dword ss:[ebp + 8]
   8b 11 ?? mov edx, dword ds:[ecx]
   8b 4d 08 ?? mov ecx, dword ss:[ebp + 8]
   03 4a 04 ?? add ecx, dword ds:[edx + 4]
   8b f4 ?? mov esi, esp
   ff 15 78 60 40 00 ?? call dword ds:[function 0x00406078]
  
  L48: 3b f4 ?? cmp esi, esp
   e8 bf 19 00 00 ?? call function 0x004048d0
  
  L49: 89 45 88 ?? mov dword ss:[ebp + 0x88<136,-120>], eax
   8b f4 ?? mov esi, esp
   0f b6 45 8f ?? movzx eax, byte ss:[ebp + 0x8f<143,-113>]
   50 ?? push eax
   8b 4d 88 ?? mov ecx, dword ss:[ebp + 0x88<136,-120>]
   ff 15 98 60 40 00 ?? call dword ds:[function 0x00406098]
  
  L50: 3b f4 ?? cmp esi, esp
   e8 a5 19 00 00 ?? call function 0x004048d0
  
  L51: 89 45 84 ?? mov dword ss:[ebp + 0x84<132,-124>], eax
   8b 4d 84 ?? mov ecx, dword ss:[ebp + 0x84<132,-124>]
   89 4d c8 ?? mov dword ss:[ebp + 0xc8<200,-56>], ecx
   e8 87 e3 ff ff ?? call function 0x004012c0
  
  L52: 89 45 c4 ?? mov dword ss:[ebp + 0xc4<196,-60>], eax
   8d 55 c8 ?? lea edx, ss:[ebp + 0xc8<200,-56>]
   52 ?? push edx
   8d 45 c4 ?? lea eax, ss:[ebp + 0xc4<196,-60>]
   50 ?? push eax
   e8 47 e3 ff ff ?? call function 0x00401290
  
  L53: 83 c4 08 ?? add esp, 8
   0f b6 c8 ?? movzx ecx, al
   85 c9 ?? test ecx, ecx
   74 0b ?? je basic block L55
  
  L54: 8b 55 ec ?? mov edx, dword ss:[ebp + 0xec<236,-20>]
   83 ca 04 ?? or edx, 4
   89 55 ec ?? mov dword ss:[ebp + 0xec<236,-20>], edx
   eb 05 ?? jmp basic block L56
  
  L55: e9 64 ff ff ff ?? jmp 0x00402ec7
   8b 4d e4 ?? mov ecx, dword ss:[ebp + 0xe4<228,-28>]
   83 e9 01 ?? sub ecx, 1
   89 4d e4 ?? mov dword ss:[ebp + 0xe4<228,-28>], ecx
  
  L56: 8b f4 ?? mov esi, esp
   6a 00 ?? push 0
   6a 00 ?? push 0
   8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   8b 08 ?? mov ecx, dword ds:[eax]
   8b 55 08 ?? mov edx, dword ss:[ebp + 8]
   03 51 04 ?? add edx, dword ds:[ecx + 4]
   8b ca ?? mov ecx, edx
   ff 15 70 60 40 00 ?? call dword ds:[function 0x00406070<"v|@">]
  
  L57: 3b f4 ?? cmp esi, esp
   e8 4d 19 00 00 ?? call function 0x004048d0
  
  L58: eb 26 ?? jmp 0x00402fab
   c7 45 fc 00 00 00 00 ?? mov dword ss:[ebp + 0xfc<252,-4>], 0
   eb 07 ?? jmp basic block L63
  
  L59: 8b f4 ?? mov esi, esp
   6a 01 ?? push 1
   6a 04 ?? push 4
   8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   8b 08 ?? mov ecx, dword ds:[eax]
   8b 55 08 ?? mov edx, dword ss:[ebp + 8]
   03 51 04 ?? add edx, dword ds:[ecx + 4]
   8b ca ?? mov ecx, edx
   ff 15 74 60 40 00 ?? call dword ds:[function 0x00406074<"6|@">]
  
  L60: 3b f4 ?? cmp esi, esp
   e8 2b 19 00 00 ?? call function 0x004048d0
  
  L61: b8 b4 2f 40 00 ?? mov eax, basic block L62
   c3 ?? ret
  
  L62: c7 45 fc 00 00 00 00 ?? mov dword ss:[ebp + 0xfc<252,-4>], 0
  
  L63: 8b f4 ?? mov esi, esp
   6a 00 ?? push 0
   8b 45 ec ?? mov eax, dword ss:[ebp + 0xec<236,-20>]
   50 ?? push eax
   8b 4d 08 ?? mov ecx, dword ss:[ebp + 8]
   8b 11 ?? mov edx, dword ds:[ecx]
   8b 4d 08 ?? mov ecx, dword ss:[ebp + 8]
   03 4a 04 ?? add ecx, dword ds:[edx + 4]
   ff 15 74 60 40 00 ?? call dword ds:[function 0x00406074<"6|@">]
  
  L64: 3b f4 ?? cmp esi, esp
   e8 f5 18 00 00 ?? call function 0x004048d0
  
  L65: 8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   89 45 c0 ?? mov dword ss:[ebp + 0xc0<192,-64>], eax
   c7 45 fc ff ff ff ff ?? mov dword ss:[ebp + 0xfc<252,-4>], 0xffffffff<4294967295,-1>
   8d 4d d8 ?? lea ecx, ss:[ebp + 0xd8<216,-40>]
   e8 f0 f0 ff ff ?? call function 0x004020e0
  
  L66: 8b 45 c0 ?? mov eax, dword ss:[ebp + 0xc0<192,-64>]
   52 ?? push edx
   8b cd ?? mov ecx, ebp
   50 ?? push eax
   8d 15 20 30 40 00 ?? lea edx, ds:[0x00403020]
   e8 6e 18 00 00 ?? call function 0x00404870
  
  L67: 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 7c ?? add esp, 0x7c<124>
   3b ec ?? cmp ebp, esp
   e8 b4 18 00 00 ?? call function 0x004048d0
  
  L68: 8b e5 ?? mov esp, ebp
   5d ?? pop ebp
   c3 ?? ret
  
  