Function at 0x5054f0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xa8
push esi
mov esi, dword [ebp + 8]
push edi
mov edi, ecx
mov dword [ebp - 0x70], edi
mov byte [esi + 4], 1
cmp byte [edi + 0x71], 0
jne 0x50b98b
mov eax, dword [edi]
call dword [eax + 0x68]
push edi
call fcn.0050fbe0
add esp, 4
test al, al
je 0x50557e
push dword [ebp + 0x14]
movss xmm0, dword [ebp + 0x30]
sub esp, 0x10
mov ecx, dword [edi + 0x68]
movss dword [esp + 0xc], xmm0
movss xmm0, dword [ebp + 0x2c]
movss dword [esp + 8], xmm0
movsd xmm0, qword [ebp + 0x24]
mov ecx, dword [ecx + 0x30]
movsd qword [esp], xmm0
push dword [ebp + 0x20]
movss xmm0, dword [ebp + 0x10]
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
sub esp, 8
movss dword [esp + 4], xmm0
movss xmm0, dword [ebp + 0xc]
movss dword [esp], xmm0
push esi
call fcn.00505430
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x2c
cmp byte [edi + 0x75], 0
jne 0x50b993
cmp byte [edi + 0x4e], 0
jne 0x50b993
cmp byte [edi + 0x4d], 0
je 0x5055a2
cmp byte [edi + 0x73], 0
je 0x50b993
mov eax, dword [edi + 0x68]
cmp byte [eax + 0x38], 0
jne 0x50b993
push ebx
mov ebx, dword [ebp + 0x14]
lea eax, [ebp - 0xa8]
sub esp, 8
xorps xmm0, xmm0
movups xmmword [ebp - 0xa8], xmm0
mov ecx, edi
movups xmmword [ebp - 0x98], xmm0
movss xmm0, dword [ebp + 0x30]
movss dword [esp + 4], xmm0
movss xmm0, dword [ebp + 0x2c]
movss dword [esp], xmm0
movsd xmm0, qword [ebp + 0x24]
push eax
sub esp, 8
lea eax, [ebp + 0x10]
movsd qword [esp], xmm0
push dword [ebp + 0x18]
push ebx
push eax
lea eax, [ebp + 0xc]
push eax
call fcn.0050e370
test al, al
je 0x50b98a
push 0
push 0x623610
push 0x6235d8
push 0
push esi
call fcn.0059e522
push 0
push 0x6235f4
push 0x6235d8
push 0
push esi
mov edi, eax
call fcn.0059e522
add esp, 0x28
test edi, edi
je 0x50b980
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x68]
movsd xmm0, qword [ebp + 0x24]
call fcn.005aee10
movsd qword [ebp - 0x5c], xmm0
movsd xmm0, qword [ebp + 0x24]
call fcn.005aefd0
cmp dword [ebp + 0x20], 0
mov ecx, dword [edi + 0x44]
movsd qword [ebp - 0x64], xmm0
mov dword [ebp + 0x28], ecx
jne 0x50a2ec
test ecx, ecx
mov ecx, edi
jne 0x507c96
call fcn.0051a4f0
mov edx, dword [edi]
mov esi, eax
imul esi, dword [ebx + 4]
mov ecx, edi
add esi, dword [ebx]
shl esi, 2
call dword [edx + 0x7c]
movsd xmm0, qword [ebp - 0x5c]
add eax, esi
mulsd xmm0, qword [0x5e6630]
mov esi, dword [ebp - 0x70]
mov ecx, esi
mov dword [ebp - 0x54], eax
cvttsd2si eax, xmm0
movsd xmm0, qword [ebp - 0x64]
mulsd xmm0, qword [0x5e6630]
mov dword [ebp + 0x20], eax
mov eax, dword [esi]
cvttsd2si edi, xmm0
mov eax, dword [eax + 0xbc]
mov dword [ebp - 0x3c], edi
call eax
test al, al
je 0x50b98a
mov eax, dword [esi + 0x68]
mov ecx, dword [eax + 0x20]
mov dword [ebp - 0x80], ecx
mov ecx, dword [eax + 0x24]
mov dword [ebp - 0x1c], ecx
mov ecx, dword [eax + 0x28]
mov dword [ebp - 0x68], ecx
mov ecx, 0x20
sub ecx, dword [eax + 0x14]
mov dword [ebp - 0x84], ecx
mov ecx, 0x18
sub ecx, dword [eax + 0x18]
mov dword [ebp - 0x78], ecx
mov ecx, 0x10
sub ecx, dword [eax + 0x1c]
mov eax, dword [esi + 0xd0]
mov dword [ebp - 0x28], ecx
mov ecx, dword [esi + 0xd4]
mov dword [ebp - 0x7c], ecx
mov ecx, dword [esi + 0xd8]
mov dword [ebp - 0x30], ecx
mov ecx, dword [esi + 0xdc]
mov dword [ebp - 0x74], ecx
cmp eax, 0x10
jne 0x506e6e
cvttsd2si edx, qword [ebp - 0xa0]
mov esi, dword [esi + 0x8c]
mov eax, esi
push 0x6671bc
cvttsd2si ecx, qword [ebp - 0xa8]
imul eax, edx
push dword [ebp + 0x1c]
cdq
sub eax, edx
sar eax, 1
add eax, ecx
mov ecx, dword [ebp - 0x70]
mov ecx, dword [ecx + 0xa0]
lea eax, [ecx + eax*2]
mov dword [ebp + 0x18], eax
mov eax, esi
cdq
sub eax, edx
mov esi, eax
sar esi, 1
call fcn.00500400
movsd xmm4, qword [ebp - 0x90]
add esp, 8
test al, al
je 0x50699d
cmp byte [0x6671ac], 0
je 0x50651f
mov eax, dword [ebp - 0x30]
cmp eax, 0x7e0
jne 0x505c23
xor eax, eax
comisd xmm4, xmmword [0x5d99a8]
mov dword [ebp - 0x14], eax
jbe 0x507c79
cvttsd2si ecx, qword [ebp - 0xa8]
movsd xmm1, qword [ebp - 0x64]
movss xmm6, dword [ebp + 0x10]
movsd xmm7, qword [0x5e6630]
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
subss xmm0, dword [ebp + 0x2c]
subss xmm0, dword [ebp + 0xc]
cvtps2pd xmm3, xmm0
movsd xmm0, qword [ebp - 0x98]
subsd xmm0, qword [0x5db028]
movaps xmm5, xmm3
mulsd xmm3, xmm1
mulsd xmm5, qword [ebp - 0x5c]
cvttsd2si ecx, xmm0
mov dword [ebp - 0xc], ecx
lea ecx, [esi + esi]
mov esi, dword [ebp + 0x20]
mov dword [ebp - 0x38], ecx
nop
cvttsd2si ecx, qword [ebp - 0xa0]
add eax, ecx
xor ecx, ecx
mov dword [ebp + 0xc], ecx
movd xmm0, eax
cvtdq2ps xmm0, xmm0
subss xmm0, dword [ebp + 0x30]
subss xmm0, xmm6
cvtps2pd xmm2, xmm0
movaps xmm0, xmm2
mulsd xmm2, qword [ebp - 0x5c]
mulsd xmm0, xmm1
movaps xmm1, xmm5
addsd xmm2, xmm3
subsd xmm1, xmm0
movss xmm0, dword [ebp + 0x2c]
cvtps2pd xmm0, xmm0
addsd xmm1, xmm0
movss xmm0, dword [ebp + 0x30]
cvtps2pd xmm0, xmm0
mulsd xmm1, xmm7
addsd xmm2, xmm0
cvttsd2si eax, xmm1
mulsd xmm2, xmm7
mov dword [ebp + 0x28], eax
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp + 0x28]
mov dword [ebp + 0x10], eax
mov eax, ecx
cvttsd2si edx, xmm2
sar eax, 0x10
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x10], edx
sar dword [ebp - 0x10], 0x10
mov dword [ebp + 0x1c], edx
cmp esi, 0xffffffff
jg 0x5058d2
test eax, eax
js 0x505be2
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv esi
mov ecx, eax
mov eax, 0x7fff
sub eax, dword [ebp + 0x28]
cdq
idiv esi
xor edx, edx
test ecx, ecx
cmovs ecx, edx
jmp 0x505908
cmp esi, 1
jl 0x50591a
mov eax, dword [ebx + 8]
dec eax
cmp dword [ebp - 0x44], eax
jge 0x505be2
mov eax, 0x10000
sub eax, ecx
cdq
idiv esi
mov ecx, eax
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, dword [ebp + 0x28]
sub eax, 0x17fff
cdq
idiv esi
xor edx, edx
test ecx, ecx
cmovle ecx, edx
cmp eax, dword [ebp + 0x10]
mov edx, dword [ebp + 0x1c]
cmovge eax, dword [ebp - 0xc]
mov dword [ebp + 0xc], ecx
mov dword [ebp + 0x10], eax
jmp 0x505935
test ecx, ecx
js 0x505be2
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jge 0x505be2
cmp edi, 0xffffffff
jg 0x505960
cmp dword [ebp - 0x10], 0
jl 0x505be2
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, edx
sub eax, 0x27fff
cdq
idiv edi
mov ecx, eax
mov eax, dword [ebp + 0x1c]
cdq
idiv edi
neg eax
jmp 0x50598f
cmp edi, 1
jl 0x5059a3
mov eax, dword [ebx + 0xc]
dec eax
cmp dword [ebp - 0x10], eax
jge 0x505be2
mov eax, 0x10000
sub eax, edx
cdq
idiv edi
mov ecx, eax
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, dword [ebp + 0x1c]
sub eax, 0x17fff
cdq
idiv edi
cmp ecx, dword [ebp + 0xc]
cmovle ecx, dword [ebp + 0xc]
cmp eax, dword [ebp + 0x10]
mov edx, ecx
cmovge eax, dword [ebp + 0x10]
mov ecx, eax
jmp 0x5059c4
test edx, edx
js 0x505be2
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp edx, eax
jge 0x505be2
mov edx, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x10]
mov eax, edx
imul eax, esi
add dword [ebp + 0x28], eax
mov eax, edx
imul eax, edi
add dword [ebp + 0x1c], eax
mov eax, dword [ebp + 0x18]
lea eax, [eax + edx*2]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x20]
mov dword [ebp - 0x48], eax
cmp edx, ecx
jg 0x505be2
mov ebx, dword [ebp + 0x1c]
sub ecx, edx
mov edx, dword [ebp + 0x28]
inc ecx
mov dword [ebp + 0x10], ecx
nop word [eax + eax]
mov ecx, ebx
mov esi, ebx
sar ecx, 0x10
and esi, 0xfffe
imul ecx, eax
inc esi
mov eax, edx
mov dword [ebp - 0x28], esi
sar eax, 0x10
and edx, 0xfffe
inc edx
add ecx, eax
mov eax, dword [ebp - 0x54]
lea ecx, [eax + ecx*4]
mov ebx, dword [ecx + 4]
mov eax, dword [ecx]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x20]
mov edi, dword [ecx + eax*4]
mov eax, dword [ecx + eax*4 + 4]
mov dword [ebp - 0x44], eax
mov eax, 0x10000
sub eax, esi
mov esi, 0x10000
mov dword [ebp + 0xc], eax
sub esi, edx
mov ecx, esi
imul ecx, eax
mov eax, dword [ebp - 0x10]
shr eax, 0x18
shr ecx, 0x10
imul ecx, eax
mov eax, dword [ebp + 0xc]
imul eax, edx
shr ecx, 0x10
mov dword [ebp - 4], ecx
shr eax, 0x10
mov dword [ebp + 0xc], eax
mov eax, ebx
mov ecx, dword [ebp + 0xc]
shr eax, 0x18
imul ecx, eax
mov eax, edi
shr eax, 0x18
mov dword [ebp + 0xc], ecx
mov ecx, dword [ebp - 0x28]
imul esi, ecx
shr dword [ebp + 0xc], 0x10
imul ecx, edx
mov edx, dword [ebp - 0x44]
shr esi, 0x10
imul esi, eax
mov eax, edx
shr eax, 0x18
shr ecx, 0x10
imul ecx, eax
mov eax, edi
and eax, 0xffff00ff
shr esi, 0x10
mov dword [ebp - 0x2c], esi
mov esi, edx
imul eax, dword [ebp - 0x2c]
and esi, 0xffff00ff
shr ecx, 0x10
imul esi, ecx
mov dword [ebp - 0x28], ecx
mov ecx, edx
and ecx, 0xff00
imul ecx, dword [ebp - 0x28]
add esi, eax
mov eax, ebx
and eax, 0xffff00ff
imul eax, dword [ebp + 0xc]
add esi, eax
mov eax, dword [ebp - 0x10]
and eax, 0xffff00ff
imul eax, dword [ebp - 4]
add esi, eax
mov eax, edi
and eax, 0xff00
imul eax, dword [ebp - 0x2c]
and edx, 0xff00ff
imul edx, dword [ebp - 0x28]
and edi, 0xff00ff
imul edi, dword [ebp - 0x2c]
add ecx, eax
mov eax, ebx
and eax, 0xff00
and ebx, 0xff00ff
imul eax, dword [ebp + 0xc]
add edx, edi
imul ebx, dword [ebp + 0xc]
mov edi, dword [ebp - 0x3c]
add ecx, eax
mov eax, dword [ebp - 0x10]
and eax, 0xff00
add edx, ebx
imul eax, dword [ebp - 4]
mov ebx, dword [ebp - 0x20]
add ecx, eax
xor esi, ecx
mov ecx, dword [ebp - 0x10]
and ecx, 0xff00ff
and esi, 0xff0000
imul ecx, dword [ebp - 4]
add edx, ecx
movzx ecx, word [ebx]
xor esi, edx
mov eax, ecx
shl eax, 0x10
mov edx, 0x100
sub edx, dword [ebp - 0x28]
or eax, ecx
sub edx, dword [ebp - 0x2c]
and eax, 0x7e0f81f
sub edx, dword [ebp + 0xc]
sub edx, dword [ebp - 4]
sar edx, 3
imul edx, eax
shr esi, 8
mov eax, esi
and eax, 0xfc00
shl eax, 0xb
shr edx, 5
and edx, 0x7e0f81f
add edx, eax
mov eax, esi
shr eax, 3
and eax, 0x1f
shr esi, 8
add eax, edx
and esi, 0xf800
mov edx, dword [ebp + 0x28]
add eax, esi
mov esi, dword [ebp + 0x20]
mov ecx, eax
shr ecx, 0x10
add edx, esi
or ecx, eax
mov dword [ebp + 0x28], edx
mov eax, dword [ebp - 0x48]
mov word [ebx], cx
add ebx, 2
mov dword [ebp - 0x20], ebx
mov ebx, dword [ebp + 0x1c]
add ebx, edi
sub dword [ebp + 0x10], 1
mov dword [ebp + 0x1c], ebx
jne 0x505a00
mov ebx, dword [ebp + 0x14]
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x38]
inc eax
add dword [ebp + 0x18], ecx
movsd xmm1, qword [ebp - 0x64]
mov dword [ebp - 0x14], eax
movd xmm0, eax
cvtdq2pd xmm0, xmm0
comisd xmm4, xmm0
ja 0x505820
mov edi, dword [ebp - 0x70]
mov ecx, edi
mov eax, dword [edi]
call dword [eax + 0xc0]
mov ecx, edi
call fcn.00512f90
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x2c
cmp eax, 0x3e0
jne 0x5060a5
xor eax, eax
comisd xmm4, xmmword [0x5d99a8]
mov dword [ebp - 0x18], eax
jbe 0x507c79
cvttsd2si ecx, qword [ebp - 0xa8]
movsd xmm1, qword [ebp - 0x64]
movss xmm6, dword [ebp + 0x10]
movsd xmm7, qword [0x5e6630]
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
subss xmm0, dword [ebp + 0x2c]
subss xmm0, dword [ebp + 0xc]
cvtps2pd xmm3, xmm0
movsd xmm0, qword [ebp - 0x98]
subsd xmm0, qword [0x5db028]
movaps xmm5, xmm3
mulsd xmm3, xmm1
mulsd xmm5, qword [ebp - 0x5c]
cvttsd2si ecx, xmm0
mov dword [ebp - 0xc], ecx
lea ecx, [esi + esi]
mov esi, dword [ebp + 0x20]
mov dword [ebp - 0x48], ecx
nop dword [eax + eax]
cvttsd2si ecx, qword [ebp - 0xa0]
add eax, ecx
xor ecx, ecx
mov dword [ebp + 0xc], ecx
movd xmm0, eax
cvtdq2ps xmm0, xmm0
subss xmm0, dword [ebp + 0x30]
subss xmm0, xmm6
cvtps2pd xmm2, xmm0
movaps xmm0, xmm2
mulsd xmm2, qword [ebp - 0x5c]
mulsd xmm0, xmm1
movaps xmm1, xmm5
addsd xmm2, xmm3
subsd xmm1, xmm0
movss xmm0, dword [ebp + 0x2c]
cvtps2pd xmm0, xmm0
addsd xmm1, xmm0
movss xmm0, dword [ebp + 0x30]
cvtps2pd xmm0, xmm0
mulsd xmm1, xmm7
addsd xmm2, xmm0
cvttsd2si eax, xmm1
mulsd xmm2, xmm7
mov dword [ebp + 0x28], eax
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp + 0x28]
mov dword [ebp + 0x10], eax
mov eax, ecx
cvttsd2si edx, xmm2
sar eax, 0x10
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x10], edx
sar dword [ebp - 0x10], 0x10
mov dword [ebp + 0x1c], edx
cmp esi, 0xffffffff
jg 0x505d52
test eax, eax
js 0x506064
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv esi
mov ecx, eax
mov eax, 0x7fff
sub eax, dword [ebp + 0x28]
cdq
idiv esi
xor edx, edx
test ecx, ecx
cmovs ecx, edx
jmp 0x505d88
cmp esi, 1
jl 0x505d9a
mov eax, dword [ebx + 8]
dec eax
cmp dword [ebp - 0x44], eax
jge 0x506064
mov eax, 0x10000
sub eax, ecx
cdq
idiv esi
mov ecx, eax
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, dword [ebp + 0x28]
sub eax, 0x17fff
cdq
idiv esi
xor edx, edx
test ecx, ecx
cmovle ecx, edx
cmp eax, dword [ebp + 0x10]
mov edx, dword [ebp + 0x1c]
cmovge eax, dword [ebp - 0xc]
mov dword [ebp + 0xc], ecx
mov dword [ebp + 0x10], eax
jmp 0x505db5
test ecx, ecx
js 0x506064
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jge 0x506064
cmp edi, 0xffffffff
jg 0x505de0
cmp dword [ebp - 0x10], 0
jl 0x506064
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, edx
sub eax, 0x27fff
cdq
idiv edi
mov ecx, eax
mov eax, dword [ebp + 0x1c]
cdq
idiv edi
neg eax
jmp 0x505e0f
cmp edi, 1
jl 0x505e23
mov eax, dword [ebx + 0xc]
dec eax
cmp dword [ebp - 0x10], eax
jge 0x506064
mov eax, 0x10000
sub eax, edx
cdq
idiv edi
mov ecx, eax
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, dword [ebp + 0x1c]
sub eax, 0x17fff
cdq
idiv edi
cmp ecx, dword [ebp + 0xc]
cmovle ecx, dword [ebp + 0xc]
cmp eax, dword [ebp + 0x10]
mov edx, ecx
cmovge eax, dword [ebp + 0x10]
mov ecx, eax
jmp 0x505e44
test edx, edx
js 0x506064
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp edx, eax
jge 0x506064
mov edx, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x10]
mov eax, edx
imul eax, esi
add dword [ebp + 0x28], eax
mov eax, edx
imul eax, edi
add dword [ebp + 0x1c], eax
mov eax, dword [ebp + 0x18]
lea eax, [eax + edx*2]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x20]
mov dword [ebp - 0x44], eax
cmp edx, ecx
jg 0x506064
mov ebx, dword [ebp + 0x28]
sub ecx, edx
mov edx, dword [ebp + 0x1c]
inc ecx
mov dword [ebp + 0x10], ecx
nop word [eax + eax]
mov ecx, edx
mov esi, ebx
sar ecx, 0x10
and esi, 0xfffe
imul ecx, eax
inc esi
mov eax, ebx
and edx, 0xfffe
sar eax, 0x10
inc edx
mov dword [ebp + 0xc], edx
add ecx, eax
mov eax, dword [ebp - 0x54]
lea ecx, [eax + ecx*4]
mov eax, dword [ecx]
mov dword [ebp - 0x10], eax
mov eax, dword [ecx + 4]
mov dword [ebp - 8], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x20]
mov ebx, dword [ecx + eax*4]
mov eax, dword [ecx + eax*4 + 4]
mov ecx, 0x10000
sub ecx, edx
mov dword [ebp - 4], eax
mov eax, dword [ebp - 0x10]
mov edx, 0x10000
sub edx, esi
shr eax, 0x18
mov edi, edx
imul edi, ecx
shr edi, 0x10
imul edi, eax
shr edi, 0x10
mov dword [ebp - 0x2c], edi
mov edi, esi
imul edi, ecx
mov ecx, dword [ebp - 8]
mov eax, ecx
shr eax, 0x18
and ecx, 0xff00
shr edi, 0x10
imul edi, eax
mov eax, ebx
shr eax, 0x18
shr edi, 0x10
mov dword [ebp - 0x20], edi
mov edi, dword [ebp + 0xc]
imul edi, edx
mov edx, dword [ebp - 0x20]
imul ecx, edx
shr edi, 0x10
imul edi, eax
mov eax, dword [ebp + 0xc]
imul eax, esi
shr edi, 0x10
mov dword [ebp + 0xc], eax
mov esi, eax
mov eax, dword [ebp - 4]
shr esi, 0x10
shr eax, 0x18
imul esi, eax
mov eax, ebx
and eax, 0xff00
imul eax, edi
shr esi, 0x10
mov dword [ebp + 0xc], esi
mov esi, dword [ebp - 4]
and esi, 0xff00
imul esi, dword [ebp + 0xc]
add esi, eax
mov eax, dword [ebp - 0x10]
and eax, 0xff00
add esi, ecx
imul eax, dword [ebp - 0x2c]
mov ecx, dword [ebp - 4]
and ecx, 0xffff00ff
imul ecx, dword [ebp + 0xc]
add esi, eax
mov eax, ebx
and eax, 0xffff00ff
imul eax, edi
and ebx, 0xff00ff
imul ebx, edi
add ecx, eax
mov eax, dword [ebp - 8]
and eax, 0xffff00ff
imul eax, edx
add ecx, eax
mov eax, dword [ebp - 0x10]
and eax, 0xffff00ff
imul eax, dword [ebp - 0x2c]
add ecx, eax
mov eax, dword [ebp - 8]
xor esi, ecx
and eax, 0xff00ff
mov ecx, dword [ebp - 4]
and esi, 0xff0000
imul eax, edx
and ecx, 0xff00ff
imul ecx, dword [ebp + 0xc]
mov edx, dword [ebp - 0x10]
and edx, 0xff00ff
imul edx, dword [ebp - 0x2c]
add ecx, ebx
mov ebx, dword [ebp - 0x14]
add ecx, eax
add ecx, edx
mov edx, 0x100
sub edx, dword [ebp + 0xc]
xor esi, ecx
movzx ecx, word [ebx]
sub edx, edi
sub edx, dword [ebp - 0x20]
mov eax, ecx
sub edx, dword [ebp - 0x2c]
shl eax, 0x10
or eax, ecx
sar edx, 3
and eax, 0x3e07c1f
shr esi, 8
imul edx, eax
mov eax, esi
shr eax, 3
mov edi, dword [ebp - 0x3c]
and eax, 0x1f
shr edx, 5
and edx, 0x3e07c1f
add edx, eax
mov eax, esi
shr eax, 9
and esi, 0xf800
and eax, 0x7c00
shl esi, 0xa
add eax, edx
mov edx, dword [ebp + 0x1c]
add eax, esi
add edx, edi
mov esi, dword [ebp + 0x20]
mov ecx, eax
shr ecx, 0x10
or ecx, eax
mov dword [ebp + 0x1c], edx
mov eax, dword [ebp - 0x44]
mov word [ebx], cx
add ebx, 2
mov dword [ebp - 0x14], ebx
mov ebx, dword [ebp + 0x28]
add ebx, esi
sub dword [ebp + 0x10], 1
mov dword [ebp + 0x28], ebx
jne 0x505e80
mov ebx, dword [ebp + 0x14]
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x48]
inc eax
add dword [ebp + 0x18], ecx
movsd xmm1, qword [ebp - 0x64]
mov dword [ebp - 0x18], eax
movd xmm0, eax
cvtdq2pd xmm0, xmm0
comisd xmm4, xmm0
ja 0x505ca0
mov edi, dword [ebp - 0x70]
mov ecx, edi
mov eax, dword [edi]
call dword [eax + 0xc0]
mov ecx, edi
call fcn.00512f90
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x2c
xor eax, eax
comisd xmm4, xmmword [0x5d99a8]
mov dword [ebp - 0x20], eax
jbe 0x507c79
cvttsd2si ecx, qword [ebp - 0xa8]
movsd xmm1, qword [ebp - 0x64]
movss xmm6, dword [ebp + 0x10]
movsd xmm7, qword [0x5e6630]
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
subss xmm0, dword [ebp + 0x2c]
subss xmm0, dword [ebp + 0xc]
cvtps2pd xmm3, xmm0
movsd xmm0, qword [ebp - 0x98]
subsd xmm0, qword [0x5db028]
movaps xmm5, xmm3
mulsd xmm3, xmm1
mulsd xmm5, qword [ebp - 0x5c]
cvttsd2si ecx, xmm0
mov dword [ebp - 0xc], ecx
lea ecx, [esi + esi]
mov esi, dword [ebp + 0x20]
mov dword [ebp - 0x48], ecx
cvttsd2si ecx, qword [ebp - 0xa0]
add eax, ecx
xor ecx, ecx
mov dword [ebp + 0x28], ecx
movd xmm0, eax
cvtdq2ps xmm0, xmm0
subss xmm0, dword [ebp + 0x30]
subss xmm0, xmm6
cvtps2pd xmm2, xmm0
movaps xmm0, xmm2
mulsd xmm2, qword [ebp - 0x5c]
mulsd xmm0, xmm1
movaps xmm1, xmm5
addsd xmm2, xmm3
subsd xmm1, xmm0
movss xmm0, dword [ebp + 0x2c]
cvtps2pd xmm0, xmm0
addsd xmm1, xmm0
movss xmm0, dword [ebp + 0x30]
cvtps2pd xmm0, xmm0
mulsd xmm1, xmm7
addsd xmm2, xmm0
cvttsd2si eax, xmm1
mulsd xmm2, xmm7
mov dword [ebp + 0x1c], eax
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp + 0x1c]
mov dword [ebp + 0x10], eax
mov eax, ecx
cvttsd2si edx, xmm2
sar eax, 0x10
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x10], edx
sar dword [ebp - 0x10], 0x10
mov dword [ebp + 0xc], edx
cmp esi, 0xffffffff
jg 0x5061c4
test eax, eax
js 0x5064de
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv esi
mov ecx, eax
mov eax, 0x7fff
sub eax, dword [ebp + 0x1c]
cdq
idiv esi
xor edx, edx
test ecx, ecx
cmovs ecx, edx
jmp 0x5061fa
cmp esi, 1
jl 0x50620c
mov eax, dword [ebx + 8]
dec eax
cmp dword [ebp - 0x44], eax
jge 0x5064de
mov eax, 0x10000
sub eax, ecx
cdq
idiv esi
mov ecx, eax
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, dword [ebp + 0x1c]
sub eax, 0x17fff
cdq
idiv esi
xor edx, edx
test ecx, ecx
cmovle ecx, edx
cmp eax, dword [ebp + 0x10]
mov edx, dword [ebp + 0xc]
cmovge eax, dword [ebp - 0xc]
mov dword [ebp + 0x28], ecx
mov dword [ebp + 0x10], eax
jmp 0x506227
test ecx, ecx
js 0x5064de
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jge 0x5064de
cmp edi, 0xffffffff
jg 0x506252
cmp dword [ebp - 0x10], 0
jl 0x5064de
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, edx
sub eax, 0x27fff
cdq
idiv edi
mov ecx, eax
mov eax, dword [ebp + 0xc]
cdq
idiv edi
neg eax
jmp 0x506281
cmp edi, 1
jl 0x506295
mov eax, dword [ebx + 0xc]
dec eax
cmp dword [ebp - 0x10], eax
jge 0x5064de
mov eax, 0x10000
sub eax, edx
cdq
idiv edi
mov ecx, eax
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, dword [ebp + 0xc]
sub eax, 0x17fff
cdq
idiv edi
cmp ecx, dword [ebp + 0x28]
cmovle ecx, dword [ebp + 0x28]
cmp eax, dword [ebp + 0x10]
mov edx, ecx
cmovge eax, dword [ebp + 0x10]
mov ecx, eax
jmp 0x5062b6
test edx, edx
js 0x5064de
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp edx, eax
jge 0x5064de
mov edx, dword [ebp + 0x28]
mov ecx, dword [ebp + 0x10]
mov eax, edx
imul eax, esi
add dword [ebp + 0x1c], eax
mov eax, edx
imul eax, edi
add dword [ebp + 0xc], eax
mov eax, dword [ebp + 0x18]
lea eax, [eax + edx*2]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x20]
mov dword [ebp - 0x44], eax
cmp edx, ecx
jg 0x5064de
mov ebx, dword [ebp + 0x1c]
sub ecx, edx
mov edx, dword [ebp + 0xc]
inc ecx
mov dword [ebp + 0x10], ecx
nop dword [eax]
mov ecx, edx
mov esi, ebx
sar ecx, 0x10
and esi, 0xfffe
imul ecx, eax
inc esi
mov eax, ebx
mov edi, esi
sar eax, 0x10
mov ebx, edx
and ebx, 0xfffe
inc ebx
add ecx, eax
mov dword [ebp + 0x28], ebx
mov eax, dword [ebp - 0x54]
lea ecx, [eax + ecx*4]
mov eax, dword [ecx]
mov dword [ebp - 0x4c], eax
mov eax, dword [ecx + 4]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x20]
mov edx, dword [ecx + eax*4]
mov eax, dword [ecx + eax*4 + 4]
mov ecx, 0x10000
mov dword [ebp - 4], edx
sub ecx, ebx
mov dword [ebp - 0x10], eax
mov edx, 0x10000
mov eax, dword [ebp - 0x4c]
sub edx, esi
mov ebx, edx
shr eax, 0x18
imul ebx, ecx
imul edi, ecx
mov ecx, dword [ebp - 4]
shr ebx, 0x10
imul ebx, eax
mov eax, dword [ebp - 0x2c]
shr eax, 0x18
shr edi, 0x10
imul edi, eax
mov eax, ecx
shr ebx, 0x10
mov dword [ebp - 8], ebx
mov ebx, dword [ebp + 0x28]
imul ebx, edx
mov edx, dword [ebp + 0x28]
imul edx, esi
shr eax, 0x18
shr edi, 0x10
shr ebx, 0x10
imul ebx, eax
mov eax, dword [ebp - 0x10]
shr edx, 0x10
shr eax, 0x18
imul edx, eax
shr ebx, 0x10
mov dword [ebp - 0x34], edi
movzx eax, cl
imul eax, ebx
shr edx, 0x10
mov dword [ebp + 0x28], edx
mov edx, 0x100
sub edx, dword [ebp + 0x28]
sub edx, ebx
sub edx, edi
sub edx, dword [ebp - 8]
mov dword [ebp - 0x18], edx
mov edx, dword [ebp - 0x14]
movzx esi, word [edx]
mov edx, dword [ebp - 0x10]
movzx edi, dl
imul edi, dword [ebp + 0x28]
add edi, eax
mov eax, dword [ebp - 0x2c]
movzx eax, al
imul eax, dword [ebp - 0x34]
add edi, eax
mov eax, dword [ebp - 0x4c]
movzx eax, al
imul eax, dword [ebp - 8]
and edx, 0xff0000
imul edx, dword [ebp + 0x28]
mov ecx, dword [ebp - 0x28]
add edi, eax
mov eax, esi
and eax, dword [ebp - 0x74]
imul eax, dword [ebp - 0x18]
shr edi, cl
mov ecx, dword [ebp - 0x68]
shl di, cl
mov ecx, dword [ebp - 0x84]
shr eax, 8
and eax, dword [ebp - 0x74]
add di, ax
mov eax, dword [ebp - 4]
and eax, 0xff0000
imul eax, ebx
add edx, eax
mov eax, dword [ebp - 0x2c]
and eax, 0xff0000
imul eax, dword [ebp - 0x34]
add edx, eax
mov eax, dword [ebp - 0x4c]
and eax, 0xff0000
imul eax, dword [ebp - 8]
add edx, eax
mov eax, esi
and eax, dword [ebp - 0x7c]
imul eax, dword [ebp - 0x18]
shr edx, cl
mov ecx, dword [ebp - 0x80]
shl dx, cl
and esi, dword [ebp - 0x30]
shr eax, 8
and eax, dword [ebp - 0x7c]
add dx, ax
imul esi, dword [ebp - 0x18]
mov eax, dword [ebp - 4]
or di, dx
mov edx, dword [ebp - 0x10]
and eax, 0xff00
imul eax, ebx
and edx, 0xff00
imul edx, dword [ebp + 0x28]
mov ecx, dword [ebp - 0x78]
mov ebx, dword [ebp + 0x1c]
shr esi, 8
and esi, dword [ebp - 0x30]
add edx, eax
mov eax, dword [ebp - 0x2c]
and eax, 0xff00
imul eax, dword [ebp - 0x34]
add edx, eax
mov eax, dword [ebp - 0x4c]
and eax, 0xff00
imul eax, dword [ebp - 8]
add edx, eax
mov eax, dword [ebp - 0x14]
shr edx, cl
mov ecx, dword [ebp - 0x1c]
shl dx, cl
add dx, si
mov esi, dword [ebp + 0x20]
or di, dx
add ebx, esi
mov edx, dword [ebp + 0xc]
mov word [eax], di
add eax, 2
mov edi, dword [ebp - 0x3c]
add edx, edi
sub dword [ebp + 0x10], 1
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x44]
mov dword [ebp + 0x1c], ebx
mov dword [ebp + 0xc], edx
jne 0x5062f0
mov ebx, dword [ebp + 0x14]
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x48]
inc eax
add dword [ebp + 0x18], ecx
movsd xmm1, qword [ebp - 0x64]
mov dword [ebp - 0x20], eax
movd xmm0, eax
cvtdq2pd xmm0, xmm0
comisd xmm4, xmm0
ja 0x506112
mov edi, dword [ebp - 0x70]
mov ecx, edi
mov eax, dword [edi]
call dword [eax + 0xc0]
mov ecx, edi
call fcn.00512f90
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x2c
xor eax, eax
comisd xmm4, xmmword [0x5d99a8]
mov dword [ebp - 0x4c], eax
jbe 0x507c79
cvttsd2si ecx, qword [ebp - 0xa8]
movsd xmm1, qword [ebp - 0x64]
movss xmm6, dword [ebp + 0x10]
movsd xmm7, qword [0x5e6630]
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
subss xmm0, dword [ebp + 0x2c]
subss xmm0, dword [ebp + 0xc]
cvtps2pd xmm3, xmm0
movsd xmm0, qword [ebp - 0x98]
subsd xmm0, qword [0x5db028]
movaps xmm5, xmm3
mulsd xmm3, xmm1
mulsd xmm5, qword [ebp - 0x5c]
cvttsd2si ecx, xmm0
mov dword [ebp - 0x14], ecx
lea ecx, [esi + esi]
mov esi, dword [ebp + 0x20]
mov dword [ebp - 0x48], ecx
nop dword [eax]
cvttsd2si ecx, qword [ebp - 0xa0]
add eax, ecx
xor ecx, ecx
mov dword [ebp + 0x28], ecx
movd xmm0, eax
cvtdq2ps xmm0, xmm0
subss xmm0, dword [ebp + 0x30]
subss xmm0, xmm6
cvtps2pd xmm2, xmm0
movaps xmm0, xmm2
mulsd xmm2, qword [ebp - 0x5c]
mulsd xmm0, xmm1
movaps xmm1, xmm5
addsd xmm2, xmm3
subsd xmm1, xmm0
movss xmm0, dword [ebp + 0x2c]
cvtps2pd xmm0, xmm0
addsd xmm1, xmm0
movss xmm0, dword [ebp + 0x30]
cvtps2pd xmm0, xmm0
mulsd xmm1, xmm7
addsd xmm2, xmm0
cvttsd2si eax, xmm1
mulsd xmm2, xmm7
mov dword [ebp + 0x1c], eax
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp + 0x1c]
mov dword [ebp + 0x10], eax
mov eax, ecx
cvttsd2si edx, xmm2
sar eax, 0x10
mov dword [ebp - 0x44], eax
mov dword [ebp - 8], edx
sar dword [ebp - 8], 0x10
mov dword [ebp + 0xc], edx
cmp esi, 0xffffffff
jg 0x506642
test eax, eax
js 0x50695c
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv esi
mov ecx, eax
mov eax, 0x7fff
sub eax, dword [ebp + 0x1c]
cdq
idiv esi
xor edx, edx
test ecx, ecx
cmovs ecx, edx
jmp 0x506678
cmp esi, 1
jl 0x50668a
mov eax, dword [ebx + 8]
dec eax
cmp dword [ebp - 0x44], eax
jge 0x50695c
mov eax, 0x10000
sub eax, ecx
cdq
idiv esi
mov ecx, eax
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, dword [ebp + 0x1c]
sub eax, 0x17fff
cdq
idiv esi
xor edx, edx
test ecx, ecx
cmovle ecx, edx
cmp eax, dword [ebp + 0x10]
mov edx, dword [ebp + 0xc]
cmovge eax, dword [ebp - 0x14]
mov dword [ebp + 0x28], ecx
mov dword [ebp + 0x10], eax
jmp 0x5066a5
test ecx, ecx
js 0x50695c
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jge 0x50695c
cmp edi, 0xffffffff
jg 0x5066d0
cmp dword [ebp - 8], 0
jl 0x50695c
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, edx
sub eax, 0x27fff
cdq
idiv edi
mov ecx, eax
mov eax, dword [ebp + 0xc]
cdq
idiv edi
neg eax
jmp 0x5066ff
cmp edi, 1
jl 0x506713
mov eax, dword [ebx + 0xc]
dec eax
cmp dword [ebp - 8], eax
jge 0x50695c
mov eax, 0x10000
sub eax, edx
cdq
idiv edi
mov ecx, eax
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, dword [ebp + 0xc]
sub eax, 0x17fff
cdq
idiv edi
cmp ecx, dword [ebp + 0x28]
cmovle ecx, dword [ebp + 0x28]
cmp eax, dword [ebp + 0x10]
mov edx, ecx
cmovge eax, dword [ebp + 0x10]
mov ecx, eax
jmp 0x506734
test edx, edx
js 0x50695c
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp edx, eax
jge 0x50695c
mov edx, dword [ebp + 0x28]
mov ecx, dword [ebp + 0x10]
mov eax, edx
imul eax, esi
add dword [ebp + 0x1c], eax
mov eax, edx
imul eax, edi
add dword [ebp + 0xc], eax
mov eax, dword [ebp + 0x18]
lea eax, [eax + edx*2]
mov dword [ebp - 0xc], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x20]
mov dword [ebp - 0x44], eax
cmp edx, ecx
jg 0x50695c
mov ebx, dword [ebp + 0x1c]
sub ecx, edx
mov edx, dword [ebp + 0xc]
inc ecx
mov dword [ebp + 0x10], ecx
nop word [eax + eax]
mov ecx, edx
mov esi, ebx
sar ecx, 0x10
and edx, 0xfffe
imul ecx, eax
inc edx
mov eax, ebx
mov dword [ebp + 0x28], edx
sar eax, 0x10
and esi, 0xfffe
inc esi
add ecx, eax
mov eax, dword [ebp - 0x54]
lea ecx, [eax + ecx*4]
mov eax, dword [ecx]
mov dword [ebp - 0x10], eax
mov eax, dword [ecx + 4]
mov dword [ebp - 8], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x20]
mov ebx, dword [ecx + eax*4]
mov eax, dword [ecx + eax*4 + 4]
mov ecx, 0x10000
sub ecx, edx
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x10]
mov edx, 0x10000
sub edx, esi
shr eax, 0x18
mov edi, edx
mov dword [ebp - 0x18], ebx
imul edi, ecx
shr edi, 0x10
imul edi, eax
mov eax, dword [ebp - 8]
shr eax, 0x18
shr edi, 0x10
mov dword [ebp - 0x2c], edi
mov edi, esi
imul edi, ecx
mov ecx, dword [ebp + 0x28]
imul ecx, edx
mov edx, dword [ebp - 0x20]
shr edi, 0x10
imul edi, eax
mov eax, ebx
mov ebx, dword [ebp + 0x28]
imul ebx, esi
shr eax, 0x18
shr ecx, 0x10
imul ecx, eax
mov eax, edx
shr eax, 0x18
shr ebx, 0x10
imul ebx, eax
mov eax, dword [ebp - 0x18]
mov esi, dword [ebp - 0xc]
and eax, 0xff00
shr edi, 0x10
shr ecx, 0x10
shr ebx, 0x10
mov dword [ebp + 0x28], ebx
mov ebx, 0x100
sub ebx, dword [ebp + 0x28]
movzx esi, word [esi]
sub ebx, ecx
sub ebx, edi
mov dword [ebp - 0x34], edi
sub ebx, dword [ebp - 0x2c]
mov edi, edx
and edi, 0xff00
imul eax, ecx
imul edi, dword [ebp + 0x28]
mov dword [ebp - 4], ecx
add edi, eax
mov eax, dword [ebp - 8]
and eax, 0xff00
imul eax, dword [ebp - 0x34]
add edi, eax
mov eax, dword [ebp - 0x10]
and eax, 0xff00
imul eax, dword [ebp - 0x2c]
and edx, 0xff0000
imul edx, dword [ebp + 0x28]
mov ecx, dword [ebp - 0x78]
add edi, eax
mov eax, esi
and eax, dword [ebp - 0x30]
imul eax, ebx
shr edi, cl
mov ecx, dword [ebp - 0x1c]
shl di, cl
mov ecx, dword [ebp - 0x84]
shr eax, 8
and eax, dword [ebp - 0x30]
add di, ax
mov eax, dword [ebp - 0x18]
and eax, 0xff0000
imul eax, dword [ebp - 4]
add edx, eax
mov eax, dword [ebp - 8]
and eax, 0xff0000
imul eax, dword [ebp - 0x34]
add edx, eax
mov eax, dword [ebp - 0x10]
and eax, 0xff0000
imul eax, dword [ebp - 0x2c]
add edx, eax
mov eax, esi
and eax, dword [ebp - 0x7c]
imul eax, ebx
shr edx, cl
mov ecx, dword [ebp - 0x80]
shl dx, cl
and esi, dword [ebp - 0x74]
shr eax, 8
and eax, dword [ebp - 0x7c]
add dx, ax
mov ecx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x20]
or di, dx
movzx edx, al
imul edx, dword [ebp + 0x28]
mov eax, dword [ebp - 0x18]
movzx eax, al
imul eax, dword [ebp - 4]
imul esi, ebx
mov ebx, dword [ebp + 0x1c]
add edx, eax
mov eax, dword [ebp - 8]
movzx eax, al
imul eax, dword [ebp - 0x34]
shr esi, 8
and esi, dword [ebp - 0x74]
add edx, eax
mov eax, dword [ebp - 0x10]
movzx eax, al
imul eax, dword [ebp - 0x2c]
add edx, eax
mov eax, dword [ebp - 0xc]
shr edx, cl
mov ecx, dword [ebp - 0x68]
shl dx, cl
add dx, si
mov esi, dword [ebp + 0x20]
or di, dx
add ebx, esi
mov edx, dword [ebp + 0xc]
mov word [eax], di
add eax, 2
mov edi, dword [ebp - 0x3c]
add edx, edi
sub dword [ebp + 0x10], 1
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0x44]
mov dword [ebp + 0x1c], ebx
mov dword [ebp + 0xc], edx
jne 0x506770
mov ebx, dword [ebp + 0x14]
mov eax, dword [ebp - 0x4c]
mov ecx, dword [ebp - 0x48]
inc eax
add dword [ebp + 0x18], ecx
movsd xmm1, qword [ebp - 0x64]
mov dword [ebp - 0x4c], eax
movd xmm0, eax
cvtdq2pd xmm0, xmm0
comisd xmm4, xmm0
ja 0x506590
mov edi, dword [ebp - 0x70]
mov ecx, edi
mov eax, dword [edi]
call dword [eax + 0xc0]
mov ecx, edi
call fcn.00512f90
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x2c
mov eax, dword [ebp + 0x1c]
mov ecx, dword [eax + 0xc]
mov dword [ebp - 0x18], ecx
mov ecx, dword [eax]
inc ecx
mov dword [ebp - 0x48], ecx
mov ecx, dword [eax + 4]
mov eax, dword [eax + 8]
inc ecx
inc eax
mov dword [ebp - 0x50], ecx
mov dword [ebp - 0x6c], eax
xor eax, eax
comisd xmm4, xmmword [0x5d99a8]
mov dword [ebp - 0x38], eax
jbe 0x507c79
cvttsd2si ecx, qword [ebp - 0xa8]
movsd xmm1, qword [ebp - 0x64]
movss xmm6, dword [ebp + 0x10]
movsd xmm7, qword [0x5e6630]
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
subss xmm0, dword [ebp + 0x2c]
subss xmm0, dword [ebp + 0xc]
cvtps2pd xmm3, xmm0
movsd xmm0, qword [ebp - 0x98]
subsd xmm0, qword [0x5db028]
movaps xmm5, xmm3
mulsd xmm3, xmm1
mulsd xmm5, qword [ebp - 0x5c]
cvttsd2si ecx, xmm0
mov dword [ebp - 0x14], ecx
lea ecx, [esi + esi]
mov esi, dword [ebp + 0x20]
mov dword [ebp - 0x24], ecx
nop word [eax + eax]
cvttsd2si ecx, qword [ebp - 0xa0]
add eax, ecx
xor ecx, ecx
mov dword [ebp + 0x28], ecx
movd xmm0, eax
cvtdq2ps xmm0, xmm0
subss xmm0, dword [ebp + 0x30]
subss xmm0, xmm6
cvtps2pd xmm2, xmm0
movaps xmm0, xmm2
mulsd xmm2, qword [ebp - 0x5c]
mulsd xmm0, xmm1
movaps xmm1, xmm5
addsd xmm2, xmm3
subsd xmm1, xmm0
movss xmm0, dword [ebp + 0x2c]
cvtps2pd xmm0, xmm0
addsd xmm1, xmm0
movss xmm0, dword [ebp + 0x30]
cvtps2pd xmm0, xmm0
mulsd xmm1, xmm7
addsd xmm2, xmm0
cvttsd2si eax, xmm1
mulsd xmm2, xmm7
mov dword [ebp + 0x1c], eax
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp + 0x1c]
mov dword [ebp + 0x10], eax
mov eax, ecx
cvttsd2si edx, xmm2
sar eax, 0x10
mov dword [ebp - 0x44], eax
mov dword [ebp - 8], edx
sar dword [ebp - 8], 0x10
mov dword [ebp + 0xc], edx
cmp esi, 0xffffffff
jg 0x506ae2
test eax, eax
js 0x506e2d
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv esi
mov ecx, eax
mov eax, 0x7fff
sub eax, dword [ebp + 0x1c]
cdq
idiv esi
xor edx, edx
test ecx, ecx
cmovs ecx, edx
jmp 0x506b18
cmp esi, 1
jl 0x506b2a
mov eax, dword [ebx + 8]
dec eax
cmp dword [ebp - 0x44], eax
jge 0x506e2d
mov eax, 0x10000
sub eax, ecx
cdq
idiv esi
mov ecx, eax
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, dword [ebp + 0x1c]
sub eax, 0x17fff
cdq
idiv esi
xor edx, edx
test ecx, ecx
cmovle ecx, edx
cmp eax, dword [ebp + 0x10]
mov edx, dword [ebp + 0xc]
cmovge eax, dword [ebp - 0x14]
mov dword [ebp + 0x28], ecx
mov dword [ebp + 0x10], eax
jmp 0x506b45
test ecx, ecx
js 0x506e2d
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jge 0x506e2d
cmp edi, 0xffffffff
jg 0x506b70
cmp dword [ebp - 8], 0
jl 0x506e2d
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, edx
sub eax, 0x27fff
cdq
idiv edi
mov ecx, eax
mov eax, dword [ebp + 0xc]
cdq
idiv edi
neg eax
jmp 0x506b9f
cmp edi, 1
jl 0x506bb3
mov eax, dword [ebx + 0xc]
dec eax
cmp dword [ebp - 8], eax
jge 0x506e2d
mov eax, 0x10000
sub eax, edx
cdq
idiv edi
mov ecx, eax
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, dword [ebp + 0xc]
sub eax, 0x17fff
cdq
idiv edi
cmp ecx, dword [ebp + 0x28]
cmovle ecx, dword [ebp + 0x28]
cmp eax, dword [ebp + 0x10]
mov edx, ecx
cmovge eax, dword [ebp + 0x10]
mov ecx, eax
jmp 0x506bd4
test edx, edx
js 0x506e2d
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp edx, eax
jge 0x506e2d
mov edx, dword [ebp + 0x28]
mov ecx, dword [ebp + 0x10]
mov eax, edx
imul eax, esi
add dword [ebp + 0x1c], eax
mov eax, edx
imul eax, edi
add dword [ebp + 0xc], eax
mov eax, dword [ebp + 0x18]
lea eax, [eax + edx*2]
mov dword [ebp - 0x4c], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x20]
mov dword [ebp - 0x44], eax
cmp edx, ecx
jg 0x506e2d
mov ebx, dword [ebp + 0xc]
sub ecx, edx
mov edx, dword [ebp + 0x1c]
inc ecx
mov dword [ebp + 0x10], ecx
nop word [eax + eax]
mov ecx, ebx
mov esi, ebx
sar ecx, 0x10
and esi, 0xfffe
imul ecx, eax
inc esi
mov eax, edx
mov dword [ebp + 0x28], esi
sar eax, 0x10
and edx, 0xfffe
inc edx
mov edi, 0x10000
sub edi, esi
add ecx, eax
mov eax, dword [ebp - 0x54]
lea ecx, [eax + ecx*4]
mov eax, dword [ecx]
mov dword [ebp - 0x2c], eax
mov eax, dword [ecx + 4]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x20]
mov ebx, dword [ecx + eax*4]
mov eax, dword [ecx + eax*4 + 4]
mov ecx, 0x10000
sub ecx, edx
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x2c]
mov esi, ecx
imul ecx, dword [ebp + 0x28]
imul esi, edi
imul edi, edx
shr eax, 0x18
mov dword [ebp - 0x34], ebx
shr ecx, 0x10
shr esi, 0x10
imul esi, eax
mov eax, dword [ebp - 0x10]
shr eax, 0x18
shr edi, 0x10
imul edi, eax
mov eax, ebx
shr eax, 0x18
mov ebx, 0x100
imul ecx, eax
mov eax, dword [ebp + 0x28]
imul eax, edx
shr edi, 0x10
imul edi, dword [ebp - 0x18]
shr ecx, 0x10
imul ecx, dword [ebp - 0x18]
mov dword [ebp + 0x28], eax
mov edx, eax
mov eax, dword [ebp - 8]
shr edx, 0x10
shr eax, 0x18
imul edx, eax
mov eax, dword [ebp - 0x4c]
shr esi, 0x10
imul esi, dword [ebp - 0x18]
sar edi, 8
shr edx, 0x10
imul edx, dword [ebp - 0x18]
sar ecx, 8
sar esi, 8
mov dword [ebp - 0xc], edi
mov dword [ebp - 4], esi
sar edx, 8
sub ebx, edx
mov dword [ebp - 0x20], ecx
sub ebx, ecx
mov dword [ebp + 0x28], edx
sub ebx, edi
mov edi, dword [ebp - 8]
sub ebx, esi
and edi, 0xff0000
movzx esi, word [eax]
mov eax, dword [ebp - 0x34]
and eax, 0xff0000
imul edi, edx
imul eax, ecx
add edi, eax
mov ecx, dword [ebp - 0x84]
mov eax, dword [ebp - 0x10]
and eax, 0xff0000
imul eax, dword [ebp - 0xc]
add edi, eax
mov eax, dword [ebp - 0x2c]
and eax, 0xff0000
imul eax, dword [ebp - 4]
add edi, eax
mov eax, esi
and eax, dword [ebp - 0x7c]
imul eax, ebx
shr edi, 8
imul edi, dword [ebp - 0x48]
shr eax, 8
and eax, dword [ebp - 0x7c]
shr edi, cl
mov ecx, dword [ebp - 0x80]
shl di, cl
add di, ax
mov ecx, dword [ebp - 0x28]
mov eax, dword [ebp - 8]
movzx edx, al
imul edx, dword [ebp + 0x28]
mov eax, dword [ebp - 0x34]
movzx eax, al
imul eax, dword [ebp - 0x20]
add edx, eax
mov eax, dword [ebp - 0x10]
movzx eax, al
imul eax, dword [ebp - 0xc]
add edx, eax
mov eax, dword [ebp - 0x2c]
movzx eax, al
imul eax, dword [ebp - 4]
add edx, eax
mov eax, esi
and eax, dword [ebp - 0x74]
shr edx, 8
imul edx, dword [ebp - 0x6c]
imul eax, ebx
and esi, dword [ebp - 0x30]
imul esi, ebx
shr edx, cl
mov ecx, dword [ebp - 0x68]
shl dx, cl
shr eax, 8
and eax, dword [ebp - 0x74]
add dx, ax
mov ecx, dword [ebp - 0x78]
mov eax, dword [ebp - 0x34]
or di, dx
mov edx, dword [ebp - 8]
and eax, 0xff00
imul eax, dword [ebp - 0x20]
and edx, 0xff00
imul edx, dword [ebp + 0x28]
shr esi, 8
and esi, dword [ebp - 0x30]
add edx, eax
mov eax, dword [ebp - 0x10]
and eax, 0xff00
imul eax, dword [ebp - 0xc]
add edx, eax
mov eax, dword [ebp - 0x2c]
and eax, 0xff00
imul eax, dword [ebp - 4]
add edx, eax
mov eax, dword [ebp - 0x4c]
shr edx, 8
imul edx, dword [ebp - 0x50]
shr edx, cl
mov ecx, dword [ebp - 0x1c]
shl dx, cl
add dx, si
mov esi, dword [ebp + 0x20]
or di, dx
mov word [eax], di
add eax, 2
mov dword [ebp - 0x4c], eax
mov edx, dword [ebp + 0x1c]
mov ebx, dword [ebp + 0xc]
add edx, esi
mov edi, dword [ebp - 0x3c]
add ebx, edi
sub dword [ebp + 0x10], 1
mov eax, dword [ebp - 0x44]
mov dword [ebp + 0x1c], edx
mov dword [ebp + 0xc], ebx
jne 0x506c10
mov ebx, dword [ebp + 0x14]
mov eax, dword [ebp - 0x38]
mov ecx, dword [ebp - 0x24]
inc eax
add dword [ebp + 0x18], ecx
movsd xmm1, qword [ebp - 0x64]
mov dword [ebp - 0x38], eax
movd xmm0, eax
cvtdq2pd xmm0, xmm0
comisd xmm4, xmm0
ja 0x506a30
mov edi, dword [ebp - 0x70]
mov ecx, edi
mov eax, dword [edi]
call dword [eax + 0xc0]
mov ecx, edi
call fcn.00512f90
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x2c
cmp eax, 0x20
jne 0x507c79
cvttsd2si edx, qword [ebp - 0xa0]
mov esi, dword [esi + 0x8c]
mov eax, esi
push 0x6671bc
cvttsd2si ecx, qword [ebp - 0xa8]
imul eax, edx
cdq
and edx, 3
add eax, edx
sar eax, 2
add eax, ecx
mov ecx, dword [ebp - 0x70]
mov ecx, dword [ecx + 0xa0]
lea eax, [ecx + eax*4]
mov dword [ebp + 0x18], eax
mov eax, esi
mov esi, dword [ebp + 0x1c]
cdq
and edx, 3
add eax, edx
sar eax, 2
push esi
mov dword [ebp + 0x28], eax
call fcn.00500400
movsd xmm4, qword [ebp - 0x90]
add esp, 8
test al, al
je 0x5077dd
xor eax, eax
cmp byte [0x6671ac], al
je 0x50736b
comisd xmm4, xmmword [0x5d99a8]
mov dword [ebp - 0x38], eax
jbe 0x507c79
cvttsd2si ecx, qword [ebp - 0xa8]
mov esi, dword [ebp + 0x20]
movsd xmm1, qword [ebp - 0x64]
movss xmm6, dword [ebp + 0x10]
movsd xmm7, qword [0x5e6630]
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
subss xmm0, dword [ebp + 0x2c]
subss xmm0, dword [ebp + 0xc]
cvtps2pd xmm3, xmm0
movsd xmm0, qword [ebp - 0x98]
subsd xmm0, qword [0x5db028]
movaps xmm5, xmm3
mulsd xmm3, xmm1
mulsd xmm5, qword [ebp - 0x5c]
cvttsd2si ecx, xmm0
mov dword [ebp - 0x14], ecx
mov ecx, dword [ebp + 0x28]
shl ecx, 2
mov dword [ebp - 0x50], ecx
nop word [eax + eax]
cvttsd2si ecx, qword [ebp - 0xa0]
add eax, ecx
mov ecx, dword [ebp - 0x14]
mov dword [ebp + 0x28], ecx
movd xmm0, eax
cvtdq2ps xmm0, xmm0
subss xmm0, dword [ebp + 0x30]
subss xmm0, xmm6
cvtps2pd xmm2, xmm0
movaps xmm0, xmm2
mulsd xmm2, qword [ebp - 0x5c]
mulsd xmm0, xmm1
movaps xmm1, xmm5
addsd xmm2, xmm3
subsd xmm1, xmm0
movss xmm0, dword [ebp + 0x2c]
cvtps2pd xmm0, xmm0
addsd xmm1, xmm0
movss xmm0, dword [ebp + 0x30]
cvtps2pd xmm0, xmm0
mulsd xmm1, xmm7
addsd xmm2, xmm0
cvttsd2si eax, xmm1
mulsd xmm2, xmm7
mov dword [ebp + 0x10], eax
xor eax, eax
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 0x10]
mov dword [ebp - 8], eax
sar dword [ebp - 8], 0x10
cvttsd2si edx, xmm2
mov dword [ebp - 0x10], edx
sar dword [ebp - 0x10], 0x10
mov dword [ebp + 0x1c], edx
cmp esi, 0xffffffff
jg 0x50702c
cmp dword [ebp - 8], 0
jl 0x50732a
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, dword [ebp + 0x10]
sub eax, 0x27fff
mov dword [ebp + 0x28], 0
cdq
idiv esi
mov dword [ebp + 0xc], eax
mov eax, 0x7fff
sub eax, dword [ebp + 0x10]
cdq
idiv esi
mov edx, dword [ebp + 0xc]
test edx, edx
cmovs edx, dword [ebp + 0x28]
cmp eax, ecx
mov dword [ebp + 0xc], edx
mov edx, dword [ebp + 0x1c]
cmovge eax, ecx
mov dword [ebp + 0x28], eax
jmp 0x507099
cmp esi, 1
jl 0x50707d
mov eax, dword [ebx + 8]
dec eax
cmp dword [ebp - 8], eax
jge 0x50732a
mov eax, 0x10000
mov dword [ebp + 0x28], 0
sub eax, dword [ebp + 0x10]
cdq
idiv esi
mov dword [ebp + 0xc], eax
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, dword [ebp + 0x10]
sub eax, 0x17fff
cdq
idiv esi
mov edx, dword [ebp + 0xc]
test edx, edx
cmovle edx, dword [ebp + 0x28]
cmp eax, ecx
mov dword [ebp + 0xc], edx
mov edx, dword [ebp + 0x1c]
cmovge eax, ecx
mov dword [ebp + 0x28], eax
jmp 0x507099
test eax, eax
js 0x50732a
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, 0x10000
cmp dword [ebp + 0x10], eax
jge 0x50732a
cmp edi, 0xffffffff
jg 0x5070c4
cmp dword [ebp - 0x10], 0
jl 0x50732a
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, edx
sub eax, 0x27fff
cdq
idiv edi
mov ecx, eax
mov eax, dword [ebp + 0x1c]
cdq
idiv edi
neg eax
jmp 0x5070f3
cmp edi, 1
jl 0x507107
mov eax, dword [ebx + 0xc]
dec eax
cmp dword [ebp - 0x10], eax
jge 0x50732a
mov eax, 0x10000
sub eax, edx
cdq
idiv edi
mov ecx, eax
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, dword [ebp + 0x1c]
sub eax, 0x17fff
cdq
idiv edi
cmp ecx, dword [ebp + 0xc]
cmovle ecx, dword [ebp + 0xc]
cmp eax, dword [ebp + 0x28]
mov edx, ecx
cmovge eax, dword [ebp + 0x28]
mov ecx, eax
jmp 0x507128
test edx, edx
js 0x50732a
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp edx, eax
jge 0x50732a
mov ecx, dword [ebp + 0x28]
mov edx, dword [ebp + 0xc]
mov eax, edx
imul eax, esi
add dword [ebp + 0x10], eax
mov eax, edx
imul eax, edi
add dword [ebp + 0x1c], eax
mov eax, dword [ebp + 0x18]
lea eax, [eax + edx*4]
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x20]
mov dword [ebp - 0x24], eax
cmp edx, ecx
jg 0x50732a
mov ebx, dword [ebp + 0x10]
sub ecx, edx
mov edx, dword [ebp + 0x1c]
inc ecx
mov dword [ebp + 0x28], ecx
nop
mov ecx, edx
mov esi, ebx
sar ecx, 0x10
mov edi, edx
imul ecx, eax
and esi, 0xfffe
mov eax, ebx
inc esi
sar eax, 0x10
and edi, 0xfffe
inc edi
add ecx, eax
mov eax, dword [ebp - 0x54]
lea ecx, [eax + ecx*4]
mov eax, dword [ecx]
mov dword [ebp - 0x10], eax
mov eax, dword [ecx + 4]
mov dword [ebp - 8], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x20]
mov edx, dword [ecx + eax*4]
mov eax, dword [ecx + eax*4 + 4]
mov ecx, 0x10000
mov dword [ebp + 0xc], edx
sub ecx, edi
mov dword [ebp - 0x18], eax
mov edx, 0x10000
mov eax, dword [ebp - 0x10]
sub edx, esi
shr eax, 0x18
mov ebx, edx
imul ebx, ecx
shr ebx, 0x10
imul ebx, eax
mov eax, dword [ebp - 8]
shr eax, 0x18
shr ebx, 0x10
mov dword [ebp - 0x2c], ebx
mov ebx, esi
imul ebx, ecx
shr ebx, 0x10
imul ebx, eax
mov eax, dword [ebp + 0xc]
shr eax, 0x18
shr ebx, 0x10
mov dword [ebp - 0xc], ebx
mov ebx, edi
imul ebx, edx
mov edx, dword [ebp - 0x18]
imul edi, esi
mov esi, 0x100
shr ebx, 0x10
imul ebx, eax
mov eax, edx
shr eax, 0x18
and edx, 0xff00
shr edi, 0x10
imul edi, eax
mov eax, dword [ebp + 0xc]
and eax, 0xff00
shr ebx, 0x10
imul eax, ebx
shr edi, 0x10
mov dword [ebp - 0x34], edi
imul edx, dword [ebp - 0x34]
sub esi, dword [ebp - 0x34]
mov edi, dword [ebp - 4]
sub esi, ebx
sub esi, dword [ebp - 0xc]
sub esi, dword [ebp - 0x2c]
add edx, eax
mov eax, dword [ebp - 8]
mov edi, dword [edi]
and eax, 0xff00
imul eax, dword [ebp - 0xc]
add edx, eax
mov eax, dword [ebp - 0x10]
and eax, 0xff00
imul eax, dword [ebp - 0x2c]
add edx, eax
and edx, 0xffff0000
mov eax, edi
and eax, 0xff00
imul eax, esi
add edx, eax
mov eax, dword [ebp - 0x18]
movzx ecx, al
imul ecx, dword [ebp - 0x34]
mov eax, dword [ebp + 0xc]
movzx eax, al
imul eax, ebx
add ecx, eax
mov eax, dword [ebp - 8]
movzx eax, al
imul eax, dword [ebp - 0xc]
add ecx, eax
mov eax, dword [ebp - 0x10]
movzx eax, al
imul eax, dword [ebp - 0x2c]
add ecx, eax
mov eax, edi
and eax, 0xffff00ff
and ecx, 0xff00
imul eax, esi
and edi, 0xff00ff
imul edi, esi
mov esi, dword [ebp + 0x20]
add ecx, eax
mov eax, dword [ebp + 0xc]
xor edx, ecx
and eax, 0xff00ff
mov ecx, dword [ebp - 0x18]
and edx, 0xff0000
imul eax, ebx
and ecx, 0xff00ff
imul ecx, dword [ebp - 0x34]
mov ebx, dword [ebp + 0x10]
add ebx, esi
mov dword [ebp + 0x10], ebx
add ecx, eax
mov eax, dword [ebp - 8]
and eax, 0xff00ff
imul eax, dword [ebp - 0xc]
add ecx, eax
mov eax, dword [ebp - 0x10]
and eax, 0xff00ff
imul eax, dword [ebp - 0x2c]
add ecx, eax
mov eax, dword [ebp - 4]
and ecx, 0xff00ff00
add ecx, edi
mov edi, dword [ebp - 0x3c]
xor edx, ecx
shr edx, 8
mov dword [eax], edx
add eax, 4
mov edx, dword [ebp + 0x1c]
add edx, edi
mov dword [ebp - 4], eax
sub dword [ebp + 0x28], 1
mov eax, dword [ebp - 0x24]
mov dword [ebp + 0x1c], edx
jne 0x507160
mov ebx, dword [ebp + 0x14]
mov eax, dword [ebp - 0x38]
mov ecx, dword [ebp - 0x50]
inc eax
add dword [ebp + 0x18], ecx
movsd xmm1, qword [ebp - 0x64]
mov dword [ebp - 0x38], eax
movd xmm0, eax
cvtdq2pd xmm0, xmm0
comisd xmm4, xmm0
ja 0x506f60
mov edi, dword [ebp - 0x70]
mov ecx, edi
mov eax, dword [edi]
call dword [eax + 0xc0]
mov ecx, edi
call fcn.00512f90
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x2c
comisd xmm4, xmmword [0x5d99a8]
mov dword [ebp - 0x20], eax
jbe 0x507c79
cvttsd2si ecx, qword [ebp - 0xa8]
mov esi, dword [ebp + 0x20]
movsd xmm1, qword [ebp - 0x64]
movss xmm6, dword [ebp + 0x10]
movsd xmm7, qword [0x5e6630]
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
subss xmm0, dword [ebp + 0x2c]
subss xmm0, dword [ebp + 0xc]
cvtps2pd xmm3, xmm0
movsd xmm0, qword [ebp - 0x98]
subsd xmm0, qword [0x5db028]
movaps xmm5, xmm3
mulsd xmm3, xmm1
mulsd xmm5, qword [ebp - 0x5c]
cvttsd2si ecx, xmm0
mov dword [ebp - 0x14], ecx
mov ecx, dword [ebp + 0x28]
shl ecx, 2
mov dword [ebp - 0x50], ecx
nop dword [eax]
cvttsd2si ecx, qword [ebp - 0xa0]
add eax, ecx
xor ecx, ecx
mov dword [ebp + 0x28], ecx
movd xmm0, eax
cvtdq2ps xmm0, xmm0
subss xmm0, dword [ebp + 0x30]
subss xmm0, xmm6
cvtps2pd xmm2, xmm0
movaps xmm0, xmm1
movaps xmm1, xmm5
mulsd xmm0, xmm2
subsd xmm1, xmm0
movss xmm0, dword [ebp + 0x2c]
cvtps2pd xmm0, xmm0
addsd xmm1, xmm0
movss xmm0, dword [ebp + 0x30]
cvtps2pd xmm0, xmm0
mulsd xmm1, xmm7
cvttsd2si eax, xmm1
movsd xmm1, qword [ebp - 0x5c]
mulsd xmm1, xmm2
mov dword [ebp + 0x1c], eax
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp + 0x1c]
mov dword [ebp + 0x10], eax
mov eax, ecx
addsd xmm1, xmm3
sar eax, 0x10
mov dword [ebp - 0x24], eax
addsd xmm1, xmm0
mulsd xmm1, xmm7
cvttsd2si edx, xmm1
mov dword [ebp - 8], edx
sar dword [ebp - 8], 0x10
mov dword [ebp + 0xc], edx
cmp esi, 0xffffffff
jg 0x507496
test eax, eax
js 0x50779c
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv esi
mov ecx, eax
mov eax, 0x7fff
sub eax, dword [ebp + 0x1c]
cdq
idiv esi
xor edx, edx
test ecx, ecx
cmovs ecx, edx
jmp 0x5074cc
cmp esi, 1
jl 0x5074de
mov eax, dword [ebx + 8]
dec eax
cmp dword [ebp - 0x24], eax
jge 0x50779c
mov eax, 0x10000
sub eax, ecx
cdq
idiv esi
mov ecx, eax
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, dword [ebp + 0x1c]
sub eax, 0x17fff
cdq
idiv esi
xor edx, edx
test ecx, ecx
cmovle ecx, edx
cmp eax, dword [ebp + 0x10]
mov edx, dword [ebp + 0xc]
cmovge eax, dword [ebp - 0x14]
mov dword [ebp + 0x28], ecx
mov dword [ebp + 0x10], eax
jmp 0x5074f9
test ecx, ecx
js 0x50779c
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jge 0x50779c
cmp edi, 0xffffffff
jg 0x507524
cmp dword [ebp - 8], 0
jl 0x50779c
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, edx
sub eax, 0x27fff
cdq
idiv edi
mov ecx, eax
mov eax, dword [ebp + 0xc]
cdq
idiv edi
neg eax
jmp 0x507553
cmp edi, 1
jl 0x507567
mov eax, dword [ebx + 0xc]
dec eax
cmp dword [ebp - 8], eax
jge 0x50779c
mov eax, 0x10000
sub eax, edx
cdq
idiv edi
mov ecx, eax
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, dword [ebp + 0xc]
sub eax, 0x17fff
cdq
idiv edi
cmp ecx, dword [ebp + 0x28]
cmovle ecx, dword [ebp + 0x28]
cmp eax, dword [ebp + 0x10]
mov edx, ecx
cmovge eax, dword [ebp + 0x10]
mov ecx, eax
jmp 0x507588
test edx, edx
js 0x50779c
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp edx, eax
jge 0x50779c
mov edx, dword [ebp + 0x28]
mov ecx, dword [ebp + 0x10]
mov eax, edx
imul eax, esi
add dword [ebp + 0x1c], eax
mov eax, edx
imul eax, edi
add dword [ebp + 0xc], eax
mov eax, dword [ebp + 0x18]
lea eax, [eax + edx*4]
mov dword [ebp - 0xc], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x20]
mov dword [ebp - 0x24], eax
cmp edx, ecx
jg 0x50779c
mov ebx, dword [ebp + 0xc]
sub ecx, edx
mov edx, dword [ebp + 0x1c]
inc ecx
mov dword [ebp + 0x10], ecx
nop
mov ecx, ebx
mov esi, ebx
sar ecx, 0x10
and esi, 0xfffe
imul ecx, eax
inc esi
mov eax, edx
mov dword [ebp + 0x28], esi
sar eax, 0x10
and edx, 0xfffe
inc edx
mov edi, 0x10000
sub edi, esi
add ecx, eax
mov eax, dword [ebp - 0x54]
lea ecx, [eax + ecx*4]
mov eax, dword [ecx]
mov dword [ebp - 0x4c], eax
mov eax, dword [ecx + 4]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x20]
mov ebx, dword [ecx + eax*4]
mov eax, dword [ecx + eax*4 + 4]
mov ecx, 0x10000
mov dword [ebp - 8], eax
sub ecx, edx
mov eax, dword [ebp - 0x4c]
mov esi, ecx
imul esi, edi
shr eax, 0x18
imul edi, edx
mov dword [ebp - 0x18], ebx
shr esi, 0x10
imul esi, eax
mov eax, dword [ebp - 0x10]
shr eax, 0x18
shr edi, 0x10
imul edi, eax
mov eax, ebx
shr eax, 0x18
shr esi, 0x10
mov ebx, dword [ebp - 0xc]
mov dword [ebp - 0x34], esi
shr edi, 0x10
mov dword [ebp - 0x2c], edi
mov edi, dword [ebp + 0x28]
imul ecx, edi
imul edi, edx
mov edx, dword [ebp - 8]
mov ebx, dword [ebx]
shr ecx, 0x10
imul ecx, eax
mov eax, dword [ebp - 8]
shr eax, 0x18
shr edi, 0x10
imul edi, eax
mov eax, dword [ebp - 0x18]
shr ecx, 0x10
movzx eax, al
imul eax, ecx
shr edi, 0x10
mov dword [ebp + 0x28], edi
mov edi, 0x100
sub edi, dword [ebp + 0x28]
sub edi, ecx
mov dword [ebp - 0x38], ecx
sub edi, dword [ebp - 0x2c]
sub edi, esi
mov ecx, dword [ebp - 0x28]
movzx esi, dl
imul esi, dword [ebp + 0x28]
add esi, eax
mov eax, dword [ebp - 0x10]
movzx eax, al
imul eax, dword [ebp - 0x2c]
add esi, eax
mov eax, dword [ebp - 0x4c]
movzx eax, al
imul eax, dword [ebp - 0x34]
add esi, eax
mov eax, ebx
shr esi, cl
and eax, dword [ebp - 0x74]
and edx, 0xff0000
imul edx, dword [ebp + 0x28]
imul eax, edi
mov ecx, dword [ebp - 0x68]
shl esi, cl
mov ecx, dword [ebp - 0x84]
shr eax, 8
and eax, dword [ebp - 0x74]
add esi, eax
mov eax, dword [ebp - 0x18]
and eax, 0xff0000
imul eax, dword [ebp - 0x38]
add edx, eax
mov eax, dword [ebp - 0x10]
and eax, 0xff0000
imul eax, dword [ebp - 0x2c]
add edx, eax
mov eax, dword [ebp - 0x4c]
and eax, 0xff0000
imul eax, dword [ebp - 0x34]
add edx, eax
mov eax, ebx
and eax, dword [ebp - 0x7c]
imul eax, edi
shr edx, cl
mov ecx, dword [ebp - 0x80]
shl edx, cl
and ebx, dword [ebp - 0x30]
shr eax, 8
and eax, dword [ebp - 0x7c]
add edx, eax
mov ecx, dword [ebp - 0x78]
mov eax, dword [ebp - 0x18]
or esi, edx
mov edx, dword [ebp - 8]
and eax, 0xff00
imul eax, dword [ebp - 0x38]
and edx, 0xff00
imul edx, dword [ebp + 0x28]
imul ebx, edi
mov edi, dword [ebp - 0x3c]
add edx, eax
mov eax, dword [ebp - 0x10]
and eax, 0xff00
shr ebx, 8
imul eax, dword [ebp - 0x2c]
and ebx, dword [ebp - 0x30]
add edx, eax
mov eax, dword [ebp - 0x4c]
and eax, 0xff00
imul eax, dword [ebp - 0x34]
add edx, eax
mov eax, dword [ebp - 0xc]
shr edx, cl
mov ecx, dword [ebp - 0x1c]
shl edx, cl
add edx, ebx
mov ebx, dword [ebp + 0xc]
or esi, edx
add ebx, edi
mov edx, dword [ebp + 0x1c]
mov dword [eax], esi
add eax, 4
mov esi, dword [ebp + 0x20]
add edx, esi
sub dword [ebp + 0x10], 1
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0x24]
mov dword [ebp + 0x1c], edx
mov dword [ebp + 0xc], ebx
jne 0x5075c0
mov ebx, dword [ebp + 0x14]
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x50]
inc eax
add dword [ebp + 0x18], ecx
movsd xmm1, qword [ebp - 0x64]
mov dword [ebp - 0x20], eax
movd xmm0, eax
cvtdq2pd xmm0, xmm0
comisd xmm4, xmm0
ja 0x5073e0
mov edi, dword [ebp - 0x70]
mov ecx, edi
mov eax, dword [edi]
call dword [eax + 0xc0]
mov ecx, edi
call fcn.00512f90
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x2c
mov eax, dword [esi + 0xc]
mov dword [ebp - 0x10], eax
mov eax, dword [esi]
inc eax
mov dword [ebp - 0x6c], eax
mov eax, dword [esi + 4]
inc eax
mov dword [ebp - 0x44], eax
mov eax, dword [esi + 8]
inc eax
mov dword [ebp - 0x50], eax
xor eax, eax
comisd xmm4, xmmword [0x5d99a8]
mov dword [ebp - 0x38], eax
jbe 0x507c79
cvttsd2si ecx, qword [ebp - 0xa8]
mov esi, dword [ebp + 0x20]
movsd xmm1, qword [ebp - 0x64]
movss xmm6, dword [ebp + 0x10]
movsd xmm7, qword [0x5e6630]
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
subss xmm0, dword [ebp + 0x2c]
subss xmm0, dword [ebp + 0xc]
cvtps2pd xmm3, xmm0
movsd xmm0, qword [ebp - 0x98]
subsd xmm0, qword [0x5db028]
movaps xmm5, xmm3
mulsd xmm3, xmm1
mulsd xmm5, qword [ebp - 0x5c]
cvttsd2si ecx, xmm0
mov dword [ebp - 0x14], ecx
mov ecx, dword [ebp + 0x28]
shl ecx, 2
mov dword [ebp - 0x48], ecx
nop word [eax + eax]
cvttsd2si ecx, qword [ebp - 0xa0]
add eax, ecx
xor ecx, ecx
mov dword [ebp + 0x28], ecx
movd xmm0, eax
cvtdq2ps xmm0, xmm0
subss xmm0, dword [ebp + 0x30]
subss xmm0, xmm6
cvtps2pd xmm2, xmm0
movaps xmm0, xmm2
mulsd xmm2, qword [ebp - 0x5c]
mulsd xmm0, xmm1
movaps xmm1, xmm5
addsd xmm2, xmm3
subsd xmm1, xmm0
movss xmm0, dword [ebp + 0x2c]
cvtps2pd xmm0, xmm0
addsd xmm1, xmm0
movss xmm0, dword [ebp + 0x30]
cvtps2pd xmm0, xmm0
mulsd xmm1, xmm7
addsd xmm2, xmm0
cvttsd2si eax, xmm1
mulsd xmm2, xmm7
mov dword [ebp + 0x1c], eax
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp + 0x1c]
mov dword [ebp + 0x10], eax
mov eax, ecx
cvttsd2si edx, xmm2
sar eax, 0x10
mov dword [ebp - 0x24], eax
mov dword [ebp - 8], edx
sar dword [ebp - 8], 0x10
mov dword [ebp + 0xc], edx
cmp esi, 0xffffffff
jg 0x507922
test eax, eax
js 0x507c55
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv esi
mov ecx, eax
mov eax, 0x7fff
sub eax, dword [ebp + 0x1c]
cdq
idiv esi
xor edx, edx
test ecx, ecx
cmovs ecx, edx
jmp 0x507958
cmp esi, 1
jl 0x50796a
mov eax, dword [ebx + 8]
dec eax
cmp dword [ebp - 0x24], eax
jge 0x507c55
mov eax, 0x10000
sub eax, ecx
cdq
idiv esi
mov ecx, eax
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, dword [ebp + 0x1c]
sub eax, 0x17fff
cdq
idiv esi
xor edx, edx
test ecx, ecx
cmovle ecx, edx
cmp eax, dword [ebp + 0x10]
mov edx, dword [ebp + 0xc]
cmovge eax, dword [ebp - 0x14]
mov dword [ebp + 0x28], ecx
mov dword [ebp + 0x10], eax
jmp 0x507985
test ecx, ecx
js 0x507c55
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jge 0x507c55
cmp edi, 0xffffffff
jg 0x5079b0
cmp dword [ebp - 8], 0
jl 0x507c55
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, edx
sub eax, 0x27fff
cdq
idiv edi
mov ecx, eax
mov eax, dword [ebp + 0xc]
cdq
idiv edi
neg eax
jmp 0x5079df
cmp edi, 1
jl 0x5079f3
mov eax, dword [ebx + 0xc]
dec eax
cmp dword [ebp - 8], eax
jge 0x507c55
mov eax, 0x10000
sub eax, edx
cdq
idiv edi
mov ecx, eax
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, dword [ebp + 0xc]
sub eax, 0x17fff
cdq
idiv edi
cmp ecx, dword [ebp + 0x28]
cmovle ecx, dword [ebp + 0x28]
cmp eax, dword [ebp + 0x10]
mov edx, ecx
cmovge eax, dword [ebp + 0x10]
mov ecx, eax
jmp 0x507a14
test edx, edx
js 0x507c55
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp edx, eax
jge 0x507c55
mov edx, dword [ebp + 0x28]
mov ecx, dword [ebp + 0x10]
mov eax, edx
imul eax, esi
add dword [ebp + 0x1c], eax
mov eax, edx
imul eax, edi
add dword [ebp + 0xc], eax
mov eax, dword [ebp + 0x18]
lea eax, [eax + edx*4]
mov dword [ebp + 0x28], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x20]
mov dword [ebp - 0x24], eax
cmp edx, ecx
jg 0x507c55
mov ebx, dword [ebp + 0xc]
sub ecx, edx
mov edx, dword [ebp + 0x1c]
inc ecx
mov dword [ebp + 0x10], ecx
nop word [eax + eax]
mov ecx, ebx
mov edi, ebx
sar ecx, 0x10
and edi, 0xfffe
imul ecx, eax
inc edi
mov eax, edx
and edx, 0xfffe
sar eax, 0x10
inc edx
add ecx, eax
mov eax, dword [ebp - 0x54]
lea ecx, [eax + ecx*4]
mov eax, dword [ecx]
mov dword [ebp - 4], eax
mov eax, dword [ecx + 4]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x20]
mov ebx, dword [ecx + eax*4]
mov eax, dword [ecx + eax*4 + 4]
mov ecx, 0x10000
sub ecx, edi
mov dword [ebp - 0x34], ebx
mov dword [ebp - 8], eax
mov ebx, 0x10000
mov eax, dword [ebp - 4]
sub ebx, edx
mov esi, ebx
shr eax, 0x18
imul esi, ecx
imul ecx, edx
imul ebx, edi
imul edi, edx
mov edx, dword [ebp - 8]
shr esi, 0x10
imul esi, eax
mov eax, dword [ebp - 0x2c]
shr eax, 0x18
shr ecx, 0x10
imul ecx, eax
shr ebx, 0x10
shr edi, 0x10
shr esi, 0x10
imul esi, dword [ebp - 0x10]
shr ecx, 0x10
imul ecx, dword [ebp - 0x10]
sar esi, 8
mov dword [ebp - 0xc], esi
sar ecx, 8
mov dword [ebp - 0x4c], ecx
mov ecx, dword [ebp - 0x34]
mov eax, ecx
shr eax, 0x18
imul ebx, eax
mov eax, dword [ebp - 8]
shr eax, 0x18
imul edi, eax
movzx eax, cl
shr ebx, 0x10
imul ebx, dword [ebp - 0x10]
shr edi, 0x10
imul edi, dword [ebp - 0x10]
sar ebx, 8
imul eax, ebx
sar edi, 8
mov dword [ebp - 0x18], edi
mov edi, 0x100
sub edi, dword [ebp - 0x18]
sub edi, ebx
sub edi, dword [ebp - 0x4c]
sub edi, esi
movzx esi, dl
imul esi, dword [ebp - 0x18]
add esi, eax
mov eax, dword [ebp - 0x2c]
movzx eax, al
imul eax, dword [ebp - 0x4c]
add esi, eax
mov eax, dword [ebp - 4]
movzx eax, al
imul eax, dword [ebp - 0xc]
and edx, 0xff0000
imul edx, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x28]
add esi, eax
mov eax, dword [ebp + 0x28]
shr esi, 8
imul esi, dword [ebp - 0x50]
mov eax, dword [eax]
and eax, dword [ebp - 0x74]
imul eax, edi
shr esi, cl
mov ecx, dword [ebp - 0x68]
shl esi, cl
mov ecx, dword [ebp - 0x84]
shr eax, 8
and eax, dword [ebp - 0x74]
add esi, eax
mov eax, dword [ebp - 0x34]
and eax, 0xff0000
imul eax, ebx
add edx, eax
mov eax, dword [ebp - 0x2c]
and eax, 0xff0000
imul eax, dword [ebp - 0x4c]
add edx, eax
mov eax, dword [ebp - 4]
and eax, 0xff0000
imul eax, dword [ebp - 0xc]
add edx, eax
mov eax, dword [ebp + 0x28]
shr edx, 8
imul edx, dword [ebp - 0x6c]
mov eax, dword [eax]
and eax, dword [ebp - 0x7c]
imul eax, edi
shr edx, cl
mov ecx, dword [ebp - 0x80]
shl edx, cl
mov ecx, dword [ebp - 0x78]
shr eax, 8
and eax, dword [ebp - 0x7c]
add edx, eax
mov eax, dword [ebp - 0x34]
or esi, edx
and eax, 0xff00
mov edx, dword [ebp - 8]
imul eax, ebx
and edx, 0xff00
imul edx, dword [ebp - 0x18]
mov ebx, dword [ebp + 0xc]
add edx, eax
mov eax, dword [ebp - 0x2c]
and eax, 0xff00
imul eax, dword [ebp - 0x4c]
add edx, eax
mov eax, dword [ebp - 4]
and eax, 0xff00
imul eax, dword [ebp - 0xc]
add edx, eax
shr edx, 8
imul edx, dword [ebp - 0x44]
shr edx, cl
mov ecx, dword [ebp - 0x1c]
shl edx, cl
mov ecx, dword [ebp + 0x28]
mov eax, dword [ecx]
and eax, dword [ebp - 0x30]
imul eax, edi
mov edi, dword [ebp - 0x3c]
shr eax, 8
and eax, dword [ebp - 0x30]
add edx, eax
or esi, edx
mov edx, dword [ebp + 0x1c]
mov dword [ecx], esi
add ecx, 4
mov esi, dword [ebp + 0x20]
add edx, esi
mov dword [ebp + 0x28], ecx
mov dword [ebp + 0x1c], edx
mov eax, dword [ebp - 0x24]
add ebx, edi
sub dword [ebp + 0x10], 1
mov dword [ebp + 0xc], ebx
jne 0x507a50
mov ebx, dword [ebp + 0x14]
mov eax, dword [ebp - 0x38]
mov ecx, dword [ebp - 0x48]
inc eax
add dword [ebp + 0x18], ecx
movsd xmm1, qword [ebp - 0x64]
mov dword [ebp - 0x38], eax
movd xmm0, eax
cvtdq2pd xmm0, xmm0
comisd xmm4, xmm0
ja 0x507870
mov edi, dword [ebp - 0x70]
mov ecx, edi
mov eax, dword [edi]
call dword [eax + 0xc0]
mov ecx, edi
call fcn.00512f90
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x2c
call fcn.0051a4f0
imul eax, dword [ebx + 4]
movsd xmm0, qword [ebp - 0x5c]
mulsd xmm0, qword [0x5e6630]
mov esi, dword [ebp - 0x70]
mov ecx, esi
add eax, dword [edi + 0x48]
add eax, dword [ebx]
mov dword [ebp - 0x54], eax
cvttsd2si eax, xmm0
movsd xmm0, qword [ebp - 0x64]
mulsd xmm0, qword [0x5e6630]
mov dword [ebp + 0x20], eax
mov eax, dword [esi]
cvttsd2si edi, xmm0
mov eax, dword [eax + 0xbc]
mov dword [ebp - 0x68], edi
call eax
test al, al
je 0x50b98a
mov eax, dword [esi + 0x68]
mov ecx, dword [eax + 0x20]
mov dword [ebp - 0x2c], ecx
mov ecx, dword [eax + 0x24]
mov dword [ebp - 0x74], ecx
mov ecx, dword [eax + 0x28]
mov dword [ebp - 0x7c], ecx
mov ecx, 0x20
sub ecx, dword [eax + 0x14]
mov dword [ebp - 0x4c], ecx
mov ecx, 0x18
sub ecx, dword [eax + 0x18]
mov dword [ebp - 0x84], ecx
mov ecx, 0x10
sub ecx, dword [eax + 0x1c]
mov eax, dword [esi + 0xd0]
mov dword [ebp - 0x78], ecx
mov ecx, dword [esi + 0xd4]
mov dword [ebp - 0x10], ecx
mov ecx, dword [esi + 0xd8]
mov dword [ebp - 0x3c], ecx
mov ecx, dword [esi + 0xdc]
mov dword [ebp - 0x80], ecx
cmp eax, 0x10
jne 0x5094ca
cvttsd2si eax, qword [ebp - 0xa0]
mov esi, dword [esi + 0x8c]
push 0x6671bc
cvttsd2si ecx, qword [ebp - 0xa8]
imul eax, esi
push dword [ebp + 0x1c]
cdq
sub eax, edx
sar eax, 1
add eax, ecx
mov ecx, dword [ebp - 0x70]
mov ecx, dword [ecx + 0xa0]
lea eax, [ecx + eax*2]
mov dword [ebp + 0x18], eax
mov eax, esi
cdq
sub eax, edx
mov esi, eax
sar esi, 1
call fcn.00500400
movsd xmm4, qword [ebp - 0x90]
add esp, 8
test al, al
je 0x508fed
cmp byte [0x6671ac], 0
je 0x508b5f
mov eax, dword [ebp - 0x3c]
cmp eax, 0x7e0
jne 0x508247
xor eax, eax
comisd xmm4, xmmword [0x5d99a8]
mov dword [ebp - 0x20], eax
jbe 0x50a2cf
cvttsd2si ecx, qword [ebp - 0xa8]
movsd xmm1, qword [ebp - 0x64]
movss xmm6, dword [ebp + 0x10]
movsd xmm7, qword [0x5e6630]
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
subss xmm0, dword [ebp + 0x2c]
subss xmm0, dword [ebp + 0xc]
cvtps2pd xmm3, xmm0
movsd xmm0, qword [ebp - 0x98]
subsd xmm0, qword [0x5db028]
movaps xmm5, xmm3
mulsd xmm3, xmm1
mulsd xmm5, qword [ebp - 0x5c]
cvttsd2si ecx, xmm0
mov dword [ebp - 0x14], ecx
lea ecx, [esi + esi]
mov esi, dword [ebp + 0x20]
mov dword [ebp - 0x50], ecx
nop dword [eax]
cvttsd2si ecx, qword [ebp - 0xa0]
add eax, ecx
xor ecx, ecx
mov dword [ebp + 0x10], ecx
movd xmm0, eax
cvtdq2ps xmm0, xmm0
subss xmm0, dword [ebp + 0x30]
subss xmm0, xmm6
cvtps2pd xmm2, xmm0
movaps xmm0, xmm2
mulsd xmm2, qword [ebp - 0x5c]
mulsd xmm0, xmm1
movaps xmm1, xmm5
addsd xmm2, xmm3
subsd xmm1, xmm0
movss xmm0, dword [ebp + 0x2c]
cvtps2pd xmm0, xmm0
addsd xmm1, xmm0
movss xmm0, dword [ebp + 0x30]
cvtps2pd xmm0, xmm0
mulsd xmm1, xmm7
addsd xmm2, xmm0
cvttsd2si eax, xmm1
mulsd xmm2, xmm7
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x3c]
mov dword [ebp + 0xc], eax
mov eax, ecx
cvttsd2si edx, xmm2
sar eax, 0x10
mov dword [ebp - 0x24], eax
mov dword [ebp - 4], edx
sar dword [ebp - 4], 0x10
mov dword [ebp + 0x1c], edx
cmp esi, 0xffffffff
jg 0x507ee2
test eax, eax
js 0x508206
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv esi
mov ecx, eax
mov eax, 0x7fff
sub eax, dword [ebp - 0x3c]
cdq
idiv esi
xor edx, edx
test ecx, ecx
cmovs ecx, edx
jmp 0x507f18
cmp esi, 1
jl 0x507f2a
mov eax, dword [ebx + 8]
dec eax
cmp dword [ebp - 0x24], eax
jge 0x508206
mov eax, 0x10000
sub eax, ecx
cdq
idiv esi
mov ecx, eax
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, dword [ebp - 0x3c]
sub eax, 0x17fff
cdq
idiv esi
xor edx, edx
test ecx, ecx
cmovle ecx, edx
cmp eax, dword [ebp + 0xc]
mov edx, dword [ebp + 0x1c]
cmovge eax, dword [ebp - 0x14]
mov dword [ebp + 0x10], ecx
mov dword [ebp + 0xc], eax
jmp 0x507f45
test ecx, ecx
js 0x508206
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jge 0x508206
cmp edi, 0xffffffff
jg 0x507f70
cmp dword [ebp - 4], 0
jl 0x508206
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, edx
sub eax, 0x27fff
cdq
idiv edi
mov ecx, eax
mov eax, dword [ebp + 0x1c]
cdq
idiv edi
neg eax
jmp 0x507f9f
cmp edi, 1
jl 0x507fb3
mov eax, dword [ebx + 0xc]
dec eax
cmp dword [ebp - 4], eax
jge 0x508206
mov eax, 0x10000
sub eax, edx
cdq
idiv edi
mov ecx, eax
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, dword [ebp + 0x1c]
sub eax, 0x17fff
cdq
idiv edi
cmp ecx, dword [ebp + 0x10]
cmovle ecx, dword [ebp + 0x10]
cmp eax, dword [ebp + 0xc]
mov edx, ecx
cmovge eax, dword [ebp + 0xc]
mov ecx, eax
jmp 0x507fd4
test edx, edx
js 0x508206
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp edx, eax
jge 0x508206
mov edx, dword [ebp + 0x10]
mov ecx, dword [ebp + 0xc]
mov eax, edx
imul eax, esi
add dword [ebp - 0x3c], eax
mov eax, edx
imul eax, edi
add dword [ebp + 0x1c], eax
mov eax, dword [ebp + 0x18]
lea eax, [eax + edx*2]
mov dword [ebp - 0x38], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x20]
mov dword [ebp - 0x24], eax
cmp edx, ecx
jg 0x508206
mov ebx, dword [ebp - 0x3c]
sub ecx, edx
inc ecx
mov dword [ebp + 0xc], ecx
mov ecx, dword [ebp + 0x1c]
nop word [eax + eax]
mov eax, ecx
mov edi, dword [ebp + 0x28]
sar eax, 0x10
mov edx, ebx
imul eax, dword [ebp - 0x24]
and ecx, 0xfffe
sar edx, 0x10
inc ecx
mov dword [ebp - 0x30], ecx
mov esi, ebx
and esi, 0xfffe
inc esi
add eax, dword [ebp - 0x54]
add edx, eax
movzx eax, byte [edx]
mov eax, dword [edi + eax*4]
mov dword [ebp - 4], eax
movzx eax, byte [edx + 1]
mov ebx, dword [edi + eax*4]
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x20]
movzx eax, byte [edx + ecx]
mov edi, dword [edi + eax*4]
movzx eax, byte [edx + ecx + 1]
mov ecx, dword [ebp + 0x28]
mov edx, dword [ecx + eax*4]
mov eax, 0x10000
sub eax, dword [ebp - 0x30]
mov dword [ebp - 0x28], eax
mov eax, 0x10000
sub eax, esi
mov ecx, eax
mov dword [ebp + 0x10], eax
imul ecx, dword [ebp - 0x28]
mov eax, dword [ebp - 4]
shr eax, 0x18
shr ecx, 0x10
imul ecx, eax
mov eax, ebx
shr eax, 0x18
shr ecx, 0x10
mov dword [ebp - 0x18], ecx
mov ecx, dword [ebp - 0x28]
imul ecx, esi
shr ecx, 0x10
imul ecx, eax
mov eax, dword [ebp + 0x10]
imul eax, dword [ebp - 0x30]
shr ecx, 0x10
mov dword [ebp - 0x28], ecx
shr eax, 0x10
mov dword [ebp + 0x10], eax
mov eax, edi
mov ecx, dword [ebp + 0x10]
shr eax, 0x18
imul ecx, eax
mov eax, edx
shr eax, 0x18
mov dword [ebp + 0x10], ecx
mov ecx, dword [ebp - 0x30]
shr dword [ebp + 0x10], 0x10
imul ecx, esi
mov esi, edx
and esi, 0xffff00ff
shr ecx, 0x10
imul ecx, eax
mov eax, edi
and eax, 0xffff00ff
imul eax, dword [ebp + 0x10]
shr ecx, 0x10
imul esi, ecx
mov dword [ebp - 0x30], ecx
add esi, eax
mov eax, ebx
and eax, 0xffff00ff
imul eax, dword [ebp - 0x28]
add esi, eax
mov eax, dword [ebp - 4]
and eax, 0xffff00ff
imul eax, dword [ebp - 0x18]
add esi, eax
mov ecx, edx
mov eax, edi
and eax, 0xff00
and ecx, 0xff00
imul eax, dword [ebp + 0x10]
and edx, 0xff00ff
imul ecx, dword [ebp - 0x30]
and edi, 0xff00ff
imul edx, dword [ebp - 0x30]
imul edi, dword [ebp + 0x10]
add ecx, eax
mov eax, ebx
and eax, 0xff00
and ebx, 0xff00ff
imul eax, dword [ebp - 0x28]
add edx, edi
imul ebx, dword [ebp - 0x28]
mov edi, dword [ebp - 0x68]
add ecx, eax
mov eax, dword [ebp - 4]
and eax, 0xff00
add edx, ebx
imul eax, dword [ebp - 0x18]
mov ebx, dword [ebp - 0x38]
add ecx, eax
xor esi, ecx
mov ecx, dword [ebp - 4]
and ecx, 0xff00ff
and esi, 0xff0000
imul ecx, dword [ebp - 0x18]
add edx, ecx
movzx ecx, word [ebx]
xor esi, edx
mov eax, ecx
shl eax, 0x10
mov edx, 0x100
sub edx, dword [ebp - 0x30]
or eax, ecx
sub edx, dword [ebp + 0x10]
and eax, 0x7e0f81f
sub edx, dword [ebp - 0x28]
sub edx, dword [ebp - 0x18]
sar edx, 3
imul edx, eax
shr esi, 8
mov eax, esi
and eax, 0xfc00
shl eax, 0xb
shr edx, 5
and edx, 0x7e0f81f
add edx, eax
mov eax, esi
shr eax, 3
and eax, 0x1f
shr esi, 8
and esi, 0xf800
add eax, edx
add eax, esi
mov esi, dword [ebp + 0x20]
mov ecx, eax
shr ecx, 0x10
or ecx, eax
mov word [ebx], cx
add ebx, 2
mov ecx, dword [ebp + 0x1c]
mov dword [ebp - 0x38], ebx
add ecx, edi
mov ebx, dword [ebp - 0x3c]
add ebx, esi
mov dword [ebp + 0x1c], ecx
sub dword [ebp + 0xc], 1
mov dword [ebp - 0x3c], ebx
jne 0x508010
mov ebx, dword [ebp + 0x14]
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x50]
inc eax
add dword [ebp + 0x18], ecx
movsd xmm1, qword [ebp - 0x64]
mov dword [ebp - 0x20], eax
movd xmm0, eax
cvtdq2pd xmm0, xmm0
comisd xmm4, xmm0
ja 0x507e30
mov edi, dword [ebp - 0x70]
mov ecx, edi
mov eax, dword [edi]
call dword [eax + 0xc0]
mov ecx, edi
call fcn.00512f90
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x2c
cmp eax, 0x3e0
jne 0x5086d7
xor eax, eax
comisd xmm4, xmmword [0x5d99a8]
mov dword [ebp - 0x20], eax
jbe 0x50a2cf
cvttsd2si ecx, qword [ebp - 0xa8]
movsd xmm1, qword [ebp - 0x64]
movss xmm6, dword [ebp + 0x10]
movsd xmm7, qword [0x5e6630]
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
subss xmm0, dword [ebp + 0x2c]
subss xmm0, dword [ebp + 0xc]
cvtps2pd xmm3, xmm0
movsd xmm0, qword [ebp - 0x98]
subsd xmm0, qword [0x5db028]
movaps xmm5, xmm3
mulsd xmm3, xmm1
mulsd xmm5, qword [ebp - 0x5c]
cvttsd2si ecx, xmm0
mov dword [ebp - 0x14], ecx
lea ecx, [esi + esi]
mov esi, dword [ebp + 0x20]
mov dword [ebp - 0x50], ecx
nop
cvttsd2si ecx, qword [ebp - 0xa0]
add eax, ecx
xor ecx, ecx
mov dword [ebp + 0x10], ecx
movd xmm0, eax
cvtdq2ps xmm0, xmm0
subss xmm0, dword [ebp + 0x30]
subss xmm0, xmm6
cvtps2pd xmm2, xmm0
movaps xmm0, xmm2
mulsd xmm2, qword [ebp - 0x5c]
mulsd xmm0, xmm1
movaps xmm1, xmm5
addsd xmm2, xmm3
subsd xmm1, xmm0
movss xmm0, dword [ebp + 0x2c]
cvtps2pd xmm0, xmm0
addsd xmm1, xmm0
movss xmm0, dword [ebp + 0x30]
cvtps2pd xmm0, xmm0
mulsd xmm1, xmm7
addsd xmm2, xmm0
cvttsd2si eax, xmm1
mulsd xmm2, xmm7
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x3c]
mov dword [ebp + 0xc], eax
mov eax, ecx
cvttsd2si edx, xmm2
sar eax, 0x10
mov dword [ebp - 0x24], eax
mov dword [ebp - 4], edx
sar dword [ebp - 4], 0x10
mov dword [ebp + 0x1c], edx
cmp esi, 0xffffffff
jg 0x508372
test eax, eax
js 0x508696
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv esi
mov ecx, eax
mov eax, 0x7fff
sub eax, dword [ebp - 0x3c]
cdq
idiv esi
xor edx, edx
test ecx, ecx
cmovs ecx, edx
jmp 0x5083a8
cmp esi, 1
jl 0x5083ba
mov eax, dword [ebx + 8]
dec eax
cmp dword [ebp - 0x24], eax
jge 0x508696
mov eax, 0x10000
sub eax, ecx
cdq
idiv esi
mov ecx, eax
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, dword [ebp - 0x3c]
sub eax, 0x17fff
cdq
idiv esi
xor edx, edx
test ecx, ecx
cmovle ecx, edx
cmp eax, dword [ebp + 0xc]
mov edx, dword [ebp + 0x1c]
cmovge eax, dword [ebp - 0x14]
mov dword [ebp + 0x10], ecx
mov dword [ebp + 0xc], eax
jmp 0x5083d5
test ecx, ecx
js 0x508696
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jge 0x508696
cmp edi, 0xffffffff
jg 0x508400
cmp dword [ebp - 4], 0
jl 0x508696
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, edx
sub eax, 0x27fff
cdq
idiv edi
mov ecx, eax
mov eax, dword [ebp + 0x1c]
cdq
idiv edi
neg eax
jmp 0x50842f
cmp edi, 1
jl 0x508443
mov eax, dword [ebx + 0xc]
dec eax
cmp dword [ebp - 4], eax
jge 0x508696
mov eax, 0x10000
sub eax, edx
cdq
idiv edi
mov ecx, eax
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, dword [ebp + 0x1c]
sub eax, 0x17fff
cdq
idiv edi
cmp ecx, dword [ebp + 0x10]
cmovle ecx, dword [ebp + 0x10]
cmp eax, dword [ebp + 0xc]
mov edx, ecx
cmovge eax, dword [ebp + 0xc]
mov ecx, eax
jmp 0x508464
test edx, edx
js 0x508696
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp edx, eax
jge 0x508696
mov edx, dword [ebp + 0x10]
mov ecx, dword [ebp + 0xc]
mov eax, edx
imul eax, esi
add dword [ebp - 0x3c], eax
mov eax, edx
imul eax, edi
add dword [ebp + 0x1c], eax
mov eax, dword [ebp + 0x18]
lea eax, [eax + edx*2]
mov dword [ebp - 0x38], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x20]
mov dword [ebp - 0x24], eax
cmp edx, ecx
jg 0x508696
mov ebx, dword [ebp - 0x3c]
sub ecx, edx
inc ecx
mov dword [ebp + 0xc], ecx
mov ecx, dword [ebp + 0x1c]
nop word [eax + eax]
mov eax, ecx
mov edi, dword [ebp + 0x28]
sar eax, 0x10
mov edx, ebx
imul eax, dword [ebp - 0x24]
and ecx, 0xfffe
sar edx, 0x10
inc ecx
mov dword [ebp - 0x30], ecx
mov esi, ebx
and esi, 0xfffe
inc esi
add eax, dword [ebp - 0x54]
add edx, eax
movzx eax, byte [edx]
mov eax, dword [edi + eax*4]
mov dword [ebp - 4], eax
movzx eax, byte [edx + 1]
mov ebx, dword [edi + eax*4]
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x20]
movzx eax, byte [edx + ecx]
mov edi, dword [edi + eax*4]
movzx eax, byte [edx + ecx + 1]
mov ecx, dword [ebp + 0x28]
mov edx, dword [ecx + eax*4]
mov eax, 0x10000
sub eax, dword [ebp - 0x30]
mov dword [ebp - 0x28], eax
mov eax, 0x10000
sub eax, esi
mov ecx, eax
mov dword [ebp + 0x10], eax
imul ecx, dword [ebp - 0x28]
mov eax, dword [ebp - 4]
shr eax, 0x18
shr ecx, 0x10
imul ecx, eax
mov eax, ebx
shr eax, 0x18
shr ecx, 0x10
mov dword [ebp - 0x18], ecx
mov ecx, dword [ebp - 0x28]
imul ecx, esi
shr ecx, 0x10
imul ecx, eax
mov eax, dword [ebp + 0x10]
imul eax, dword [ebp - 0x30]
shr ecx, 0x10
mov dword [ebp - 0x28], ecx
shr eax, 0x10
mov dword [ebp + 0x10], eax
mov eax, edi
mov ecx, dword [ebp + 0x10]
shr eax, 0x18
imul ecx, eax
mov eax, edx
shr eax, 0x18
mov dword [ebp + 0x10], ecx
mov ecx, dword [ebp - 0x30]
shr dword [ebp + 0x10], 0x10
imul ecx, esi
mov esi, edx
and esi, 0xffff00ff
shr ecx, 0x10
imul ecx, eax
mov eax, edi
and eax, 0xffff00ff
imul eax, dword [ebp + 0x10]
shr ecx, 0x10
imul esi, ecx
mov dword [ebp - 0x30], ecx
add esi, eax
mov eax, ebx
and eax, 0xffff00ff
imul eax, dword [ebp - 0x28]
add esi, eax
mov eax, dword [ebp - 4]
and eax, 0xffff00ff
imul eax, dword [ebp - 0x18]
add esi, eax
mov ecx, edx
mov eax, edi
and eax, 0xff00
and ecx, 0xff00
imul eax, dword [ebp + 0x10]
and edx, 0xff00ff
imul ecx, dword [ebp - 0x30]
and edi, 0xff00ff
imul edx, dword [ebp - 0x30]
imul edi, dword [ebp + 0x10]
add ecx, eax
mov eax, ebx
and eax, 0xff00
and ebx, 0xff00ff
imul eax, dword [ebp - 0x28]
add edx, edi
imul ebx, dword [ebp - 0x28]
mov edi, dword [ebp - 0x68]
add ecx, eax
mov eax, dword [ebp - 4]
and eax, 0xff00
add edx, ebx
imul eax, dword [ebp - 0x18]
mov ebx, dword [ebp - 0x38]
add ecx, eax
xor esi, ecx
mov ecx, dword [ebp - 4]
and ecx, 0xff00ff
and esi, 0xff0000
imul ecx, dword [ebp - 0x18]
add edx, ecx
movzx ecx, word [ebx]
xor esi, edx
mov eax, ecx
shl eax, 0x10
mov edx, 0x100
sub edx, dword [ebp - 0x30]
or eax, ecx
sub edx, dword [ebp + 0x10]
and eax, 0x3e07c1f
sub edx, dword [ebp - 0x28]
sub edx, dword [ebp - 0x18]
sar edx, 3
imul edx, eax
shr esi, 8
mov eax, esi
shr eax, 3
and eax, 0x1f
shr edx, 5
and edx, 0x3e07c1f
add edx, eax
mov eax, esi
shr eax, 9
and esi, 0xf800
and eax, 0x7c00
shl esi, 0xa
add eax, edx
add eax, esi
mov esi, dword [ebp + 0x20]
mov ecx, eax
shr ecx, 0x10
or ecx, eax
mov word [ebx], cx
add ebx, 2
mov ecx, dword [ebp + 0x1c]
mov dword [ebp - 0x38], ebx
add ecx, edi
mov ebx, dword [ebp - 0x3c]
add ebx, esi
mov dword [ebp + 0x1c], ecx
sub dword [ebp + 0xc], 1
mov dword [ebp - 0x3c], ebx
jne 0x5084a0
mov ebx, dword [ebp + 0x14]
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x50]
inc eax
add dword [ebp + 0x18], ecx
movsd xmm1, qword [ebp - 0x64]
mov dword [ebp - 0x20], eax
movd xmm0, eax
cvtdq2pd xmm0, xmm0
comisd xmm4, xmm0
ja 0x5082c0
mov edi, dword [ebp - 0x70]
mov ecx, edi
mov eax, dword [edi]
call dword [eax + 0xc0]
mov ecx, edi
call fcn.00512f90
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x2c
xor eax, eax
comisd xmm4, xmmword [0x5d99a8]
mov dword [ebp - 0x38], eax
jbe 0x50a2cf
cvttsd2si ecx, qword [ebp - 0xa8]
movsd xmm1, qword [ebp - 0x64]
movss xmm6, dword [ebp + 0x10]
movsd xmm7, qword [0x5e6630]
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
subss xmm0, dword [ebp + 0x2c]
subss xmm0, dword [ebp + 0xc]
cvtps2pd xmm3, xmm0
movsd xmm0, qword [ebp - 0x98]
subsd xmm0, qword [0x5db028]
movaps xmm5, xmm3
mulsd xmm3, xmm1
mulsd xmm5, qword [ebp - 0x5c]
cvttsd2si ecx, xmm0
mov dword [ebp - 0x14], ecx
lea ecx, [esi + esi]
mov esi, dword [ebp + 0x20]
mov dword [ebp - 0x6c], ecx
cvttsd2si ecx, qword [ebp - 0xa0]
add eax, ecx
xor ecx, ecx
mov dword [ebp - 0x1c], ecx
movd xmm0, eax
cvtdq2ps xmm0, xmm0
subss xmm0, dword [ebp + 0x30]
subss xmm0, xmm6
cvtps2pd xmm2, xmm0
movaps xmm0, xmm2
mulsd xmm2, qword [ebp - 0x5c]
mulsd xmm0, xmm1
movaps xmm1, xmm5
addsd xmm2, xmm3
subsd xmm1, xmm0
movss xmm0, dword [ebp + 0x2c]
cvtps2pd xmm0, xmm0
addsd xmm1, xmm0
movss xmm0, dword [ebp + 0x30]
cvtps2pd xmm0, xmm0
mulsd xmm1, xmm7
addsd xmm2, xmm0
cvttsd2si eax, xmm1
mulsd xmm2, xmm7
mov dword [ebp + 0x1c], eax
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp + 0x1c]
mov dword [ebp + 0x10], eax
mov eax, ecx
cvttsd2si edx, xmm2
sar eax, 0x10
mov dword [ebp - 0x24], eax
mov dword [ebp - 4], edx
sar dword [ebp - 4], 0x10
mov dword [ebp + 0xc], edx
cmp esi, 0xffffffff
jg 0x5087f6
test eax, eax
js 0x508b1e
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv esi
mov ecx, eax
mov eax, 0x7fff
sub eax, dword [ebp + 0x1c]
cdq
idiv esi
xor edx, edx
test ecx, ecx
cmovs ecx, edx
jmp 0x50882c
cmp esi, 1
jl 0x50883e
mov eax, dword [ebx + 8]
dec eax
cmp dword [ebp - 0x24], eax
jge 0x508b1e
mov eax, 0x10000
sub eax, ecx
cdq
idiv esi
mov ecx, eax
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, dword [ebp + 0x1c]
sub eax, 0x17fff
cdq
idiv esi
xor edx, edx
test ecx, ecx
cmovle ecx, edx
cmp eax, dword [ebp + 0x10]
mov edx, dword [ebp + 0xc]
cmovge eax, dword [ebp - 0x14]
mov dword [ebp - 0x1c], ecx
mov dword [ebp + 0x10], eax
jmp 0x508859
test ecx, ecx
js 0x508b1e
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jge 0x508b1e
cmp edi, 0xffffffff
jg 0x508884
cmp dword [ebp - 4], 0
jl 0x508b1e
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, edx
sub eax, 0x27fff
cdq
idiv edi
mov ecx, eax
mov eax, dword [ebp + 0xc]
cdq
idiv edi
neg eax
jmp 0x5088b3
cmp edi, 1
jl 0x5088c7
mov eax, dword [ebx + 0xc]
dec eax
cmp dword [ebp - 4], eax
jge 0x508b1e
mov eax, 0x10000
sub eax, edx
cdq
idiv edi
mov ecx, eax
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, dword [ebp + 0xc]
sub eax, 0x17fff
cdq
idiv edi
cmp ecx, dword [ebp - 0x1c]
cmovle ecx, dword [ebp - 0x1c]
cmp eax, dword [ebp + 0x10]
mov edx, ecx
cmovge eax, dword [ebp + 0x10]
mov ecx, eax
jmp 0x5088e8
test edx, edx
js 0x508b1e
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp edx, eax
jge 0x508b1e
mov edx, dword [ebp - 0x1c]
mov ecx, dword [ebp + 0x10]
mov eax, edx
imul eax, esi
add dword [ebp + 0x1c], eax
mov eax, edx
imul eax, edi
add dword [ebp + 0xc], eax
mov eax, dword [ebp + 0x18]
lea eax, [eax + edx*2]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x20]
mov dword [ebp - 0x24], eax
cmp edx, ecx
jg 0x508b1e
mov ebx, dword [ebp + 0x1c]
sub ecx, edx
inc ecx
mov dword [ebp + 0x10], ecx
mov ecx, dword [ebp + 0xc]
nop
mov edi, dword [ebp + 0x28]
mov edx, ebx
sar edx, 0x10
mov eax, ecx
sar eax, 0x10
mov esi, ebx
imul eax, dword [ebp - 0x24]
mov ebx, ecx
and ebx, 0xfffe
and esi, 0xfffe
inc ebx
inc esi
mov dword [ebp - 0x28], ebx
add eax, dword [ebp - 0x54]
add edx, eax
movzx eax, byte [edx]
mov eax, dword [edi + eax*4]
mov dword [ebp - 0x1c], eax
movzx eax, byte [edx + 1]
mov eax, dword [edi + eax*4]
mov dword [ebp - 8], eax
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x20]
movzx eax, byte [edx + ecx]
mov eax, dword [edi + eax*4]
mov dword [ebp - 0x18], eax
movzx eax, byte [edx + ecx + 1]
mov edx, 0x10000
sub edx, esi
mov ecx, 0x10000
sub ecx, ebx
mov ebx, edx
imul ebx, ecx
mov eax, dword [edi + eax*4]
mov edi, esi
mov dword [ebp - 4], eax
mov eax, dword [ebp - 0x1c]
shr eax, 0x18
shr ebx, 0x10
imul ebx, eax
mov eax, dword [ebp - 8]
imul edi, ecx
mov ecx, dword [ebp - 0x18]
shr eax, 0x18
shr ebx, 0x10
mov dword [ebp - 0x30], ebx
mov ebx, dword [ebp - 0x28]
imul ebx, edx
mov edx, dword [ebp - 0x28]
imul edx, esi
shr edi, 0x10
imul edi, eax
mov eax, ecx
shr eax, 0x18
shr ebx, 0x10
imul ebx, eax
mov eax, dword [ebp - 4]
shr edx, 0x10
shr eax, 0x18
imul edx, eax
shr edi, 0x10
shr ebx, 0x10
mov dword [ebp - 0x34], edi
movzx eax, cl
shr edx, 0x10
mov dword [ebp - 0x28], edx
mov edx, 0x100
sub edx, dword [ebp - 0x28]
sub edx, ebx
imul eax, ebx
sub edx, edi
sub edx, dword [ebp - 0x30]
mov dword [ebp - 0xc], edx
mov edx, dword [ebp - 0x20]
movzx esi, word [edx]
mov edx, dword [ebp - 4]
movzx edi, dl
imul edi, dword [ebp - 0x28]
add edi, eax
mov eax, dword [ebp - 8]
movzx eax, al
imul eax, dword [ebp - 0x34]
and edx, 0xff00
imul edx, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x78]
add edi, eax
mov eax, dword [ebp - 0x1c]
movzx eax, al
imul eax, dword [ebp - 0x30]
add edi, eax
mov eax, dword [ebp - 0x80]
and eax, esi
shr edi, cl
imul eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x7c]
shl di, cl
mov ecx, dword [ebp - 0x84]
shr eax, 8
and eax, dword [ebp - 0x80]
add di, ax
mov eax, dword [ebp - 0x18]
and eax, 0xff00
imul eax, ebx
add edx, eax
mov eax, dword [ebp - 8]
and eax, 0xff00
imul eax, dword [ebp - 0x34]
add edx, eax
mov eax, dword [ebp - 0x1c]
and eax, 0xff00
imul eax, dword [ebp - 0x30]
add edx, eax
mov eax, dword [ebp - 0x3c]
and eax, esi
shr edx, cl
imul eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x74]
shl dx, cl
mov ecx, dword [ebp - 0x4c]
shr eax, 8
and eax, dword [ebp - 0x3c]
add dx, ax
mov eax, dword [ebp - 0x18]
or di, dx
and eax, 0xff0000
mov edx, dword [ebp - 4]
imul eax, ebx
and edx, 0xff0000
imul edx, dword [ebp - 0x28]
mov ebx, dword [ebp + 0x1c]
add edx, eax
mov eax, dword [ebp - 8]
and eax, 0xff0000
imul eax, dword [ebp - 0x34]
add edx, eax
mov eax, dword [ebp - 0x1c]
and eax, 0xff0000
imul eax, dword [ebp - 0x30]
add edx, eax
mov eax, dword [ebp - 0x10]
and eax, esi
shr edx, cl
imul eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x2c]
mov esi, dword [ebp + 0x20]
add ebx, esi
shl dx, cl
mov ecx, dword [ebp + 0xc]
shr eax, 8
and eax, dword [ebp - 0x10]
add dx, ax
mov dword [ebp + 0x1c], ebx
mov eax, dword [ebp - 0x20]
or di, dx
mov word [eax], di
add eax, 2
mov edi, dword [ebp - 0x68]
add ecx, edi
sub dword [ebp + 0x10], 1
mov dword [ebp - 0x20], eax
mov dword [ebp + 0xc], ecx
jne 0x508920
mov ebx, dword [ebp + 0x14]
mov eax, dword [ebp - 0x38]
mov ecx, dword [ebp - 0x6c]
inc eax
add dword [ebp + 0x18], ecx
movsd xmm1, qword [ebp - 0x64]
mov dword [ebp - 0x38], eax
movd xmm0, eax
cvtdq2pd xmm0, xmm0
comisd xmm4, xmm0
ja 0x508744
mov edi, dword [ebp - 0x70]
mov ecx, edi
mov eax, dword [edi]
call dword [eax + 0xc0]
mov ecx, edi
call fcn.00512f90
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x2c
xor eax, eax
comisd xmm4, xmmword [0x5d99a8]
mov dword [ebp - 0x38], eax
jbe 0x50a2cf
cvttsd2si ecx, qword [ebp - 0xa8]
movsd xmm1, qword [ebp - 0x64]
movss xmm6, dword [ebp + 0x10]
movsd xmm7, qword [0x5e6630]
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
subss xmm0, dword [ebp + 0x2c]
subss xmm0, dword [ebp + 0xc]
cvtps2pd xmm3, xmm0
movsd xmm0, qword [ebp - 0x98]
subsd xmm0, qword [0x5db028]
movaps xmm5, xmm3
mulsd xmm3, xmm1
mulsd xmm5, qword [ebp - 0x5c]
cvttsd2si ecx, xmm0
mov dword [ebp - 0x20], ecx
lea ecx, [esi + esi]
mov esi, dword [ebp + 0x20]
mov dword [ebp - 0x6c], ecx
nop dword [eax]
cvttsd2si ecx, qword [ebp - 0xa0]
add eax, ecx
xor ecx, ecx
mov dword [ebp - 0x1c], ecx
movd xmm0, eax
cvtdq2ps xmm0, xmm0
subss xmm0, dword [ebp + 0x30]
subss xmm0, xmm6
cvtps2pd xmm2, xmm0
movaps xmm0, xmm1
movaps xmm1, xmm5
mulsd xmm0, xmm2
subsd xmm1, xmm0
movss xmm0, dword [ebp + 0x2c]
cvtps2pd xmm0, xmm0
addsd xmm1, xmm0
movss xmm0, dword [ebp + 0x30]
cvtps2pd xmm0, xmm0
mulsd xmm1, xmm7
cvttsd2si eax, xmm1
movsd xmm1, qword [ebp - 0x5c]
mulsd xmm1, xmm2
mov dword [ebp + 0x1c], eax
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp + 0x1c]
mov dword [ebp + 0x10], eax
mov eax, ecx
addsd xmm1, xmm3
sar eax, 0x10
mov dword [ebp - 0x24], eax
addsd xmm1, xmm0
mulsd xmm1, xmm7
cvttsd2si edx, xmm1
mov dword [ebp - 4], edx
sar dword [ebp - 4], 0x10
mov dword [ebp + 0xc], edx
cmp esi, 0xffffffff
jg 0x508c86
test eax, eax
js 0x508fac
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv esi
mov ecx, eax
mov eax, 0x7fff
sub eax, dword [ebp + 0x1c]
cdq
idiv esi
xor edx, edx
test ecx, ecx
cmovs ecx, edx
jmp 0x508cbc
cmp esi, 1
jl 0x508cce
mov eax, dword [ebx + 8]
dec eax
cmp dword [ebp - 0x24], eax
jge 0x508fac
mov eax, 0x10000
sub eax, ecx
cdq
idiv esi
mov ecx, eax
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, dword [ebp + 0x1c]
sub eax, 0x17fff
cdq
idiv esi
xor edx, edx
test ecx, ecx
cmovle ecx, edx
cmp eax, dword [ebp + 0x10]
mov edx, dword [ebp + 0xc]
cmovge eax, dword [ebp - 0x20]
mov dword [ebp - 0x1c], ecx
mov dword [ebp + 0x10], eax
jmp 0x508ce9
test ecx, ecx
js 0x508fac
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jge 0x508fac
cmp edi, 0xffffffff
jg 0x508d14
cmp dword [ebp - 4], 0
jl 0x508fac
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, edx
sub eax, 0x27fff
cdq
idiv edi
mov ecx, eax
mov eax, dword [ebp + 0xc]
cdq
idiv edi
neg eax
jmp 0x508d43
cmp edi, 1
jl 0x508d57
mov eax, dword [ebx + 0xc]
dec eax
cmp dword [ebp - 4], eax
jge 0x508fac
mov eax, 0x10000
sub eax, edx
cdq
idiv edi
mov ecx, eax
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, dword [ebp + 0xc]
sub eax, 0x17fff
cdq
idiv edi
cmp ecx, dword [ebp - 0x1c]
cmovle ecx, dword [ebp - 0x1c]
cmp eax, dword [ebp + 0x10]
mov edx, ecx
cmovge eax, dword [ebp + 0x10]
mov ecx, eax
jmp 0x508d78
test edx, edx
js 0x508fac
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp edx, eax
jge 0x508fac
mov edx, dword [ebp - 0x1c]
mov ecx, dword [ebp + 0x10]
mov eax, edx
imul eax, esi
add dword [ebp + 0x1c], eax
mov eax, edx
imul eax, edi
add dword [ebp + 0xc], eax
mov eax, dword [ebp + 0x18]
lea eax, [eax + edx*2]
mov dword [ebp - 0xc], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x20]
mov dword [ebp - 0x24], eax
cmp edx, ecx
jg 0x508fac
mov ebx, dword [ebp + 0x1c]
sub ecx, edx
inc ecx
mov dword [ebp + 0x10], ecx
mov ecx, dword [ebp + 0xc]
nop
mov edi, dword [ebp + 0x28]
mov edx, ebx
sar edx, 0x10
mov eax, ecx
sar eax, 0x10
mov esi, ebx
imul eax, dword [ebp - 0x24]
mov ebx, ecx
and ebx, 0xfffe
and esi, 0xfffe
inc ebx
inc esi
mov dword [ebp - 0x28], ebx
add eax, dword [ebp - 0x54]
add edx, eax
movzx eax, byte [edx]
mov eax, dword [edi + eax*4]
mov dword [ebp - 0x1c], eax
movzx eax, byte [edx + 1]
mov eax, dword [edi + eax*4]
mov dword [ebp - 8], eax
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x20]
movzx eax, byte [edx + ecx]
mov eax, dword [edi + eax*4]
mov dword [ebp - 0x14], eax
movzx eax, byte [edx + ecx + 1]
mov edx, 0x10000
sub edx, esi
mov ecx, 0x10000
sub ecx, ebx
mov ebx, edx
imul ebx, ecx
mov eax, dword [edi + eax*4]
mov edi, esi
mov dword [ebp - 4], eax
mov eax, dword [ebp - 0x1c]
shr eax, 0x18
shr ebx, 0x10
imul ebx, eax
mov eax, dword [ebp - 8]
imul edi, ecx
mov ecx, dword [ebp - 0x14]
shr eax, 0x18
shr ebx, 0x10
mov dword [ebp - 0x30], ebx
mov ebx, dword [ebp - 0x28]
imul ebx, edx
mov edx, dword [ebp - 0x28]
imul edx, esi
shr edi, 0x10
imul edi, eax
mov eax, ecx
shr eax, 0x18
shr ebx, 0x10
imul ebx, eax
mov eax, dword [ebp - 4]
shr edx, 0x10
shr eax, 0x18
imul edx, eax
shr edi, 0x10
shr ebx, 0x10
mov dword [ebp - 0x18], edi
movzx eax, cl
shr edx, 0x10
mov dword [ebp - 0x28], edx
mov edx, 0x100
sub edx, dword [ebp - 0x28]
sub edx, ebx
imul eax, ebx
sub edx, edi
sub edx, dword [ebp - 0x30]
mov dword [ebp - 0x34], edx
mov edx, dword [ebp - 0xc]
movzx esi, word [edx]
mov edx, dword [ebp - 4]
movzx edi, dl
imul edi, dword [ebp - 0x28]
add edi, eax
mov eax, dword [ebp - 8]
movzx eax, al
imul eax, dword [ebp - 0x18]
and edx, 0xff00
imul edx, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x78]
add edi, eax
mov eax, dword [ebp - 0x1c]
movzx eax, al
imul eax, dword [ebp - 0x30]
add edi, eax
mov eax, esi
and eax, dword [ebp - 0x80]
imul eax, dword [ebp - 0x34]
shr edi, cl
mov ecx, dword [ebp - 0x7c]
shl di, cl
mov ecx, dword [ebp - 0x84]
shr eax, 8
and eax, dword [ebp - 0x80]
add di, ax
mov eax, dword [ebp - 0x14]
and eax, 0xff00
imul eax, ebx
add edx, eax
mov eax, dword [ebp - 8]
and eax, 0xff00
imul eax, dword [ebp - 0x18]
add edx, eax
mov eax, dword [ebp - 0x1c]
and eax, 0xff00
imul eax, dword [ebp - 0x30]
add edx, eax
mov eax, esi
and eax, dword [ebp - 0x3c]
imul eax, dword [ebp - 0x34]
shr edx, cl
mov ecx, dword [ebp - 0x74]
shl dx, cl
and esi, dword [ebp - 0x10]
shr eax, 8
and eax, dword [ebp - 0x3c]
add dx, ax
imul esi, dword [ebp - 0x34]
mov eax, dword [ebp - 0x14]
or di, dx
mov edx, dword [ebp - 4]
and eax, 0xff0000
imul eax, ebx
and edx, 0xff0000
imul edx, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x4c]
mov ebx, dword [ebp + 0x1c]
shr esi, 8
and esi, dword [ebp - 0x10]
add edx, eax
mov eax, dword [ebp - 8]
and eax, 0xff0000
imul eax, dword [ebp - 0x18]
add edx, eax
mov eax, dword [ebp - 0x1c]
and eax, 0xff0000
imul eax, dword [ebp - 0x30]
add edx, eax
mov eax, dword [ebp - 0xc]
shr edx, cl
mov ecx, dword [ebp - 0x2c]
shl dx, cl
mov ecx, dword [ebp + 0xc]
add dx, si
mov esi, dword [ebp + 0x20]
or di, dx
mov word [eax], di
add ebx, esi
mov edi, dword [ebp - 0x68]
add eax, 2
add ecx, edi
mov dword [ebp - 0xc], eax
sub dword [ebp + 0x10], 1
mov dword [ebp + 0x1c], ebx
mov dword [ebp + 0xc], ecx
jne 0x508db0
mov ebx, dword [ebp + 0x14]
mov eax, dword [ebp - 0x38]
mov ecx, dword [ebp - 0x6c]
inc eax
add dword [ebp + 0x18], ecx
movsd xmm1, qword [ebp - 0x64]
mov dword [ebp - 0x38], eax
movd xmm0, eax
cvtdq2pd xmm0, xmm0
comisd xmm4, xmm0
ja 0x508bd0
mov edi, dword [ebp - 0x70]
mov ecx, edi
mov eax, dword [edi]
call dword [eax + 0xc0]
mov ecx, edi
call fcn.00512f90
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x2c
mov eax, dword [ebp + 0x1c]
mov ecx, dword [eax + 0xc]
mov dword [ebp - 8], ecx
mov ecx, dword [eax]
inc ecx
mov dword [ebp - 0x88], ecx
mov ecx, dword [eax + 4]
mov eax, dword [eax + 8]
inc ecx
inc eax
mov dword [ebp - 0x44], ecx
mov dword [ebp - 0x6c], eax
xor eax, eax
comisd xmm4, xmmword [0x5d99a8]
mov dword [ebp - 0x48], eax
jbe 0x50a2cf
cvttsd2si ecx, qword [ebp - 0xa8]
movsd xmm1, qword [ebp - 0x64]
movss xmm6, dword [ebp + 0x10]
movsd xmm7, qword [0x5e6630]
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
subss xmm0, dword [ebp + 0x2c]
subss xmm0, dword [ebp + 0xc]
cvtps2pd xmm3, xmm0
movsd xmm0, qword [ebp - 0x98]
subsd xmm0, qword [0x5db028]
movaps xmm5, xmm3
mulsd xmm3, xmm1
mulsd xmm5, qword [ebp - 0x5c]
cvttsd2si ecx, xmm0
mov dword [ebp - 0x20], ecx
lea ecx, [esi + esi]
mov esi, dword [ebp + 0x20]
mov dword [ebp - 0x40], ecx
nop word [eax + eax]
cvttsd2si ecx, qword [ebp - 0xa0]
add eax, ecx
xor ecx, ecx
mov dword [ebp - 0x1c], ecx
movd xmm0, eax
cvtdq2ps xmm0, xmm0
subss xmm0, dword [ebp + 0x30]
subss xmm0, xmm6
cvtps2pd xmm2, xmm0
movaps xmm0, xmm2
mulsd xmm2, qword [ebp - 0x5c]
mulsd xmm0, xmm1
movaps xmm1, xmm5
addsd xmm2, xmm3
subsd xmm1, xmm0
movss xmm0, dword [ebp + 0x2c]
cvtps2pd xmm0, xmm0
addsd xmm1, xmm0
movss xmm0, dword [ebp + 0x30]
cvtps2pd xmm0, xmm0
mulsd xmm1, xmm7
addsd xmm2, xmm0
cvttsd2si eax, xmm1
mulsd xmm2, xmm7
mov dword [ebp + 0x1c], eax
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp + 0x1c]
mov dword [ebp + 0x10], eax
mov eax, ecx
cvttsd2si edx, xmm2
sar eax, 0x10
mov dword [ebp - 0x24], eax
mov dword [ebp - 4], edx
sar dword [ebp - 4], 0x10
mov dword [ebp + 0xc], edx
cmp esi, 0xffffffff
jg 0x509132
test eax, eax
js 0x509489
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv esi
mov ecx, eax
mov eax, 0x7fff
sub eax, dword [ebp + 0x1c]
cdq
idiv esi
xor edx, edx
test ecx, ecx
cmovs ecx, edx
jmp 0x509168
cmp esi, 1
jl 0x50917a
mov eax, dword [ebx + 8]
dec eax
cmp dword [ebp - 0x24], eax
jge 0x509489
mov eax, 0x10000
sub eax, ecx
cdq
idiv esi
mov ecx, eax
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, dword [ebp + 0x1c]
sub eax, 0x17fff
cdq
idiv esi
xor edx, edx
test ecx, ecx
cmovle ecx, edx
cmp eax, dword [ebp + 0x10]
mov edx, dword [ebp + 0xc]
cmovge eax, dword [ebp - 0x20]
mov dword [ebp - 0x1c], ecx
mov dword [ebp + 0x10], eax
jmp 0x509195
test ecx, ecx
js 0x509489
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jge 0x509489
cmp edi, 0xffffffff
jg 0x5091c0
cmp dword [ebp - 4], 0
jl 0x509489
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, edx
sub eax, 0x27fff
cdq
idiv edi
mov ecx, eax
mov eax, dword [ebp + 0xc]
cdq
idiv edi
neg eax
jmp 0x5091ef
cmp edi, 1
jl 0x509203
mov eax, dword [ebx + 0xc]
dec eax
cmp dword [ebp - 4], eax
jge 0x509489
mov eax, 0x10000
sub eax, edx
cdq
idiv edi
mov ecx, eax
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, dword [ebp + 0xc]
sub eax, 0x17fff
cdq
idiv edi
cmp ecx, dword [ebp - 0x1c]
cmovle ecx, dword [ebp - 0x1c]
cmp eax, dword [ebp + 0x10]
mov edx, ecx
cmovge eax, dword [ebp + 0x10]
mov ecx, eax
jmp 0x509224
test edx, edx
js 0x509489
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp edx, eax
jge 0x509489
mov edx, dword [ebp - 0x1c]
mov ecx, dword [ebp + 0x10]
mov eax, esi
imul eax, edx
add dword [ebp + 0x1c], eax
mov eax, edi
imul eax, edx
add dword [ebp + 0xc], eax
mov eax, dword [ebp + 0x18]
lea eax, [eax + edx*2]
mov dword [ebp - 0xc], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x20]
mov dword [ebp - 0x24], eax
cmp edx, ecx
jg 0x509489
mov ebx, dword [ebp + 0x1c]
sub ecx, edx
inc ecx
mov dword [ebp + 0x10], ecx
mov ecx, dword [ebp + 0xc]
nop word [eax + eax]
mov edi, dword [ebp + 0x28]
mov eax, ecx
sar eax, 0x10
mov edx, ebx
imul eax, dword [ebp - 0x24]
and ecx, 0xfffe
sar edx, 0x10
inc ecx
mov dword [ebp - 0x30], ecx
mov esi, ebx
and esi, 0xfffe
inc esi
add eax, dword [ebp - 0x54]
add edx, eax
movzx eax, byte [edx]
mov eax, dword [edi + eax*4]
mov dword [ebp - 0x28], eax
movzx eax, byte [edx + 1]
mov eax, dword [edi + eax*4]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x20]
movzx eax, byte [ecx + edx]
mov ebx, dword [edi + eax*4]
movzx eax, byte [ecx + edx + 1]
mov ecx, 0x10000
sub ecx, esi
mov dword [ebp - 0x14], ebx
mov edx, ecx
imul ecx, dword [ebp - 0x30]
mov eax, dword [edi + eax*4]
mov edi, 0x10000
sub edi, dword [ebp - 0x30]
imul edx, edi
mov dword [ebp - 4], eax
mov eax, dword [ebp - 0x28]
shr eax, 0x18
imul edi, esi
shr edx, 0x10
imul edx, eax
mov eax, dword [ebp - 0x1c]
shr eax, 0x18
shr edi, 0x10
imul edi, eax
mov eax, ebx
mov ebx, dword [ebp - 0x30]
imul ebx, esi
shr ecx, 0x10
shr eax, 0x18
imul ecx, eax
mov eax, dword [ebp - 4]
shr ebx, 0x10
shr eax, 0x18
imul ebx, eax
mov eax, dword [ebp - 0x14]
shr ecx, 0x10
imul ecx, dword [ebp - 8]
shr edi, 0x10
imul edi, dword [ebp - 8]
shr ebx, 0x10
imul ebx, dword [ebp - 8]
shr edx, 0x10
imul edx, dword [ebp - 8]
sar ecx, 8
sar edi, 8
sar ebx, 8
mov dword [ebp - 0x30], ebx
mov ebx, 0x100
sub ebx, dword [ebp - 0x30]
sar edx, 8
sub ebx, ecx
sub ebx, edi
mov dword [ebp - 0x34], edx
sub ebx, edx
mov dword [ebp - 0x18], edi
mov edx, dword [ebp - 0xc]
mov dword [ebp - 0x38], ecx
movzx esi, word [edx]
mov edx, dword [ebp - 4]
movzx edi, dl
imul edi, dword [ebp - 0x30]
movzx eax, al
and edx, 0xff00
imul eax, ecx
imul edx, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x78]
add edi, eax
mov eax, dword [ebp - 0x1c]
movzx eax, al
imul eax, dword [ebp - 0x18]
add edi, eax
mov eax, dword [ebp - 0x28]
movzx eax, al
imul eax, dword [ebp - 0x34]
add edi, eax
mov eax, esi
and eax, dword [ebp - 0x80]
imul eax, ebx
shr edi, 8
imul edi, dword [ebp - 0x6c]
shr eax, 8
and eax, dword [ebp - 0x80]
shr edi, cl
mov ecx, dword [ebp - 0x7c]
shl di, cl
add di, ax
mov ecx, dword [ebp - 0x84]
mov eax, dword [ebp - 0x14]
and eax, 0xff00
imul eax, dword [ebp - 0x38]
add edx, eax
mov eax, dword [ebp - 0x1c]
and eax, 0xff00
imul eax, dword [ebp - 0x18]
add edx, eax
mov eax, dword [ebp - 0x28]
and eax, 0xff00
imul eax, dword [ebp - 0x34]
add edx, eax
mov eax, esi
and eax, dword [ebp - 0x3c]
shr edx, 8
imul edx, dword [ebp - 0x44]
imul eax, ebx
and esi, dword [ebp - 0x10]
imul esi, ebx
shr edx, cl
mov ecx, dword [ebp - 0x74]
shl dx, cl
shr eax, 8
and eax, dword [ebp - 0x3c]
add dx, ax
mov ecx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x14]
or di, dx
mov edx, dword [ebp - 4]
and eax, 0xff0000
imul eax, dword [ebp - 0x38]
and edx, 0xff0000
imul edx, dword [ebp - 0x30]
shr esi, 8
and esi, dword [ebp - 0x10]
add edx, eax
mov eax, dword [ebp - 0x1c]
and eax, 0xff0000
imul eax, dword [ebp - 0x18]
add edx, eax
mov eax, dword [ebp - 0x28]
and eax, 0xff0000
imul eax, dword [ebp - 0x34]
add edx, eax
mov eax, dword [ebp - 0xc]
shr edx, 8
imul edx, dword [ebp - 0x88]
shr edx, cl
mov ecx, dword [ebp - 0x2c]
shl dx, cl
add dx, si
or di, dx
mov word [eax], di
add eax, 2
mov dword [ebp - 0xc], eax
mov ebx, dword [ebp + 0x1c]
mov ecx, dword [ebp + 0xc]
mov esi, dword [ebp + 0x20]
add ebx, esi
mov edi, dword [ebp - 0x68]
add ecx, edi
sub dword [ebp + 0x10], 1
mov dword [ebp + 0x1c], ebx
mov dword [ebp + 0xc], ecx
jne 0x509260
mov ebx, dword [ebp + 0x14]
mov eax, dword [ebp - 0x48]
mov ecx, dword [ebp - 0x40]
inc eax
add dword [ebp + 0x18], ecx
movsd xmm1, qword [ebp - 0x64]
mov dword [ebp - 0x48], eax
movd xmm0, eax
cvtdq2pd xmm0, xmm0
comisd xmm4, xmm0
ja 0x509080
mov edi, dword [ebp - 0x70]
mov ecx, edi
mov eax, dword [edi]
call dword [eax + 0xc0]
mov ecx, edi
call fcn.00512f90
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x2c
cmp eax, 0x20
jne 0x50a2cf
cvttsd2si eax, qword [ebp - 0xa0]
mov esi, dword [esi + 0x8c]
push 0x6671bc
cvttsd2si ecx, qword [ebp - 0xa8]
imul eax, esi
cdq
and edx, 3
add eax, edx
sar eax, 2
add eax, ecx
mov ecx, dword [ebp - 0x70]
mov ecx, dword [ecx + 0xa0]
lea eax, [ecx + eax*4]
mov dword [ebp + 0x18], eax
mov eax, esi
mov esi, dword [ebp + 0x1c]
cdq
and edx, 3
add eax, edx
sar eax, 2
push esi
mov dword [ebp - 0x14], eax
call fcn.00500400
movsd xmm4, qword [ebp - 0x90]
add esp, 8
test al, al
je 0x509e1d
xor eax, eax
mov dword [ebp - 0x48], eax
cmp byte [0x6671ac], al
je 0x5099a9
comisd xmm4, xmmword [0x5d99a8]
jbe 0x50a2cf
cvttsd2si ecx, qword [ebp - 0xa8]
mov esi, dword [ebp + 0x20]
movsd xmm1, qword [ebp - 0x64]
movss xmm6, dword [ebp + 0x10]
movsd xmm7, qword [0x5e6630]
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
subss xmm0, dword [ebp + 0x2c]
subss xmm0, dword [ebp + 0xc]
cvtps2pd xmm3, xmm0
movsd xmm0, qword [ebp - 0x98]
subsd xmm0, qword [0x5db028]
movaps xmm5, xmm3
mulsd xmm3, xmm1
mulsd xmm5, qword [ebp - 0x5c]
cvttsd2si ecx, xmm0
mov dword [ebp - 0x20], ecx
mov ecx, dword [ebp - 0x14]
shl ecx, 2
mov dword [ebp - 0x24], ecx
cvttsd2si ecx, qword [ebp - 0xa0]
add eax, ecx
xor ecx, ecx
mov dword [ebp - 0x1c], ecx
movd xmm0, eax
cvtdq2ps xmm0, xmm0
subss xmm0, dword [ebp + 0x30]
subss xmm0, xmm6
cvtps2pd xmm2, xmm0
movaps xmm0, xmm2
mulsd xmm2, qword [ebp - 0x5c]
mulsd xmm0, xmm1
movaps xmm1, xmm5
addsd xmm2, xmm3
subsd xmm1, xmm0
movss xmm0, dword [ebp + 0x2c]
cvtps2pd xmm0, xmm0
addsd xmm1, xmm0
movss xmm0, dword [ebp + 0x30]
cvtps2pd xmm0, xmm0
mulsd xmm1, xmm7
addsd xmm2, xmm0
cvttsd2si eax, xmm1
mulsd xmm2, xmm7
mov dword [ebp + 0x1c], eax
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp + 0x1c]
mov dword [ebp + 0x10], eax
mov eax, ecx
cvttsd2si edx, xmm2
sar eax, 0x10
mov dword [ebp - 0x40], eax
mov dword [ebp - 4], edx
sar dword [ebp - 4], 0x10
mov dword [ebp + 0xc], edx
cmp esi, 0xffffffff
jg 0x509663
test eax, eax
js 0x509968
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv esi
mov ecx, eax
mov eax, 0x7fff
sub eax, dword [ebp + 0x1c]
cdq
idiv esi
xor edx, edx
test ecx, ecx
cmovs ecx, edx
jmp 0x509699
cmp esi, 1
jl 0x5096ab
mov eax, dword [ebx + 8]
dec eax
cmp dword [ebp - 0x40], eax
jge 0x509968
mov eax, 0x10000
sub eax, ecx
cdq
idiv esi
mov ecx, eax
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, dword [ebp + 0x1c]
sub eax, 0x17fff
cdq
idiv esi
xor edx, edx
test ecx, ecx
cmovle ecx, edx
cmp eax, dword [ebp + 0x10]
mov edx, dword [ebp + 0xc]
cmovge eax, dword [ebp - 0x20]
mov dword [ebp - 0x1c], ecx
mov dword [ebp + 0x10], eax
jmp 0x5096c6
test ecx, ecx
js 0x509968
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jge 0x509968
cmp edi, 0xffffffff
jg 0x5096f1
cmp dword [ebp - 4], 0
jl 0x509968
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, edx
sub eax, 0x27fff
cdq
idiv edi
mov ecx, eax
mov eax, dword [ebp + 0xc]
cdq
idiv edi
neg eax
jmp 0x509720
cmp edi, 1
jl 0x509734
mov eax, dword [ebx + 0xc]
dec eax
cmp dword [ebp - 4], eax
jge 0x509968
mov eax, 0x10000
sub eax, edx
cdq
idiv edi
mov ecx, eax
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, dword [ebp + 0xc]
sub eax, 0x17fff
cdq
idiv edi
cmp ecx, dword [ebp - 0x1c]
cmovle ecx, dword [ebp - 0x1c]
cmp eax, dword [ebp + 0x10]
mov edx, ecx
cmovge eax, dword [ebp + 0x10]
mov ecx, eax
jmp 0x509755
test edx, edx
js 0x509968
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp edx, eax
jge 0x509968
mov edx, dword [ebp - 0x1c]
mov ecx, dword [ebp + 0x10]
mov eax, esi
imul eax, edx
add dword [ebp + 0x1c], eax
mov eax, edi
imul eax, edx
add dword [ebp + 0xc], eax
mov eax, dword [ebp + 0x18]
lea eax, [eax + edx*4]
mov dword [ebp - 0xc], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x20]
mov dword [ebp - 0x40], eax
cmp edx, ecx
jg 0x509968
mov ebx, dword [ebp + 0x1c]
sub ecx, edx
inc ecx
mov dword [ebp + 0x10], ecx
mov ecx, dword [ebp + 0xc]
nop dword [eax + eax]
mov edx, ebx
mov eax, ecx
sar eax, 0x10
mov esi, ebx
imul eax, dword [ebp - 0x40]
mov edi, ecx
mov ebx, dword [ebp + 0x28]
and esi, 0xfffe
sar edx, 0x10
inc esi
and edi, 0xfffe
inc edi
add eax, dword [ebp - 0x54]
add edx, eax
movzx eax, byte [edx]
mov eax, dword [ebx + eax*4]
mov dword [ebp - 0x10], eax
movzx eax, byte [edx + 1]
mov eax, dword [ebx + eax*4]
mov dword [ebp - 8], eax
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x20]
movzx eax, byte [edx + ecx]
mov eax, dword [ebx + eax*4]
mov dword [ebp - 4], eax
movzx eax, byte [edx + ecx + 1]
mov edx, 0x10000
sub edx, esi
mov ecx, 0x10000
sub ecx, edi
mov eax, dword [ebx + eax*4]
mov ebx, edx
imul ebx, ecx
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x10]
shr eax, 0x18
shr ebx, 0x10
imul ebx, eax
mov eax, dword [ebp - 8]
shr eax, 0x18
shr ebx, 0x10
mov dword [ebp - 0x2c], ebx
mov ebx, esi
imul ebx, ecx
shr ebx, 0x10
imul ebx, eax
mov eax, dword [ebp - 4]
shr eax, 0x18
shr ebx, 0x10
mov dword [ebp - 0x34], ebx
mov ebx, edi
imul ebx, edx
mov edx, dword [ebp - 0x14]
imul edi, esi
mov esi, 0x100
shr ebx, 0x10
imul ebx, eax
mov eax, edx
shr eax, 0x18
shr edi, 0x10
imul edi, eax
mov eax, dword [ebp - 4]
movzx eax, al
shr ebx, 0x10
imul eax, ebx
shr edi, 0x10
mov dword [ebp - 0x18], edi
sub esi, dword [ebp - 0x18]
mov edi, dword [ebp - 0xc]
sub esi, ebx
sub esi, dword [ebp - 0x34]
sub esi, dword [ebp - 0x2c]
movzx edx, dl
imul edx, dword [ebp - 0x18]
mov edi, dword [edi]
add edx, eax
mov eax, dword [ebp - 8]
movzx eax, al
imul eax, dword [ebp - 0x34]
add edx, eax
mov eax, dword [ebp - 0x10]
movzx eax, al
imul eax, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x14]
and ecx, 0xff00
imul ecx, dword [ebp - 0x18]
add edx, eax
mov eax, edi
and eax, 0xffff00ff
and edx, 0xff00
imul eax, esi
add edx, eax
mov eax, dword [ebp - 4]
and eax, 0xff00
imul eax, ebx
add ecx, eax
mov eax, dword [ebp - 8]
and eax, 0xff00
imul eax, dword [ebp - 0x34]
add ecx, eax
mov eax, dword [ebp - 0x10]
and eax, 0xff00
imul eax, dword [ebp - 0x2c]
add ecx, eax
mov eax, edi
and eax, 0xff00
and ecx, 0xffff0000
imul eax, esi
and edi, 0xff00ff
imul edi, esi
mov esi, dword [ebp + 0x20]
add ecx, eax
mov eax, dword [ebp - 4]
xor edx, ecx
and eax, 0xff00ff
mov ecx, dword [ebp - 0x14]
and edx, 0xff0000
imul eax, ebx
and ecx, 0xff00ff
imul ecx, dword [ebp - 0x18]
mov ebx, dword [ebp + 0x1c]
add ebx, esi
mov dword [ebp + 0x1c], ebx
add ecx, eax
mov eax, dword [ebp - 8]
and eax, 0xff00ff
imul eax, dword [ebp - 0x34]
add ecx, eax
mov eax, dword [ebp - 0x10]
and eax, 0xff00ff
imul eax, dword [ebp - 0x2c]
add ecx, eax
mov eax, dword [ebp - 0xc]
and ecx, 0xff00ff00
add ecx, edi
mov edi, dword [ebp - 0x68]
xor edx, ecx
mov ecx, dword [ebp + 0xc]
shr edx, 8
add ecx, edi
mov dword [eax], edx
add eax, 4
sub dword [ebp + 0x10], 1
mov dword [ebp - 0xc], eax
mov dword [ebp + 0xc], ecx
jne 0x509790
mov ebx, dword [ebp + 0x14]
mov eax, dword [ebp - 0x48]
mov ecx, dword [ebp - 0x24]
inc eax
add dword [ebp + 0x18], ecx
movsd xmm1, qword [ebp - 0x64]
mov dword [ebp - 0x48], eax
movd xmm0, eax
cvtdq2pd xmm0, xmm0
comisd xmm4, xmm0
ja 0x5095b1
mov edi, dword [ebp - 0x70]
mov ecx, edi
mov eax, dword [edi]
call dword [eax + 0xc0]
mov ecx, edi
call fcn.00512f90
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x2c
comisd xmm4, xmmword [0x5d99a8]
jbe 0x50a2cf
cvttsd2si ecx, qword [ebp - 0xa8]
mov esi, dword [ebp + 0x20]
movsd xmm1, qword [ebp - 0x64]
movss xmm6, dword [ebp + 0x10]
movsd xmm7, qword [0x5e6630]
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
subss xmm0, dword [ebp + 0x2c]
subss xmm0, dword [ebp + 0xc]
cvtps2pd xmm3, xmm0
movsd xmm0, qword [ebp - 0x98]
subsd xmm0, qword [0x5db028]
movaps xmm5, xmm3
mulsd xmm3, xmm1
mulsd xmm5, qword [ebp - 0x5c]
cvttsd2si ecx, xmm0
mov dword [ebp - 0x20], ecx
mov ecx, dword [ebp - 0x14]
shl ecx, 2
mov dword [ebp - 0x24], ecx
cvttsd2si ecx, qword [ebp - 0xa0]
add eax, ecx
xor ecx, ecx
mov dword [ebp - 0x1c], ecx
movd xmm0, eax
cvtdq2ps xmm0, xmm0
subss xmm0, dword [ebp + 0x30]
subss xmm0, xmm6
cvtps2pd xmm2, xmm0
movaps xmm0, xmm2
mulsd xmm2, qword [ebp - 0x5c]
mulsd xmm0, xmm1
movaps xmm1, xmm5
addsd xmm2, xmm3
subsd xmm1, xmm0
movss xmm0, dword [ebp + 0x2c]
cvtps2pd xmm0, xmm0
addsd xmm1, xmm0
movss xmm0, dword [ebp + 0x30]
cvtps2pd xmm0, xmm0
mulsd xmm1, xmm7
addsd xmm2, xmm0
cvttsd2si eax, xmm1
mulsd xmm2, xmm7
mov dword [ebp + 0x1c], eax
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp + 0x1c]
mov dword [ebp + 0x10], eax
mov eax, ecx
cvttsd2si edx, xmm2
sar eax, 0x10
mov dword [ebp - 0x40], eax
mov dword [ebp - 4], edx
sar dword [ebp - 4], 0x10
mov dword [ebp + 0xc], edx
cmp esi, 0xffffffff
jg 0x509ac6
test eax, eax
js 0x509ddc
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv esi
mov ecx, eax
mov eax, 0x7fff
sub eax, dword [ebp + 0x1c]
cdq
idiv esi
xor edx, edx
test ecx, ecx
cmovs ecx, edx
jmp 0x509afc
cmp esi, 1
jl 0x509b0e
mov eax, dword [ebx + 8]
dec eax
cmp dword [ebp - 0x40], eax
jge 0x509ddc
mov eax, 0x10000
sub eax, ecx
cdq
idiv esi
mov ecx, eax
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, dword [ebp + 0x1c]
sub eax, 0x17fff
cdq
idiv esi
xor edx, edx
test ecx, ecx
cmovle ecx, edx
cmp eax, dword [ebp + 0x10]
mov edx, dword [ebp + 0xc]
cmovge eax, dword [ebp - 0x20]
mov dword [ebp - 0x1c], ecx
mov dword [ebp + 0x10], eax
jmp 0x509b29
test ecx, ecx
js 0x509ddc
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jge 0x509ddc
cmp edi, 0xffffffff
jg 0x509b54
cmp dword [ebp - 4], 0
jl 0x509ddc
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, edx
sub eax, 0x27fff
cdq
idiv edi
mov ecx, eax
mov eax, dword [ebp + 0xc]
cdq
idiv edi
neg eax
jmp 0x509b83
cmp edi, 1
jl 0x509b97
mov eax, dword [ebx + 0xc]
dec eax
cmp dword [ebp - 4], eax
jge 0x509ddc
mov eax, 0x10000
sub eax, edx
cdq
idiv edi
mov ecx, eax
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, dword [ebp + 0xc]
sub eax, 0x17fff
cdq
idiv edi
cmp ecx, dword [ebp - 0x1c]
cmovle ecx, dword [ebp - 0x1c]
cmp eax, dword [ebp + 0x10]
mov edx, ecx
cmovge eax, dword [ebp + 0x10]
mov ecx, eax
jmp 0x509bb8
test edx, edx
js 0x509ddc
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp edx, eax
jge 0x509ddc
mov edx, dword [ebp - 0x1c]
mov ecx, dword [ebp + 0x10]
mov eax, edx
imul eax, esi
add dword [ebp + 0x1c], eax
mov eax, edx
imul eax, edi
add dword [ebp + 0xc], eax
mov eax, dword [ebp + 0x18]
lea eax, [eax + edx*4]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x20]
mov dword [ebp - 0x40], eax
cmp edx, ecx
jg 0x509ddc
mov ebx, dword [ebp + 0x1c]
sub ecx, edx
inc ecx
mov dword [ebp + 0x10], ecx
mov ecx, dword [ebp + 0xc]
nop
mov edx, ebx
mov eax, ecx
sar eax, 0x10
mov esi, ebx
imul eax, dword [ebp - 0x40]
mov edi, ecx
mov ebx, dword [ebp + 0x28]
and edi, 0xfffe
sar edx, 0x10
inc edi
and esi, 0xfffe
inc esi
add eax, dword [ebp - 0x54]
add edx, eax
movzx eax, byte [edx]
mov eax, dword [ebx + eax*4]
mov dword [ebp - 0x30], eax
movzx eax, byte [edx + 1]
mov eax, dword [ebx + eax*4]
mov dword [ebp - 8], eax
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x20]
movzx eax, byte [edx + ecx]
mov eax, dword [ebx + eax*4]
mov dword [ebp - 0x18], eax
movzx eax, byte [edx + ecx + 1]
mov edx, 0x10000
sub edx, esi
mov ecx, 0x10000
sub ecx, edi
mov eax, dword [ebx + eax*4]
mov ebx, edx
imul ebx, ecx
mov dword [ebp - 4], eax
mov eax, dword [ebp - 0x30]
shr eax, 0x18
shr ebx, 0x10
imul ebx, eax
mov eax, dword [ebp - 8]
shr eax, 0x18
shr ebx, 0x10
mov dword [ebp - 0xc], ebx
mov ebx, esi
imul ebx, ecx
mov ecx, dword [ebp - 4]
shr ebx, 0x10
imul ebx, eax
shr ebx, 0x10
mov dword [ebp - 0x28], ebx
mov ebx, edi
imul edi, esi
imul ebx, edx
mov edx, dword [ebp - 0x18]
mov eax, edx
shr eax, 0x18
movzx esi, cl
shr edi, 0x10
shr ebx, 0x10
imul ebx, eax
mov eax, dword [ebp - 4]
shr eax, 0x18
imul edi, eax
movzx eax, dl
shr ebx, 0x10
imul eax, ebx
shr edi, 0x10
mov dword [ebp - 0x14], edi
mov edi, 0x100
imul esi, dword [ebp - 0x14]
sub edi, dword [ebp - 0x14]
sub edi, ebx
sub edi, dword [ebp - 0x28]
sub edi, dword [ebp - 0xc]
add esi, eax
mov eax, dword [ebp - 8]
movzx eax, al
imul eax, dword [ebp - 0x28]
add esi, eax
mov eax, dword [ebp - 0x30]
movzx eax, al
imul eax, dword [ebp - 0xc]
add esi, eax
mov ecx, dword [ebp - 0x78]
mov eax, dword [ebp - 0x1c]
mov edx, dword [ebp - 4]
shr esi, cl
and edx, 0xff00
imul edx, dword [ebp - 0x14]
mov eax, dword [eax]
and eax, dword [ebp - 0x80]
imul eax, edi
mov ecx, dword [ebp - 0x7c]
shl esi, cl
mov ecx, dword [ebp - 0x84]
shr eax, 8
and eax, dword [ebp - 0x80]
add esi, eax
mov eax, dword [ebp - 0x18]
and eax, 0xff00
imul eax, ebx
add edx, eax
mov eax, dword [ebp - 8]
and eax, 0xff00
imul eax, dword [ebp - 0x28]
add edx, eax
mov eax, dword [ebp - 0x30]
and eax, 0xff00
imul eax, dword [ebp - 0xc]
add edx, eax
mov eax, dword [ebp - 0x1c]
shr edx, cl
mov ecx, dword [ebp - 0x74]
shl edx, cl
mov eax, dword [eax]
and eax, dword [ebp - 0x3c]
imul eax, edi
mov ecx, dword [ebp - 0x4c]
shr eax, 8
and eax, dword [ebp - 0x3c]
add edx, eax
mov eax, dword [ebp - 0x18]
or esi, edx
and eax, 0xff0000
mov edx, dword [ebp - 4]
imul eax, ebx
and edx, 0xff0000
imul edx, dword [ebp - 0x14]
mov ebx, dword [ebp + 0x1c]
add edx, eax
mov eax, dword [ebp - 8]
and eax, 0xff0000
imul eax, dword [ebp - 0x28]
add edx, eax
mov eax, dword [ebp - 0x30]
and eax, 0xff0000
imul eax, dword [ebp - 0xc]
add edx, eax
shr edx, cl
mov ecx, dword [ebp - 0x2c]
shl edx, cl
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ecx]
and eax, dword [ebp - 0x10]
imul eax, edi
mov edi, dword [ebp - 0x68]
shr eax, 8
and eax, dword [ebp - 0x10]
add edx, eax
or esi, edx
mov dword [ecx], esi
add ecx, 4
mov esi, dword [ebp + 0x20]
add ebx, esi
mov dword [ebp - 0x1c], ecx
mov ecx, dword [ebp + 0xc]
add ecx, edi
mov dword [ebp + 0x1c], ebx
sub dword [ebp + 0x10], 1
mov dword [ebp + 0xc], ecx
jne 0x509bf0
mov ebx, dword [ebp + 0x14]
mov eax, dword [ebp - 0x48]
mov ecx, dword [ebp - 0x24]
inc eax
add dword [ebp + 0x18], ecx
movsd xmm1, qword [ebp - 0x64]
mov dword [ebp - 0x48], eax
movd xmm0, eax
cvtdq2pd xmm0, xmm0
comisd xmm4, xmm0
ja 0x509a14
mov edi, dword [ebp - 0x70]
mov ecx, edi
mov eax, dword [edi]
call dword [eax + 0xc0]
mov ecx, edi
call fcn.00512f90
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x2c
mov eax, dword [esi + 0xc]
mov dword [ebp - 0x48], eax
mov eax, dword [esi]
inc eax
mov dword [ebp - 0x6c], eax
mov eax, dword [esi + 4]
inc eax
mov dword [ebp - 0x50], eax
mov eax, dword [esi + 8]
inc eax
mov dword [ebp - 0x24], eax
xor eax, eax
comisd xmm4, xmmword [0x5d99a8]
mov dword [ebp - 0x38], eax
jbe 0x50a2cf
cvttsd2si ecx, qword [ebp - 0xa8]
mov esi, dword [ebp + 0x20]
movsd xmm1, qword [ebp - 0x64]
movss xmm6, dword [ebp + 0x10]
movsd xmm7, qword [0x5e6630]
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
subss xmm0, dword [ebp + 0x2c]
subss xmm0, dword [ebp + 0xc]
cvtps2pd xmm3, xmm0
movsd xmm0, qword [ebp - 0x98]
subsd xmm0, qword [0x5db028]
movaps xmm5, xmm3
mulsd xmm3, xmm1
mulsd xmm5, qword [ebp - 0x5c]
cvttsd2si ecx, xmm0
mov dword [ebp - 0x20], ecx
mov ecx, dword [ebp - 0x14]
shl ecx, 2
mov dword [ebp - 0x44], ecx
nop word [eax + eax]
cvttsd2si ecx, qword [ebp - 0xa0]
add eax, ecx
xor ecx, ecx
mov dword [ebp - 0x1c], ecx
movd xmm0, eax
cvtdq2ps xmm0, xmm0
subss xmm0, dword [ebp + 0x30]
subss xmm0, xmm6
cvtps2pd xmm2, xmm0
movaps xmm0, xmm1
movaps xmm1, xmm5
mulsd xmm0, xmm2
subsd xmm1, xmm0
movss xmm0, dword [ebp + 0x2c]
cvtps2pd xmm0, xmm0
addsd xmm1, xmm0
movss xmm0, dword [ebp + 0x30]
cvtps2pd xmm0, xmm0
mulsd xmm1, xmm7
cvttsd2si eax, xmm1
movsd xmm1, qword [ebp - 0x5c]
mulsd xmm1, xmm2
mov dword [ebp + 0x1c], eax
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp + 0x1c]
mov dword [ebp + 0x10], eax
mov eax, ecx
addsd xmm1, xmm3
sar eax, 0x10
mov dword [ebp - 0x40], eax
addsd xmm1, xmm0
mulsd xmm1, xmm7
cvttsd2si edx, xmm1
mov dword [ebp - 0xc], edx
sar dword [ebp - 0xc], 0x10
mov dword [ebp + 0xc], edx
cmp esi, 0xffffffff
jg 0x509f66
test eax, eax
js 0x50a2ab
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv esi
mov ecx, eax
mov eax, 0x7fff
sub eax, dword [ebp + 0x1c]
cdq
idiv esi
xor edx, edx
test ecx, ecx
cmovs ecx, edx
jmp 0x509f9c
cmp esi, 1
jl 0x509fae
mov eax, dword [ebx + 8]
dec eax
cmp dword [ebp - 0x40], eax
jge 0x50a2ab
mov eax, 0x10000
sub eax, ecx
cdq
idiv esi
mov ecx, eax
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, dword [ebp + 0x1c]
sub eax, 0x17fff
cdq
idiv esi
xor edx, edx
test ecx, ecx
cmovle ecx, edx
cmp eax, dword [ebp + 0x10]
mov edx, dword [ebp + 0xc]
cmovge eax, dword [ebp - 0x20]
mov dword [ebp - 0x1c], ecx
mov dword [ebp + 0x10], eax
jmp 0x509fc9
test ecx, ecx
js 0x50a2ab
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jge 0x50a2ab
cmp edi, 0xffffffff
jg 0x509ff4
cmp dword [ebp - 0xc], 0
jl 0x50a2ab
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, edx
sub eax, 0x27fff
cdq
idiv edi
mov ecx, eax
mov eax, dword [ebp + 0xc]
cdq
idiv edi
neg eax
jmp 0x50a023
cmp edi, 1
jl 0x50a037
mov eax, dword [ebx + 0xc]
dec eax
cmp dword [ebp - 0xc], eax
jge 0x50a2ab
mov eax, 0x10000
sub eax, edx
cdq
idiv edi
mov ecx, eax
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, dword [ebp + 0xc]
sub eax, 0x17fff
cdq
idiv edi
cmp ecx, dword [ebp - 0x1c]
cmovle ecx, dword [ebp - 0x1c]
cmp eax, dword [ebp + 0x10]
mov edx, ecx
cmovge eax, dword [ebp + 0x10]
mov ecx, eax
jmp 0x50a058
test edx, edx
js 0x50a2ab
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp edx, eax
jge 0x50a2ab
mov edx, dword [ebp - 0x1c]
mov ecx, dword [ebp + 0x10]
mov eax, edx
imul eax, esi
add dword [ebp + 0x1c], eax
mov eax, edx
imul eax, edi
add dword [ebp + 0xc], eax
mov eax, dword [ebp + 0x18]
lea eax, [eax + edx*4]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x20]
mov dword [ebp - 0x40], eax
cmp edx, ecx
jg 0x50a2ab
mov ebx, dword [ebp + 0x1c]
sub ecx, edx
inc ecx
mov dword [ebp + 0x10], ecx
mov ecx, dword [ebp + 0xc]
nop
mov edx, ebx
mov esi, ebx
mov ebx, dword [ebp + 0x28]
mov eax, ecx
sar eax, 0x10
mov edi, ecx
imul eax, dword [ebp - 0x40]
and edi, 0xfffe
sar edx, 0x10
inc edi
and esi, 0xfffe
inc esi
add eax, dword [ebp - 0x54]
add edx, eax
movzx eax, byte [edx]
mov eax, dword [ebx + eax*4]
mov dword [ebp - 0x28], eax
movzx eax, byte [edx + 1]
mov eax, dword [ebx + eax*4]
mov dword [ebp - 8], eax
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x20]
movzx eax, byte [ecx + edx]
mov eax, dword [ebx + eax*4]
mov dword [ebp - 4], eax
movzx eax, byte [ecx + edx + 1]
mov edx, 0x10000
sub edx, esi
mov ecx, 0x10000
sub ecx, edi
mov eax, dword [ebx + eax*4]
mov ebx, edx
imul ebx, ecx
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0x28]
shr eax, 0x18
shr ebx, 0x10
imul ebx, eax
mov eax, dword [ebp - 8]
shr eax, 0x18
shr ebx, 0x10
imul ebx, dword [ebp - 0x48]
sar ebx, 8
mov dword [ebp - 0x30], ebx
mov ebx, esi
imul ebx, ecx
mov ecx, dword [ebp - 0x48]
shr ebx, 0x10
imul ebx, eax
mov eax, dword [ebp - 4]
shr eax, 0x18
shr ebx, 0x10
imul ebx, ecx
sar ebx, 8
mov dword [ebp - 0x18], ebx
mov ebx, edi
imul ebx, edx
imul edi, esi
mov edx, dword [ebp - 0xc]
movzx esi, dl
shr ebx, 0x10
imul ebx, eax
mov eax, dword [ebp - 0xc]
shr edi, 0x10
shr eax, 0x18
imul edi, eax
mov eax, dword [ebp - 4]
shr ebx, 0x10
imul ebx, ecx
movzx eax, al
shr edi, 0x10
imul edi, ecx
sar ebx, 8
sar edi, 8
mov dword [ebp - 0x14], edi
mov edi, 0x100
sub edi, ebx
sub edi, dword [ebp - 0x18]
sub edi, dword [ebp - 0x30]
sub edi, dword [ebp - 0x14]
imul esi, dword [ebp - 0x14]
imul eax, ebx
and edx, 0xff00
imul edx, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x78]
add esi, eax
mov eax, dword [ebp - 8]
movzx eax, al
imul eax, dword [ebp - 0x18]
add esi, eax
mov eax, dword [ebp - 0x28]
movzx eax, al
imul eax, dword [ebp - 0x30]
add esi, eax
mov eax, dword [ebp - 0x1c]
shr esi, 8
imul esi, dword [ebp - 0x24]
mov eax, dword [eax]
and eax, dword [ebp - 0x80]
imul eax, edi
shr esi, cl
mov ecx, dword [ebp - 0x7c]
shl esi, cl
mov ecx, dword [ebp - 0x84]
shr eax, 8
and eax, dword [ebp - 0x80]
add esi, eax
mov eax, dword [ebp - 4]
and eax, 0xff00
imul eax, ebx
add edx, eax
mov eax, dword [ebp - 8]
and eax, 0xff00
imul eax, dword [ebp - 0x18]
add edx, eax
mov eax, dword [ebp - 0x28]
and eax, 0xff00
imul eax, dword [ebp - 0x30]
add edx, eax
mov eax, dword [ebp - 0x1c]
shr edx, 8
imul edx, dword [ebp - 0x50]
mov eax, dword [eax]
and eax, dword [ebp - 0x3c]
imul eax, edi
shr edx, cl
mov ecx, dword [ebp - 0x74]
shl edx, cl
mov ecx, dword [ebp - 0x4c]
shr eax, 8
and eax, dword [ebp - 0x3c]
add edx, eax
mov eax, dword [ebp - 4]
or esi, edx
and eax, 0xff0000
mov edx, dword [ebp - 0xc]
imul eax, ebx
and edx, 0xff0000
imul edx, dword [ebp - 0x14]
add edx, eax
mov eax, dword [ebp - 8]
and eax, 0xff0000
imul eax, dword [ebp - 0x18]
add edx, eax
mov eax, dword [ebp - 0x28]
and eax, 0xff0000
imul eax, dword [ebp - 0x30]
add edx, eax
shr edx, 8
imul edx, dword [ebp - 0x6c]
shr edx, cl
mov ecx, dword [ebp - 0x2c]
shl edx, cl
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ecx]
and eax, dword [ebp - 0x10]
imul eax, edi
shr eax, 8
and eax, dword [ebp - 0x10]
add edx, eax
or esi, edx
mov dword [ecx], esi
mov ebx, dword [ebp + 0x1c]
add ecx, 4
mov esi, dword [ebp + 0x20]
add ebx, esi
mov edi, dword [ebp - 0x68]
mov dword [ebp - 0x1c], ecx
mov ecx, dword [ebp + 0xc]
add ecx, edi
mov dword [ebp + 0x1c], ebx
sub dword [ebp + 0x10], 1
mov dword [ebp + 0xc], ecx
jne 0x50a090
mov ebx, dword [ebp + 0x14]
mov eax, dword [ebp - 0x38]
mov ecx, dword [ebp - 0x44]
inc eax
add dword [ebp + 0x18], ecx
movsd xmm1, qword [ebp - 0x64]
mov dword [ebp - 0x38], eax
movd xmm0, eax
cvtdq2pd xmm0, xmm0
comisd xmm4, xmm0
ja 0x509eb0
mov edi, dword [ebp - 0x70]
mov ecx, edi
mov eax, dword [edi]
call dword [eax + 0xc0]
mov ecx, edi
call fcn.00512f90
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x2c
test ecx, ecx
mov ecx, edi
jne 0x50ae37
call fcn.0051a4f0
mov edx, dword [edi]
mov esi, eax
imul esi, dword [ebx + 4]
mov ecx, edi
add esi, dword [ebx]
shl esi, 2
call dword [edx + 0x7c]
movsd xmm0, qword [ebp - 0x5c]
add eax, esi
mulsd xmm0, qword [0x5e6630]
mov edi, dword [ebp - 0x70]
mov ecx, edi
mov dword [ebp - 0x2c], eax
cvttsd2si eax, xmm0
movsd xmm0, qword [ebp - 0x64]
mulsd xmm0, qword [0x5e6630]
mov dword [ebp + 0x20], eax
cvttsd2si eax, xmm0
mov dword [ebp + 0x18], eax
mov eax, dword [edi]
mov eax, dword [eax + 0xbc]
call eax
test al, al
je 0x50b98a
mov eax, dword [edi + 0x68]
mov ecx, dword [eax + 0xc0]
mov dword [ebp - 0x7c], ecx
mov ecx, dword [eax + 0xc4]
mov dword [ebp - 0x54], ecx
mov ecx, dword [eax + 0xc8]
mov dword [ebp - 0x28], ecx
mov ecx, dword [eax + 0x20]
mov dword [ebp - 0x78], ecx
mov ecx, dword [eax + 0x24]
mov dword [ebp - 0x3c], ecx
mov ecx, dword [eax + 0x28]
mov dword [ebp - 0x74], ecx
mov ecx, 0x20
sub ecx, dword [eax + 0x14]
mov dword [ebp - 0x4c], ecx
mov ecx, 0x18
sub ecx, dword [eax + 0x18]
mov dword [ebp - 0x30], ecx
mov ecx, 0x10
sub ecx, dword [eax + 0x1c]
mov eax, dword [edi + 0xd4]
mov dword [ebp - 0x1c], eax
mov eax, dword [edi + 0xd8]
mov dword [ebp - 0x68], eax
mov eax, dword [edi + 0xdc]
mov dword [ebp - 0x84], eax
mov eax, dword [edi + 0xd0]
mov dword [ebp - 0x80], ecx
cmp eax, 0x10
jne 0x50a8fc
cvttsd2si eax, qword [ebp - 0xa0]
mov esi, dword [edi + 0x8c]
cvttsd2si ecx, qword [ebp - 0xa8]
imul eax, esi
movsd xmm5, qword [ebp - 0x90]
cdq
sub eax, edx
sar eax, 1
add eax, ecx
mov ecx, dword [edi + 0xa0]
lea eax, [ecx + eax*2]
mov dword [ebp - 8], eax
mov eax, esi
mov esi, dword [ebp + 0x1c]
cdq
sub eax, edx
sar eax, 1
mov edi, dword [esi + 0xc]
mov ecx, dword [esi]
mov dword [ebp + 0x28], eax
mov eax, 0x80808081
imul ecx, edi
imul ecx
add edx, ecx
mov ecx, dword [esi + 4]
sar edx, 7
mov eax, edx
imul ecx, edi
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x88], eax
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [esi + 8]
sar edx, 7
mov eax, edx
imul ecx, edi
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x24], eax
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x50], eax
xor eax, eax
comisd xmm5, xmmword [0x5d99a8]
mov dword [ebp - 0x38], eax
jbe 0x50ae1a
cvttsd2si ecx, qword [ebp - 0xa8]
movsd xmm1, qword [ebp - 0x64]
movss xmm7, dword [ebp + 0x10]
movsd xmm6, qword [0x5e6630]
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
mov ecx, dword [ebp + 0x28]
add ecx, ecx
mov dword [ebp - 0x6c], ecx
mov ecx, dword [ebp + 0x20]
subss xmm0, dword [ebp + 0x2c]
subss xmm0, dword [ebp + 0xc]
cvtps2pd xmm3, xmm0
movsd xmm0, qword [ebp - 0x98]
subsd xmm0, qword [0x5db028]
movaps xmm4, xmm3
mulsd xmm3, xmm1
mulsd xmm4, qword [ebp - 0x5c]
cvttsd2si edi, xmm0
mov dword [ebp - 0x10], edi
nop dword [eax + eax]
cvttsd2si edx, qword [ebp - 0xa0]
xor esi, esi
add eax, edx
movd xmm0, eax
cvtdq2ps xmm0, xmm0
subss xmm0, dword [ebp + 0x30]
subss xmm0, xmm7
cvtps2pd xmm2, xmm0
movaps xmm0, xmm1
movaps xmm1, xmm4
mulsd xmm0, xmm2
subsd xmm1, xmm0
movss xmm0, dword [ebp + 0x2c]
cvtps2pd xmm0, xmm0
addsd xmm1, xmm0
movss xmm0, dword [ebp + 0x30]
cvtps2pd xmm0, xmm0
mulsd xmm1, xmm6
cvttsd2si eax, xmm1
movsd xmm1, qword [ebp - 0x5c]
mulsd xmm1, xmm2
mov dword [ebp + 0x1c], eax
sar dword [ebp + 0x1c], 0x10
mov dword [ebp + 0x10], eax
addsd xmm1, xmm3
addsd xmm1, xmm0
mulsd xmm1, xmm6
cvttsd2si edx, xmm1
mov dword [ebp + 0x28], edx
sar dword [ebp + 0x28], 0x10
mov dword [ebp + 0xc], edx
cmp ecx, 0xffffffff
jg 0x50a596
cmp dword [ebp + 0x1c], esi
jl 0x50a8b8
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, dword [ebp + 0x10]
sub eax, 0x27fff
cdq
idiv ecx
mov esi, eax
mov eax, 0x7fff
sub eax, dword [ebp + 0x10]
cdq
idiv ecx
mov edx, dword [ebp + 0xc]
xor ecx, ecx
test esi, esi
cmovs esi, ecx
cmp eax, edi
cmovge eax, dword [ebp - 0x10]
mov edi, eax
jmp 0x50a5f6
cmp ecx, 1
jl 0x50a5da
mov eax, dword [ebx + 8]
dec eax
cmp dword [ebp + 0x1c], eax
jge 0x50a8b8
mov eax, 0x10000
sub eax, dword [ebp + 0x10]
cdq
idiv ecx
mov esi, eax
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, dword [ebp + 0x10]
sub eax, 0x17fff
cdq
idiv ecx
mov edx, dword [ebp + 0xc]
xor ecx, ecx
test esi, esi
cmovle esi, ecx
cmp eax, edi
cmovge eax, dword [ebp - 0x10]
mov edi, eax
jmp 0x50a5f6
test eax, eax
js 0x50a8b8
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, 0x10000
cmp dword [ebp + 0x10], eax
jge 0x50a8b8
mov ecx, dword [ebp + 0x18]
cmp ecx, 0xffffffff
jg 0x50a639
cmp dword [ebp + 0x28], 0
jl 0x50a8b5
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, edx
sub eax, 0x27fff
cdq
idiv ecx
mov ecx, eax
mov eax, dword [ebp + 0xc]
cdq
idiv dword [ebp + 0x18]
mov edx, dword [ebp + 0xc]
neg eax
cmp ecx, esi
cmovle ecx, esi
cmp eax, edi
mov esi, ecx
mov ecx, dword [ebp + 0x18]
cmovge eax, edi
mov edi, eax
jmp 0x50a69a
cmp ecx, 1
jl 0x50a67f
mov eax, dword [ebx + 0xc]
dec eax
cmp dword [ebp + 0x28], eax
jge 0x50a8b5
mov eax, 0x10000
sub eax, edx
cdq
idiv ecx
mov ecx, eax
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, dword [ebp + 0xc]
sub eax, 0x17fff
cdq
idiv dword [ebp + 0x18]
mov edx, dword [ebp + 0xc]
cmp ecx, esi
cmovle ecx, esi
cmp eax, edi
mov esi, ecx
mov ecx, dword [ebp + 0x18]
cmovge eax, edi
mov edi, eax
jmp 0x50a69a
test edx, edx
js 0x50a8b5
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp edx, eax
jge 0x50a8b5
mov eax, esi
imul eax, dword [ebp + 0x20]
add dword [ebp + 0x10], eax
mov eax, esi
imul eax, ecx
add edx, eax
mov eax, dword [ebp - 8]
mov dword [ebp + 0xc], edx
lea eax, [eax + esi*2]
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x20]
mov dword [ebp - 0x40], eax
cmp esi, edi
jg 0x50a8b5
mov ebx, dword [ebp + 0x10]
sub edi, esi
inc edi
mov dword [ebp - 0x48], edi
mov ecx, edx
mov eax, ebx
sar eax, 0x10
mov esi, ebx
sar ecx, 0x10
mov edi, edx
imul ecx, dword [ebp - 0x40]
and edi, 0xfffe
inc edi
and esi, 0xfffe
inc esi
add ecx, eax
mov eax, dword [ebp - 0x2c]
lea ecx, [eax + ecx*4]
mov eax, dword [ecx]
mov dword [ebp - 0xc], eax
mov eax, dword [ecx + 4]
mov dword [ebp + 0x28], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x20]
mov edx, dword [ecx + eax*4]
mov eax, dword [ecx + eax*4 + 4]
mov ecx, 0x10000
mov dword [ebp + 0x1c], edx
sub ecx, edi
mov dword [ebp - 0x20], eax
mov edx, 0x10000
mov eax, dword [ebp - 0xc]
sub edx, esi
shr eax, 0x18
mov ebx, edx
imul ebx, ecx
shr ebx, 0x10
imul ebx, eax
mov eax, dword [ebp + 0x28]
shr eax, 0x18
shr ebx, 0x10
mov dword [ebp - 0x34], ebx
mov ebx, esi
imul ebx, ecx
mov ecx, dword [ebp - 0x4c]
shr ebx, 0x10
imul ebx, eax
mov eax, dword [ebp + 0x1c]
shr eax, 0x18
shr ebx, 0x10
mov dword [ebp - 0x18], ebx
mov ebx, edi
imul ebx, edx
mov edx, dword [ebp - 0x20]
imul edi, esi
and edx, 0xff0000
shr ebx, 0x10
imul ebx, eax
mov eax, dword [ebp - 0x20]
shr eax, 0x18
shr edi, 0x10
imul edi, eax
mov eax, dword [ebp - 4]
shr ebx, 0x10
shr edi, 0x10
mov dword [ebp - 0x14], edi
movzx edi, word [eax]
imul edx, dword [ebp - 0x14]
mov eax, dword [ebp + 0x1c]
and eax, 0xff0000
imul eax, ebx
add edx, eax
mov eax, dword [ebp + 0x28]
and eax, 0xff0000
imul eax, dword [ebp - 0x18]
add edx, eax
mov eax, dword [ebp - 0xc]
and eax, 0xff0000
imul eax, dword [ebp - 0x34]
add edx, eax
mov eax, edi
shr edx, cl
imul edx, dword [ebp - 0x88]
shr edx, 8
and eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x78]
shr eax, cl
add edx, eax
mov eax, dword [ebp - 0x7c]
mov si, word [eax + edx*4]
mov edx, dword [ebp - 0x20]
mov eax, dword [ebp + 0x1c]
and edx, 0xff00
imul edx, dword [ebp - 0x14]
and eax, 0xff00
imul eax, ebx
shl si, cl
mov ecx, dword [ebp - 0x30]
add edx, eax
mov eax, dword [ebp + 0x28]
and eax, 0xff00
lea ecx, [ecx + 8]
imul eax, dword [ebp - 0x18]
add edx, eax
mov eax, dword [ebp - 0xc]
and eax, 0xff00
imul eax, dword [ebp - 0x34]
add edx, eax
mov eax, edi
and eax, dword [ebp - 0x68]
imul edx, dword [ebp - 0x24]
and edi, dword [ebp - 0x84]
shr edx, cl
mov ecx, dword [ebp - 0x3c]
shr eax, cl
add edx, eax
mov eax, dword [ebp - 0x54]
movzx eax, word [eax + edx*4]
shl ax, cl
or si, ax
mov ecx, dword [ebp - 0x80]
mov eax, dword [ebp - 0x20]
movzx edx, al
imul edx, dword [ebp - 0x14]
mov eax, dword [ebp + 0x1c]
lea ecx, [ecx + 8]
movzx eax, al
imul eax, ebx
mov ebx, dword [ebp + 0x10]
add ebx, dword [ebp + 0x20]
mov dword [ebp + 0x10], ebx
add edx, eax
mov eax, dword [ebp + 0x28]
movzx eax, al
imul eax, dword [ebp - 0x18]
add edx, eax
mov eax, dword [ebp - 0xc]
movzx eax, al
imul eax, dword [ebp - 0x34]
add edx, eax
mov eax, dword [ebp - 0x28]
imul edx, dword [ebp - 0x50]
shr edx, cl
mov ecx, dword [ebp - 0x74]
shr edi, cl
add edx, edi
movzx eax, word [eax + edx*4]
mov edx, dword [ebp + 0xc]
add edx, dword [ebp + 0x18]
shl ax, cl
or si, ax
mov dword [ebp + 0xc], edx
mov eax, dword [ebp - 4]
mov word [eax], si
add eax, 2
sub dword [ebp - 0x48], 1
mov dword [ebp - 4], eax
jne 0x50a6d0
mov ebx, dword [ebp + 0x14]
mov ecx, dword [ebp + 0x20]
mov eax, dword [ebp - 0x38]
mov edx, dword [ebp - 0x6c]
inc eax
add dword [ebp - 8], edx
movsd xmm1, qword [ebp - 0x64]
mov edi, dword [ebp - 0x10]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mov dword [ebp - 0x38], eax
comisd xmm5, xmm0
ja 0x50a4e0
mov edi, dword [ebp - 0x70]
mov ecx, edi
mov eax, dword [edi]
call dword [eax + 0xc0]
mov ecx, edi
call fcn.00512f90
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x2c
cmp eax, 0x20
jne 0x50ae1d
cvttsd2si eax, qword [ebp - 0xa0]
mov esi, dword [edi + 0x8c]
cvttsd2si ecx, qword [ebp - 0xa8]
imul eax, esi
movsd xmm5, qword [ebp - 0x90]
cdq
and edx, 3
add eax, edx
sar eax, 2
add eax, ecx
mov ecx, dword [edi + 0xa0]
lea eax, [ecx + eax*4]
mov dword [ebp - 8], eax
mov eax, esi
mov esi, dword [ebp + 0x1c]
cdq
and edx, 3
add eax, edx
mov edi, dword [esi + 0xc]
mov ecx, dword [esi]
sar eax, 2
mov dword [ebp + 0x28], eax
mov eax, 0x80808081
imul ecx, edi
imul ecx
add edx, ecx
mov ecx, dword [esi + 4]
sar edx, 7
mov eax, edx
imul ecx, edi
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x88], eax
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [esi + 8]
sar edx, 7
mov eax, edx
imul ecx, edi
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x50], eax
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x24], eax
xor eax, eax
comisd xmm5, xmmword [0x5d99a8]
mov dword [ebp - 0x38], eax
jbe 0x50ae1a
cvttsd2si ecx, qword [ebp - 0xa8]
movsd xmm1, qword [ebp - 0x64]
movss xmm7, dword [ebp + 0x10]
movsd xmm6, qword [0x5e6630]
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
mov ecx, dword [ebp + 0x28]
shl ecx, 2
mov dword [ebp - 0x6c], ecx
mov ecx, dword [ebp + 0x20]
subss xmm0, dword [ebp + 0x2c]
subss xmm0, dword [ebp + 0xc]
cvtps2pd xmm3, xmm0
movsd xmm0, qword [ebp - 0x98]
subsd xmm0, qword [0x5db028]
movaps xmm4, xmm3
mulsd xmm3, xmm1
mulsd xmm4, qword [ebp - 0x5c]
cvttsd2si edi, xmm0
mov dword [ebp - 0x10], edi
nop word [eax + eax]
cvttsd2si edx, qword [ebp - 0xa0]
xor esi, esi
add eax, edx
movd xmm0, eax
cvtdq2ps xmm0, xmm0
subss xmm0, dword [ebp + 0x30]
subss xmm0, xmm7
cvtps2pd xmm2, xmm0
movaps xmm0, xmm1
movaps xmm1, xmm4
mulsd xmm0, xmm2
subsd xmm1, xmm0
movss xmm0, dword [ebp + 0x2c]
cvtps2pd xmm0, xmm0
addsd xmm1, xmm0
movss xmm0, dword [ebp + 0x30]
cvtps2pd xmm0, xmm0
mulsd xmm1, xmm6
cvttsd2si eax, xmm1
movsd xmm1, qword [ebp - 0x5c]
mulsd xmm1, xmm2
mov dword [ebp + 0x1c], eax
sar dword [ebp + 0x1c], 0x10
mov dword [ebp + 0x10], eax
addsd xmm1, xmm3
addsd xmm1, xmm0
mulsd xmm1, xmm6
cvttsd2si edx, xmm1
mov dword [ebp + 0x28], edx
sar dword [ebp + 0x28], 0x10
mov dword [ebp + 0xc], edx
cmp ecx, 0xffffffff
jg 0x50aad6
cmp dword [ebp + 0x1c], esi
jl 0x50adf3
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, dword [ebp + 0x10]
sub eax, 0x27fff
cdq
idiv ecx
mov esi, eax
mov eax, 0x7fff
sub eax, dword [ebp + 0x10]
cdq
idiv ecx
mov edx, dword [ebp + 0xc]
xor ecx, ecx
test esi, esi
cmovs esi, ecx
cmp eax, edi
cmovge eax, dword [ebp - 0x10]
mov edi, eax
jmp 0x50ab36
cmp ecx, 1
jl 0x50ab1a
mov eax, dword [ebx + 8]
dec eax
cmp dword [ebp + 0x1c], eax
jge 0x50adf3
mov eax, 0x10000
sub eax, dword [ebp + 0x10]
cdq
idiv ecx
mov esi, eax
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, dword [ebp + 0x10]
sub eax, 0x17fff
cdq
idiv ecx
mov edx, dword [ebp + 0xc]
xor ecx, ecx
test esi, esi
cmovle esi, ecx
cmp eax, edi
cmovge eax, dword [ebp - 0x10]
mov edi, eax
jmp 0x50ab36
test eax, eax
js 0x50adf3
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, 0x10000
cmp dword [ebp + 0x10], eax
jge 0x50adf3
mov ecx, dword [ebp + 0x18]
cmp ecx, 0xffffffff
jg 0x50ab79
cmp dword [ebp + 0x28], 0
jl 0x50adf0
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, edx
sub eax, 0x27fff
cdq
idiv ecx
mov ecx, eax
mov eax, dword [ebp + 0xc]
cdq
idiv dword [ebp + 0x18]
mov edx, dword [ebp + 0xc]
neg eax
cmp ecx, esi
cmovle ecx, esi
cmp eax, edi
mov esi, ecx
mov ecx, dword [ebp + 0x18]
cmovge eax, edi
mov edi, eax
jmp 0x50abda
cmp ecx, 1
jl 0x50abbf
mov eax, dword [ebx + 0xc]
dec eax
cmp dword [ebp + 0x28], eax
jge 0x50adf0
mov eax, 0x10000
sub eax, edx
cdq
idiv ecx
mov ecx, eax
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, dword [ebp + 0xc]
sub eax, 0x17fff
cdq
idiv dword [ebp + 0x18]
mov edx, dword [ebp + 0xc]
cmp ecx, esi
cmovle ecx, esi
cmp eax, edi
mov esi, ecx
mov ecx, dword [ebp + 0x18]
cmovge eax, edi
mov edi, eax
jmp 0x50abda
test edx, edx
js 0x50adf0
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp edx, eax
jge 0x50adf0
mov eax, esi
imul eax, dword [ebp + 0x20]
add dword [ebp + 0x10], eax
mov eax, esi
imul eax, ecx
add edx, eax
mov eax, dword [ebp - 8]
mov dword [ebp + 0xc], edx
lea eax, [eax + esi*4]
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x20]
mov dword [ebp - 0x40], eax
cmp esi, edi
jg 0x50adf0
mov ebx, dword [ebp + 0x10]
sub edi, esi
inc edi
mov dword [ebp - 0x48], edi
mov eax, ebx
mov ecx, edx
sar eax, 0x10
mov esi, ebx
sar ecx, 0x10
mov ebx, edx
imul ecx, dword [ebp - 0x40]
and ebx, 0xfffe
inc ebx
and esi, 0xfffe
mov dword [ebp + 0x1c], ebx
inc esi
add ecx, eax
mov eax, dword [ebp - 0x2c]
lea ecx, [eax + ecx*4]
mov eax, dword [ecx]
mov dword [ebp - 0xc], eax
mov eax, dword [ecx + 4]
mov dword [ebp + 0x28], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x20]
mov edx, dword [ecx + eax*4]
mov eax, dword [ecx + eax*4 + 4]
mov ecx, 0x10000
sub ecx, ebx
mov dword [ebp - 0x14], edx
mov dword [ebp - 0x20], eax
mov edx, 0x10000
mov eax, dword [ebp - 0xc]
sub edx, esi
mov ebx, edx
shr eax, 0x18
imul ebx, ecx
shr ebx, 0x10
imul ebx, eax
mov eax, dword [ebp + 0x28]
shr eax, 0x18
shr ebx, 0x10
mov dword [ebp - 0x34], ebx
mov ebx, esi
imul ebx, ecx
mov ecx, dword [ebp - 0x14]
shr ebx, 0x10
imul ebx, eax
mov eax, ecx
shr eax, 0x18
and ecx, 0xff0000
shr ebx, 0x10
mov dword [ebp - 0x18], ebx
mov ebx, dword [ebp + 0x1c]
mov edi, ebx
imul edi, edx
mov edx, dword [ebp - 0x20]
imul ebx, esi
shr edi, 0x10
imul edi, eax
mov eax, edx
shr eax, 0x18
and edx, 0xff0000
shr ebx, 0x10
imul ebx, eax
mov eax, dword [ebp + 0x28]
and eax, 0xff0000
shr edi, 0x10
imul eax, dword [ebp - 0x18]
imul ecx, edi
shr ebx, 0x10
mov dword [ebp + 0x1c], ebx
imul edx, dword [ebp + 0x1c]
mov ebx, dword [ebp - 4]
mov ebx, dword [ebx]
add edx, ecx
mov ecx, dword [ebp - 0x4c]
add edx, eax
mov eax, dword [ebp - 0xc]
and eax, 0xff0000
imul eax, dword [ebp - 0x34]
add edx, eax
shr edx, cl
imul edx, dword [ebp - 0x88]
shr edx, 8
mov ecx, dword [ebp - 0x78]
mov eax, ebx
and eax, dword [ebp - 0x1c]
shr eax, cl
add edx, eax
mov eax, dword [ebp - 0x7c]
mov esi, dword [eax + edx*4]
mov eax, dword [ebp - 0x20]
movzx edx, al
imul edx, dword [ebp + 0x1c]
mov eax, dword [ebp - 0x14]
movzx eax, al
imul eax, edi
shl esi, cl
mov ecx, dword [ebp - 0x80]
add edx, eax
mov eax, dword [ebp + 0x28]
movzx eax, al
lea ecx, [ecx + 8]
imul eax, dword [ebp - 0x18]
add edx, eax
mov eax, dword [ebp - 0xc]
movzx eax, al
imul eax, dword [ebp - 0x34]
add edx, eax
mov eax, ebx
imul edx, dword [ebp - 0x24]
and eax, dword [ebp - 0x84]
and ebx, dword [ebp - 0x68]
shr edx, cl
mov ecx, dword [ebp - 0x74]
shr eax, cl
add edx, eax
mov eax, dword [ebp - 0x28]
mov eax, dword [eax + edx*4]
mov edx, dword [ebp - 0x20]
shl eax, cl
and edx, 0xff00
imul edx, dword [ebp + 0x1c]
or esi, eax
mov eax, dword [ebp - 0x14]
and eax, 0xff00
mov ecx, dword [ebp - 0x30]
imul eax, edi
lea ecx, [ecx + 8]
add edx, eax
mov eax, dword [ebp + 0x28]
and eax, 0xff00
imul eax, dword [ebp - 0x18]
add edx, eax
mov eax, dword [ebp - 0xc]
and eax, 0xff00
imul eax, dword [ebp - 0x34]
add edx, eax
mov eax, dword [ebp - 0x54]
imul edx, dword [ebp - 0x50]
shr edx, cl
mov ecx, dword [ebp - 0x3c]
shr ebx, cl
add edx, ebx
mov ebx, dword [ebp + 0x10]
add ebx, dword [ebp + 0x20]
mov dword [ebp + 0x10], ebx
mov eax, dword [eax + edx*4]
mov edx, dword [ebp + 0xc]
add edx, dword [ebp + 0x18]
shl eax, cl
or esi, eax
mov dword [ebp + 0xc], edx
mov eax, dword [ebp - 4]
mov dword [eax], esi
add eax, 4
sub dword [ebp - 0x48], 1
mov dword [ebp - 4], eax
jne 0x50ac10
mov ebx, dword [ebp + 0x14]
mov ecx, dword [ebp + 0x20]
mov eax, dword [ebp - 0x38]
mov edx, dword [ebp - 0x6c]
inc eax
add dword [ebp - 8], edx
movsd xmm1, qword [ebp - 0x64]
mov edi, dword [ebp - 0x10]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mov dword [ebp - 0x38], eax
comisd xmm5, xmm0
ja 0x50aa20
mov edi, dword [ebp - 0x70]
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0xc0]
mov ecx, edi
call fcn.00512f90
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x2c
call fcn.0051a4f0
imul eax, dword [ebx + 4]
movsd xmm0, qword [ebp - 0x5c]
mulsd xmm0, qword [0x5e6630]
add eax, dword [edi + 0x48]
add eax, dword [ebx]
mov edi, dword [ebp - 0x70]
mov ecx, edi
mov dword [ebp - 0x4c], eax
cvttsd2si eax, xmm0
movsd xmm0, qword [ebp - 0x64]
mulsd xmm0, qword [0x5e6630]
mov dword [ebp + 0x20], eax
cvttsd2si eax, xmm0
mov dword [ebp + 0x18], eax
mov eax, dword [edi]
mov eax, dword [eax + 0xbc]
call eax
test al, al
je 0x50b98a
mov eax, dword [edi + 0x68]
mov ecx, dword [eax + 0xc0]
mov dword [ebp - 0x80], ecx
mov ecx, dword [eax + 0xc4]
mov dword [ebp - 0x44], ecx
mov ecx, dword [eax + 0xc8]
mov dword [ebp - 0x30], ecx
mov ecx, dword [eax + 0x20]
mov dword [ebp - 0x7c], ecx
mov ecx, dword [eax + 0x24]
mov dword [ebp - 0x54], ecx
mov ecx, dword [eax + 0x28]
mov dword [ebp - 0x28], ecx
mov ecx, 0x20
sub ecx, dword [eax + 0x14]
mov dword [ebp - 0x1c], ecx
mov ecx, 0x18
sub ecx, dword [eax + 0x18]
mov dword [ebp - 0x68], ecx
mov ecx, 0x10
sub ecx, dword [eax + 0x1c]
mov eax, dword [edi + 0xd4]
mov dword [ebp - 0x78], eax
mov eax, dword [edi + 0xd8]
mov dword [ebp - 0x3c], eax
mov eax, dword [edi + 0xdc]
mov dword [ebp - 0x74], eax
mov eax, dword [edi + 0xd0]
mov dword [ebp - 0x84], ecx
cmp eax, 0x10
jne 0x50b43a
cvttsd2si eax, qword [ebp - 0xa0]
mov esi, dword [edi + 0x8c]
cvttsd2si ecx, qword [ebp - 0xa8]
imul eax, esi
movsd xmm5, qword [ebp - 0x90]
cdq
sub eax, edx
sar eax, 1
add eax, ecx
mov ecx, dword [edi + 0xa0]
lea eax, [ecx + eax*2]
mov dword [ebp - 0x10], eax
mov eax, esi
mov esi, dword [ebp + 0x1c]
cdq
sub eax, edx
sar eax, 1
mov edi, dword [esi + 0xc]
mov ecx, dword [esi]
mov dword [ebp - 0x40], eax
mov eax, 0x80808081
imul ecx, edi
imul ecx
add edx, ecx
mov ecx, dword [esi + 4]
sar edx, 7
mov eax, edx
imul ecx, edi
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x88], eax
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [esi + 8]
sar edx, 7
mov eax, edx
imul ecx, edi
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x50], eax
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x24], eax
xor eax, eax
comisd xmm5, xmmword [0x5d99a8]
mov dword [ebp - 0x38], eax
jbe 0x50b963
cvttsd2si ecx, qword [ebp - 0xa8]
movsd xmm1, qword [ebp - 0x64]
movsd xmm3, qword [ebp - 0x5c]
movaps xmm4, xmm1
movss xmm6, dword [ebp + 0x10]
movsd xmm7, qword [0x5e6630]
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
mov ecx, dword [ebp - 0x40]
add ecx, ecx
mov dword [ebp - 0x6c], ecx
mov ecx, dword [ebp + 0x20]
subss xmm0, dword [ebp + 0x2c]
subss xmm0, dword [ebp + 0xc]
cvtps2pd xmm0, xmm0
mulsd xmm3, xmm0
mulsd xmm4, xmm0
movsd xmm0, qword [ebp - 0x98]
subsd xmm0, qword [0x5db028]
cvttsd2si edi, xmm0
mov dword [ebp - 0x2c], edi
cvttsd2si edx, qword [ebp - 0xa0]
xor esi, esi
add eax, edx
movd xmm0, eax
cvtdq2ps xmm0, xmm0
subss xmm0, dword [ebp + 0x30]
subss xmm0, xmm6
cvtps2pd xmm2, xmm0
movaps xmm0, xmm1
movaps xmm1, xmm3
mulsd xmm0, xmm2
subsd xmm1, xmm0
movss xmm0, dword [ebp + 0x2c]
cvtps2pd xmm0, xmm0
addsd xmm1, xmm0
movss xmm0, dword [ebp + 0x30]
cvtps2pd xmm0, xmm0
mulsd xmm1, xmm7
cvttsd2si eax, xmm1
movsd xmm1, qword [ebp - 0x5c]
mulsd xmm1, xmm2
mov dword [ebp + 0x1c], eax
sar dword [ebp + 0x1c], 0x10
mov dword [ebp + 0x10], eax
addsd xmm1, xmm4
addsd xmm1, xmm0
mulsd xmm1, xmm7
cvttsd2si edx, xmm1
mov dword [ebp - 0xc], edx
sar dword [ebp - 0xc], 0x10
mov dword [ebp + 0xc], edx
cmp ecx, 0xffffffff
jg 0x50b0c8
cmp dword [ebp + 0x1c], esi
jl 0x50b3f6
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, dword [ebp + 0x10]
sub eax, 0x27fff
cdq
idiv ecx
mov esi, eax
mov eax, 0x7fff
sub eax, dword [ebp + 0x10]
cdq
idiv ecx
mov edx, dword [ebp + 0xc]
xor ecx, ecx
test esi, esi
cmovs esi, ecx
cmp eax, edi
cmovge eax, dword [ebp - 0x2c]
mov edi, eax
jmp 0x50b128
cmp ecx, 1
jl 0x50b10c
mov eax, dword [ebx + 8]
dec eax
cmp dword [ebp + 0x1c], eax
jge 0x50b3f6
mov eax, 0x10000
sub eax, dword [ebp + 0x10]
cdq
idiv ecx
mov esi, eax
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, dword [ebp + 0x10]
sub eax, 0x17fff
cdq
idiv ecx
mov edx, dword [ebp + 0xc]
xor ecx, ecx
test esi, esi
cmovle esi, ecx
cmp eax, edi
cmovge eax, dword [ebp - 0x2c]
mov edi, eax
jmp 0x50b128
test eax, eax
js 0x50b3f6
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, 0x10000
cmp dword [ebp + 0x10], eax
jge 0x50b3f6
mov ecx, dword [ebp + 0x18]
cmp ecx, 0xffffffff
jg 0x50b16b
cmp dword [ebp - 0xc], 0
jl 0x50b3f3
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, edx
sub eax, 0x27fff
cdq
idiv ecx
mov ecx, eax
mov eax, dword [ebp + 0xc]
cdq
idiv dword [ebp + 0x18]
mov edx, dword [ebp + 0xc]
neg eax
cmp ecx, esi
cmovle ecx, esi
cmp eax, edi
mov esi, ecx
mov ecx, dword [ebp + 0x18]
cmovge eax, edi
mov edi, eax
jmp 0x50b1cc
cmp ecx, 1
jl 0x50b1b1
mov eax, dword [ebx + 0xc]
dec eax
cmp dword [ebp - 0xc], eax
jge 0x50b3f3
mov eax, 0x10000
sub eax, edx
cdq
idiv ecx
mov ecx, eax
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, dword [ebp + 0xc]
sub eax, 0x17fff
cdq
idiv dword [ebp + 0x18]
mov edx, dword [ebp + 0xc]
cmp ecx, esi
cmovle ecx, esi
cmp eax, edi
mov esi, ecx
mov ecx, dword [ebp + 0x18]
cmovge eax, edi
mov edi, eax
jmp 0x50b1cc
test edx, edx
js 0x50b3f3
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp edx, eax
jge 0x50b3f3
mov eax, dword [ebp + 0x20]
imul eax, esi
imul ecx, esi
add dword [ebp + 0x10], eax
mov eax, dword [ebp - 0x10]
add edx, ecx
mov ecx, dword [ebp + 8]
mov dword [ebp + 0xc], edx
lea eax, [eax + esi*2]
mov dword [ebp - 8], eax
mov eax, dword [ecx + 0x20]
mov dword [ebp - 0x40], eax
cmp esi, edi
jg 0x50b3f3
mov ebx, dword [ebp + 0x10]
sub edi, esi
inc edi
mov dword [ebp - 0x48], edi
mov eax, edx
mov ecx, dword [ecx + 0x20]
sar eax, 0x10
mov edx, ebx
imul eax, dword [ebp - 0x40]
mov esi, ebx
mov ebx, dword [ebp + 0x28]
and esi, 0xfffe
sar edx, 0x10
inc esi
mov edi, dword [ebp + 0xc]
and edi, 0xfffe
add eax, dword [ebp - 0x4c]
inc edi
add edx, eax
movzx eax, byte [edx]
mov eax, dword [ebx + eax*4]
mov dword [ebp - 0xc], eax
movzx eax, byte [edx + 1]
mov eax, dword [ebx + eax*4]
mov dword [ebp + 0x1c], eax
movzx eax, byte [ecx + edx]
mov eax, dword [ebx + eax*4]
mov dword [ebp - 0x18], eax
movzx eax, byte [ecx + edx + 1]
mov edx, 0x10000
sub edx, edi
mov eax, dword [ebx + eax*4]
mov ebx, 0x10000
mov dword [ebp - 0x20], eax
sub ebx, esi
mov eax, dword [ebp - 0xc]
mov ecx, ebx
imul ecx, edx
shr eax, 0x18
imul edx, esi
imul ebx, edi
imul edi, esi
shr ecx, 0x10
imul ecx, eax
mov eax, dword [ebp + 0x1c]
shr eax, 0x18
shr edx, 0x10
imul edx, eax
shr ecx, 0x10
mov dword [ebp - 4], ecx
mov ecx, dword [ebp - 0x18]
mov eax, ecx
shr eax, 0x18
and ecx, 0xff0000
shr edx, 0x10
mov dword [ebp - 0x34], edx
mov edx, dword [ebp - 0x20]
shr ebx, 0x10
imul ebx, eax
mov eax, edx
shr eax, 0x18
and edx, 0xff0000
shr edi, 0x10
imul edi, eax
mov eax, dword [ebp - 8]
shr ebx, 0x10
imul ecx, ebx
shr edi, 0x10
mov dword [ebp - 0x14], edi
movzx edi, word [eax]
imul edx, dword [ebp - 0x14]
mov eax, dword [ebp + 0x1c]
and eax, 0xff0000
imul eax, dword [ebp - 0x34]
add edx, ecx
mov ecx, dword [ebp - 0x1c]
add edx, eax
mov eax, dword [ebp - 0xc]
and eax, 0xff0000
imul eax, dword [ebp - 4]
add edx, eax
mov eax, dword [ebp - 0x78]
shr edx, cl
imul edx, dword [ebp - 0x88]
shr edx, 8
and eax, edi
mov ecx, dword [ebp - 0x7c]
shr eax, cl
add edx, eax
mov eax, dword [ebp - 0x80]
mov si, word [eax + edx*4]
mov eax, dword [ebp - 0x20]
movzx edx, al
imul edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x18]
movzx eax, al
imul eax, ebx
shl si, cl
mov ecx, dword [ebp - 0x84]
add edx, eax
mov eax, dword [ebp + 0x1c]
movzx eax, al
lea ecx, [ecx + 8]
imul eax, dword [ebp - 0x34]
add edx, eax
mov eax, dword [ebp - 0xc]
movzx eax, al
imul eax, dword [ebp - 4]
add edx, eax
mov eax, dword [ebp - 0x74]
imul edx, dword [ebp - 0x24]
and eax, edi
shr edx, cl
mov ecx, dword [ebp - 0x28]
shr eax, cl
add edx, eax
mov eax, dword [ebp - 0x30]
movzx eax, word [eax + edx*4]
mov edx, dword [ebp - 0x20]
shl ax, cl
and edx, 0xff00
imul edx, dword [ebp - 0x14]
or si, ax
mov eax, dword [ebp - 0x18]
and eax, 0xff00
mov ecx, dword [ebp - 0x68]
imul eax, ebx
mov ebx, dword [ebp + 0x10]
add ebx, dword [ebp + 0x20]
lea ecx, [ecx + 8]
mov dword [ebp + 0x10], ebx
add edx, eax
mov eax, dword [ebp + 0x1c]
and eax, 0xff00
imul eax, dword [ebp - 0x34]
add edx, eax
mov eax, dword [ebp - 0xc]
and eax, 0xff00
imul eax, dword [ebp - 4]
add edx, eax
mov eax, dword [ebp - 0x3c]
imul edx, dword [ebp - 0x50]
and eax, edi
shr edx, cl
mov ecx, dword [ebp - 0x54]
shr eax, cl
add edx, eax
mov eax, dword [ebp - 0x44]
movzx eax, word [eax + edx*4]
mov edx, dword [ebp + 0xc]
add edx, dword [ebp + 0x18]
shl ax, cl
mov ecx, dword [ebp + 8]
or si, ax
mov eax, dword [ebp - 8]
mov dword [ebp + 0xc], edx
mov word [eax], si
add eax, 2
sub dword [ebp - 0x48], 1
mov dword [ebp - 8], eax
jne 0x50b200
mov ebx, dword [ebp + 0x14]
mov ecx, dword [ebp + 0x20]
mov eax, dword [ebp - 0x38]
mov edx, dword [ebp - 0x6c]
inc eax
add dword [ebp - 0x10], edx
movsd xmm1, qword [ebp - 0x64]
mov edi, dword [ebp - 0x2c]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mov dword [ebp - 0x38], eax
comisd xmm5, xmm0
ja 0x50b012
mov edi, dword [ebp - 0x70]
mov ecx, edi
mov eax, dword [edi]
call dword [eax + 0xc0]
mov ecx, edi
call fcn.00512f90
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x2c
cmp eax, 0x20
jne 0x50b966
cvttsd2si eax, qword [ebp - 0xa0]
mov esi, dword [edi + 0x8c]
cvttsd2si ecx, qword [ebp - 0xa8]
imul eax, esi
movsd xmm5, qword [ebp - 0x90]
cdq
and edx, 3
add eax, edx
sar eax, 2
add eax, ecx
mov ecx, dword [edi + 0xa0]
lea eax, [ecx + eax*4]
mov dword [ebp - 0x10], eax
mov eax, esi
mov esi, dword [ebp + 0x1c]
cdq
and edx, 3
add eax, edx
mov edi, dword [esi + 0xc]
mov ecx, dword [esi]
sar eax, 2
mov dword [ebp - 0x40], eax
mov eax, 0x80808081
imul ecx, edi
imul ecx
add edx, ecx
mov ecx, dword [esi + 4]
sar edx, 7
mov eax, edx
imul ecx, edi
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x88], eax
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [esi + 8]
sar edx, 7
mov eax, edx
imul ecx, edi
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x50], eax
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x24], eax
xor eax, eax
comisd xmm5, xmmword [0x5d99a8]
mov dword [ebp - 0x38], eax
jbe 0x50b963
cvttsd2si ecx, qword [ebp - 0xa8]
movsd xmm1, qword [ebp - 0x64]
movsd xmm3, qword [ebp - 0x5c]
movaps xmm4, xmm1
movss xmm6, dword [ebp + 0x10]
movsd xmm7, qword [0x5e6630]
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
mov ecx, dword [ebp - 0x40]
shl ecx, 2
mov dword [ebp - 0x6c], ecx
mov ecx, dword [ebp + 0x20]
subss xmm0, dword [ebp + 0x2c]
subss xmm0, dword [ebp + 0xc]
cvtps2pd xmm0, xmm0
mulsd xmm3, xmm0
mulsd xmm4, xmm0
movsd xmm0, qword [ebp - 0x98]
subsd xmm0, qword [0x5db028]
cvttsd2si edi, xmm0
mov dword [ebp - 0x2c], edi
nop dword [eax]
cvttsd2si edx, qword [ebp - 0xa0]
xor esi, esi
add eax, edx
movd xmm0, eax
cvtdq2ps xmm0, xmm0
subss xmm0, dword [ebp + 0x30]
subss xmm0, xmm6
cvtps2pd xmm2, xmm0
movaps xmm0, xmm1
movaps xmm1, xmm3
mulsd xmm0, xmm2
subsd xmm1, xmm0
movss xmm0, dword [ebp + 0x2c]
cvtps2pd xmm0, xmm0
addsd xmm1, xmm0
movss xmm0, dword [ebp + 0x30]
cvtps2pd xmm0, xmm0
mulsd xmm1, xmm7
cvttsd2si eax, xmm1
movsd xmm1, qword [ebp - 0x5c]
mulsd xmm1, xmm2
mov dword [ebp + 0x1c], eax
sar dword [ebp + 0x1c], 0x10
mov dword [ebp + 0x10], eax
addsd xmm1, xmm4
addsd xmm1, xmm0
mulsd xmm1, xmm7
cvttsd2si edx, xmm1
mov dword [ebp - 0xc], edx
sar dword [ebp - 0xc], 0x10
mov dword [ebp + 0xc], edx
cmp ecx, 0xffffffff
jg 0x50b616
cmp dword [ebp + 0x1c], esi
jl 0x50b93c
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, dword [ebp + 0x10]
sub eax, 0x27fff
cdq
idiv ecx
mov esi, eax
mov eax, 0x7fff
sub eax, dword [ebp + 0x10]
cdq
idiv ecx
mov edx, dword [ebp + 0xc]
xor ecx, ecx
test esi, esi
cmovs esi, ecx
cmp eax, edi
cmovge eax, dword [ebp - 0x2c]
mov edi, eax
jmp 0x50b676
cmp ecx, 1
jl 0x50b65a
mov eax, dword [ebx + 8]
dec eax
cmp dword [ebp + 0x1c], eax
jge 0x50b93c
mov eax, 0x10000
sub eax, dword [ebp + 0x10]
cdq
idiv ecx
mov esi, eax
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, dword [ebp + 0x10]
sub eax, 0x17fff
cdq
idiv ecx
mov edx, dword [ebp + 0xc]
xor ecx, ecx
test esi, esi
cmovle esi, ecx
cmp eax, edi
cmovge eax, dword [ebp - 0x2c]
mov edi, eax
jmp 0x50b676
test eax, eax
js 0x50b93c
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, 0x10000
cmp dword [ebp + 0x10], eax
jge 0x50b93c
mov ecx, dword [ebp + 0x18]
cmp ecx, 0xffffffff
jg 0x50b6b9
cmp dword [ebp - 0xc], 0
jl 0x50b939
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, edx
sub eax, 0x27fff
cdq
idiv ecx
mov ecx, eax
mov eax, dword [ebp + 0xc]
cdq
idiv dword [ebp + 0x18]
mov edx, dword [ebp + 0xc]
neg eax
cmp ecx, esi
cmovle ecx, esi
cmp eax, edi
mov esi, ecx
mov ecx, dword [ebp + 0x18]
cmovge eax, edi
mov edi, eax
jmp 0x50b71a
cmp ecx, 1
jl 0x50b6ff
mov eax, dword [ebx + 0xc]
dec eax
cmp dword [ebp - 0xc], eax
jge 0x50b939
mov eax, 0x10000
sub eax, edx
cdq
idiv ecx
mov ecx, eax
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, dword [ebp + 0xc]
sub eax, 0x17fff
cdq
idiv dword [ebp + 0x18]
mov edx, dword [ebp + 0xc]
cmp ecx, esi
cmovle ecx, esi
cmp eax, edi
mov esi, ecx
mov ecx, dword [ebp + 0x18]
cmovge eax, edi
mov edi, eax
jmp 0x50b71a
test edx, edx
js 0x50b939
mov eax, dword [ebx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp edx, eax
jge 0x50b939
mov eax, dword [ebp + 0x20]
imul eax, esi
imul ecx, esi
add dword [ebp + 0x10], eax
mov eax, dword [ebp - 0x10]
add edx, ecx
mov ecx, dword [ebp + 8]
mov dword [ebp + 0xc], edx
lea eax, [eax + esi*4]
mov dword [ebp - 8], eax
mov eax, dword [ecx + 0x20]
mov dword [ebp - 0x40], eax
cmp esi, edi
jg 0x50b939
mov ebx, dword [ebp + 0x10]
sub edi, esi
inc edi
mov dword [ebp - 0x48], edi
nop
mov eax, edx
mov ecx, dword [ecx + 0x20]
sar eax, 0x10
mov edx, ebx
imul eax, dword [ebp - 0x40]
mov esi, ebx
mov ebx, dword [ebp + 0x28]
and esi, 0xfffe
sar edx, 0x10
inc esi
mov edi, dword [ebp + 0xc]
and edi, 0xfffe
add eax, dword [ebp - 0x4c]
inc edi
add edx, eax
movzx eax, byte [edx]
mov eax, dword [ebx + eax*4]
mov dword [ebp - 0xc], eax
movzx eax, byte [edx + 1]
mov eax, dword [ebx + eax*4]
mov dword [ebp + 0x1c], eax
movzx eax, byte [edx + ecx]
mov eax, dword [ebx + eax*4]
mov dword [ebp - 0x18], eax
movzx eax, byte [edx + ecx + 1]
mov edx, 0x10000
sub edx, edi
mov eax, dword [ebx + eax*4]
mov ebx, 0x10000
mov dword [ebp - 0x20], eax
sub ebx, esi
mov eax, dword [ebp - 0xc]
mov ecx, ebx
imul ecx, edx
shr eax, 0x18
imul edx, esi
imul ebx, edi
imul edi, esi
shr ecx, 0x10
imul ecx, eax
mov eax, dword [ebp + 0x1c]
shr eax, 0x18
shr edx, 0x10
imul edx, eax
shr ecx, 0x10
mov dword [ebp - 4], ecx
mov ecx, dword [ebp - 0x18]
mov eax, ecx
shr eax, 0x18
and ecx, 0xff0000
shr edx, 0x10
mov dword [ebp - 0x34], edx
mov edx, dword [ebp - 0x20]
shr ebx, 0x10
imul ebx, eax
mov eax, edx
shr eax, 0x18
and edx, 0xff0000
shr edi, 0x10
imul edi, eax
mov eax, dword [ebp + 0x1c]
and eax, 0xff0000
shr ebx, 0x10
imul eax, dword [ebp - 0x34]
imul ecx, ebx
shr edi, 0x10
mov dword [ebp - 0x14], edi
imul edx, dword [ebp - 0x14]
mov edi, dword [ebp - 8]
mov edi, dword [edi]
add edx, ecx
mov ecx, dword [ebp - 0x1c]
add edx, eax
mov eax, dword [ebp - 0xc]
and eax, 0xff0000
imul eax, dword [ebp - 4]
add edx, eax
mov eax, dword [ebp - 0x78]
shr edx, cl
imul edx, dword [ebp - 0x88]
shr edx, 8
and eax, edi
mov ecx, dword [ebp - 0x7c]
shr eax, cl
add edx, eax
mov eax, dword [ebp - 0x80]
mov esi, dword [eax + edx*4]
mov eax, dword [ebp - 0x20]
movzx edx, al
imul edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x18]
movzx eax, al
imul eax, ebx
shl esi, cl
mov ecx, dword [ebp - 0x84]
add edx, eax
mov eax, dword [ebp + 0x1c]
movzx eax, al
lea ecx, [ecx + 8]
imul eax, dword [ebp - 0x34]
add edx, eax
mov eax, dword [ebp - 0xc]
movzx eax, al
imul eax, dword [ebp - 4]
add edx, eax
mov eax, dword [ebp - 0x74]
imul edx, dword [ebp - 0x24]
and eax, edi
shr edx, cl
mov ecx, dword [ebp - 0x28]
shr eax, cl
add edx, eax
mov eax, dword [ebp - 0x30]
mov eax, dword [eax + edx*4]
mov edx, dword [ebp - 0x20]
shl eax, cl
and edx, 0xff00
imul edx, dword [ebp - 0x14]
or esi, eax
mov eax, dword [ebp - 0x18]
and eax, 0xff00
mov ecx, dword [ebp - 0x68]
imul eax, ebx
mov ebx, dword [ebp + 0x10]
add ebx, dword [ebp + 0x20]
lea ecx, [ecx + 8]
mov dword [ebp + 0x10], ebx
add edx, eax
mov eax, dword [ebp + 0x1c]
and eax, 0xff00
imul eax, dword [ebp - 0x34]
add edx, eax
mov eax, dword [ebp - 0xc]
and eax, 0xff00
imul eax, dword [ebp - 4]
add edx, eax
mov eax, dword [ebp - 0x3c]
imul edx, dword [ebp - 0x50]
and eax, edi
shr edx, cl
mov ecx, dword [ebp - 0x54]
shr eax, cl
add edx, eax
mov eax, dword [ebp - 0x44]
mov eax, dword [eax + edx*4]
mov edx, dword [ebp + 0xc]
add edx, dword [ebp + 0x18]
shl eax, cl
mov ecx, dword [ebp + 8]
or esi, eax
mov eax, dword [ebp - 8]
mov dword [ebp + 0xc], edx
mov dword [eax], esi
add eax, 4
sub dword [ebp - 0x48], 1
mov dword [ebp - 8], eax
jne 0x50b750
mov ebx, dword [ebp + 0x14]
mov ecx, dword [ebp + 0x20]
mov eax, dword [ebp - 0x38]
mov edx, dword [ebp - 0x6c]
inc eax
add dword [ebp - 0x10], edx
movsd xmm1, qword [ebp - 0x64]
mov edi, dword [ebp - 0x2c]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mov dword [ebp - 0x38], eax
comisd xmm5, xmm0
ja 0x50b560
mov edi, dword [ebp - 0x70]
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0xc0]
mov ecx, edi
call fcn.00512f90
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x2c
mov edi, dword [ebp - 0x70]
mov ecx, edi
call fcn.00512f90
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x2c
movss xmm0, dword [ebp + 0x30]
sub esp, 0x10
mov ecx, edi
movss dword [esp + 0xc], xmm0
movss xmm0, dword [ebp + 0x2c]
movss dword [esp + 8], xmm0
movsd xmm0, qword [ebp + 0x24]
movsd qword [esp], xmm0
push dword [ebp + 0x20]
movss xmm0, dword [ebp + 0x10]
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
push dword [ebp + 0x14]
sub esp, 8
movss dword [esp + 4], xmm0
movss xmm0, dword [ebp + 0xc]
movss dword [esp], xmm0
push esi
call fcn.0050ba00
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x2c