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

Disassembly:
mov rax, rsp
mov qword [rax + 0x10], rsi
push rdi
sub rsp, 0x260
xor esi, esi
mov rdi, rcx
mov ecx, dword [0x1400d5794]
mov dword [rsp + 0x20], esi
mov dword [rax - 0x40], esi
mov dword [rax - 0x3c], esi
mov qword [rax - 0x38], rsi
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, dword [0x1400d5794]
lea rdx, [rsp + 0x20]
mov qword [rsp + 0x238], rax
call qword [sym.imp.KERNEL32.dll_TlsSetValue]
test eax, eax
jne 0x140022327
mov ecx, 0xc0000001
call qword [sym.imp.ntdll.dll_RtlRaiseStatus]
int3
mov qword [rsp + 0x270], rbx
pxor xmm1, xmm1
movaps xmmword [rsp + 0x250], xmm6
movaps xmmword [rsp + 0x240], xmm7
cvtsi2sd xmm1, rdi
test rdi, rdi
jns 0x140022355
addsd xmm1, qword [0x1400bd750]
movsd xmm0, qword [0x1400bd7a8]
movapd xmm6, xmm1
divsd xmm6, qword [0x1400bd7a0]
movapd xmm2, xmm6
movapd xmm3, xmm6
divsd xmm2, qword [0x1400bd798]
divsd xmm3, qword [0x1400bd790]
movapd xmm7, xmm2
movapd xmm4, xmm3
movapd xmm5, xmm2
divsd xmm7, qword [0x1400bd788]
mulsd xmm4, qword [0x1400bd780]
mulsd xmm5, qword [0x1400bd778]
comisd xmm7, xmm0
jb 0x1400223db
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 sym.ProcessHacker.exe_PhaFormatString
mov rbx, rax
jmp 0x1400227a9
comisd xmm2, xmm0
jb 0x140022411
cvttsd2si rax, xmm2
lea rcx, str.year
lea r8, str.years
cmp eax, 1
mov edx, eax
cmove r8, rcx
lea rcx, str._u__s
call sym.ProcessHacker.exe_PhaFormatString
mov rbx, rax
jmp 0x1400227a9
comisd xmm5, xmm0
jb 0x140022447
cvttsd2si rax, xmm5
lea rcx, str.month
lea r8, str.months
cmp eax, 1
mov edx, eax
cmove r8, rcx
lea rcx, str._u__s
call sym.ProcessHacker.exe_PhaFormatString
mov rbx, rax
jmp 0x1400227a9
comisd xmm4, xmm0
jb 0x14002247d
cvttsd2si rax, xmm4
lea rcx, str.fortnight
lea r8, str.fortnights
cmp eax, 1
mov edx, eax
cmove r8, rcx
lea rcx, str._u__s
call sym.ProcessHacker.exe_PhaFormatString
mov rbx, rax
jmp 0x1400227a9
comisd xmm3, xmm0
jb 0x1400224b3
cvttsd2si rax, xmm3
lea rcx, str.week
lea r8, str.weeks
cmp eax, 1
mov edx, eax
cmove r8, rcx
lea rcx, str._u__s
call sym.ProcessHacker.exe_PhaFormatString
mov rbx, rax
jmp 0x1400227a9
comisd xmm6, xmm0
movapd xmm2, xmm1
movapd xmm3, xmm1
divsd xmm2, qword [0x1400bd770]
divsd xmm3, qword [0x1400bd768]
movapd xmm4, xmm1
divsd xmm4, qword [0x1400bd760]
divsd xmm1, qword [0x1400bd758]
jb 0x140022580
cvttsd2si rax, xmm6
lea rcx, [0x1400ada70]
lea r8, str.days
cmp eax, 1
mov edx, eax
cmove r8, rcx
lea rcx, str._u__s
call sym.ProcessHacker.exe_PhaFormatString
xor edx, edx
movabs rcx, 0x861c46800
mov rbx, rax
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 0x1400227a9
lea rcx, str.hour
cmp r10d, 1
lea r9, str.hours
cmove r9, rcx
lea rdx, [rbx + 0x10]
lea rcx, str._s_and__u__s
mov r8d, r10d
call sym.ProcessHacker.exe_PhaFormatString
mov rbx, rax
jmp 0x1400227a9
comisd xmm1, xmm0
jb 0x14002261a
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 sym.ProcessHacker.exe_PhaFormatString
mov rbx, rax
movabs rax, 0xe5109ec205d7bea7
mul rdi
movabs rax, 0x8888888888888889
mov rcx, rdx
shr rcx, 0x1d
mul rcx
shr rdx, 5
imul rdx, rdx, 0x3c
sub rcx, rdx
cmp ecx, 1
jb 0x1400227a9
cmp ecx, 1
lea rdx, str.minute
mov r8d, ecx
lea r9, str.minutes
lea rcx, str._s_and__u__s
cmove r9, rdx
lea rdx, [rbx + 0x10]
call sym.ProcessHacker.exe_PhaFormatString
mov rbx, rax
jmp 0x1400227a9
comisd xmm4, xmm0
jb 0x1400226b6
cvttsd2si rax, xmm4
lea rdx, str.minute
lea r8, str.minutes
lea rcx, str._u__s
cmp eax, 1
cmove r8, rdx
mov edx, eax
call sym.ProcessHacker.exe_PhaFormatString
mov rbx, rax
movabs rax, 0xd6bf94d5e57a42bd
mul rdi
movabs rax, 0x8888888888888889
mov r10, rdx
shr r10, 0x17
mul r10
shr rdx, 5
imul rdx, rdx, 0x3c
sub r10, rdx
cmp r10d, 1
jb 0x1400227a9
lea rcx, str.second
cmp r10d, 1
lea r9, str.seconds
cmove r9, rcx
lea rdx, [rbx + 0x10]
lea rcx, str._s_and__u__s
mov r8d, r10d
call sym.ProcessHacker.exe_PhaFormatString
mov rbx, rax
jmp 0x1400227a9
comisd xmm3, xmm0
jb 0x1400226ec
cvttsd2si rax, xmm3
lea rcx, str.second
lea r8, str.seconds
cmp eax, 1
mov edx, eax
cmove r8, rcx
lea rcx, str._u__s
call sym.ProcessHacker.exe_PhaFormatString
mov rbx, rax
jmp 0x1400227a9
comisd xmm2, xmm0
jb 0x140022722
cvttsd2si rax, xmm2
lea rcx, str.millisecond
lea r8, str.milliseconds
cmp eax, 1
mov edx, eax
cmove r8, rcx
lea rcx, str._u__s
call sym.ProcessHacker.exe_PhaFormatString
mov rbx, rax
jmp 0x1400227a9
mov rbx, qword [0x1400d91a8]
xor r8d, r8d
lea edx, [r8 + 0x34]
mov rcx, rbx
call fcn.14001fbe0
lock add dword [rbx + 0x18], 1
mov qword [rax + 0x10], rbx
mov dword [rax], 1
mov qword [rax + 8], 0x34
lea rbx, [rax + 0x20]
mov eax, 0x22
mov word [rbx], ax
mov word [rbx + 2], ax
lea rcx, [rbx + 0x10]
mov qword [rbx + 8], rcx
mov word [rbx + 0x32], si
mov rax, qword [str.a_very_short_time]
mov qword [rcx], rax
mov rax, qword [0x1400adb48]
mov qword [rcx + 8], rax
mov rax, qword [0x1400adb50]
mov qword [rcx + 0x10], rax
mov rax, qword [0x1400adb58]
mov qword [rcx + 0x18], rax
movzx eax, word [0x1400adb60]
mov word [rcx + 0x20], ax
mov rcx, rbx
call sym.ProcessHacker.exe_PhaDereferenceObject
lea rcx, [rbx + 0x10]
lea rdx, [0x1400adb64]
mov r8d, 2
call fcn.140095a60
movaps xmm7, xmmword [rsp + 0x240]
movaps xmm6, xmmword [rsp + 0x250]
test eax, eax
jne 0x140022818
cmp word [rbx + 0x14], 0x68
lea rdx, [rbx + 0x14]
je 0x1400227fc
lea rcx, [0x1400adb6c]
call sym.ProcessHacker.exe_PhConcatStrings2
mov rbx, rax
test rax, rax
je 0x140022818
mov rcx, rax
call sym.ProcessHacker.exe_PhaDereferenceObject
jmp 0x140022818
lea rcx, [0x1400adb78]
call sym.ProcessHacker.exe_PhConcatStrings2
mov rbx, rax
test rax, rax
je 0x140022818
mov rcx, rax
call sym.ProcessHacker.exe_PhaDereferenceObject
lea rcx, [rbx + 0x10]
lea rdx, str._ago
call sym.ProcessHacker.exe_PhConcatStrings2
lea rcx, [rsp + 0x20]
mov rbx, rax
call sym.ProcessHacker.exe_PhDrainAutoPool
mov ecx, dword [0x1400d5794]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
lea rcx, [rsp + 0x20]
cmp rax, rcx
je 0x140022857
mov ecx, 0xc0000001
call qword [sym.imp.ntdll.dll_RtlRaiseStatus]
int3
mov rdx, qword [rsp + 0x238]
mov ecx, dword [0x1400d5794]
call qword [sym.imp.KERNEL32.dll_TlsSetValue]
test eax, eax
jne 0x14002287b
mov ecx, 0xc0000001
call qword [sym.imp.ntdll.dll_RtlRaiseStatus]
int3
mov r8, qword [rsp + 0x230]
test r8, r8
je 0x140022897
mov rcx, qword [0x1400d8fb0]
xor edx, edx
call qword [sym.imp.ntdll.dll_RtlFreeHeap]
mov rsi, qword [rsp + 0x278]
mov rax, rbx
mov rbx, qword [rsp + 0x270]
add rsp, 0x260
pop rdi
ret