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

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], r8
mov qword [rsp + 8], rcx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x40
mov rbx, rcx
mov rsi, r8
mov ecx, dword [0x14003d17c]
mov r15, rdx
call qword [sym.imp.api_ms_win_core_processthreads_l1_1_0.dll_TlsGetValue]
or edi, 0xffffffff
xor ebp, ebp
mov r14, rax
test rax, rax
jne 0x14002f5d8
mov edi, dword [0x14003d17c]
lea rdx, [rsp + 0x30]
mov ecx, edi
mov dword [rsp + 0x30], ebp
lea r14, [rsp + 0x30]
call qword [sym.imp.api_ms_win_core_processthreads_l1_1_0.dll_TlsSetValue]
inc dword [r14]
mov r10, qword [0x14003d048]
lea rax, [0x14003d048]
lea rdx, [0x140035650]
mov r12d, 0x1df
cmp r10, rax
je 0x14002f63b
test byte [r10 + 0x1c], 1
je 0x14002f63b
mov eax, dword [r14]
lea ecx, [rax + rax*4]
cmp ecx, 0x1e1
ja 0x14002f61a
mov eax, ecx
mov ecx, r12d
sub rcx, rax
jmp 0x14002f61d
mov rcx, rbp
lea r9, [rcx + rdx]
mov qword [rsp + 0x20], r15
mov rcx, qword [r10 + 0x10]
lea r8, [0x140037220]
mov edx, 0xa
call fcn.140004a7c
or rax, 0xffffffffffffffff
mov rbp, rax
xor r8d, r8d
inc rbp
cmp word [rbx + rbp*2], r8w
jne 0x14002f645
inc rax
cmp word [r15 + rax*2], r8w
jne 0x14002f64f
lea r13, [rax + 1]
mov qword [rsi], r8
add r13, rbp
mov eax, 2
mul r13
mov rbx, r8
mov qword [rsp + 0x98], rbx
test rdx, rdx
je 0x14002f6bd
mov esi, 0x80070216
lea r13, [0x14003d048]
mov rcx, qword [0x14003d048]
cmp rcx, r13
je 0x14002f837
test byte [rcx + 0x1c], 1
je 0x14002f837
mov eax, dword [r14]
lea edx, [rax + rax*4]
cmp edx, 0x1e1
ja 0x14002f811
mov eax, edx
sub r12, rax
jmp 0x14002f814
lea r9, [rsp + 0x98]
mov r8, rax
mov edx, 1
call fcn.140004940
mov rbx, qword [rsp + 0x98]
xor r8d, r8d
mov esi, eax
test eax, eax
js 0x14002f680
mov r9, qword [rsp + 0x80]
lea r8, str._s_s
mov rdx, r13
mov qword [rsp + 0x20], r15
mov rcx, rbx
call fcn.1400104f0
xor r8d, r8d
mov esi, eax
test eax, eax
js 0x14002f680
lea rdx, [rbx + rbp*2]
movzx eax, word [rdx]
mov rcx, rdx
sub ax, 0x2f
neg ax
sbb esi, esi
and esi, 0x8000ffff
cmp word [rdx], 0x2f
jne 0x14002f7ec
mov r15, rdx
lea ebp, [r8 + 0x5c]
cmp word [rcx], 0x2f
jne 0x14002f745
mov word [rcx], bp
mov r15, rcx
add rcx, 2
cmp word [rcx], r8w
jne 0x14002f739
cmp r15, rdx
je 0x14002f7ec
mov word [r15], r8w
mov r10, qword [0x14003d048]
lea r13, [0x14003d048]
cmp r10, r13
je 0x14002f7b7
test byte [r10 + 0x1c], 4
je 0x14002f7b7
mov eax, dword [r14]
inc eax
lea ecx, [rax + rax*4]
cmp ecx, 0x1e1
ja 0x14002f790
mov eax, ecx
mov rcx, r12
sub rcx, rax
jmp 0x14002f793
mov rcx, r8
lea r9, [0x140035650]
mov qword [rsp + 0x20], rbx
add r9, rcx
lea r8, [0x140037220]
mov rcx, qword [r10 + 0x10]
mov edx, ntohl
call fcn.140004a7c
xor r8d, r8d
mov rdx, rbx
xor ecx, ecx
call qword [sym.imp.api_ms_win_shell_shdirectory_l1_1_0.dll_Ordinal_290]
xor r8d, r8d
test eax, eax
je 0x14002f7e6
cmp eax, 0x50
je 0x14002f7e6
cmp eax, 0xb7
je 0x14002f7e6
movzx esi, ax
or esi, 0x80070000
test eax, eax
cmovle esi, eax
mov word [r15], bp
jmp 0x14002f7f3
lea r13, [0x14003d048]
test esi, esi
js 0x14002f687
mov rcx, qword [rsp + 0x90]
mov rax, rbx
mov rbx, r8
mov qword [rcx], rax
jmp 0x14002f687
mov r12, r8
mov rcx, qword [rcx + 0x10]
lea r9, [0x140035650]
add r9, r12
mov dword [rsp + 0x20], esi
mov edx, ntohl
lea r8, [0x140037220]
call fcn.140001304
mov rcx, rbx
call qword [sym.imp.api_ms_win_core_com_l1_1_0.dll_CoTaskMemFree]
or eax, 0xffffffff
add dword [r14], eax
cmp edi, eax
je 0x14002f863
mov ecx, edi
call qword [sym.imp.api_ms_win_core_processthreads_l1_1_0.dll_TlsGetValue]
xor ebp, ebp
test rax, rax
je 0x14002f863
xor edx, edx
mov ecx, edi
call qword [sym.imp.api_ms_win_core_processthreads_l1_1_0.dll_TlsSetValue]
mov eax, esi
mov rbx, qword [rsp + 0x88]
add rsp, 0x40
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret