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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x38
push esi
mov esi, ecx
push edi
mov edi, dword [ebp + 8]
mov ecx, dword [esi + 8]
cmp ecx, edi
je 0x1007fac0
mov eax, dword [esi + 0xa8]
movups xmm0, xmmword [eax + 0x34]
movups xmmword [esp + 0x30], xmm0
test ecx, ecx
jle 0x1007f5e5
mov dword [esi + 8], 0
mov ecx, dword [esi + 0xc]
mov edx, dword [esi + 0x60]
movsd xmm3, qword [0x103a6b40]
mov dword [esp + 0x18], 0
mov eax, dword [ecx + 8]
mov dword [esp + 0x14], edx
test eax, eax
je 0x1007f60f
cmp eax, 2
jne 0x1007fa33
cmp dword [ebp + 0x10], 0
mov eax, dword [esi + 0x7c]
mov edi, dword [esi + 0x48]
mov edi, dword [edi + eax*4]
je 0x1007f63c
push edi
mov ecx, esi
call fcn.1007e5f0
lea ecx, [edi + 1]
mov dword [esp + 0x18], eax
push ecx
mov ecx, esi
call fcn.1007e5f0
mov edx, eax
jmp 0x1007fa30
cmp dword [ecx + 0x2c], 0
mov edx, 1
mov dword [esp + 0x28], 0
je 0x1007f659
mov edx, dword [esi + 0x78]
cmp dword [ecx + 0xc], edx
cmovle edx, dword [ecx + 0xc]
push dword [ecx + 0x30]
mov ecx, esi
push edx
push eax
call fcn.1007dce0
xor ecx, ecx
mov dword [esp + 8], eax
cmp dword [esi + 0x78], ecx
jle 0x1007f72a
mov eax, dword [esi + 0x48]
nop word [eax + eax]
mov edx, dword [eax]
mov dword [esp + 0xc], edx
cmp dword [esp + 8], edx
jne 0x1007f69a
inc ecx
add eax, 4
cmp ecx, dword [esi + 0x78]
jl 0x1007f680
jmp 0x1007f72a
push edx
mov ecx, esi
call fcn.1007e5f0
mov ecx, dword [esp + 0xc]
inc ecx
mov dword [esp + 0x24], eax
push ecx
mov ecx, esi
call fcn.1007e5f0
mov edx, dword [esi + 8]
mov ecx, edx
mov dword [esp + 0x10], eax
neg ecx
mov eax, dword [esp + 0x24]
cmp ecx, eax
jl 0x1007f717
cmp ecx, dword [esp + 0x10]
jge 0x1007f717
mov eax, dword [esp + 0x3c]
sub eax, dword [esp + 0x34]
cmp edx, dword [ebp + 8]
jle 0x1007f711
push dword [esp + 8]
movd xmm0, edx
mov ecx, esi
cvtdq2ps xmm0, xmm0
cvtps2pd xmm2, xmm0
movd xmm0, eax
cvtdq2pd xmm0, xmm0
andps xmm2, xmm3
addsd xmm2, xmm0
call fcn.1007e5f0
movd xmm0, eax
cvtdq2pd xmm0, xmm0
comisd xmm2, xmm0
jbe 0x1007f720
mov edi, dword [esp + 8]
jmp 0x1007f72a
sub eax, dword [esp + 0x10]
jmp 0x1007f719
neg eax
mov edi, dword [esp + 0xc]
mov dword [esi + 8], eax
cmp edi, dword [esp + 8]
jne 0x1007f98f
mov eax, dword [esi + 0x44]
test eax, eax
je 0x1007f73a
mov ecx, dword [eax + edi*4]
mov dword [esp + 0x10], ecx
jmp 0x1007f742
mov dword [esp + 0x10], 0
mov edx, dword [esi + 0xc]
mov eax, dword [edx + 8]
mov dword [esp + 0x1c], eax
test eax, eax
je 0x1007f76d
cmp eax, 2
je 0x1007f76d
xor ecx, ecx
lea eax, [edi + 1]
cmp edi, dword [esi + 0x58]
sete cl
imul eax, dword [edx + 0x18]
inc ecx
imul ecx, dword [edx + 0x20]
add ecx, eax
jmp 0x1007f77c
mov ecx, esi
call fcn.1007e660
mov edx, dword [esi + 0xc]
mov ecx, eax
imul ecx, edi
movd xmm1, dword [esp + 0x10]
movsd xmm4, qword [edx + 0x38]
cvtdq2pd xmm1, xmm1
movd xmm0, ecx
lea ecx, [edi + 1]
cvtdq2pd xmm0, xmm0
mov dword [esp + 8], ecx
mulsd xmm1, xmm4
addsd xmm1, xmm0
cvttsd2si eax, xmm1
mov dword [esp + 0x24], eax
mov eax, dword [esi + 0x44]
test eax, eax
je 0x1007f7ba
mov ecx, dword [eax + ecx*4]
mov dword [esp + 0x10], ecx
jmp 0x1007f7c2
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x1007f7e9
cmp eax, 2
je 0x1007f7e9
mov eax, dword [esp + 8]
xor ecx, ecx
cmp eax, dword [esi + 0x58]
sete cl
inc eax
imul eax, dword [edx + 0x18]
inc ecx
imul ecx, dword [edx + 0x20]
add ecx, eax
jmp 0x1007f7f7
mov ecx, esi
call fcn.1007e660
mov ecx, eax
imul ecx, dword [esp + 8]
mov edx, dword [esi + 8]
xorps xmm1, xmm1
cvtsi2sd xmm1, dword [esp + 0x10]
mov eax, dword [esp + 0x3c]
sub eax, dword [esp + 0x34]
mov dword [esp + 0x10], eax
xorps xmm0, xmm0
mov dword [esp + 0x2c], edx
cvtsi2sd xmm0, ecx
mulsd xmm1, xmm4
xorps xmm5, xmm5
cvtsi2sd xmm5, eax
mov eax, dword [ebp + 0xc]
addsd xmm1, xmm0
xorps xmm0, xmm0
cvtsi2ss xmm0, edx
cvttsd2si ecx, xmm1
cvtps2pd xmm2, xmm0
mov dword [esp + 0xc], ecx
xorps xmm0, xmm0
andps xmm2, xmm3
cvtsi2sd xmm0, ecx
addsd xmm2, xmm5
comisd xmm2, xmm0
jbe 0x1007f927
mov eax, dword [esi + 0x44]
mov ecx, dword [esi + 0x58]
test eax, eax
je 0x1007f869
mov eax, dword [eax + ecx*4]
mov dword [esp + 0x20], eax
jmp 0x1007f871
mov dword [esp + 0x20], 0
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x1007f88e
cmp eax, 2
je 0x1007f88e
mov eax, dword [esi + 0xc]
inc ecx
imul ecx, dword [eax + 0x18]
mov eax, dword [eax + 0x20]
lea eax, [ecx + eax*2]
jmp 0x1007f89d
mov ecx, esi
call fcn.1007e660
imul eax, dword [esi + 0x58]
mov edx, dword [esp + 0x2c]
movd xmm1, dword [esp + 0x20]
cvtdq2pd xmm1, xmm1
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm1, xmm4
addsd xmm1, xmm0
cvttsd2si eax, xmm1
movd xmm0, eax
mov eax, dword [ebp + 0xc]
cvtdq2pd xmm0, xmm0
comisd xmm0, xmm2
jbe 0x1007f927
test eax, eax
jne 0x1007f8da
mov edx, dword [esp + 0x10]
sub edx, dword [esp + 0xc]
jmp 0x1007f924
movd xmm0, dword [ebp + 8]
mov ecx, esi
cvtdq2ps xmm0, xmm0
cvtps2pd xmm2, xmm0
andps xmm2, xmm3
addsd xmm2, xmm5
call fcn.1007e660
mov edx, dword [esp + 0xc]
mov ecx, edx
sub ecx, eax
mov eax, dword [ebp + 0xc]
movd xmm0, ecx
cvtdq2pd xmm0, xmm0
comisd xmm0, xmm2
jbe 0x1007f916
mov edx, dword [esp + 0x10]
sub edx, dword [esp + 0xc]
jmp 0x1007f924
mov edi, dword [esp + 8]
neg edx
mov dword [esp + 0x28], 1
mov dword [esi + 8], edx
mov ecx, dword [esp + 0x24]
movd xmm0, edx
cvtdq2ps xmm0, xmm0
cvtps2pd xmm1, xmm0
movd xmm0, ecx
cvtdq2pd xmm0, xmm0
andps xmm1, xmm3
comisd xmm0, xmm1
jbe 0x1007f984
test eax, eax
je 0x1007f97f
movd xmm0, dword [ebp + 8]
mov ecx, esi
cvtdq2ps xmm0, xmm0
cvtps2pd xmm2, xmm0
andps xmm2, xmm3
call fcn.1007e660
mov ecx, dword [esp + 0x24]
add eax, ecx
movd xmm0, eax
cvtdq2pd xmm0, xmm0
comisd xmm2, xmm0
ja 0x1007f97f
mov eax, dword [esp + 0x10]
sub eax, ecx
dec edi
mov dword [esi + 8], eax
jmp 0x1007f98f
neg ecx
mov dword [esi + 8], ecx
cmp dword [esp + 0x28], 0
je 0x1007fa2c
test edi, edi
js 0x1007fa2c
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax + 0x94]
call eax
cmp edi, eax
jg 0x1007fa24
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax + 0x94]
call eax
cmp edi, eax
jl 0x1007f9c6
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax + 0x94]
call eax
lea edi, [eax - 1]
mov edx, dword [esi + 0x78]
xor ecx, ecx
test edx, edx
jle 0x1007f9eb
mov eax, dword [esi + 0x48]
cmp dword [eax], edi
je 0x1007f9e0
inc ecx
add eax, 4
cmp ecx, edx
jl 0x1007f9d2
jmp 0x1007f9eb
mov eax, dword [esi]
mov dword [esi + 0x7c], ecx
push ecx
mov ecx, esi
call dword [eax + 0x50]
mov eax, dword [esi + 0xc]
mov ecx, esi
mov edx, dword [esi]
push 1
push 0
movsd xmm0, qword [eax + 0x38]
push 0
sub esp, 8
movsd qword [esp], xmm0
push dword [eax + 4]
call dword [edx + 0x20]
mov eax, dword [esi + 0xa8]
push dword [esi + 0x7c]
mov ecx, dword [eax + 0x7c]
mov eax, dword [ecx]
call dword [eax + 0x28]
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0xc
movsd xmm3, qword [0x103a6b40]
mov edx, dword [esp + 0x14]
mov edi, dword [ebp + 8]
mov eax, dword [esp + 0x3c]
sub eax, dword [esp + 0x34]
mov ecx, dword [esi + 8]
mov dword [esp + 0x2c], eax
mov eax, ecx
neg eax
cmp eax, dword [esp + 0x18]
jge 0x1007fa5b
mov eax, dword [esp + 0x18]
cdq
mov ecx, eax
xor ecx, edx
sub ecx, edx
neg ecx
jmp 0x1007fa96
mov eax, dword [esp + 0x2c]
cmp eax, edx
jl 0x1007fa67
xor ecx, ecx
jmp 0x1007fa96
xorps xmm0, xmm0
xorps xmm1, xmm1
cvtsi2ss xmm0, ecx
cvtsi2ss xmm1, edx
cvtps2pd xmm2, xmm0
xorps xmm0, xmm0
cvtsi2ss xmm0, eax
andps xmm2, xmm3
subss xmm1, xmm0
cvtps2pd xmm0, xmm1
andps xmm0, xmm3
comisd xmm2, xmm0
jbe 0x1007fa96
mov ecx, eax
sub ecx, edx
mov eax, dword [esi + 0xa8]
movd xmm0, ecx
mov dword [esi + 8], ecx
cvtdq2ps xmm0, xmm0
movss dword [esi + 0x38], xmm0
sub edi, ecx
je 0x1007fac0
sub dword [eax + 0x6c], edi
mov dword [eax + 0x5c], 1
mov dword [eax + 0x54], 1
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0xc