Function at 0x1400d8170
Capabilities:
Get thread local storage value

Disassembly:
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x38
mov rsi, rcx
mov rbp, rdx
test rcx, rcx
je 0x1400d8290
lea rdi, [0x1402174f8]
mov rcx, rdi
call fcn.1400d5600
mov rcx, rsi
call fcn.1400d5c70
mov rcx, rdi
mov rbx, rax
call fcn.1400d58f0
test rbx, rbx
je 0x1400d8290
mov rcx, qword [rbx + 0x28]
test rcx, rcx
je 0x1400d8290
lea rdx, [rsp + 0x2c]
call qword [sym.imp.KERNEL32.dll_GetHandleInformation]
test eax, eax
je 0x1400d8290
test byte [rbx + 0x44], 4
jne 0x1400d82a0
call fcn.1400d6410
mov ecx, dword [0x140217508]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
test rax, rax
je 0x1400d82c0
cmp rsi, qword [rax + 0x1d8]
je 0x1400d82e8
mov eax, dword [rbx + 0xbc]
mov rcx, qword [rbx + 0x28]
test eax, eax
je 0x1400d821b
lea rax, [rcx - 1]
cmp rax, 0xfffffffffffffffd
ja 0x1400d822a
mov edx, 0xffffffff
call qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov rcx, qword [rbx + 0x28]
mov rsi, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rsi
mov rcx, qword [rbx + 0x30]
test rcx, rcx
je 0x1400d823e
call rsi
mov qword [rbx + 0x30], 0
lea rcx, [rbx + 0x38]
test rbp, rbp
je 0x1400d82d8
mov rax, qword [rbx + 8]
mov qword [rbp], rax
call fcn.1400d5a80
lea rcx, [rbx + 0x68]
call fcn.1400d5bf0
cmp eax, 1
je 0x1400d82ef
cmp qword [rbx + 0x1d0], 0
mov qword [rbx + 0x68], 0xffffffffffffffff
je 0x1400d82b0
xor eax, eax
add rsp, 0x38
pop rbx
pop rsi
pop rdi
pop rbp
ret
mov eax, 3
add rsp, 0x38
pop rbx
pop rsi
pop rdi
pop rbp
ret
mov eax, 0x16
add rsp, 0x38
pop rbx
pop rsi
pop rdi
pop rbp
ret
mov rcx, rbx
call fcn.1400d6270
xor eax, eax
jmp 0x1400d8286
call fcn.1400d64c0
test rax, rax
jne 0x1400d81f6
jmp 0x1400d8203
call fcn.1400d5a80
jmp 0x1400d8260
mov eax, 0x24
jmp 0x1400d8295
call fcn.1400d5f70
nop
nop word cs:[rax + rax]
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x38
lea rbp, [0x1402174f8]
mov rsi, rcx
mov rcx, rbp
mov rdi, rdx
call fcn.1400d5600
mov rcx, rsi
call fcn.1400d5c70
mov rbx, rax
test rax, rax
je 0x1400d8420
mov rcx, qword [rax + 0x28]
test rcx, rcx
je 0x1400d8420
lea rdx, [rsp + 0x2c]
call qword [sym.imp.KERNEL32.dll_GetHandleInformation]
test eax, eax
je 0x1400d8420
test byte [rbx + 0x44], 4
jne 0x1400d8440
call fcn.1400d6410
mov ecx, dword [0x140217508]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
test rax, rax
je 0x1400d8480
mov rdx, qword [rax + 0x1d8]
cmp rsi, rdx
je 0x1400d84b8
mov edx, dword [rbx + 0xbc]
mov rcx, qword [rbx + 0x28]
test edx, edx
jne 0x1400d83a7
xor edx, edx
call qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
jne 0x1400d8460
mov rcx, qword [rbx + 0x28]
mov rsi, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rsi
mov rcx, qword [rbx + 0x30]
test rcx, rcx
je 0x1400d83bb
call rsi
mov qword [rbx + 0x30], 0
lea rcx, [rbx + 0x38]
test rdi, rdi
je 0x1400d8498
mov rax, qword [rbx + 8]
mov qword [rdi], rax
call fcn.1400d5a80
lea rcx, [rbx + 0x68]
call fcn.1400d5bf0
cmp eax, 1
je 0x1400d84ca
cmp qword [rbx + 0x1d0], 0
mov qword [rbx + 0x68], 0xffffffffffffffff
je 0x1400d84a8
mov rcx, rbp
call fcn.1400d58f0
xor eax, eax
add rsp, 0x38
pop rbx
pop rsi
pop rdi
pop rbp
ret
mov rcx, rbp
call fcn.1400d58f0
mov eax, 3
add rsp, 0x38
pop rbx
pop rsi
pop rdi
pop rbp
ret
mov rcx, rbp
call fcn.1400d58f0
mov eax, 0x16
add rsp, 0x38
pop rbx
pop rsi
pop rdi
pop rbp
ret
mov eax, dword [rbx + 0xbc]
test eax, eax
jne 0x1400d83a3
mov rcx, rbp
call fcn.1400d58f0
mov eax, 0x10
jmp 0x1400d840e
call fcn.1400d64c0
xor edx, edx
test rax, rax
jne 0x1400d8375
jmp 0x1400d837c
call fcn.1400d5a80
jmp 0x1400d83dc
mov rcx, rbx
call fcn.1400d6270
jmp 0x1400d8404
mov rcx, rbp
call fcn.1400d58f0
mov eax, 0x24
jmp 0x1400d840e
call fcn.1400d5f70
nop