Disassembly: 
  L1: 8b ff ?? mov edi, edi
   55 ?? push ebp
   8b ec ?? mov ebp, esp
   83 ec 18 ?? sub esp, 0x18<24>
   a1 44 44 44 00 ?? mov eax, dword ds:[0x00444444]
   33 c5 ?? xor eax, ebp
   89 45 fc ?? mov dword ss:[ebp + 0xfc<252,-4>], eax
   8b 45 10 ?? mov eax, dword ss:[ebp + 0x10<16>]
   53 ?? push ebx
   56 ?? push esi
   33 f6 ?? xor esi, esi
   57 ?? push edi
   c7 45 e8 4e 40 00 00 ?? mov dword ss:[ebp + 0xe8<232,-24>], 0x0000404e<16462>
   89 30 ?? mov dword ds:[eax], esi
   89 70 04 ?? mov dword ds:[eax + 4], esi
   89 70 08 ?? mov dword ds:[eax + 8], esi
   39 75 0c ?? cmp dword ss:[ebp + 12], esi
   0f 86 46 01 00 00 ?? jbe basic block L28
  
  L2: 8b 10 ?? mov edx, dword ds:[eax]
   8b 58 04 ?? mov ebx, dword ds:[eax + 4]
   8b f0 ?? mov esi, eax
   8d 7d f0 ?? lea edi, ss:[ebp + 0xf0<240,-16>]
   a5 ?? movsd
   a5 ?? movsd
   a5 ?? movsd
   8b ca ?? mov ecx, edx
   c1 e9 1f ?? shr ecx, 0x1f<31>
   8d 3c 12 ?? lea edi, ds:[edx + edx]
   8d 14 1b ?? lea edx, ds:[ebx + ebx]
   0b d1 ?? or edx, ecx
   8b 48 08 ?? mov ecx, dword ds:[eax + 8]
   8b f3 ?? mov esi, ebx
   c1 ee 1f ?? shr esi, 0x1f<31>
   03 c9 ?? add ecx, ecx
   0b ce ?? or ecx, esi
   89 7d ec ?? mov dword ss:[ebp + 0xec<236,-20>], edi
   8b f7 ?? mov esi, edi
   83 65 ec 00 ?? and dword ss:[ebp + 0xec<236,-20>], 0
   8b da ?? mov ebx, edx
   c1 eb 1f ?? shr ebx, 0x1f<31>
   03 c9 ?? add ecx, ecx
   c1 ef 1f ?? shr edi, 0x1f<31>
   0b cb ?? or ecx, ebx
   8b 5d f0 ?? mov ebx, dword ss:[ebp + 0xf0<240,-16>]
   03 f6 ?? add esi, esi
   03 d2 ?? add edx, edx
   0b d7 ?? or edx, edi
   8d 3c 1e ?? lea edi, ds:[esi + ebx]
   89 30 ?? mov dword ds:[eax], esi
   89 50 04 ?? mov dword ds:[eax + 4], edx
   89 48 08 ?? mov dword ds:[eax + 8], ecx
   3b fe ?? cmp edi, esi
   72 04 ?? jb basic block L4
  
  L3: 3b fb ?? cmp edi, ebx
   73 07 ?? jae basic block L5
  
  L4: c7 45 ec 01 00 00 00 ?? mov dword ss:[ebp + 0xec<236,-20>], 1
  
  L5: 33 db ?? xor ebx, ebx
   89 38 ?? mov dword ds:[eax], edi
   39 5d ec ?? cmp dword ss:[ebp + 0xec<236,-20>], ebx
   74 1a ?? je basic block L11
  
  L6: 8d 72 01 ?? lea esi, ds:[edx + 1]
   3b f2 ?? cmp esi, edx
   72 05 ?? jb basic block L8
  
  L7: 83 fe 01 ?? cmp esi, 1
   73 03 ?? jae basic block L9
  
  L8: 33 db ?? xor ebx, ebx
   43 ?? inc ebx
  
  L9: 89 70 04 ?? mov dword ds:[eax + 4], esi
   85 db ?? test ebx, ebx
   74 04 ?? je basic block L11
  
  L10: 41 ?? inc ecx
   89 48 08 ?? mov dword ds:[eax + 8], ecx
  
  L11: 8b 48 04 ?? mov ecx, dword ds:[eax + 4]
   8b 55 f4 ?? mov edx, dword ss:[ebp + 0xf4<244,-12>]
   8d 1c 11 ?? lea ebx, ds:[ecx + edx]
   33 f6 ?? xor esi, esi
   3b d9 ?? cmp ebx, ecx
   72 04 ?? jb basic block L13
  
  L12: 3b da ?? cmp ebx, edx
   73 03 ?? jae basic block L14
  
  L13: 33 f6 ?? xor esi, esi
   46 ?? inc esi
  
  L14: 89 58 04 ?? mov dword ds:[eax + 4], ebx
   85 f6 ?? test esi, esi
   74 03 ?? je basic block L16
  
  L15: ff 40 08 ?? inc dword ds:[eax + 8]
  
  L16: 8b 4d f8 ?? mov ecx, dword ss:[ebp + 0xf8<248,-8>]
   01 48 08 ?? add dword ds:[eax + 8], ecx
   83 65 ec 00 ?? and dword ss:[ebp + 0xec<236,-20>], 0
   8d 0c 3f ?? lea ecx, ds:[edi + edi]
   8b d7 ?? mov edx, edi
   c1 ea 1f ?? shr edx, 0x1f<31>
   8d 3c 1b ?? lea edi, ds:[ebx + ebx]
   0b fa ?? or edi, edx
   8b 50 08 ?? mov edx, dword ds:[eax + 8]
   8b f3 ?? mov esi, ebx
   c1 ee 1f ?? shr esi, 0x1f<31>
   8d 1c 12 ?? lea ebx, ds:[edx + edx]
   8b 55 08 ?? mov edx, dword ss:[ebp + 8]
   0b de ?? or ebx, esi
   89 08 ?? mov dword ds:[eax], ecx
   89 78 04 ?? mov dword ds:[eax + 4], edi
   89 58 08 ?? mov dword ds:[eax + 8], ebx
   0f be 12 ?? movsx edx, byte ds:[edx]
   8d 34 11 ?? lea esi, ds:[ecx + edx]
   89 55 f0 ?? mov dword ss:[ebp + 0xf0<240,-16>], edx
   3b f1 ?? cmp esi, ecx
   72 04 ?? jb basic block L18
  
  L17: 3b f2 ?? cmp esi, edx
   73 07 ?? jae basic block L19
  
  L18: c7 45 ec 01 00 00 00 ?? mov dword ss:[ebp + 0xec<236,-20>], 1
  
  L19: 83 7d ec 00 ?? cmp dword ss:[ebp + 0xec<236,-20>], 0
   89 30 ?? mov dword ds:[eax], esi
   74 1c ?? je basic block L25
  
  L20: 8d 4f 01 ?? lea ecx, ds:[edi + 1]
   33 d2 ?? xor edx, edx
   3b cf ?? cmp ecx, edi
   72 05 ?? jb basic block L22
  
  L21: 83 f9 01 ?? cmp ecx, 1
   73 03 ?? jae basic block L23
  
  L22: 33 d2 ?? xor edx, edx
   42 ?? inc edx
  
  L23: 89 48 04 ?? mov dword ds:[eax + 4], ecx
   85 d2 ?? test edx, edx
   74 04 ?? je basic block L25
  
  L24: 43 ?? inc ebx
   89 58 08 ?? mov dword ds:[eax + 8], ebx
  
  L25: ff 4d 0c ?? dec dword ss:[ebp + 12]
   ff 45 08 ?? inc dword ss:[ebp + 8]
   83 7d 0c 00 ?? cmp dword ss:[ebp + 12], 0
   0f 87 e4 fe ff ff ?? ja basic block L2
  
  L26: 33 f6 ?? xor esi, esi
   eb 26 ?? jmp basic block L28
  
  L27: 8b 48 04 ?? mov ecx, dword ds:[eax + 4]
   8b d1 ?? mov edx, ecx
   c1 ea 10 ?? shr edx, 0x10<16>
   89 50 08 ?? mov dword ds:[eax + 8], edx
   8b 10 ?? mov edx, dword ds:[eax]
   8b fa ?? mov edi, edx
   c1 e1 10 ?? shl ecx, 0x10<16>
   c1 ef 10 ?? shr edi, 0x10<16>
   0b cf ?? or ecx, edi
   c1 e2 10 ?? shl edx, 0x10<16>
   81 45 e8 f0 ff 00 00 ?? add dword ss:[ebp + 0xe8<232,-24>], 0x0000fff0<65520>
   89 48 04 ?? mov dword ds:[eax + 4], ecx
   89 10 ?? mov dword ds:[eax], edx
  
  L28: 39 70 08 ?? cmp dword ds:[eax + 8], esi
   74 d5 ?? je basic block L27
  
  L29: bb 00 80 00 00 ?? mov ebx, 0x00008000<32768>
   85 58 08 ?? test dword ds:[eax + 8], ebx
   75 30 ?? jne basic block L31
  
  L30: 8b 30 ?? mov esi, dword ds:[eax]
   8b 78 04 ?? mov edi, dword ds:[eax + 4]
   81 45 e8 ff ff 00 00 ?? add dword ss:[ebp + 0xe8<232,-24>], 0x0000ffff
   8b ce ?? mov ecx, esi
   03 f6 ?? add esi, esi
   c1 e9 1f ?? shr ecx, 0x1f<31>
   89 30 ?? mov dword ds:[eax], esi
   8d 34 3f ?? lea esi, ds:[edi + edi]
   0b f1 ?? or esi, ecx
   8b 48 08 ?? mov ecx, dword ds:[eax + 8]
   8b d7 ?? mov edx, edi
   c1 ea 1f ?? shr edx, 0x1f<31>
   03 c9 ?? add ecx, ecx
   0b ca ?? or ecx, edx
   89 70 04 ?? mov dword ds:[eax + 4], esi
   89 48 08 ?? mov dword ds:[eax + 8], ecx
   85 cb ?? test ebx, ecx
   74 d0 ?? je basic block L30
  
  L31: 66 8b 4d e8 ?? mov cx, word ss:[ebp + 0xe8<232,-24>]
   66 89 48 0a ?? mov word ds:[eax + 10], cx
   8b 4d fc ?? mov ecx, dword ss:[ebp + 0xfc<252,-4>]
   5f ?? pop edi
   5e ?? pop esi
   33 cd ?? xor ecx, ebp
   5b ?? pop ebx
   e8 6e d4 fd ff ?? call function 0x00409b4c
  
  L32: c9 ?? leave
   c3 ?? ret
  
  