Function at 0x6c9670
Capabilities:
Execute anti-debugging instructions
Get thread local storage value

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x48
push esi
push edi
push dword [0x884c50]
mov esi, ecx
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov dword [esp + 0x10], eax
mov edi, dword [eax + 4]
cmp edi, dword [eax + 0xc]
jae 0x6c96b2
mov dword [edi], str.TtSphereCapsule
rdtsc
mov dword [esp + 0x14], eax
mov ecx, dword [esp + 0x14]
lea eax, [edi + 0xc]
mov dword [edi + 4], ecx
mov ecx, dword [esp + 0x10]
mov dword [ecx + 4], eax
mov eax, dword [ebp + 0x14]
mov edi, dword [eax]
mov eax, dword [ebp + 8]
mov dword [esp + 0x14], edi
mov ecx, dword [eax]
mov eax, dword [eax + 8]
mov dword [esp + 0x18], ecx
add eax, 0x30
mov ecx, dword [ebp + 0xc]
mov dword [esp + 0x10], eax
mov eax, dword [ecx + 8]
mov edx, dword [ecx]
lea ecx, [esp + 0x40]
mov dword [esp + 0x1c], edx
add edx, 0x30
movups xmm3, xmmword [eax]
movups xmm4, xmmword [eax + 0x10]
movups xmm5, xmmword [eax + 0x20]
movups xmm6, xmmword [eax + 0x30]
mov eax, 1
movaps xmm2, xmmword [edx]
sub edx, 0x10
movaps xmm1, xmm2
movaps xmm0, xmm2
shufps xmm1, xmm2, 0x55
shufps xmm0, xmm2, 0
shufps xmm2, xmm2, 0xaa
mulps xmm1, xmm4
mulps xmm0, xmm3
mulps xmm2, xmm5
addps xmm1, xmm0
addps xmm2, xmm6
addps xmm1, xmm2
movaps xmmword [ecx], xmm1
sub ecx, 0x10
sub eax, 1
jns 0x6c96f5
lea eax, [esp + 0x20]
push eax
lea eax, [esp + 0x44]
push eax
lea eax, [esp + 0x38]
push eax
push dword [esp + 0x1c]
call fcn.0064d740
mov eax, dword [esp + 0x20]
add esp, 0x10
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
movaps xmm3, xmmword [eax]
subps xmm3, xmmword [esp + 0x20]
movss xmm6, dword [ecx + 0x10]
mov ecx, dword [ebp + 0x10]
addss xmm6, dword [edx + 0x10]
movaps xmm2, xmm3
movss xmm1, dword [ecx + 0xc]
mulps xmm2, xmm3
addss xmm1, xmm6
movaps xmm0, xmm2
shufps xmm0, xmm2, 0x55
addss xmm0, xmm2
mulss xmm1, xmm1
shufps xmm2, xmm2, 0xaa
addss xmm2, xmm0
comiss xmm2, xmm1
jae 0x6c9927
xorps xmm7, xmm7
comiss xmm2, xmm7
jbe 0x6c97b3
xorps xmm0, xmm0
movaps xmmword [edi + 0x10], xmm3
sqrtss xmm0, xmm2
movss dword [esp + 0x10], xmm0
jmp 0x6c9852
movaps xmm1, xmmword [esp + 0x40]
subps xmm1, xmmword [esp + 0x30]
movaps xmm0, xmmword [0x719330]
movaps xmm4, xmm0
movss dword [esp + 0x10], xmm7
shufps xmm4, xmm0, 0xd2
shufps xmm0, xmm0, 0xc9
movaps xmm2, xmm1
shufps xmm2, xmm1, 0xd2
mulps xmm0, xmm2
shufps xmm1, xmm1, 0xc9
mulps xmm4, xmm1
subps xmm4, xmm0
movaps xmm0, xmmword [0x719490]
movaps xmm3, xmm0
shufps xmm3, xmm0, 0xd2
shufps xmm0, xmm0, 0xc9
mulps xmm0, xmm2
mulps xmm3, xmm1
movaps xmm2, xmm4
mulps xmm2, xmm4
subps xmm3, xmm0
movaps xmm0, xmm2
shufps xmm0, xmm2, 0x55
addss xmm0, xmm2
shufps xmm2, xmm2, 0xaa
movaps xmm1, xmm3
mulps xmm1, xmm3
addss xmm2, xmm0
movaps xmm0, xmm1
shufps xmm0, xmm1, 0x55
addss xmm0, xmm1
shufps xmm1, xmm1, 0xaa
shufps xmm2, xmm2, 0
addss xmm1, xmm0
shufps xmm1, xmm1, 0
cmpltps xmm2, xmm1
movaps xmm0, xmm2
andnps xmm2, xmm4
andps xmm0, xmm3
orps xmm0, xmm2
movaps xmmword [edi + 0x10], xmm0
movaps xmm5, xmmword [edi + 0x10]
movaps xmm1, xmm5
mulps xmm1, xmm5
movaps xmm0, xmm1
shufps xmm0, xmm1, 0x55
addss xmm0, xmm1
shufps xmm1, xmm1, 0xaa
addss xmm1, xmm0
movaps xmm0, xmm7
shufps xmm1, xmm1, 0
movaps xmm3, xmm1
movaps xmm4, xmm1
rsqrtss xmm3, xmm3
mulss xmm1, xmm3
cmpeqss xmm4, xmm0
movss xmm0, dword [0x719764]
movaps xmm2, xmm0
movss xmm0, dword [0x719760]
mulss xmm1, xmm3
subss xmm2, xmm1
movaps xmm1, xmm0
mulss xmm1, xmm3
mulss xmm1, xmm2
andnps xmm4, xmm1
movss xmm1, dword [esp + 0x10]
shufps xmm4, xmm4, 0
mulps xmm4, xmm5
movaps xmmword [edi + 0x10], xmm4
movss xmm0, dword [edx + 0x10]
subss xmm0, xmm1
subss xmm1, xmm6
shufps xmm0, xmm0, 0
mulps xmm0, xmmword [edi + 0x10]
addps xmm0, xmmword [eax]
movaps xmmword [edi], xmm0
movss dword [edi + 0x1c], xmm1
mov edi, 0xffff
cmp word [esi + 0xc], di
jne 0x6c990f
push dword [esp + 0x14]
mov ecx, dword [esi + 8]
mov edx, dword [ebp + 0x14]
push 0
push edx
push dword [ebp + 0x10]
mov eax, dword [ecx]
push dword [ebp + 0xc]
push dword [ebp + 8]
mov eax, dword [eax + 0xc]
call eax
mov word [esi + 0xc], ax
movzx eax, word [esi + 0xc]
cmp ax, di
je 0x6c994c
mov ecx, dword [esp + 0x14]
mov dword [ecx + 0x20], eax
mov eax, dword [ebp + 0x14]
add dword [eax], 0x30
jmp 0x6c994c
movzx eax, word [esi + 0xc]
mov edi, 0xffff
cmp ax, di
je 0x6c994c
mov ecx, dword [esi + 8]
mov edx, dword [ebp + 0x14]
mov eax, dword [ecx]
push dword [edx + 4]
movzx edx, word [esi + 0xc]
push edx
call dword [eax + 0x14]
mov word [esi + 0xc], di
push dword [0x884c50]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov edi, eax
mov esi, dword [edi + 4]
cmp esi, dword [edi + 0xc]
jae 0x6c997b
mov dword [esi], 0x77f5ec
rdtsc
mov dword [esp + 0x1c], eax
mov ecx, dword [esp + 0x1c]
lea eax, [esi + 0xc]
mov dword [esi + 4], ecx
mov dword [edi + 4], eax
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x10