Function at 0x64750fe0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0xbc
mov ecx, dword [esp + 0xd0]
test ecx, ecx
je 0x64752090
mov ecx, dword [esp + 0xd0]
mov edx, dword [ecx + 0x14]
test edx, edx
je 0x64752090
fld dword [0x64814574]
fld st(0)
fmul dword [esp + 0xe4]
fld dword [0x64814578]
fadd st(1), st(0)
fxch st(1)
fnstcw word [esp + 0x8e]
mov ax, word [esp + 0x8e]
mov ah, 0xc
mov word [esp + 0x8c], ax
fldcw word [esp + 0x8c]
fistp dword [esp + 0x4c]
fldcw word [esp + 0x8e]
fld st(1)
fmul dword [esp + 0xdc]
fadd st(1)
fstp qword [esp]
fstp qword [esp + 0x10]
fstp qword [esp + 0x20]
call fcn.647d44b4
fnstcw word [esp + 0x8e]
mov ax, word [esp + 0x8e]
mov ah, 0xc
mov word [esp + 0x8c], ax
fldcw word [esp + 0x8c]
fistp dword [esp + 0x88]
fldcw word [esp + 0x8e]
mov edi, dword [esp + 0x88]
fld qword [esp + 0x20]
fmul dword [esp + 0xe0]
fld qword [esp + 0x10]
faddp st(1)
fstp qword [esp]
call fcn.647d44b4
fnstcw word [esp + 0x8e]
mov ax, word [esp + 0x8e]
mov ah, 0xc
mov word [esp + 0x8c], ax
fldcw word [esp + 0x8c]
fistp dword [esp + 0x88]
fldcw word [esp + 0x8e]
mov ebp, dword [esp + 0x88]
test edi, edi
jne 0x64751100
test ebp, ebp
jne 0x64751100
mov dword [esp + 0xd4], 0
mov eax, dword [0x64877ae4]
test eax, eax
jne 0x64751163
mov dword [0x64877ae4], 1
xor eax, eax
lea esi, [esi]
mov edx, eax
imul edx, eax
mov ecx, edx
imul ecx, eax
mov ebx, edx
shr ebx, 6
mov esi, ecx
shr esi, 0x11
sub ebx, esi
lea esi, [eax*8]
sub ebx, esi
mov word [eax + eax + 0x64876ac0], bx
lea ecx, [ecx + ecx*2]
shr ecx, 0x11
lea edx, [edx + edx*4]
shr edx, 7
sub ecx, edx
add ecx, 0x4000
mov word [eax + eax + 0x648772e0], cx
inc eax
cmp eax, 0x401
jne 0x64751118
mov eax, dword [sym.allegro_5.0.10_monolith_mt.dll_dumb_resampling_quality]
mov ebx, dword [esp + 0xd0]
mov ebx, dword [ebx + 0x24]
mov dword [esp + 0x84], ebx
cmp eax, ebx
jle 0x6475201a
mov eax, dword [esp + 0xd8]
test eax, eax
jle 0x64752090
shl edi, 0xc
mov dword [esp + 0x58], edi
shl ebp, 0xc
mov dword [esp + 0x54], ebp
mov dword [esp + 0x78], 0
lea edi, [esp + 0xa0]
mov dword [esp + 0x2c], edi
lea esi, [esi]
mov eax, dword [esp + 0xd0]
call fcn.64747b68
test eax, eax
jne 0x647514d5
mov ecx, dword [esp + 0xd0]
mov ebx, dword [ecx + 0x14]
mov esi, dword [esp + 0x4c]
xor esi, ebx
js 0x64751588
test ebx, ebx
js 0x64751520
mov ecx, dword [esp + 0xd0]
mov ecx, dword [ecx + 4]
mov dword [esp + 0x74], ecx
mov esi, dword [esp + 0xd0]
mov ebp, dword [esi + 8]
mov eax, dword [esp + 0x4c]
cdq
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], edx
mov esi, dword [esi + 0x10]
sub esi, dword [esp + 0x74]
mov edi, esi
sar edi, 0x1f
shld edi, esi, 0x10
shl esi, 0x10
mov eax, ebp
cdq
sub esi, ebp
sbb edi, edx
add esi, 0xffffffff
adc edi, 0xffffffff
add esi, dword [esp + 0x30]
adc edi, dword [esp + 0x34]
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x34]
mov dword [esp + 8], eax
mov dword [esp + 0xc], edx
mov dword [esp], esi
mov dword [esp + 4], edi
call fcn.647cbbc4
test eax, eax
js 0x64751510
mov edx, dword [esp + 0xd8]
sub edx, dword [esp + 0x78]
mov dword [esp + 0x5c], eax
cmp eax, edx
jle 0x6475126e
mov dword [esp + 0x5c], edx
mov ecx, dword [esp + 0x5c]
add dword [esp + 0x78], ecx
mov esi, dword [esp + 0xd0]
mov esi, dword [esi]
mov dword [esp + 0x7c], esi
test ebx, ebx
js 0x64751594
mov eax, dword [esp + 0xd4]
test eax, eax
je 0x64751f78
mov eax, dword [sym.allegro_5.0.10_monolith_mt.dll_dumb_resampling_quality]
test eax, eax
jle 0x64751800
dec eax
je 0x64751ec0
mov esi, dword [esp + 0xd0]
mov eax, dword [esi + 0x28]
mov dword [esp + 0x98], eax
mov ebx, dword [esi + 0x2c]
mov dword [esp + 0x9c], ebx
mov edi, dword [esi + 0x30]
mov dword [esp + 0xa0], edi
mov ecx, dword [esp + 0x74]
mov esi, dword [esp + 0x7c]
mov ecx, dword [esi + ecx*4]
mov dword [esp + 0x40], ecx
mov dword [esp + 0xa4], ecx
mov esi, dword [esp + 0xd0]
mov edx, dword [esi + 0x10]
mov ecx, dword [esp + 0x74]
inc ecx
cmp ecx, edx
jge 0x6475130a
mov esi, dword [esp + 0x7c]
mov ecx, dword [esi + ecx*4]
mov dword [esp + 0xa8], ecx
mov ecx, dword [esp + 0x74]
add ecx, 2
cmp edx, ecx
jle 0x64751323
mov esi, dword [esp + 0x7c]
mov edx, dword [esi + ecx*4]
mov dword [esp + 0xac], edx
mov esi, dword [esp + 0x5c]
test esi, esi
je 0x6475322e
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x30], ecx
lea ecx, [esp + 0xa4]
mov dword [esp + 0x38], ebp
mov ebp, ebx
mov esi, edi
mov ebx, dword [esp + 0xd4]
mov edx, dword [esp + 0x40]
jmp 0x64751374
lea edx, [esp + 0xb0]
cmp ecx, edx
jae 0x647518b4
mov eax, dword [ecx - 0xc]
mov ebp, dword [ecx - 8]
mov esi, dword [ecx - 4]
mov edi, dword [ecx]
mov dword [esp + 0x40], edi
mov edx, edi
shl eax, 4
mov dword [esp + 0x50], eax
mov edi, dword [esp + 0x38]
sar edi, 6
movsx eax, word [edi + edi + 0x64876ac0]
shl eax, 0xe
mov dword [esp + 0x60], eax
shl ebp, 4
mov dword [esp + 0x44], ebp
movsx ebp, word [edi + edi + 0x648772e0]
shl ebp, 0xe
shl esi, 4
mov dword [esp + 0x48], esi
xor edi, 0x3ff
inc edi
movsx esi, word [edi + edi + 0x648772e0]
shl esi, 0xe
shl edx, 4
mov dword [esp + 0x40], edx
movsx edi, word [edi + edi + 0x64876ac0]
shl edi, 0xe
mov eax, dword [esp + 0x50]
imul dword [esp + 0x60]
mov dword [esp + 0x64], edx
mov eax, dword [esp + 0x44]
imul ebp
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], edx
mov ebp, dword [esp + 0x64]
add ebp, edx
mov eax, dword [esp + 0x48]
imul esi
mov dword [esp + 0x64], edx
mov esi, dword [esp + 0x64]
add esi, ebp
mov eax, dword [esp + 0x40]
imul edi
lea edi, [esi + edx]
shl edi, 4
mov eax, dword [esp + 0x58]
imul edi
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], edx
add dword [ebx], edx
mov eax, dword [esp + 0x54]
imul edi
add dword [ebx + 4], edx
add ebx, 8
mov eax, dword [esp + 0x38]
add eax, dword [esp + 0x4c]
mov edx, eax
sar edx, 0x10
add dword [esp + 0x30], edx
lea ecx, [ecx + edx*4]
and eax, 0xffff
mov dword [esp + 0x38], eax
dec dword [esp + 0x5c]
jne 0x64751354
mov ebp, eax
mov dword [esp + 0xd4], ebx
nop
mov edx, dword [esp + 0x30]
sub edx, dword [esp + 0x74]
mov eax, dword [esp + 0x30]
mov edi, dword [esp + 0xd0]
sub eax, dword [edi + 0x10]
cmp edx, 2
jle 0x647514e4
cmp eax, 2
jg 0x647517d8
mov ecx, dword [esp + 0x30]
mov ebx, dword [esp + 0x7c]
mov edx, dword [ebx + ecx*4 - 0xc]
mov dword [edi + 0x28], edx
cmp eax, 2
je 0x647517e6
mov edx, dword [ebx + ecx*4 - 8]
mov dword [edi + 0x2c], edx
dec eax
je 0x64751ff6
mov eax, dword [ebx + ecx*4 - 4]
mov esi, dword [esp + 0xd0]
lea esi, [esi]
mov dword [esi + 0x30], eax
mov ecx, dword [esp + 0x30]
mov edi, dword [esp + 0xd0]
mov dword [edi + 4], ecx
mov dword [edi + 8], ebp
mov eax, dword [esp + 0x78]
cmp dword [esp + 0xd8], eax
jg 0x647511b4
mov eax, dword [esp + 0x78]
add esp, 0xbc
pop ebx
pop esi
pop edi
pop ebp
ret
jne 0x64751fd4
mov edi, dword [esp + 0xd0]
mov edx, dword [edi + 0x30]
mov dword [edi + 0x28], edx
cmp eax, 1
jle 0x647522a0
mov esi, edi
mov dword [edi + 0x2c], 0
xor eax, eax
jmp 0x647514b0
mov dword [esp + 0x5c], 0
jmp 0x6475126e
mov edi, dword [esp + 0xd0]
mov edi, dword [edi + 4]
mov dword [esp + 0x74], edi
mov ecx, dword [esp + 0xd0]
mov ebp, dword [ecx + 8]
mov eax, dword [esp + 0x4c]
cdq
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], edx
mov esi, edi
sub esi, dword [ecx + 0xc]
mov edi, esi
sar edi, 0x1f
shld edi, esi, 0x10
shl esi, 0x10
mov eax, ebp
cdq
add esi, ebp
adc edi, edx
sub esi, dword [esp + 0x30]
sbb edi, dword [esp + 0x34]
mov eax, dword [esp + 0x4c]
neg eax
mov dword [esp + 8], eax
cdq
mov dword [esp + 0xc], edx
mov dword [esp], esi
mov dword [esp + 4], edi
call fcn.647cbbc4
jmp 0x6475124f
neg dword [esp + 0x4c]
jmp 0x647511de
mov eax, dword [esp + 0xd4]
test eax, eax
je 0x64752cc4
mov eax, dword [esp + 0x84]
test eax, eax
jle 0x647522b0
cmp dword [esp + 0x84], 1
je 0x64752bfa
mov esi, dword [esp + 0xd0]
mov esi, dword [esi + 0x28]
mov dword [esp + 0x40], esi
mov dword [esp + 0x98], esi
mov ecx, dword [esp + 0xd0]
mov edi, dword [ecx + 0x2c]
mov dword [esp + 0x9c], edi
mov ebx, dword [ecx + 0x30]
mov dword [esp + 0xa0], ebx
mov esi, dword [esp + 0x74]
mov ecx, dword [esp + 0x7c]
mov eax, dword [ecx + esi*4]
mov dword [esp + 0xa4], eax
mov esi, dword [esp + 0xd0]
mov esi, dword [esi + 0xc]
mov dword [esp + 0x80], esi
mov ecx, dword [esp + 0x74]
cmp esi, ecx
jl 0x64752004
lea edx, [ecx - 1]
cmp dword [esp + 0x80], edx
jge 0x6475163e
mov ecx, dword [esp + 0x74]
mov esi, dword [esp + 0x7c]
mov edx, dword [esi + ecx*4 - 8]
mov dword [esp + 0xac], edx
mov ecx, dword [esp + 0x74]
mov edx, dword [esp + 0x5c]
test edx, edx
mov dword [esp + 0x30], ecx
je 0x64751774
lea ecx, [esp + 0xa4]
mov dword [esp + 0x38], ebp
mov ebp, ebx
mov esi, edi
mov ebx, dword [esp + 0xd4]
mov edx, dword [esp + 0x40]
jmp 0x64751690
lea edx, [esp + 0xb0]
cmp ecx, edx
jae 0x647525fd
mov eax, dword [ecx]
mov ebp, dword [ecx - 4]
mov esi, dword [ecx - 8]
mov edi, dword [ecx - 0xc]
mov dword [esp + 0x40], edi
mov edx, edi
shl eax, 4
mov dword [esp + 0x50], eax
mov edi, dword [esp + 0x38]
sar edi, 6
movsx eax, word [edi + edi + 0x64876ac0]
shl eax, 0xe
mov dword [esp + 0x60], eax
shl ebp, 4
mov dword [esp + 0x44], ebp
movsx ebp, word [edi + edi + 0x648772e0]
shl ebp, 0xe
shl esi, 4
mov dword [esp + 0x48], esi
xor edi, 0x3ff
inc edi
movsx esi, word [edi + edi + 0x648772e0]
shl esi, 0xe
shl edx, 4
mov dword [esp + 0x40], edx
movsx edi, word [edi + edi + 0x64876ac0]
shl edi, 0xe
mov eax, dword [esp + 0x50]
imul dword [esp + 0x60]
mov dword [esp + 0x64], edx
mov eax, dword [esp + 0x44]
imul ebp
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], edx
mov ebp, dword [esp + 0x64]
add ebp, edx
mov eax, dword [esp + 0x48]
imul esi
mov dword [esp + 0x64], edx
mov esi, dword [esp + 0x64]
add esi, ebp
mov eax, dword [esp + 0x40]
imul edi
lea edi, [esi + edx]
shl edi, 4
mov eax, dword [esp + 0x58]
imul edi
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], edx
add dword [ebx], edx
mov eax, dword [esp + 0x54]
imul edi
add dword [ebx + 4], edx
add ebx, 8
mov eax, dword [esp + 0x38]
add eax, dword [esp + 0x4c]
mov edx, eax
sar edx, 0x10
add dword [esp + 0x30], edx
shl edx, 2
sub ecx, edx
and eax, 0xffff
mov dword [esp + 0x38], eax
dec dword [esp + 0x5c]
jne 0x64751670
mov ebp, eax
mov dword [esp + 0xd4], ebx
mov edx, dword [esp + 0x74]
sub edx, dword [esp + 0x30]
mov eax, dword [esp + 0x80]
sub eax, dword [esp + 0x30]
dec eax
cmp edx, 2
jle 0x64752040
cmp eax, 2
jg 0x6475206c
mov edi, dword [esp + 0x30]
mov ecx, dword [esp + 0x7c]
mov edx, dword [ecx + edi*4 + 0xc]
mov ebx, dword [esp + 0xd0]
mov dword [ebx + 0x28], edx
cmp eax, 2
je 0x6475207a
mov edx, dword [ecx + edi*4 + 8]
mov dword [ebx + 0x2c], edx
dec eax
je 0x64751ff6
mov eax, dword [ecx + edi*4 + 4]
mov esi, dword [esp + 0xd0]
jmp 0x647514b0
mov ecx, dword [esp + 0xd0]
mov dword [ecx + 0x28], 0
mov ebx, dword [esp + 0xd0]
mov dword [ebx + 0x2c], 0
xor eax, eax
mov esi, ebx
jmp 0x647514b0
mov ebx, dword [esp + 0xd0]
mov ecx, dword [ebx + 0x2c]
mov dword [esp + 0x98], ecx
mov eax, dword [ebx + 0x30]
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0x5c]
test eax, eax
je 0x6475323b
mov esi, dword [esp + 0x74]
mov dword [esp + 0x38], esi
lea ebx, [esp + 0x98]
mov edi, dword [esp + 0x5c]
mov esi, dword [esp + 0xd4]
jmp 0x64751850
cmp ebx, dword [esp + 0x2c]
jae 0x647520a8
mov ecx, dword [ebx]
shl ecx, 4
mov eax, dword [esp + 0x58]
imul ecx
add dword [esi], edx
mov eax, dword [esp + 0x54]
imul ecx
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], edx
add dword [esi + 4], edx
add esi, 8
mov eax, dword [esp + 0x4c]
add eax, ebp
mov edx, eax
sar edx, 0x10
add dword [esp + 0x38], edx
lea ebx, [ebx + edx*4]
movzx ebp, ax
dec edi
jne 0x64751844
mov dword [esp + 0xd4], esi
mov ebx, dword [esp + 0x38]
mov esi, dword [esp + 0x7c]
lea ebx, [esi + ebx*4]
mov dword [esp + 0x44], ebx
mov edi, ebx
sub edi, dword [esp + 0x44]
sar edi, 2
add edi, dword [esp + 0x38]
mov dword [esp + 0x30], edi
jmp 0x64751458
mov ebp, dword [esp + 0x38]
mov dword [esp + 0xd4], ebx
mov ecx, dword [esp + 0x30]
mov esi, dword [esp + 0x7c]
lea ebx, [esi + ecx*4]
test byte [esp + 0x5c], 2
je 0x64751a7a
mov edi, dword [ebx - 0xc]
shl edi, 4
mov dword [esp + 0x38], edi
mov edx, ebp
sar edx, 6
movsx eax, word [edx + edx + 0x64876ac0]
shl eax, 0xe
mov dword [esp + 0x50], eax
mov esi, dword [ebx - 8]
shl esi, 4
movsx ecx, word [edx + edx + 0x648772e0]
shl ecx, 0xe
mov dword [esp + 0x40], ecx
mov edi, dword [ebx - 4]
shl edi, 4
mov dword [esp + 0x44], edi
xor edx, 0x3ff
inc edx
movsx edi, word [edx + edx + 0x648772e0]
shl edi, 0xe
mov ecx, dword [ebx]
shl ecx, 4
mov dword [esp + 0x48], ecx
movsx ecx, word [edx + edx + 0x64876ac0]
shl ecx, 0xe
mov eax, dword [esp + 0x38]
imul dword [esp + 0x50]
mov dword [esp + 0x3c], edx
mov eax, dword [esp + 0x40]
imul esi
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], edx
mov esi, dword [esp + 0x3c]
add esi, edx
mov eax, dword [esp + 0x44]
imul edi
add esi, edx
mov eax, dword [esp + 0x48]
imul ecx
add esi, edx
shl esi, 4
mov eax, dword [esp + 0x58]
imul esi
mov ecx, dword [esp + 0xd4]
add dword [ecx], edx
mov eax, dword [esp + 0x54]
imul esi
add dword [ecx + 4], edx
mov eax, dword [esp + 0x4c]
add eax, ebp
mov edx, eax
sar edx, 0x10
mov ecx, dword [esp + 0x30]
add ecx, edx
mov dword [esp + 0x48], ecx
lea ebp, [ebx + edx*4]
and eax, 0xffff
mov dword [esp + 0x44], eax
mov ebx, dword [ebp - 0xc]
shl ebx, 4
mov dword [esp + 0x30], ebx
mov edx, eax
sar edx, 6
movsx esi, word [edx + edx + 0x64876ac0]
shl esi, 0xe
mov dword [esp + 0x50], esi
mov esi, dword [ebp - 8]
shl esi, 4
movsx edi, word [edx + edx + 0x648772e0]
shl edi, 0xe
mov dword [esp + 0x38], edi
mov ecx, dword [ebp - 4]
shl ecx, 4
mov dword [esp + 0x40], ecx
xor edx, 0x3ff
inc edx
movsx edi, word [edx + edx + 0x648772e0]
shl edi, 0xe
mov ebx, dword [ebp]
shl ebx, 4
movsx ecx, word [edx + edx + 0x64876ac0]
shl ecx, 0xe
mov eax, dword [esp + 0x30]
imul dword [esp + 0x50]
mov dword [esp + 0x34], edx
mov eax, dword [esp + 0x38]
imul esi
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], edx
mov esi, dword [esp + 0x34]
add esi, edx
mov eax, dword [esp + 0x40]
imul edi
add esi, edx
mov eax, ebx
imul ecx
add esi, edx
shl esi, 4
mov eax, dword [esp + 0x58]
imul esi
mov dword [esp + 0x34], edx
mov ecx, dword [esp + 0xd4]
add dword [ecx + 8], edx
mov eax, dword [esp + 0x54]
imul esi
add dword [ecx + 0xc], edx
add ecx, 0x10
mov dword [esp + 0xd4], ecx
mov eax, dword [esp + 0x44]
add eax, dword [esp + 0x4c]
mov edx, eax
sar edx, 0x10
mov ecx, dword [esp + 0x48]
add ecx, edx
mov dword [esp + 0x30], ecx
lea ebx, [ebp + edx*4]
movzx ebp, ax
test byte [esp + 0x5c], 1
je 0x64753283
mov edi, dword [ebx - 0xc]
shl edi, 4
mov dword [esp + 0x38], edi
mov edx, ebp
sar edx, 6
movsx eax, word [edx + edx + 0x64876ac0]
shl eax, 0xe
mov dword [esp + 0x50], eax
mov esi, dword [ebx - 8]
shl esi, 4
movsx ecx, word [edx + edx + 0x648772e0]
shl ecx, 0xe
mov dword [esp + 0x40], ecx
mov edi, dword [ebx - 4]
shl edi, 4
mov dword [esp + 0x44], edi
xor edx, 0x3ff
inc edx
movsx edi, word [edx + edx + 0x648772e0]
shl edi, 0xe
mov ecx, dword [ebx]
shl ecx, 4
mov dword [esp + 0x48], ecx
movsx ecx, word [edx + edx + 0x64876ac0]
shl ecx, 0xe
mov eax, dword [esp + 0x38]
imul dword [esp + 0x50]
mov dword [esp + 0x3c], edx
mov eax, dword [esp + 0x40]
imul esi
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], edx
mov esi, dword [esp + 0x3c]
add esi, edx
mov eax, dword [esp + 0x44]
imul edi
add esi, edx
mov eax, dword [esp + 0x48]
imul ecx
add esi, edx
shl esi, 4
mov eax, dword [esp + 0x58]
imul esi
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], edx
mov ecx, dword [esp + 0xd4]
add dword [ecx], edx
mov eax, dword [esp + 0x54]
imul esi
add dword [ecx + 4], edx
add ecx, 8
mov dword [esp + 0xd4], ecx
mov eax, dword [esp + 0x4c]
add eax, ebp
mov edx, eax
sar edx, 0x10
add dword [esp + 0x30], edx
lea ebx, [ebx + edx*4]
movzx ebp, ax
mov ecx, dword [esp + 0x5c]
sar ecx, 2
mov dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0x5c]
test ecx, ecx
je 0x64751458
mov esi, dword [esp + 0x5c]
mov dword [esp + 0x70], esi
mov ecx, dword [esp + 0xd4]
mov dword [esp + 0x50], ebp
mov esi, ebx
mov eax, ebp
mov edi, dword [esi - 0xc]
shl edi, 4
mov dword [esp + 0x60], edi
sar eax, 6
movsx edx, word [eax + eax + 0x64876ac0]
shl edx, 0xe
mov ebx, dword [esi - 8]
shl ebx, 4
mov dword [esp + 0x38], ebx
movsx ebp, word [eax + eax + 0x648772e0]
shl ebp, 0xe
mov edi, dword [esi - 4]
shl edi, 4
xor eax, 0x3ff
inc eax
movsx ebx, word [eax + eax + 0x648772e0]
shl ebx, 0xe
mov dword [esp + 0x40], ebx
mov ebx, dword [esi]
shl ebx, 4
mov dword [esp + 0x44], ebx
movsx eax, word [eax + eax + 0x64876ac0]
shl eax, 0xe
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x60]
imul edx
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], edx
mov eax, dword [esp + 0x38]
imul ebp
mov ebx, dword [esp + 0x6c]
add ebx, edx
mov eax, dword [esp + 0x40]
imul edi
add ebx, edx
mov eax, dword [esp + 0x44]
imul dword [esp + 0x48]
add ebx, edx
shl ebx, 4
mov eax, dword [esp + 0x58]
imul ebx
add dword [ecx], edx
mov eax, dword [esp + 0x54]
imul ebx
mov dword [esp + 0x3c], edx
add dword [ecx + 4], edx
mov eax, dword [esp + 0x50]
add eax, dword [esp + 0x4c]
mov edx, eax
sar edx, 0x10
mov ebx, dword [esp + 0x30]
add ebx, edx
mov dword [esp + 0x50], ebx
lea ebx, [esi + edx*4]
and eax, 0xffff
mov dword [esp + 0x48], eax
mov esi, dword [ebx - 0xc]
shl esi, 4
mov dword [esp + 0x30], esi
mov edx, eax
sar edx, 6
movsx edi, word [edx + edx + 0x64876ac0]
shl edi, 0xe
mov dword [esp + 0x60], edi
mov ebp, dword [ebx - 8]
shl ebp, 4
movsx edi, word [edx + edx + 0x648772e0]
shl edi, 0xe
mov esi, dword [ebx - 4]
shl esi, 4
mov dword [esp + 0x38], esi
xor edx, 0x3ff
inc edx
movsx esi, word [edx + edx + 0x648772e0]
shl esi, 0xe
mov eax, dword [ebx]
shl eax, 4
mov dword [esp + 0x40], eax
movsx edx, word [edx + edx + 0x64876ac0]
shl edx, 0xe
mov dword [esp + 0x44], edx
mov eax, dword [esp + 0x30]
imul dword [esp + 0x60]
mov dword [esp + 0x34], edx
mov eax, ebp
imul edi
mov edi, dword [esp + 0x34]
add edi, edx
mov eax, dword [esp + 0x38]
imul esi
add edi, edx
mov eax, dword [esp + 0x40]
imul dword [esp + 0x44]
add edi, edx
shl edi, 4
mov eax, dword [esp + 0x58]
imul edi
add dword [ecx + 8], edx
mov eax, dword [esp + 0x54]
imul edi
add dword [ecx + 0xc], edx
mov eax, dword [esp + 0x48]
add eax, dword [esp + 0x4c]
mov edx, eax
sar edx, 0x10
mov esi, dword [esp + 0x50]
add esi, edx
mov dword [esp + 0x50], esi
lea ebx, [ebx + edx*4]
and eax, 0xffff
mov dword [esp + 0x48], eax
mov edi, dword [ebx - 0xc]
shl edi, 4
mov dword [esp + 0x30], edi
mov edx, eax
sar edx, 6
movsx eax, word [edx + edx + 0x64876ac0]
shl eax, 0xe
mov dword [esp + 0x60], eax
mov ebp, dword [ebx - 8]
shl ebp, 4
movsx edi, word [edx + edx + 0x648772e0]
shl edi, 0xe
mov esi, dword [ebx - 4]
shl esi, 4
mov dword [esp + 0x38], esi
xor edx, 0x3ff
inc edx
movsx esi, word [edx + edx + 0x648772e0]
shl esi, 0xe
mov eax, dword [ebx]
shl eax, 4
mov dword [esp + 0x40], eax
movsx edx, word [edx + edx + 0x64876ac0]
shl edx, 0xe
mov dword [esp + 0x44], edx
mov eax, dword [esp + 0x30]
imul dword [esp + 0x60]
mov dword [esp + 0x34], edx
mov eax, ebp
imul edi
mov edi, dword [esp + 0x34]
add edi, edx
mov eax, dword [esp + 0x38]
imul esi
add edi, edx
mov eax, dword [esp + 0x40]
imul dword [esp + 0x44]
add edi, edx
shl edi, 4
mov eax, dword [esp + 0x58]
imul edi
add dword [ecx + 0x10], edx
mov eax, dword [esp + 0x54]
imul edi
add dword [ecx + 0x14], edx
mov eax, dword [esp + 0x48]
add eax, dword [esp + 0x4c]
mov edx, eax
sar edx, 0x10
mov esi, dword [esp + 0x50]
add esi, edx
mov dword [esp + 0x50], esi
lea ebx, [ebx + edx*4]
and eax, 0xffff
mov dword [esp + 0x48], eax
mov edi, dword [ebx - 0xc]
shl edi, 4
mov dword [esp + 0x30], edi
mov edx, eax
sar edx, 6
movsx eax, word [edx + edx + 0x64876ac0]
shl eax, 0xe
mov dword [esp + 0x60], eax
mov ebp, dword [ebx - 8]
shl ebp, 4
movsx edi, word [edx + edx + 0x648772e0]
shl edi, 0xe
mov esi, dword [ebx - 4]
shl esi, 4
mov dword [esp + 0x38], esi
xor edx, 0x3ff
inc edx
movsx esi, word [edx + edx + 0x648772e0]
shl esi, 0xe
mov eax, dword [ebx]
shl eax, 4
mov dword [esp + 0x40], eax
movsx edx, word [edx + edx + 0x64876ac0]
shl edx, 0xe
mov dword [esp + 0x44], edx
mov eax, dword [esp + 0x30]
imul dword [esp + 0x60]
mov dword [esp + 0x34], edx
mov eax, ebp
imul edi
mov edi, dword [esp + 0x34]
add edi, edx
mov eax, dword [esp + 0x38]
imul esi
add edi, edx
mov eax, dword [esp + 0x40]
imul dword [esp + 0x44]
add edi, edx
shl edi, 4
mov eax, dword [esp + 0x58]
imul edi
mov dword [esp + 0x34], edx
add dword [ecx + 0x18], edx
mov eax, dword [esp + 0x54]
imul edi
add dword [ecx + 0x1c], edx
add ecx, 0x20
mov eax, dword [esp + 0x48]
add eax, dword [esp + 0x4c]
mov edx, eax
sar edx, 0x10
mov esi, dword [esp + 0x50]
add esi, edx
mov dword [esp + 0x30], esi
lea esi, [ebx + edx*4]
and eax, 0xffff
mov dword [esp + 0x50], eax
dec dword [esp + 0x70]
jne 0x64751b88
mov ebp, eax
mov eax, dword [esp + 0x5c]
shl eax, 5
add dword [esp + 0xd4], eax
jmp 0x64751458
mov ebx, dword [esp + 0xd0]
mov ecx, dword [ebx + 0x2c]
mov dword [esp + 0x98], ecx
mov edx, dword [ebx + 0x30]
mov dword [esp + 0x9c], edx
mov esi, dword [esp + 0x74]
mov edi, dword [esp + 0x7c]
mov eax, dword [edi + esi*4]
mov dword [esp + 0xa0], eax
mov eax, dword [esp + 0x5c]
test eax, eax
mov dword [esp + 0x30], esi
je 0x64751458
lea ebx, [esp + 0x9c]
lea esi, [esp + 0xa4]
mov edi, dword [esp + 0xd4]
jmp 0x64751f21
cmp ebx, esi
jae 0x64752376
mov edx, dword [ebx]
mov ecx, dword [ebx - 4]
sub edx, ecx
shl edx, 4
mov eax, ebp
shl eax, 0xc
imul edx
add ecx, edx
shl ecx, 4
mov eax, dword [esp + 0x58]
imul ecx
add dword [edi], edx
mov eax, dword [esp + 0x54]
imul ecx
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], edx
add dword [edi + 4], edx
add edi, 8
mov eax, dword [esp + 0x4c]
add eax, ebp
mov edx, eax
sar edx, 0x10
add dword [esp + 0x30], edx
lea ebx, [ebx + edx*4]
movzx ebp, ax
dec dword [esp + 0x5c]
jne 0x64751f14
mov dword [esp + 0xd4], edi
jmp 0x64751458
mov esi, ebp
mov edi, ebp
sar edi, 0x1f
mov eax, dword [esp + 0x5c]
cdq
mov ecx, dword [esp + 0x30]
imul ecx, edx
mov eax, dword [esp + 0x34]
imul eax, dword [esp + 0x5c]
add ecx, eax
mov eax, dword [esp + 0x5c]
mul dword [esp + 0x30]
mov dword [esp + 0x30], eax
add edx, ecx
mov dword [esp + 0x34], edx
add esi, dword [esp + 0x30]
adc edi, dword [esp + 0x34]
mov eax, esi
mov edx, edi
shrd eax, edx, 0x10
sar edx, 0x10
mov ecx, dword [esp + 0x74]
add ecx, eax
mov dword [esp + 0x30], ecx
mov ebp, esi
and ebp, 0xffff
jmp 0x64751458
dec edx
jne 0x647514b3
mov edi, dword [esp + 0xd0]
mov edx, dword [edi + 0x2c]
mov dword [edi + 0x28], edx
mov edx, dword [edi + 0x30]
mov dword [edi + 0x2c], edx
test eax, eax
jle 0x64752d60
xor eax, eax
mov esi, dword [esp + 0xd0]
jmp 0x647514b0
mov edx, ecx
dec edx
mov esi, dword [esp + 0x7c]
mov ecx, dword [esi + edx*4]
mov dword [esp + 0xa8], ecx
jmp 0x64751622
mov esi, dword [esp + 0xd0]
mov esi, dword [esi + 0x20]
mov dword [esp + 0x84], esi
cmp esi, eax
jge 0x64751181
mov dword [esp + 0x84], eax
jmp 0x64751181
jne 0x64752d2d
mov edi, dword [esp + 0xd0]
mov edx, dword [edi + 0x30]
mov dword [edi + 0x28], edx
cmp eax, 1
jle 0x64752f61
mov dword [edi + 0x2c], 0
xor eax, eax
mov esi, edi
jmp 0x647514b0
mov ebx, dword [esp + 0xd0]
mov dword [ebx + 0x28], 0
mov esi, dword [esp + 0xd0]
mov dword [esi + 0x2c], 0
xor eax, eax
jmp 0x647514b0
mov dword [esp + 0x78], 0
mov eax, dword [esp + 0x78]
add esp, 0xbc
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 0x5c], edi
mov dword [esp + 0xd4], esi
mov ecx, dword [esp + 0x38]
mov ebx, dword [esp + 0x7c]
lea ecx, [ebx + ecx*4]
mov dword [esp + 0x44], ecx
and edi, 2
je 0x64753293
mov edi, esi
mov ecx, dword [ecx - 8]
shl ecx, 4
mov eax, dword [esp + 0x58]
imul ecx
add dword [esi], edx
mov eax, dword [esp + 0x54]
imul ecx
add dword [esi + 4], edx
mov esi, dword [esp + 0x4c]
add esi, ebp
mov eax, esi
sar eax, 0x10
mov ecx, dword [esp + 0x44]
lea ebx, [ecx + eax*4]
and esi, 0xffff
mov ecx, dword [ebx - 8]
shl ecx, 4
mov eax, dword [esp + 0x58]
imul ecx
add dword [edi + 8], edx
mov eax, dword [esp + 0x54]
imul ecx
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], edx
add dword [edi + 0xc], edx
add edi, 0x10
mov dword [esp + 0xd4], edi
add esi, dword [esp + 0x4c]
mov eax, esi
sar eax, 0x10
lea edi, [ebx + eax*4]
mov ebp, esi
and ebp, 0xffff
test byte [esp + 0x5c], 1
je 0x64752189
mov ecx, dword [edi - 8]
shl ecx, 4
mov eax, dword [esp + 0x58]
imul ecx
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], edx
mov ebx, dword [esp + 0xd4]
add dword [ebx], edx
mov eax, dword [esp + 0x54]
imul ecx
mov esi, dword [esp + 0xd4]
add dword [esi + 4], edx
add esi, 8
mov dword [esp + 0xd4], esi
mov eax, dword [esp + 0x4c]
add eax, ebp
mov edx, eax
sar edx, 0x10
lea edi, [edi + edx*4]
movzx ebp, ax
mov ecx, dword [esp + 0x5c]
sar ecx, 2
mov dword [esp + 0x5c], ecx
mov eax, dword [esp + 0x5c]
test eax, eax
je 0x6475189f
mov esi, dword [esp + 0x5c]
mov ecx, dword [esp + 0xd4]
mov dword [esp + 0x30], esi
mov esi, edi
mov dword [esp + 0x40], ebp
mov edi, dword [esp + 0x58]
mov ebp, dword [esp + 0x54]
lea esi, [esi]
mov ebx, dword [esi - 8]
shl ebx, 4
mov eax, ebx
imul edi
add dword [ecx], edx
mov eax, ebx
imul ebp
add dword [ecx + 4], edx
mov eax, dword [esp + 0x40]
add eax, dword [esp + 0x4c]
mov edx, eax
sar edx, 0x10
lea esi, [esi + edx*4]
and eax, 0xffff
mov dword [esp + 0x40], eax
mov ebx, dword [esi - 8]
shl ebx, 4
mov eax, ebx
imul edi
add dword [ecx + 8], edx
mov eax, ebx
imul ebp
add dword [ecx + 0xc], edx
mov eax, dword [esp + 0x40]
add eax, dword [esp + 0x4c]
mov edx, eax
sar edx, 0x10
lea esi, [esi + edx*4]
and eax, 0xffff
mov dword [esp + 0x40], eax
mov ebx, dword [esi - 8]
shl ebx, 4
mov eax, ebx
imul edi
add dword [ecx + 0x10], edx
mov eax, ebx
imul ebp
add dword [ecx + 0x14], edx
mov eax, dword [esp + 0x40]
add eax, dword [esp + 0x4c]
mov edx, eax
sar edx, 0x10
lea esi, [esi + edx*4]
and eax, 0xffff
mov dword [esp + 0x40], eax
mov ebx, dword [esi - 8]
shl ebx, 4
mov eax, ebx
imul edi
add dword [ecx + 0x18], edx
mov eax, ebx
imul ebp
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], edx
add dword [ecx + 0x1c], edx
add ecx, 0x20
mov eax, dword [esp + 0x40]
add eax, dword [esp + 0x4c]
mov edx, eax
sar edx, 0x10
lea esi, [esi + edx*4]
and eax, 0xffff
mov dword [esp + 0x40], eax
dec dword [esp + 0x30]
jne 0x647521c0
mov edi, esi
mov ebp, eax
mov eax, dword [esp + 0x5c]
shl eax, 5
add dword [esp + 0xd4], eax
jmp 0x6475189f
mov ecx, dword [esp + 0x30]
mov ebx, dword [esp + 0x7c]
jmp 0x64751494
mov esi, dword [esp + 0xd0]
mov ecx, dword [esi + 0x2c]
mov dword [esp + 0x98], ecx
mov eax, dword [esi + 0x30]
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0x5c]
test eax, eax
je 0x6475324a
mov edi, dword [esp + 0x74]
mov dword [esp + 0x38], edi
lea ebx, [esp + 0x98]
mov edi, dword [esp + 0x5c]
mov esi, dword [esp + 0xd4]
jmp 0x64752300
cmp ebx, dword [esp + 0x2c]
jae 0x64752d71
mov ecx, dword [ebx]
shl ecx, 4
mov eax, dword [esp + 0x58]
imul ecx
add dword [esi], edx
mov eax, dword [esp + 0x54]
imul ecx
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], edx
add dword [esi + 4], edx
add esi, 8
mov eax, dword [esp + 0x4c]
add eax, ebp
mov edx, eax
sar edx, 0x10
add dword [esp + 0x38], edx
shl edx, 2
sub ebx, edx
movzx ebp, ax
dec edi
jne 0x647522f4
mov dword [esp + 0xd4], esi
mov ebx, dword [esp + 0x38]
mov esi, dword [esp + 0x7c]
lea ebx, [esi + ebx*4]
mov dword [esp + 0x44], ebx
mov esi, ebx
sub esi, dword [esp + 0x44]
sar esi, 2
add esi, dword [esp + 0x38]
mov dword [esp + 0x30], esi
mov ecx, dword [esp + 0xd0]
mov ecx, dword [ecx + 0xc]
mov dword [esp + 0x80], ecx
jmp 0x64751774
mov dword [esp + 0xd4], edi
mov ecx, dword [esp + 0x30]
mov ebx, dword [esp + 0x7c]
lea esi, [ebx + ecx*4]
test byte [esp + 0x5c], 2
je 0x64752436
mov ecx, dword [esi - 8]
mov eax, dword [esi - 4]
sub eax, ecx
shl eax, 4
mov edx, ebp
shl edx, 0xc
imul edx
add ecx, edx
shl ecx, 4
mov eax, dword [esp + 0x58]
imul ecx
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], edx
add dword [edi], edx
mov eax, dword [esp + 0x54]
imul ecx
add dword [edi + 4], edx
mov eax, dword [esp + 0x4c]
add eax, ebp
mov edx, eax
sar edx, 0x10
mov edi, dword [esp + 0x30]
add edi, edx
lea ebx, [esi + edx*4]
movzx esi, ax
mov ecx, dword [ebx - 8]
mov eax, dword [ebx - 4]
sub eax, ecx
shl eax, 4
mov edx, esi
shl edx, 0xc
imul edx
add ecx, edx
shl ecx, 4
mov eax, dword [esp + 0x58]
imul ecx
mov eax, dword [esp + 0xd4]
add dword [eax + 8], edx
mov eax, dword [esp + 0x54]
imul ecx
mov dword [esp + 0x34], edx
mov ecx, dword [esp + 0xd4]
add dword [ecx + 0xc], edx
add ecx, 0x10
mov dword [esp + 0xd4], ecx
mov eax, dword [esp + 0x4c]
add eax, esi
mov edx, eax
sar edx, 0x10
add edi, edx
mov dword [esp + 0x30], edi
lea esi, [ebx + edx*4]
movzx ebp, ax
test byte [esp + 0x5c], 1
je 0x6475329a
mov ecx, dword [esi - 8]
mov eax, dword [esi - 4]
sub eax, ecx
shl eax, 4
mov edx, ebp
shl edx, 0xc
imul edx
add ecx, edx
shl ecx, 4
mov eax, dword [esp + 0x58]
imul ecx
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], edx
mov ebx, dword [esp + 0xd4]
add dword [ebx], edx
mov eax, dword [esp + 0x54]
imul ecx
mov edi, dword [esp + 0xd4]
add dword [edi + 4], edx
add edi, 8
mov dword [esp + 0xd4], edi
mov eax, dword [esp + 0x4c]
add eax, ebp
mov edx, eax
sar edx, 0x10
add dword [esp + 0x30], edx
lea esi, [esi + edx*4]
movzx ebp, ax
mov ecx, dword [esp + 0x5c]
sar ecx, 2
mov dword [esp + 0x5c], ecx
mov edi, dword [esp + 0x5c]
test edi, edi
je 0x64751458
mov edi, dword [esp + 0x5c]
mov ecx, dword [esp + 0xd4]
mov dword [esp + 0x38], edi
mov edi, ebp
mov ebp, dword [esp + 0x58]
nop
mov ebx, dword [esi - 8]
mov eax, dword [esi - 4]
sub eax, ebx
shl eax, 4
mov edx, edi
shl edx, 0xc
imul edx
add ebx, edx
shl ebx, 4
mov eax, ebx
imul ebp
add dword [ecx], edx
mov eax, dword [esp + 0x54]
imul ebx
add dword [ecx + 4], edx
mov eax, dword [esp + 0x4c]
add eax, edi
mov edx, eax
sar edx, 0x10
mov ebx, dword [esp + 0x30]
add ebx, edx
mov dword [esp + 0x30], ebx
lea esi, [esi + edx*4]
movzx edi, ax
mov ebx, dword [esi - 8]
mov eax, dword [esi - 4]
sub eax, ebx
shl eax, 4
mov edx, edi
shl edx, 0xc
imul edx
add ebx, edx
shl ebx, 4
mov eax, ebx
imul ebp
add dword [ecx + 8], edx
mov eax, dword [esp + 0x54]
imul ebx
add dword [ecx + 0xc], edx
mov eax, dword [esp + 0x4c]
add eax, edi
mov edx, eax
sar edx, 0x10
mov ebx, dword [esp + 0x30]
add ebx, edx
mov dword [esp + 0x30], ebx
lea esi, [esi + edx*4]
movzx edi, ax
mov ebx, dword [esi - 8]
mov eax, dword [esi - 4]
sub eax, ebx
shl eax, 4
mov edx, edi
shl edx, 0xc
imul edx
add ebx, edx
shl ebx, 4
mov eax, ebx
imul ebp
add dword [ecx + 0x10], edx
mov eax, dword [esp + 0x54]
imul ebx
add dword [ecx + 0x14], edx
mov eax, dword [esp + 0x4c]
add eax, edi
mov edx, eax
sar edx, 0x10
mov ebx, dword [esp + 0x30]
add ebx, edx
mov dword [esp + 0x30], ebx
lea esi, [esi + edx*4]
movzx edi, ax
mov ebx, dword [esi - 8]
mov eax, dword [esi - 4]
sub eax, ebx
shl eax, 4
mov edx, edi
shl edx, 0xc
imul edx
add ebx, edx
shl ebx, 4
mov eax, ebx
imul ebp
add dword [ecx + 0x18], edx
mov eax, dword [esp + 0x54]
imul ebx
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], edx
add dword [ecx + 0x1c], edx
add ecx, 0x20
mov eax, dword [esp + 0x4c]
add eax, edi
mov edx, eax
sar edx, 0x10
mov ebx, dword [esp + 0x30]
add ebx, edx
mov dword [esp + 0x30], ebx
lea esi, [esi + edx*4]
movzx edi, ax
dec dword [esp + 0x38]
jne 0x647524cc
mov ebp, edi
mov eax, dword [esp + 0x5c]
shl eax, 5
add dword [esp + 0xd4], eax
jmp 0x64751458
mov ebp, dword [esp + 0x38]
mov dword [esp + 0xd4], ebx
mov ecx, dword [esp + 0x30]
mov esi, dword [esp + 0x7c]
lea ebx, [esi + ecx*4]
test byte [esp + 0x5c], 2
je 0x647527b9
mov edi, dword [ebx]
shl edi, 4
mov dword [esp + 0x50], edi
mov edx, ebp
sar edx, 6
movsx ecx, word [edx + edx + 0x64876ac0]
shl ecx, 0xe
mov esi, dword [ebx + 4]
shl esi, 4
mov dword [esp + 0x38], esi
movsx edi, word [edx + edx + 0x648772e0]
shl edi, 0xe
mov dword [esp + 0x40], edi
mov esi, dword [ebx + 8]
shl esi, 4
mov dword [esp + 0x44], esi
xor edx, 0x3ff
inc edx
movsx edi, word [edx + edx + 0x648772e0]
shl edi, 0xe
mov dword [esp + 0x48], edi
mov esi, dword [ebx + 0xc]
shl esi, 4
movsx edi, word [edx + edx + 0x64876ac0]
shl edi, 0xe
mov eax, dword [esp + 0x50]
imul ecx
mov dword [esp + 0x64], edx
mov eax, dword [esp + 0x38]
imul dword [esp + 0x40]
mov ecx, dword [esp + 0x64]
add ecx, edx
mov eax, dword [esp + 0x44]
imul dword [esp + 0x48]
add ecx, edx
mov eax, esi
imul edi
add ecx, edx
shl ecx, 4
mov eax, dword [esp + 0x58]
imul ecx
mov esi, dword [esp + 0xd4]
add dword [esi], edx
mov eax, dword [esp + 0x54]
imul ecx
mov dword [esp + 0x3c], edx
add dword [esi + 4], edx
mov eax, dword [esp + 0x4c]
add eax, ebp
mov edx, eax
sar edx, 0x10
mov ecx, dword [esp + 0x30]
add ecx, edx
mov dword [esp + 0x48], ecx
lea ebx, [ebx + edx*4]
and eax, 0xffff
mov dword [esp + 0x44], eax
mov esi, dword [ebx]
shl esi, 4
mov dword [esp + 0x50], esi
mov edx, eax
sar edx, 6
movsx ecx, word [edx + edx + 0x64876ac0]
shl ecx, 0xe
mov edi, dword [ebx + 4]
shl edi, 4
mov dword [esp + 0x30], edi
movsx esi, word [edx + edx + 0x648772e0]
shl esi, 0xe
mov dword [esp + 0x38], esi
mov edi, dword [ebx + 8]
shl edi, 4
mov dword [esp + 0x40], edi
xor edx, 0x3ff
inc edx
movsx esi, word [edx + edx + 0x648772e0]
shl esi, 0xe
mov edi, dword [ebx + 0xc]
shl edi, 4
movsx ebp, word [edx + edx + 0x64876ac0]
shl ebp, 0xe
mov eax, dword [esp + 0x50]
imul ecx
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], edx
mov eax, dword [esp + 0x30]
imul dword [esp + 0x38]
mov ecx, dword [esp + 0x64]
add ecx, edx
mov eax, dword [esp + 0x40]
imul esi
add ecx, edx
mov eax, edi
imul ebp
add ecx, edx
shl ecx, 4
mov eax, dword [esp + 0x58]
imul ecx
mov esi, dword [esp + 0xd4]
add dword [esi + 8], edx
mov eax, dword [esp + 0x54]
imul ecx
mov dword [esp + 0x34], edx
add dword [esi + 0xc], edx
add esi, 0x10
mov dword [esp + 0xd4], esi
mov eax, dword [esp + 0x44]
add eax, dword [esp + 0x4c]
mov edx, eax
sar edx, 0x10
mov ecx, dword [esp + 0x48]
add ecx, edx
mov dword [esp + 0x30], ecx
lea ebx, [ebx + edx*4]
movzx ebp, ax
test byte [esp + 0x5c], 1
je 0x647532aa
mov edi, dword [ebx]
shl edi, 4
mov dword [esp + 0x50], edi
mov edx, ebp
sar edx, 6
movsx ecx, word [edx + edx + 0x64876ac0]
shl ecx, 0xe
mov esi, dword [ebx + 4]
shl esi, 4
mov dword [esp + 0x38], esi
movsx edi, word [edx + edx + 0x648772e0]
shl edi, 0xe
mov dword [esp + 0x40], edi
mov esi, dword [ebx + 8]
shl esi, 4
mov dword [esp + 0x44], esi
xor edx, 0x3ff
inc edx
movsx edi, word [edx + edx + 0x648772e0]
shl edi, 0xe
mov dword [esp + 0x48], edi
mov esi, dword [ebx + 0xc]
shl esi, 4
movsx edi, word [edx + edx + 0x64876ac0]
shl edi, 0xe
mov eax, dword [esp + 0x50]
imul ecx
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], edx
mov eax, dword [esp + 0x38]
imul dword [esp + 0x40]
mov ecx, dword [esp + 0x64]
add ecx, edx
mov eax, dword [esp + 0x44]
imul dword [esp + 0x48]
add ecx, edx
mov eax, esi
imul edi
add ecx, edx
shl ecx, 4
mov eax, dword [esp + 0x58]
imul ecx
mov esi, dword [esp + 0xd4]
add dword [esi], edx
mov eax, dword [esp + 0x54]
imul ecx
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], edx
add dword [esi + 4], edx
add esi, 8
mov dword [esp + 0xd4], esi
mov eax, dword [esp + 0x4c]
add eax, ebp
mov edx, eax
sar edx, 0x10
add dword [esp + 0x30], edx
lea ebx, [ebx + edx*4]
movzx ebp, ax
mov ecx, dword [esp + 0x5c]
sar ecx, 2
mov dword [esp + 0x5c], ecx
mov eax, dword [esp + 0x5c]
test eax, eax
je 0x64751774
mov esi, dword [esp + 0x5c]
mov dword [esp + 0x70], esi
mov ecx, dword [esp + 0xd4]
mov esi, ebx
mov dword [esp + 0x50], ebp
mov eax, ebp
nop
mov edi, dword [esi]
shl edi, 4
mov dword [esp + 0x60], edi
sar eax, 6
movsx edx, word [eax + eax + 0x64876ac0]
shl edx, 0xe
mov ebx, dword [esi + 4]
shl ebx, 4
mov dword [esp + 0x38], ebx
movsx ebp, word [eax + eax + 0x648772e0]
shl ebp, 0xe
mov edi, dword [esi + 8]
shl edi, 4
xor eax, 0x3ff
inc eax
movsx ebx, word [eax + eax + 0x648772e0]
shl ebx, 0xe
mov dword [esp + 0x40], ebx
mov ebx, dword [esi + 0xc]
shl ebx, 4
mov dword [esp + 0x44], ebx
movsx eax, word [eax + eax + 0x64876ac0]
shl eax, 0xe
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x60]
imul edx
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], edx
mov eax, dword [esp + 0x38]
imul ebp
mov ebx, dword [esp + 0x6c]
add ebx, edx
mov eax, dword [esp + 0x40]
imul edi
add ebx, edx
mov eax, dword [esp + 0x44]
imul dword [esp + 0x48]
add ebx, edx
shl ebx, 4
mov eax, dword [esp + 0x58]
imul ebx
add dword [ecx], edx
mov eax, dword [esp + 0x54]
imul ebx
mov dword [esp + 0x3c], edx
add dword [ecx + 4], edx
mov eax, dword [esp + 0x50]
add eax, dword [esp + 0x4c]
mov edx, eax
sar edx, 0x10
mov ebx, dword [esp + 0x30]
add ebx, edx
mov dword [esp + 0x50], ebx
lea ebx, [esi + edx*4]
and eax, 0xffff
mov dword [esp + 0x48], eax
mov esi, dword [ebx]
shl esi, 4
mov dword [esp + 0x30], esi
mov edx, eax
sar edx, 6
movsx edi, word [edx + edx + 0x64876ac0]
shl edi, 0xe
mov dword [esp + 0x60], edi
mov ebp, dword [ebx + 4]
shl ebp, 4
movsx edi, word [edx + edx + 0x648772e0]
shl edi, 0xe
mov esi, dword [ebx + 8]
shl esi, 4
mov dword [esp + 0x38], esi
xor edx, 0x3ff
inc edx
movsx esi, word [edx + edx + 0x648772e0]
shl esi, 0xe
mov eax, dword [ebx + 0xc]
shl eax, 4
mov dword [esp + 0x40], eax
movsx edx, word [edx + edx + 0x64876ac0]
shl edx, 0xe
mov dword [esp + 0x44], edx
mov eax, dword [esp + 0x30]
imul dword [esp + 0x60]
mov dword [esp + 0x34], edx
mov eax, ebp
imul edi
mov edi, dword [esp + 0x34]
add edi, edx
mov eax, dword [esp + 0x38]
imul esi
add edi, edx
mov eax, dword [esp + 0x40]
imul dword [esp + 0x44]
add edi, edx
shl edi, 4
mov eax, dword [esp + 0x58]
imul edi
add dword [ecx + 8], edx
mov eax, dword [esp + 0x54]
imul edi
add dword [ecx + 0xc], edx
mov eax, dword [esp + 0x48]
add eax, dword [esp + 0x4c]
mov edx, eax
sar edx, 0x10
mov esi, dword [esp + 0x50]
add esi, edx
mov dword [esp + 0x50], esi
lea ebx, [ebx + edx*4]
and eax, 0xffff
mov dword [esp + 0x48], eax
mov edi, dword [ebx]
shl edi, 4
mov dword [esp + 0x30], edi
mov edx, eax
sar edx, 6
movsx eax, word [edx + edx + 0x64876ac0]
shl eax, 0xe
mov dword [esp + 0x60], eax
mov ebp, dword [ebx + 4]
shl ebp, 4
movsx edi, word [edx + edx + 0x648772e0]
shl edi, 0xe
mov esi, dword [ebx + 8]
shl esi, 4
mov dword [esp + 0x38], esi
xor edx, 0x3ff
inc edx
movsx esi, word [edx + edx + 0x648772e0]
shl esi, 0xe
mov eax, dword [ebx + 0xc]
shl eax, 4
mov dword [esp + 0x40], eax
movsx edx, word [edx + edx + 0x64876ac0]
shl edx, 0xe
mov dword [esp + 0x44], edx
mov eax, dword [esp + 0x30]
imul dword [esp + 0x60]
mov dword [esp + 0x34], edx
mov eax, ebp
imul edi
mov edi, dword [esp + 0x34]
add edi, edx
mov eax, dword [esp + 0x38]
imul esi
add edi, edx
mov eax, dword [esp + 0x40]
imul dword [esp + 0x44]
add edi, edx
shl edi, 4
mov eax, dword [esp + 0x58]
imul edi
add dword [ecx + 0x10], edx
mov eax, dword [esp + 0x54]
imul edi
add dword [ecx + 0x14], edx
mov eax, dword [esp + 0x48]
add eax, dword [esp + 0x4c]
mov edx, eax
sar edx, 0x10
mov esi, dword [esp + 0x50]
add esi, edx
mov dword [esp + 0x50], esi
lea ebx, [ebx + edx*4]
and eax, 0xffff
mov dword [esp + 0x48], eax
mov edi, dword [ebx]
shl edi, 4
mov dword [esp + 0x30], edi
mov edx, eax
sar edx, 6
movsx eax, word [edx + edx + 0x64876ac0]
shl eax, 0xe
mov dword [esp + 0x60], eax
mov ebp, dword [ebx + 4]
shl ebp, 4
movsx edi, word [edx + edx + 0x648772e0]
shl edi, 0xe
mov esi, dword [ebx + 8]
shl esi, 4
mov dword [esp + 0x38], esi
xor edx, 0x3ff
inc edx
movsx esi, word [edx + edx + 0x648772e0]
shl esi, 0xe
mov eax, dword [ebx + 0xc]
shl eax, 4
mov dword [esp + 0x40], eax
movsx edx, word [edx + edx + 0x64876ac0]
shl edx, 0xe
mov dword [esp + 0x44], edx
mov eax, dword [esp + 0x30]
imul dword [esp + 0x60]
mov dword [esp + 0x34], edx
mov eax, ebp
imul edi
mov edi, dword [esp + 0x34]
add edi, edx
mov eax, dword [esp + 0x38]
imul esi
add edi, edx
mov eax, dword [esp + 0x40]
imul dword [esp + 0x44]
add edi, edx
shl edi, 4
mov eax, dword [esp + 0x58]
imul edi
mov dword [esp + 0x34], edx
add dword [ecx + 0x18], edx
mov eax, dword [esp + 0x54]
imul edi
add dword [ecx + 0x1c], edx
add ecx, 0x20
mov eax, dword [esp + 0x48]
add eax, dword [esp + 0x4c]
mov edx, eax
sar edx, 0x10
mov esi, dword [esp + 0x50]
add esi, edx
mov dword [esp + 0x30], esi
lea esi, [ebx + edx*4]
and eax, 0xffff
mov dword [esp + 0x50], eax
dec dword [esp + 0x70]
jne 0x647528c4
mov ebp, eax
mov eax, dword [esp + 0x5c]
shl eax, 5
add dword [esp + 0xd4], eax
jmp 0x64751774
mov ebx, dword [esp + 0xd0]
mov eax, dword [ebx + 0x2c]
mov dword [esp + 0x98], eax
mov ecx, dword [ebx + 0x30]
mov dword [esp + 0x9c], ecx
mov esi, dword [esp + 0x74]
mov edi, dword [esp + 0x7c]
mov edx, dword [edi + esi*4]
mov dword [esp + 0xa0], edx
mov edi, dword [esp + 0x5c]
test edi, edi
je 0x64753259
mov dword [esp + 0x30], esi
lea ebx, [esp + 0x9c]
lea esi, [esp + 0xa4]
mov edi, dword [esp + 0xd4]
jmp 0x64752c5d
cmp ebx, esi
jae 0x64752f87
mov eax, dword [ebx - 4]
mov ecx, dword [ebx]
sub eax, ecx
shl eax, 4
mov edx, ebp
shl edx, 0xc
imul edx
add ecx, edx
shl ecx, 4
mov eax, dword [esp + 0x58]
imul ecx
add dword [edi], edx
mov eax, dword [esp + 0x54]
imul ecx
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], edx
add dword [edi + 4], edx
add edi, 8
mov eax, dword [esp + 0x4c]
add eax, ebp
mov edx, eax
sar edx, 0x10
add dword [esp + 0x30], edx
shl edx, 2
sub ebx, edx
movzx ebp, ax
dec dword [esp + 0x5c]
jne 0x64752c50
mov dword [esp + 0xd4], edi
mov ecx, dword [esp + 0xd0]
mov ecx, dword [ecx + 0xc]
mov dword [esp + 0x80], ecx
jmp 0x64751774
mov esi, ebp
mov edi, ebp
sar edi, 0x1f
mov eax, ecx
cdq
mov ecx, dword [esp + 0x30]
imul ecx, edx
mov eax, dword [esp + 0x34]
imul eax, dword [esp + 0x5c]
add ecx, eax
mov eax, dword [esp + 0x5c]
mul dword [esp + 0x30]
mov dword [esp + 0x30], eax
add edx, ecx
mov dword [esp + 0x34], edx
add esi, dword [esp + 0x30]
adc edi, dword [esp + 0x34]
mov eax, esi
mov edx, edi
shrd eax, edx, 0x10
sar edx, 0x10
mov ecx, dword [esp + 0x74]
add ecx, eax
mov dword [esp + 0x30], ecx
mov ebp, esi
and ebp, 0xffff
mov ebx, dword [esp + 0xd0]
mov ebx, dword [ebx + 0xc]
mov dword [esp + 0x80], ebx
jmp 0x64751774
dec edx
jne 0x647514b3
mov edi, dword [esp + 0xd0]
mov edx, dword [edi + 0x2c]
mov dword [edi + 0x28], edx
mov edx, dword [edi + 0x30]
mov dword [edi + 0x2c], edx
test eax, eax
jg 0x64751ff6
mov ecx, dword [esp + 0x30]
mov ebx, dword [esp + 0x7c]
mov eax, dword [ebx + ecx*4 + 4]
jmp 0x64751ff8
mov ecx, dword [esp + 0x30]
mov ebx, dword [esp + 0x7c]
mov eax, dword [ebx + ecx*4 - 4]
jmp 0x64751ff8
mov dword [esp + 0x5c], edi
mov dword [esp + 0xd4], esi
mov ecx, dword [esp + 0x38]
mov ebx, dword [esp + 0x7c]
lea ecx, [ebx + ecx*4]
mov dword [esp + 0x44], ecx
and edi, 2
je 0x6475327c
mov edi, esi
mov ecx, dword [ecx + 8]
shl ecx, 4
mov eax, dword [esp + 0x58]
imul ecx
add dword [esi], edx
mov eax, dword [esp + 0x54]
imul ecx
add dword [esi + 4], edx
mov esi, dword [esp + 0x4c]
add esi, ebp
mov eax, esi
sar eax, 0x10
mov ecx, dword [esp + 0x44]
lea ebx, [ecx + eax*4]
and esi, 0xffff
mov ecx, dword [ebx + 8]
shl ecx, 4
mov eax, dword [esp + 0x58]
imul ecx
add dword [edi + 8], edx
mov eax, dword [esp + 0x54]
imul ecx
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], edx
add dword [edi + 0xc], edx
add edi, 0x10
mov dword [esp + 0xd4], edi
mov eax, dword [esp + 0x4c]
add eax, esi
mov edx, eax
sar edx, 0x10
lea esi, [ebx + edx*4]
movzx ebp, ax
test byte [esp + 0x5c], 1
je 0x64752e4f
mov ecx, dword [esi + 8]
shl ecx, 4
mov eax, dword [esp + 0x58]
imul ecx
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], edx
mov ebx, dword [esp + 0xd4]
add dword [ebx], edx
mov eax, dword [esp + 0x54]
imul ecx
mov edi, dword [esp + 0xd4]
add dword [edi + 4], edx
add edi, 8
mov dword [esp + 0xd4], edi
mov eax, dword [esp + 0x4c]
add eax, ebp
mov edx, eax
sar edx, 0x10
lea esi, [esi + edx*4]
movzx ebp, ax
mov ecx, dword [esp + 0x5c]
sar ecx, 2
mov dword [esp + 0x5c], ecx
mov eax, dword [esp + 0x5c]
test eax, eax
je 0x64752351
mov ebx, dword [esp + 0x5c]
mov dword [esp + 0x30], ebx
mov ecx, dword [esp + 0xd4]
mov edi, dword [esp + 0x4c]
mov dword [esp + 0x40], ebp
mov ebp, dword [esp + 0x54]
lea esi, [esi]
mov ebx, dword [esi + 8]
shl ebx, 4
mov eax, dword [esp + 0x58]
imul ebx
add dword [ecx], edx
mov eax, ebx
imul ebp
add dword [ecx + 4], edx
mov eax, dword [esp + 0x40]
add eax, edi
mov edx, eax
sar edx, 0x10
lea esi, [esi + edx*4]
and eax, 0xffff
mov dword [esp + 0x40], eax
mov ebx, dword [esi + 8]
shl ebx, 4
mov eax, dword [esp + 0x58]
imul ebx
add dword [ecx + 8], edx
mov eax, ebx
imul ebp
add dword [ecx + 0xc], edx
mov eax, dword [esp + 0x40]
add eax, edi
mov edx, eax
sar edx, 0x10
lea esi, [esi + edx*4]
and eax, 0xffff
mov dword [esp + 0x40], eax
mov ebx, dword [esi + 8]
shl ebx, 4
mov eax, dword [esp + 0x58]
imul ebx
add dword [ecx + 0x10], edx
mov eax, ebx
imul ebp
add dword [ecx + 0x14], edx
mov eax, dword [esp + 0x40]
add eax, edi
mov edx, eax
sar edx, 0x10
lea esi, [esi + edx*4]
and eax, 0xffff
mov dword [esp + 0x40], eax
mov ebx, dword [esi + 8]
shl ebx, 4
mov eax, dword [esp + 0x58]
imul ebx
add dword [ecx + 0x18], edx
mov eax, ebx
imul ebp
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], edx
add dword [ecx + 0x1c], edx
add ecx, 0x20
mov eax, dword [esp + 0x40]
add eax, edi
mov edx, eax
sar edx, 0x10
lea esi, [esi + edx*4]
and eax, 0xffff
mov dword [esp + 0x40], eax
dec dword [esp + 0x30]
jne 0x64752e84
mov ebp, eax
mov eax, dword [esp + 0x5c]
shl eax, 5
add dword [esp + 0xd4], eax
jmp 0x64752351
mov ecx, dword [esp + 0x30]
mov ebx, dword [esp + 0x7c]
mov edx, dword [ebx + ecx*4 + 8]
mov dword [edi + 0x2c], edx
dec eax
je 0x64751ff6
mov eax, dword [ebx + ecx*4 + 4]
mov esi, dword [esp + 0xd0]
jmp 0x647514b0
mov dword [esp + 0xd4], edi
mov ebx, dword [esp + 0x30]
mov edi, dword [esp + 0x7c]
lea esi, [edi + ebx*4]
test byte [esp + 0x5c], 2
je 0x64753055
mov ecx, dword [esi + 4]
mov eax, dword [esi + 8]
sub eax, ecx
shl eax, 4
mov edx, ebp
shl edx, 0xc
imul edx
add ecx, edx
shl ecx, 4
mov eax, dword [esp + 0x58]
imul ecx
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], edx
mov ebx, dword [esp + 0xd4]
add dword [ebx], edx
mov eax, dword [esp + 0x54]
imul ecx
mov edi, dword [esp + 0xd4]
add dword [edi + 4], edx
mov eax, dword [esp + 0x4c]
add eax, ebp
mov edx, eax
sar edx, 0x10
mov edi, dword [esp + 0x30]
add edi, edx
lea ebx, [esi + edx*4]
movzx esi, ax
mov ecx, dword [ebx + 4]
mov eax, dword [ebx + 8]
sub eax, ecx
shl eax, 4
mov edx, esi
shl edx, 0xc
imul edx
add ecx, edx
shl ecx, 4
mov eax, dword [esp + 0x58]
imul ecx
mov eax, dword [esp + 0xd4]
add dword [eax + 8], edx
mov eax, dword [esp + 0x54]
imul ecx
mov dword [esp + 0x34], edx
mov ecx, dword [esp + 0xd4]
add dword [ecx + 0xc], edx
add ecx, 0x10
mov dword [esp + 0xd4], ecx
mov eax, dword [esp + 0x4c]
add eax, esi
mov edx, eax
sar edx, 0x10
add edi, edx
mov dword [esp + 0x30], edi
lea esi, [ebx + edx*4]
movzx ebp, ax
test byte [esp + 0x5c], 1
je 0x6475326c
mov ecx, dword [esi + 4]
mov eax, dword [esi + 8]
sub eax, ecx
shl eax, 4
mov edx, ebp
shl edx, 0xc
imul edx
add ecx, edx
shl ecx, 4
mov eax, dword [esp + 0x58]
imul ecx
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], edx
mov ebx, dword [esp + 0xd4]
add dword [ebx], edx
mov eax, dword [esp + 0x54]
imul ecx
mov edi, dword [esp + 0xd4]
add dword [edi + 4], edx
add edi, 8
mov dword [esp + 0xd4], edi
mov eax, dword [esp + 0x4c]
add eax, ebp
mov edx, eax
sar edx, 0x10
add dword [esp + 0x30], edx
lea esi, [esi + edx*4]
movzx ebp, ax
mov ecx, dword [esp + 0x5c]
sar ecx, 2
mov dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0x5c]
test ecx, ecx
je 0x64753218
mov edi, dword [esp + 0x5c]
mov dword [esp + 0x38], edi
mov ebx, dword [esp + 0xd4]
mov edi, ebp
mov ebp, dword [esp + 0x58]
lea esi, [esi]
mov ecx, dword [esi + 4]
mov eax, dword [esi + 8]
sub eax, ecx
shl eax, 4
mov edx, edi
shl edx, 0xc
imul edx
add ecx, edx
shl ecx, 4
mov eax, ecx
imul ebp
add dword [ebx], edx
mov eax, dword [esp + 0x54]
imul ecx
add dword [ebx + 4], edx
mov eax, dword [esp + 0x4c]
add eax, edi
mov edx, eax
sar edx, 0x10
mov ecx, dword [esp + 0x30]
add ecx, edx
mov dword [esp + 0x30], ecx
lea esi, [esi + edx*4]
movzx edi, ax
mov ecx, dword [esi + 4]
mov eax, dword [esi + 8]
sub eax, ecx
shl eax, 4
mov edx, edi
shl edx, 0xc
imul edx
add ecx, edx
shl ecx, 4
mov eax, ecx
imul ebp
add dword [ebx + 8], edx
mov eax, dword [esp + 0x54]
imul ecx
add dword [ebx + 0xc], edx
mov eax, dword [esp + 0x4c]
add eax, edi
mov edx, eax
sar edx, 0x10
mov ecx, dword [esp + 0x30]
add ecx, edx
mov dword [esp + 0x30], ecx
lea esi, [esi + edx*4]
movzx edi, ax
mov ecx, dword [esi + 4]
mov eax, dword [esi + 8]
sub eax, ecx
shl eax, 4
mov edx, edi
shl edx, 0xc
imul edx
add ecx, edx
shl ecx, 4
mov eax, ecx
imul ebp
add dword [ebx + 0x10], edx
mov eax, dword [esp + 0x54]
imul ecx
add dword [ebx + 0x14], edx
mov eax, dword [esp + 0x4c]
add eax, edi
mov edx, eax
sar edx, 0x10
mov ecx, dword [esp + 0x30]
add ecx, edx
mov dword [esp + 0x30], ecx
lea esi, [esi + edx*4]
movzx edi, ax
mov ecx, dword [esi + 4]
mov eax, dword [esi + 8]
sub eax, ecx
shl eax, 4
mov edx, edi
shl edx, 0xc
imul edx
add ecx, edx
shl ecx, 4
mov eax, ecx
imul ebp
add dword [ebx + 0x18], edx
mov eax, dword [esp + 0x54]
imul ecx
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], edx
add dword [ebx + 0x1c], edx
add ebx, 0x20
mov eax, dword [esp + 0x4c]
add eax, edi
mov edx, eax
sar edx, 0x10
mov ecx, dword [esp + 0x30]
add ecx, edx
mov dword [esp + 0x30], ecx
lea esi, [esi + edx*4]
movzx edi, ax
dec dword [esp + 0x38]
jne 0x647530ec
mov ebp, edi
mov eax, dword [esp + 0x5c]
shl eax, 5
add dword [esp + 0xd4], eax
mov ebx, dword [esp + 0xd0]
mov ebx, dword [ebx + 0xc]
mov dword [esp + 0x80], ebx
jmp 0x64751774
mov edi, dword [esp + 0x74]
mov dword [esp + 0x30], edi
jmp 0x64751458
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x38], ecx
mov ebx, ecx
jmp 0x64751892
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x38], ecx
mov ebx, ecx
jmp 0x64752344
mov dword [esp + 0x30], esi
mov edi, dword [ebx + 0xc]
mov dword [esp + 0x80], edi
jmp 0x64751774
mov ebx, dword [esp + 0x5c]
sar ebx, 2
mov dword [esp + 0x5c], ebx
jmp 0x647530c8
mov esi, ecx
jmp 0x64752e00
mov esi, dword [esp + 0x5c]
sar esi, 2
mov dword [esp + 0x5c], esi
jmp 0x64751b65
mov edi, ecx
jmp 0x6475213a
mov ebx, dword [esp + 0x5c]
sar ebx, 2
mov dword [esp + 0x5c], ebx
jmp 0x647524a9
mov esi, dword [esp + 0x5c]
sar esi, 2
mov dword [esp + 0x5c], esi
jmp 0x647528a0