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

Disassembly:
mov dword [rsp + 0x10], edx
mov qword [rsp + 8], rcx
push rbp
push rbx
push r15
lea rbp, [rsp - 0x1e0]
sub rsp, 0x2e0
xor eax, eax
mov r15, rcx
mov ecx, dword [0x1402169f0]
mov dword [rbp - 0x70], eax
mov qword [rbp + 0x198], rax
mov qword [rbp + 0x1a0], rax
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, dword [0x1402169f0]
lea rdx, [rbp - 0x70]
mov qword [rbp + 0x1a8], rax
call qword [sym.imp.KERNEL32.dll_TlsSetValue]
test eax, eax
je 0x14012f096
mov qword [rsp + 0x2d8], rsi
xor r9d, r9d
mov qword [rsp + 0x2d0], rdi
xor r8d, r8d
mov qword [rsp + 0x2c8], r12
mov edx, 0x411
mov qword [rsp + 0x2c0], r13
mov rcx, r15
mov qword [rsp + 0x2b8], r14
call qword [sym.imp.USER32.dll_SendMessageW]
xor r9d, r9d
xor r8d, r8d
mov r12, rax
mov edx, 0x421
inc eax
mov rcx, r15
mov dword [rbp + 0x210], eax
call qword [sym.imp.USER32.dll_SendMessageW]
xor r9d, r9d
xor r8d, r8d
mov edx, 0x429
mov rcx, r15
mov rbx, rax
call qword [sym.imp.USER32.dll_SendMessageW]
mov rcx, qword [0x140213cd0]
mov edx, 4
mov esi, eax
mov r13, rax
mov qword [rsp + 0x48], rax
mov qword [rsp + 0x20], rsi
lea r8, [rsi*4]
call qword [sym.imp.ntdll.dll_RtlAllocateHeap]
mov qword [rsp + 0x38], rax
mov edx, 0x409
mov rdi, rax
mov rcx, r15
test rbx, rbx
je 0x14012ed72
lea r9, [rax + 4]
lea r8d, [r13 - 1]
call qword [sym.imp.USER32.dll_SendMessageW]
mov ecx, dword [rbx + 4]
mov dword [rdi], ecx
jmp 0x14012ed7e
mov r9, rdi
mov r8, rsi
call qword [sym.imp.USER32.dll_SendMessageW]
mov rcx, qword [0x140213cd0]
lea r8, [rsi*8]
mov edx, 4
call qword [sym.imp.ntdll.dll_RtlAllocateHeap]
mov qword [rsp + 0x50], rax
mov r14, rax
test r13d, r13d
je 0x14012ee3f
mov rbx, rax
nop dword [rax]
mov r8d, dword [rdi]
lea r9, [rsp + 0x58]
mov edx, 0x407
mov rcx, r15
call qword [sym.imp.USER32.dll_SendMessageW]
test rax, rax
je 0x14012edd3
mov rax, qword [rsp + 0x68]
mov qword [rbx], rax
add rdi, 4
add rbx, 8
sub rsi, 1
jne 0x14012edb0
mov edx, dword [rbp + 0x210]
lea rcx, [rbp + 0x218]
mov r8d, r13d
call fcn.14012e3a0
mov rsi, qword [rsp + 0x20]
xor eax, eax
mov r15, qword [rbp + 0x218]
mov ebx, eax
mov rdi, rsi
nop dword [rax]
mov rcx, qword [rbx + r14]
call sym.ProcessHacker.exe_PhCreateString
mov rcx, rax
call sym.ProcessHacker.exe_PhAutoDereferenceObject
mov rcx, qword ds:[r15]
lea rbx, [rbx + 8]
mov qword [rbx + rcx - 8], rax
sub rdi, 1
jne 0x14012ee10
mov r15, qword [rbp + 0x200]
jmp 0x14012ee55
mov edx, dword ds:[rbp + 0x210]
lea rcx, [rbp + 0x218]
mov r8d, r13d
call fcn.14012e3a0
test r12d, r12d
je 0x14012efc3
mov r14, qword [rbp + 0x218]
xor ebx, ebx
mov r12d, r12d
mov eax, ebx
mov qword [rsp + 0x28], rbx
add r14, 8
mov qword [rsp + 0x30], r12
nop word [rax + rax]
xor r9d, r9d
mov r8, rax
mov edx, 0x412
mov rcx, r15
call qword [sym.imp.USER32.dll_SendMessageW]
mov qword [rsp + 0x40], rax
test rax, rax
je 0x14012ef6c
test r13d, r13d
je 0x14012ef99
mov rsi, qword [rsp + 0x38]
mov rdi, rbx
mov r12, qword [rsp + 0x20]
nop word [rax + rax]
mov qword [rsp + 0x60], rax
lea r9, [rsp + 0x58]
mov eax, dword [rsi]
xor r8d, r8d
mov edx, 0x413
mov dword [rsp + 0x68], eax
mov rcx, r15
mov qword [rsp + 0x70], rbx
mov qword [rsp + 0x78], rbx
call qword [sym.imp.USER32.dll_SendMessageW]
mov r15, qword [rsp + 0x70]
mov rdx, qword [0x140213b58]
mov r13, qword [rsp + 0x78]
lea rcx, [r15 + 0x12]
call sym.ProcessHacker.exe_PhCreateObject
mov rbx, rax
lea rcx, [rax + 0x10]
mov qword [rax], r15
mov qword [rax + 8], rcx
xor eax, eax
mov word [rcx + r15], ax
test r13, r13
je 0x14012ef2e
mov rcx, qword [rbx + 8]
mov r8, r15
mov rdx, r13
call fcn.140165120
mov rcx, rbx
call sym.ProcessHacker.exe_PhAutoDereferenceObject
mov rcx, qword [r14]
add rsi, 4
mov r15, qword [rbp + 0x200]
mov ebx, 0
mov qword [rdi + rcx], rax
add rdi, 8
mov rax, qword [rsp + 0x40]
sub r12, 1
jne 0x14012eec0
mov r13, qword [rsp + 0x48]
mov r12, qword [rsp + 0x30]
jmp 0x14012ef99
nop dword [rax]
test r13d, r13d
je 0x14012ef99
mov rdi, rsi
call sym.ProcessHacker.exe_PhReferenceEmptyString
mov rcx, rax
call sym.ProcessHacker.exe_PhAutoDereferenceObject
mov rcx, qword [r14]
lea rbx, [rbx + 8]
mov qword [rbx + rcx - 8], rax
sub rdi, 1
jne 0x14012ef78
xor ebx, ebx
mov rax, qword [rsp + 0x28]
add r14, 8
mov rsi, qword [rsp + 0x20]
inc rax
sub r12, 1
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x30], r12
jne 0x14012ee80
mov r14, qword [rsp + 0x50]
mov rcx, qword [0x140213cd0]
mov r8, r14
xor edx, edx
call qword [sym.imp.ntdll.dll_RtlFreeHeap]
mov r8, qword [rsp + 0x38]
xor edx, edx
mov rcx, qword [0x140213cd0]
call qword [sym.imp.ntdll.dll_RtlFreeHeap]
mov r9d, dword [rbp + 0x208]
mov r8d, r13d
mov edx, dword [rbp + 0x210]
mov rcx, qword [rbp + 0x218]
call fcn.14012e450
lea rcx, ds:[rbp - 0x70]
mov rbx, rax
call sym.ProcessHacker.exe_PhDrainAutoPool
mov ecx, dword [0x1402169f0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov r14, qword ss:[rsp + 0x2b8]
lea rcx, [rbp - 0x70]
mov r13, qword [rsp + 0x2c0]
mov r12, qword [rsp + 0x2c8]
mov rdi, qword [rsp + 0x2d0]
mov rsi, qword [rsp + 0x2d8]
cmp rax, rcx
jne 0x14012f096
mov rdx, qword [rbp + 0x1a8]
mov ecx, dword [0x1402169f0]
call qword [sym.imp.KERNEL32.dll_TlsSetValue]
test eax, eax
je 0x14012f096
mov r8, qword [rbp + 0x1a0]
test r8, r8
je 0x14012f087
mov rcx, qword [0x140213cd0]
xor edx, edx
call qword [sym.imp.ntdll.dll_RtlFreeHeap]
mov rax, rbx
add rsp, 0x2e0
pop r15
pop rbx
pop rbp
ret
mov ecx, 0xc0000001
call qword [sym.imp.ntdll.dll_RtlRaiseStatus]
int3