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

Disassembly:
mov eax, dword [esp + 4]
sub esp, 0x50
push ebx
push ebp
push esi
mov esi, dword [eax + 4]
xor ebp, ebp
push edi
push dword [esp + 0x68]
xor edi, edi
push eax
call fcn.1006a01e
mov ebx, eax
mov eax, dword [esp + 0x74]
pop ecx
pop ecx
and dword [eax], edi
test ebx, ebx
js 0x1006a93b
lea eax, [esi + ebx]
push eax
mov dword [esp + 0x44], eax
call fcn.1006d84c
movzx eax, ax
mov dword [esp + 0x20], eax
pop ecx
test ax, ax
jle 0x1006a57c
movsx ebp, ax
xor ecx, ecx
lea eax, [esi + 0xa]
mov dword [esp + 0x38], ecx
mov dword [esp + 0x10], ecx
mov dword [esp + 0x3c], ecx
lea eax, [eax + ebp*2]
mov dword [esp + 0x28], ebp
add eax, ebx
push eax
call fcn.1006d88a
movzx eax, ax
add ebx, 0xc
add eax, esi
lea esi, [eax + ebp*2]
mov eax, dword [esp + 0x44]
add esi, ebx
lea eax, [eax + ebp*2]
add eax, 8
push eax
call fcn.1006d88a
movzx ebx, ax
inc ebx
mov dword [esp + 0x34], ebx
lea eax, [ebx + ebp*2]
imul eax, eax, 0xe
push eax
call fcn.1004bbfa
mov edi, eax
add esp, 0xc
mov dword [esp + 0x20], edi
test edi, edi
je 0x1006a93b
imul eax, ebp, 0x1c
xor edx, edx
mov dword [esp + 0x44], edx
mov cl, dl
mov dword [esp + 0x30], eax
test ebx, ebx
je 0x1006a53f
mov edx, dword [esp + 0x2c]
lea ebx, [edi + 0xc]
add ebx, eax
mov dword [esp + 0x34], edx
mov al, cl
test cl, cl
jne 0x1006a297
mov al, byte [esi]
mov dl, al
mov byte [esp + 0x64], al
and dl, 8
je 0x1006a283
mov cl, byte [esi + 1]
xor eax, eax
test dl, dl
mov edx, dword [esp + 0x34]
setne al
inc eax
add esi, eax
mov al, byte [esp + 0x64]
jmp 0x1006a299
dec cl
mov byte [ebx], al
add ebx, 0xe
sub edx, 1
mov dword [esp + 0x34], edx
jne 0x1006a26f
mov ebp, dword [esp + 0x30]
xor edx, edx
push 2
add ebp, edi
mov edi, dword [esp + 0x30]
pop ebx
mov cl, byte [ebp + 0xc]
and cl, 0x10
test byte [ebp + 0xc], 2
mov byte [esp + 0x64], cl
je 0x1006a2dc
mov al, byte [esi]
inc esi
movzx eax, al
mov ecx, eax
neg ecx
cmp byte [esp + 0x64], 0
cmovne ecx, eax
add edx, ecx
jmp 0x1006a2fd
test cl, cl
jne 0x1006a2fd
movzx ecx, byte [esi]
mov eax, 0x100
cwde
movsx ecx, cx
imul ecx, eax
movzx eax, byte [esi + 1]
add cx, ax
movsx eax, cx
add edx, eax
add esi, ebx
mov word [ebp], dx
add ebp, 0xe
sub edi, 1
jne 0x1006a2b6
imul eax, dword [esp + 0x28], 0x1c
xor edx, edx
mov ebp, dword [esp + 0x20]
mov edi, dword [esp + 0x2c]
add ebp, 2
add ebp, eax
mov cl, byte [ebp + 0xa]
and cl, 0x20
test byte [ebp + 0xa], 4
mov byte [esp + 0x64], cl
je 0x1006a343
mov al, byte [esi]
inc esi
movzx eax, al
mov ecx, eax
neg ecx
cmp byte [esp + 0x64], 0
cmovne ecx, eax
add edx, ecx
jmp 0x1006a364
test cl, cl
jne 0x1006a364
movzx ecx, byte [esi]
mov eax, 0x100
cwde
movsx ecx, cx
imul ecx, eax
movzx eax, byte [esi + 1]
add cx, ax
movsx eax, cx
add edx, eax
add esi, ebx
mov word [ebp], dx
add ebp, 0xe
sub edi, 1
jne 0x1006a31d
mov edx, dword [esp + 0x1c]
xor ebx, ebx
mov edi, dword [esp + 0x20]
mov ecx, ebx
mov esi, ebx
mov dword [esp + 0x30], ebx
mov dword [esp + 0x34], ebx
mov ebp, ebx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x18], ebx
mov dword [esp + 0x14], ebx
movsx ebx, dx
mov edx, ecx
imul ebx, ebx, 0x1c
mov dword [esp + 0x28], ecx
add ebx, edi
mov al, byte [ebx + 0xc]
mov byte [esp + 0x64], al
movsx eax, word [ebx]
mov dword [esp + 0x20], eax
movsx eax, word [ebx + 2]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x44]
cmp eax, dword [esp + 0x14]
mov eax, dword [esp + 0x24]
jne 0x1006a489
cmp dword [esp + 0x14], 0
je 0x1006a3f1
push eax
push ecx
push dword [esp + 0x38]
push dword [esp + 0x40]
push ebp
push edx
push dword [esp + 0x54]
push dword [esp + 0x2c]
push esi
push edi
call fcn.1006ad1f
add esp, 0x28
mov esi, eax
movzx eax, byte [esp + 0x64]
not eax
and eax, 1
mov dword [esp + 0x3c], eax
je 0x1006a43d
test byte [ebx + 0x1a], 1
lea ecx, [ebx + 0xe]
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
movsx ebp, word [ebx + 0x10]
mov dword [esp + 0x64], ecx
movsx ecx, word [ecx]
mov dword [esp + 0x34], eax
mov dword [esp + 0x30], edx
mov dword [esp + 0x18], ecx
jne 0x1006a433
add ecx, eax
add ebp, edx
sar ecx, 1
sar ebp, 1
jmp 0x1006a445
inc dword [esp + 0x14]
mov ebx, dword [esp + 0x64]
jmp 0x1006a449
mov ecx, dword [esp + 0x20]
mov ebp, dword [esp + 0x1c]
mov dword [esp + 0x18], ecx
xor edx, edx
imul eax, esi, 0xe
push edx
push edx
push ebp
push ecx
add eax, edi
inc esi
push 1
push eax
call fcn.1006d7cf
mov ecx, dword [esp + 0x50]
mov eax, dword [esp + 0x58]
mov dword [esp + 0x28], edx
lea eax, [eax + ecx*2]
add eax, 0xa
push eax
call fcn.1006d88a
add esp, 0x1c
movzx eax, ax
inc eax
inc dword [esp + 0x38]
mov dword [esp + 0x44], eax
jmp 0x1006a51c
test byte [esp + 0x64], 1
jne 0x1006a4dd
cmp dword [esp + 0x10], 0
je 0x1006a4c3
mov eax, dword [esp + 0x24]
push eax
add eax, dword [esp + 0x20]
push dword [esp + 0x2c]
sar eax, 1
push eax
mov eax, dword [esp + 0x34]
add eax, dword [esp + 0x2c]
imul ecx, esi, 0xe
sar eax, 1
push eax
push 3
add ecx, edi
inc esi
push ecx
call fcn.1006d7cf
add esp, 0x18
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x24], eax
mov dword [esp + 0x10], 1
jmp 0x1006a524
imul edx, esi, 0xe
cmp dword [esp + 0x10], 0
mov dword [esp + 0x64], edx
jne 0x1006a4ef
xor ecx, ecx
xor eax, eax
cmp dword [esp + 0x10], 0
push eax
push ecx
push dword [esp + 0x24]
setne al
push dword [esp + 0x2c]
add al, 2
movzx eax, al
push eax
mov eax, dword [esp + 0x78]
add eax, edi
push eax
call fcn.1006d7cf
and dword [esp + 0x28], 0
add esp, 0x18
inc esi
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x24]
inc dword [esp + 0x14]
add ebx, 0xe
mov edx, dword [esp + 0x2c]
cmp dword [esp + 0x14], edx
mov edx, dword [esp + 0x18]
jl 0x1006a3a2
jmp 0x1006a54f
mov esi, edx
mov dword [esp + 0x30], edx
mov dword [esp + 0x34], edx
mov eax, edx
mov ecx, edx
mov ebp, edx
push eax
push ecx
push dword [esp + 0x38]
push dword [esp + 0x40]
push ebp
push edx
push dword [esp + 0x54]
push dword [esp + 0x2c]
push esi
push edi
call fcn.1006ad1f
add esp, 0x28
mov ebp, eax
mov eax, dword [esp + 0x6c]
mov dword [eax], edi
mov eax, ebp
jmp 0x1006a93d
jns 0x1006a56f
mov esi, dword [esp + 0x40]
xor ebp, ebp
push 2
add esi, 0xa
xor edi, edi
pop ebx
movaps xmm0, xmmword [0x100d2210]
xorps xmm3, xmm3
movss xmm1, dword [0x100d2170]
and dword [esp + 0x18], 0
push esi
movups xmmword [esp + 0x4c], xmm0
movss dword [esp + 0x44], xmm3
movss dword [esp + 0x40], xmm3
call fcn.1006d84c
movzx eax, ax
add esi, ebx
push esi
mov dword [esp + 0x40], eax
call fcn.1006d84c
mov edx, dword [esp + 0x40]
add esi, ebx
movzx eax, ax
mov dword [esp + 0x28], eax
pop ecx
pop ecx
test dl, 2
je 0x1006a62c
test dl, 1
je 0x1006a604
push esi
call fcn.1006d84c
cwde
add esi, ebx
push esi
mov dword [esp + 0x4c], eax
call fcn.1006d84c
mov edx, dword [esp + 0x40]
add esi, ebx
pop ecx
pop ecx
mov ecx, dword [esp + 0x44]
cwde
jmp 0x1006a612
mov cl, byte [esi]
mov al, byte [esi + 1]
add esi, 2
movsx eax, al
movsx ecx, cl
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [esp + 0x3c], xmm0
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
movss dword [esp + 0x40], xmm0
test dl, 8
je 0x1006a660
push esi
call fcn.1006d84c
cwde
add esi, ebx
pop ecx
movss dword [esp + 0x24], xmm3
movd xmm0, eax
cvtdq2ps xmm0, xmm0
mulss xmm0, xmm1
movss dword [esp + 0x28], xmm0
movaps xmm2, xmm0
movss dword [esp + 0x34], xmm0
jmp 0x1006a733
test dl, 0x40
je 0x1006a6ac
push esi
call fcn.1006d84c
cwde
add esi, ebx
push esi
movss dword [esp + 0x2c], xmm3
movss dword [esp + 0x38], xmm3
movd xmm2, eax
cvtdq2ps xmm2, xmm2
mulss xmm2, xmm1
movss dword [esp + 0x3c], xmm2
call fcn.1006d84c
pop ecx
pop ecx
cwde
add esi, ebx
movd xmm0, eax
cvtdq2ps xmm0, xmm0
mulss xmm0, xmm1
movss dword [esp + 0x28], xmm0
jmp 0x1006a739
test dl, dl
jns 0x1006a709
push esi
call fcn.1006d84c
cwde
add esi, ebx
push esi
movd xmm2, eax
cvtdq2ps xmm2, xmm2
mulss xmm2, xmm1
movss dword [esp + 0x3c], xmm2
call fcn.1006d84c
cwde
add esi, ebx
push esi
movd xmm3, eax
cvtdq2ps xmm3, xmm3
mulss xmm3, xmm1
movss dword [esp + 0x3c], xmm3
call fcn.1006d84c
cwde
add esi, ebx
push esi
movd xmm0, eax
cvtdq2ps xmm0, xmm0
mulss xmm0, xmm1
movss dword [esp + 0x34], xmm0
call fcn.1006d84c
add esp, 0x10
jmp 0x1006a693
movss xmm4, dword [esp + 0x54]
movss xmm0, dword [esp + 0x50]
movss xmm2, dword [esp + 0x48]
movss xmm3, dword [esp + 0x4c]
movss dword [esp + 0x28], xmm4
movss dword [esp + 0x24], xmm0
movss dword [esp + 0x34], xmm2
movss dword [esp + 0x30], xmm3
movaps xmm0, xmm2
movaps xmm1, xmm3
mulss xmm0, xmm2
push ecx
mulss xmm1, xmm3
push ecx
addss xmm1, xmm0
cvtps2pd xmm0, xmm1
movsd qword [esp], xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll_sqrt
movss xmm0, dword [esp + 0x2c]
movss xmm1, dword [esp + 0x30]
mulss xmm0, xmm0
mulss xmm1, xmm1
fstp dword [esp + 0x4c]
addss xmm1, xmm0
cvtps2pd xmm0, xmm1
movsd qword [esp], xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll_sqrt
lea eax, [esp + 0x20]
push eax
mov eax, dword [esp + 0x2c]
movzx eax, ax
push eax
push dword [esp + 0x74]
fstp dword [esp + 0x40]
call fcn.1006e0ae
mov edx, eax
add esp, 0x14
mov dword [esp + 0x20], edx
test edx, edx
jle 0x1006a90e
and dword [esp + 0x1c], 0
mov ebx, edx
movss xmm4, dword [esp + 0x28]
movss xmm5, dword [esp + 0x34]
movss xmm6, dword [esp + 0x24]
movss xmm7, dword [esp + 0x30]
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x18]
xorps xmm3, xmm3
xorps xmm2, xmm2
movsx eax, word [edx + ecx + 2]
cvtsi2ss xmm3, eax
movsx eax, word [edx + ecx]
cvtsi2ss xmm2, eax
movaps xmm0, xmm3
mulss xmm3, xmm4
movaps xmm1, xmm2
mulss xmm0, xmm6
mulss xmm1, xmm5
mulss xmm2, xmm7
addss xmm1, xmm0
addss xmm2, xmm3
xorps xmm3, xmm3
addss xmm1, dword [esp + 0x40]
addss xmm2, dword [esp + 0x3c]
mulss xmm1, dword [esp + 0x44]
mulss xmm2, dword [esp + 0x2c]
cvttss2si eax, xmm1
mov word [edx + ecx], ax
cvttss2si eax, xmm2
xorps xmm2, xmm2
mov word [edx + ecx + 2], ax
movsx eax, word [edx + ecx + 6]
cvtsi2ss xmm3, eax
movsx eax, word [edx + ecx + 4]
cvtsi2ss xmm2, eax
movaps xmm0, xmm3
mulss xmm3, xmm4
movaps xmm1, xmm2
mulss xmm0, xmm6
mulss xmm1, xmm5
mulss xmm2, xmm7
addss xmm1, xmm0
addss xmm2, xmm3
addss xmm1, dword [esp + 0x40]
addss xmm2, dword [esp + 0x3c]
mulss xmm1, dword [esp + 0x44]
mulss xmm2, dword [esp + 0x2c]
cvttss2si eax, xmm1
mov word [edx + ecx + 4], ax
cvttss2si eax, xmm2
mov word [edx + ecx + 6], ax
add edx, 0xe
sub ebx, 1
jne 0x1006a7d1
mov eax, dword [esp + 0x20]
add eax, ebp
mov dword [esp + 0x40], eax
imul eax, eax, 0xe
push 2
pop ebx
push eax
call fcn.1004bbfa
pop ecx
mov ecx, eax
mov dword [esp + 0x44], ecx
test ecx, ecx
je 0x1006a91f
test ebp, ebp
jle 0x1006a8d6
test edi, edi
je 0x1006a8d6
imul eax, ebp, 0xe
push eax
push edi
push ecx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
imul eax, dword [esp + 0x20], 0xe
imul ecx, ebp, 0xe
mov ebp, dword [esp + 0x44]
push eax
push dword [esp + 0x1c]
lea eax, [ecx + ebp]
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
test edi, edi
je 0x1006a8fe
push edi
call fcn.1004bc1c
pop ecx
push dword [esp + 0x18]
mov edi, ebp
call fcn.1004bc1c
mov ebp, dword [esp + 0x44]
pop ecx
mov eax, dword [esp + 0x38]
test al, 0x20
je 0x1006a56f
jmp 0x1006a58c
test edi, edi
je 0x1006a92a
push edi
call fcn.1004bc1c
pop ecx
cmp dword [esp + 0x18], 0
je 0x1006a93b
push dword [esp + 0x18]
call fcn.1004bc1c
pop ecx
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x50
ret