Disassembly: 
  L1: 8b ff ?? mov edi, edi
   55 ?? push ebp
   8b ec ?? mov ebp, esp
   83 ec 18 ?? sub esp, 0x18<24>
   53 ?? push ebx
   56 ?? push esi
   ff 75 0c ?? push dword ss:[ebp + 12]
   8d 4d e8 ?? lea ecx, ss:[ebp + 0xe8<232,-24>]
   e8 0b 06 ff ff ?? call function 0x00408659
  
  L2: 8b 5d 08 ?? mov ebx, dword ss:[ebp + 8]
   be 00 01 00 00 ?? mov esi, 0x00000100<256>
   3b de ?? cmp ebx, esi
   73 54 ?? jae basic block L12
  
  L3: 8b 4d e8 ?? mov ecx, dword ss:[ebp + 0xe8<232,-24>]
   83 b9 ac 00 00 00 01 ?? cmp dword ds:[ecx + 0x000000ac<172>], 1
   7e 14 ?? jle basic block L6
  
  L4: 8d 45 e8 ?? lea eax, ss:[ebp + 0xe8<232,-24>]
   50 ?? push eax
   6a 01 ?? push 1
   53 ?? push ebx
   e8 dc e0 ff ff ?? call function 0x0041614e
  
  L5: 8b 4d e8 ?? mov ecx, dword ss:[ebp + 0xe8<232,-24>]
   83 c4 0c ?? add esp, 12
   eb 0d ?? jmp basic block L7
  
  L6: 8b 81 c8 00 00 00 ?? mov eax, dword ds:[ecx + 0x000000c8<200>]
   0f b7 04 58 ?? movzx eax, word ds:[eax + ebx * 2]
   83 e0 01 ?? and eax, 1
  
  L7: 85 c0 ?? test eax, eax
   74 0f ?? je basic block L9
  
  L8: 8b 81 cc 00 00 00 ?? mov eax, dword ds:[ecx + 0x000000cc<204>]
   0f b6 04 18 ?? movzx eax, byte ds:[eax + ebx]
   e9 a3 00 00 00 ?? jmp basic block L22
  
  L9: 80 7d f4 00 ?? cmp byte ss:[ebp + 0xf4<244,-12>], 0
   74 07 ?? je basic block L11
  
  L10: 8b 45 f0 ?? mov eax, dword ss:[ebp + 0xf0<240,-16>]
   83 60 70 fd ?? and dword ds:[eax + 0x70<112>], 0xfd<253,-3>
  
  L11: 8b c3 ?? mov eax, ebx
   e9 9c 00 00 00 ?? jmp basic block L24
  
  L12: 8b 45 e8 ?? mov eax, dword ss:[ebp + 0xe8<232,-24>]
   83 b8 ac 00 00 00 01 ?? cmp dword ds:[eax + 0x000000ac<172>], 1
   7e 31 ?? jle basic block L16
  
  L13: 89 5d 08 ?? mov dword ss:[ebp + 8], ebx
   c1 7d 08 08 ?? sar dword ss:[ebp + 8], 8
   8d 45 e8 ?? lea eax, ss:[ebp + 0xe8<232,-24>]
   50 ?? push eax
   8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   25 ff 00 00 00 ?? and eax, 0x000000ff<255>
   50 ?? push eax
   e8 79 ec ff ff ?? call function 0x00416d4c
  
  L14: 59 ?? pop ecx
   59 ?? pop ecx
   85 c0 ?? test eax, eax
   74 12 ?? je basic block L16
  
  L15: 8a 45 08 ?? mov al, byte ss:[ebp + 8]
   6a 02 ?? push 2
   88 45 fc ?? mov byte ss:[ebp + 0xfc<252,-4>], al
   88 5d fd ?? mov byte ss:[ebp + 0xfd<253,-3>], bl
   c6 45 fe 00 ?? mov byte ss:[ebp + 0xfe<254,-2>], 0
   59 ?? pop ecx
   eb 15 ?? jmp basic block L18
  
  L16: e8 64 d5 fe ff ?? call function 0x00405654
  
  L17: c7 00 2a 00 00 00 ?? mov dword ds:[eax], 0x0000002a<42>
   33 c9 ?? xor ecx, ecx
   88 5d fc ?? mov byte ss:[ebp + 0xfc<252,-4>], bl
   c6 45 fd 00 ?? mov byte ss:[ebp + 0xfd<253,-3>], 0
   41 ?? inc ecx
  
  L18: 8b 45 e8 ?? mov eax, dword ss:[ebp + 0xe8<232,-24>]
   6a 01 ?? push 1
   ff 70 04 ?? push dword ds:[eax + 4]
   8d 55 f8 ?? lea edx, ss:[ebp + 0xf8<248,-8>]
   6a 03 ?? push 3
   52 ?? push edx
   51 ?? push ecx
   8d 4d fc ?? lea ecx, ss:[ebp + 0xfc<252,-4>]
   51 ?? push ecx
   56 ?? push esi
   ff 70 14 ?? push dword ds:[eax + 0x14<20>]
   8d 45 e8 ?? lea eax, ss:[ebp + 0xe8<232,-24>]
   50 ?? push eax
   e8 b3 dd ff ff ?? call function 0x00415ed3
  
  L19: 83 c4 24 ?? add esp, 0x24<36>
   85 c0 ?? test eax, eax
   0f 84 6f ff ff ff ?? je basic block L9
  
  L20: 83 f8 01 ?? cmp eax, 1
   0f b6 45 f8 ?? movzx eax, byte ss:[ebp + 0xf8<248,-8>]
   74 09 ?? je basic block L22
  
  L21: 0f b6 4d f9 ?? movzx ecx, byte ss:[ebp + 0xf9<249,-7>]
   c1 e0 08 ?? shl eax, 8
   0b c1 ?? or eax, ecx
  
  L22: 80 7d f4 00 ?? cmp byte ss:[ebp + 0xf4<244,-12>], 0
   74 07 ?? je basic block L24
  
  L23: 8b 4d f0 ?? mov ecx, dword ss:[ebp + 0xf0<240,-16>]
   83 61 70 fd ?? and dword ds:[ecx + 0x70<112>], 0xfd<253,-3>
  
  L24: 5e ?? pop esi
   5b ?? pop ebx
   c9 ?? leave
   c3 ?? ret
  
  