Disassembly: 
  L1: 8b ff ?? mov edi, edi
   55 ?? push ebp
   8b ec ?? mov ebp, esp
   83 ec 0c ?? sub esp, 12
   8b 4d 08 ?? mov ecx, dword ss:[ebp + 8]
   8b 41 10 ?? mov eax, dword ds:[ecx + 0x10<16>]
   53 ?? push ebx
   56 ?? push esi
   8b 75 10 ?? mov esi, dword ss:[ebp + 0x10<16>]
   57 ?? push edi
   8b 7d 0c ?? mov edi, dword ss:[ebp + 12]
   8b d7 ?? mov edx, edi
   2b 51 0c ?? sub edx, dword ds:[ecx + 12]
   83 c6 17 ?? add esi, 0x17<23>
   c1 ea 0f ?? shr edx, 15
   8b ca ?? mov ecx, edx
   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 f4 ?? mov dword ss:[ebp + 0xf4<244,-12>], ecx
   8b 4f fc ?? mov ecx, dword ds:[edi + 0xfc<252,-4>]
   83 e6 f0 ?? and esi, 0xf0<240,-16>
   49 ?? dec ecx
   3b f1 ?? cmp esi, ecx
   8d 7c 39 fc ?? lea edi, ds:[ecx + edi + 0xfc<252,-4>]
   8b 1f ?? mov ebx, dword ds:[edi]
   89 4d 10 ?? mov dword ss:[ebp + 0x10<16>], ecx
   89 5d fc ?? mov dword ss:[ebp + 0xfc<252,-4>], ebx
   0f 8e 55 01 00 00 ?? jle basic block L28
  
  L2: f6 c3 01 ?? test bl, 1
   0f 85 45 01 00 00 ?? jne basic block L27
  
  L3: 03 d9 ?? add ebx, ecx
   3b f3 ?? cmp esi, ebx
   0f 8f 3b 01 00 00 ?? jg basic block L27
  
  L4: 8b 4d fc ?? mov ecx, dword ss:[ebp + 0xfc<252,-4>]
   c1 f9 04 ?? sar ecx, 4
   49 ?? dec ecx
   89 4d f8 ?? mov dword ss:[ebp + 0xf8<248,-8>], ecx
   83 f9 3f ?? cmp ecx, 0x3f<63>
   76 06 ?? jbe basic block L6
  
  L5: 6a 3f ?? push 0x3f<63>
   59 ?? pop ecx
   89 4d f8 ?? mov dword ss:[ebp + 0xf8<248,-8>], ecx
  
  L6: 8b 5f 04 ?? mov ebx, dword ds:[edi + 4]
   3b 5f 08 ?? cmp ebx, dword ds:[edi + 8]
   75 43 ?? jne basic block L12
  
  L7: bb 00 00 00 80 ?? mov ebx, 0x80000000
   83 f9 20 ?? cmp ecx, 0x20<32>
   73 1a ?? jae basic block L10
  
  L8: d3 eb ?? shr ebx, cl
   8b 4d f8 ?? mov ecx, dword ss:[ebp + 0xf8<248,-8>]
   8d 4c 01 04 ?? lea ecx, ds:[ecx + eax + 4]
   f7 d3 ?? not ebx
   21 5c 90 44 ?? and dword ds:[eax + edx * 4 + 0x44<68>], ebx
   fe 09 ?? dec byte ds:[ecx]
   75 26 ?? jne basic block L12
  
  L9: 8b 4d 08 ?? mov ecx, dword ss:[ebp + 8]
   21 19 ?? and dword ds:[ecx], ebx
   eb 1f ?? jmp basic block L12
  
  L10: 83 c1 e0 ?? add ecx, 0xe0<224,-32>
   d3 eb ?? shr ebx, cl
   8b 4d f8 ?? mov ecx, dword ss:[ebp + 0xf8<248,-8>]
   8d 4c 01 04 ?? lea ecx, ds:[ecx + eax + 4]
   f7 d3 ?? not ebx
   21 9c 90 c4 00 00 00 ?? and dword ds:[eax + edx * 4 + 0x000000c4<196>], ebx
   fe 09 ?? dec byte ds:[ecx]
   75 06 ?? jne basic block L12
  
  L11: 8b 4d 08 ?? mov ecx, dword ss:[ebp + 8]
   21 59 04 ?? and dword ds:[ecx + 4], ebx
  
  L12: 8b 4f 08 ?? mov ecx, dword ds:[edi + 8]
   8b 5f 04 ?? mov ebx, dword ds:[edi + 4]
   89 59 04 ?? mov dword ds:[ecx + 4], ebx
   8b 4f 04 ?? mov ecx, dword ds:[edi + 4]
   8b 7f 08 ?? mov edi, dword ds:[edi + 8]
   89 79 08 ?? mov dword ds:[ecx + 8], edi
   8b 4d 10 ?? mov ecx, dword ss:[ebp + 0x10<16>]
   2b ce ?? sub ecx, esi
   01 4d fc ?? add dword ss:[ebp + 0xfc<252,-4>], ecx
   83 7d fc 00 ?? cmp dword ss:[ebp + 0xfc<252,-4>], 0
   0f 8e a5 00 00 00 ?? jle basic block L25
  
  L13: 8b 7d fc ?? mov edi, dword ss:[ebp + 0xfc<252,-4>]
   8b 4d 0c ?? mov ecx, dword ss:[ebp + 12]
   c1 ff 04 ?? sar edi, 4
   4f ?? dec edi
   8d 4c 31 fc ?? lea ecx, ds:[ecx + esi + 0xfc<252,-4>]
   83 ff 3f ?? cmp edi, 0x3f<63>
   76 03 ?? jbe basic block L15
  
  L14: 6a 3f ?? push 0x3f<63>
   5f ?? pop edi
  
  L15: 8b 5d f4 ?? mov ebx, dword ss:[ebp + 0xf4<244,-12>]
   8d 1c fb ?? lea ebx, ds:[ebx + edi * 8]
   89 5d 10 ?? mov dword ss:[ebp + 0x10<16>], ebx
   8b 5b 04 ?? mov ebx, dword ds:[ebx + 4]
   89 59 04 ?? mov dword ds:[ecx + 4], ebx
   8b 5d 10 ?? mov ebx, dword ss:[ebp + 0x10<16>]
   89 59 08 ?? mov dword ds:[ecx + 8], ebx
   89 4b 04 ?? mov dword ds:[ebx + 4], ecx
   8b 59 04 ?? mov ebx, dword ds:[ecx + 4]
   89 4b 08 ?? mov dword ds:[ebx + 8], ecx
   8b 59 04 ?? mov ebx, dword ds:[ecx + 4]
   3b 59 08 ?? cmp ebx, dword ds:[ecx + 8]
   75 57 ?? jne basic block L24
  
  L16: 8a 4c 07 04 ?? mov cl, byte ds:[edi + eax + 4]
   88 4d 13 ?? mov byte ss:[ebp + 0x13<19>], cl
   fe c1 ?? inc cl
   88 4c 07 04 ?? mov byte ds:[edi + eax + 4], cl
   83 ff 20 ?? cmp edi, 0x20<32>
   73 1c ?? jae basic block L20
  
  L17: 80 7d 13 00 ?? cmp byte ss:[ebp + 0x13<19>], 0
   75 0e ?? jne basic block L19
  
  L18: 8b cf ?? mov ecx, edi
   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
  
  L19: 8d 44 90 44 ?? lea eax, ds:[eax + edx * 4 + 0x44<68>]
   8b cf ?? mov ecx, edi
   eb 20 ?? jmp basic block L23
  
  L20: 80 7d 13 00 ?? cmp byte ss:[ebp + 0x13<19>], 0
   75 10 ?? jne basic block L22
  
  L21: 8d 4f e0 ?? lea ecx, ds:[edi + 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
  
  L22: 8d 84 90 c4 00 00 00 ?? lea eax, ds:[eax + edx * 4 + 0x000000c4<196>]
   8d 4f e0 ?? lea ecx, ds:[edi + 0xe0<224,-32>]
  
  L23: ba 00 00 00 80 ?? mov edx, 0x80000000
   d3 ea ?? shr edx, cl
   09 10 ?? or dword ds:[eax], edx
  
  L24: 8b 55 0c ?? mov edx, dword ss:[ebp + 12]
   8b 4d fc ?? mov ecx, dword ss:[ebp + 0xfc<252,-4>]
   8d 44 32 fc ?? lea eax, ds:[edx + esi + 0xfc<252,-4>]
   89 08 ?? mov dword ds:[eax], ecx
   89 4c 01 fc ?? mov dword ds:[ecx + eax + 0xfc<252,-4>], ecx
   eb 03 ?? jmp basic block L26
  
  L25: 8b 55 0c ?? mov edx, dword ss:[ebp + 12]
  
  L26: 8d 46 01 ?? lea eax, ds:[esi + 1]
   89 42 fc ?? mov dword ds:[edx + 0xfc<252,-4>], eax
   89 44 32 f8 ?? mov dword ds:[edx + esi + 0xf8<248,-8>], eax
   e9 3c 01 00 00 ?? jmp basic block L53
  
  L27: 33 c0 ?? xor eax, eax
   e9 38 01 00 00 ?? jmp basic block L54
  
  L28: 0f 8d 2f 01 00 00 ?? jge basic block L53
  
  L29: 8b 5d 0c ?? mov ebx, dword ss:[ebp + 12]
   29 75 10 ?? sub dword ss:[ebp + 0x10<16>], esi
   8d 4e 01 ?? lea ecx, ds:[esi + 1]
   89 4b fc ?? mov dword ds:[ebx + 0xfc<252,-4>], ecx
   8d 5c 33 fc ?? lea ebx, ds:[ebx + esi + 0xfc<252,-4>]
   8b 75 10 ?? mov esi, dword ss:[ebp + 0x10<16>]
   c1 fe 04 ?? sar esi, 4
   4e ?? dec esi
   89 5d 0c ?? mov dword ss:[ebp + 12], ebx
   89 4b fc ?? mov dword ds:[ebx + 0xfc<252,-4>], ecx
   83 fe 3f ?? cmp esi, 0x3f<63>
   76 03 ?? jbe basic block L31
  
  L30: 6a 3f ?? push 0x3f<63>
   5e ?? pop esi
  
  L31: f6 45 fc 01 ?? test byte ss:[ebp + 0xfc<252,-4>], 1
   0f 85 80 00 00 00 ?? jne basic block L43
  
  L32: 8b 75 fc ?? mov esi, dword ss:[ebp + 0xfc<252,-4>]
   c1 fe 04 ?? sar esi, 4
   4e ?? dec esi
   83 fe 3f ?? cmp esi, 0x3f<63>
   76 03 ?? jbe basic block L34
  
  L33: 6a 3f ?? push 0x3f<63>
   5e ?? pop esi
  
  L34: 8b 4f 04 ?? mov ecx, dword ds:[edi + 4]
   3b 4f 08 ?? cmp ecx, dword ds:[edi + 8]
   75 42 ?? jne basic block L41
  
  L35: bb 00 00 00 80 ?? mov ebx, 0x80000000
   83 fe 20 ?? cmp esi, 0x20<32>
   73 19 ?? jae basic block L38
  
  L36: 8b ce ?? mov ecx, esi
   d3 eb ?? shr ebx, cl
   8d 74 06 04 ?? lea esi, ds:[esi + eax + 4]
   f7 d3 ?? not ebx
   21 5c 90 44 ?? and dword ds:[eax + edx * 4 + 0x44<68>], ebx
   fe 0e ?? dec byte ds:[esi]
   75 23 ?? jne basic block L40
  
  L37: 8b 4d 08 ?? mov ecx, dword ss:[ebp + 8]
   21 19 ?? and dword ds:[ecx], ebx
   eb 1c ?? jmp basic block L40
  
  L38: 8d 4e e0 ?? lea ecx, ds:[esi + 0xe0<224,-32>]
   d3 eb ?? shr ebx, cl
   8d 4c 06 04 ?? lea ecx, ds:[esi + eax + 4]
   f7 d3 ?? not ebx
   21 9c 90 c4 00 00 00 ?? and dword ds:[eax + edx * 4 + 0x000000c4<196>], ebx
   fe 09 ?? dec byte ds:[ecx]
   75 06 ?? jne basic block L40
  
  L39: 8b 4d 08 ?? mov ecx, dword ss:[ebp + 8]
   21 59 04 ?? and dword ds:[ecx + 4], ebx
  
  L40: 8b 5d 0c ?? mov ebx, dword ss:[ebp + 12]
  
  L41: 8b 4f 08 ?? mov ecx, dword ds:[edi + 8]
   8b 77 04 ?? mov esi, dword ds:[edi + 4]
   89 71 04 ?? mov dword ds:[ecx + 4], esi
   8b 77 08 ?? mov esi, dword ds:[edi + 8]
   8b 4f 04 ?? mov ecx, dword ds:[edi + 4]
   89 71 08 ?? mov dword ds:[ecx + 8], esi
   8b 75 10 ?? mov esi, dword ss:[ebp + 0x10<16>]
   03 75 fc ?? add esi, dword ss:[ebp + 0xfc<252,-4>]
   89 75 10 ?? mov dword ss:[ebp + 0x10<16>], esi
   c1 fe 04 ?? sar esi, 4
   4e ?? dec esi
   83 fe 3f ?? cmp esi, 0x3f<63>
   76 03 ?? jbe basic block L43
  
  L42: 6a 3f ?? push 0x3f<63>
   5e ?? pop esi
  
  L43: 8b 4d f4 ?? mov ecx, dword ss:[ebp + 0xf4<244,-12>]
   8d 0c f1 ?? lea ecx, ds:[ecx + esi * 8]
   8b 79 04 ?? mov edi, dword ds:[ecx + 4]
   89 4b 08 ?? mov dword ds:[ebx + 8], ecx
   89 7b 04 ?? mov dword ds:[ebx + 4], edi
   89 59 04 ?? mov dword ds:[ecx + 4], ebx
   8b 4b 04 ?? mov ecx, dword ds:[ebx + 4]
   89 59 08 ?? mov dword ds:[ecx + 8], ebx
   8b 4b 04 ?? mov ecx, dword ds:[ebx + 4]
   3b 4b 08 ?? cmp ecx, dword ds:[ebx + 8]
   75 57 ?? jne basic block L52
  
  L44: 8a 4c 06 04 ?? mov cl, byte ds:[esi + eax + 4]
   88 4d 0f ?? mov byte ss:[ebp + 15], cl
   fe c1 ?? inc cl
   88 4c 06 04 ?? mov byte ds:[esi + eax + 4], cl
   83 fe 20 ?? cmp esi, 0x20<32>
   73 1c ?? jae basic block L48
  
  L45: 80 7d 0f 00 ?? cmp byte ss:[ebp + 15], 0
   75 0e ?? jne basic block L47
  
  L46: 8b ce ?? mov ecx, esi
   bf 00 00 00 80 ?? mov edi, 0x80000000
   d3 ef ?? shr edi, cl
   8b 4d 08 ?? mov ecx, dword ss:[ebp + 8]
   09 39 ?? or dword ds:[ecx], edi
  
  L47: 8d 44 90 44 ?? lea eax, ds:[eax + edx * 4 + 0x44<68>]
   8b ce ?? mov ecx, esi
   eb 20 ?? jmp basic block L51
  
  L48: 80 7d 0f 00 ?? cmp byte ss:[ebp + 15], 0
   75 10 ?? jne basic block L50
  
  L49: 8d 4e e0 ?? lea ecx, ds:[esi + 0xe0<224,-32>]
   bf 00 00 00 80 ?? mov edi, 0x80000000
   d3 ef ?? shr edi, cl
   8b 4d 08 ?? mov ecx, dword ss:[ebp + 8]
   09 79 04 ?? or dword ds:[ecx + 4], edi
  
  L50: 8d 84 90 c4 00 00 00 ?? lea eax, ds:[eax + edx * 4 + 0x000000c4<196>]
   8d 4e e0 ?? lea ecx, ds:[esi + 0xe0<224,-32>]
  
  L51: ba 00 00 00 80 ?? mov edx, 0x80000000
   d3 ea ?? shr edx, cl
   09 10 ?? or dword ds:[eax], edx
  
  L52: 8b 45 10 ?? mov eax, dword ss:[ebp + 0x10<16>]
   89 03 ?? mov dword ds:[ebx], eax
   89 44 18 fc ?? mov dword ds:[eax + ebx + 0xfc<252,-4>], eax
  
  L53: 33 c0 ?? xor eax, eax
   40 ?? inc eax
  
  L54: 5f ?? pop edi
   5e ?? pop esi
   5b ?? pop ebx
   c9 ?? leave
   c3 ?? ret
  
  