Disassembly: 
  L1: 55 ?? push ebp
   8b ec ?? mov ebp, esp
   6a ff ?? push 0xff<255,-1>
   68 6d 4c 40 00 ?? push 0x00404c6d
   64 a1 00 00 00 00 ?? mov eax, dword fs:[0]
   50 ?? push eax
   83 ec 20 ?? sub esp, 0x20<32>
   53 ?? push ebx
   56 ?? push esi
   57 ?? push edi
   a1 04 90 40 00 ?? mov eax, dword ds:[0x00409004]
   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
   8b 75 0c ?? mov esi, dword ss:[ebp + 12]
   33 c0 ?? xor eax, eax
   89 45 ec ?? mov dword ss:[ebp + 0xec<236,-20>], eax
   89 45 e4 ?? mov dword ss:[ebp + 0xe4<228,-28>], eax
   8d 4e 01 ?? lea ecx, ds:[esi + 1]
   0f 1f 80 00 00 00 00 ?? nop dword ds:[eax + 0]
  
  L2: 8a 06 ?? mov al, byte ds:[esi]
   46 ?? inc esi
   84 c0 ?? test al, al
  
  L3: 75 f9 ?? jne basic block L2
  
  L4: 8b 5d 08 ?? mov ebx, dword ss:[ebp + 8]
   2b f1 ?? sub esi, ecx
   89 75 e8 ?? mov dword ss:[ebp + 0xe8<232,-24>], esi
   8b 03 ?? mov eax, dword ds:[ebx]
   8b 48 04 ?? mov ecx, dword ds:[eax + 4]
   03 cb ?? add ecx, ebx
   ff 15 98 a0 40 00 ?? call dword ds:[function 0x0040a098]
  
  L5: 85 d2 ?? test edx, edx
   7c 36 ?? jl basic block L14
  
  L6: 7f 04 ?? jg basic block L8
  
  L7: 85 c0 ?? test eax, eax
   74 30 ?? je basic block L14
  
  L8: 8b 03 ?? mov eax, dword ds:[ebx]
   8b 48 04 ?? mov ecx, dword ds:[eax + 4]
   03 cb ?? add ecx, ebx
   ff 15 98 a0 40 00 ?? call dword ds:[function 0x0040a098]
  
  L9: 85 d2 ?? test edx, edx
   7c 1f ?? jl basic block L14
  
  L10: 7f 04 ?? jg basic block L12
  
  L11: 3b c6 ?? cmp eax, esi
   76 19 ?? jbe basic block L14
  
  L12: 8b 03 ?? mov eax, dword ds:[ebx]
   8b 48 04 ?? mov ecx, dword ds:[eax + 4]
   03 cb ?? add ecx, ebx
   ff 15 98 a0 40 00 ?? call dword ds:[function 0x0040a098]
  
  L13: 8b f0 ?? mov esi, eax
   8b fa ?? mov edi, edx
   2b 75 e8 ?? sub esi, dword ss:[ebp + 0xe8<232,-24>]
   83 df 00 ?? sbb edi, 0
   eb 0e ?? jmp basic block L15
  
  L14: 0f 57 c0 ?? xorps xmm0, xmm0
   66 0f 13 45 d4 ?? movlpd double ss:[ebp + 0xd4<212,-44>], xmm0
   8b 7d d8 ?? mov edi, dword ss:[ebp + 0xd8<216,-40>]
   8b 75 d4 ?? mov esi, dword ss:[ebp + 0xd4<212,-44>]
  
  L15: 53 ?? push ebx
   8d 4d dc ?? lea ecx, ss:[ebp + 0xdc<220,-36>]
   e8 29 fb ff ff ?? call function 0x00401186
  
  L16: 80 7d e0 00 ?? cmp byte ss:[ebp + 0xe0<224,-32>], 0
   c7 45 fc 00 00 00 00 ?? mov dword ss:[ebp + 0xfc<252,-4>], 0
   75 0a ?? jne basic block L18
  
  L17: be 04 00 00 00 ?? mov esi, 4
   e9 12 01 00 00 ?? jmp basic block L51
  
  L18: 8b 03 ?? mov eax, dword ds:[ebx]
   c6 45 fc 01 ?? mov byte ss:[ebp + 0xfc<252,-4>], 1
   8b 48 04 ?? mov ecx, dword ds:[eax + 4]
   03 cb ?? add ecx, ebx
   ff 15 9c a0 40 00 ?? call dword ds:[function 0x0040a09c]
  
  L19: 25 c0 01 00 00 ?? and eax, 0x000001c0<448>
   83 f8 40 ?? cmp eax, 0x40<64>
   74 46 ?? je basic block L30
  
  L20: 90 ?? nop
  
  L21: 85 ff ?? test edi, edi
   7c 41 ?? jl basic block L30
  
  L22: 7f 04 ?? jg basic block L24
  
  L23: 85 f6 ?? test esi, esi
   74 3b ?? je basic block L30
  
  L24: 8b 03 ?? mov eax, dword ds:[ebx]
   8b 48 04 ?? mov ecx, dword ds:[eax + 4]
   03 cb ?? add ecx, ebx
   ff 15 7c a0 40 00 ?? call dword ds:[function 0x0040a07c]
  
  L25: 0f b6 c0 ?? movzx eax, al
   50 ?? push eax
   8b 03 ?? mov eax, dword ds:[ebx]
   8b 48 04 ?? mov ecx, dword ds:[eax + 4]
   03 cb ?? add ecx, ebx
   ff 15 80 a0 40 00 ?? call dword ds:[function 0x0040a080]
  
  L26: 8b c8 ?? mov ecx, eax
   ff 15 90 a0 40 00 ?? call dword ds:[function 0x0040a090]
  
  L27: 83 f8 ff ?? cmp eax, 0xff<255,-1>
   75 08 ?? jne basic block L29
  
  L28: 8d 70 05 ?? lea esi, ds:[eax + 5]
   e9 7f 00 00 00 ?? jmp basic block L45
  
  L29: 83 c6 ff ?? add esi, 0xff<255,-1>
   83 d7 ff ?? adc edi, 0xff<255,-1>
   eb bb ?? jmp basic block L21
  
  L30: 8b 03 ?? mov eax, dword ds:[ebx]
   6a 00 ?? push 0
   ff 75 e8 ?? push dword ss:[ebp + 0xe8<232,-24>]
   8b 48 04 ?? mov ecx, dword ds:[eax + 4]
   ff 75 0c ?? push dword ss:[ebp + 12]
   03 cb ?? add ecx, ebx
   ff 15 80 a0 40 00 ?? call dword ds:[function 0x0040a080]
  
  L31: 8b c8 ?? mov ecx, eax
   ff 15 8c a0 40 00 ?? call dword ds:[function 0x0040a08c]
  
  L32: 3b 45 e8 ?? cmp eax, dword ss:[ebp + 0xe8<232,-24>]
   75 04 ?? jne basic block L34
  
  L33: 85 d2 ?? test edx, edx
   74 09 ?? je basic block L35
  
  L34: 33 c0 ?? xor eax, eax
   83 c8 04 ?? or eax, 4
   8b f0 ?? mov esi, eax
   eb 48 ?? jmp basic block L45
  
  L35: 85 ff ?? test edi, edi
   7c 41 ?? jl basic block L44
  
  L36: 7f 04 ?? jg basic block L38
  
  L37: 85 f6 ?? test esi, esi
   74 3b ?? je basic block L44
  
  L38: 8b 03 ?? mov eax, dword ds:[ebx]
   8b 48 04 ?? mov ecx, dword ds:[eax + 4]
   03 cb ?? add ecx, ebx
   ff 15 7c a0 40 00 ?? call dword ds:[function 0x0040a07c]
  
  L39: 0f b6 c0 ?? movzx eax, al
   50 ?? push eax
   8b 03 ?? mov eax, dword ds:[ebx]
   8b 48 04 ?? mov ecx, dword ds:[eax + 4]
   03 cb ?? add ecx, ebx
   ff 15 80 a0 40 00 ?? call dword ds:[function 0x0040a080]
  
  L40: 8b c8 ?? mov ecx, eax
   ff 15 90 a0 40 00 ?? call dword ds:[function 0x0040a090]
  
  L41: 83 f8 ff ?? cmp eax, 0xff<255,-1>
   75 08 ?? jne basic block L43
  
  L42: 8b 75 ec ?? mov esi, dword ss:[ebp + 0xec<236,-20>]
   83 ce 04 ?? or esi, 4
   eb 0b ?? jmp basic block L45
  
  L43: 83 c6 ff ?? add esi, 0xff<255,-1>
   83 d7 ff ?? adc edi, 0xff<255,-1>
   eb bb ?? jmp basic block L35
  
  L44: 8b 75 ec ?? mov esi, dword ss:[ebp + 0xec<236,-20>]
  
  L45: 8b 03 ?? mov eax, dword ds:[ebx]
   6a 00 ?? push 0
   6a 00 ?? push 0
   8b 48 04 ?? mov ecx, dword ds:[eax + 4]
   03 cb ?? add ecx, ebx
   ff 15 94 a0 40 00 ?? call dword ds:[function 0x0040a094]
  
  L46: eb 20 ?? jmp basic block L50
  
  L47: 8b 55 08 ?? mov edx, dword ss:[ebp + 8]
   6a 01 ?? push 1
   6a 04 ?? push 4
   8b 02 ?? mov eax, dword ds:[edx]
   8b 48 04 ?? mov ecx, dword ds:[eax + 4]
   03 ca ?? add ecx, edx
   ff 15 88 a0 40 00 ?? call dword ds:[function 0x0040a088]
  
  L48: b8 79 17 40 00 ?? mov eax, basic block L49
   c3 ?? ret
  
  L49: 8b 5d 08 ?? mov ebx, dword ss:[ebp + 8]
   8b 75 e4 ?? mov esi, dword ss:[ebp + 0xe4<228,-28>]
  
  L50: c7 45 fc 00 00 00 00 ?? mov dword ss:[ebp + 0xfc<252,-4>], 0
  
  L51: 8b 03 ?? mov eax, dword ds:[ebx]
   6a 00 ?? push 0
   56 ?? push esi
   8b 48 04 ?? mov ecx, dword ds:[eax + 4]
   03 cb ?? add ecx, ebx
   ff 15 88 a0 40 00 ?? call dword ds:[function 0x0040a088]
  
  L52: e8 b8 07 00 00 ?? call function 0x00401f53
  
  L53: 84 c0 ?? test al, al
   75 09 ?? jne basic block L55
  
  L54: 8b 4d dc ?? mov ecx, dword ss:[ebp + 0xdc<220,-36>]
   ff 15 74 a0 40 00 ?? call dword ds:[function 0x0040a074]
  
  L55: 8b 55 dc ?? mov edx, dword ss:[ebp + 0xdc<220,-36>]
   c7 45 fc 03 00 00 00 ?? mov dword ss:[ebp + 0xfc<252,-4>], 3
   8b 02 ?? mov eax, dword ds:[edx]
   8b 48 04 ?? mov ecx, dword ds:[eax + 4]
   03 ca ?? add ecx, edx
   ff 15 80 a0 40 00 ?? call dword ds:[function 0x0040a080]
  
  L56: 85 c0 ?? test eax, eax
   74 07 ?? je basic block L58
  
  L57: 8b 10 ?? mov edx, dword ds:[eax]
   8b c8 ?? mov ecx, eax
   ff 52 08 ?? call dword ds:[edx + 8]
  
  L58: 8b c3 ?? mov eax, ebx
   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
  
  