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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0xac
mov esi, dword [esp + 0xc0]
test esi, esi
je 0x64757ff8
mov ecx, dword [esp + 0xc0]
mov ebx, dword [ecx + 0x14]
test ebx, ebx
je 0x64757ff8
fld dword [0x64814574]
fld st(0)
fmul dword [esp + 0xd4]
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 + 0x48]
fldcw word [esp + 0x8e]
fld st(1)
fmul dword [esp + 0xcc]
fadd st(1)
fstp qword [esp]
fstp qword [esp + 0x20]
fstp qword [esp + 0x30]
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 + 0x74]
fldcw word [esp + 0x8e]
fld qword [esp + 0x30]
fmul dword [esp + 0xd0]
fld qword [esp + 0x20]
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 + 0x7c]
fldcw word [esp + 0x8e]
mov ecx, dword [esp + 0x74]
test ecx, ecx
jne 0x64757290
mov edx, dword [esp + 0x7c]
test edx, edx
jne 0x64757290
mov dword [esp + 0xc4], 0
mov eax, dword [0x64877ae4]
test eax, eax
jne 0x647572f3
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 0x647572a8
mov eax, dword [sym.allegro_5.0.10_monolith_mt.dll_dumb_resampling_quality]
mov ebx, dword [esp + 0xc0]
mov ebx, dword [ebx + 0x24]
mov dword [esp + 0x84], ebx
cmp eax, ebx
jle 0x64757f86
mov eax, dword [esp + 0xc8]
test eax, eax
jle 0x64757ff8
mov ecx, dword [esp + 0x74]
shl ecx, 0xc
mov dword [esp + 0x64], ecx
mov ebx, dword [esp + 0x7c]
shl ebx, 0xc
mov dword [esp + 0x68], ebx
mov esi, dword [esp + 0x74]
shl esi, 0xa
mov dword [esp + 0x58], esi
mov ecx, dword [esp + 0x7c]
shl ecx, 0xa
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x70], 0
lea ebx, [esp + 0x98]
mov dword [esp + 0x3c], ebx
nop
mov eax, dword [esp + 0xc0]
call fcn.6474c750
test eax, eax
jne 0x64757656
mov esi, dword [esp + 0xc0]
mov ebx, dword [esi + 0x14]
mov ecx, dword [esp + 0x48]
xor ecx, ebx
js 0x64757708
test ebx, ebx
js 0x647576a4
mov ecx, dword [esp + 0xc0]
mov ecx, dword [ecx + 4]
mov dword [esp + 0x6c], ecx
mov esi, dword [esp + 0xc0]
mov ebp, dword [esi + 8]
mov eax, dword [esp + 0x48]
cdq
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], edx
mov esi, dword [esi + 0x10]
sub esi, dword [esp + 0x6c]
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 + 0x40]
adc edi, dword [esp + 0x44]
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x44]
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 0x64757694
mov edx, dword [esp + 0xc8]
sub edx, dword [esp + 0x70]
mov dword [esp + 0x54], eax
cmp eax, edx
jle 0x6475741a
mov dword [esp + 0x54], edx
mov ecx, dword [esp + 0x54]
add dword [esp + 0x70], ecx
mov esi, dword [esp + 0xc0]
mov esi, dword [esi]
mov dword [esp + 0x78], esi
test ebx, ebx
js 0x64757714
mov eax, dword [esp + 0xc4]
test eax, eax
je 0x64757edc
mov eax, dword [sym.allegro_5.0.10_monolith_mt.dll_dumb_resampling_quality]
test eax, eax
jle 0x64757938
dec eax
je 0x64757e18
mov ecx, dword [esp + 0xc0]
mov eax, dword [ecx + 0x28]
mov word [esp + 0x94], ax
movsx esi, word [ecx + 0x2a]
mov word [esp + 0x96], si
movsx edi, word [ecx + 0x2c]
mov word [esp + 0x98], di
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0x78]
mov bx, word [edx + ecx*2]
mov word [esp + 0x9a], bx
mov ecx, dword [esp + 0xc0]
mov ecx, dword [ecx + 0x10]
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x6c]
inc ecx
cmp ecx, dword [esp + 0x40]
jge 0x647574bd
mov cx, word [edx + ecx*2]
mov word [esp + 0x9c], cx
mov ecx, dword [esp + 0x6c]
add ecx, 2
cmp dword [esp + 0x40], ecx
jle 0x647574da
mov edx, dword [esp + 0x78]
mov cx, word [edx + ecx*2]
mov word [esp + 0x9e], cx
mov edx, dword [esp + 0x54]
test edx, edx
je 0x64758fcc
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x40], ecx
lea ecx, [esp + 0x9a]
mov dword [esp + 0x4c], ebp
movsx edx, ax
mov ebp, dword [esp + 0xc4]
jmp 0x64757526
lea edx, [esp + 0xa0]
cmp ecx, edx
jae 0x647579ec
movsx edx, word [ecx - 6]
movsx esi, word [ecx - 4]
movsx edi, word [ecx - 2]
mov bx, word [ecx]
mov eax, dword [esp + 0x4c]
sar eax, 6
mov dword [esp + 0x80], eax
xor eax, 0x3ff
inc eax
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x80]
movsx eax, word [eax + eax + 0x64876ac0]
imul edx, eax
mov eax, dword [esp + 0x80]
movsx eax, word [eax + eax + 0x648772e0]
imul esi, eax
add esi, edx
mov edx, dword [esp + 0x50]
movsx eax, word [edx + edx + 0x648772e0]
imul edi, eax
add esi, edi
movsx edi, bx
movsx eax, word [edx + edx + 0x64876ac0]
imul edi, eax
add esi, edi
mov eax, dword [esp + 0x58]
imul esi
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
add dword [ebp], edx
mov eax, dword [esp + 0x5c]
imul esi
add dword [ebp + 4], edx
add ebp, 8
mov eax, dword [esp + 0x4c]
add eax, dword [esp + 0x48]
mov edx, eax
sar edx, 0x10
add dword [esp + 0x40], edx
lea ecx, [ecx + edx*2]
and eax, 0xffff
mov dword [esp + 0x4c], eax
dec dword [esp + 0x54]
jne 0x64757508
mov dword [esp + 0xc4], ebp
mov ebp, dword [esp + 0x4c]
mov edx, dword [esp + 0x40]
sub edx, dword [esp + 0x6c]
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0xc0]
sub eax, dword [ecx + 0x10]
cmp edx, 2
jle 0x64757668
cmp eax, 2
jg 0x64757914
mov ebx, dword [esp + 0x40]
mov esi, dword [esp + 0x78]
mov dx, word [esi + ebx*2 - 6]
mov word [ecx + 0x28], dx
cmp eax, 2
je 0x64757921
mov dx, word [esi + ebx*2 - 4]
mov word [ecx + 0x2a], dx
dec eax
je 0x6475903f
mov ax, word [esi + ebx*2 - 2]
mov ecx, dword [esp + 0xc0]
nop
mov word [ecx + 0x2c], ax
mov ebx, dword [esp + 0x40]
mov ecx, dword [esp + 0xc0]
mov dword [ecx + 4], ebx
mov dword [ecx + 8], ebp
mov eax, dword [esp + 0x70]
cmp dword [esp + 0xc8], eax
jg 0x64757360
mov eax, dword [esp + 0x70]
add esp, 0xac
pop ebx
pop esi
pop edi
pop ebp
ret
jne 0x64757f38
mov ebx, dword [esp + 0xc0]
mov edx, dword [ebx + 0x2c]
mov word [ebx + 0x28], dx
cmp eax, 1
jle 0x647581d4
mov word [ebx + 0x2a], 0
xor eax, eax
mov word [ebx + 0x2c], ax
jmp 0x64757634
mov dword [esp + 0x54], 0
jmp 0x6475741a
mov esi, dword [esp + 0xc0]
mov esi, dword [esi + 4]
mov dword [esp + 0x6c], esi
mov ecx, dword [esp + 0xc0]
mov ebp, dword [ecx + 8]
mov eax, dword [esp + 0x48]
cdq
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], edx
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 + 0x40]
sbb edi, dword [esp + 0x44]
mov eax, dword [esp + 0x48]
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 0x647573fb
neg dword [esp + 0x48]
jmp 0x6475738a
mov eax, dword [esp + 0xc4]
test eax, eax
je 0x64758a6d
mov eax, dword [esp + 0x84]
test eax, eax
jle 0x64758200
cmp dword [esp + 0x84], 1
je 0x64758999
mov esi, dword [esp + 0xc0]
mov ebx, dword [esi + 0x28]
mov word [esp + 0x94], bx
movsx edi, word [esi + 0x2a]
mov word [esp + 0x96], di
movsx esi, word [esi + 0x2c]
mov word [esp + 0x98], si
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0x78]
mov ax, word [edx + ecx*2]
mov word [esp + 0x9a], ax
mov ecx, dword [esp + 0xc0]
mov ecx, dword [ecx + 0xc]
mov dword [esp + 0x80], ecx
mov edx, dword [esp + 0x6c]
cmp ecx, edx
jl 0x64757f70
lea edx, [edx - 1]
cmp dword [esp + 0x80], edx
jge 0x647577bc
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0x78]
mov cx, word [edx + ecx*2 - 4]
mov word [esp + 0x9e], cx
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0x54]
test edx, edx
mov dword [esp + 0x40], ecx
je 0x647578ac
lea ecx, [esp + 0x9a]
mov dword [esp + 0x4c], ebp
movsx edx, ax
mov ebp, dword [esp + 0xc4]
jmp 0x64757806
lea edx, [esp + 0xa0]
cmp ecx, edx
jae 0x6475855f
movsx edx, word [ecx]
movsx esi, word [ecx - 2]
movsx edi, word [ecx - 4]
mov bx, word [ecx - 6]
mov eax, dword [esp + 0x4c]
sar eax, 6
mov dword [esp + 0x1c], eax
xor eax, 0x3ff
inc eax
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x1c]
movsx eax, word [eax + eax + 0x64876ac0]
imul edx, eax
mov eax, dword [esp + 0x1c]
movsx eax, word [eax + eax + 0x648772e0]
imul esi, eax
add esi, edx
mov edx, dword [esp + 0x50]
movsx eax, word [edx + edx + 0x648772e0]
imul edi, eax
add esi, edi
movsx edi, bx
movsx eax, word [edx + edx + 0x64876ac0]
imul edi, eax
add esi, edi
mov eax, dword [esp + 0x58]
imul esi
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
add dword [ebp], edx
mov eax, dword [esp + 0x5c]
imul esi
add dword [ebp + 4], edx
add ebp, 8
mov eax, dword [esp + 0x4c]
add eax, dword [esp + 0x48]
mov edx, eax
sar edx, 0x10
add dword [esp + 0x40], edx
shl edx, 1
sub ecx, edx
and eax, 0xffff
mov dword [esp + 0x4c], eax
dec dword [esp + 0x54]
jne 0x647577e8
mov dword [esp + 0xc4], ebp
mov ebp, dword [esp + 0x4c]
mov edx, dword [esp + 0x6c]
sub edx, dword [esp + 0x40]
mov eax, dword [esp + 0x80]
sub eax, dword [esp + 0x40]
dec eax
cmp edx, 2
jle 0x64757fac
cmp eax, 2
jg 0x64757fd8
mov ecx, dword [esp + 0x40]
mov ebx, dword [esp + 0x78]
mov dx, word [ebx + ecx*2 + 6]
mov esi, dword [esp + 0xc0]
mov word [esi + 0x28], dx
cmp eax, 2
je 0x64757fe7
mov dx, word [ebx + ecx*2 + 4]
mov word [esi + 0x2a], dx
dec eax
je 0x6475903f
mov ax, word [ebx + ecx*2 + 2]
mov ecx, dword [esp + 0xc0]
jmp 0x64757630
mov esi, dword [esp + 0xc0]
mov word [esi + 0x28], 0
mov ecx, dword [esp + 0xc0]
mov word [ecx + 0x2a], 0
xor eax, eax
jmp 0x64757630
mov ebx, dword [esp + 0xc0]
mov cx, word [ebx + 0x2a]
mov word [esp + 0x94], cx
mov eax, dword [ebx + 0x2c]
mov word [esp + 0x96], ax
mov eax, dword [esp + 0x54]
test eax, eax
je 0x64758fd9
mov esi, dword [esp + 0x6c]
lea edx, [esp + 0x94]
mov ebx, dword [esp + 0x54]
mov edi, esi
movsx esi, cx
mov eax, dword [esp + 0xc4]
jmp 0x6475798d
cmp edx, dword [esp + 0x3c]
jae 0x64758010
movsx esi, word [edx]
mov ecx, dword [esp + 0x74]
imul ecx, esi
sar ecx, 8
add dword [eax], ecx
imul esi, dword [esp + 0x7c]
sar esi, 8
add dword [eax + 4], esi
add eax, 8
add ebp, dword [esp + 0x48]
mov ecx, ebp
sar ecx, 0x10
add edi, ecx
lea edx, [edx + ecx*2]
and ebp, 0xffff
dec ebx
jne 0x64757980
mov dword [esp + 0x4c], edi
mov dword [esp + 0xc4], eax
mov esi, edi
mov ecx, dword [esp + 0x78]
lea esi, [ecx + esi*2]
mov dword [esp + 0x60], esi
sub esi, dword [esp + 0x60]
sar esi, 1
add esi, dword [esp + 0x4c]
mov dword [esp + 0x40], esi
jmp 0x647575d4
mov dword [esp + 0xc4], ebp
mov ebp, dword [esp + 0x4c]
mov ebx, dword [esp + 0x40]
mov esi, dword [esp + 0x78]
lea ecx, [esi + ebx*2]
test byte [esp + 0x54], 2
je 0x64757b26
mov esi, ebp
sar esi, 6
mov ebx, esi
xor ebx, 0x3ff
inc ebx
movsx edx, word [ecx - 6]
movsx eax, word [esi + esi + 0x64876ac0]
imul edx, eax
movsx eax, word [ecx - 4]
movsx esi, word [esi + esi + 0x648772e0]
imul eax, esi
add edx, eax
movsx eax, word [ecx - 2]
movsx esi, word [ebx + ebx + 0x648772e0]
imul eax, esi
add eax, edx
movsx esi, word [ecx]
movsx edx, word [ebx + ebx + 0x64876ac0]
imul esi, edx
add esi, eax
mov eax, dword [esp + 0x58]
imul esi
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
mov ebx, dword [esp + 0xc4]
add dword [ebx], edx
mov eax, dword [esp + 0x5c]
imul esi
add dword [ebx + 4], edx
mov edi, dword [esp + 0x48]
add edi, ebp
mov eax, edi
sar eax, 0x10
mov ebp, dword [esp + 0x40]
add ebp, eax
lea ecx, [ecx + eax*2]
and edi, 0xffff
mov esi, edi
sar esi, 6
mov ebx, esi
xor ebx, 0x3ff
inc ebx
movsx edx, word [ecx - 6]
movsx eax, word [esi + esi + 0x64876ac0]
imul edx, eax
movsx eax, word [ecx - 4]
movsx esi, word [esi + esi + 0x648772e0]
imul eax, esi
add edx, eax
movsx eax, word [ecx - 2]
movsx esi, word [ebx + ebx + 0x648772e0]
imul eax, esi
add eax, edx
movsx esi, word [ecx]
movsx edx, word [ebx + ebx + 0x64876ac0]
imul esi, edx
add esi, eax
mov eax, dword [esp + 0x58]
imul esi
mov ebx, dword [esp + 0xc4]
add dword [ebx + 8], edx
mov eax, dword [esp + 0x5c]
imul esi
mov dword [esp + 0x44], edx
add dword [ebx + 0xc], edx
add ebx, 0x10
mov dword [esp + 0xc4], ebx
add edi, dword [esp + 0x48]
mov eax, edi
sar eax, 0x10
add ebp, eax
mov dword [esp + 0x40], ebp
lea ecx, [ecx + eax*2]
mov ebp, edi
and ebp, 0xffff
test byte [esp + 0x54], 1
je 0x64757bbf
mov esi, ebp
sar esi, 6
mov ebx, esi
xor ebx, 0x3ff
inc ebx
movsx edx, word [ecx - 6]
movsx eax, word [esi + esi + 0x64876ac0]
imul edx, eax
movsx eax, word [ecx - 4]
movsx esi, word [esi + esi + 0x648772e0]
imul eax, esi
add edx, eax
movsx eax, word [ecx - 2]
movsx esi, word [ebx + ebx + 0x648772e0]
imul eax, esi
add eax, edx
movsx esi, word [ecx]
movsx edx, word [ebx + ebx + 0x64876ac0]
imul esi, edx
add esi, eax
mov eax, dword [esp + 0x58]
imul esi
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
mov ebx, dword [esp + 0xc4]
add dword [ebx], edx
mov eax, dword [esp + 0x5c]
imul esi
add dword [ebx + 4], edx
add ebx, 8
mov dword [esp + 0xc4], ebx
mov eax, dword [esp + 0x48]
add eax, ebp
mov edx, eax
sar edx, 0x10
add dword [esp + 0x40], edx
lea ecx, [ecx + edx*2]
movzx ebp, ax
mov ebx, dword [esp + 0x54]
sar ebx, 2
mov dword [esp + 0x54], ebx
mov ebx, dword [esp + 0x54]
test ebx, ebx
je 0x647575d4
mov esi, dword [esp + 0x54]
mov dword [esp + 0x60], esi
mov edi, dword [esp + 0xc4]
mov dword [esp + 0x4c], ebp
mov ebp, edi
mov edi, dword [esp + 0x40]
nop
mov esi, dword [esp + 0x4c]
sar esi, 6
mov ebx, esi
xor ebx, 0x3ff
inc ebx
movsx edx, word [ecx - 6]
movsx eax, word [esi + esi + 0x64876ac0]
imul edx, eax
movsx eax, word [ecx - 4]
movsx esi, word [esi + esi + 0x648772e0]
imul eax, esi
add edx, eax
movsx eax, word [ecx - 2]
movsx esi, word [ebx + ebx + 0x648772e0]
imul eax, esi
add eax, edx
movsx esi, word [ecx]
movsx edx, word [ebx + ebx + 0x64876ac0]
imul esi, edx
add esi, eax
mov eax, dword [esp + 0x58]
imul esi
add dword [ebp], edx
mov eax, dword [esp + 0x5c]
imul esi
mov dword [esp + 0x44], edx
add dword [ebp + 4], edx
mov ebx, dword [esp + 0x4c]
add ebx, dword [esp + 0x48]
mov eax, ebx
sar eax, 0x10
add edi, eax
mov dword [esp + 0x40], edi
lea ecx, [ecx + eax*2]
and ebx, 0xffff
mov edi, ebx
sar edi, 6
mov esi, edi
xor esi, 0x3ff
inc esi
movsx edx, word [ecx - 6]
movsx eax, word [edi + edi + 0x64876ac0]
imul edx, eax
movsx eax, word [ecx - 4]
movsx edi, word [edi + edi + 0x648772e0]
imul eax, edi
add edx, eax
movsx eax, word [ecx - 2]
movsx edi, word [esi + esi + 0x648772e0]
imul eax, edi
add eax, edx
movsx edi, word [ecx]
movsx edx, word [esi + esi + 0x64876ac0]
imul edi, edx
add edi, eax
mov eax, dword [esp + 0x58]
imul edi
add dword [ebp + 8], edx
mov eax, dword [esp + 0x5c]
imul edi
add dword [ebp + 0xc], edx
add ebx, dword [esp + 0x48]
mov eax, ebx
sar eax, 0x10
mov esi, dword [esp + 0x40]
add esi, eax
mov dword [esp + 0x40], esi
lea ecx, [ecx + eax*2]
and ebx, 0xffff
mov edi, ebx
sar edi, 6
mov esi, edi
xor esi, 0x3ff
inc esi
movsx edx, word [ecx - 6]
movsx eax, word [edi + edi + 0x64876ac0]
imul edx, eax
movsx eax, word [ecx - 4]
movsx edi, word [edi + edi + 0x648772e0]
imul eax, edi
add edx, eax
movsx eax, word [ecx - 2]
movsx edi, word [esi + esi + 0x648772e0]
imul eax, edi
add eax, edx
movsx edi, word [ecx]
movsx edx, word [esi + esi + 0x64876ac0]
imul edi, edx
add edi, eax
mov eax, dword [esp + 0x58]
imul edi
add dword [ebp + 0x10], edx
mov eax, dword [esp + 0x5c]
imul edi
add dword [ebp + 0x14], edx
add ebx, dword [esp + 0x48]
mov eax, ebx
sar eax, 0x10
mov esi, dword [esp + 0x40]
add esi, eax
mov dword [esp + 0x40], esi
lea ecx, [ecx + eax*2]
and ebx, 0xffff
mov edi, ebx
sar edi, 6
mov esi, edi
xor esi, 0x3ff
inc esi
movsx edx, word [ecx - 6]
movsx eax, word [edi + edi + 0x64876ac0]
imul edx, eax
movsx eax, word [ecx - 4]
movsx edi, word [edi + edi + 0x648772e0]
imul eax, edi
add edx, eax
movsx eax, word [ecx - 2]
movsx edi, word [esi + esi + 0x648772e0]
imul eax, edi
add eax, edx
movsx edi, word [ecx]
movsx edx, word [esi + esi + 0x64876ac0]
imul edi, edx
add edi, eax
mov eax, dword [esp + 0x58]
imul edi
add dword [ebp + 0x18], edx
mov eax, dword [esp + 0x5c]
imul edi
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
add dword [ebp + 0x1c], edx
add ebp, 0x20
add ebx, dword [esp + 0x48]
mov eax, ebx
sar eax, 0x10
mov edi, dword [esp + 0x40]
add edi, eax
lea ecx, [ecx + eax*2]
and ebx, 0xffff
mov dword [esp + 0x4c], ebx
dec dword [esp + 0x60]
jne 0x64757bf0
mov ebp, ebx
mov dword [esp + 0x40], edi
mov eax, dword [esp + 0x54]
shl eax, 5
add dword [esp + 0xc4], eax
jmp 0x647575d4
mov esi, dword [esp + 0xc0]
movsx ebx, word [esi + 0x2a]
mov word [esp + 0x94], bx
movsx edx, word [esi + 0x2c]
mov word [esp + 0x96], dx
mov ecx, dword [esp + 0x6c]
mov esi, dword [esp + 0x78]
mov ax, word [esi + ecx*2]
mov word [esp + 0x98], ax
mov esi, dword [esp + 0x54]
test esi, esi
mov dword [esp + 0x40], ecx
je 0x647575d4
lea ecx, [esp + 0x96]
lea esi, [esp + 0x9a]
mov edi, dword [esp + 0xc4]
jmp 0x64757e83
cmp ecx, esi
jae 0x647582b7
movsx ebx, word [ecx - 2]
movsx edx, word [ecx]
sub edx, ebx
shl edx, 0xc
mov eax, ebp
shl eax, 0xc
shl ebx, 8
imul edx
add ebx, edx
shl ebx, 4
mov eax, dword [esp + 0x64]
imul ebx
add dword [edi], edx
mov eax, dword [esp + 0x68]
imul ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
add dword [edi + 4], edx
add edi, 8
add ebp, dword [esp + 0x48]
mov eax, ebp
sar eax, 0x10
add dword [esp + 0x40], eax
lea ecx, [ecx + eax*2]
and ebp, 0xffff
dec dword [esp + 0x54]
jne 0x64757e74
mov dword [esp + 0xc4], edi
jmp 0x647575d4
mov esi, ebp
mov edi, ebp
sar edi, 0x1f
mov eax, dword [esp + 0x54]
cdq
mov ecx, dword [esp + 0x40]
imul ecx, edx
mov eax, dword [esp + 0x44]
imul eax, dword [esp + 0x54]
add ecx, eax
mov eax, dword [esp + 0x54]
mul dword [esp + 0x40]
mov dword [esp + 0x40], eax
add edx, ecx
mov dword [esp + 0x44], edx
add esi, dword [esp + 0x40]
adc edi, dword [esp + 0x44]
mov eax, esi
mov edx, edi
shrd eax, edx, 0x10
sar edx, 0x10
mov ecx, dword [esp + 0x6c]
add ecx, eax
mov dword [esp + 0x40], ecx
mov ebp, esi
and ebp, 0xffff
jmp 0x647575d4
dec edx
jne 0x64757634
mov esi, dword [esp + 0xc0]
mov dx, word [esi + 0x2a]
mov word [esi + 0x28], dx
mov edx, dword [esi + 0x2c]
mov word [esi + 0x2a], dx
test eax, eax
jle 0x64758b0d
xor eax, eax
mov esi, dword [esp + 0xc0]
mov word [esi + 0x2c], ax
jmp 0x64757634
dec edx
mov ecx, dword [esp + 0x78]
mov cx, word [ecx + edx*2]
mov word [esp + 0x9c], cx
jmp 0x6475779e
mov esi, dword [esp + 0xc0]
mov esi, dword [esi + 0x20]
mov dword [esp + 0x84], esi
cmp esi, eax
jge 0x64757311
mov dword [esp + 0x84], eax
jmp 0x64757311
jne 0x64758ad6
mov ebx, dword [esp + 0xc0]
mov edx, dword [ebx + 0x2c]
mov word [ebx + 0x28], dx
cmp eax, 1
jle 0x64758ce7
mov word [ebx + 0x2a], 0
xor eax, eax
jmp 0x6475768d
mov ebx, dword [esp + 0xc0]
mov word [ebx + 0x28], 0
mov esi, ebx
mov word [esi + 0x2a], 0
xor eax, eax
mov ecx, esi
jmp 0x64757630
mov dword [esp + 0x70], 0
mov eax, dword [esp + 0x70]
add esp, 0xac
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 0x54], ebx
mov dword [esp + 0x4c], edi
mov dword [esp + 0xc4], eax
mov ecx, dword [esp + 0x78]
lea ecx, [ecx + edi*2]
mov dword [esp + 0x60], ecx
and ebx, 2
je 0x64759028
mov ebx, eax
mov esi, eax
movsx edx, word [ecx - 4]
mov eax, dword [esp + 0x74]
imul eax, edx
sar eax, 8
add dword [ebx], eax
imul edx, dword [esp + 0x7c]
sar edx, 8
add dword [ebx + 4], edx
mov eax, dword [esp + 0x48]
add eax, ebp
mov edx, eax
sar edx, 0x10
lea edx, [ecx + edx*2]
movzx ebx, ax
movsx ecx, word [edx - 4]
mov eax, dword [esp + 0x74]
imul eax, ecx
sar eax, 8
add dword [esi + 8], eax
imul ecx, dword [esp + 0x7c]
sar ecx, 8
add dword [esi + 0xc], ecx
add esi, 0x10
mov dword [esp + 0xc4], esi
mov eax, dword [esp + 0x48]
add eax, ebx
mov ecx, eax
sar ecx, 0x10
lea esi, [edx + ecx*2]
movzx ebp, ax
test byte [esp + 0x54], 1
je 0x647580de
movsx edx, word [esi - 4]
mov eax, dword [esp + 0x74]
imul eax, edx
sar eax, 8
mov ebx, dword [esp + 0xc4]
add dword [ebx], eax
imul edx, dword [esp + 0x7c]
sar edx, 8
add dword [ebx + 4], edx
add ebx, 8
mov dword [esp + 0xc4], ebx
mov eax, dword [esp + 0x48]
add eax, ebp
mov edx, eax
sar edx, 0x10
lea esi, [esi + edx*2]
movzx ebp, ax
mov ecx, dword [esp + 0x54]
sar ecx, 2
mov dword [esp + 0x54], ecx
mov edi, dword [esp + 0x54]
test edi, edi
je 0x647579d6
mov ecx, dword [esp + 0x54]
mov eax, dword [esp + 0xc4]
mov edx, dword [esp + 0x74]
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x7c]
movsx edi, word [esi - 4]
mov ebx, edi
imul ebx, edx
sar ebx, 8
add dword [eax], ebx
imul edi, ecx
sar edi, 8
add dword [eax + 4], edi
add ebp, dword [esp + 0x48]
mov ebx, ebp
sar ebx, 0x10
lea esi, [esi + ebx*2]
and ebp, 0xffff
movsx edi, word [esi - 4]
mov ebx, edi
imul ebx, edx
sar ebx, 8
add dword [eax + 8], ebx
imul edi, ecx
sar edi, 8
add dword [eax + 0xc], edi
add ebp, dword [esp + 0x48]
mov ebx, ebp
sar ebx, 0x10
lea esi, [esi + ebx*2]
and ebp, 0xffff
movsx edi, word [esi - 4]
mov ebx, edi
imul ebx, edx
sar ebx, 8
add dword [eax + 0x10], ebx
imul edi, ecx
sar edi, 8
add dword [eax + 0x14], edi
add ebp, dword [esp + 0x48]
mov ebx, ebp
sar ebx, 0x10
lea esi, [esi + ebx*2]
and ebp, 0xffff
movsx edi, word [esi - 4]
mov ebx, edi
imul ebx, edx
sar ebx, 8
add dword [eax + 0x18], ebx
imul edi, ecx
sar edi, 8
add dword [eax + 0x1c], edi
add eax, 0x20
add ebp, dword [esp + 0x48]
mov ebx, ebp
sar ebx, 0x10
lea esi, [esi + ebx*2]
and ebp, 0xffff
dec dword [esp + 0x40]
jne 0x6475810c
mov eax, dword [esp + 0x54]
shl eax, 5
add dword [esp + 0xc4], eax
jmp 0x647579d6
mov esi, dword [esp + 0x40]
mov ecx, dword [esp + 0x78]
mov dx, word [ecx + esi*2 - 4]
mov word [ebx + 0x2a], dx
dec eax
je 0x6475904d
mov ax, word [ecx + esi*2 - 2]
mov ebx, dword [esp + 0xc0]
jmp 0x6475768d
mov esi, dword [esp + 0xc0]
mov cx, word [esi + 0x2a]
mov word [esp + 0x94], cx
mov eax, dword [esi + 0x2c]
mov word [esp + 0x96], ax
mov edi, dword [esp + 0x6c]
mov eax, dword [esp + 0x54]
test eax, eax
je 0x6475828a
lea edx, [esp + 0x94]
mov ebx, dword [esp + 0x54]
movsx esi, cx
mov eax, dword [esp + 0xc4]
jmp 0x64758251
cmp edx, dword [esp + 0x3c]
jae 0x64758b1f
movsx esi, word [edx]
mov ecx, dword [esp + 0x74]
imul ecx, esi
sar ecx, 8
add dword [eax], ecx
imul esi, dword [esp + 0x7c]
sar esi, 8
add dword [eax + 4], esi
add eax, 8
add ebp, dword [esp + 0x48]
mov ecx, ebp
sar ecx, 0x10
add edi, ecx
shl ecx, 1
sub edx, ecx
and ebp, 0xffff
dec ebx
jne 0x64758244
mov dword [esp + 0xc4], eax
mov ecx, dword [esp + 0x78]
lea ecx, [ecx + edi*2]
mov dword [esp + 0x4c], ecx
sub ecx, dword [esp + 0x4c]
sar ecx, 1
add ecx, edi
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0xc0]
mov ecx, dword [ecx + 0xc]
mov dword [esp + 0x80], ecx
jmp 0x647578ac
mov dword [esp + 0xc4], edi
mov ecx, dword [esp + 0x40]
mov ebx, dword [esp + 0x78]
lea edi, [ebx + ecx*2]
test byte [esp + 0x54], 2
je 0x64758395
movsx ecx, word [edi - 4]
movsx edx, word [edi - 2]
sub edx, ecx
shl edx, 0xc
mov eax, ebp
shl eax, 0xc
shl ecx, 8
imul edx
add ecx, edx
shl ecx, 4
mov eax, dword [esp + 0x64]
imul ecx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
mov ebx, dword [esp + 0xc4]
add dword [ebx], edx
mov eax, dword [esp + 0x68]
imul ecx
mov esi, dword [esp + 0xc4]
add dword [esi + 4], edx
mov esi, dword [esp + 0x48]
add esi, ebp
mov eax, esi
sar eax, 0x10
mov ebp, dword [esp + 0x40]
add ebp, eax
lea ecx, [edi + eax*2]
and esi, 0xffff
movsx ebx, word [ecx - 4]
movsx eax, word [ecx - 2]
sub eax, ebx
shl eax, 0xc
mov edx, esi
shl edx, 0xc
shl ebx, 8
imul edx
add ebx, edx
shl ebx, 4
mov eax, dword [esp + 0x64]
imul ebx
mov eax, dword [esp + 0xc4]
add dword [eax + 8], edx
mov eax, dword [esp + 0x68]
imul ebx
mov dword [esp + 0x44], edx
mov ebx, dword [esp + 0xc4]
add dword [ebx + 0xc], edx
add ebx, 0x10
mov dword [esp + 0xc4], ebx
add esi, dword [esp + 0x48]
mov eax, esi
sar eax, 0x10
add ebp, eax
mov dword [esp + 0x40], ebp
lea edi, [ecx + eax*2]
mov ebp, esi
and ebp, 0xffff
test byte [esp + 0x54], 1
je 0x6475902f
movsx ecx, word [edi - 4]
movsx edx, word [edi - 2]
sub edx, ecx
shl edx, 0xc
mov eax, ebp
shl eax, 0xc
shl ecx, 8
imul edx
add ecx, edx
shl ecx, 4
mov eax, dword [esp + 0x64]
imul ecx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
mov ebx, dword [esp + 0xc4]
add dword [ebx], edx
mov eax, dword [esp + 0x68]
imul ecx
mov esi, dword [esp + 0xc4]
add dword [esi + 4], edx
add esi, 8
mov dword [esp + 0xc4], esi
mov eax, dword [esp + 0x48]
add eax, ebp
mov edx, eax
sar edx, 0x10
add dword [esp + 0x40], edx
lea edi, [edi + edx*2]
movzx ebp, ax
mov ecx, dword [esp + 0x54]
sar ecx, 2
mov dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x54]
test ecx, ecx
je 0x647575d4
mov ebx, dword [esp + 0x54]
mov dword [esp + 0x4c], ebx
mov ecx, dword [esp + 0xc4]
mov esi, dword [esp + 0x40]
movsx ebx, word [edi - 4]
movsx edx, word [edi - 2]
sub edx, ebx
shl edx, 0xc
mov eax, ebp
shl eax, 0xc
shl ebx, 8
imul edx
add ebx, edx
shl ebx, 4
mov eax, dword [esp + 0x64]
imul ebx
add dword [ecx], edx
mov eax, dword [esp + 0x68]
imul ebx
add dword [ecx + 4], edx
add ebp, dword [esp + 0x48]
mov eax, ebp
sar eax, 0x10
add esi, eax
lea ebx, [edi + eax*2]
and ebp, 0xffff
movsx edi, word [ebx - 4]
movsx edx, word [ebx - 2]
sub edx, edi
shl edx, 0xc
mov eax, ebp
shl eax, 0xc
shl edi, 8
imul edx
add edi, edx
shl edi, 4
mov eax, dword [esp + 0x64]
imul edi
add dword [ecx + 8], edx
mov eax, dword [esp + 0x68]
imul edi
add dword [ecx + 0xc], edx
add ebp, dword [esp + 0x48]
mov eax, ebp
sar eax, 0x10
add esi, eax
lea ebx, [ebx + eax*2]
and ebp, 0xffff
movsx edi, word [ebx - 4]
movsx edx, word [ebx - 2]
sub edx, edi
shl edx, 0xc
mov eax, ebp
shl eax, 0xc
shl edi, 8
imul edx
add edi, edx
shl edi, 4
mov eax, dword [esp + 0x64]
imul edi
add dword [ecx + 0x10], edx
mov eax, dword [esp + 0x68]
imul edi
add dword [ecx + 0x14], edx
add ebp, dword [esp + 0x48]
mov eax, ebp
sar eax, 0x10
add esi, eax
lea ebx, [ebx + eax*2]
and ebp, 0xffff
movsx edi, word [ebx - 4]
movsx edx, word [ebx - 2]
sub edx, edi
shl edx, 0xc
mov eax, ebp
shl eax, 0xc
shl edi, 8
imul edx
add edi, edx
shl edi, 4
mov eax, dword [esp + 0x64]
imul edi
add dword [ecx + 0x18], edx
mov eax, dword [esp + 0x68]
imul edi
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], edx
add dword [ecx + 0x1c], edx
add ecx, 0x20
add ebp, dword [esp + 0x48]
mov eax, ebp
sar eax, 0x10
add esi, eax
lea edi, [ebx + eax*2]
and ebp, 0xffff
dec dword [esp + 0x4c]
jne 0x6475842c
mov dword [esp + 0x40], esi
mov eax, dword [esp + 0x54]
shl eax, 5
add dword [esp + 0xc4], eax
jmp 0x647575d4
mov dword [esp + 0xc4], ebp
mov ebp, dword [esp + 0x4c]
mov ebx, dword [esp + 0x40]
mov esi, dword [esp + 0x78]
lea ecx, [esi + ebx*2]
test byte [esp + 0x54], 2
je 0x647586ad
mov edx, ebp
sar edx, 6
mov esi, edx
xor esi, 0x3ff
inc esi
movsx ebx, word [ecx]
movsx eax, word [edx + edx + 0x64876ac0]
imul ebx, eax
movsx eax, word [ecx + 2]
movsx edx, word [edx + edx + 0x648772e0]
imul eax, edx
add ebx, eax
movsx eax, word [ecx + 4]
movsx edx, word [esi + esi + 0x648772e0]
imul eax, edx
lea edx, [ebx + eax]
movsx ebx, word [ecx + 6]
movsx eax, word [esi + esi + 0x64876ac0]
imul ebx, eax
add ebx, edx
mov eax, dword [esp + 0x58]
imul ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
mov esi, dword [esp + 0xc4]
add dword [esi], edx
mov eax, dword [esp + 0x5c]
imul ebx
mov esi, edx
mov edx, dword [esp + 0xc4]
add dword [edx + 4], esi
mov edi, dword [esp + 0x48]
add edi, ebp
mov eax, edi
sar eax, 0x10
mov ebp, dword [esp + 0x40]
add ebp, eax
lea ecx, [ecx + eax*2]
and edi, 0xffff
mov ebx, edi
sar ebx, 6
mov esi, ebx
xor esi, 0x3ff
inc esi
movsx edx, word [ecx]
movsx eax, word [ebx + ebx + 0x64876ac0]
imul edx, eax
movsx eax, word [ecx + 2]
movsx ebx, word [ebx + ebx + 0x648772e0]
imul eax, ebx
add edx, eax
movsx eax, word [ecx + 4]
movsx ebx, word [esi + esi + 0x648772e0]
imul eax, ebx
add edx, eax
movsx eax, word [ecx + 6]
movsx ebx, word [esi + esi + 0x64876ac0]
imul eax, ebx
lea ebx, [edx + eax]
mov eax, dword [esp + 0x58]
imul ebx
mov dword [esp + 0x44], edx
mov esi, dword [esp + 0xc4]
add dword [esi + 8], edx
mov eax, dword [esp + 0x5c]
imul ebx
mov esi, edx
mov edx, dword [esp + 0xc4]
add dword [edx + 0xc], esi
add edx, 0x10
mov dword [esp + 0xc4], edx
add edi, dword [esp + 0x48]
mov eax, edi
sar eax, 0x10
add ebp, eax
mov dword [esp + 0x40], ebp
lea ecx, [ecx + eax*2]
mov ebp, edi
and ebp, 0xffff
test byte [esp + 0x54], 1
je 0x64758750
mov edx, ebp
sar edx, 6
mov esi, edx
xor esi, 0x3ff
inc esi
movsx ebx, word [ecx]
movsx eax, word [edx + edx + 0x64876ac0]
imul ebx, eax
movsx eax, word [ecx + 2]
movsx edx, word [edx + edx + 0x648772e0]
imul eax, edx
add ebx, eax
movsx eax, word [ecx + 4]
movsx edx, word [esi + esi + 0x648772e0]
imul eax, edx
lea edx, [ebx + eax]
movsx ebx, word [ecx + 6]
movsx eax, word [esi + esi + 0x64876ac0]
imul ebx, eax
add ebx, edx
mov eax, dword [esp + 0x58]
imul ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
mov esi, dword [esp + 0xc4]
add dword [esi], edx
mov eax, dword [esp + 0x5c]
imul ebx
mov esi, edx
mov edx, dword [esp + 0xc4]
add dword [edx + 4], esi
add edx, 8
mov dword [esp + 0xc4], edx
mov eax, dword [esp + 0x48]
add eax, ebp
mov edx, eax
sar edx, 0x10
add dword [esp + 0x40], edx
lea ecx, [ecx + edx*2]
movzx ebp, ax
mov ebx, dword [esp + 0x54]
sar ebx, 2
mov dword [esp + 0x54], ebx
mov eax, dword [esp + 0x54]
test eax, eax
je 0x647578ac
mov esi, dword [esp + 0x54]
mov dword [esp + 0x4c], esi
mov edi, dword [esp + 0xc4]
mov eax, ebp
mov ebp, edi
mov edi, eax
mov esi, edi
sar esi, 6
mov ebx, esi
xor ebx, 0x3ff
inc ebx
movsx edx, word [ecx]
movsx eax, word [esi + esi + 0x64876ac0]
imul edx, eax
movsx eax, word [ecx + 2]
movsx esi, word [esi + esi + 0x648772e0]
imul eax, esi
add edx, eax
movsx eax, word [ecx + 4]
movsx esi, word [ebx + ebx + 0x648772e0]
imul eax, esi
add eax, edx
movsx esi, word [ecx + 6]
movsx edx, word [ebx + ebx + 0x64876ac0]
imul esi, edx
add esi, eax
mov eax, dword [esp + 0x58]
imul esi
add dword [ebp], edx
mov eax, dword [esp + 0x5c]
imul esi
add dword [ebp + 4], edx
mov ebx, dword [esp + 0x48]
add ebx, edi
mov eax, ebx
sar eax, 0x10
mov esi, dword [esp + 0x40]
add esi, eax
mov dword [esp + 0x40], esi
lea ecx, [ecx + eax*2]
and ebx, 0xffff
mov edi, ebx
sar edi, 6
mov esi, edi
xor esi, 0x3ff
inc esi
movsx edx, word [ecx]
movsx eax, word [edi + edi + 0x64876ac0]
imul edx, eax
movsx eax, word [ecx + 2]
movsx edi, word [edi + edi + 0x648772e0]
imul eax, edi
add edx, eax
movsx eax, word [ecx + 4]
movsx edi, word [esi + esi + 0x648772e0]
imul eax, edi
add eax, edx
movsx edi, word [ecx + 6]
movsx edx, word [esi + esi + 0x64876ac0]
imul edi, edx
add edi, eax
mov eax, dword [esp + 0x58]
imul edi
add dword [ebp + 8], edx
mov eax, dword [esp + 0x5c]
imul edi
add dword [ebp + 0xc], edx
add ebx, dword [esp + 0x48]
mov eax, ebx
sar eax, 0x10
mov esi, dword [esp + 0x40]
add esi, eax
mov dword [esp + 0x40], esi
lea ecx, [ecx + eax*2]
and ebx, 0xffff
mov edi, ebx
sar edi, 6
mov esi, edi
xor esi, 0x3ff
inc esi
movsx edx, word [ecx]
movsx eax, word [edi + edi + 0x64876ac0]
imul edx, eax
movsx eax, word [ecx + 2]
movsx edi, word [edi + edi + 0x648772e0]
imul eax, edi
add edx, eax
movsx eax, word [ecx + 4]
movsx edi, word [esi + esi + 0x648772e0]
imul eax, edi
add eax, edx
movsx edi, word [ecx + 6]
movsx edx, word [esi + esi + 0x64876ac0]
imul edi, edx
add edi, eax
mov eax, dword [esp + 0x58]
imul edi
add dword [ebp + 0x10], edx
mov eax, dword [esp + 0x5c]
imul edi
add dword [ebp + 0x14], edx
add ebx, dword [esp + 0x48]
mov eax, ebx
sar eax, 0x10
mov esi, dword [esp + 0x40]
add esi, eax
mov dword [esp + 0x40], esi
lea ecx, [ecx + eax*2]
and ebx, 0xffff
mov edi, ebx
sar edi, 6
mov esi, edi
xor esi, 0x3ff
inc esi
movsx edx, word [ecx]
movsx eax, word [edi + edi + 0x64876ac0]
imul edx, eax
movsx eax, word [ecx + 2]
movsx edi, word [edi + edi + 0x648772e0]
imul eax, edi
add edx, eax
movsx eax, word [ecx + 4]
movsx edi, word [esi + esi + 0x648772e0]
imul eax, edi
add eax, edx
movsx edi, word [ecx + 6]
movsx edx, word [esi + esi + 0x64876ac0]
imul edi, edx
add edi, eax
mov eax, dword [esp + 0x58]
imul edi
add dword [ebp + 0x18], edx
mov eax, dword [esp + 0x5c]
imul edi
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
add dword [ebp + 0x1c], edx
add ebp, 0x20
add ebx, dword [esp + 0x48]
mov eax, ebx
sar eax, 0x10
mov esi, dword [esp + 0x40]
add esi, eax
mov dword [esp + 0x40], esi
lea ecx, [ecx + eax*2]
movzx edi, bx
dec dword [esp + 0x4c]
jne 0x6475877c
mov ebp, edi
mov eax, dword [esp + 0x54]
shl eax, 5
add dword [esp + 0xc4], eax
jmp 0x647578ac
mov ebx, dword [esp + 0xc0]
movsx edx, word [ebx + 0x2a]
mov word [esp + 0x94], dx
movsx ebx, word [ebx + 0x2c]
mov word [esp + 0x96], bx
mov ecx, dword [esp + 0x6c]
mov esi, dword [esp + 0x78]
mov ax, word [esi + ecx*2]
mov word [esp + 0x98], ax
mov esi, dword [esp + 0x54]
test esi, esi
je 0x64758fe8
mov dword [esp + 0x40], ecx
lea ecx, [esp + 0x96]
lea esi, [esp + 0x9a]
mov edi, dword [esp + 0xc4]
jmp 0x64758a03
cmp ecx, esi
jae 0x64758d10
movsx ebx, word [ecx]
movsx edx, word [ecx - 2]
sub edx, ebx
shl edx, 0xc
mov eax, ebp
shl eax, 0xc
shl ebx, 8
imul edx
add ebx, edx
shl ebx, 4
mov eax, dword [esp + 0x64]
imul ebx
add dword [edi], edx
mov eax, dword [esp + 0x68]
imul ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
add dword [edi + 4], edx
add edi, 8
add ebp, dword [esp + 0x48]
mov eax, ebp
sar eax, 0x10
add dword [esp + 0x40], eax
shl eax, 1
sub ecx, eax
and ebp, 0xffff
dec dword [esp + 0x54]
jne 0x647589f4
mov dword [esp + 0xc4], edi
mov ecx, dword [esp + 0xc0]
mov ecx, dword [ecx + 0xc]
mov dword [esp + 0x80], ecx
jmp 0x647578ac
mov esi, ebp
mov edi, ebp
sar edi, 0x1f
mov eax, ecx
cdq
mov ecx, dword [esp + 0x40]
imul ecx, edx
mov eax, dword [esp + 0x44]
imul eax, dword [esp + 0x54]
add ecx, eax
mov eax, dword [esp + 0x54]
mul dword [esp + 0x40]
mov dword [esp + 0x40], eax
add edx, ecx
mov dword [esp + 0x44], edx
add esi, dword [esp + 0x40]
adc edi, dword [esp + 0x44]
mov eax, esi
mov edx, edi
shrd eax, edx, 0x10
sar edx, 0x10
mov ecx, dword [esp + 0x6c]
add ecx, eax
mov dword [esp + 0x40], ecx
mov ebp, esi
and ebp, 0xffff
mov ebx, dword [esp + 0xc0]
mov ebx, dword [ebx + 0xc]
mov dword [esp + 0x80], ebx
jmp 0x647578ac
dec edx
jne 0x64757634
mov esi, dword [esp + 0xc0]
mov dx, word [esi + 0x2a]
mov word [esi + 0x28], dx
mov edx, dword [esi + 0x2c]
mov word [esi + 0x2a], dx
test eax, eax
jg 0x64757f5d
mov ecx, dword [esp + 0x40]
mov ebx, dword [esp + 0x78]
mov ax, word [ebx + ecx*2 + 2]
jmp 0x64757f5f
mov ecx, dword [esp + 0x40]
mov ebx, dword [esp + 0x78]
mov ax, word [ebx + ecx*2 - 2]
jmp 0x64757f5f
mov dword [esp + 0x54], ebx
mov dword [esp + 0xc4], eax
mov ecx, dword [esp + 0x78]
lea ecx, [ecx + edi*2]
mov dword [esp + 0x4c], ecx
and ebx, 2
je 0x64758ba6
mov ebx, eax
movsx edx, word [ecx + 4]
mov eax, dword [esp + 0x74]
imul eax, edx
sar eax, 8
add dword [ebx], eax
imul edx, dword [esp + 0x7c]
sar edx, 8
add dword [ebx + 4], edx
mov eax, dword [esp + 0x48]
add eax, ebp
mov edx, eax
sar edx, 0x10
lea ecx, [ecx + edx*2]
movzx ebx, ax
movsx edx, word [ecx + 4]
mov eax, dword [esp + 0x74]
imul eax, edx
sar eax, 8
mov esi, dword [esp + 0xc4]
add dword [esi + 8], eax
imul edx, dword [esp + 0x7c]
sar edx, 8
add dword [esi + 0xc], edx
add esi, 0x10
mov dword [esp + 0xc4], esi
mov eax, dword [esp + 0x48]
add eax, ebx
mov edx, eax
sar edx, 0x10
lea ecx, [ecx + edx*2]
movzx ebp, ax
test byte [esp + 0x54], 1
je 0x64758bea
movsx edx, word [ecx + 4]
mov eax, dword [esp + 0x74]
imul eax, edx
sar eax, 8
mov esi, dword [esp + 0xc4]
add dword [esi], eax
imul edx, dword [esp + 0x7c]
sar edx, 8
add dword [esi + 4], edx
add esi, 8
mov dword [esp + 0xc4], esi
mov eax, dword [esp + 0x48]
add eax, ebp
mov edx, eax
sar edx, 0x10
lea ecx, [ecx + edx*2]
movzx ebp, ax
mov ebx, dword [esp + 0x54]
sar ebx, 2
mov dword [esp + 0x54], ebx
mov eax, dword [esp + 0x54]
test eax, eax
je 0x64758295
mov esi, dword [esp + 0x54]
mov dword [esp + 0x40], esi
mov eax, dword [esp + 0xc4]
mov edx, dword [esp + 0x74]
mov ebx, dword [esp + 0x7c]
mov dword [esp + 0x60], edi
movsx edi, word [ecx + 4]
mov esi, edi
imul esi, edx
sar esi, 8
add dword [eax], esi
imul edi, ebx
sar edi, 8
add dword [eax + 4], edi
add ebp, dword [esp + 0x48]
mov esi, ebp
sar esi, 0x10
lea esi, [ecx + esi*2]
and ebp, 0xffff
movsx edi, word [esi + 4]
mov ecx, edi
imul ecx, edx
sar ecx, 8
add dword [eax + 8], ecx
imul edi, ebx
sar edi, 8
add dword [eax + 0xc], edi
add ebp, dword [esp + 0x48]
mov ecx, ebp
sar ecx, 0x10
lea esi, [esi + ecx*2]
and ebp, 0xffff
movsx edi, word [esi + 4]
mov ecx, edi
imul ecx, edx
sar ecx, 8
add dword [eax + 0x10], ecx
imul edi, ebx
sar edi, 8
add dword [eax + 0x14], edi
add ebp, dword [esp + 0x48]
mov ecx, ebp
sar ecx, 0x10
lea esi, [esi + ecx*2]
and ebp, 0xffff
movsx edi, word [esi + 4]
mov ecx, edi
imul ecx, edx
sar ecx, 8
add dword [eax + 0x18], ecx
imul edi, ebx
sar edi, 8
add dword [eax + 0x1c], edi
add eax, 0x20
add ebp, dword [esp + 0x48]
mov ecx, ebp
sar ecx, 0x10
lea ecx, [esi + ecx*2]
and ebp, 0xffff
dec dword [esp + 0x40]
jne 0x64758c1c
mov edi, dword [esp + 0x60]
mov eax, dword [esp + 0x54]
shl eax, 5
add dword [esp + 0xc4], eax
jmp 0x64758295
mov esi, dword [esp + 0x40]
mov ecx, dword [esp + 0x78]
mov dx, word [ecx + esi*2 + 4]
mov word [ebx + 0x2a], dx
dec eax
je 0x6475904d
mov ax, word [ecx + esi*2 + 2]
mov ebx, dword [esp + 0xc0]
jmp 0x6475768d
mov dword [esp + 0xc4], edi
mov ebx, dword [esp + 0x40]
mov esi, dword [esp + 0x78]
lea edi, [esi + ebx*2]
test byte [esp + 0x54], 2
je 0x64758dee
movsx ecx, word [edi + 2]
movsx edx, word [edi + 4]
sub edx, ecx
shl edx, 0xc
mov eax, ebp
shl eax, 0xc
shl ecx, 8
imul edx
add ecx, edx
shl ecx, 4
mov eax, dword [esp + 0x64]
imul ecx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
mov ebx, dword [esp + 0xc4]
add dword [ebx], edx
mov eax, dword [esp + 0x68]
imul ecx
mov esi, dword [esp + 0xc4]
add dword [esi + 4], edx
mov esi, dword [esp + 0x48]
add esi, ebp
mov eax, esi
sar eax, 0x10
mov ebp, dword [esp + 0x40]
add ebp, eax
lea ebx, [edi + eax*2]
and esi, 0xffff
movsx ecx, word [ebx + 2]
movsx edx, word [ebx + 4]
sub edx, ecx
shl edx, 0xc
mov eax, esi
shl eax, 0xc
shl ecx, 8
imul edx
add ecx, edx
shl ecx, 4
mov eax, dword [esp + 0x64]
imul ecx
mov eax, dword [esp + 0xc4]
add dword [eax + 8], edx
mov eax, dword [esp + 0x68]
imul ecx
mov dword [esp + 0x44], edx
mov ecx, dword [esp + 0xc4]
add dword [ecx + 0xc], edx
add ecx, 0x10
mov dword [esp + 0xc4], ecx
add esi, dword [esp + 0x48]
mov eax, esi
sar eax, 0x10
add ebp, eax
mov dword [esp + 0x40], ebp
lea edi, [ebx + eax*2]
mov ebp, esi
and ebp, 0xffff
test byte [esp + 0x54], 1
je 0x64759018
movsx ecx, word [edi + 2]
movsx edx, word [edi + 4]
sub edx, ecx
shl edx, 0xc
mov eax, ebp
shl eax, 0xc
shl ecx, 8
imul edx
add ecx, edx
shl ecx, 4
mov eax, dword [esp + 0x64]
imul ecx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
mov ebx, dword [esp + 0xc4]
add dword [ebx], edx
mov eax, dword [esp + 0x68]
imul ecx
mov esi, dword [esp + 0xc4]
add dword [esi + 4], edx
add esi, 8
mov dword [esp + 0xc4], esi
mov eax, dword [esp + 0x48]
add eax, ebp
mov edx, eax
sar edx, 0x10
add dword [esp + 0x40], edx
lea edi, [edi + edx*2]
movzx ebp, ax
mov ecx, dword [esp + 0x54]
sar ecx, 2
mov dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x54]
test ecx, ecx
je 0x64759002
mov esi, dword [esp + 0x54]
mov dword [esp + 0x4c], esi
mov ecx, dword [esp + 0xc4]
mov esi, dword [esp + 0x40]
lea esi, [esi]
movsx ebx, word [edi + 2]
movsx edx, word [edi + 4]
sub edx, ebx
shl edx, 0xc
mov eax, ebp
shl eax, 0xc
shl ebx, 8
imul edx
add ebx, edx
shl ebx, 4
mov eax, dword [esp + 0x64]
imul ebx
add dword [ecx], edx
mov eax, dword [esp + 0x68]
imul ebx
add dword [ecx + 4], edx
add ebp, dword [esp + 0x48]
mov eax, ebp
sar eax, 0x10
add esi, eax
lea ebx, [edi + eax*2]
and ebp, 0xffff
movsx edi, word [ebx + 2]
movsx edx, word [ebx + 4]
sub edx, edi
shl edx, 0xc
mov eax, ebp
shl eax, 0xc
shl edi, 8
imul edx
add edi, edx
shl edi, 4
mov eax, dword [esp + 0x64]
imul edi
add dword [ecx + 8], edx
mov eax, dword [esp + 0x68]
imul edi
add dword [ecx + 0xc], edx
add ebp, dword [esp + 0x48]
mov eax, ebp
sar eax, 0x10
add esi, eax
lea ebx, [ebx + eax*2]
and ebp, 0xffff
movsx edi, word [ebx + 2]
movsx edx, word [ebx + 4]
sub edx, edi
shl edx, 0xc
mov eax, ebp
shl eax, 0xc
shl edi, 8
imul edx
add edi, edx
shl edi, 4
mov eax, dword [esp + 0x64]
imul edi
add dword [ecx + 0x10], edx
mov eax, dword [esp + 0x68]
imul edi
add dword [ecx + 0x14], edx
add ebp, dword [esp + 0x48]
mov eax, ebp
sar eax, 0x10
add esi, eax
lea ebx, [ebx + eax*2]
and ebp, 0xffff
movsx edi, word [ebx + 2]
movsx edx, word [ebx + 4]
sub edx, edi
shl edx, 0xc
mov eax, ebp
shl eax, 0xc
shl edi, 8
imul edx
add edi, edx
shl edi, 4
mov eax, dword [esp + 0x64]
imul edi
add dword [ecx + 0x18], edx
mov eax, dword [esp + 0x68]
imul edi
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], edx
add dword [ecx + 0x1c], edx
add ecx, 0x20
add ebp, dword [esp + 0x48]
mov eax, ebp
sar eax, 0x10
add esi, eax
lea edi, [ebx + eax*2]
and ebp, 0xffff
dec dword [esp + 0x4c]
jne 0x64758e88
mov dword [esp + 0x40], esi
mov eax, dword [esp + 0x54]
shl eax, 5
add dword [esp + 0xc4], eax
mov ecx, dword [esp + 0xc0]
mov ecx, dword [ecx + 0xc]
mov dword [esp + 0x80], ecx
jmp 0x647578ac
mov ebx, dword [esp + 0x6c]
mov dword [esp + 0x40], ebx
jmp 0x647575d4
mov ebx, dword [esp + 0x6c]
mov dword [esp + 0x4c], ebx
mov esi, ebx
jmp 0x647579cb
mov dword [esp + 0x40], ecx
mov esi, dword [esp + 0xc0]
mov esi, dword [esi + 0xc]
mov dword [esp + 0x80], esi
jmp 0x647578ac
mov ebx, dword [esp + 0xc0]
mov ebx, dword [ebx + 0xc]
mov dword [esp + 0x80], ebx
jmp 0x647578ac
mov ebx, dword [esp + 0x54]
sar ebx, 2
mov dword [esp + 0x54], ebx
jmp 0x64758e66
mov esi, ecx
jmp 0x6475809a
mov esi, dword [esp + 0x54]
sar esi, 2
mov dword [esp + 0x54], esi
jmp 0x6475840d
xor eax, eax
mov ecx, dword [esp + 0xc0]
jmp 0x64757630
xor eax, eax
mov ebx, dword [esp + 0xc0]
jmp 0x6475768d