Function at 0x140029df0
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 [0x14015bdc8]
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 [0x14015bdc8]
lea rdx, [rsp + 0x40]
mov qword [rsp + 0x258], rax
call qword [sym.imp.KERNEL32.dll_TlsSetValue]
test eax, eax
jne 0x140029e41
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 0x140029e6e
addsd xmm1, qword [0x140137830]
movsd xmm0, qword [0x1401377c0]
movaps xmm4, xmm1
divsd xmm4, qword [0x140137818]
movaps xmm2, xmm4
movaps xmm3, xmm4
divsd xmm2, qword [0x1401377e8]
divsd xmm3, qword [0x1401377c8]
movaps xmm7, xmm2
movaps xmm6, xmm2
divsd xmm7, qword [0x1401377e0]
mulsd xmm6, qword [0x1401377d8]
movaps xmm5, xmm3
comisd xmm7, xmm0
mulsd xmm5, qword [0x1401377b8]
jb 0x140029eeb
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
jmp 0x14002a168
comisd xmm2, xmm0
jb 0x140029f06
cvttsd2si rax, xmm2
lea rcx, str.year
lea r8, str.years
jmp 0x140029ed1
comisd xmm6, xmm0
jb 0x140029f21
cvttsd2si rax, xmm6
lea rcx, str.month
lea r8, str.months
jmp 0x140029ed1
comisd xmm5, xmm0
jb 0x140029f3c
cvttsd2si rax, xmm5
lea rcx, str.fortnight
lea r8, str.fortnights
jmp 0x140029ed1
comisd xmm3, xmm0
jb 0x140029f5a
cvttsd2si rax, xmm3
lea rcx, str.week
lea r8, str.weeks
jmp 0x140029ed1
comisd xmm4, xmm0
movaps xmm2, xmm1
movaps xmm3, xmm1
divsd xmm2, qword [0x1401377f8]
divsd xmm3, qword [0x140137800]
movaps xmm5, xmm1
divsd xmm5, qword [0x140137808]
divsd xmm1, qword [0x140137810]
jb 0x14002a01d
cvttsd2si rax, xmm4
lea rcx, [0x1401251c8]
lea r8, str.days
cmp eax, 1
mov edx, eax
cmove r8, rcx
lea rcx, str._u__s
call sym.ProcessHacker.exe_PhaFormatString
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 0x14002a16b
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 sym.ProcessHacker.exe_PhaFormatString
jmp 0x14002a168
comisd xmm1, xmm0
jb 0x14002a09d
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 rax, rdx, 0x3c
sub rcx, rax
cmp ecx, 1
jb 0x14002a16b
lea rdx, str.minute
mov r8d, ecx
lea r9, str.minutes
cmove r9, rdx
jmp 0x14002a008
comisd xmm5, xmm0
jb 0x14002a113
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 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 rax, rdx, 0x3c
sub r10, rax
cmp r10d, 1
jb 0x14002a16b
lea rcx, str.second
lea r9, str.seconds
jmp 0x14002a001
comisd xmm3, xmm0
jb 0x14002a131
cvttsd2si rax, xmm3
lea rcx, str.second
lea r8, str.seconds
jmp 0x140029ed1
comisd xmm2, xmm0
jb 0x14002a14f
cvttsd2si rax, xmm2
lea rcx, str.millisecond
lea r8, str.milliseconds
jmp 0x140029ed1
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, [0x1401252bc]
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 0x14002a1ea
xor r8d, r8d
lea rdx, [rsp + 0x20]
lea rcx, [rsp + 0x30]
call sym.ProcessHacker.exe_PhEqualStringRef
test al, al
je 0x14002a1ea
mov rdx, qword [rbx + 8]
lea rcx, [0x1401252c4]
add rdx, 4
cmp word [rdx], 0x68
jne 0x14002a1da
lea rcx, [0x1401252d0]
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 [0x14015bdc8]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
lea rcx, [rsp + 0x40]
cmp rax, rcx
je 0x14002a21a
mov ecx, 0xc0000001
call qword [sym.imp.ntdll.dll_RtlRaiseStatus]
int3
mov rdx, qword [rsp + 0x258]
mov ecx, dword [0x14015bdc8]
call qword [sym.imp.KERNEL32.dll_TlsSetValue]
test eax, eax
jne 0x14002a23e
mov ecx, 0xc0000001
call qword [sym.imp.ntdll.dll_RtlRaiseStatus]
int3
mov r8, qword [rsp + 0x250]
test r8, r8
je 0x14002a25a
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