Disassembly: 
  L1: 8b ff ?? mov edi, edi
   55 ?? push ebp
   8b ec ?? mov ebp, esp
   83 ec 38 ?? sub esp, 0x38<56>
   53 ?? push ebx
   57 ?? push edi
   ff 75 08 ?? push dword ss:[ebp + 8]
   8d 4d c8 ?? lea ecx, ss:[ebp + 0xc8<200,-56>]
   e8 70 f4 fe ff ?? call function 0x00406e0d
  
  L2: 8b 45 10 ?? mov eax, dword ss:[ebp + 0x10<16>]
   8b 7d 0c ?? mov edi, dword ss:[ebp + 12]
   33 db ?? xor ebx, ebx
   3b c3 ?? cmp eax, ebx
   74 02 ?? je basic block L4
  
  L3: 89 38 ?? mov dword ds:[eax], edi
  
  L4: 3b fb ?? cmp edi, ebx
   75 2d ?? jne basic block L10
  
  L5: e8 e5 fa fe ff ?? call function 0x00407499
  
  L6: 53 ?? push ebx
   53 ?? push ebx
   53 ?? push ebx
   53 ?? push ebx
   53 ?? push ebx
   c7 00 16 00 00 00 ?? mov dword ds:[eax], 0x00000016<22>
   e8 d9 14 ff ff ?? call function 0x00408e9d
  
  L7: 83 c4 14 ?? add esp, 0x14<20>
   38 5d d4 ?? cmp byte ss:[ebp + 0xd4<212,-44>], bl
   74 07 ?? je basic block L9
  
  L8: 8b 45 d0 ?? mov eax, dword ss:[ebp + 0xd0<208,-48>]
   83 60 70 fd ?? and dword ds:[eax + 0x70<112>], 0xfd<253,-3>
  
  L9: 33 c0 ?? xor eax, eax
   33 d2 ?? xor edx, edx
   e9 3f 02 00 00 ?? jmp basic block L83
  
  L10: 39 5d 14 ?? cmp dword ss:[ebp + 0x14<20>], ebx
   74 0c ?? je basic block L13
  
  L11: 83 7d 14 02 ?? cmp dword ss:[ebp + 0x14<20>], 2
   7c c8 ?? jl basic block L5
  
  L12: 83 7d 14 24 ?? cmp dword ss:[ebp + 0x14<20>], 0x24<36>
   7f c2 ?? jg basic block L5
  
  L13: 56 ?? push esi
   8b 75 c8 ?? mov esi, dword ss:[ebp + 0xc8<200,-56>]
   89 5d f0 ?? mov dword ss:[ebp + 0xf0<240,-16>], ebx
   89 5d f4 ?? mov dword ss:[ebp + 0xf4<244,-12>], ebx
  
  L14: 8a 07 ?? mov al, byte ds:[edi]
   47 ?? inc edi
   83 be ac 00 00 00 01 ?? cmp dword ds:[esi + 0x000000ac<172>], 1
   88 45 ff ?? mov byte ss:[ebp + 0xff<255,-1>], al
   7e 18 ?? jle basic block L17
  
  L15: 8d 45 c8 ?? lea eax, ss:[ebp + 0xc8<200,-56>]
   50 ?? push eax
   0f b6 45 ff ?? movzx eax, byte ss:[ebp + 0xff<255,-1>]
   6a 08 ?? push 8
   50 ?? push eax
   e8 e8 e7 ff ff ?? call function 0x004161fe
  
  L16: 8b 75 c8 ?? mov esi, dword ss:[ebp + 0xc8<200,-56>]
   83 c4 0c ?? add esp, 12
   eb 11 ?? jmp basic block L18
  
  L17: 0f b6 45 ff ?? movzx eax, byte ss:[ebp + 0xff<255,-1>]
   8b 8e c8 00 00 00 ?? mov ecx, dword ds:[esi + 0x000000c8<200>]
   0f b7 04 41 ?? movzx eax, word ds:[ecx + eax * 2]
   83 e0 08 ?? and eax, 8
  
  L18: 3b c3 ?? cmp eax, ebx
   75 c4 ?? jne basic block L14
  
  L19: 80 7d ff 2d ?? cmp byte ss:[ebp + 0xff<255,-1>], 0x2d<45>
   89 7d f8 ?? mov dword ss:[ebp + 0xf8<248,-8>], edi
   75 06 ?? jne basic block L21
  
  L20: 83 4d 18 02 ?? or dword ss:[ebp + 0x18<24>], 2
   eb 06 ?? jmp basic block L22
  
  L21: 80 7d ff 2b ?? cmp byte ss:[ebp + 0xff<255,-1>], 0x2b<43>
   75 09 ?? jne basic block L23
  
  L22: 8a 07 ?? mov al, byte ds:[edi]
   47 ?? inc edi
   89 7d f8 ?? mov dword ss:[ebp + 0xf8<248,-8>], edi
   88 45 ff ?? mov byte ss:[ebp + 0xff<255,-1>], al
  
  L23: 6a 10 ?? push 0x10<16>
   59 ?? pop ecx
   39 5d 14 ?? cmp dword ss:[ebp + 0x14<20>], ebx
   75 25 ?? jne basic block L30
  
  L24: 80 7d ff 30 ?? cmp byte ss:[ebp + 0xff<255,-1>], 0x30<48>
   74 09 ?? je basic block L26
  
  L25: c7 45 14 0a 00 00 00 ?? mov dword ss:[ebp + 0x14<20>], 10
   eb 35 ?? jmp basic block L35
  
  L26: 8a 07 ?? mov al, byte ds:[edi]
   3c 78 ?? cmp al, 0x78<120>
   74 0d ?? je basic block L29
  
  L27: 3c 58 ?? cmp al, 0x58<88>
   74 09 ?? je basic block L29
  
  L28: c7 45 14 08 00 00 00 ?? mov dword ss:[ebp + 0x14<20>], 8
   eb 22 ?? jmp basic block L35
  
  L29: 89 4d 14 ?? mov dword ss:[ebp + 0x14<20>], ecx
  
  L30: 39 4d 14 ?? cmp dword ss:[ebp + 0x14<20>], ecx
   75 1a ?? jne basic block L35
  
  L31: 80 7d ff 30 ?? cmp byte ss:[ebp + 0xff<255,-1>], 0x30<48>
   75 14 ?? jne basic block L35
  
  L32: 8a 07 ?? mov al, byte ds:[edi]
   3c 78 ?? cmp al, 0x78<120>
   74 04 ?? je basic block L34
  
  L33: 3c 58 ?? cmp al, 0x58<88>
   75 0a ?? jne basic block L35
  
  L34: 47 ?? inc edi
   8a 07 ?? mov al, byte ds:[edi]
   47 ?? inc edi
   88 45 ff ?? mov byte ss:[ebp + 0xff<255,-1>], al
   89 7d f8 ?? mov dword ss:[ebp + 0xf8<248,-8>], edi
  
  L35: 8b 45 14 ?? mov eax, dword ss:[ebp + 0x14<20>]
   99 ?? cdq
   52 ?? push edx
   8b f8 ?? mov edi, eax
   57 ?? push edi
   6a ff ?? push 0xff<255,-1>
   6a ff ?? push 0xff<255,-1>
   89 55 dc ?? mov dword ss:[ebp + 0xdc<220,-36>], edx
   e8 1f e5 ff ff ?? call function 0x00415fd0
  
  L36: 89 5d e4 ?? mov dword ss:[ebp + 0xe4<228,-28>], ebx
   8b 9e c8 00 00 00 ?? mov ebx, dword ds:[esi + 0x000000c8<200>]
   89 4d e0 ?? mov dword ss:[ebp + 0xe0<224,-32>], ecx
   89 45 e8 ?? mov dword ss:[ebp + 0xe8<232,-24>], eax
   89 55 ec ?? mov dword ss:[ebp + 0xec<236,-20>], edx
  
  L37: 8a 4d ff ?? mov cl, byte ss:[ebp + 0xff<255,-1>]
   0f b6 c1 ?? movzx eax, cl
   0f b7 04 43 ?? movzx eax, word ds:[ebx + eax * 2]
   a8 04 ?? test al, 4
   74 08 ?? je basic block L39
  
  L38: 0f be f1 ?? movsx esi, cl
   83 ee 30 ?? sub esi, 0x30<48>
   eb 18 ?? jmp basic block L43
  
  L39: a9 03 01 00 00 ?? test eax, 0x00000103<259>
   74 51 ?? je basic block L53
  
  L40: 8a c1 ?? mov al, cl
   2c 61 ?? sub al, 0x61<97>
   3c 19 ?? cmp al, 0x19<25>
   0f be c1 ?? movsx eax, cl
   77 03 ?? ja basic block L42
  
  L41: 83 e8 20 ?? sub eax, 0x20<32>
  
  L42: 8d 70 c9 ?? lea esi, ds:[eax + 0xc9<201,-55>]
  
  L43: 3b 75 14 ?? cmp esi, dword ss:[ebp + 0x14<20>]
   73 3b ?? jae basic block L53
  
  L44: 8b 4d f4 ?? mov ecx, dword ss:[ebp + 0xf4<244,-12>]
   83 4d 18 08 ?? or dword ss:[ebp + 0x18<24>], 8
   3b 4d ec ?? cmp ecx, dword ss:[ebp + 0xec<236,-20>]
   72 51 ?? jb basic block L57
  
  L45: 77 08 ?? ja basic block L47
  
  L46: 8b 45 f0 ?? mov eax, dword ss:[ebp + 0xf0<240,-16>]
   3b 45 e8 ?? cmp eax, dword ss:[ebp + 0xe8<232,-24>]
   72 47 ?? jb basic block L57
  
  L47: 8b 45 e8 ?? mov eax, dword ss:[ebp + 0xe8<232,-24>]
   39 45 f0 ?? cmp dword ss:[ebp + 0xf0<240,-16>], eax
   75 13 ?? jne basic block L52
  
  L48: 3b 4d ec ?? cmp ecx, dword ss:[ebp + 0xec<236,-20>]
   75 0e ?? jne basic block L52
  
  L49: 33 c0 ?? xor eax, eax
   3b 45 e4 ?? cmp eax, dword ss:[ebp + 0xe4<228,-28>]
   72 33 ?? jb basic block L57
  
  L50: 77 05 ?? ja basic block L52
  
  L51: 3b 75 e0 ?? cmp esi, dword ss:[ebp + 0xe0<224,-32>]
   76 2c ?? jbe basic block L57
  
  L52: 83 4d 18 04 ?? or dword ss:[ebp + 0x18<24>], 4
   83 7d 10 00 ?? cmp dword ss:[ebp + 0x10<16>], 0
   75 3b ?? jne basic block L59
  
  L53: 8b 45 18 ?? mov eax, dword ss:[ebp + 0x18<24>]
   ff 4d f8 ?? dec dword ss:[ebp + 0xf8<248,-8>]
   a8 08 ?? test al, 8
   75 41 ?? jne basic block L60
  
  L54: 33 c0 ?? xor eax, eax
   39 45 10 ?? cmp dword ss:[ebp + 0x10<16>], eax
   74 06 ?? je basic block L56
  
  L55: 8b 4d 0c ?? mov ecx, dword ss:[ebp + 12]
   89 4d f8 ?? mov dword ss:[ebp + 0xf8<248,-8>], ecx
  
  L56: 89 45 f0 ?? mov dword ss:[ebp + 0xf0<240,-16>], eax
   89 45 f4 ?? mov dword ss:[ebp + 0xf4<244,-12>], eax
   e9 8f 00 00 00 ?? jmp basic block L76
  
  L57: 51 ?? push ecx
   ff 75 f0 ?? push dword ss:[ebp + 0xf0<240,-16>]
   ff 75 dc ?? push dword ss:[ebp + 0xdc<220,-36>]
   57 ?? push edi
   e8 10 e5 ff ff ?? call function 0x00416070
  
  L58: 33 c9 ?? xor ecx, ecx
   03 c6 ?? add eax, esi
   13 d1 ?? adc edx, ecx
   89 45 f0 ?? mov dword ss:[ebp + 0xf0<240,-16>], eax
   89 55 f4 ?? mov dword ss:[ebp + 0xf4<244,-12>], edx
  
  L59: 8b 45 f8 ?? mov eax, dword ss:[ebp + 0xf8<248,-8>]
   8a 00 ?? mov al, byte ds:[eax]
   ff 45 f8 ?? inc dword ss:[ebp + 0xf8<248,-8>]
   88 45 ff ?? mov byte ss:[ebp + 0xff<255,-1>], al
   e9 47 ff ff ff ?? jmp basic block L37
  
  L60: be ff ff ff 7f ?? mov esi, 0x7fffffff
   bb 00 00 00 80 ?? mov ebx, 0x80000000
   a8 04 ?? test al, 4
   75 27 ?? jne basic block L70
  
  L61: a8 01 ?? test al, 1
   75 54 ?? jne basic block L76
  
  L62: 83 e0 02 ?? and eax, 2
   74 0d ?? je basic block L66
  
  L63: 39 5d f4 ?? cmp dword ss:[ebp + 0xf4<244,-12>], ebx
   77 19 ?? ja basic block L70
  
  L64: 72 06 ?? jb basic block L66
  
  L65: 83 7d f0 00 ?? cmp dword ss:[ebp + 0xf0<240,-16>], 0
   77 11 ?? ja basic block L70
  
  L66: 85 c0 ?? test eax, eax
   75 3e ?? jne basic block L76
  
  L67: 39 75 f4 ?? cmp dword ss:[ebp + 0xf4<244,-12>], esi
   72 39 ?? jb basic block L76
  
  L68: 77 06 ?? ja basic block L70
  
  L69: 83 7d f0 ff ?? cmp dword ss:[ebp + 0xf0<240,-16>], 0xff<255,-1>
   76 31 ?? jbe basic block L76
  
  L70: e8 e3 f8 fe ff ?? call function 0x00407499
  
  L71: f6 45 18 01 ?? test byte ss:[ebp + 0x18<24>], 1
   c7 00 22 00 00 00 ?? mov dword ds:[eax], 0x00000022<34>
   74 0a ?? je basic block L73
  
  L72: 83 4d f0 ff ?? or dword ss:[ebp + 0xf0<240,-16>], 0xff<255,-1>
   83 4d f4 ff ?? or dword ss:[ebp + 0xf4<244,-12>], 0xff<255,-1>
   eb 16 ?? jmp basic block L76
  
  L73: f6 45 18 02 ?? test byte ss:[ebp + 0x18<24>], 2
   74 09 ?? je basic block L75
  
  L74: 83 65 f0 00 ?? and dword ss:[ebp + 0xf0<240,-16>], 0
   89 5d f4 ?? mov dword ss:[ebp + 0xf4<244,-12>], ebx
   eb 07 ?? jmp basic block L76
  
  L75: 83 4d f0 ff ?? or dword ss:[ebp + 0xf0<240,-16>], 0xff<255,-1>
   89 75 f4 ?? mov dword ss:[ebp + 0xf4<244,-12>], esi
  
  L76: 8b 45 10 ?? mov eax, dword ss:[ebp + 0x10<16>]
   5e ?? pop esi
   85 c0 ?? test eax, eax
   74 05 ?? je basic block L78
  
  L77: 8b 4d f8 ?? mov ecx, dword ss:[ebp + 0xf8<248,-8>]
   89 08 ?? mov dword ds:[eax], ecx
  
  L78: f6 45 18 02 ?? test byte ss:[ebp + 0x18<24>], 2
   74 13 ?? je basic block L80
  
  L79: 8b 45 f0 ?? mov eax, dword ss:[ebp + 0xf0<240,-16>]
   8b 4d f4 ?? mov ecx, dword ss:[ebp + 0xf4<244,-12>]
   f7 d8 ?? neg eax
   83 d1 00 ?? adc ecx, 0
   f7 d9 ?? neg ecx
   89 45 f0 ?? mov dword ss:[ebp + 0xf0<240,-16>], eax
   89 4d f4 ?? mov dword ss:[ebp + 0xf4<244,-12>], ecx
  
  L80: 80 7d d4 00 ?? cmp byte ss:[ebp + 0xd4<212,-44>], 0
   74 07 ?? je basic block L82
  
  L81: 8b 45 d0 ?? mov eax, dword ss:[ebp + 0xd0<208,-48>]
   83 60 70 fd ?? and dword ds:[eax + 0x70<112>], 0xfd<253,-3>
  
  L82: 8b 45 f0 ?? mov eax, dword ss:[ebp + 0xf0<240,-16>]
   8b 55 f4 ?? mov edx, dword ss:[ebp + 0xf4<244,-12>]
  
  L83: 5f ?? pop edi
   5b ?? pop ebx
   c9 ?? leave
   c3 ?? ret
  
  