Disassembly: 
  L1: 8b ff ?? mov edi, edi
   55 ?? push ebp
   8b ec ?? mov ebp, esp
   83 ec 44 ?? sub esp, 0x44<68>
   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 08 ?? mov eax, dword ss:[ebp + 8]
   b9 10 55 44 00 ?? mov ecx, 0x00445510
   83 e9 60 ?? sub ecx, 0x60<96>
   33 d2 ?? xor edx, edx
   89 4d dc ?? mov dword ss:[ebp + 0xdc<220,-36>], ecx
   39 55 0c ?? cmp dword ss:[ebp + 12], edx
   0f 84 ce 02 00 00 ?? je basic block L63
  
  L2: 7d 0e ?? jge basic block L4
  
  L3: f7 5d 0c ?? neg dword ss:[ebp + 12]
   b9 70 56 44 00 ?? mov ecx, 0x00445670
   83 e9 60 ?? sub ecx, 0x60<96>
   89 4d dc ?? mov dword ss:[ebp + 0xdc<220,-36>], ecx
  
  L4: 39 55 10 ?? cmp dword ss:[ebp + 0x10<16>], edx
   75 05 ?? jne basic block L6
  
  L5: 33 c9 ?? xor ecx, ecx
   66 89 08 ?? mov word ds:[eax], cx
  
  L6: 39 55 0c ?? cmp dword ss:[ebp + 12], edx
   0f 84 ab 02 00 00 ?? je basic block L63
  
  L7: 53 ?? push ebx
   56 ?? push esi
   57 ?? push edi
  
  L8: 8b 4d 0c ?? mov ecx, dword ss:[ebp + 12]
   83 45 dc 54 ?? add dword ss:[ebp + 0xdc<220,-36>], 0x54<84>
   c1 7d 0c 03 ?? sar dword ss:[ebp + 12], 3
   83 e1 07 ?? and ecx, 7
   3b ca ?? cmp ecx, edx
   0f 84 84 02 00 00 ?? je basic block L61
  
  L9: 6b c9 0c ?? imul ecx, ecx, 12
   03 4d dc ?? add ecx, dword ss:[ebp + 0xdc<220,-36>]
   8b d9 ?? mov ebx, ecx
   b9 00 80 00 00 ?? mov ecx, 0x00008000<32768>
   66 39 0b ?? cmp word ds:[ebx], cx
   72 0e ?? jb basic block L11
  
  L10: 8b f3 ?? mov esi, ebx
   8d 7d e4 ?? lea edi, ss:[ebp + 0xe4<228,-28>]
   a5 ?? movsd
   a5 ?? movsd
   a5 ?? movsd
   ff 4d e6 ?? dec dword ss:[ebp + 0xe6<230,-26>]
   8d 5d e4 ?? lea ebx, ss:[ebp + 0xe4<228,-28>]
  
  L11: 0f b7 48 0a ?? movzx ecx, word ds:[eax + 10]
   89 55 c8 ?? mov dword ss:[ebp + 0xc8<200,-56>], edx
   89 55 f0 ?? mov dword ss:[ebp + 0xf0<240,-16>], edx
   89 55 f4 ?? mov dword ss:[ebp + 0xf4<244,-12>], edx
   89 55 f8 ?? mov dword ss:[ebp + 0xf8<248,-8>], edx
   0f b7 53 0a ?? movzx edx, word ds:[ebx + 10]
   8b f2 ?? mov esi, edx
   33 f1 ?? xor esi, ecx
   81 e6 00 80 00 00 ?? and esi, 0x00008000<32768>
   89 75 d0 ?? mov dword ss:[ebp + 0xd0<208,-48>], esi
   be ff 7f 00 00 ?? mov esi, 0x00007fff<32767>
   23 ce ?? and ecx, esi
   23 d6 ?? and edx, esi
   8d 3c 0a ?? lea edi, ds:[edx + ecx]
   0f b7 ff ?? movzx edi, di
   89 7d d8 ?? mov dword ss:[ebp + 0xd8<216,-40>], edi
   8b fe ?? mov edi, esi
   66 3b cf ?? cmp cx, di
   0f 83 06 02 00 00 ?? jae basic block L59
  
  L12: 66 3b d6 ?? cmp dx, si
   0f 83 fd 01 00 00 ?? jae basic block L59
  
  L13: 8b 7d d8 ?? mov edi, dword ss:[ebp + 0xd8<216,-40>]
   be fd bf 00 00 ?? mov esi, 0x0000bffd<49149>
   66 3b fe ?? cmp di, si
   0f 87 ec 01 00 00 ?? ja basic block L59
  
  L14: be bf 3f 00 00 ?? mov esi, 0x00003fbf<16319>
   66 3b fe ?? cmp di, si
   77 0a ?? ja basic block L16
  
  L15: 33 c9 ?? xor ecx, ecx
   89 48 08 ?? mov dword ds:[eax + 8], ecx
   e9 f3 01 00 00 ?? jmp basic block L60
  
  L16: 33 f6 ?? xor esi, esi
   66 3b ce ?? cmp cx, si
   75 21 ?? jne basic block L21
  
  L17: 47 ?? inc edi
   f7 40 08 ff ff ff 7f ?? test dword ds:[eax + 8], 0x7fffffff
   89 7d d8 ?? mov dword ss:[ebp + 0xd8<216,-40>], edi
   75 14 ?? jne basic block L21
  
  L18: 39 70 04 ?? cmp dword ds:[eax + 4], esi
   75 0f ?? jne basic block L21
  
  L19: 39 30 ?? cmp dword ds:[eax], esi
   75 0b ?? jne basic block L21
  
  L20: 33 c9 ?? xor ecx, ecx
   66 89 48 0a ?? mov word ds:[eax + 10], cx
   e9 d0 01 00 00 ?? jmp basic block L61
  
  L21: 66 3b d6 ?? cmp dx, si
   75 23 ?? jne basic block L26
  
  L22: 47 ?? inc edi
   f7 43 08 ff ff ff 7f ?? test dword ds:[ebx + 8], 0x7fffffff
   89 7d d8 ?? mov dword ss:[ebp + 0xd8<216,-40>], edi
   75 16 ?? jne basic block L26
  
  L23: 39 73 04 ?? cmp dword ds:[ebx + 4], esi
   75 11 ?? jne basic block L26
  
  L24: 39 33 ?? cmp dword ds:[ebx], esi
   75 0d ?? jne basic block L26
  
  L25: 89 70 08 ?? mov dword ds:[eax + 8], esi
   89 70 04 ?? mov dword ds:[eax + 4], esi
   89 30 ?? mov dword ds:[eax], esi
   e9 a8 01 00 00 ?? jmp basic block L61
  
  L26: 89 75 cc ?? mov dword ss:[ebp + 0xcc<204,-52>], esi
   8d 75 f4 ?? lea esi, ss:[ebp + 0xf4<244,-12>]
   c7 45 e0 05 00 00 00 ?? mov dword ss:[ebp + 0xe0<224,-32>], 5
  
  L27: 8b 4d cc ?? mov ecx, dword ss:[ebp + 0xcc<204,-52>]
   8b 55 e0 ?? mov edx, dword ss:[ebp + 0xe0<224,-32>]
   03 c9 ?? add ecx, ecx
   89 55 d4 ?? mov dword ss:[ebp + 0xd4<212,-44>], edx
   85 d2 ?? test edx, edx
   7e 53 ?? jle basic block L36
  
  L28: 8d 53 08 ?? lea edx, ds:[ebx + 8]
   03 c8 ?? add ecx, eax
   89 55 c0 ?? mov dword ss:[ebp + 0xc0<192,-64>], edx
   89 4d c4 ?? mov dword ss:[ebp + 0xc4<196,-60>], ecx
  
  L29: 8b 4d c4 ?? mov ecx, dword ss:[ebp + 0xc4<196,-60>]
   8b 55 c0 ?? mov edx, dword ss:[ebp + 0xc0<192,-64>]
   0f b7 12 ?? movzx edx, word ds:[edx]
   0f b7 09 ?? movzx ecx, word ds:[ecx]
   83 65 bc 00 ?? and dword ss:[ebp + 0xbc<188,-68>], 0
   0f af ca ?? imul ecx, edx
   8b 56 fc ?? mov edx, dword ds:[esi + 0xfc<252,-4>]
   8d 3c 0a ?? lea edi, ds:[edx + ecx]
   3b fa ?? cmp edi, edx
   72 04 ?? jb basic block L31
  
  L30: 3b f9 ?? cmp edi, ecx
   73 07 ?? jae basic block L32
  
  L31: c7 45 bc 01 00 00 00 ?? mov dword ss:[ebp + 0xbc<188,-68>], 1
  
  L32: 83 7d bc 00 ?? cmp dword ss:[ebp + 0xbc<188,-68>], 0
   89 7e fc ?? mov dword ds:[esi + 0xfc<252,-4>], edi
   74 03 ?? je basic block L34
  
  L33: 66 ff 06 ?? inc word ds:[esi]
  
  L34: 83 45 c4 02 ?? add dword ss:[ebp + 0xc4<196,-60>], 2
   83 6d c0 02 ?? sub dword ss:[ebp + 0xc0<192,-64>], 2
   ff 4d d4 ?? dec dword ss:[ebp + 0xd4<212,-44>]
   83 7d d4 00 ?? cmp dword ss:[ebp + 0xd4<212,-44>], 0
   7f bb ?? jg basic block L29
  
  L35: 8b 7d d8 ?? mov edi, dword ss:[ebp + 0xd8<216,-40>]
  
  L36: 46 ?? inc esi
   46 ?? inc esi
   ff 45 cc ?? inc dword ss:[ebp + 0xcc<204,-52>]
   ff 4d e0 ?? dec dword ss:[ebp + 0xe0<224,-32>]
   83 7d e0 00 ?? cmp dword ss:[ebp + 0xe0<224,-32>], 0
   7f 90 ?? jg basic block L27
  
  L37: 81 c7 02 c0 00 00 ?? add edi, 0x0000c002<49154>
   66 85 ff ?? test di, di
   7e 3b ?? jle basic block L41
  
  L38: f7 45 f8 00 00 00 80 ?? test dword ss:[ebp + 0xf8<248,-8>], 0x80000000
   75 2d ?? jne basic block L40
  
  L39: 8b 75 f4 ?? mov esi, dword ss:[ebp + 0xf4<244,-12>]
   8b 4d f0 ?? mov ecx, dword ss:[ebp + 0xf0<240,-16>]
   d1 65 f0 ?? shl dword ss:[ebp + 0xf0<240,-16>], 1
   c1 e9 1f ?? shr ecx, 0x1f<31>
   8b d6 ?? mov edx, esi
   03 f6 ?? add esi, esi
   0b f1 ?? or esi, ecx
   8b 4d f8 ?? mov ecx, dword ss:[ebp + 0xf8<248,-8>]
   c1 ea 1f ?? shr edx, 0x1f<31>
   03 c9 ?? add ecx, ecx
   0b ca ?? or ecx, edx
   81 c7 ff ff 00 00 ?? add edi, 0x0000ffff
   89 75 f4 ?? mov dword ss:[ebp + 0xf4<244,-12>], esi
   89 4d f8 ?? mov dword ss:[ebp + 0xf8<248,-8>], ecx
   66 85 ff ?? test di, di
   7f ca ?? jg basic block L38
  
  L40: 66 85 ff ?? test di, di
   7f 4d ?? jg basic block L48
  
  L41: 81 c7 ff ff 00 00 ?? add edi, 0x0000ffff
   66 85 ff ?? test di, di
   7d 42 ?? jge basic block L48
  
  L42: 8b cf ?? mov ecx, edi
   f7 d9 ?? neg ecx
   0f b7 f1 ?? movzx esi, cx
   03 fe ?? add edi, esi
  
  L43: f6 45 f0 01 ?? test byte ss:[ebp + 0xf0<240,-16>], 1
   74 03 ?? je basic block L45
  
  L44: ff 45 c8 ?? inc dword ss:[ebp + 0xc8<200,-56>]
  
  L45: 8b 4d f8 ?? mov ecx, dword ss:[ebp + 0xf8<248,-8>]
   8b 5d f4 ?? mov ebx, dword ss:[ebp + 0xf4<244,-12>]
   8b 55 f4 ?? mov edx, dword ss:[ebp + 0xf4<244,-12>]
   d1 6d f8 ?? shr dword ss:[ebp + 0xf8<248,-8>], 1
   c1 e1 1f ?? shl ecx, 0x1f<31>
   d1 eb ?? shr ebx, 1
   0b d9 ?? or ebx, ecx
   8b 4d f0 ?? mov ecx, dword ss:[ebp + 0xf0<240,-16>]
   c1 e2 1f ?? shl edx, 0x1f<31>
   d1 e9 ?? shr ecx, 1
   0b ca ?? or ecx, edx
   4e ?? dec esi
   89 5d f4 ?? mov dword ss:[ebp + 0xf4<244,-12>], ebx
   89 4d f0 ?? mov dword ss:[ebp + 0xf0<240,-16>], ecx
   75 d1 ?? jne basic block L43
  
  L46: 39 75 c8 ?? cmp dword ss:[ebp + 0xc8<200,-56>], esi
   74 05 ?? je basic block L48
  
  L47: 66 83 4d f0 01 ?? or word ss:[ebp + 0xf0<240,-16>], 1
  
  L48: b9 00 80 00 00 ?? mov ecx, 0x00008000<32768>
   8b d1 ?? mov edx, ecx
   66 39 55 f0 ?? cmp word ss:[ebp + 0xf0<240,-16>], dx
   77 11 ?? ja basic block L50
  
  L49: 8b 55 f0 ?? mov edx, dword ss:[ebp + 0xf0<240,-16>]
   81 e2 ff ff 01 00 ?? and edx, 0x0001ffff
   81 fa 00 80 01 00 ?? cmp edx, 0x00018000
   75 34 ?? jne basic block L57
  
  L50: 83 7d f2 ff ?? cmp dword ss:[ebp + 0xf2<242,-14>], 0xff<255,-1>
   75 2b ?? jne basic block L56
  
  L51: 83 65 f2 00 ?? and dword ss:[ebp + 0xf2<242,-14>], 0
   83 7d f6 ff ?? cmp dword ss:[ebp + 0xf6<246,-10>], 0xff<255,-1>
   75 1c ?? jne basic block L55
  
  L52: 83 65 f6 00 ?? and dword ss:[ebp + 0xf6<246,-10>], 0
   ba ff ff 00 00 ?? mov edx, 0x0000ffff
   66 39 55 fa ?? cmp word ss:[ebp + 0xfa<250,-6>], dx
   75 07 ?? jne basic block L54
  
  L53: 66 89 4d fa ?? mov word ss:[ebp + 0xfa<250,-6>], cx
   47 ?? inc edi
   eb 0e ?? jmp basic block L57
  
  L54: 66 ff 45 fa ?? inc word ss:[ebp + 0xfa<250,-6>]
   eb 08 ?? jmp basic block L57
  
  L55: ff 45 f6 ?? inc dword ss:[ebp + 0xf6<246,-10>]
   eb 03 ?? jmp basic block L57
  
  L56: ff 45 f2 ?? inc dword ss:[ebp + 0xf2<242,-14>]
  
  L57: b9 ff 7f 00 00 ?? mov ecx, 0x00007fff<32767>
   66 3b f9 ?? cmp di, cx
   73 1c ?? jae basic block L59
  
  L58: 66 8b 4d f2 ?? mov cx, word ss:[ebp + 0xf2<242,-14>]
   0b 7d d0 ?? or edi, dword ss:[ebp + 0xd0<208,-48>]
   66 89 08 ?? mov word ds:[eax], cx
   8b 4d f4 ?? mov ecx, dword ss:[ebp + 0xf4<244,-12>]
   89 48 02 ?? mov dword ds:[eax + 2], ecx
   8b 4d f8 ?? mov ecx, dword ss:[ebp + 0xf8<248,-8>]
   89 48 06 ?? mov dword ds:[eax + 6], ecx
   66 89 78 0a ?? mov word ds:[eax + 10], di
   eb 20 ?? jmp basic block L61
  
  L59: 33 d2 ?? xor edx, edx
   33 c9 ?? xor ecx, ecx
   66 39 4d d0 ?? cmp word ss:[ebp + 0xd0<208,-48>], cx
   0f 94 c2 ?? sete dl
   4a ?? dec edx
   81 e2 00 00 00 80 ?? and edx, 0x80000000
   81 c2 00 80 ff 7f ?? add edx, 0x7fff8000
   89 50 08 ?? mov dword ds:[eax + 8], edx
  
  L60: 89 48 04 ?? mov dword ds:[eax + 4], ecx
   89 08 ?? mov dword ds:[eax], ecx
  
  L61: 33 d2 ?? xor edx, edx
   39 55 0c ?? cmp dword ss:[ebp + 12], edx
   0f 85 5b fd ff ff ?? jne basic block L8
  
  L62: 5f ?? pop edi
   5e ?? pop esi
   5b ?? pop ebx
  
  L63: 8b 4d fc ?? mov ecx, dword ss:[ebp + 0xfc<252,-4>]
   33 cd ?? xor ecx, ebp
   e8 42 00 fe ff ?? call function 0x00409b4c
  
  L64: c9 ?? leave
   c3 ?? ret
  
  