Disassembly: 
  L1: 8b ff ?? mov edi, edi
   55 ?? push ebp
   8b ec ?? mov ebp, esp
   8b 45 0c ?? mov eax, dword ss:[ebp + 12]
   99 ?? cdq
   83 e2 1f ?? and edx, 0x1f<31>
   83 ec 0c ?? sub esp, 12
   03 c2 ?? add eax, edx
   8b 55 0c ?? mov edx, dword ss:[ebp + 12]
   56 ?? push esi
   c1 f8 05 ?? sar eax, 5
   81 e2 1f 00 00 80 ?? and edx, 0x8000001f
   57 ?? push edi
   79 05 ?? jns basic block L3
  
  L2: 4a ?? dec edx
   83 ca e0 ?? or edx, 0xe0<224,-32>
   42 ?? inc edx
  
  L3: 83 65 f8 00 ?? and dword ss:[ebp + 0xf8<248,-8>], 0
   83 65 0c 00 ?? and dword ss:[ebp + 12], 0
   8b 7d 08 ?? mov edi, dword ss:[ebp + 8]
   83 ce ff ?? or esi, 0xff<255,-1>
   8b ca ?? mov ecx, edx
   d3 e6 ?? shl esi, cl
   c7 45 fc 20 00 00 00 ?? mov dword ss:[ebp + 0xfc<252,-4>], 0x00000020<32>
   29 55 fc ?? sub dword ss:[ebp + 0xfc<252,-4>], edx
   53 ?? push ebx
   f7 d6 ?? not esi
  
  L4: 8b 4d 0c ?? mov ecx, dword ss:[ebp + 12]
   8b 1c 8f ?? mov ebx, dword ds:[edi + ecx * 4]
   23 de ?? and ebx, esi
   89 5d f4 ?? mov dword ss:[ebp + 0xf4<244,-12>], ebx
   8b 1c 8f ?? mov ebx, dword ds:[edi + ecx * 4]
   8b ca ?? mov ecx, edx
   d3 eb ?? shr ebx, cl
   8b 4d 0c ?? mov ecx, dword ss:[ebp + 12]
   0b 5d f8 ?? or ebx, dword ss:[ebp + 0xf8<248,-8>]
   89 1c 8f ?? mov dword ds:[edi + ecx * 4], ebx
   8b 5d f4 ?? mov ebx, dword ss:[ebp + 0xf4<244,-12>]
   8b 4d fc ?? mov ecx, dword ss:[ebp + 0xfc<252,-4>]
   d3 e3 ?? shl ebx, cl
   ff 45 0c ?? inc dword ss:[ebp + 12]
   83 7d 0c 03 ?? cmp dword ss:[ebp + 12], 3
   89 5d f8 ?? mov dword ss:[ebp + 0xf8<248,-8>], ebx
  
  L5: 7c d1 ?? jl basic block L4
  
  L6: 6a 02 ?? push 2
   59 ?? pop ecx
   8b d1 ?? mov edx, ecx
   2b d0 ?? sub edx, eax
   8d 14 97 ?? lea edx, ds:[edi + edx * 4]
   5b ?? pop ebx
  
  L7: 3b c8 ?? cmp ecx, eax
   7c 07 ?? jl basic block L9
  
  L8: 8b 32 ?? mov esi, dword ds:[edx]
   89 34 8f ?? mov dword ds:[edi + ecx * 4], esi
   eb 04 ?? jmp basic block L10
  
  L9: 83 24 8f 00 ?? and dword ds:[edi + ecx * 4], 0
  
  L10: 49 ?? dec ecx
   83 ea 04 ?? sub edx, 4
   85 c9 ?? test ecx, ecx
   7d e9 ?? jge basic block L7
  
  L11: 5f ?? pop edi
   5e ?? pop esi
   c9 ?? leave
   c3 ?? ret
  
  