Function at 0x14009cae0
Capabilities:
Get thread local storage value

Disassembly:
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x30
mov rbp, qword [0x140185450]
mov rax, qword [rbp]
mov qword [rsp + 0x28], rax
xor eax, eax
mov rsi, rcx
mov rdi, rdx
test rcx, rcx
je 0x14009ca50
lea r12, [0x14016a408]
mov rcx, r12
call fcn.140099de0
mov rcx, rsi
call fcn.14009a450
mov rcx, r12
mov rbx, rax
call fcn.14009a0b0
test rbx, rbx
je 0x14009ca50
mov rcx, qword [rbx + 0x28]
test rcx, rcx
je 0x14009ca50
lea rdx, [rsp + 0x24]
call qword [sym.imp.KERNEL32.dll_GetHandleInformation]
test eax, eax
je 0x14009ca50
test byte [rbx + 0x44], 4
jne 0x14009ca70
call fcn.14009ab30
mov ecx, dword [0x14016a418]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
test rax, rax
je 0x14009ca90
cmp rsi, qword [rax + 0x1d8]
je 0x14009cac0
mov eax, dword [rbx + 0xbc]
mov rcx, qword [rbx + 0x28]
test eax, eax
je 0x14009c9df
lea rax, [rcx - 1]
cmp rax, 0xfffffffffffffffd
ja 0x14009c9ee
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 0x14009ca02
call rsi
mov qword [rbx + 0x30], 0
test rdi, rdi
je 0x14009caa8
mov rax, qword [rbx + 8]
lea rcx, [rbx + 0x38]
mov qword [rdi], rax
call fcn.14009a250
lea rcx, [rbx + 0x68]
call fcn.14009a3c0
cmp eax, 1
je 0x14009cacc
cmp qword [rbx + 0x1d0], 0
mov qword [rbx + 0x68], 0xffffffffffffffff
je 0x14009ca80
xor eax, eax
jmp 0x14009ca55
mov eax, 3
mov rdx, qword [rsp + 0x28]
sub rdx, qword [rbp]
jne 0x14009cac7
add rsp, 0x30
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
mov eax, 0x16
jmp 0x14009ca55
mov rcx, rbx
call fcn.14009a990
xor eax, eax
jmp 0x14009ca55
call fcn.14009abe0
test rax, rax
je 0x14009c9c7
jmp 0x14009c9ba
lea rcx, [rbx + 0x38]
call fcn.14009a250
lea rcx, [rbx + 0x68]
jmp 0x14009ca27
mov eax, 0x24
jmp 0x14009ca55
call fcn.1400ac0f0
call fcn.14009a720
nop
nop word cs:[rax + rax]
nop dword [rax]
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x30
mov rbp, qword [0x140185450]
mov r12, qword [rbp]
mov qword [rsp + 0x28], r12
lea r12, [0x14016a408]
mov rsi, rcx
mov rdi, rdx
mov rcx, r12
call fcn.140099de0
mov rcx, rsi
call fcn.14009a450
mov rbx, rax
test rax, rax
je 0x14009cc20
mov rcx, qword [rax + 0x28]
test rcx, rcx
je 0x14009cc20
lea rdx, [rsp + 0x24]
call qword [sym.imp.KERNEL32.dll_GetHandleInformation]
test eax, eax
je 0x14009cc20
test byte [rbx + 0x44], 4
jne 0x14009cc30
call fcn.14009ab30
mov ecx, dword [0x14016a418]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
test rax, rax
je 0x14009cc60
mov rdx, qword [rax + 0x1d8]
cmp rsi, rdx
je 0x14009cca0
mov edx, dword [rbx + 0xbc]
test edx, edx
jne 0x14009cb95
xor edx, edx
mov rcx, qword [rbx + 0x28]
call qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
jne 0x14009cc40
mov rcx, qword [rbx + 0x28]
mov rsi, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rsi
mov rcx, qword [rbx + 0x30]
test rcx, rcx
je 0x14009cbad
call rsi
mov qword [rbx + 0x30], 0
test rdi, rdi
je 0x14009cc78
mov rax, qword [rbx + 8]
lea rcx, [rbx + 0x38]
mov qword [rdi], rax
call fcn.14009a250
lea rcx, [rbx + 0x68]
call fcn.14009a3c0
cmp eax, 1
je 0x14009ccb7
cmp qword [rbx + 0x1d0], 0
mov qword [rbx + 0x68], 0xffffffffffffffff
je 0x14009cc90
mov rcx, r12
call fcn.14009a0b0
xor eax, eax
mov rdx, qword [rsp + 0x28]
sub rdx, qword [rbp]
jne 0x14009ccb2
add rsp, 0x30
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
mov rcx, r12
call fcn.14009a0b0
mov eax, 3
jmp 0x14009cc00
mov rcx, r12
call fcn.14009a0b0
mov eax, 0x16
jmp 0x14009cc00
mov eax, dword [rbx + 0xbc]
test eax, eax
jne 0x14009cb95
mov rcx, r12
call fcn.14009a0b0
mov eax, 0x10
jmp 0x14009cc00
call fcn.14009abe0
xor edx, edx
test rax, rax
je 0x14009cb6e
jmp 0x14009cb67
lea rcx, [rbx + 0x38]
call fcn.14009a250
lea rcx, [rbx + 0x68]
jmp 0x14009cbd2
mov rcx, rbx
call fcn.14009a990
jmp 0x14009cbf6
mov rcx, r12
call fcn.14009a0b0
mov eax, 0x24
jmp 0x14009cc00
call fcn.1400ac0f0
call fcn.14009a720
nop
nop dword [rax]