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

Disassembly:
mov rax, rsp
mov dword [rax + 0x20], r9d
mov qword [rax + 0x18], r8
mov qword [rax + 8], rcx
push rbx
push rdi
push r13
push r15
sub rsp, 0x2b8
mov ecx, dword [0x7ff7c01d69f0]
xor ebx, ebx
mov r13, qword [0x7ff7c01d5240]
mov edi, edx
mov r15, qword [0x7ff7c01d5238]
mov dword [rax - 0x258], ebx
mov qword [rax - 0x50], rbx
mov qword [rax - 0x48], rbx
call qword [sym.imp.kernel32.dll_TlsGetValue]
mov ecx, dword [0x7ff7c01d69f0]
lea rdx, ds:[rsp + 0x80]
mov qword [rsp + 0x298], rax
call qword [sym.imp.kernel32.dll_TlsSetValue]
test eax, eax
je 0x7ff7c0070d8b
mov qword [rsp + 0x2e8], rbp
xor r9d, r9d
mov qword [rsp + 0x2b0], rsi
xor r8d, r8d
lea esi, [rdi + 1]
mov qword [rsp + 0x2a8], r12
mov edx, 0x421
mov dword [rsp + 0x2f0], esi
mov rcx, r15
mov qword [rsp + 0x2a0], r14
call qword [sym.imp.USER32.dll_SendMessageW]
xor r9d, r9d
xor r8d, r8d
mov edx, 0x429
mov rcx, r15
mov rdi, rax
call qword [sym.imp.USER32.dll_SendMessageW]
mov rcx, qword [0x7ff7c01d3cd0]
lea edx, ds:[rbx + 4]
mov ebp, eax
mov r12, rax
lea r8, [rbp*4]
call qword [sym.imp.kernel32.dll_HeapAlloc_1]
mov qword [rsp + 0x48], rax
mov edx, 0x409
mov r14, rax
mov rcx, r15
test rdi, rdi
je 0x7ff7c0070b82
lea r9, [rax + 4]
lea r8d, [r12 - 1]
call qword [sym.imp.USER32.dll_SendMessageW]
mov ecx, dword [rdi + 4]
mov dword [r14], ecx
jmp 0x7ff7c0070b8e
mov r9, r14
mov r8, rbp
call qword [sym.imp.USER32.dll_SendMessageW]
mov rcx, qword [0x7ff7c01d3cd0]
lea r8, [rbp*8]
mov edx, 4
call qword [sym.imp.kernel32.dll_HeapAlloc_1]
mov qword [rsp + 0x40], rax
mov rdi, rax
test r12d, r12d
je 0x7ff7c0070c53
mov rsi, r14
mov r14, rbp
nop
mov r8d, dword [rsi]
lea r9, [rsp + 0x50]
mov edx, 0x407
mov rcx, r15
call qword [sym.imp.USER32.dll_SendMessageW]
test rax, rax
je 0x7ff7c0070be3
mov rax, qword [rsp + 0x60]
mov qword [rdi], rax
add rsi, 4
add rdi, 8
sub r14, 1
jne 0x7ff7c0070bc0
mov edx, dword [rsp + 0x2f0]
lea rcx, [rsp + 0x2e0]
mov r8d, r12d
call fcn.7ff7c00ee3a0
mov rsi, qword [rsp + 0x2e0]
mov rdi, rbx
mov r14, qword [rsp + 0x40]
nop dword [rax]
mov rcx, qword [rdi + r14]
call sym.ProcessHacker.exe_PhCreateString
mov rcx, rax
call sym.ProcessHacker.exe_PhAutoDereferenceObject
mov rcx, qword [rsi]
lea rdi, [rdi + 8]
mov qword [rdi + rcx - 8], rax
sub rbp, 1
jne 0x7ff7c0070c20
mov r14, qword [rsp + 0x48]
mov rdi, qword [rsp + 0x40]
jmp 0x7ff7c0070c6d
mov r8d, r12d
lea rcx, [rsp + 0x2e0]
mov edx, esi
call fcn.7ff7c00ee3a0
mov rsi, qword [rsp + 0x2e0]
mov rbp, qword [rsp + 0x2e8]
mov dword [rsp + 0x2e0], 1
cmp dword [r13], ebx
jbe 0x7ff7c0070cc7
nop word [rax + rax]
mov rdx, qword [r13 + 8]
lea rcx, [rsp + 0x2e0]
mov eax, ebx
mov r9, rsi
mov dword [rsp + 0x30], r12d
xor r8d, r8d
mov qword [rsp + 0x28], r14
mov qword [rsp + 0x20], rcx
mov rcx, r15
mov rdx, qword [rdx + rax*8]
call fcn.7ff7c0070830
inc ebx
cmp ebx, dword [r13]
jb 0x7ff7c0070c90
mov rcx, qword [0x7ff7c01d3cd0]
mov r8, r14
xor edx, edx
call qword [sym.imp.ntdll.dll_RtlFreeHeap]
mov rcx, qword [0x7ff7c01d3cd0]
mov r8, rdi
xor edx, edx
call qword [sym.imp.ntdll.dll_RtlFreeHeap]
mov r9d, dword [rsp + 0x2f8]
mov r8d, r12d
mov edx, dword [rsp + 0x2f0]
mov rcx, rsi
call fcn.7ff7c00ee450
lea rcx, [rsp + 0x80]
mov rbx, rax
call sym.ProcessHacker.exe_PhDrainAutoPool
mov ecx, dword [0x7ff7c01d69f0]
call qword [sym.imp.kernel32.dll_TlsGetValue]
mov r14, qword [rsp + 0x2a0]
lea rcx, [rsp + 0x80]
mov r12, qword [rsp + 0x2a8]
mov rsi, qword [rsp + 0x2b0]
cmp rax, rcx
jne 0x7ff7c0070d8b
mov rdx, qword [rsp + 0x298]
mov ecx, dword [0x7ff7c01d69f0]
call qword [sym.imp.kernel32.dll_TlsSetValue]
test eax, eax
je 0x7ff7c0070d8b
mov r8, qword [rsp + 0x290]
test r8, r8
je 0x7ff7c0070d7a
mov rcx, qword [0x7ff7c01d3cd0]
xor edx, edx
call qword [sym.imp.ntdll.dll_RtlFreeHeap]
mov rax, rbx
add rsp, 0x2b8
pop r15
pop r13
pop rdi
pop rbx
ret
mov ecx, 0xc0000001
call qword [sym.imp.ntdll.dll_RtlRaiseStatus]
int3