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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
sub esp, 0x74
push ebx
push esi
push edi
mov edi, dword [ebp + 0x10]
test edi, edi
jle 0x1001f120
mov ebx, dword [ebp + 0x14]
test ebx, ebx
jle 0x1001f120
mov edx, dword [ebp + 0x18]
test edx, edx
jle 0x1001f120
mov eax, dword [ebp + 0x1c]
xorps xmm1, xmm1
comisd xmm1, xmmword [eax]
ja 0x1001f120
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 4]
sub ecx, dword [eax]
mov eax, edi
imul eax, ebx
sar ecx, 2
imul eax, edx
cmp ecx, eax
jne 0x1001f114
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax + 4]
sub ecx, dword [eax]
mov eax, ebx
imul eax, edx
cmp ecx, eax
jne 0x1001f114
push 0x1009eb4c
mov ecx, 0x1009eb88
call fcn.10027900
test al, al
je 0x1001e9e7
push 0x1009eb40
mov ecx, 0x1009eb88
call fcn.10027900
test al, al
jne 0x1001f114
mov eax, dword [ebp + 0x28]
mov ecx, 0x1009eb88
push 0x1009eb40
mov byte [esp + 0x30], 0
mov byte [eax], 0
mov eax, dword [ebp + 0x2c]
mov byte [eax], 0
mov eax, dword [ebp + 0x30]
mov byte [eax], 0
call fcn.100278e0
movsd xmm0, qword [0x1008f670]
xor ah, ah
mov edx, 1
mov bl, al
mov dword [esp + 0x1c], edx
mov byte [esp + 0x1a], ah
movsd qword [esp + 0x60], xmm0
cmp byte [ebp + 0x20], ah
je 0x1001ea62
mov eax, dword [ebp + 0x24]
test bl, bl
je 0x1001ea5c
movsd xmm1, qword [eax]
movsd xmm0, qword [0x1008f660]
comisd xmm0, xmm1
ja 0x1001f120
comisd xmm1, xmmword [0x1008f620]
ja 0x1001f120
movsd xmm0, qword [eax]
jmp 0x1001ea6e
test bl, bl
je 0x1001ea6e
movsd xmm0, qword [0x1008f660]
call fcn.1006cc70
movsd xmm4, qword [0x1008f630]
mov ecx, eax
movsd xmm5, qword [0x1008f670]
mov dword [esp + 0x20], ecx
movsd qword [esp + 0x58], xmm4
test bl, bl
je 0x1001eaa5
movsd xmm6, qword [0x1008f648]
movsd xmm7, qword [0x1008f5f8]
jmp 0x1001eabb
movsd xmm6, qword [0x1008f658]
movsd xmm7, qword [0x1008f618]
movsd qword [esp + 0x60], xmm5
mov edx, edi
movsd qword [esp + 0x68], xmm7
imul edx, dword [ebp + 0x14]
xor ebx, ebx
xor esi, esi
mov dword [esp + 0x24], ebx
xor eax, eax
mov dword [esp + 0x28], esi
movsd qword [esp + 0x70], xmm6
mov dword [esp + 0x3c], eax
shl edx, 2
mov dword [esp + 0x54], edx
mov edx, dword [ebp + 0x18]
mov dword [esp + 0x50], edx
jmp 0x1001eaf8
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x3c]
mov edx, dword [ebp + 8]
movsd xmm2, qword [0x1008f5b8]
mov edx, dword [edx]
add edx, eax
mov eax, dword [ebp + 0x14]
mov dword [esp + 0x30], edx
mov dword [esp + 0x48], eax
jmp 0x1001eb18
mov ecx, dword [esp + 0x20]
mov eax, dword [ebp + 0xc]
mov eax, dword [eax]
cmp byte [esi + eax], 0
je 0x1001ed63
inc ebx
xor esi, esi
mov dword [esp + 0x24], ebx
mov ebx, edx
cmp edi, 1
jle 0x1001ec5b
mov dword [esp + 0x40], edi
jmp 0x1001eb4c
movsd xmm4, qword [esp + 0x58]
movsd xmm5, qword [esp + 0x60]
mov edi, dword [ebx]
mov eax, edi
shr eax, 0x1f
movd xmm1, edi
cvtdq2pd xmm1, xmm1
addsd xmm1, qword [eax*8 + 0x1008f6c0]
ucomisd xmm1, xmm1
setp al
cmp al, 1
jne 0x1001eb89
mov edx, dword [esp + 0x1c]
inc esi
cmp byte [ebp + 0x20], 0
mov byte [esp + 0x1a], al
je 0x1001ec04
mov dword [ebx], ecx
jmp 0x1001ec04
cmp byte [ebp + 0x20], 0
je 0x1001eb9a
cmp edi, ecx
jne 0x1001eb9a
mov edx, dword [esp + 0x1c]
inc esi
jmp 0x1001ec00
comisd xmm4, xmm1
jbe 0x1001eba8
movsd qword [esp + 0x58], xmm1
jmp 0x1001ebb5
movaps xmm0, xmm1
maxsd xmm0, xmm5
movsd qword [esp + 0x60], xmm0
mov edx, dword [esp + 0x1c]
test dl, dl
je 0x1001ec00
addsd xmm1, xmm2
sub esp, 8
movsd qword [esp + 0x80], xmm1
fld qword [esp + 0x80]
fstp qword [esp]
call fcn.10074d20
add esp, 8
fstp qword [esp + 0x78]
movsd xmm0, qword [esp + 0x78]
call fcn.1006cc70
mov edx, dword [esp + 0x1c]
xor ecx, ecx
cmp edi, eax
movzx edx, dl
cmovne edx, ecx
mov dword [esp + 0x1c], edx
mov al, byte [esp + 0x1a]
movsd xmm2, qword [0x1008f5b8]
add ebx, 4
sub dword [esp + 0x40], 1
mov ecx, dword [esp + 0x20]
jne 0x1001eb40
movsd xmm0, qword [esp + 0x58]
movsd qword [esp + 0x58], xmm0
movsd xmm0, qword [esp + 0x60]
movsd qword [esp + 0x60], xmm0
movsd xmm0, qword [esp + 0x68]
movsd qword [esp + 0x68], xmm0
movsd xmm0, qword [esp + 0x70]
mov dword [esp + 0x1c], edx
mov byte [esp + 0x1a], al
movsd qword [esp + 0x70], xmm0
jmp 0x1001ed2a
mov ecx, edi
mov dword [esp + 0x40], edi
mov edi, dword [ebx]
mov eax, edi
shr eax, 0x1f
movd xmm1, edi
cvtdq2pd xmm1, xmm1
addsd xmm1, qword [eax*8 + 0x1008f6c0]
ucomisd xmm1, xmm1
setp al
cmp al, 1
jne 0x1001ec8e
mov byte [esp + 0x1a], al
inc esi
jmp 0x1001ed06
cmp byte [ebp + 0x20], 0
je 0x1001ec9d
cmp edi, dword [esp + 0x20]
jne 0x1001ec9d
inc esi
jmp 0x1001ed06
comisd xmm4, xmm1
jbe 0x1001ecab
movsd qword [esp + 0x58], xmm1
jmp 0x1001ecb8
movaps xmm0, xmm1
maxsd xmm0, xmm5
movsd qword [esp + 0x60], xmm0
cmp byte [esp + 0x1c], 0
je 0x1001ed06
addsd xmm1, xmm2
sub esp, 8
movsd qword [esp + 0x80], xmm1
fld qword [esp + 0x80]
fstp qword [esp]
call fcn.10074d20
add esp, 8
fstp qword [esp + 0x78]
movsd xmm0, qword [esp + 0x78]
call fcn.1006cc70
mov edx, dword [esp + 0x1c]
movzx ecx, dl
xor edx, edx
cmp edi, eax
cmovne ecx, edx
mov byte [esp + 0x1c], cl
mov ecx, dword [esp + 0x40]
movsd xmm4, qword [esp + 0x58]
add ebx, 4
movsd xmm5, qword [esp + 0x60]
sub ecx, 1
movsd xmm2, qword [0x1008f5b8]
mov dword [esp + 0x40], ecx
jne 0x1001ec61
mov edi, dword [ebp + 0x10]
mov edx, dword [esp + 0x30]
cmp esi, edi
jne 0x1001ed4a
mov eax, dword [ebp + 0xc]
mov esi, dword [esp + 0x28]
mov eax, dword [eax]
mov byte [esi + eax], 0
mov eax, dword [ebp + 0x28]
mov byte [eax], 1
jmp 0x1001ed63
mov eax, dword [esp + 0x2c]
test esi, esi
mov esi, dword [esp + 0x28]
mov ecx, 1
movzx eax, al
cmovg eax, ecx
mov dword [esp + 0x2c], eax
movsd xmm4, qword [esp + 0x58]
lea eax, [edi*4]
movsd xmm5, qword [esp + 0x60]
inc esi
movsd xmm2, qword [0x1008f5b8]
add edx, eax
sub dword [esp + 0x48], 1
mov ebx, dword [esp + 0x24]
mov dword [esp + 0x28], esi
mov dword [esp + 0x30], edx
jne 0x1001eb14
movsd xmm6, qword [esp + 0x70]
mov edx, ebx
mov ebx, dword [esp + 0x1c]
movaps xmm3, xmm6
movsd xmm7, qword [esp + 0x68]
mov al, bl
mov ebx, dword [esp + 0x2c]
movaps xmm2, xmm7
mov edi, dword [esp + 0x54]
mov cl, bl
mov ah, byte [esp + 0x1a]
movaps xmm0, xmm5
add dword [esp + 0x3c], edi
movaps xmm1, xmm4
sub dword [esp + 0x50], 1
mov ch, ah
mov edi, dword [ebp + 0x10]
mov dword [esp + 0x2c], ebx
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x1c], ebx
mov ebx, edx
movsd qword [esp + 0x40], xmm3
movsd qword [esp + 0x78], xmm2
movsd qword [esp + 0x30], xmm0
movsd qword [esp + 0x48], xmm1
mov byte [esp + 0x1b], cl
mov byte [esp + 0x1a], ah
movsd qword [esp + 0x58], xmm4
movsd qword [esp + 0x60], xmm5
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], esi
movsd qword [esp + 0x68], xmm7
movsd qword [esp + 0x70], xmm6
jne 0x1001eaf0
mov esi, dword [ebp + 0x2c]
xor ebx, ebx
test edx, edx
movzx eax, al
cmovne ebx, eax
mov byte [esi], cl
test ch, ch
je 0x1001ee56
cmp edi, 1
jle 0x1001ee56
test cl, cl
je 0x1001ee56
cmp byte [ebp + 0x20], 0
jne 0x1001ee56
mov eax, 4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edi, dword [ebp + 0x1c]
mov byte [esp + 0x3c], bl
movsd xmm4, qword [edi]
movsd qword [esp + 0x60], xmm4
test bl, bl
je 0x1001ef16
comisd xmm1, xmm3
jb 0x1001ee8b
comisd xmm2, xmm1
jb 0x1001ee8b
comisd xmm0, xmm3
jb 0x1001ee8b
comisd xmm2, xmm0
jb 0x1001ee8b
mov al, 1
jmp 0x1001ee8d
xor al, al
and bl, al
mov byte [esp + 0x3c], bl
test cl, cl
je 0x1001eee4
mov esi, dword [esp + 0x20]
push esi
call fcn.10022be0
add esp, 4
test al, al
je 0x1001eed6
movd xmm0, esi
mov eax, esi
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x1008f6c0]
comisd xmm0, xmmword [esp + 0x40]
jb 0x1001eed6
movsd xmm1, qword [esp + 0x78]
comisd xmm1, xmm0
jb 0x1001eed6
mov al, 1
jmp 0x1001eed8
xor al, al
movsd xmm4, qword [esp + 0x60]
and bl, al
mov byte [esp + 0x3c], bl
test bl, bl
je 0x1001ef16
fld qword [edi]
sub esp, 8
fstp qword [esp]
call fcn.10074d20
fstp qword [esp + 0x80]
movsd xmm4, qword [esp + 0x80]
add esp, 8
maxsd xmm4, qword [0x1008f5b8]
movsd qword [esp + 0x60], xmm4
mov eax, dword [ebp + 0x30]
xorps xmm5, xmm5
ucomisd xmm4, xmm5
mov byte [eax], bl
lahf
test ah, 0x44
jnp 0x1001efc2
cmp byte [ebp + 0x20], 0
je 0x1001efcb
test bl, bl
je 0x1001ef5e
fld qword [esp + 0x60]
sub esp, 8
fstp qword [esp]
call fcn.10074d20
movsd xmm4, qword [esp + 0x68]
add esp, 8
fstp qword [esp + 0x78]
movsd xmm1, qword [esp + 0x78]
jmp 0x1001ef65
movaps xmm1, xmm4
addsd xmm1, xmm4
mov esi, dword [esp + 0x20]
mov eax, esi
movsd xmm3, qword [esp + 0x48]
shr eax, 0x1f
movaps xmm0, xmm3
subsd xmm0, xmm1
movd xmm2, esi
cvtdq2pd xmm2, xmm2
addsd xmm2, qword [eax*8 + 0x1008f6c0]
comisd xmm2, xmm0
jb 0x1001efd5
movsd xmm0, qword [esp + 0x30]
addsd xmm0, xmm1
comisd xmm0, xmm2
jb 0x1001efd5
test bl, bl
je 0x1001efbb
movsd xmm0, qword [0x1008f5b8]
xor eax, eax
movsd qword [edi], xmm0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
xorps xmm0, xmm0
movsd qword [edi], xmm0
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
movsd xmm3, qword [esp + 0x48]
mov esi, dword [esp + 0x20]
cmp byte [esp + 0x1b], 0
je 0x1001f0c4
movsd xmm0, qword [esp + 0x40]
lea eax, [esp + 0x50]
push eax
sub esp, 8
mov dword [esp + 0x5c], esi
movsd qword [esp], xmm0
push dword [esp + 0x48]
sub esp, 0x10
movsd qword [esp + 8], xmm4
movsd qword [esp], xmm3
call fcn.10021af0
add esp, 0x20
test al, al
je 0x1001f0e5
mov edx, dword [esp + 0x50]
cmp edx, esi
je 0x1001f0c4
mov ecx, dword [ebp + 0x10]
xor eax, eax
mov ebx, dword [ebp + 0x14]
xor edi, edi
imul ecx, ebx
mov dword [esp + 0x40], eax
shl ecx, 2
mov dword [esp + 0x54], ecx
mov ecx, dword [ebp + 0x10]
mov esi, dword [ebp + 8]
mov dword [esp + 0x48], ebx
mov esi, dword [esi]
add esi, eax
mov dword [esp + 0x50], esi
nop
mov eax, dword [ebp + 0xc]
mov eax, dword [eax]
cmp byte [edi + eax], 0
je 0x1001f07a
mov eax, esi
mov esi, dword [esp + 0x20]
cmp dword [eax], esi
jne 0x1001f067
mov dword [eax], edx
add eax, 4
sub ecx, 1
jne 0x1001f061
mov esi, dword [esp + 0x50]
mov ebx, dword [esp + 0x48]
mov ecx, dword [ebp + 0x10]
lea eax, [ecx*4]
inc edi
add esi, eax
sub ebx, 1
mov dword [esp + 0x50], esi
mov dword [esp + 0x48], ebx
jne 0x1001f050
mov eax, dword [esp + 0x40]
add eax, dword [esp + 0x54]
sub dword [ebp + 0x18], 1
mov ebx, dword [ebp + 0x14]
mov dword [esp + 0x40], eax
jne 0x1001f040
mov eax, dword [ebp + 0x24]
mov edi, dword [ebp + 0x1c]
movd xmm0, edx
cvtdq2pd xmm0, xmm0
shr edx, 0x1f
addsd xmm0, qword [edx*8 + 0x1008f6c0]
movsd qword [eax], xmm0
movsd xmm1, qword [esp + 0x60]
movsd xmm0, qword [edi]
ucomisd xmm0, xmm1
lahf
test ah, 0x44
jnp 0x1001f0dc
movsd qword [edi], xmm1
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
movd xmm0, esi
cvtdq2pd xmm0, xmm0
shr esi, 0x1f
addsd xmm0, qword [esi*8 + 0x1008f6c0]
comisd xmm0, xmmword [esp + 0x48]
jb 0x1001f0c4
test bl, bl
je 0x1001f10f
movsd xmm1, qword [0x1008f5b8]
jmp 0x1001f0ca
xorps xmm1, xmm1
jmp 0x1001f0ca
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
pop esi
mov eax, 2
pop ebx
mov esp, ebp
pop ebp
ret