Function at 0x14000e390
Capabilities:
Get thread local storage value

Disassembly:
push rbp
push r15
push r14
push rsi
push rdi
push rbx
sub rsp, 0x68
lea rbp, [rsp + 0x60]
mov qword [rbp], 0xfffffffffffffffe
mov r14, r9
mov rbx, r8
mov rsi, rdx
mov rdi, rcx
test byte [rdx + 8], 1
jne 0x14000e3e2
mov r15, qword [rdi]
mov ecx, dword [0x140033ac0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
test rax, rax
je 0x14000e3e2
nop
cmp qword [rax], r15
je 0x14000e4bd
mov rax, qword [rax + 0x10]
test rax, rax
jne 0x14000e3d0
mov qword [rbp - 0x38], r14
mov ecx, dword [0x140033ab4]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
test rax, rax
je 0x14000e3fd
mov rdx, qword [rax + 8]
jmp 0x14000e3ff
xor edx, edx
mov r8d, 0x28
mov r9d, 8
call fcn.14000e820
mov r14, rax
mov qword [rbp - 0x30], rax
mov qword [rax], 0
lea rax, [0x14000efa0]
mov qword [r14 + 8], rax
mov dword [r14 + 0x10], 0
mov rax, qword [rbx]
mov qword [r14 + 0x18], rax
mov qword [rbx], 0
mov qword [rbp - 0x28], r14
mov rax, qword [rdi]
mov rcx, qword [rax]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov rax, qword [rdi]
cmp byte [rax + 9], 0
je 0x14000e489
mov rcx, qword [rax]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov rax, qword [r14 + 8]
vxorps xmm0, xmm0, xmm0
vmovaps xmmword [rbp - 0x20], xmm0
mov qword [rbp - 0x10], 0
lea r8, [rbp - 0x20]
xor ecx, ecx
mov rdx, r14
xor r9d, r9d
call rax
jmp 0x14000e600
cmp byte [rax + 8], 0
je 0x14000e4e0
lea rcx, [rax + 0x10]
mov qword [r14], 0
mov rdx, qword [rax + 0x18]
test rdx, rdx
cmovne rcx, rdx
mov qword [rcx], r14
mov qword [rax + 0x18], r14
mov rax, qword [rdi]
mov rcx, qword [rax]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
jmp 0x14000e600
cmp qword [rax + 8], 0
je 0x14000e3e2
mov rcx, qword [rbx]
mov qword [rbx], 0
test rcx, rcx
je 0x14000e4db
mov dl, 1
call qword [rcx]
jmp 0x14000e600
lea rbx, [rbp - 0x30]
mov byte [rax + 8], 1
mov rax, qword [rdi]
mov rcx, qword [rax]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov rax, qword [rdi]
lea rcx, [rax + 0x20]
mov qword [r14], 0
mov rdx, qword [rax + 0x28]
test rdx, rdx
cmovne rcx, rdx
mov qword [rcx], r14
mov qword [rax + 0x28], r14
vxorps xmm0, xmm0, xmm0
vmovups xmmword [rbx], xmm0
vmovaps xmmword [rbp - 0x20], xmm0
mov rax, qword [rdi + 8]
test rax, rax
je 0x14000e534
lock inc dword [rax + 8]
mov rax, qword [rdi + 8]
jmp 0x14000e536
xor eax, eax
mov rcx, qword [rdi]
mov qword [rbp - 0x20], rcx
mov qword [rbp - 0x18], rax
mov rax, qword [rsi + 8]
mov qword [rbp - 8], rax
and rax, 0xfffffffffffffffc
je 0x14000e557
mov rax, qword [rax + 0x10]
lock inc dword [rax + 0x30]
lea rdx, [rbp - 0x20]
mov rcx, rsi
call fcn.14000f120
mov rax, qword [rbp - 8]
and rax, 0xfffffffffffffffc
je 0x14000e576
mov rcx, qword [rax + 0x10]
call fcn.14000d390
mov rsi, qword [rbp - 0x18]
test rsi, rsi
je 0x14000e59c
lock dec dword [rsi + 8]
jne 0x14000e59c
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax]
lock dec dword [rsi + 0xc]
jne 0x14000e59c
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + ioctlsocket]
mov rax, qword [rbp - 0x28]
test rax, rax
je 0x14000e5b2
mov rcx, qword [rax + 0x18]
test rcx, rcx
je 0x14000e5b2
xor edx, edx
call qword [rcx]
mov rsi, qword [rbp - 0x30]
test rsi, rsi
je 0x14000e600
mov ecx, dword [0x140033ab4]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
test rax, rax
je 0x14000e5e2
mov rax, qword [rax + 8]
test rax, rax
je 0x14000e5e2
cmp qword [rax], 0
je 0x14000e5ed
cmp qword [rax + 8], 0
je 0x14000e5f1
mov rcx, rsi
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll__aligned_free]
jmp 0x14000e600
xor ecx, ecx
jmp 0x14000e5f6
mov ecx, 1
movzx edx, byte [rsi + 0x28]
mov byte [rsi], dl
mov qword [rax + rcx*8], rsi
add rsp, 0x68
pop rbx
pop rdi
pop rsi
pop r14
pop r15
pop rbp
ret