Function at 0x140028664
Capabilities:
Get thread local storage value

Disassembly:
sub rsp, 0xb8
mov qword [rsp + 0x70], rdx
mov qword [rsp + 0x68], rcx
mov ecx, dword [0x1401ab0a0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rcx, qword [rsp + 0x68]
mov rdx, qword [rsp + 0x70]
add rax, 0x60
mov qword [rsp + 0x78], rax
mov rax, qword [rcx]
mov qword [rsp + 0x80], rax
cmp rax, rdx
jle 0x1400286bc
mov rdx, qword [rsp + 0x70]
mov rcx, qword [rsp + 0x68]
call fcn.1400284a2
jmp 0x140028957
mov rax, qword [rsp + 0x80]
mov rcx, qword [rsp + 0x70]
cmp rax, rcx
jge 0x140028957
mov rax, qword [rsp + 0x68]
mov rcx, rax
add rcx, 8
mov qword [rsp + 0x58], rcx
mov rax, qword [rax + 8]
mov qword [rsp + 0x60], rax
cmp rax, 0
je 0x140028753
mov rcx, qword [rsp + 0x70]
mov rax, qword [rsp + 0x60]
mov rax, qword [rax]
movabs r8, 0x373943c31036f98b
movabs rdx, 0x373943c31036f98a
xor r8, rdx
mov rdx, rax
add rdx, r8
movabs r8, 0x616c4ffeedb2f11c
movabs r9, 0x9e93b001124d0ee3
xor r8, r9
xor rax, r8
movabs r8, 0xbfffffffffffffff
or rax, r8
add rax, rdx
cmp rax, rcx
jge 0x140028808
mov r8, qword [rsp + 0x80]
mov rax, qword [rsp + 0x70]
mov rdx, rax
sub rdx, r8
mov qword [rsp + 0x50], rdx
mov r9, rdx
xor r9, rax
not r9
mov rcx, rax
and rcx, r9
add rcx, rcx
sub rax, rcx
mov rcx, rdx
add rcx, rax
test rcx, rcx
sets al
xor rdx, r8
and rcx, rdx
test rcx, rcx
setns cl
add al, cl
inc al
test al, 1
jne 0x1400287fe
mov r8, qword [rsp + 0x50]
mov rdx, qword [rsp + 0x60]
mov rcx, qword [rsp + 0x80]
movabs r9, 0x15609f9913010b20
movabs rax, 0x15609f9913010b10
xor r9, rax
movabs rax, 0x47812a9a66259c50
movabs r10, 0x47812a9a66259c58
xor rax, r10
mov qword [rsp + 0x20], rax
call fcn.1400184ef
mov rcx, rax
mov rax, qword [rsp + 0x58]
mov qword [rax], rcx
jmp 0x140028808
call fcn.14000a590
jmp 0x140028957
mov rax, qword [rsp + 0x80]
mov rcx, qword [rsp + 0x68]
mov rdx, qword [rsp + 0x70]
mov qword [rcx], rdx
mov qword [rsp + 0x48], rax
mov rax, qword [rsp + 0x48]
mov qword [rsp + 0x38], rax
mov ecx, dword [0x1401ab0a0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
xor eax, eax
mov qword [rsp + 0x40], rax
mov rax, qword [rsp + 0x40]
xorps xmm0, xmm0
movups xmmword [rsp + rax + 0x88], xmm0
xor ecx, ecx
sub rcx, rax
movabs rax, 0x270eb300acbb4c77
movabs rdx, 0x270eb300acbb4c77
xor rax, rdx
movabs rdx, 0x53586a748ece41a8
movabs r8, 0x53586a748ece41b8
xor rdx, r8
sub rax, rdx
add rcx, rax
movabs rax, 0x1d68601aaf3cca6a
movabs rdx, 0x1d68601aaf3cca6a
xor rax, rdx
sub rax, rcx
cmp rax, 0x30
mov qword [rsp + 0x40], rax
jne 0x14002883f
mov rax, qword [rsp + 0x38]
mov rcx, qword [rsp + 0x58]
mov rcx, qword [rcx]
add rcx, 8
imul rax, rax, 0x30
add rcx, rax
lea rdx, [rsp + 0x88]
call fcn.140052923
mov rax, qword [rsp + 0x78]
mov al, byte [rax]
mov cl, 0x29
xor cl, 0x29
cmp al, cl
jne 0x140028935
mov rcx, qword [rsp + 0x38]
movabs rax, 0x65ec755996ef7fa0
movabs rdx, 0x65ec755996ef7fa1
xor rax, rdx
mov rdx, rcx
and rdx, rax
shl rdx, 1
mov rax, rcx
xor rax, 1
add rax, rdx
mov qword [rsp + 0x30], rax
xor rcx, 0xffffffffffffffff
and rax, rcx
cmp rax, 0
jge 0x14002893a
call fcn.14000a590
jmp 0x140028957
mov rax, qword [rsp + 0x30]
mov rcx, qword [rsp + 0x70]
cmp rax, rcx
mov qword [rsp + 0x48], rax
je 0x140028935
jmp 0x140028822
add rsp, 0xb8
ret
sub rsp, 0x38
mov qword [rsp + 0x30], rdx
mov qword [rsp + 0x28], rcx
xor eax, eax
mov edx, eax
call fcn.1400284a2
mov rcx, qword [rsp + 0x28]
mov rdx, qword [rsp + 0x30]
add rsp, 0x38
jmp 0x140028664