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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xb0
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x18]
test eax, eax
je 0x10027e18
xor esi, esi
jmp 0x10027cbe
mov edx, dword [ebx + 0xa4]
test edx, edx
je 0x10027dcd
mov esi, dword [ebx + 0xb4]
mov eax, dword [esi + 0x18]
mov ecx, dword [esi + 0x1c]
mov edi, eax
or edi, ecx
je 0x10027dcd
xor edi, edi
cmp edi, dword [esi + 0x28]
mov edi, 0
sbb edi, dword [esi + 0x2c]
jl 0x10027dcd
mov esi, dword [esi + 0x10]
cmp esi, 3
jl 0x10027dcd
xorps xmm1, xmm1
cvtsi2sd xmm1, dword [ebx + 0xa8]
xorps xmm0, xmm0
cvtsi2sd xmm0, edx
xorps xmm2, xmm2
cvtsi2sd xmm2, dword [ebx + 0x14]
divsd xmm0, xmm1
xorps xmm1, xmm1
cvtsi2sd xmm1, dword [ebx + 0x10]
divsd xmm1, xmm2
movd xmm2, ecx
mulsd xmm1, xmm0
movd xmm0, eax
punpckldq xmm0, xmm2
movq qword [esp + 0x60], xmm0
xorps xmm0, xmm0
cvtsi2sd xmm0, esi
unpcklpd xmm1, xmm0
movapd xmm0, xmmword [0x1019ca00]
fild qword [esp + 0x60]
fstp qword [esp + 0x58]
movhpd xmm0, qword [esp + 0x58]
divpd xmm0, xmm1
movapd xmm1, xmm0
movhlps xmm1, xmm0
subsd xmm0, xmm1
movsd xmm1, qword [0x10187360]
andpd xmm0, xmmword [0x10188af0]
ucomisd xmm1, xmm0
jb 0x10027dcd
mov eax, dword [ebx + 0xa4]
mov ecx, dword [ebx + 0xa8]
mov dword [ebx + 0x48], ecx
mov dword [ebx + 0x44], eax
jmp 0x10027dcd
mov eax, dword [ebx + 0x2b8]
mov dword [esp + 0x24], ecx
mov ecx, dword [eax + 0x10]
call fcn.10027e20
mov ecx, dword [esp + 0x24]
test eax, eax
je 0x10027dc3
lea eax, [ebx + 0xa4]
xorps xmm2, xmm2
cvtsi2sd xmm2, esi
mov edi, dword [ecx + 0x28]
mov esi, dword [ecx + 0x2c]
mov edx, dword [ebx + 0x14]
movsd xmm0, qword [ecx + 0x28]
mov dword [esp + 0x34], eax
mov eax, dword [ebx + 0x10]
movaps xmm3, xmm2
movlhps xmm3, xmm2
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], esi
movlps qword [esp + 0x78], xmm0
xorps xmm0, xmm0
cvtsi2sd xmm0, edx
xor esi, esi
xor edi, edi
cvtsi2sd xmm1, eax
fild qword [esp + 0x78]
fstp qword [esp + 0x70]
mov dword [esp + 0x38], edx
movsd qword [esp + 0x48], xmm0
movsd qword [esp + 0x40], xmm1
divsd xmm1, xmm0
movsd xmm0, qword [esp + 0x70]
movaps xmmword [esp + 0x90], xmm2
mov dword [esp + 0x14], ebx
movaps xmmword [esp + 0x80], xmm3
mulsd xmm0, xmm1
movsd qword [esp + 0x50], xmm1
movsd qword [esp + 0x28], xmm0
movsd xmm0, qword [0x1019c9d0]
mov ecx, esi
movsd qword [esp + 0x18], xmm0
call fcn.10027909
mov ecx, dword [esp + 0x10]
or ecx, dword [esp + 0xc]
je 0x10027b7f
movsd xmm1, qword [0x1019c9d8]
xorps xmm0, xmm0
cvtsi2sd xmm0, eax
movsd xmm4, qword [esp + 0x18]
divsd xmm1, xmm0
ucomisd xmm1, qword [esp + 0x28]
jbe 0x10027b93
jmp 0x10027bdd
movsd xmm4, qword [esp + 0x18]
cmp eax, 0x2eec
jl 0x10027bdd
xorps xmm0, xmm0
cvtsi2sd xmm0, eax
mov ecx, dword [esp + 0x24]
movapd xmm2, xmmword [0x1019c9e0]
fild qword [ecx + 0x18]
fstp qword [esp + 0x68]
movsd xmm1, qword [esp + 0x50]
movapd xmm3, xmmword [esp + 0x90]
mulsd xmm1, qword [esp + 0x68]
unpcklpd xmm3, xmm0
movsd xmm2, xmm1
divpd xmm2, xmm3
movapd xmm3, xmmword [esp + 0x80]
movapd xmm0, xmm2
movhlps xmm0, xmm2
ucomisd xmm0, xmm2
jbe 0x10027be3
movapd xmm0, xmm4
jmp 0x10027c44
mov ecx, dword [ecx + 0x20]
movsd xmm2, qword [0x1019c9f0]
mov edx, 0xffffce20
lea ecx, [ecx + esi*8 + 0xc78]
movsd xmm0, qword [ecx + edx + 0x31e0]
movhpd xmm0, qword [ecx + edx + 0x2568]
divpd xmm0, xmm3
movapd xmm1, xmm0
movhlps xmm1, xmm0
mulsd xmm1, xmm1
subsd xmm0, xmm1
ucomisd xmm4, xmm0
seta bl
ucomisd xmm4, xmm2
seta bh
test bh, bl
cmovne edi, eax
jne 0x10027c38
movapd xmm0, xmm4
add edx, 0x18f0
movapd xmm4, xmm0
jne 0x10027bfa
mov ebx, dword [esp + 0x14]
inc esi
cmp esi, 0x18f
jne 0x10027b45
test edi, edi
je 0x10027dc3
cmp dword [esp + 0x38], 0
je 0x10027c91
movsd xmm1, qword [esp + 0x48]
xorps xmm0, xmm0
cvtsi2sd xmm0, edi
divsd xmm0, qword [0x1019c9b0]
divsd xmm1, qword [esp + 0x40]
mulsd xmm1, qword [0x1019c9f8]
ucomisd xmm1, xmm0
jbe 0x10027dc3
mov eax, edi
xor edx, edx
lea ecx, [ebx + 0xa8]
sar eax, 0x1f
push edx
push 0x7fffffff
push edx
push 0x2eec
push eax
push edi
push ecx
push dword [esp + 0x50]
call fcn.1005683c
add esp, 0x20
jmp 0x10027dc3
mov ecx, dword [edx + 0x1c]
mov ebx, dword [ecx + esi*4]
mov ecx, dword [ebx + 0xb0]
cmp dword [ecx], 0
jne 0x10027e0f
mov eax, dword [ebx + 0x2b8]
mov dword [esp + 0x3c], esi
mov ecx, dword [eax + 0x10]
call fcn.10027e20
test eax, eax
je 0x10027da8
mov eax, dword [ebx + 0xb4]
mov ecx, 0x10
cmp dword [eax + 0x10], ecx
jl 0x10027da8
mov ecx, dword [eax + 8]
mov eax, dword [eax + 0xc]
mov esi, dword [ebx + 0x14]
mov dword [esp + 0x18], eax
mov eax, dword [ebx + 0x10]
mov dword [esp + 0x14], ecx
mov ecx, 0x1f4
mov edi, esi
sar edi, 0x1f
mov dword [esp + 0x28], eax
imul ecx
push edx
push eax
mov dword [esp + 0x14], edi
push edi
mov dword [esp + 0x1c], esi
push esi
call fcn.1015e670
mov ecx, eax
neg ecx
mov ecx, 0
sbb ecx, edx
mov ecx, 0
cmovge edx, ecx
mov ecx, 1
cmovge eax, ecx
mov ecx, dword [esp + 0x14]
cmp eax, ecx
sbb edx, dword [esp + 0x18]
jge 0x10027da8
cmp dword [ebx + 0xa4], 0
jne 0x10027da8
mov edi, dword [esp + 0x28]
mov esi, dword [esp + 0x18]
mov eax, ecx
mov ecx, edi
imul esi, edi
sar ecx, 0x1f
imul ecx, eax
mul edi
add ecx, edx
lea edx, [ebx + 0xa4]
add esi, ecx
lea ecx, [ebx + 0xa8]
push 0
push 0x7fffffff
push esi
push eax
push dword [esp + 0x1c]
push dword [esp + 0x24]
push ecx
push edx
call fcn.1005683c
add esp, 0x20
mov ecx, dword [ebx + 0xb4]
mov esi, dword [ecx + 0x10]
cmp esi, 2
jl 0x10027dc3
cmp dword [ebx + 0xa4], 0
je 0x10027a95
cmp dword [ebx + 0x44], 0
je 0x100279b1
mov eax, dword [ebx + 0xb4]
add eax, 0x20
push eax
call fcn.10053962
add esp, 4
mov eax, dword [ebx + 0xb4]
xor ecx, ecx
mov edx, dword [ebp + 8]
mov esi, dword [esp + 0x3c]
mov dword [eax], ecx
mov dword [eax + 4], 0x80000000
mov eax, dword [ebx + 0xb4]
mov dword [eax + 0x10], ecx
mov eax, dword [ebx + 0xb4]
mov dword [eax + 0x1c], ecx
mov dword [eax + 0x18], ecx
mov eax, dword [edx + 0x18]
inc esi
cmp esi, eax
jb 0x10027cbe
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret