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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x288
mov eax, dword [0x1025f074]
xor eax, esp
mov dword [esp + 0x284], eax
mov eax, dword [ecx + 0x88]
mov edx, dword [ebp + 8]
push esi
push edi
mov eax, dword [eax + 0x20]
movsd xmm0, qword [ecx + 8]
movsd xmm1, qword [ecx]
mov dword [esp + 0x14], ecx
mov edi, dword [eax + 0xd4]
mov eax, dword [edx + 0x88]
mov dword [esp + 0x2c], edi
mov dword [esp + 0x1c], edx
mov dword [esp + 0x20], edi
mov eax, dword [eax + 0x20]
mov esi, dword [eax + 0xd4]
lea eax, [edi + 1]
sar eax, 2
sub dword [esp + 0x2c], eax
mov dword [esp + 0x10], esi
lea eax, [esi + 1]
movsd qword [esp + 0x250], xmm0
sar eax, 2
sub esi, eax
movsd qword [esp + 0x270], xmm0
mov eax, esi
movsd qword [esp + 0x248], xmm1
add eax, eax
movsd qword [esp + 0x268], xmm1
mov dword [esp + 0x3c], esi
movups xmm2, xmmword [edx + eax*8]
mov eax, dword [esp + 0x2c]
add eax, eax
movups xmmword [esp + 0x258], xmm2
movsd xmm0, qword [ecx + eax*8]
movsd xmm1, qword [ecx + eax*8 + 8]
ucomisd xmm2, xmm0
movsd qword [esp + 0x278], xmm0
movsd qword [esp + 0x280], xmm1
lahf
test ah, 0x44
jp 0x10151eca
movsd xmm0, qword [esp + 0x260]
ucomisd xmm0, xmm1
lahf
test ah, 0x44
jp 0x10151eca
push edx
jmp 0x1015255c
movaps xmm0, xmmword [0x10226ad0]
xor esi, esi
mov eax, dword [esp + 0x10]
movups xmmword [esp + 0x50], xmm0
mov word [esp + 0x18], 0
test esi, esi
cmovne edi, eax
cmp edi, 1
je 0x101520dd
test esi, esi
je 0x10151efd
mov eax, dword [edx + 0x88]
jmp 0x10151f03
mov eax, dword [ecx + 0x88]
mov eax, dword [eax + 0x20]
push 0xc0
mov dword [esp + 0x34], eax
lea eax, [esp + 0x9c]
push 0
push eax
mov byte [esp + 0x24d], 0
call fcn.101b5530
add esp, 0xc
lea eax, [esp + 0x178]
xorps xmm0, xmm0
movups xmmword [esp + 0x158], xmm0
push 0xc0
push 0
push eax
movups xmmword [esp + 0x174], xmm0
call fcn.101b5530
xor eax, eax
mov word [esp + 0x24b], 0x100
mov word [esp + 0x248], ax
lea edx, [esp + 0x254]
mov byte [esp + 0x24a], al
add esp, 0xc
mov dword [esp + 0x238], eax
lea eax, [esp + 0x98]
push eax
mov eax, esi
shl eax, 5
add eax, edx
push eax
mov eax, dword [esp + 0x38]
push ecx
movss xmm0, dword [eax + 0xc8]
movss dword [esp], xmm0
push dword [eax + 0xb4]
mov eax, dword [edi*4 + 0x102090d0]
call eax
mov ecx, dword [esp + 0x2c]
add esp, 0x10
mov edi, dword [esp + 0x14]
test esi, esi
je 0x10151fc4
mov eax, dword [ecx + 0x88]
jmp 0x10151fca
mov eax, dword [edi + 0x88]
movsd xmm4, qword [eax]
test esi, esi
je 0x10151fda
mov eax, dword [ecx + 0x90]
jmp 0x10151fe0
mov eax, dword [edi + 0x90]
movsd xmm5, qword [eax]
test esi, esi
je 0x10151ff0
mov eax, dword [ecx + 0x90]
jmp 0x10151ff6
mov eax, dword [edi + 0x90]
movsd xmm0, qword [eax]
movzx edx, byte [esp + 0x23e]
comisd xmm0, xmm4
seta al
xor ecx, ecx
mov byte [esp + 0xf], al
xor al, 1
movzx eax, al
movd xmm1, eax
cvtdq2pd xmm1, xmm1
test edx, edx
je 0x101520d1
nop dword [eax]
nop dword [eax + eax]
comisd xmm5, xmm4
movsd xmm2, qword [esp + ecx*8 + 0x178]
movsd xmm3, qword [0x10226238]
jb 0x1015205d
movaps xmm0, xmm4
subsd xmm0, xmm2
comisd xmm3, xmm0
jbe 0x1015207e
movaps xmm0, xmm2
subsd xmm0, xmm5
jmp 0x10152071
movaps xmm0, xmm2
subsd xmm0, xmm4
comisd xmm3, xmm0
jbe 0x1015207e
movaps xmm0, xmm5
subsd xmm0, xmm2
comisd xmm3, xmm0
jbe 0x1015207e
mov eax, 1
jmp 0x10152080
xor eax, eax
test al, al
je 0x101520c8
movsd xmm6, qword [0x10226a50]
movaps xmm0, xmm4
subsd xmm0, xmm2
andps xmm0, xmm6
comisd xmm3, xmm0
ja 0x101520c8
cmp byte [esp + 0xf], 0
je 0x101520a9
maxsd xmm1, xmm2
jmp 0x101520ad
minsd xmm1, xmm2
movaps xmm0, xmm1
movsd qword [esp + esi*8 + 0x50], xmm1
subsd xmm0, xmm5
andps xmm0, xmm6
comisd xmm3, xmm0
seta al
mov byte [esp + esi + 0x18], al
inc ecx
cmp ecx, edx
jl 0x10152030
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x14]
mov edi, dword [esp + 0x20]
inc esi
cmp esi, 2
jl 0x10151ee3
movsd xmm1, qword [0x102265b8]
or esi, 0xffffffff
xor ah, ah
mov dword [esp + 0x10], esi
xorps xmm0, xmm0
mov byte [esp + 0xf], ah
xor al, al
movsd qword [esp + 0x40], xmm0
xorps xmm2, xmm2
movsd qword [esp + 0x30], xmm0
movsd qword [esp + 0x20], xmm1
xor esi, esi
mov byte [esp + 0xe], al
movsd xmm0, qword [esp + esi*8 + 0x50]
comisd xmm2, xmm0
ja 0x101523b5
test esi, esi
je 0x1015213c
mov eax, dword [edx + 0x88]
jmp 0x10152142
mov eax, dword [ecx + 0x88]
mov ecx, dword [eax + 0x20]
sub esp, 0xc
mov eax, dword [ecx + 0xd4]
movsd qword [esp + 4], xmm0
movss xmm0, dword [ecx + 0xc8]
movss dword [esp], xmm0
push dword [ecx + 0xb4]
mov eax, dword [eax*4 + 0x10209064]
lea ecx, [esp + 0x98]
push ecx
call eax
mov ecx, esi
add esp, 0x14
shl ecx, 5
test esi, esi
movups xmm4, xmmword [eax]
mov eax, dword [esp + 0x3c]
movsd xmm6, qword [esp + ecx + 0x248]
movsd xmm7, qword [esp + ecx + 0x250]
movaps xmm5, xmm4
cmovne eax, dword [esp + 0x2c]
subsd xmm5, xmm6
unpckhpd xmm4, xmm4
subsd xmm4, xmm7
movsd qword [esp + 0x48], xmm5
movups xmmword [esp + 0x78], xmm4
cmp eax, 1
jne 0x10152205
movsd xmm3, qword [esp + ecx + 0x258]
movaps xmm1, xmm4
movsd xmm2, qword [esp + ecx + 0x260]
subsd xmm3, xmm6
movaps xmm0, xmm5
mulsd xmm1, xmm4
subsd xmm2, xmm7
mulsd xmm0, xmm5
mulsd xmm3, xmm3
addsd xmm1, xmm0
mulsd xmm2, xmm2
addsd xmm1, xmm1
addsd xmm2, xmm3
comisd xmm2, xmm1
ja 0x101523a8
movsd xmm0, qword [esp + ecx + 0x258]
xorps xmm2, xmm2
movsd xmm1, qword [esp + ecx + 0x260]
subsd xmm0, xmm6
subsd xmm1, xmm7
movsd qword [esp + 0x68], xmm0
mulsd xmm0, xmm5
movsd qword [esp + 0x60], xmm1
comisd xmm2, xmm0
ja 0x101523ab
movaps xmm0, xmm1
mulsd xmm0, xmm4
comisd xmm2, xmm0
ja 0x101523ab
movaps xmm1, xmm4
movaps xmm0, xmm5
mulsd xmm1, xmm4
mulsd xmm0, xmm5
addsd xmm0, xmm1
call fcn.101d93f0
movsd xmm1, qword [esp + 0x68]
movsd qword [esp + 0x70], xmm0
movsd xmm0, qword [esp + 0x60]
mulsd xmm0, xmm0
mulsd xmm1, xmm1
addsd xmm0, xmm1
call fcn.101d93f0
movsd xmm3, qword [esp + 0x70]
comisd xmm3, xmm0
seta dl
cmp byte [esp + 0x18], 0
je 0x101522aa
cmp byte [esp + 0x19], 0
je 0x101522aa
test dl, dl
jne 0x101523d0
movsd xmm1, qword [0x10226578]
subsd xmm3, xmm0
mov ecx, dword [esp + 0x2c]
test esi, esi
movsd xmm0, qword [0x102265f0]
movaps xmm4, xmm1
mov eax, dword [esp + 0x1c]
movaps xmm5, xmm0
mov edi, dword [esp + 0x14]
movaps xmm6, xmm4
cmovne ecx, dword [esp + 0x3c]
cmove eax, edi
andps xmm3, xmmword [0x10226a50]
movaps xmm2, xmm5
movaps xmm7, xmm1
test ecx, ecx
js 0x10152347
inc ecx
nop
movsd xmm1, qword [eax]
comisd xmm1, xmm6
ja 0x10152300
movsd xmm6, xmm1
jmp 0x10152304
movsd xmm6, xmm6
movsd xmm0, qword [eax + 8]
comisd xmm0, xmm4
ja 0x10152315
movsd xmm4, xmm0
jmp 0x10152319
movsd xmm4, xmm4
movaps xmm7, xmm4
comisd xmm2, xmm1
ja 0x10152328
movsd xmm2, xmm1
jmp 0x1015232c
movsd xmm2, xmm2
comisd xmm5, xmm0
ja 0x10152338
movsd xmm5, xmm0
jmp 0x1015233c
movsd xmm5, xmm5
add eax, 0x10
movaps xmm0, xmm5
sub ecx, 1
jne 0x101522f0
subsd xmm2, xmm6
mov al, byte [esp + 0xe]
subsd xmm0, xmm7
maxsd xmm2, xmm0
divsd xmm3, xmm2
xorps xmm2, xmm2
comisd xmm3, xmmword [0x10226288]
jbe 0x101523a0
xor al, 1
mov byte [esp + 0xe], al
je 0x101523a0
movsd xmm3, qword [esp + 0x48]
mov ecx, esi
movsd xmm1, qword [esp + esi*8 + 0x50]
movsd qword [esp + 0x40], xmm3
movsd xmm3, qword [esp + 0x78]
mov byte [esp + 0xf], dl
movsd qword [esp + 0x30], xmm3
movsd qword [esp + 0x20], xmm1
mov dword [esp + 0x10], ecx
jmp 0x101523bd
movsd xmm1, qword [esp + 0x20]
jmp 0x101523b9
xorps xmm2, xmm2
mov al, byte [esp + 0xe]
movsd xmm1, qword [esp + 0x20]
mov edi, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
inc esi
cmp esi, 2
jge 0x101523fe
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x1c]
jmp 0x10152120
movsd xmm0, qword [esp + 0x48]
mov ecx, esi
movsd xmm1, qword [esp + esi*8 + 0x50]
mov edi, dword [esp + 0x14]
movsd qword [esp + 0x40], xmm0
movsd xmm0, qword [esp + 0x78]
mov byte [esp + 0xf], dl
movsd qword [esp + 0x30], xmm0
mov dword [esp + 0x10], ecx
jmp 0x10152406
test al, al
je 0x10152556
mov eax, dword [esp + 0x1c]
test ecx, ecx
mov esi, eax
cmove esi, edi
je 0x1015241b
mov eax, dword [eax + 0x88]
jmp 0x10152421
mov eax, dword [edi + 0x88]
movsd xmm0, qword [eax]
sub esp, 0xc
mov ecx, dword [eax + 0x20]
subsd xmm1, xmm0
mov eax, dword [ecx + 0xd4]
mulsd xmm1, qword [0x10226328]
mov eax, dword [eax*4 + 0x10209064]
addsd xmm1, xmm0
movss xmm0, dword [ecx + 0xc8]
movsd qword [esp + 4], xmm1
movss dword [esp], xmm0
push dword [ecx + 0xb4]
lea ecx, [esp + 0x98]
push ecx
call eax
xorps xmm5, xmm5
xorps xmm4, xmm4
add esp, 0x14
xorps xmm3, xmm3
movups xmm2, xmmword [eax]
movaps xmm1, xmm2
unpckhpd xmm2, xmm2
subsd xmm1, qword [esi]
subsd xmm2, qword [esi + 8]
mulsd xmm1, qword [esp + 0x30]
mulsd xmm2, qword [esp + 0x40]
cvtsd2ss xmm5, xmm1
cvtsd2ss xmm3, xmm2
movaps xmm0, xmm5
mulss xmm0, xmm4
ucomiss xmm0, xmm0
lahf
test ah, 0x44
jp 0x1015251a
movaps xmm0, xmm3
mulss xmm0, xmm4
ucomiss xmm0, xmm0
lahf
test ah, 0x44
jp 0x1015251a
movaps xmm0, xmm5
call fcn.1005f380
movss xmm4, dword [0x10226178]
comiss xmm4, xmm0
jb 0x101524e0
movaps xmm0, xmm3
call fcn.1005f380
comiss xmm4, xmm0
jae 0x10152556
movss dword [esp + 0x20], xmm5
mov edx, dword [esp + 0x20]
test edx, edx
jns 0x101524f6
and edx, 0x7fffffff
neg edx
movss dword [esp + 0x20], xmm3
mov ecx, dword [esp + 0x20]
test ecx, ecx
jns 0x1015250c
and ecx, 0x7fffffff
neg ecx
lea eax, [ecx + 0x10]
cmp edx, eax
jge 0x1015251a
lea eax, [edx + 0x10]
cmp ecx, eax
jl 0x10152556
subsd xmm1, xmm2
xorps xmm0, xmm0
ucomisd xmm1, xmm0
lahf
test ah, 0x44
jnp 0x10152556
comisd xmm0, xmm1
seta al
cmp dword [esp + 0x10], 0
sete cl
xor al, cl
xor al, byte [esp + 0xf]
pop edi
pop esi
mov ecx, dword [esp + 0x284]
xor ecx, esp
call fcn.101b3122
mov esp, ebp
pop ebp
ret 4
push dword [esp + 0x1c]
mov ecx, edi
call fcn.10151480
mov ecx, dword [esp + 0x28c]
pop edi
pop esi
xor ecx, esp
call fcn.101b3122
mov esp, ebp
pop ebp
ret 4