Function at 0x1400a9050
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
mov r11, rsp
push rdi
sub rsp, 0x280
xor eax, eax
mov rdi, rcx
mov ecx, dword [0x14015dac4]
mov dword [rsp + 0x40], eax
mov qword [r11 - 0x40], rax
mov qword [r11 - 0x38], rax
call qword [sym.imp.KERNEL32.DLL_TlsGetValue]
mov ecx, dword [0x14015dac4]
lea rdx, [rsp + 0x40]
mov qword [rsp + 0x258], rax
call qword [sym.imp.KERNEL32.DLL_TlsSetValue]
test eax, eax
jne 0x1400a90a1
mov ecx, 0xc0000001
call qword [sym.imp.ntdll.dll_RtlRaiseStatus]
int3
mov qword [rsp + 0x290], rbx
xorps xmm1, xmm1
movaps xmmword [rsp + 0x270], xmm6
movaps xmmword [rsp + 0x260], xmm7
cvtsi2sd xmm1, rdi
test rdi, rdi
jns 0x1400a90ce
addsd xmm1, qword [0x140138598]
movsd xmm0, qword [0x140138528]
movaps xmm4, xmm1
divsd xmm4, qword [0x140138580]
movaps xmm2, xmm4
movaps xmm3, xmm4
divsd xmm2, qword [0x140138550]
divsd xmm3, qword [0x140138530]
movaps xmm7, xmm2
movaps xmm6, xmm2
divsd xmm7, qword [0x140138548]
mulsd xmm6, qword [0x140138540]
movaps xmm5, xmm3
comisd xmm7, xmm0
mulsd xmm5, qword [0x140138520]
jb 0x1400a914b
cvttsd2si rax, xmm7
lea rcx, str.century
lea r8, str.centuries
cmp eax, 1
mov edx, eax
cmove r8, rcx
lea rcx, str._u__s
call fcn.1400015b0
jmp 0x1400a93c8
comisd xmm2, xmm0
jb 0x1400a9166
cvttsd2si rax, xmm2
lea rcx, str.year
lea r8, str.years
jmp 0x1400a9131
comisd xmm6, xmm0
jb 0x1400a9181
cvttsd2si rax, xmm6
lea rcx, str.month
lea r8, str.months
jmp 0x1400a9131
comisd xmm5, xmm0
jb 0x1400a919c
cvttsd2si rax, xmm5
lea rcx, str.fortnight
lea r8, str.fortnights
jmp 0x1400a9131
comisd xmm3, xmm0
jb 0x1400a91ba
cvttsd2si rax, xmm3
lea rcx, str.week
lea r8, str.weeks
jmp 0x1400a9131
comisd xmm4, xmm0
movaps xmm2, xmm1
movaps xmm3, xmm1
divsd xmm2, qword [0x140138560]
divsd xmm3, qword [0x140138568]
movaps xmm5, xmm1
divsd xmm5, qword [0x140138570]
divsd xmm1, qword [0x140138578]
jb 0x1400a927d
cvttsd2si rax, xmm4
lea rcx, [0x140133ba0]
lea r8, str.days
cmp eax, 1
mov edx, eax
cmove r8, rcx
lea rcx, str._u__s
call fcn.1400015b0
mov rbx, rax
xor edx, edx
movabs rcx, 0x861c46800
mov rax, rdi
div rcx
mov r10, rax
movabs rax, 0xaaaaaaaaaaaaaaab
mul r10
shr rdx, 4
lea rcx, [rdx + rdx*2]
shl rcx, 3
sub r10, rcx
cmp r10d, 1
jb 0x1400a93cb
lea rcx, str.hour
lea r9, str.hours
cmove r9, rcx
mov r8d, r10d
mov rdx, qword [rbx + 8]
lea rcx, str._s_and__u__s
call fcn.1400015b0
jmp 0x1400a93c8
comisd xmm1, xmm0
jb 0x1400a92fd
cvttsd2si rax, xmm1
lea rcx, str.hour
lea r8, str.hours
cmp eax, 1
mov edx, eax
cmove r8, rcx
lea rcx, str._u__s
call fcn.1400015b0
mov rbx, rax
movabs rax, 0xe5109ec205d7bea7
mul rdi
movabs rax, 0x8888888888888889
mov rcx, rdx
shr rcx, 0x1d
mul rcx
shr rdx, 5
imul rax, rdx, 0x3c
sub rcx, rax
cmp ecx, 1
jb 0x1400a93cb
lea rdx, str.minute
mov r8d, ecx
lea r9, str.minutes
cmove r9, rdx
jmp 0x1400a9268
comisd xmm5, xmm0
jb 0x1400a9373
cvttsd2si rax, xmm5
lea rdx, str.minute
lea r8, str.minutes
lea rcx, str._u__s
cmp eax, 1
cmove r8, rdx
mov edx, eax
call fcn.1400015b0
mov rbx, rax
movabs rax, 0xd6bf94d5e57a42bd
mul rdi
movabs rax, 0x8888888888888889
mov r10, rdx
shr r10, 0x17
mul r10
shr rdx, 5
imul rax, rdx, 0x3c
sub r10, rax
cmp r10d, 1
jb 0x1400a93cb
lea rcx, str.second
lea r9, str.seconds
jmp 0x1400a9261
comisd xmm3, xmm0
jb 0x1400a9391
cvttsd2si rax, xmm3
lea rcx, str.second
lea r8, str.seconds
jmp 0x1400a9131
comisd xmm2, xmm0
jb 0x1400a93af
cvttsd2si rax, xmm2
lea rcx, str.millisecond
lea r8, str.milliseconds
jmp 0x1400a9131
mov edx, 0x22
lea rcx, str.a_very_short_time
call sym.ProcessHacker.exe_PhCreateStringEx
mov rcx, rax
call sym.ProcessHacker.exe_PhAutoDereferenceObject
mov rbx, rax
cmp qword [rbx], 4
lea rax, [0x140133c94]
movaps xmm7, xmmword [rsp + 0x260]
movaps xmm6, xmmword [rsp + 0x270]
mov qword [rsp + 0x28], rax
mov rax, qword [rbx + 8]
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x20], 4
mov qword [rsp + 0x30], 4
jb 0x1400a944a
xor r8d, r8d
lea rdx, [rsp + 0x20]
lea rcx, [rsp + 0x30]
call sym.ProcessHacker.exe_PhEqualStringRef
test al, al
je 0x1400a944a
mov rdx, qword [rbx + 8]
lea rcx, [0x140133c9c]
add rdx, 4
cmp word [rdx], 0x68
jne 0x1400a943a
lea rcx, [0x140133ca8]
call sym.ProcessHacker.exe_PhConcatStrings2
mov rcx, rax
call sym.ProcessHacker.exe_PhAutoDereferenceObject
mov rbx, rax
lock inc dword [rbx - 8]
lea rcx, [rsp + 0x40]
call sym.ProcessHacker.exe_PhDrainAutoPool
mov ecx, dword [0x14015dac4]
call qword [sym.imp.KERNEL32.DLL_TlsGetValue]
lea rcx, [rsp + 0x40]
cmp rax, rcx
je 0x1400a947a
mov ecx, 0xc0000001
call qword [sym.imp.ntdll.dll_RtlRaiseStatus]
int3
mov rdx, qword [rsp + 0x258]
mov ecx, dword [0x14015dac4]
call qword [sym.imp.KERNEL32.DLL_TlsSetValue]
test eax, eax
jne 0x1400a949e
mov ecx, 0xc0000001
call qword [sym.imp.ntdll.dll_RtlRaiseStatus]
int3
mov r8, qword [rsp + 0x250]
test r8, r8
je 0x1400a94ba
mov rcx, qword [sym.ProcessHacker.exe_PhHeapHandle]
xor edx, edx
call qword [sym.imp.ntdll.dll_RtlFreeHeap]
mov rax, rbx
mov rbx, qword [rsp + 0x290]
add rsp, 0x280
pop rdi
ret