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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xb0
movss xmm0, dword [ebp + 0x18]
mulss xmm0, dword [0x100dd47c]
push esi
mov esi, ecx
push edi
movaps xmm1, xmm0
movss dword [esp + 0xc], xmm0
mov edi, edx
addss xmm1, dword [esi + 8]
divss xmm0, xmm1
cvtps2pd xmm0, xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_acos_precise
xorps xmm1, xmm1
sub esp, 8
cvtsd2ss xmm1, xmm0
movss xmm0, dword [0x100dd534]
addss xmm1, xmm1
divss xmm0, xmm1
cvtps2pd xmm0, xmm0
movsd qword [esp + 0x28], xmm0
fld qword [esp + 0x28]
fstp qword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_ceil
fstp qword [esp + 0x28]
movsd xmm0, qword [esp + 0x28]
mov ecx, 2
cvtpd2ps xmm0, xmm0
add esp, 8
mov dword [esp + 0x48], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x50], 0
mov byte [esp + 0x54], 0
mov dword [esp + 0x68], 0
xorps xmm1, xmm1
mov dword [esp + 0x6c], 0
cvttss2si eax, xmm0
mov dword [esp + 0x70], 0
mov byte [esp + 0x74], 0
xorps xmm0, xmm0
movss dword [esp + 0x2c], xmm1
cmp eax, ecx
movss dword [esp + 0x28], xmm0
movups xmmword [esp + 0x38], xmm0
cmovl eax, ecx
cmp dword [ebp + 0xc], 0
movss dword [esp + 0x1c], xmm1
mov dword [esp + 0x34], eax
mov eax, dword [ebp + 8]
movups xmmword [esp + 0x58], xmm0
movss dword [esp + 0x30], xmm0
je 0x1002c8da
movss xmm1, dword [edi + 4]
movss xmm2, dword [edi]
shl eax, 5
add eax, 0xffffffe0
add eax, edi
mov dword [esp + 0x14], eax
subss xmm1, dword [eax + 4]
subss xmm2, dword [eax]
movaps xmm0, xmm1
movss dword [esp + 0x1c], xmm1
mulss xmm0, xmm1
movaps xmm1, xmm2
mulss xmm1, xmm2
movss dword [esp + 8], xmm2
addss xmm0, xmm1
call fcn.100030b0
movss xmm1, dword [0x100dd4b4]
movaps xmm5, xmm0
comiss xmm5, dword [0x100dd3f8]
movss xmm2, dword [esp + 8]
movss xmm4, dword [esp + 0x1c]
jbe 0x1002c7fa
divss xmm1, xmm5
movaps xmm0, xmm1
mulss xmm4, xmm1
mulss xmm2, xmm0
mov eax, dword [esp + 0x14]
movaps xmm1, xmm5
mulss xmm1, xmm2
xor ecx, ecx
mov edx, dword [ebp + 8]
xorps xmm2, xmmword [0x100dde20]
mulss xmm2, dword [esp + 0xc]
mulss xmm1, dword [0x100dd47c]
mulss xmm5, xmm4
addss xmm1, dword [eax]
mulss xmm4, dword [esp + 0xc]
mulss xmm5, dword [0x100dd47c]
movaps xmm0, xmm1
subss xmm0, xmm4
addss xmm5, dword [eax + 4]
addss xmm4, xmm1
movss dword [esp + 0x38], xmm0
movaps xmm3, xmm5
subss xmm3, xmm2
movss dword [esp + 0x58], xmm4
addss xmm2, xmm5
movss dword [esp + 0x3c], xmm3
movups xmm0, xmmword [esp + 0x38]
movss dword [esp + 0x5c], xmm2
movups xmmword [esp + 0x78], xmm0
movups xmm0, xmmword [esp + 0x48]
movss dword [esp + 8], xmm2
movups xmmword [esp + 0x88], xmm0
movups xmm0, xmmword [esp + 0x58]
movups xmmword [esp + 0x98], xmm0
movups xmm0, xmmword [esp + 0x68]
movups xmmword [esp + 0xa8], xmm0
movss xmm0, dword [esp + 0x7c]
movss dword [esp + 0x28], xmm0
movss xmm0, dword [esp + 0x78]
movss dword [esp + 0x2c], xmm0
movss xmm0, dword [esp + 0x9c]
movss dword [esp + 0x30], xmm0
movss xmm0, dword [esp + 0x98]
movss dword [esp + 0x1c], xmm0
jmp 0x1002cb96
movss xmm1, dword [edi + 0x24]
mov ecx, edi
movss xmm2, dword [edi + 0x20]
add edi, 0x20
dec eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], eax
subss xmm1, dword [ecx + 4]
subss xmm2, dword [ecx]
movaps xmm0, xmm1
movss dword [esp + 0x10], xmm1
mulss xmm0, xmm1
movaps xmm1, xmm2
mulss xmm1, xmm2
movss dword [esp + 8], xmm2
addss xmm0, xmm1
call fcn.100030b0
comiss xmm0, dword [0x100dd3f8]
movss xmm1, dword [0x100dd4b4]
movss xmm2, dword [esp + 8]
movss xmm3, dword [esp + 0x10]
jbe 0x1002c94a
divss xmm1, xmm0
movaps xmm0, xmm1
mulss xmm3, xmm1
mulss xmm2, xmm0
mov eax, dword [ebp + 0x14]
test eax, eax
jne 0x1002c9ef
mov eax, dword [esp + 0x14]
xorps xmm2, xmmword [0x100dde20]
mulss xmm2, dword [esp + 0xc]
movss xmm0, dword [esp + 0xc]
movss xmm5, dword [eax]
mulss xmm0, xmm3
movss xmm3, dword [eax + 4]
subss xmm3, xmm2
addss xmm2, dword [eax + 4]
subss xmm5, xmm0
addss xmm0, dword [eax]
movss dword [esp + 0xc], xmm3
ucomiss xmm3, xmm2
movss dword [esp + 0x20], xmm5
movss dword [esp + 0x10], xmm0
lahf
movss dword [esp + 8], xmm2
test ah, 0x44
jnp 0x1002cb06
mov eax, dword [esi + 0x14]
mov ecx, dword [esi + 0x18]
inc eax
cmp eax, ecx
jle 0x1002cab4
lea eax, [ecx + ecx]
test ecx, ecx
jg 0x1002c9ca
mov eax, 0x40
mov dword [esi + 0x18], eax
lea eax, [eax + eax*2]
shl eax, 3
push eax
push dword [esi + 0x10]
mov eax, dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_realloc]
call eax
movss xmm0, dword [esp + 0x18]
movss xmm5, dword [esp + 0x28]
jmp 0x1002ca9e
cmp eax, 2
jne 0x1002cb2d
movss xmm6, dword [esp + 0xc]
mov eax, dword [esp + 0x14]
movaps xmm0, xmm6
mulss xmm0, xmm2
xorps xmm2, xmmword [0x100dde20]
movss xmm1, dword [eax]
movss xmm4, dword [eax + 4]
subss xmm1, xmm0
movaps xmm0, xmm6
mulss xmm2, xmm6
mulss xmm0, xmm3
movaps xmm5, xmm1
subss xmm4, xmm0
subss xmm5, xmm0
addss xmm0, xmm1
movaps xmm3, xmm4
subss xmm3, xmm2
movss dword [esp + 0x10], xmm5
addss xmm2, xmm4
movss dword [esp + 0x20], xmm0
movss dword [esp + 0xc], xmm3
ucomiss xmm3, xmm2
movss dword [esp + 8], xmm2
lahf
test ah, 0x44
jnp 0x1002cb06
mov eax, dword [esi + 0x14]
mov ecx, dword [esi + 0x18]
inc eax
cmp eax, ecx
jle 0x1002cab4
lea eax, [ecx + ecx]
test ecx, ecx
jg 0x1002ca7e
mov eax, 0x40
mov dword [esi + 0x18], eax
lea eax, [eax + eax*2]
shl eax, 3
push eax
push dword [esi + 0x10]
mov eax, dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_realloc]
call eax
movss xmm0, dword [esp + 0x28]
movss xmm5, dword [esp + 0x18]
movss xmm3, dword [esp + 0x14]
add esp, 8
movss xmm2, dword [esp + 8]
mov dword [esi + 0x10], eax
test eax, eax
je 0x1002cb06
mov eax, dword [esi + 0x14]
mov edx, dword [esi + 0x10]
lea ecx, [eax + eax*2]
inc eax
comiss xmm2, xmm3
mov dword [esi + 0x14], eax
jbe 0x1002cae7
movss dword [edx + ecx*8], xmm5
movss dword [edx + ecx*8 + 4], xmm3
movss dword [edx + ecx*8 + 8], xmm0
movss dword [edx + ecx*8 + 0xc], xmm2
mov dword [edx + ecx*8 + 0x10], 1
jmp 0x1002cb06
movss dword [edx + ecx*8], xmm0
movss dword [edx + ecx*8 + 4], xmm2
movss dword [edx + ecx*8 + 8], xmm5
movss dword [edx + ecx*8 + 0xc], xmm3
mov dword [edx + ecx*8 + 0x10], 0xffffffff
mov eax, dword [esp + 0x14]
mov ecx, 1
mov edx, dword [esp + 0x18]
movss dword [esp + 0x38], xmm5
movss dword [esp + 0x3c], xmm3
movss dword [esp + 0x58], xmm0
movss dword [esp + 0x5c], xmm2
jmp 0x1002cb9c
cmp eax, 1
mov eax, dword [esp + 0x14]
jne 0x1002cb7b
movss xmm0, dword [ebp + 0x18]
lea edx, [esp + 0x38]
push 0
push dword [esp + 0x38]
mov ecx, esi
sub esp, 0xc
movss dword [esp + 8], xmm0
movss dword [esp + 4], xmm3
movss dword [esp], xmm2
push eax
lea eax, [esp + 0x70]
push eax
call fcn.1002b270
movss xmm1, dword [esp + 0x78]
add esp, 0x1c
mov eax, dword [esp + 0x14]
movss dword [esp + 8], xmm1
jmp 0x1002cb87
movss xmm0, dword [esp + 0x5c]
movss dword [esp + 8], xmm0
mov edx, dword [esp + 0x18]
mov ecx, 1
movss xmm3, dword [esp + 0x3c]
movss dword [esp + 0xc], xmm3
cmp ecx, edx
jge 0x1002cc7b
sub edx, ecx
mov dword [esp + 0x18], edx
mov edx, dword [ebp + 0x10]
nop dword [eax]
mov cl, byte [edi + 0x1c]
test cl, 1
je 0x1002cc31
cmp edx, 1
jne 0x1002cbe3
push dword [esp + 0x34]
movss xmm0, dword [ebp + 0x18]
lea edx, [esp + 0x3c]
push ecx
movss dword [esp], xmm0
mov ecx, esi
push edi
push eax
lea eax, [esp + 0x68]
push eax
call fcn.1002c0a0
add esp, 0x14
jmp 0x1002cc50
cmp edx, 2
je 0x1002cc0f
test cl, 2
jne 0x1002cc0f
movss xmm0, dword [ebp + 0x18]
lea edx, [esp + 0x38]
push ecx
movss dword [esp], xmm0
mov ecx, esi
push edi
push eax
lea eax, [esp + 0x64]
push eax
call fcn.1002ba90
add esp, 0x10
jmp 0x1002cc50
movss xmm0, dword [ebp + 0x18]
lea edx, [esp + 0x38]
push ecx
movss dword [esp], xmm0
mov ecx, esi
push edi
push eax
lea eax, [esp + 0x64]
push eax
call fcn.1002b6a0
add esp, 0x10
jmp 0x1002cc50
movss xmm0, dword [ebp + 0x18]
lea eax, [esp + 0x58]
push ecx
movss dword [esp], xmm0
lea edx, [esp + 0x3c]
push edi
push eax
mov ecx, esi
call fcn.1002c470
add esp, 0xc
mov edx, dword [ebp + 0x10]
mov eax, edi
add edi, 0x20
sub dword [esp + 0x18], 1
jne 0x1002cbb0
movss xmm3, dword [esp + 0x3c]
movss xmm0, dword [esp + 0x5c]
movss dword [esp + 0xc], xmm3
movss dword [esp + 8], xmm0
cmp dword [ebp + 0xc], 0
je 0x1002ce0d
movss xmm1, dword [esp + 0x28]
ucomiss xmm1, xmm3
lahf
test ah, 0x44
jnp 0x1002cd3c
mov eax, dword [esi + 0x14]
mov ecx, dword [esi + 0x18]
inc eax
cmp eax, ecx
jle 0x1002ccd8
lea eax, [ecx + ecx]
test ecx, ecx
jg 0x1002ccaf
mov eax, 0x40
mov dword [esi + 0x18], eax
lea eax, [eax + eax*2]
shl eax, 3
push eax
push dword [esi + 0x10]
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_realloc]
add esp, 8
mov dword [esi + 0x10], eax
test eax, eax
je 0x1002cd3c
movss xmm3, dword [esp + 0xc]
movss xmm1, dword [esp + 0x28]
mov eax, dword [esi + 0x14]
mov edx, dword [esi + 0x10]
lea ecx, [eax + eax*2]
inc eax
comiss xmm3, xmm1
mov dword [esi + 0x14], eax
jbe 0x1002cd11
movss xmm0, dword [esp + 0x2c]
movss dword [edx + ecx*8], xmm0
movss xmm0, dword [esp + 0x38]
movss dword [edx + ecx*8 + 4], xmm1
movss dword [edx + ecx*8 + 0xc], xmm3
mov dword [edx + ecx*8 + 0x10], 1
jmp 0x1002cd36
movss xmm0, dword [esp + 0x38]
movss dword [edx + ecx*8], xmm0
movss xmm0, dword [esp + 0x2c]
movss dword [edx + ecx*8 + 4], xmm3
movss dword [edx + ecx*8 + 0xc], xmm1
mov dword [edx + ecx*8 + 0x10], 0xffffffff
movss dword [edx + ecx*8 + 8], xmm0
movss xmm1, dword [esp + 8]
movss xmm2, dword [esp + 0x30]
ucomiss xmm1, xmm2
lahf
test ah, 0x44
jnp 0x1002cf49
mov eax, dword [esi + 0x14]
mov ecx, dword [esi + 0x18]
inc eax
cmp eax, ecx
jle 0x1002cd99
lea eax, [ecx + ecx]
test ecx, ecx
jg 0x1002cd6c
mov eax, 0x40
mov dword [esi + 0x18], eax
lea eax, [eax + eax*2]
shl eax, 3
push eax
push dword [esi + 0x10]
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_realloc]
add esp, 8
mov dword [esi + 0x10], eax
test eax, eax
je 0x1002cf49
movss xmm1, dword [esp + 8]
movss xmm2, dword [esp + 0x30]
mov eax, dword [esi + 0x14]
mov edx, dword [esi + 0x10]
lea ecx, [eax + eax*2]
inc eax
comiss xmm2, xmm1
mov dword [esi + 0x14], eax
jbe 0x1002cddc
movss xmm0, dword [esp + 0x58]
movss dword [edx + ecx*8], xmm0
movss xmm0, dword [esp + 0x1c]
movss dword [edx + ecx*8 + 4], xmm1
movss dword [edx + ecx*8 + 8], xmm0
movss dword [edx + ecx*8 + 0xc], xmm2
mov dword [edx + ecx*8 + 0x10], 1
pop edi
pop esi
mov esp, ebp
pop ebp
ret
movss xmm0, dword [esp + 0x1c]
movss dword [edx + ecx*8], xmm0
movss xmm0, dword [esp + 0x58]
movss dword [edx + ecx*8 + 4], xmm2
movss dword [edx + ecx*8 + 8], xmm0
movss dword [edx + ecx*8 + 0xc], xmm1
mov dword [edx + ecx*8 + 0x10], 0xffffffff
pop edi
pop esi
mov esp, ebp
pop ebp
ret
movss xmm1, dword [edi + 4]
subss xmm1, dword [eax + 4]
movss xmm2, dword [edi]
subss xmm2, dword [eax]
movaps xmm0, xmm1
movss dword [esp + 0x10], xmm1
mulss xmm0, xmm1
movaps xmm1, xmm2
movss dword [esp + 0x20], xmm2
mulss xmm1, xmm2
addss xmm0, xmm1
call fcn.100030b0
comiss xmm0, dword [0x100dd3f8]
movss xmm1, dword [esp + 0x10]
jbe 0x1002ce6c
movss xmm2, dword [0x100dd4b4]
divss xmm2, xmm0
movaps xmm0, xmm2
mulss xmm1, xmm2
mulss xmm0, dword [esp + 0x20]
jmp 0x1002ce72
movss xmm0, dword [esp + 0x20]
mov eax, dword [ebp + 0x14]
test eax, eax
jne 0x1002cebc
movss xmm2, dword [ebp + 0x18]
lea eax, [esp + 0x38]
xorps xmm1, xmmword [0x100dde20]
lea edx, [esp + 0x58]
xorps xmm0, xmmword [0x100dde20]
mov ecx, esi
push 1
sub esp, 0xc
movss dword [esp + 8], xmm2
movss dword [esp + 4], xmm1
movss dword [esp], xmm0
push edi
push eax
call fcn.1002ac90
add esp, 0x18
pop edi
pop esi
mov esp, ebp
pop ebp
ret
cmp eax, 2
jne 0x1002cf04
movss xmm2, dword [ebp + 0x18]
lea eax, [esp + 0x38]
xorps xmm1, xmmword [0x100dde20]
lea edx, [esp + 0x58]
xorps xmm0, xmmword [0x100dde20]
mov ecx, esi
push 1
sub esp, 0xc
movss dword [esp + 8], xmm2
movss dword [esp + 4], xmm1
movss dword [esp], xmm0
push edi
push eax
call fcn.1002af70
add esp, 0x18
pop edi
pop esi
mov esp, ebp
pop ebp
ret
cmp eax, 1
jne 0x1002cf49
movss xmm2, dword [ebp + 0x18]
lea edx, [esp + 0x58]
xorps xmm1, xmmword [0x100dde20]
mov ecx, esi
xorps xmm0, xmmword [0x100dde20]
push eax
push dword [esp + 0x38]
lea eax, [esp + 0x40]
sub esp, 0xc
movss dword [esp + 8], xmm2
movss dword [esp + 4], xmm1
movss dword [esp], xmm0
push edi
push eax
call fcn.1002b270
add esp, 0x1c
pop edi
pop esi
mov esp, ebp
pop ebp
ret