Disassembly: 
  L1: 8b ff ?? mov edi, edi
   55 ?? push ebp
   8b ec ?? mov ebp, esp
   83 ec 10 ?? sub esp, 0x10<16>
   8b 4d 08 ?? mov ecx, dword ss:[ebp + 8]
   8b 41 10 ?? mov eax, dword ds:[ecx + 0x10<16>]
   56 ?? push esi
   8b 75 0c ?? mov esi, dword ss:[ebp + 12]
   57 ?? push edi
   8b fe ?? mov edi, esi
   2b 79 0c ?? sub edi, dword ds:[ecx + 12]
   83 c6 fc ?? add esi, 0xfc<252,-4>
   c1 ef 0f ?? shr edi, 15
   8b cf ?? mov ecx, edi
   69 c9 04 02 00 00 ?? imul ecx, ecx, 0x00000204<516>
   8d 8c 01 44 01 00 00 ?? lea ecx, ds:[ecx + eax + 0x00000144<324>]
   89 4d f0 ?? mov dword ss:[ebp + 0xf0<240,-16>], ecx
   8b 0e ?? mov ecx, dword ds:[esi]
   49 ?? dec ecx
   89 4d fc ?? mov dword ss:[ebp + 0xfc<252,-4>], ecx
   f6 c1 01 ?? test cl, 1
   0f 85 d3 02 00 00 ?? jne basic block L54
  
  L2: 53 ?? push ebx
   8d 1c 31 ?? lea ebx, ds:[ecx + esi]
   8b 13 ?? mov edx, dword ds:[ebx]
   89 55 f4 ?? mov dword ss:[ebp + 0xf4<244,-12>], edx
   8b 56 fc ?? mov edx, dword ds:[esi + 0xfc<252,-4>]
   89 55 f8 ?? mov dword ss:[ebp + 0xf8<248,-8>], edx
   8b 55 f4 ?? mov edx, dword ss:[ebp + 0xf4<244,-12>]
   89 5d 0c ?? mov dword ss:[ebp + 12], ebx
   f6 c2 01 ?? test dl, 1
   75 74 ?? jne basic block L13
  
  L3: c1 fa 04 ?? sar edx, 4
   4a ?? dec edx
   83 fa 3f ?? cmp edx, 0x3f<63>
   76 03 ?? jbe basic block L5
  
  L4: 6a 3f ?? push 0x3f<63>
   5a ?? pop edx
  
  L5: 8b 4b 04 ?? mov ecx, dword ds:[ebx + 4]
   3b 4b 08 ?? cmp ecx, dword ds:[ebx + 8]
   75 42 ?? jne basic block L12
  
  L6: bb 00 00 00 80 ?? mov ebx, 0x80000000
   83 fa 20 ?? cmp edx, 0x20<32>
   73 19 ?? jae basic block L9
  
  L7: 8b ca ?? mov ecx, edx
   d3 eb ?? shr ebx, cl
   8d 4c 02 04 ?? lea ecx, ds:[edx + eax + 4]
   f7 d3 ?? not ebx
   21 5c b8 44 ?? and dword ds:[eax + edi * 4 + 0x44<68>], ebx
   fe 09 ?? dec byte ds:[ecx]
   75 23 ?? jne basic block L11
  
  L8: 8b 4d 08 ?? mov ecx, dword ss:[ebp + 8]
   21 19 ?? and dword ds:[ecx], ebx
   eb 1c ?? jmp basic block L11
  
  L9: 8d 4a e0 ?? lea ecx, ds:[edx + 0xe0<224,-32>]
   d3 eb ?? shr ebx, cl
   8d 4c 02 04 ?? lea ecx, ds:[edx + eax + 4]
   f7 d3 ?? not ebx
   21 9c b8 c4 00 00 00 ?? and dword ds:[eax + edi * 4 + 0x000000c4<196>], ebx
   fe 09 ?? dec byte ds:[ecx]
   75 06 ?? jne basic block L11
  
  L10: 8b 4d 08 ?? mov ecx, dword ss:[ebp + 8]
   21 59 04 ?? and dword ds:[ecx + 4], ebx
  
  L11: 8b 5d 0c ?? mov ebx, dword ss:[ebp + 12]
  
  L12: 8b 53 08 ?? mov edx, dword ds:[ebx + 8]
   8b 5b 04 ?? mov ebx, dword ds:[ebx + 4]
   8b 4d fc ?? mov ecx, dword ss:[ebp + 0xfc<252,-4>]
   03 4d f4 ?? add ecx, dword ss:[ebp + 0xf4<244,-12>]
   89 5a 04 ?? mov dword ds:[edx + 4], ebx
   8b 55 0c ?? mov edx, dword ss:[ebp + 12]
   8b 5a 04 ?? mov ebx, dword ds:[edx + 4]
   8b 52 08 ?? mov edx, dword ds:[edx + 8]
   89 53 08 ?? mov dword ds:[ebx + 8], edx
   89 4d fc ?? mov dword ss:[ebp + 0xfc<252,-4>], ecx
  
  L13: 8b d1 ?? mov edx, ecx
   c1 fa 04 ?? sar edx, 4
   4a ?? dec edx
   83 fa 3f ?? cmp edx, 0x3f<63>
   76 03 ?? jbe basic block L15
  
  L14: 6a 3f ?? push 0x3f<63>
   5a ?? pop edx
  
  L15: 8b 5d f8 ?? mov ebx, dword ss:[ebp + 0xf8<248,-8>]
   83 e3 01 ?? and ebx, 1
   89 5d f4 ?? mov dword ss:[ebp + 0xf4<244,-12>], ebx
   0f 85 8f 00 00 00 ?? jne basic block L29
  
  L16: 2b 75 f8 ?? sub esi, dword ss:[ebp + 0xf8<248,-8>]
   8b 5d f8 ?? mov ebx, dword ss:[ebp + 0xf8<248,-8>]
   c1 fb 04 ?? sar ebx, 4
   6a 3f ?? push 0x3f<63>
   89 75 0c ?? mov dword ss:[ebp + 12], esi
   4b ?? dec ebx
   5e ?? pop esi
   3b de ?? cmp ebx, esi
   76 02 ?? jbe basic block L18
  
  L17: 8b de ?? mov ebx, esi
  
  L18: 03 4d f8 ?? add ecx, dword ss:[ebp + 0xf8<248,-8>]
   8b d1 ?? mov edx, ecx
   c1 fa 04 ?? sar edx, 4
   4a ?? dec edx
   89 4d fc ?? mov dword ss:[ebp + 0xfc<252,-4>], ecx
   3b d6 ?? cmp edx, esi
   76 02 ?? jbe basic block L20
  
  L19: 8b d6 ?? mov edx, esi
  
  L20: 3b da ?? cmp ebx, edx
   74 5e ?? je basic block L28
  
  L21: 8b 4d 0c ?? mov ecx, dword ss:[ebp + 12]
   8b 71 04 ?? mov esi, dword ds:[ecx + 4]
   3b 71 08 ?? cmp esi, dword ds:[ecx + 8]
   75 3b ?? jne basic block L27
  
  L22: be 00 00 00 80 ?? mov esi, 0x80000000
   83 fb 20 ?? cmp ebx, 0x20<32>
   73 17 ?? jae basic block L25
  
  L23: 8b cb ?? mov ecx, ebx
   d3 ee ?? shr esi, cl
   f7 d6 ?? not esi
   21 74 b8 44 ?? and dword ds:[eax + edi * 4 + 0x44<68>], esi
   fe 4c 03 04 ?? dec byte ds:[ebx + eax + 4]
   75 21 ?? jne basic block L27
  
  L24: 8b 4d 08 ?? mov ecx, dword ss:[ebp + 8]
   21 31 ?? and dword ds:[ecx], esi
   eb 1a ?? jmp basic block L27
  
  L25: 8d 4b e0 ?? lea ecx, ds:[ebx + 0xe0<224,-32>]
   d3 ee ?? shr esi, cl
   f7 d6 ?? not esi
   21 b4 b8 c4 00 00 00 ?? and dword ds:[eax + edi * 4 + 0x000000c4<196>], esi
   fe 4c 03 04 ?? dec byte ds:[ebx + eax + 4]
   75 06 ?? jne basic block L27
  
  L26: 8b 4d 08 ?? mov ecx, dword ss:[ebp + 8]
   21 71 04 ?? and dword ds:[ecx + 4], esi
  
  L27: 8b 4d 0c ?? mov ecx, dword ss:[ebp + 12]
   8b 71 08 ?? mov esi, dword ds:[ecx + 8]
   8b 49 04 ?? mov ecx, dword ds:[ecx + 4]
   89 4e 04 ?? mov dword ds:[esi + 4], ecx
   8b 4d 0c ?? mov ecx, dword ss:[ebp + 12]
   8b 71 04 ?? mov esi, dword ds:[ecx + 4]
   8b 49 08 ?? mov ecx, dword ds:[ecx + 8]
   89 4e 08 ?? mov dword ds:[esi + 8], ecx
  
  L28: 8b 75 0c ?? mov esi, dword ss:[ebp + 12]
   eb 03 ?? jmp basic block L30
  
  L29: 8b 5d 08 ?? mov ebx, dword ss:[ebp + 8]
  
  L30: 83 7d f4 00 ?? cmp dword ss:[ebp + 0xf4<244,-12>], 0
   75 08 ?? jne basic block L32
  
  L31: 3b da ?? cmp ebx, edx
   0f 84 80 00 00 00 ?? je basic block L40
  
  L32: 8b 4d f0 ?? mov ecx, dword ss:[ebp + 0xf0<240,-16>]
   8d 0c d1 ?? lea ecx, ds:[ecx + edx * 8]
   8b 59 04 ?? mov ebx, dword ds:[ecx + 4]
   89 4e 08 ?? mov dword ds:[esi + 8], ecx
   89 5e 04 ?? mov dword ds:[esi + 4], ebx
   89 71 04 ?? mov dword ds:[ecx + 4], esi
   8b 4e 04 ?? mov ecx, dword ds:[esi + 4]
   89 71 08 ?? mov dword ds:[ecx + 8], esi
   8b 4e 04 ?? mov ecx, dword ds:[esi + 4]
   3b 4e 08 ?? cmp ecx, dword ds:[esi + 8]
   75 60 ?? jne basic block L40
  
  L33: 8a 4c 02 04 ?? mov cl, byte ds:[edx + eax + 4]
   88 4d 0f ?? mov byte ss:[ebp + 15], cl
   fe c1 ?? inc cl
   88 4c 02 04 ?? mov byte ds:[edx + eax + 4], cl
   83 fa 20 ?? cmp edx, 0x20<32>
   73 25 ?? jae basic block L37
  
  L34: 80 7d 0f 00 ?? cmp byte ss:[ebp + 15], 0
   75 0e ?? jne basic block L36
  
  L35: 8b ca ?? mov ecx, edx
   bb 00 00 00 80 ?? mov ebx, 0x80000000
   d3 eb ?? shr ebx, cl
   8b 4d 08 ?? mov ecx, dword ss:[ebp + 8]
   09 19 ?? or dword ds:[ecx], ebx
  
  L36: bb 00 00 00 80 ?? mov ebx, 0x80000000
   8b ca ?? mov ecx, edx
   d3 eb ?? shr ebx, cl
   8d 44 b8 44 ?? lea eax, ds:[eax + edi * 4 + 0x44<68>]
   09 18 ?? or dword ds:[eax], ebx
   eb 29 ?? jmp basic block L40
  
  L37: 80 7d 0f 00 ?? cmp byte ss:[ebp + 15], 0
   75 10 ?? jne basic block L39
  
  L38: 8d 4a e0 ?? lea ecx, ds:[edx + 0xe0<224,-32>]
   bb 00 00 00 80 ?? mov ebx, 0x80000000
   d3 eb ?? shr ebx, cl
   8b 4d 08 ?? mov ecx, dword ss:[ebp + 8]
   09 59 04 ?? or dword ds:[ecx + 4], ebx
  
  L39: 8d 4a e0 ?? lea ecx, ds:[edx + 0xe0<224,-32>]
   ba 00 00 00 80 ?? mov edx, 0x80000000
   d3 ea ?? shr edx, cl
   8d 84 b8 c4 00 00 00 ?? lea eax, ds:[eax + edi * 4 + 0x000000c4<196>]
   09 10 ?? or dword ds:[eax], edx
  
  L40: 8b 45 fc ?? mov eax, dword ss:[ebp + 0xfc<252,-4>]
   89 06 ?? mov dword ds:[esi], eax
   89 44 30 fc ?? mov dword ds:[eax + esi + 0xfc<252,-4>], eax
   8b 45 f0 ?? mov eax, dword ss:[ebp + 0xf0<240,-16>]
   ff 08 ?? dec dword ds:[eax]
   0f 85 f3 00 00 00 ?? jne basic block L53
  
  L41: a1 30 9a 42 00 ?? mov eax, dword ds:[0x00429a30]
   85 c0 ?? test eax, eax
   0f 84 d8 00 00 00 ?? je basic block L52
  
  L42: 8b 0d 50 9c 42 00 ?? mov ecx, dword ds:[0x00429c50]
   8b 35 4c a2 42 00 ?? mov esi, dword ds:[0x0042a24c]
   68 00 40 00 00 ?? push 0x00004000<16384>
   c1 e1 0f ?? shl ecx, 15
   03 48 0c ?? add ecx, dword ds:[eax + 12]
   bb 00 80 00 00 ?? mov ebx, 0x00008000<32768>
   53 ?? push ebx
   51 ?? push ecx
   ff d6 ?? call esi
  
  L43: 8b 0d 50 9c 42 00 ?? mov ecx, dword ds:[0x00429c50]
   a1 30 9a 42 00 ?? mov eax, dword ds:[0x00429a30]
   ba 00 00 00 80 ?? mov edx, 0x80000000
   d3 ea ?? shr edx, cl
   09 50 08 ?? or dword ds:[eax + 8], edx
   a1 30 9a 42 00 ?? mov eax, dword ds:[0x00429a30]
   8b 40 10 ?? mov eax, dword ds:[eax + 0x10<16>]
   8b 0d 50 9c 42 00 ?? mov ecx, dword ds:[0x00429c50]
   83 a4 88 c4 00 00 00 00 ?? and dword ds:[eax + ecx * 4 + 0x000000c4<196>], 0
   a1 30 9a 42 00 ?? mov eax, dword ds:[0x00429a30]
   8b 40 10 ?? mov eax, dword ds:[eax + 0x10<16>]
   fe 48 43 ?? dec byte ds:[eax + 0x43<67>]
   a1 30 9a 42 00 ?? mov eax, dword ds:[0x00429a30]
   8b 48 10 ?? mov ecx, dword ds:[eax + 0x10<16>]
   80 79 43 00 ?? cmp byte ds:[ecx + 0x43<67>], 0
   75 09 ?? jne basic block L45
  
  L44: 83 60 04 fe ?? and dword ds:[eax + 4], 0xfe<254,-2>
   a1 30 9a 42 00 ?? mov eax, dword ds:[0x00429a30]
  
  L45: 83 78 08 ff ?? cmp dword ds:[eax + 8], 0xff<255,-1>
   75 65 ?? jne basic block L52
  
  L46: 53 ?? push ebx
   6a 00 ?? push 0
   ff 70 0c ?? push dword ds:[eax + 12]
   ff d6 ?? call esi
  
  L47: a1 30 9a 42 00 ?? mov eax, dword ds:[0x00429a30]
   ff 70 10 ?? push dword ds:[eax + 0x10<16>]
   6a 00 ?? push 0
   ff 35 dc 98 42 00 ?? push dword ds:[0x004298dc]
   ff 15 c0 a1 42 00 ?? call dword ds:[0x0042a1c0]
  
  L48: 8b 0d 3c 9c 42 00 ?? mov ecx, dword ds:[0x00429c3c]
   a1 30 9a 42 00 ?? mov eax, dword ds:[0x00429a30]
   6b c9 14 ?? imul ecx, ecx, 0x14<20>
   8b 15 40 9c 42 00 ?? mov edx, dword ds:[0x00429c40]
   2b c8 ?? sub ecx, eax
   8d 4c 11 ec ?? lea ecx, ds:[ecx + edx + 0xec<236,-20>]
   51 ?? push ecx
   8d 48 14 ?? lea ecx, ds:[eax + 0x14<20>]
   51 ?? push ecx
   50 ?? push eax
   e8 f7 15 00 00 ?? call function 0x00407c40
  
  L49: 8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   83 c4 0c ?? add esp, 12
   ff 0d 3c 9c 42 00 ?? dec dword ds:[0x00429c3c]
   3b 05 30 9a 42 00 ?? cmp eax, dword ds:[0x00429a30]
   76 04 ?? jbe basic block L51
  
  L50: 83 6d 08 14 ?? sub dword ss:[ebp + 8], 0x14<20>
  
  L51: a1 40 9c 42 00 ?? mov eax, dword ds:[0x00429c40]
   a3 48 9c 42 00 ?? mov dword ds:[0x00429c48], eax
  
  L52: 8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   a3 30 9a 42 00 ?? mov dword ds:[0x00429a30], eax
   89 3d 50 9c 42 00 ?? mov dword ds:[0x00429c50], edi
  
  L53: 5b ?? pop ebx
  
  L54: 5f ?? pop edi
   5e ?? pop esi
   c9 ?? leave
   c3 ?? ret
  
  