Disassembly: 
  L1: 55 ?? push ebp
   8b ec ?? mov ebp, esp
   6a ff ?? push 0xff<255,-1>
   68 38 59 40 00 ?? push 0x00405938
   64 a1 00 00 00 00 ?? mov eax, dword fs:[0]
   50 ?? push eax
   51 ?? push ecx
   81 ec 88 00 00 00 ?? sub esp, 0x00000088<136>
   53 ?? push ebx
   56 ?? push esi
   57 ?? push edi
   8d bd 68 ff ff ff ?? lea edi, ss:[ebp + 0xffffff68<4294967144,-152>]
   b9 22 00 00 00 ?? mov ecx, 0x00000022<34>
   b8 cc cc cc cc ?? mov eax, 0xcccccccc
   f3 ab ?? rep_stosd
   a1 84 a0 40 00 ?? mov eax, dword ds:[0x0040a084]
   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 45 0c ?? mov eax, dword ss:[ebp + 12]
   50 ?? push eax
   e8 72 f4 ff ff ?? call function 0x00401023
  
  L2: 83 c4 04 ?? add esp, 4
   33 c9 ?? xor ecx, ecx
   89 45 e4 ?? mov dword ss:[ebp + 0xe4<228,-28>], eax
   89 4d e8 ?? mov dword ss:[ebp + 0xe8<232,-24>], ecx
   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 fc b2 40 00 ?? call dword ds:[function 0x0040b2fc]
  
  L3: 3b f4 ?? cmp esi, esp
   e8 2a 09 00 00 ?? call function 0x00402500
  
  L4: 89 45 b0 ?? mov dword ss:[ebp + 0xb0<176,-80>], eax
   89 55 b4 ?? mov dword ss:[ebp + 0xb4<180,-76>], edx
   83 7d b4 00 ?? cmp dword ss:[ebp + 0xb4<180,-76>], 0
   7c 62 ?? jl basic block L15
  
  L5: 7f 06 ?? jg basic block L7
  
  L6: 83 7d b0 00 ?? cmp dword ss:[ebp + 0xb0<176,-80>], 0
   76 5a ?? jbe basic block L15
  
  L7: 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 fc b2 40 00 ?? call dword ds:[function 0x0040b2fc]
  
  L8: 3b f4 ?? cmp esi, esp
   e8 fc 08 00 00 ?? call function 0x00402500
  
  L9: 89 45 a8 ?? mov dword ss:[ebp + 0xa8<168,-88>], eax
   89 55 ac ?? mov dword ss:[ebp + 0xac<172,-84>], edx
   8b 45 ac ?? mov eax, dword ss:[ebp + 0xac<172,-84>]
   3b 45 e8 ?? cmp eax, dword ss:[ebp + 0xe8<232,-24>]
   7c 32 ?? jl basic block L15
  
  L10: 7f 08 ?? jg basic block L12
  
  L11: 8b 4d a8 ?? mov ecx, dword ss:[ebp + 0xa8<168,-88>]
   3b 4d e4 ?? cmp ecx, dword ss:[ebp + 0xe4<228,-28>]
   76 28 ?? jbe basic block L15
  
  L12: 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 fc b2 40 00 ?? call dword ds:[function 0x0040b2fc]
  
  L13: 3b f4 ?? cmp esi, esp
   e8 ca 08 00 00 ?? call function 0x00402500
  
  L14: 2b 45 e4 ?? sub eax, dword ss:[ebp + 0xe4<228,-28>]
   1b 55 e8 ?? sbb edx, dword ss:[ebp + 0xe8<232,-24>]
   89 45 a0 ?? mov dword ss:[ebp + 0xa0<160,-96>], eax
   89 55 a4 ?? mov dword ss:[ebp + 0xa4<164,-92>], edx
   eb 0e ?? jmp basic block L16
  
  L15: c7 45 a0 00 00 00 00 ?? mov dword ss:[ebp + 0xa0<160,-96>], 0
   c7 45 a4 00 00 00 00 ?? mov dword ss:[ebp + 0xa4<164,-92>], 0
  
  L16: 8b 4d a0 ?? mov ecx, dword ss:[ebp + 0xa0<160,-96>]
   89 4d dc ?? mov dword ss:[ebp + 0xdc<220,-36>], ecx
   8b 55 a4 ?? mov edx, dword ss:[ebp + 0xa4<164,-92>]
   89 55 e0 ?? mov dword ss:[ebp + 0xe0<224,-32>], edx
   8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   50 ?? push eax
   8d 4d d0 ?? lea ecx, ss:[ebp + 0xd0<208,-48>]
   e8 2c f4 ff ff ?? call function 0x00401096
  
  L17: c7 45 fc 00 00 00 00 ?? mov dword ss:[ebp + 0xfc<252,-4>], 0
   8d 4d d0 ?? lea ecx, ss:[ebp + 0xd0<208,-48>]
   e8 96 f3 ff ff ?? call function 0x0040100f
  
  L18: 83 f8 ff ?? cmp eax, 0xff<255,-1>
   75 0e ?? jne basic block L20
  
  L19: 8b 4d ec ?? mov ecx, dword ss:[ebp + 0xec<236,-20>]
   83 c9 04 ?? or ecx, 4
   89 4d ec ?? mov dword ss:[ebp + 0xec<236,-20>], ecx
   e9 91 02 00 00 ?? jmp basic block L68
  
  L20: c6 45 fc 01 ?? mov byte ss:[ebp + 0xfc<252,-4>], 1
   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 00 b3 40 00 ?? call dword ds:[function 0x0040b300]
  
  L21: 3b f4 ?? cmp esi, esp
   e8 56 08 00 00 ?? call function 0x00402500
  
  L22: 89 45 9c ?? mov dword ss:[ebp + 0x9c<156,-100>], eax
   8b 4d 9c ?? mov ecx, dword ss:[ebp + 0x9c<156,-100>]
   81 e1 c0 01 00 00 ?? and ecx, 0x000001c0<448>
   83 f9 40 ?? cmp ecx, 0x40<64>
   0f 84 bf 00 00 00 ?? je basic block L38
  
  L23: eb 12 ?? jmp basic block L24
  
  L24: 83 7d e0 00 ?? cmp dword ss:[ebp + 0xe0<224,-32>], 0
   0f 8c a1 00 00 00 ?? jl basic block L38
  
  L25: 7f 0a ?? jg basic block L27
  
  L26: 83 7d dc 00 ?? cmp dword ss:[ebp + 0xdc<220,-36>], 0
   0f 86 95 00 00 00 ?? jbe basic block L38
  
  L27: 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 04 b3 40 00 ?? call dword ds:[function 0x0040b304]
  
  L28: 3b f4 ?? cmp esi, esp
   e8 fd 07 00 00 ?? call function 0x00402500
  
  L29: 88 45 9b ?? mov byte ss:[ebp + 0x9b<155,-101>], al
   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 08 b3 40 00 ?? call dword ds:[function 0x0040b308]
  
  L30: 3b f4 ?? cmp esi, esp
   e8 de 07 00 00 ?? call function 0x00402500
  
  L31: 89 45 94 ?? mov dword ss:[ebp + 0x94<148,-108>], eax
   8b f4 ?? mov esi, esp
   0f b6 45 9b ?? movzx eax, byte ss:[ebp + 0x9b<155,-101>]
   50 ?? push eax
   8b 4d 94 ?? mov ecx, dword ss:[ebp + 0x94<148,-108>]
   ff 15 0c b3 40 00 ?? call dword ds:[function 0x0040b30c]
  
  L32: 3b f4 ?? cmp esi, esp
   e8 c4 07 00 00 ?? call function 0x00402500
  
  L33: 89 45 90 ?? mov dword ss:[ebp + 0x90<144,-112>], eax
   8b 4d 90 ?? mov ecx, dword ss:[ebp + 0x90<144,-112>]
   89 4d c8 ?? mov dword ss:[ebp + 0xc8<200,-56>], ecx
   e8 1a f3 ff ff ?? call function 0x00401064
  
  L34: 89 45 8c ?? mov dword ss:[ebp + 0x8c<140,-116>], eax
   8b 55 8c ?? mov edx, dword ss:[ebp + 0x8c<140,-116>]
   89 55 c4 ?? mov dword ss:[ebp + 0xc4<196,-60>], edx
   8d 45 c8 ?? lea eax, ss:[ebp + 0xc8<200,-56>]
   50 ?? push eax
   8d 4d c4 ?? lea ecx, ss:[ebp + 0xc4<196,-60>]
   51 ?? push ecx
   e8 c8 f2 ff ff ?? call function 0x00401028
  
  L35: 83 c4 08 ?? add esp, 8
   88 45 8b ?? mov byte ss:[ebp + 0x8b<139,-117>], al
   0f b6 55 8b ?? movzx edx, byte ss:[ebp + 0x8b<139,-117>]
   85 d2 ?? test edx, edx
   74 0b ?? je basic block L37
  
  L36: 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
   eb 05 ?? jmp basic block L38
  
  L37: e9 43 ff ff ff ?? jmp 0x00401cc1
   8b 55 dc ?? mov edx, dword ss:[ebp + 0xdc<220,-36>]
   83 ea 01 ?? sub edx, 1
   8b 45 e0 ?? mov eax, dword ss:[ebp + 0xe0<224,-32>]
   83 d8 00 ?? sbb eax, 0
   89 55 dc ?? mov dword ss:[ebp + 0xdc<220,-36>], edx
   89 45 e0 ?? mov dword ss:[ebp + 0xe0<224,-32>], eax
  
  L38: 83 7d ec 00 ?? cmp dword ss:[ebp + 0xec<236,-20>], 0
   75 60 ?? jne basic block L46
  
  L39: 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 08 b3 40 00 ?? call dword ds:[function 0x0040b308]
  
  L40: 3b f4 ?? cmp esi, esp
   e8 62 07 00 00 ?? call function 0x00402500
  
  L41: 89 45 84 ?? mov dword ss:[ebp + 0x84<132,-124>], eax
   8b f4 ?? mov esi, esp
   8b 45 e8 ?? mov eax, dword ss:[ebp + 0xe8<232,-24>]
   50 ?? push eax
   8b 4d e4 ?? mov ecx, dword ss:[ebp + 0xe4<228,-28>]
   51 ?? push ecx
   8b 55 0c ?? mov edx, dword ss:[ebp + 12]
   52 ?? push edx
   8b 4d 84 ?? mov ecx, dword ss:[ebp + 0x84<132,-124>]
   ff 15 14 b3 40 00 ?? call dword ds:[function 0x0040b314]
  
  L42: 3b f4 ?? cmp esi, esp
   e8 41 07 00 00 ?? call function 0x00402500
  
  L43: 89 85 7c ff ff ff ?? mov dword ss:[ebp + 0xffffff7c<4294967164,-132>], eax
   89 55 80 ?? mov dword ss:[ebp + 0x80<128,-128>], edx
   8b 85 7c ff ff ff ?? mov eax, dword ss:[ebp + 0xffffff7c<4294967164,-132>]
   3b 45 e4 ?? cmp eax, dword ss:[ebp + 0xe4<228,-28>]
   75 08 ?? jne basic block L45
  
  L44: 8b 4d 80 ?? mov ecx, dword ss:[ebp + 0x80<128,-128>]
   3b 4d e8 ?? cmp ecx, dword ss:[ebp + 0xe8<232,-24>]
   74 09 ?? je basic block L46
  
  L45: 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
  
  L46: 83 7d ec 00 ?? cmp dword ss:[ebp + 0xec<236,-20>], 0
   0f 85 db 00 00 00 ?? jne basic block L62
  
  L47: eb 12 ?? jmp basic block L48
  
  L48: 83 7d e0 00 ?? cmp dword ss:[ebp + 0xe0<224,-32>], 0
   0f 8c bd 00 00 00 ?? jl basic block L62
  
  L49: 7f 0a ?? jg basic block L51
  
  L50: 83 7d dc 00 ?? cmp dword ss:[ebp + 0xdc<220,-36>], 0
   0f 86 b1 00 00 00 ?? jbe basic block L62
  
  L51: 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 04 b3 40 00 ?? call dword ds:[function 0x0040b304]
  
  L52: 3b f4 ?? cmp esi, esp
   e8 ce 06 00 00 ?? call function 0x00402500
  
  L53: 88 85 7b ff ff ff ?? mov byte ss:[ebp + 0xffffff7b<4294967163,-133>], 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 08 b3 40 00 ?? call dword ds:[function 0x0040b308]
  
  L54: 3b f4 ?? cmp esi, esp
   e8 ae 06 00 00 ?? call function 0x00402500
  
  L55: 89 85 74 ff ff ff ?? mov dword ss:[ebp + 0xffffff74<4294967156,-140>], eax
   8b f4 ?? mov esi, esp
   0f b6 85 7b ff ff ff ?? movzx eax, byte ss:[ebp + 0xffffff7b<4294967163,-133>]
   50 ?? push eax
   8b 8d 74 ff ff ff ?? mov ecx, dword ss:[ebp + 0xffffff74<4294967156,-140>]
   ff 15 0c b3 40 00 ?? call dword ds:[function 0x0040b30c]
  
  L56: 3b f4 ?? cmp esi, esp
   e8 8b 06 00 00 ?? call function 0x00402500
  
  L57: 89 85 70 ff ff ff ?? mov dword ss:[ebp + 0xffffff70<4294967152,-144>], eax
   8b 8d 70 ff ff ff ?? mov ecx, dword ss:[ebp + 0xffffff70<4294967152,-144>]
   89 4d c0 ?? mov dword ss:[ebp + 0xc0<192,-64>], ecx
   e8 db f1 ff ff ?? call function 0x00401064
  
  L58: 89 85 6c ff ff ff ?? mov dword ss:[ebp + 0xffffff6c<4294967148,-148>], eax
   8b 95 6c ff ff ff ?? mov edx, dword ss:[ebp + 0xffffff6c<4294967148,-148>]
   89 55 bc ?? mov dword ss:[ebp + 0xbc<188,-68>], edx
   8d 45 c0 ?? lea eax, ss:[ebp + 0xc0<192,-64>]
   50 ?? push eax
   8d 4d bc ?? lea ecx, ss:[ebp + 0xbc<188,-68>]
   51 ?? push ecx
   e8 83 f1 ff ff ?? call function 0x00401028
  
  L59: 83 c4 08 ?? add esp, 8
   88 85 6b ff ff ff ?? mov byte ss:[ebp + 0xffffff6b<4294967147,-149>], al
   0f b6 95 6b ff ff ff ?? movzx edx, byte ss:[ebp + 0xffffff6b<4294967147,-149>]
   85 d2 ?? test edx, edx
   74 0b ?? je basic block L61
  
  L60: 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
   eb 05 ?? jmp basic block L62
  
  L61: e9 27 ff ff ff ?? jmp 0x00401df0
   8b 45 dc ?? mov eax, dword ss:[ebp + 0xdc<220,-36>]
   83 e8 01 ?? sub eax, 1
   8b 4d e0 ?? mov ecx, dword ss:[ebp + 0xe0<224,-32>]
   83 d9 00 ?? sbb ecx, 0
   89 45 dc ?? mov dword ss:[ebp + 0xdc<220,-36>], eax
   89 4d e0 ?? mov dword ss:[ebp + 0xe0<224,-32>], ecx
  
  L62: 8b f4 ?? mov esi, esp
   6a 00 ?? push 0
   6a 00 ?? push 0
   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 18 b3 40 00 ?? call dword ds:[function 0x0040b318]
  
  L63: 3b f4 ?? cmp esi, esp
   e8 19 06 00 00 ?? call function 0x00402500
  
  L64: eb 2d ?? jmp 0x00401f16
   c7 45 fc 00 00 00 00 ?? mov dword ss:[ebp + 0xfc<252,-4>], 0
  
  L65: 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 1c b3 40 00 ?? call dword ds:[function 0x0040b31c]
  
  L66: 3b f4 ?? cmp esi, esp
   e8 f7 05 00 00 ?? call function 0x00402500
  
  L67: c7 45 fc 00 00 00 00 ?? mov dword ss:[ebp + 0xfc<252,-4>], 0
   b8 1d 1f 40 00 ?? mov eax, basic block L68
   c3 ?? ret
  
  L68: 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 1c b3 40 00 ?? call dword ds:[function 0x0040b31c]
  
  L69: 3b f4 ?? cmp esi, esp
   e8 c3 05 00 00 ?? call function 0x00402500
  
  L70: 8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   89 45 b8 ?? mov dword ss:[ebp + 0xb8<184,-72>], eax
   c7 45 fc ff ff ff ff ?? mov dword ss:[ebp + 0xfc<252,-4>], 0xffffffff<4294967295,-1>
   8d 4d d0 ?? lea ecx, ss:[ebp + 0xd0<208,-48>]
   e8 17 f1 ff ff ?? call function 0x00401069
  
  L71: 8b 45 b8 ?? mov eax, dword ss:[ebp + 0xb8<184,-72>]
   52 ?? push edx
   8b cd ?? mov ecx, ebp
   50 ?? push eax
   8d 15 88 1f 40 00 ?? lea edx, ds:[0x00401f88]
   e8 cc 05 00 00 ?? call function 0x00402530
  
  L72: 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
   81 c4 98 00 00 00 ?? add esp, 0x00000098<152>
   3b ec ?? cmp ebp, esp
   e8 7f 05 00 00 ?? call function 0x00402500
  
  L73: 8b e5 ?? mov esp, ebp
   5d ?? pop ebp
   c3 ?? ret
  
  