Disassembly: 
  L1: 8b ff ?? mov edi, edi
   55 ?? push ebp
   8b ec ?? mov ebp, esp
   51 ?? push ecx
   51 ?? push ecx
   8b 4d 08 ?? mov ecx, dword ss:[ebp + 8]
   8b 41 08 ?? mov eax, dword ds:[ecx + 8]
   53 ?? push ebx
   56 ?? push esi
   8b 71 10 ?? mov esi, dword ds:[ecx + 0x10<16>]
   57 ?? push edi
   33 db ?? xor ebx, ebx
   eb 03 ?? jmp basic block L3
  
  L2: 03 c0 ?? add eax, eax
   43 ?? inc ebx
  
  L3: 85 c0 ?? test eax, eax
   7d f9 ?? jge basic block L2
  
  L4: 8b c3 ?? mov eax, ebx
   69 c0 04 02 00 00 ?? imul eax, eax, 0x00000204<516>
   8d 84 30 44 01 00 00 ?? lea eax, ds:[eax + esi + 0x00000144<324>]
   6a 3f ?? push 0x3f<63>
   89 45 f8 ?? mov dword ss:[ebp + 0xf8<248,-8>], eax
   5a ?? pop edx
  
  L5: 89 40 08 ?? mov dword ds:[eax + 8], eax
   89 40 04 ?? mov dword ds:[eax + 4], eax
   83 c0 08 ?? add eax, 8
   4a ?? dec edx
  
  L6: 75 f4 ?? jne basic block L5
  
  L7: 6a 04 ?? push 4
   8b fb ?? mov edi, ebx
   68 00 10 00 00 ?? push 0x00001000<4096>
   c1 e7 0f ?? shl edi, 15
   03 79 0c ?? add edi, dword ds:[ecx + 12]
   68 00 80 00 00 ?? push 0x00008000<32768>
   57 ?? push edi
   ff 15 c0 82 43 00 ?? call dword ds:[0x004382c0]
  
  L8: 85 c0 ?? test eax, eax
   75 08 ?? jne basic block L10
  
  L9: 83 c8 ff ?? or eax, 0xff<255,-1>
   e9 9d 00 00 00 ?? jmp basic block L18
  
  L10: 8d 97 00 70 00 00 ?? lea edx, ds:[edi + 0x00007000<28672>]
   89 55 fc ?? mov dword ss:[ebp + 0xfc<252,-4>], edx
   3b fa ?? cmp edi, edx
   77 43 ?? ja basic block L15
  
  L11: 8b ca ?? mov ecx, edx
   2b cf ?? sub ecx, edi
   c1 e9 0c ?? shr ecx, 12
   8d 47 10 ?? lea eax, ds:[edi + 0x10<16>]
   41 ?? inc ecx
  
  L12: 83 48 f8 ff ?? or dword ds:[eax + 0xf8<248,-8>], 0xff<255,-1>
   83 88 ec 0f 00 00 ff ?? or dword ds:[eax + 0x00000fec<4076>], 0xff<255,-1>
   8d 90 fc 0f 00 00 ?? lea edx, ds:[eax + 0x00000ffc<4092>]
   89 10 ?? mov dword ds:[eax], edx
   8d 90 fc ef ff ff ?? lea edx, ds:[eax + 0xffffeffc<4294963196,-4100>]
   c7 40 fc f0 0f 00 00 ?? mov dword ds:[eax + 0xfc<252,-4>], 0x00000ff0<4080>
   89 50 04 ?? mov dword ds:[eax + 4], edx
   c7 80 e8 0f 00 00 f0 0f ?? mov dword ds:[eax + 0x00000fe8<4072>], 0x00000ff0<4080>
   00 00
   05 00 10 00 00 ?? add eax, 0x00001000<4096>
   49 ?? dec ecx
  
  L13: 75 cb ?? jne basic block L12
  
  L14: 8b 55 fc ?? mov edx, dword ss:[ebp + 0xfc<252,-4>]
  
  L15: 8b 45 f8 ?? mov eax, dword ss:[ebp + 0xf8<248,-8>]
   05 f8 01 00 00 ?? add eax, 0x000001f8<504>
   8d 4f 0c ?? lea ecx, ds:[edi + 12]
   89 48 04 ?? mov dword ds:[eax + 4], ecx
   89 41 08 ?? mov dword ds:[ecx + 8], eax
   8d 4a 0c ?? lea ecx, ds:[edx + 12]
   89 48 08 ?? mov dword ds:[eax + 8], ecx
   89 41 04 ?? mov dword ds:[ecx + 4], eax
   83 64 9e 44 00 ?? and dword ds:[esi + ebx * 4 + 0x44<68>], 0
   33 ff ?? xor edi, edi
   47 ?? inc edi
   89 bc 9e c4 00 00 00 ?? mov dword ds:[esi + ebx * 4 + 0x000000c4<196>], edi
   8a 46 43 ?? mov al, byte ds:[esi + 0x43<67>]
   8a c8 ?? mov cl, al
   fe c1 ?? inc cl
   84 c0 ?? test al, al
   8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   88 4e 43 ?? mov byte ds:[esi + 0x43<67>], cl
   75 03 ?? jne basic block L17
  
  L16: 09 78 04 ?? or dword ds:[eax + 4], edi
  
  L17: ba 00 00 00 80 ?? mov edx, 0x80000000
   8b cb ?? mov ecx, ebx
   d3 ea ?? shr edx, cl
   f7 d2 ?? not edx
   21 50 08 ?? and dword ds:[eax + 8], edx
   8b c3 ?? mov eax, ebx
  
  L18: 5f ?? pop edi
   5e ?? pop esi
   5b ?? pop ebx
   c9 ?? leave
   c3 ?? ret
  
  