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

Disassembly:
mov rax, rsp
mov qword [rax + 8], rbx
push rdi
sub rsp, 0x280
xor ebx, ebx
mov rdi, rcx
mov ecx, dword [0x140190208]
mov dword [rsp + 0x40], ebx
mov qword [rax - 0x40], rbx
mov qword [rax - 0x38], rbx
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, dword [0x140190208]
lea rdx, [rsp + 0x40]
mov qword [rsp + 0x258], rax
call qword [sym.imp.KERNEL32.dll_TlsSetValue]
test eax, eax
je 0x1400d213d
movaps xmmword [rsp + 0x270], xmm6
xorps xmm1, xmm1
movaps xmmword [rsp + 0x260], xmm7
test rdi, rdi
js 0x1400d1d0c
cvtsi2sd xmm1, rdi
jmp 0x1400d1d24
mov rax, rdi
mov rcx, rdi
shr rcx, 1
and eax, 1
or rcx, rax
cvtsi2sd xmm1, rcx
addsd xmm1, xmm1
movsd xmm0, qword [0x14016ae58]
movaps xmm6, xmm1
divsd xmm6, qword [0x14016aeb0]
movaps xmm2, xmm6
movaps xmm3, xmm6
divsd xmm2, qword [0x14016ae80]
divsd xmm3, qword [0x14016ae60]
movaps xmm7, xmm2
movaps xmm5, xmm2
divsd xmm7, qword [0x14016ae78]
mulsd xmm5, qword [0x14016ae70]
movaps xmm4, xmm3
comisd xmm7, xmm0
mulsd xmm4, qword [0x14016ae50]
jb 0x1400d1d9f
cvttsd2si rdx, xmm7
lea rax, str.century
lea r8, str.centuries
cmp edx, 1
lea rcx, str._u__s
cmove r8, rax
call fcn.1400013f0
jmp 0x1400d204f
comisd xmm2, xmm0
jb 0x1400d1dba
cvttsd2si rdx, xmm2
lea rax, str.year
lea r8, str.years
jmp 0x1400d1d87
comisd xmm5, xmm0
jb 0x1400d1dd5
cvttsd2si rdx, xmm5
lea rax, str.month
lea r8, str.months
jmp 0x1400d1d87
comisd xmm4, xmm0
jb 0x1400d1df0
cvttsd2si rdx, xmm4
lea rax, str.fortnight
lea r8, str.fortnights
jmp 0x1400d1d87
comisd xmm3, xmm0
jb 0x1400d1e0e
cvttsd2si rdx, xmm3
lea rax, str.week
lea r8, str.weeks
jmp 0x1400d1d87
comisd xmm6, xmm0
movaps xmm2, xmm1
movaps xmm3, xmm1
divsd xmm2, qword [0x14016ae90]
divsd xmm3, qword [0x14016ae98]
movaps xmm4, xmm1
divsd xmm4, qword [0x14016aea0]
divsd xmm1, qword [0x14016aea8]
jb 0x1400d1ecf
cvttsd2si rdx, xmm6
lea rax, [0x140166500]
lea r8, str.days
lea rcx, str._u__s
cmp edx, 1
cmove r8, rax
call fcn.1400013f0
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 0x1400d2052
lea rax, str.hour
mov r8d, r10d
lea r9, str.hours
mov rdx, qword [rbx + 8]
lea rcx, str._s_and__u__s
cmove r9, rax
call fcn.1400013f0
jmp 0x1400d204f
comisd xmm1, xmm0
jb 0x1400d1f49
cvttsd2si rdx, xmm1
lea rax, str.hour
lea r8, str.hours
lea rcx, str._u__s
cmp edx, 1
cmove r8, rax
call fcn.1400013f0
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 0x1400d2052
lea rax, str.minute
mov r8d, ecx
lea r9, str.minutes
jmp 0x1400d1eb6
comisd xmm4, xmm0
jb 0x1400d1fc3
cvttsd2si rdx, xmm4
lea rax, str.minute
lea r8, str.minutes
lea rcx, str._u__s
cmp edx, 1
cmove r8, rax
call fcn.1400013f0
mov rbx, rax
movabs rax, 0xd6bf94d5e57a42bd
mul rdi
movabs rax, 0x8888888888888889
mov rcx, rdx
shr rcx, 0x17
mul rcx
shr rdx, 5
imul rax, rdx, 0x3c
sub rcx, rax
cmp ecx, 1
jb 0x1400d2052
lea rax, str.second
mov r8d, ecx
lea r9, str.seconds
jmp 0x1400d1eb6
comisd xmm3, xmm0
jb 0x1400d1fe1
cvttsd2si rdx, xmm3
lea rax, str.second
lea r8, str.seconds
jmp 0x1400d1d87
comisd xmm2, xmm0
jb 0x1400d1fff
cvttsd2si rdx, xmm2
lea rax, str.millisecond
lea r8, str.milliseconds
jmp 0x1400d1d87
mov rdx, qword [0x140191180]
mov ecx, 0x34
call sym.4yUlCM3HuVsHzW5CaCX.exe_PhCreateObject
mov qword [rax], 0x22
lea rcx, [rax + 0x10]
mov qword [rax + 8], rcx
mov word [rcx + 0x22], bx
mov rdx, qword [rax + 8]
movups xmm0, xmmword [str.a_very_short_time]
movups xmmword [rdx], xmm0
movups xmm1, xmmword [0x1401665e0]
movups xmmword [rdx + 0x10], xmm1
movzx ecx, word [0x1401665f0]
mov word [rdx + 0x20], cx
mov rcx, rax
call sym.4yUlCM3HuVsHzW5CaCX.exe_PhAutoDereferenceObject
mov rbx, rax
cmp qword [rbx], 4
lea rax, [0x1401665f4]
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 0x1400d20d1
xor r8d, r8d
lea rdx, [rsp + 0x20]
lea rcx, [rsp + 0x30]
call sym.4yUlCM3HuVsHzW5CaCX.exe_PhEqualStringRef
test al, al
je 0x1400d20d1
mov rdx, qword [rbx + 8]
lea rcx, [0x1401665fc]
add rdx, 4
cmp word [rdx], 0x68
jne 0x1400d20c1
lea rcx, [0x140166608]
call sym.4yUlCM3HuVsHzW5CaCX.exe_PhConcatStrings2
mov rcx, rax
call sym.4yUlCM3HuVsHzW5CaCX.exe_PhAutoDereferenceObject
mov rbx, rax
lock inc dword [rbx - 8]
lea rcx, [rsp + 0x40]
call sym.4yUlCM3HuVsHzW5CaCX.exe_PhDrainAutoPool
mov ecx, dword [0x140190208]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
lea rcx, [rsp + 0x40]
cmp rax, rcx
jne 0x1400d213d
mov rdx, qword [rsp + 0x258]
mov ecx, dword [0x140190208]
call qword [sym.imp.KERNEL32.dll_TlsSetValue]
test eax, eax
je 0x1400d213d
mov r8, qword [rsp + 0x250]
test r8, r8
je 0x1400d2129
mov rcx, qword [sym.4yUlCM3HuVsHzW5CaCX.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
mov ecx, 0xc0000001
call qword [sym.imp.ntdll.dll_RtlRaiseStatus]
int3