Disassembly: 
  L1: 8b ff ?? mov edi, edi
   55 ?? push ebp
   8b ec ?? mov ebp, esp
   83 ec 14 ?? sub esp, 0x14<20>
   56 ?? push esi
   57 ?? push edi
   ff 75 08 ?? push dword ss:[ebp + 8]
   8d 4d ec ?? lea ecx, ss:[ebp + 0xec<236,-20>]
   e8 d3 5c ff ff ?? call function 0x0040a1c9
  
  L2: 8b 45 10 ?? mov eax, dword ss:[ebp + 0x10<16>]
   8b 75 0c ?? mov esi, dword ss:[ebp + 12]
   33 ff ?? xor edi, edi
   3b c7 ?? cmp eax, edi
   74 02 ?? je basic block L4
  
  L3: 89 30 ?? mov dword ds:[eax], esi
  
  L4: 3b f7 ?? cmp esi, edi
   75 2c ?? jne basic block L10
  
  L5: e8 4d 49 ff ff ?? call function 0x00408e5a
  
  L6: 57 ?? push edi
   57 ?? push edi
   57 ?? push edi
   57 ?? push edi
   57 ?? push edi
   c7 00 16 00 00 00 ?? mov dword ds:[eax], 0x00000016<22>
   e8 7b ee fe ff ?? call function 0x00403398
  
  L7: 83 c4 14 ?? add esp, 0x14<20>
   80 7d f8 00 ?? cmp byte ss:[ebp + 0xf8<248,-8>], 0
   74 07 ?? je basic block L9
  
  L8: 8b 45 f4 ?? mov eax, dword ss:[ebp + 0xf4<244,-12>]
   83 60 70 fd ?? and dword ds:[eax + 0x70<112>], 0xfd<253,-3>
  
  L9: 33 c0 ?? xor eax, eax
   e9 d8 01 00 00 ?? jmp basic block L80
  
  L10: 39 7d 14 ?? cmp dword ss:[ebp + 0x14<20>], edi
   74 0c ?? je basic block L13
  
  L11: 83 7d 14 02 ?? cmp dword ss:[ebp + 0x14<20>], 2
   7c c9 ?? jl basic block L5
  
  L12: 83 7d 14 24 ?? cmp dword ss:[ebp + 0x14<20>], 0x24<36>
   7f c3 ?? jg basic block L5
  
  L13: 8b 4d ec ?? mov ecx, dword ss:[ebp + 0xec<236,-20>]
   53 ?? push ebx
   8a 1e ?? mov bl, byte ds:[esi]
   89 7d fc ?? mov dword ss:[ebp + 0xfc<252,-4>], edi
   8d 7e 01 ?? lea edi, ds:[esi + 1]
  
  L14: 83 b9 ac 00 00 00 01 ?? cmp dword ds:[ecx + 0x000000ac<172>], 1
   7e 17 ?? jle basic block L17
  
  L15: 8d 45 ec ?? lea eax, ss:[ebp + 0xec<236,-20>]
   50 ?? push eax
   0f b6 c3 ?? movzx eax, bl
   6a 08 ?? push 8
   50 ?? push eax
   e8 60 05 00 00 ?? call function 0x00414ac9
  
  L16: 8b 4d ec ?? mov ecx, dword ss:[ebp + 0xec<236,-20>]
   83 c4 0c ?? add esp, 12
   eb 10 ?? jmp basic block L18
  
  L17: 8b 91 c8 00 00 00 ?? mov edx, dword ds:[ecx + 0x000000c8<200>]
   0f b6 c3 ?? movzx eax, bl
   0f b7 04 42 ?? movzx eax, word ds:[edx + eax * 2]
   83 e0 08 ?? and eax, 8
  
  L18: 85 c0 ?? test eax, eax
   74 05 ?? je basic block L20
  
  L19: 8a 1f ?? mov bl, byte ds:[edi]
   47 ?? inc edi
   eb c7 ?? jmp basic block L14
  
  L20: 80 fb 2d ?? cmp bl, 0x2d<45>
   75 06 ?? jne basic block L22
  
  L21: 83 4d 18 02 ?? or dword ss:[ebp + 0x18<24>], 2
   eb 05 ?? jmp basic block L23
  
  L22: 80 fb 2b ?? cmp bl, 0x2b<43>
   75 03 ?? jne basic block L24
  
  L23: 8a 1f ?? mov bl, byte ds:[edi]
   47 ?? inc edi
  
  L24: 8b 45 14 ?? mov eax, dword ss:[ebp + 0x14<20>]
   85 c0 ?? test eax, eax
   0f 8c 4b 01 00 00 ?? jl basic block L74
  
  L25: 83 f8 01 ?? cmp eax, 1
   0f 84 42 01 00 00 ?? je basic block L74
  
  L26: 83 f8 24 ?? cmp eax, 0x24<36>
   0f 8f 39 01 00 00 ?? jg basic block L74
  
  L27: 85 c0 ?? test eax, eax
   75 2a ?? jne basic block L34
  
  L28: 80 fb 30 ?? cmp bl, 0x30<48>
   74 09 ?? je basic block L30
  
  L29: c7 45 14 0a 00 00 00 ?? mov dword ss:[ebp + 0x14<20>], 10
   eb 34 ?? jmp basic block L39
  
  L30: 8a 07 ?? mov al, byte ds:[edi]
   3c 78 ?? cmp al, 0x78<120>
   74 0d ?? je basic block L33
  
  L31: 3c 58 ?? cmp al, 0x58<88>
   74 09 ?? je basic block L33
  
  L32: c7 45 14 08 00 00 00 ?? mov dword ss:[ebp + 0x14<20>], 8
   eb 21 ?? jmp basic block L39
  
  L33: c7 45 14 10 00 00 00 ?? mov dword ss:[ebp + 0x14<20>], 0x00000010<16>
   eb 0a ?? jmp basic block L36
  
  L34: 83 f8 10 ?? cmp eax, 0x10<16>
   75 13 ?? jne basic block L39
  
  L35: 80 fb 30 ?? cmp bl, 0x30<48>
   75 0e ?? jne basic block L39
  
  L36: 8a 07 ?? mov al, byte ds:[edi]
   3c 78 ?? cmp al, 0x78<120>
   74 04 ?? je basic block L38
  
  L37: 3c 58 ?? cmp al, 0x58<88>
   75 04 ?? jne basic block L39
  
  L38: 47 ?? inc edi
   8a 1f ?? mov bl, byte ds:[edi]
   47 ?? inc edi
  
  L39: 8b b1 c8 00 00 00 ?? mov esi, dword ds:[ecx + 0x000000c8<200>]
   b8 ff ff ff ff ?? mov eax, 0xffffffff<4294967295,-1>
   33 d2 ?? xor edx, edx
   f7 75 14 ?? div dword ss:[ebp + 0x14<20>]
  
  L40: 0f b6 cb ?? movzx ecx, bl
   0f b7 0c 4e ?? movzx ecx, word ds:[esi + ecx * 2]
   f6 c1 04 ?? test cl, 4
   74 08 ?? je basic block L42
  
  L41: 0f be cb ?? movsx ecx, bl
   83 e9 30 ?? sub ecx, 0x30<48>
   eb 1b ?? jmp basic block L46
  
  L42: f7 c1 03 01 00 00 ?? test ecx, 0x00000103<259>
   74 31 ?? je basic block L51
  
  L43: 8a cb ?? mov cl, bl
   80 e9 61 ?? sub cl, 0x61<97>
   80 f9 19 ?? cmp cl, 0x19<25>
   0f be cb ?? movsx ecx, bl
   77 03 ?? ja basic block L45
  
  L44: 83 e9 20 ?? sub ecx, 0x20<32>
  
  L45: 83 c1 c9 ?? add ecx, 0xc9<201,-55>
  
  L46: 3b 4d 14 ?? cmp ecx, dword ss:[ebp + 0x14<20>]
   73 19 ?? jae basic block L51
  
  L47: 83 4d 18 08 ?? or dword ss:[ebp + 0x18<24>], 8
   39 45 fc ?? cmp dword ss:[ebp + 0xfc<252,-4>], eax
   72 27 ?? jb basic block L55
  
  L48: 75 04 ?? jne basic block L50
  
  L49: 3b ca ?? cmp ecx, edx
   76 21 ?? jbe basic block L55
  
  L50: 83 4d 18 04 ?? or dword ss:[ebp + 0x18<24>], 4
   83 7d 10 00 ?? cmp dword ss:[ebp + 0x10<16>], 0
   75 23 ?? jne basic block L56
  
  L51: 8b 45 18 ?? mov eax, dword ss:[ebp + 0x18<24>]
   4f ?? dec edi
   a8 08 ?? test al, 8
   75 20 ?? jne basic block L57
  
  L52: 83 7d 10 00 ?? cmp dword ss:[ebp + 0x10<16>], 0
   74 03 ?? je basic block L54
  
  L53: 8b 7d 0c ?? mov edi, dword ss:[ebp + 12]
  
  L54: 83 65 fc 00 ?? and dword ss:[ebp + 0xfc<252,-4>], 0
   eb 5b ?? jmp basic block L67
  
  L55: 8b 5d fc ?? mov ebx, dword ss:[ebp + 0xfc<252,-4>]
   0f af 5d 14 ?? imul ebx, dword ss:[ebp + 0x14<20>]
   03 d9 ?? add ebx, ecx
   89 5d fc ?? mov dword ss:[ebp + 0xfc<252,-4>], ebx
  
  L56: 8a 1f ?? mov bl, byte ds:[edi]
   47 ?? inc edi
   eb 8b ?? jmp basic block L40
  
  L57: be ff ff ff 7f ?? mov esi, 0x7fffffff
   a8 04 ?? test al, 4
   75 1b ?? jne basic block L63
  
  L58: a8 01 ?? test al, 1
   75 3d ?? jne basic block L67
  
  L59: 83 e0 02 ?? and eax, 2
   74 09 ?? je basic block L61
  
  L60: 81 7d fc 00 00 00 80 ?? cmp dword ss:[ebp + 0xfc<252,-4>], 0x80000000
   77 09 ?? ja basic block L63
  
  L61: 85 c0 ?? test eax, eax
   75 2b ?? jne basic block L67
  
  L62: 39 75 fc ?? cmp dword ss:[ebp + 0xfc<252,-4>], esi
   76 26 ?? jbe basic block L67
  
  L63: e8 ac 47 ff ff ?? call function 0x00408e5a
  
  L64: f6 45 18 01 ?? test byte ss:[ebp + 0x18<24>], 1
   c7 00 22 00 00 00 ?? mov dword ds:[eax], 0x00000022<34>
   74 06 ?? je basic block L66
  
  L65: 83 4d fc ff ?? or dword ss:[ebp + 0xfc<252,-4>], 0xff<255,-1>
   eb 0f ?? jmp basic block L67
  
  L66: f6 45 18 02 ?? test byte ss:[ebp + 0x18<24>], 2
   6a 00 ?? push 0
   58 ?? pop eax
   0f 95 c0 ?? setne al
   03 c6 ?? add eax, esi
   89 45 fc ?? mov dword ss:[ebp + 0xfc<252,-4>], eax
  
  L67: 8b 45 10 ?? mov eax, dword ss:[ebp + 0x10<16>]
   85 c0 ?? test eax, eax
   74 02 ?? je basic block L69
  
  L68: 89 38 ?? mov dword ds:[eax], edi
  
  L69: f6 45 18 02 ?? test byte ss:[ebp + 0x18<24>], 2
   74 03 ?? je basic block L71
  
  L70: f7 5d fc ?? neg dword ss:[ebp + 0xfc<252,-4>]
  
  L71: 80 7d f8 00 ?? cmp byte ss:[ebp + 0xf8<248,-8>], 0
   74 07 ?? je basic block L73
  
  L72: 8b 45 f4 ?? mov eax, dword ss:[ebp + 0xf4<244,-12>]
   83 60 70 fd ?? and dword ds:[eax + 0x70<112>], 0xfd<253,-3>
  
  L73: 8b 45 fc ?? mov eax, dword ss:[ebp + 0xfc<252,-4>]
   eb 18 ?? jmp basic block L79
  
  L74: 8b 45 10 ?? mov eax, dword ss:[ebp + 0x10<16>]
   85 c0 ?? test eax, eax
   74 02 ?? je basic block L76
  
  L75: 89 30 ?? mov dword ds:[eax], esi
  
  L76: 80 7d f8 00 ?? cmp byte ss:[ebp + 0xf8<248,-8>], 0
   74 07 ?? je basic block L78
  
  L77: 8b 45 f4 ?? mov eax, dword ss:[ebp + 0xf4<244,-12>]
   83 60 70 fd ?? and dword ds:[eax + 0x70<112>], 0xfd<253,-3>
  
  L78: 33 c0 ?? xor eax, eax
  
  L79: 5b ?? pop ebx
  
  L80: 5f ?? pop edi
   5e ?? pop esi
   c9 ?? leave
   c3 ?? ret
  
  