Function at 0x140035dc0
Capabilities:
Get thread local storage value

Disassembly:
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x30
mov rbp, qword [0x140054700]
mov rax, qword [rbp]
mov qword [rsp + 0x28], rax
xor eax, eax
mov rsi, rcx
mov rdi, rdx
test rcx, rcx
je 0x140035ef0
lea r12, [0x1400450c8]
mov rcx, r12
call fcn.140033190
mov rcx, rsi
call fcn.140033800
mov rcx, r12
mov rbx, rax
call fcn.140033480
test rbx, rbx
je 0x140035ef0
mov rcx, qword [rbx + 0x28]
test rcx, rcx
je 0x140035ef0
lea rdx, [rsp + 0x24]
call qword [sym.imp.KERNEL32.dll_GetHandleInformation]
test eax, eax
je 0x140035ef0
test byte [rbx + 0x44], 4
jne 0x140035f10
call fcn.140033fb0
mov ecx, dword [0x1400450d8]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
test rax, rax
je 0x140035f30
cmp rsi, qword [rax + 0x1d8]
je 0x140035f58
mov eax, dword [rbx + 0xbc]
mov rcx, qword [rbx + 0x28]
test eax, eax
je 0x140035e7f
lea rax, [rcx - 1]
cmp rax, 0xfffffffffffffffd
ja 0x140035e8e
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 0x140035ea2
call rsi
mov qword [rbx + 0x30], 0
lea rcx, [rbx + 0x38]
test rdi, rdi
je 0x140035f48
mov rax, qword [rbx + 8]
mov qword [rdi], rax
call fcn.140033610
lea rcx, [rbx + 0x68]
call fcn.140033780
cmp eax, 1
je 0x140035f64
cmp qword [rbx + 0x1d0], 0
mov qword [rbx + 0x68], 0xffffffffffffffff
je 0x140035f20
xor eax, eax
jmp 0x140035ef5
mov eax, 3
mov rdx, qword [rsp + 0x28]
sub rdx, qword [rbp]
jne 0x140035f5f
add rsp, 0x30
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
mov eax, 0x16
jmp 0x140035ef5
mov rcx, rbx
call fcn.140033e10
xor eax, eax
jmp 0x140035ef5
call fcn.140034060
test rax, rax
jne 0x140035e5a
jmp 0x140035e67
call fcn.140033610
jmp 0x140035ec3
mov eax, 0x24
jmp 0x140035ef5
call fcn.140037760
call fcn.140033b00
nop
nop word [rax + rax]
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x30
mov rbp, qword [0x140054700]
lea r12, [0x1400450c8]
mov rax, qword [rbp]
mov qword [rsp + 0x28], rax
xor eax, eax
mov rsi, rcx
mov rcx, r12
mov rdi, rdx
call fcn.140033190
mov rcx, rsi
call fcn.140033800
mov rbx, rax
test rax, rax
je 0x1400360b0
mov rcx, qword [rax + 0x28]
test rcx, rcx
je 0x1400360b0
lea rdx, [rsp + 0x24]
call qword [sym.imp.KERNEL32.dll_GetHandleInformation]
test eax, eax
je 0x1400360b0
test byte [rbx + 0x44], 4
jne 0x1400360c0
call fcn.140033fb0
mov ecx, dword [0x1400450d8]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
test rax, rax
je 0x1400360f0
mov rdx, qword [rax + 0x1d8]
cmp rsi, rdx
je 0x140036128
mov edx, dword [rbx + 0xbc]
mov rcx, qword [rbx + 0x28]
test edx, edx
jne 0x14003602b
xor edx, edx
call qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
jne 0x1400360d0
mov rcx, qword [rbx + 0x28]
mov rsi, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rsi
mov rcx, qword [rbx + 0x30]
test rcx, rcx
je 0x14003603f
call rsi
mov qword [rbx + 0x30], 0
lea rcx, [rbx + 0x38]
test rdi, rdi
je 0x140036108
mov rax, qword [rbx + 8]
mov qword [rdi], rax
call fcn.140033610
lea rcx, [rbx + 0x68]
call fcn.140033780
cmp eax, 1
je 0x14003613f
cmp qword [rbx + 0x1d0], 0
mov qword [rbx + 0x68], 0xffffffffffffffff
je 0x140036118
mov rcx, r12
call fcn.140033480
xor eax, eax
mov rdx, qword [rsp + 0x28]
sub rdx, qword [rbp]
jne 0x14003613a
add rsp, 0x30
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
mov rcx, r12
call fcn.140033480
mov eax, 3
jmp 0x140036092
mov rcx, r12
call fcn.140033480
mov eax, 0x16
jmp 0x140036092
mov eax, dword [rbx + 0xbc]
test eax, eax
jne 0x140036027
mov rcx, r12
call fcn.140033480
mov eax, 0x10
jmp 0x140036092
call fcn.140034060
xor edx, edx
test rax, rax
jne 0x140035ff9
jmp 0x140036000
call fcn.140033610
jmp 0x140036060
mov rcx, rbx
call fcn.140033e10
jmp 0x140036088
mov rcx, r12
call fcn.140033480
mov eax, 0x24
jmp 0x140036092
call fcn.140037760
call fcn.140033b00
nop
nop word cs:[rax + rax]
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x30
mov rdi, qword [0x140054700]
lea rsi, [0x1400450c8]
mov rax, qword [rdi]
mov qword [rsp + 0x28], rax
xor eax, eax
mov rbx, rcx
mov rcx, rsi
test rbx, rbx
je 0x140036270
call fcn.140033190
mov rcx, rbx
call fcn.140033800
mov rcx, rsi
mov rbx, rax
call fcn.140033480
mov rcx, rsi
call fcn.140033190
test rbx, rbx
je 0x140036275
mov rcx, qword [rbx + 0x28]
test rcx, rcx
je 0x140036275
lea rdx, [rsp + 0x24]
call qword [sym.imp.KERNEL32.dll_GetHandleInformation]
test eax, eax
je 0x140036275
mov eax, dword [rbx + 0x44]
test al, 4
jne 0x140036288
or eax, 4
mov rcx, qword [rbx + 0x28]
mov qword [rbx + 0x28], 0
mov dword [rbx + 0x44], eax
test rcx, rcx
je 0x140036250
mov rbp, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rbp
mov eax, dword [rbx + 0xbc]
test eax, eax
je 0x140036250
mov rcx, qword [rbx + 0x30]
lea r12, [rbx + 0x38]
test rcx, rcx
je 0x1400362a0
call rbp
mov qword [rbx + 0x30], 0
mov rcx, r12
call fcn.140033610
lea rcx, [rbx + 0x68]
call fcn.140033780
cmp eax, 1
je 0x1400362bf
cmp qword [rbx + 0x1d0], 0
mov qword [rbx + 0x68], 0xffffffffffffffff
je 0x1400362b0
nop word cs:[rax + rax]
mov rcx, rsi
call fcn.140033480
xor eax, eax
mov rdx, qword [rsp + 0x28]
sub rdx, qword [rdi]
jne 0x1400362ba
add rsp, 0x30
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
call fcn.140033190
mov rcx, rsi
call fcn.140033480
mov eax, 3
jmp 0x14003625a
mov rcx, rsi
call fcn.140033480
mov eax, 0x16
jmp 0x14003625a
mov rcx, r12
call fcn.140033610
jmp 0x140036222
mov rcx, rbx
call fcn.140033e10
jmp 0x140036250
call fcn.140037760
call fcn.140033b00
nop
nop word cs:[rax + rax]
mov eax, dword [0x14005a3e8]
ret