Function at 0x6f9600
Capabilities:
Execute anti-debugging instructions
Get thread local storage value
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0xc8
push esi
push edi
push dword [0x884c50]
mov esi, ecx
mov dword [esp + 0x10], esi
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov dword [esp + 0x24], eax
mov edi, dword [eax + 4]
cmp edi, dword [eax + 0xc]
jae 0x6f9649
mov dword [edi], str.TtcheckSupport
rdtsc
mov dword [esp + 8], eax
mov ecx, dword [esp + 8]
lea eax, [edi + 0xc]
mov dword [edi + 4], ecx
mov ecx, dword [esp + 0x24]
mov dword [ecx + 4], eax
cmp byte [esi + 0xbc], 0
je 0x6f965c
push dword [ebp + 0x10]
mov ecx, esi
call fcn.006f9e40
mov edi, dword [esi + 0x14]
add edi, 0xa
mov dword [esp + 0x10], 0
add edi, dword [esi + 0x94]
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], connect
mov dword [esp + 0x20], edi
je 0x6f96d9
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, edi
shl ecx, 6
add ecx, 0x7f
mov edx, dword [eax + 0xc]
and ecx, 0xffffff80
lea esi, [edx + ecx]
mov dword [esp + 8], esi
mov esi, dword [esp + 0xc]
cmp ecx, dword [eax + 8]
jg 0x6f96c9
lea esi, [edx + ecx]
cmp esi, dword [eax + 0x10]
mov esi, dword [esp + 0xc]
ja 0x6f96c9
mov ecx, dword [esp + 8]
mov dword [eax + 0xc], ecx
mov dword [esp + 0x10], edx
jmp 0x6f96e1
push ecx
mov ecx, eax
call fcn.0046a3c0
mov edx, eax
mov dword [esp + 0x10], edx
jmp 0x6f96e1
mov dword [esp + 0x10], 0
mov ecx, dword [esi + 0x14]
or edi, 0x80000000
mov eax, dword [esp + 0x10]
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], eax
mov dword [esp + 0x14], ecx
test ecx, ecx
jle 0x6f976e
xor ecx, ecx
xor edi, edi
mov dword [esp + 8], ecx
mov dword [esp + 0x24], ecx
nop word [eax + eax]
mov eax, dword [esp + 0x10]
add eax, dword [esp + 0x24]
mov edx, dword [esi]
push ecx
mov dword [esp], 0
mov ecx, esi
push eax
mov eax, dword [esi + 0x10]
add eax, dword [esp + 0x10]
push eax
call dword [edx + 0x10]
movss xmm0, dword [esi + 0xb0]
lea eax, [esp + 0x10]
push eax
push edi
lea eax, [esi + 0x70]
push eax
push ecx
movss dword [esp], xmm0
call fcn.006fcef0
mov ecx, dword [esp + 0x18]
inc edi
add dword [esp + 0x34], 0x40
add ecx, 0x30
add esp, 0x10
mov dword [esp + 8], ecx
cmp edi, dword [esi + 0x14]
jl 0x6f9710
mov edi, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
mov edx, dword [esi + 0x94]
and edi, 0x3fffffff
mov eax, edi
sub eax, ecx
cmp eax, edx
jge 0x6f97a9
add edx, ecx
cmp edi, edx
jge 0x6f97a9
lea eax, [edi + edi]
cmp edx, eax
push 0x40
cmovl edx, eax
lea eax, [esp + 0x14]
push edx
push eax
push 0x7d8954
call fcn.00467b80
mov ecx, dword [esp + 0x24]
add esp, 0x10
mov edi, dword [esi + 0x94]
add edi, ecx
mov dword [esp + 0x3c], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x44], connect
mov dword [esp + 0x4c], edi
je 0x6f9822
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, edi
shl ecx, 4
add ecx, 0x7f
mov edx, dword [eax + 0xc]
and ecx, 0xffffff80
lea esi, [edx + ecx]
mov dword [esp + 8], esi
mov esi, dword [esp + 0xc]
cmp ecx, dword [eax + 8]
jg 0x6f9812
lea esi, [edx + ecx]
cmp esi, dword [eax + 0x10]
mov esi, dword [esp + 0xc]
ja 0x6f9812
mov ecx, dword [esp + 8]
mov dword [eax + 0xc], ecx
mov ecx, dword [esp + 0x14]
jmp 0x6f9824
push ecx
mov ecx, eax
call fcn.0046a3c0
mov ecx, dword [esp + 0x14]
mov edx, eax
jmp 0x6f9824
xor edx, edx
or edi, 0x80000000
mov dword [esp + 0x3c], edx
mov dword [esp + 0x44], edi
mov edi, dword [esi + 0x94]
add edi, ecx
mov dword [esp + 0x48], edx
mov dword [esp + 0x28], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x30], connect
mov dword [esp + 0x38], edi
je 0x6f98b7
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov edx, eax
mov ecx, edi
shl ecx, 4
add ecx, 0x7f
and ecx, 0xffffff80
mov eax, dword [edx + 0xc]
lea esi, [eax + ecx]
mov dword [esp + 8], esi
mov esi, dword [esp + 0xc]
cmp ecx, dword [edx + 8]
jg 0x6f98a5
lea esi, [eax + ecx]
cmp esi, dword [edx + 0x10]
mov esi, dword [esp + 0xc]
ja 0x6f98a5
mov ecx, dword [esp + 8]
mov dword [edx + 0xc], ecx
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x3c]
jmp 0x6f98b9
push ecx
mov ecx, edx
call fcn.0046a3c0
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x3c]
jmp 0x6f98b9
xor eax, eax
mov dword [esp + 0x28], eax
xorps xmm0, xmm0
mov dword [esp + 0x34], eax
or edi, 0x80000000
mov eax, dword [esp + 0x10]
mov dword [esp + 0x98], eax
mov eax, dword [ebp + 8]
movaps xmmword [esp + 0x50], xmm0
mov dword [esp + 0x9c], ecx
mov ecx, esi
mov dword [esp + 0x30], edi
movaps xmm0, xmmword [eax]
lea eax, [esp + 0x50]
movaps xmmword [esp + 0x60], xmm0
movaps xmm0, xmmword [esi + 0x70]
movaps xmmword [esp + 0x80], xmm0
movss xmm0, dword [esi + 0x98]
push eax
lea eax, [esi + 0x10]
shufps xmm0, xmm0, 0
push eax
mov dword [esp + 0x98], 0x3c888889
mov dword [esp + 0x9c], 0x3c888889
movaps xmmword [esp + 0x78], xmm0
mov dword [esp + 0xcc], edx
call fcn.006fc450
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x9c]
and eax, 0x3fffffff
mov edi, ecx
cmp eax, ecx
jge 0x6f9973
add eax, eax
cmp ecx, eax
push 0x10
cmovl ecx, eax
lea eax, [esp + 0x2c]
push ecx
push eax
push 0x7d8954
call fcn.00467b80
mov ecx, dword [esp + 0xac]
add esp, 0x10
mov eax, dword [esp + 0x44]
and eax, 0x3fffffff
mov dword [esp + 0x2c], edi
mov edi, ecx
cmp eax, ecx
jge 0x6f99a9
add eax, eax
cmp ecx, eax
push 0x10
cmovl ecx, eax
lea eax, [esp + 0x40]
push ecx
push eax
push 0x7d8954
call fcn.00467b80
mov ecx, dword [esp + 0xac]
add esp, 0x10
mov eax, dword [esp + 0x18]
and eax, 0x3fffffff
mov dword [esp + 0x40], edi
mov edi, ecx
cmp eax, ecx
jge 0x6f99df
add eax, eax
cmp ecx, eax
push 0x40
cmovl ecx, eax
lea eax, [esp + 0x14]
push ecx
push eax
push 0x7d8954
call fcn.00467b80
mov ecx, dword [esp + 0xac]
add esp, 0x10
mov dword [esp + 0x14], edi
xor edi, edi
test ecx, ecx
jle 0x6f9a1b
xor ecx, ecx
xorps xmm1, xmm1
xor edx, edx
mov eax, dword [esp + 0x10]
lea edx, [edx + 0x10]
inc edi
lea ecx, [ecx + 0x40]
movaps xmm0, xmmword [ecx + eax - 0x30]
mov eax, dword [esp + 0x28]
movaps xmmword [edx + eax - 0x10], xmm0
mov eax, dword [esp + 0x10]
movaps xmmword [ecx + eax - 0x30], xmm1
cmp edi, dword [esp + 0x9c]
jl 0x6f99f0
lea eax, [esp + 0xa0]
push eax
lea eax, [esp + 0x54]
push eax
call fcn.0070ac20
mov ecx, dword [ebp + 0xc]
xorps xmm0, xmm0
mov eax, dword [ebp + 8]
add esp, 8
movaps xmm6, xmmword [esp + 0xb0]
movaps xmmword [ecx + 0x20], xmm0
movaps xmmword [ecx + 0x10], xmm0
movaps xmm0, xmm6
movaps xmm5, xmmword [eax]
subps xmm0, xmm5
andps xmm0, xmmword [0x719140]
cmpleps xmm0, xmmword [0x719d90]
movmskps eax, xmm0
and eax, 7
cmp al, 7
je 0x6f9c62
movss xmm7, dword [0x718824]
movaps xmm4, xmm6
mulps xmm4, xmm6
movaps xmm0, xmm4
movaps xmm1, xmm4
shufps xmm0, xmm4, 0x55
addss xmm0, xmm4
shufps xmm1, xmm4, 0xaa
addss xmm1, xmm0
movss xmm0, dword [0x718818]
comiss xmm0, xmm1
jbe 0x6f9aab
mov dword [ecx], 2
jmp 0x6f9b4b
movaps xmm0, xmm4
xorps xmm1, xmm1
shufps xmm0, xmm4, 0x55
xor eax, eax
addss xmm0, xmm4
shufps xmm4, xmm4, 0xaa
addss xmm4, xmm0
movaps xmm0, xmm1
shufps xmm4, xmm4, 0
movaps xmm2, xmm4
movaps xmm3, xmm4
cmpeqss xmm3, xmm0
movss xmm0, dword [0x719764]
rsqrtss xmm2, xmm2
mulss xmm4, xmm2
movaps xmm1, xmm0
mulss xmm4, xmm2
subss xmm1, xmm4
movss xmm4, dword [0x719760]
movaps xmm0, xmm4
mulss xmm0, xmm2
mulss xmm0, xmm1
movss xmm1, dword [esi + 0xb0]
mulss xmm1, xmm1
andnps xmm3, xmm0
shufps xmm3, xmm3, 0
mulps xmm3, xmm6
mulps xmm5, xmm3
movaps xmmword [esp + 0xb0], xmm3
movaps xmm0, xmm5
shufps xmm0, xmm5, 0x55
addss xmm0, xmm5
shufps xmm5, xmm5, 0xaa
addss xmm5, xmm0
movaps xmm0, xmm7
mulss xmm5, xmm5
subss xmm0, xmm5
comiss xmm1, xmm0
setbe al
inc eax
mov dword [ecx], eax
mov esi, dword [esp + 0x9c]
xor edi, edi
test esi, esi
jle 0x6f9c62
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x28]
sub ecx, eax
mov edx, dword [esp + 0x10]
movss xmm3, dword [0x7c38f0]
mov dword [esp + 8], ecx
nop word [eax + eax]
mov ecx, dword [esp + 8]
cmp byte [ecx + eax], 0
mov ecx, dword [ebp + 0xc]
je 0x6f9bc8
mov ecx, dword [ebp + 8]
movaps xmm2, xmmword [edx]
movaps xmm1, xmmword [ecx]
mov ecx, dword [ebp + 0xc]
mulps xmm1, xmm2
movaps xmm0, xmm1
shufps xmm0, xmm1, 0x55
addss xmm0, xmm1
shufps xmm1, xmm1, 0xaa
addss xmm1, xmm0
comiss xmm3, xmm1
jbe 0x6f9bc8
addps xmm2, xmmword [ecx + 0x10]
inc edi
movaps xmmword [ecx + 0x10], xmm2
movaps xmm0, xmmword [ecx + 0x20]
addps xmm0, xmmword [eax]
movaps xmmword [ecx + 0x20], xmm0
add edx, 0x40
add eax, 0x10
sub esi, 1
jne 0x6f9b80
test edi, edi
jle 0x6f9c62
movaps xmm5, xmmword [ecx + 0x10]
xorps xmm1, xmm1
movaps xmm4, xmm5
mulps xmm4, xmm5
movaps xmm0, xmm4
shufps xmm0, xmm4, 0x55
addss xmm0, xmm4
shufps xmm4, xmm4, 0xaa
addss xmm4, xmm0
movaps xmm0, xmm1
shufps xmm4, xmm4, 0
movaps xmm2, xmm4
movaps xmm3, xmm4
rsqrtss xmm2, xmm2
cmpeqss xmm3, xmm0
mulss xmm4, xmm2
movss xmm0, dword [0x719764]
movaps xmm1, xmm0
mulss xmm4, xmm2
subss xmm1, xmm4
movss xmm4, dword [0x719760]
movaps xmm0, xmm4
mulss xmm0, xmm2
mulss xmm0, xmm1
andnps xmm3, xmm0
movd xmm0, edi
cvtdq2ps xmm0, xmm0
shufps xmm3, xmm3, 0
divss xmm7, xmm0
mulps xmm3, xmm5
shufps xmm7, xmm7, 0
movaps xmmword [ecx + 0x10], xmm3
mulps xmm7, xmmword [ecx + 0x20]
movaps xmmword [ecx + 0x20], xmm7
jmp 0x6f9c68
mov dword [ecx], 0
mov dword [ecx + 0x30], 0
push dword [0x884c50]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov edi, eax
mov esi, dword [edi + 4]
cmp esi, dword [edi + 0xc]
jae 0x6f9c9e
mov dword [esi], 0x77f5ec
rdtsc
mov dword [esp + 8], eax
mov ecx, dword [esp + 8]
lea eax, [esi + 0xc]
mov dword [esi + 4], ecx
mov dword [edi + 4], eax
mov edi, dword [esp + 0x34]
xor ecx, ecx
mov eax, dword [esp + 0x2c]
cmp edi, dword [esp + 0x28]
mov esi, dword [esp + 0x38]
push dword [0x884adc]
cmove eax, ecx
shl esi, 4
add esi, 0x7f
mov dword [esp + 0x30], eax
and esi, 0xffffff80
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
lea edx, [esi + 0xf]
and edx, 0xfffffff0
cmp esi, dword [eax + 8]
jg 0x6f9ce9
lea ecx, [edx + edi]
cmp ecx, dword [eax + 0xc]
jne 0x6f9ce9
cmp dword [eax + 0x14], edi
je 0x6f9ce9
mov dword [eax + 0xc], edi
jmp 0x6f9cf2
push edx
push edi
mov ecx, eax
call fcn.0046a590
mov eax, dword [esp + 0x30]
mov dword [esp + 0x2c], 0
test eax, eax
js 0x6f9d1c
and eax, 0x3fffffff
mov ecx, 0x7d8954
shl eax, 4
push eax
mov eax, dword [0x7d8954]
push dword [esp + 0x2c]
call dword [eax + 0x10]
mov edi, dword [esp + 0x48]
xor ecx, ecx
mov eax, dword [esp + 0x40]
cmp edi, dword [esp + 0x3c]
mov esi, dword [esp + 0x4c]
push dword [0x884adc]
cmove eax, ecx
mov dword [esp + 0x2c], 0
shl esi, 4
add esi, 0x7f
mov dword [esp + 0x34], connect
mov dword [esp + 0x44], eax
and esi, 0xffffff80
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
lea edx, [esi + 0xf]
and edx, 0xfffffff0
cmp esi, dword [eax + 8]
jg 0x6f9d77
lea ecx, [edx + edi]
cmp ecx, dword [eax + 0xc]
jne 0x6f9d77
cmp dword [eax + 0x14], edi
je 0x6f9d77
mov dword [eax + 0xc], edi
jmp 0x6f9d80
push edx
push edi
mov ecx, eax
call fcn.0046a590
mov eax, dword [esp + 0x44]
mov dword [esp + 0x40], 0
test eax, eax
js 0x6f9daa
and eax, 0x3fffffff
mov ecx, 0x7d8954
shl eax, 4
push eax
mov eax, dword [0x7d8954]
push dword [esp + 0x40]
call dword [eax + 0x10]
mov edi, dword [esp + 0x1c]
xor ecx, ecx
mov eax, dword [esp + 0x14]
cmp edi, dword [esp + 0x10]
mov esi, dword [esp + 0x20]
push dword [0x884adc]
cmove eax, ecx
mov dword [esp + 0x40], 0
shl esi, 6
add esi, 0x7f
mov dword [esp + 0x48], connect
mov dword [esp + 0x18], eax
and esi, 0xffffff80
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
lea edx, [esi + 0xf]
and edx, 0xfffffff0
cmp esi, dword [eax + 8]
jg 0x6f9e05
lea ecx, [edx + edi]
cmp ecx, dword [eax + 0xc]
jne 0x6f9e05
cmp dword [eax + 0x14], edi
je 0x6f9e05
mov dword [eax + 0xc], edi
jmp 0x6f9e0e
push edx
push edi
mov ecx, eax
call fcn.0046a590
mov eax, dword [esp + 0x18]
mov dword [esp + 0x14], 0
test eax, eax
js 0x6f9e38
and eax, 0x3fffffff
mov ecx, 0x7d8954
shl eax, 6
push eax
mov eax, dword [0x7d8954]
push dword [esp + 0x14]
call dword [eax + 0x10]
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0xc