joyce8/EMBER2024-capa huggingface dataset:
Function at 0x14000d4a0
Capabilities:
Terminate thread

Disassembly:
push rbp
push rsi
push rdi
sub rsp, 0x80
lea rbp, [rsp + 0x80]
vmovaps xmmword [rbp - 0x10], xmm6
mov qword [rbp - 0x18], 0xfffffffffffffffe
mov rsi, rcx
lea rax, vtable.boost::asio::detail::win_iocp_io_context.0
mov qword [rcx], rax
cmp qword [rcx + 0xa8], 0
je 0x14000d60b
mov eax, 1
mov ecx, 1
xchg dword [rsi + 0x34], ecx
test ecx, ecx
jne 0x14000d570
xchg dword [rsi + 0x38], eax
test eax, eax
jne 0x14000d570
mov rcx, qword [rsi + 0x28]
xor edx, edx
xor r8d, r8d
xor r9d, r9d
call qword [sym.imp.KERNEL32.dll_PostQueuedCompletionStatus]
test eax, eax
jne 0x14000d570
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov edi, eax
mov qword [rbp - 0x30], 0
mov rax, qword [0x1400325d0]
shr rax, 1
movabs rcx, 0x595588bd12bf6fe8
cmp rax, rcx
jne 0x14000d53c
test edi, edi
setne al
jmp 0x14000d54f
mov rax, qword [0x1400325c8]
lea rcx, [0x1400325c8]
mov edx, edi
call qword [rax + 0x30]
movzx eax, al
or rax, 2
mov qword [rbp - 0x20], rax
mov dword [rbp - 0x30], edi
lea rcx, [0x1400325c8]
mov qword [rbp - 0x28], rcx
test al, 1
jne 0x14000d6bd
mov rdi, qword [rsi + 0xa8]
vpermilps xmm0, xmmword [rdi + 8], 0x4e
vmovaps xmmword [rbp - 0x60], xmm0
lea rdx, [rbp - 0x60]
mov ecx, 2
xor r8d, r8d
mov r9d, 0xffffffff
call qword [sym.imp.KERNEL32.dll_WaitForMultipleObjects]
mov rcx, qword [rdi + 0x10]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mfence
mov eax, dword [0x140033ab8]
mov rdx, qword [rdi + 8]
test eax, eax
je 0x14000d5c3
mov rcx, rdx
xor edx, edx
call qword [sym.imp.KERNEL32.dll_TerminateThread]
jmp 0x14000d5e2
lea rcx, [0x14000d760]
xor r8d, r8d
call qword [sym.imp.KERNEL32.dll_QueueUserAPC]
mov rcx, qword [rdi + 8]
mov edx, 0xffffffff
call qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov rdi, qword [rsi + 0xa8]
test rdi, rdi
je 0x14000d600
mov rcx, qword [rdi + 8]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rcx, rdi
call fcn.14001d8fc
mov qword [rsi + 0xa8], 0
mov rdx, qword [rsi + 0x90]
test rdx, rdx
je 0x14000d66a
vxorps xmm6, xmm6, xmm6
lea rdi, [rbp - 0x60]
nop
mov rax, qword [rdx + 0x20]
mov qword [rsi + 0x90], rax
test rax, rax
jne 0x14000d63b
mov qword [rsi + 0x98], 0
mov qword [rdx + 0x20], 0
mov rax, qword [rdx + 0x28]
vmovaps xmmword [rbp - 0x60], xmm6
mov qword [rbp - 0x50], 0
xor ecx, ecx
mov r8, rdi
xor r9d, r9d
call rax
mov rdx, qword [rsi + 0x90]
test rdx, rdx
jne 0x14000d620
lea rcx, [rsi + 0x60]
call qword [sym.imp.KERNEL32.dll_DeleteCriticalSection]
mov rcx, qword [rsi + 0x50]
test rcx, rcx
je 0x14000d683
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rdi, qword [rsi + 0x48]
test rdi, rdi
je 0x14000d69e
mov rcx, qword [rdi + 8]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rcx, rdi
call fcn.14001d8fc
mov rcx, qword [rsi + 0x28]
test rcx, rcx
je 0x14000d6ad
call qword [sym.imp.KERNEL32.dll_CloseHandle]
vmovaps xmm6, xmmword [rbp - 0x10]
add rsp, 0x80
pop rdi
pop rsi
pop rbp
ret
lea r8, str.pqcs
lea rcx, [rbp - 0x60]
lea rdx, [rbp - 0x30]
call fcn.140005680
lea rcx, [rbp - 0x60]
call fcn.140005750
int3
Function at 0x14000e760
Capabilities:
Get thread local storage value

Disassembly:
push rbp
push rsi
push rdi
sub rsp, 0x30
lea rbp, [rsp + 0x30]
mov qword [rbp - 8], 0xfffffffffffffffe
mov rsi, rcx
mov rax, qword [rcx + 0x10]
test rax, rax
je 0x14000e795
mov rcx, qword [rax + 0x18]
test rcx, rcx
je 0x14000e78d
xor edx, edx
call qword [rcx]
mov qword [rsi + 0x10], 0
mov rdi, qword [rsi + 8]
test rdi, rdi
je 0x14000e7eb
mov ecx, dword [0x140033ab4]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
test rax, rax
je 0x14000e7c5
mov rax, qword [rax + 8]
test rax, rax
je 0x14000e7c5
cmp qword [rax], 0
je 0x14000e7d0
cmp qword [rax + 8], 0
je 0x14000e7d4
mov rcx, rdi
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll__aligned_free]
jmp 0x14000e7e3
xor ecx, ecx
jmp 0x14000e7d9
mov ecx, 1
movzx edx, byte [rdi + 0x28]
mov byte [rdi], dl
mov qword [rax + rcx*8], rdi
mov qword [rsi + 8], 0
add rsp, 0x30
pop rdi
pop rsi
pop rbp
ret
Function at 0x14000f120
Capabilities:
Get thread local storage value

Disassembly:
push rbp
push r14
push rsi
push rdi
push rbx
sub rsp, 0x70
lea rbp, [rsp + 0x70]
vmovaps xmmword [rbp - 0x10], xmm6
mov qword [rbp - 0x18], 0xfffffffffffffffe
mov rsi, rdx
mov r14, rcx
mov rax, qword [rcx + 8]
test al, 1
jne 0x14000f1ff
and rax, 0xfffffffffffffffc
mov rdi, qword [rax + 0x10]
mov ecx, dword [0x140033ab4]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
test rax, rax
je 0x14000f1ff
add rdi, 0x28
nop
cmp qword [rax], rdi
je 0x14000f180
mov rax, qword [rax + 0x10]
test rax, rax
jne 0x14000f170
jmp 0x14000f1ff
cmp qword [rax + 8], 0
je 0x14000f1ff
mov qword [rbp - 0x48], r14
vmovups xmm0, xmmword [rsi]
vmovaps xmmword [rbp - 0x40], xmm0
vxorps xmm0, xmm0, xmm0
vmovups xmmword [rsi], xmm0
mov rax, qword [rsi + 0x18]
mov qword [rbp - 0x28], rax
mov qword [rsi + 0x18], 0
lea rcx, [rbp - 0x40]
call fcn.14000f480
mov rax, qword [rbp - 0x28]
and rax, 0xfffffffffffffffc
je 0x14000f1c8
mov rcx, qword [rax + 0x10]
call fcn.14000d390
mov rsi, qword [rbp - 0x38]
test rsi, rsi
je 0x14000f316
lock dec dword [rsi + 8]
jne 0x14000f316
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax]
lock dec dword [rsi + 0xc]
jne 0x14000f316
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + ioctlsocket]
jmp 0x14000f316
lea rax, [r14 + 1]
mov qword [rbp - 0x40], rax
mov ecx, dword [0x140033ab4]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
test rax, rax
je 0x14000f21e
mov rdx, qword [rax + 8]
jmp 0x14000f220
xor edx, edx
lea rbx, [rbp - 0x38]
mov r8d, 0x60
mov r9d, 8
call fcn.14000e820
mov rdi, rax
mov qword [rbp - 0x38], rax
mov qword [rax + 0x20], 0
lea rax, [0x14000fea0]
mov qword [rdi + 0x28], rax
mov dword [rdi + 0x30], 0
vxorps xmm0, xmm0, xmm0
vmovups ymmword [rdi], ymm0
vxorps xmm6, xmm6, xmm6
vmovups xmmword [rdi + 0x38], xmm6
mov rax, qword [rsi]
mov qword [rdi + 0x38], rax
mov rax, qword [rsi + 8]
mov qword [rdi + 0x40], rax
vmovups xmmword [rsi], xmm6
mov rax, qword [rsi + 0x18]
mov qword [rdi + 0x50], rax
mov qword [rsi + 0x18], 0
mov qword [rbp - 0x30], rdi
mov rax, qword [r14 + 8]
and rax, 0xfffffffffffffffc
mov r14, qword [rax + 0x10]
lock inc dword [r14 + 0x30]
mov dword [rdi + 0x30], 1
mov rcx, qword [r14 + 0x28]
xor edx, edx
xor r8d, r8d
mov r9, rdi
vzeroupper
call qword [sym.imp.KERNEL32.dll_PostQueuedCompletionStatus]
test eax, eax
jne 0x14000f309
lea rsi, [r14 + 0x60]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
lea rax, [r14 + 0x90]
mov qword [rdi + 0x20], 0
mov rcx, qword [r14 + 0x98]
lea rdx, [rcx + 0x20]
test rcx, rcx
cmove rdx, rax
mov qword [rdx], rdi
mov qword [r14 + 0x98], rdi
mov eax, 1
xchg dword [r14 + 0x58], eax
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
vmovups xmmword [rbx], xmm6
lea rcx, [rbp - 0x40]
call fcn.14000ffe0
vmovaps xmm6, xmmword [rbp - 0x10]
add rsp, 0x70
pop rbx
pop rdi
pop rsi
pop r14
pop rbp
ret
Function at 0x14000f430
Capabilities:
Get thread local storage value

Disassembly:
push rsi
sub rsp, 0x20
mov rsi, rcx
mov ecx, dword [0x140033ab4]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
test rax, rax
je 0x14000f473
add rsi, 0x28
nop dword [rax]
cmp qword [rax], rsi
je 0x14000f460
mov rax, qword [rax + 0x10]
test rax, rax
jne 0x14000f450
jmp 0x14000f473
mov rcx, qword [rax + 8]
test rcx, rcx
je 0x14000f473
add rsp, 0x20
pop rsi
jmp 0x14000fc30
nop
add rsp, 0x20
pop rsi
ret
push rsi
push rdi
sub rsp, 0x98
vmovaps xmmword [rsp + 0x80], xmm6
mov rsi, rcx
mov rax, qword [0x140033a00]
xor rax, rsp
mov qword [rsp + 0x78], rax
mov eax, dword [rcx + 0x50]
cmp eax, 1
je 0x14000fc90
test eax, eax
jne 0x14000fd07
mov dword [rsi + 0x50], 1
vxorps xmm0, xmm0, xmm0
vmovaps xmmword [rsp + 0x60], xmm0
lea rdi, [rsp + 0x60]
mov rcx, rdi
call sub.MSVCP140.dll_void___cdecl___ExceptionPtrCreate_void____ptr64_
mov rcx, rdi
call sub.MSVCP140.dll_void___cdecl___ExceptionPtrCurrentException_void____ptr64_
add rsi, 0x58
jmp 0x14000fcf4
mov dword [rsi + 0x50], 2
add rsi, 0x58
vxorps xmm6, xmm6, xmm6
vmovaps xmmword [rsp + 0x20], xmm6
lea rdi, [rsp + 0x20]
mov rcx, rdi
mov rdx, rsi
call sub.MSVCP140.dll_void___cdecl___ExceptionPtrCopy_void____ptr64__void_const____ptr64_
vmovups xmmword [rsp + 0x40], xmm6
lea rax, vtable.boost::asio::multiple_exceptions.0
mov qword [rsp + 0x38], rax
lea rcx, [rsp + 0x50]
vmovups xmmword [rsp + 0x50], xmm6
mov rdx, rdi
call sub.MSVCP140.dll_void___cdecl___ExceptionPtrCopy_void____ptr64__void_const____ptr64_
mov rcx, rdi
call fcn.14001fe70
lea rdi, [rsp + 0x60]
lea rdx, [rsp + 0x38]
mov rcx, rdi
call fcn.14000fd30
mov rcx, rsi
mov rdx, rdi
call sub.MSVCP140.dll_void___cdecl___ExceptionPtrAssign_void____ptr64__void_const____ptr64_
mov rcx, rdi
call fcn.14001fe70
mov rcx, qword [rsp + 0x78]
xor rcx, rsp
call fcn.14001d960
vmovaps xmm6, xmmword [rsp + 0x80]
add rsp, 0x98
pop rdi
pop rsi
ret

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

Disassembly:
push rbp
push rsi
push rdi
sub rsp, 0x60
lea rbp, [rsp + 0x60]
mov qword [rbp - 8], 0xfffffffffffffffe
mov rsi, rcx
mov qword [rbp - 0x10], rcx
mov rax, qword [rcx]
mov qword [rbp - 0x28], rax
mov ecx, dword [0x140033ac0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov qword [rbp - 0x18], rax
lea rdx, [rbp - 0x28]
mov qword [rbp - 0x20], rdx
mov ecx, dword [0x140033ac0]
call qword [sym.imp.KERNEL32.dll_TlsSetValue]
vxorps xmm0, xmm0, xmm0
vmovaps xmmword [rbp - 0x40], xmm0
mov qword [rbp - 0x30], 0
lea rdi, [rbp - 0x40]
jmp 0x14000f4f3
mov qword [rdx], 0
mov rcx, qword [rsi]
mov r8, rdi
xor r9d, r9d
call qword [rdx + ioctlsocket]
mov rax, qword [rsi]
mov rdx, qword [rax + 0x20]
test rdx, rdx
je 0x14000f515
mov rcx, qword [rdx]
mov qword [rax + 0x20], rcx
test rcx, rcx
jne 0x14000f4e0
mov qword [rax + 0x28], 0
jmp 0x14000f4e0
mov rdx, qword [rbp - 0x18]
mov ecx, dword [0x140033ac0]
call qword [sym.imp.KERNEL32.dll_TlsSetValue]
lea rcx, [rbp - 0x10]
call fcn.14000f580
nop
add rsp, 0x60
pop rdi
pop rsi
pop rbp
ret
Function at 0x14000f700
Capabilities:
Get thread local storage value

Disassembly:
push rbp
push r14
push rsi
push rdi
push rbx
sub rsp, 0x70
lea rbp, [rsp + 0x70]
vmovaps xmmword [rbp - 0x10], xmm6
mov qword [rbp - 0x18], 0xfffffffffffffffe
mov rsi, rdx
mov r14, rcx
mov rax, qword [rcx + 8]
test al, 1
jne 0x14000f7df
and rax, 0xfffffffffffffffc
mov rdi, qword [rax + 0x10]
mov ecx, dword [0x140033ab4]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
test rax, rax
je 0x14000f7df
add rdi, 0x28
nop
cmp qword [rax], rdi
je 0x14000f760
mov rax, qword [rax + 0x10]
test rax, rax
jne 0x14000f750
jmp 0x14000f7df
cmp qword [rax + 8], 0
je 0x14000f7df
mov qword [rbp - 0x48], r14
vmovups xmm0, xmmword [rsi]
vmovaps xmmword [rbp - 0x40], xmm0
vxorps xmm0, xmm0, xmm0
vmovups xmmword [rsi], xmm0
mov rax, qword [rsi + 0x18]
mov qword [rbp - 0x28], rax
mov qword [rsi + 0x18], 0
lea rcx, [rbp - 0x40]
call fcn.14000f480
mov rax, qword [rbp - 0x28]
and rax, 0xfffffffffffffffc
je 0x14000f7a8
mov rcx, qword [rax + 0x10]
call fcn.14000d390
mov rsi, qword [rbp - 0x38]
test rsi, rsi
je 0x14000f8f6
lock dec dword [rsi + 8]
jne 0x14000f8f6
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax]
lock dec dword [rsi + 0xc]
jne 0x14000f8f6
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + ioctlsocket]
jmp 0x14000f8f6
lea rax, [r14 + 1]
mov qword [rbp - 0x40], rax
mov ecx, dword [0x140033ab4]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
test rax, rax
je 0x14000f7fe
mov rdx, qword [rax + 8]
jmp 0x14000f800
xor edx, edx
lea rbx, [rbp - 0x38]
mov r8d, 0x60
mov r9d, 8
call fcn.14000e820
mov rdi, rax
mov qword [rbp - 0x38], rax
mov qword [rax + 0x20], 0
lea rax, [0x14000fa10]
mov qword [rdi + 0x28], rax
mov dword [rdi + 0x30], 0
vxorps xmm0, xmm0, xmm0
vmovups ymmword [rdi], ymm0
vxorps xmm6, xmm6, xmm6
vmovups xmmword [rdi + 0x38], xmm6
mov rax, qword [rsi]
mov qword [rdi + 0x38], rax
mov rax, qword [rsi + 8]
mov qword [rdi + 0x40], rax
vmovups xmmword [rsi], xmm6
mov rax, qword [rsi + 0x18]
mov qword [rdi + 0x50], rax
mov qword [rsi + 0x18], 0
mov qword [rbp - 0x30], rdi
mov rax, qword [r14 + 8]
and rax, 0xfffffffffffffffc
mov r14, qword [rax + 0x10]
lock inc dword [r14 + 0x30]
mov dword [rdi + 0x30], 1
mov rcx, qword [r14 + 0x28]
xor edx, edx
xor r8d, r8d
mov r9, rdi
vzeroupper
call qword [sym.imp.KERNEL32.dll_PostQueuedCompletionStatus]
test eax, eax
jne 0x14000f8e9
lea rsi, [r14 + 0x60]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
lea rax, [r14 + 0x90]
mov qword [rdi + 0x20], 0
mov rcx, qword [r14 + 0x98]
lea rdx, [rcx + 0x20]
test rcx, rcx
cmove rdx, rax
mov qword [rdx], rdi
mov qword [r14 + 0x98], rdi
mov eax, 1
xchg dword [r14 + 0x58], eax
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
vmovups xmmword [rbx], xmm6
lea rcx, [rbp - 0x40]
call fcn.14000fb50
vmovaps xmm6, xmmword [rbp - 0x10]
add rsp, 0x70
pop rbx
pop rdi
pop rsi
pop r14
pop rbp
ret
Function at 0x14000fb50
Capabilities:
Get thread local storage value

Disassembly:
push rbp
push rsi
push rdi
sub rsp, 0x30
lea rbp, [rsp + 0x30]
mov qword [rbp - 8], 0xfffffffffffffffe
mov rsi, rcx
mov rdi, qword [rcx + 0x10]
test rdi, rdi
je 0x14000fbb1
mov rax, qword [rdi + 0x50]
and rax, 0xfffffffffffffffc
je 0x14000fb83
mov rcx, qword [rax + 0x10]
call fcn.14000d390
mov rdi, qword [rdi + 0x40]
test rdi, rdi
je 0x14000fba9
lock dec dword [rdi + 8]
jne 0x14000fba9
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax]
lock dec dword [rdi + 0xc]
jne 0x14000fba9
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + ioctlsocket]
mov qword [rsi + 0x10], 0
mov rdi, qword [rsi + 8]
test rdi, rdi
je 0x14000fc07
mov ecx, dword [0x140033ab4]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
test rax, rax
je 0x14000fbe1
mov rax, qword [rax + 8]
test rax, rax
je 0x14000fbe1
cmp qword [rax], 0
je 0x14000fbec
cmp qword [rax + 8], 0
je 0x14000fbf0
mov rcx, rdi
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll__aligned_free]
jmp 0x14000fbff
xor ecx, ecx
jmp 0x14000fbf5
mov ecx, 1
movzx edx, byte [rdi + 0x60]
mov byte [rdi], dl
mov qword [rax + rcx*8], rdi
mov qword [rsi + 8], 0
add rsp, 0x30
pop rdi
pop rsi
pop rbp
ret

Function at 0x14000ffe0
Capabilities:
Get thread local storage value

Disassembly:
push rbp
push rsi
push rdi
sub rsp, 0x30
lea rbp, [rsp + 0x30]
mov qword [rbp - 8], 0xfffffffffffffffe
mov rsi, rcx
mov rdi, qword [rcx + 0x10]
test rdi, rdi
je 0x140010041
mov rax, qword [rdi + 0x50]
and rax, 0xfffffffffffffffc
je 0x140010013
mov rcx, qword [rax + 0x10]
call fcn.14000d390
mov rdi, qword [rdi + 0x40]
test rdi, rdi
je 0x140010039
lock dec dword [rdi + 8]
jne 0x140010039
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax]
lock dec dword [rdi + 0xc]
jne 0x140010039
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + ioctlsocket]
mov qword [rsi + 0x10], 0
mov rdi, qword [rsi + 8]
test rdi, rdi
je 0x140010097
mov ecx, dword [0x140033ab4]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
test rax, rax
je 0x140010071
mov rax, qword [rax + 8]
test rax, rax
je 0x140010071
cmp qword [rax], 0
je 0x14001007c
cmp qword [rax + 8], 0
je 0x140010080
mov rcx, rdi
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll__aligned_free]
jmp 0x14001008f
xor ecx, ecx
jmp 0x140010085
mov ecx, 1
movzx edx, byte [rdi + 0x60]
mov byte [rdi], dl
mov qword [rax + rcx*8], rdi
mov qword [rsi + 8], 0
add rsp, 0x30
pop rdi
pop rsi
pop rbp
ret
Function at 0x140011e60
Capabilities:
Get thread local storage value

Disassembly:
push rbp
push r14
push rsi
push rdi
push rbx
sub rsp, 0x70
lea rbp, [rsp + 0x70]
vmovaps xmmword [rbp - 0x10], xmm6
mov qword [rbp - 0x18], 0xfffffffffffffffe
mov rsi, rdx
mov r14, rcx
mov rax, qword [rcx + 8]
test al, 1
jne 0x140011f3f
and rax, 0xfffffffffffffffc
mov rdi, qword [rax + 0x10]
mov ecx, dword [0x140033ab4]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
test rax, rax
je 0x140011f3f
add rdi, 0x28
nop
cmp qword [rax], rdi
je 0x140011ec0
mov rax, qword [rax + 0x10]
test rax, rax
jne 0x140011eb0
jmp 0x140011f3f
cmp qword [rax + 8], 0
je 0x140011f3f
mov qword [rbp - 0x48], r14
vmovups xmm0, xmmword [rsi]
vmovaps xmmword [rbp - 0x40], xmm0
vxorps xmm0, xmm0, xmm0
vmovups xmmword [rsi], xmm0
mov rax, qword [rsi + 0x18]
mov qword [rbp - 0x28], rax
mov qword [rsi + 0x18], 0
lea rcx, [rbp - 0x40]
call fcn.140012170
mov rax, qword [rbp - 0x28]
and rax, 0xfffffffffffffffc
je 0x140011f08
mov rcx, qword [rax + 0x10]
call fcn.14000d390
mov rsi, qword [rbp - 0x38]
test rsi, rsi
je 0x140012056
lock dec dword [rsi + 8]
jne 0x140012056
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax]
lock dec dword [rsi + 0xc]
jne 0x140012056
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + ioctlsocket]
jmp 0x140012056
lea rax, [r14 + 1]
mov qword [rbp - 0x40], rax
mov ecx, dword [0x140033ab4]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
test rax, rax
je 0x140011f5e
mov rdx, qword [rax + 8]
jmp 0x140011f60
xor edx, edx
lea rbx, [rbp - 0x38]
mov r8d, 0x60
mov r9d, 8
call fcn.14000e820
mov rdi, rax
mov qword [rbp - 0x38], rax
mov qword [rax + 0x20], 0
lea rax, [0x140012920]
mov qword [rdi + 0x28], rax
mov dword [rdi + 0x30], 0
vxorps xmm0, xmm0, xmm0
vmovups ymmword [rdi], ymm0
vxorps xmm6, xmm6, xmm6
vmovups xmmword [rdi + 0x38], xmm6
mov rax, qword [rsi]
mov qword [rdi + 0x38], rax
mov rax, qword [rsi + 8]
mov qword [rdi + 0x40], rax
vmovups xmmword [rsi], xmm6
mov rax, qword [rsi + 0x18]
mov qword [rdi + 0x50], rax
mov qword [rsi + 0x18], 0
mov qword [rbp - 0x30], rdi
mov rax, qword [r14 + 8]
and rax, 0xfffffffffffffffc
mov r14, qword [rax + 0x10]
lock inc dword [r14 + 0x30]
mov dword [rdi + 0x30], 1
mov rcx, qword [r14 + 0x28]
xor edx, edx
xor r8d, r8d
mov r9, rdi
vzeroupper
call qword [sym.imp.KERNEL32.dll_PostQueuedCompletionStatus]
test eax, eax
jne 0x140012049
lea rsi, [r14 + 0x60]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
lea rax, [r14 + 0x90]
mov qword [rdi + 0x20], 0
mov rcx, qword [r14 + 0x98]
lea rdx, [rcx + 0x20]
test rcx, rcx
cmove rdx, rax
mov qword [rdx], rdi
mov qword [r14 + 0x98], rdi
mov eax, 1
xchg dword [r14 + 0x58], eax
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
vmovups xmmword [rbx], xmm6
lea rcx, [rbp - 0x40]
call fcn.140012a60
vmovaps xmm6, xmmword [rbp - 0x10]
add rsp, 0x70
pop rbx
pop rdi
pop rsi
pop r14
pop rbp
ret
Function at 0x140012170
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push rbp
push rsi
push rdi
sub rsp, 0x60
lea rbp, [rsp + 0x60]
mov qword [rbp - 8], 0xfffffffffffffffe
mov rsi, rcx
mov qword [rbp - 0x10], rcx
mov rax, qword [rcx]
mov qword [rbp - 0x28], rax
mov ecx, dword [0x140033ac0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov qword [rbp - 0x18], rax
lea rdx, [rbp - 0x28]
mov qword [rbp - 0x20], rdx
mov ecx, dword [0x140033ac0]
call qword [sym.imp.KERNEL32.dll_TlsSetValue]
vxorps xmm0, xmm0, xmm0
vmovaps xmmword [rbp - 0x40], xmm0
mov qword [rbp - 0x30], 0
lea rdi, [rbp - 0x40]
jmp 0x1400121e3
mov qword [rdx], 0
mov rcx, qword [rsi]
mov r8, rdi
xor r9d, r9d
call qword [rdx + ioctlsocket]
mov rax, qword [rsi]
mov rdx, qword [rax + 0x20]
test rdx, rdx
je 0x140012205
mov rcx, qword [rdx]
mov qword [rax + 0x20], rcx
test rcx, rcx
jne 0x1400121d0
mov qword [rax + 0x28], 0
jmp 0x1400121d0
mov rdx, qword [rbp - 0x18]
mov ecx, dword [0x140033ac0]
call qword [sym.imp.KERNEL32.dll_TlsSetValue]
lea rcx, [rbp - 0x10]
call fcn.140012270
nop
add rsp, 0x60
pop rdi
pop rsi
pop rbp
ret
Function at 0x1400123f0
Capabilities:
Get thread local storage value

Disassembly:
push rbp
push r14
push rsi
push rdi
push rbx
sub rsp, 0x70
lea rbp, [rsp + 0x70]
vmovaps xmmword [rbp - 0x10], xmm6
mov qword [rbp - 0x18], 0xfffffffffffffffe
mov rsi, rdx
mov r14, rcx
mov rax, qword [rcx + 8]
test al, 1
jne 0x1400124cf
and rax, 0xfffffffffffffffc
mov rdi, qword [rax + 0x10]
mov ecx, dword [0x140033ab4]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
test rax, rax
je 0x1400124cf
add rdi, 0x28
nop
cmp qword [rax], rdi
je 0x140012450
mov rax, qword [rax + 0x10]
test rax, rax
jne 0x140012440
jmp 0x1400124cf
cmp qword [rax + 8], 0
je 0x1400124cf
mov qword [rbp - 0x48], r14
vmovups xmm0, xmmword [rsi]
vmovaps xmmword [rbp - 0x40], xmm0
vxorps xmm0, xmm0, xmm0
vmovups xmmword [rsi], xmm0
mov rax, qword [rsi + 0x18]
mov qword [rbp - 0x28], rax
mov qword [rsi + 0x18], 0
lea rcx, [rbp - 0x40]
call fcn.140012170
mov rax, qword [rbp - 0x28]
and rax, 0xfffffffffffffffc
je 0x140012498
mov rcx, qword [rax + 0x10]
call fcn.14000d390
mov rsi, qword [rbp - 0x38]
test rsi, rsi
je 0x1400125e6
lock dec dword [rsi + 8]
jne 0x1400125e6
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax]
lock dec dword [rsi + 0xc]
jne 0x1400125e6
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + ioctlsocket]
jmp 0x1400125e6
lea rax, [r14 + 1]
mov qword [rbp - 0x40], rax
mov ecx, dword [0x140033ab4]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
test rax, rax
je 0x1400124ee
mov rdx, qword [rax + 8]
jmp 0x1400124f0
xor edx, edx
lea rbx, [rbp - 0x38]
mov r8d, 0x60
mov r9d, 8
call fcn.14000e820
mov rdi, rax
mov qword [rbp - 0x38], rax
mov qword [rax + 0x20], 0
lea rax, [0x140012700]
mov qword [rdi + 0x28], rax
mov dword [rdi + 0x30], 0
vxorps xmm0, xmm0, xmm0
vmovups ymmword [rdi], ymm0
vxorps xmm6, xmm6, xmm6
vmovups xmmword [rdi + 0x38], xmm6
mov rax, qword [rsi]
mov qword [rdi + 0x38], rax
mov rax, qword [rsi + 8]
mov qword [rdi + 0x40], rax
vmovups xmmword [rsi], xmm6
mov rax, qword [rsi + 0x18]
mov qword [rdi + 0x50], rax
mov qword [rsi + 0x18], 0
mov qword [rbp - 0x30], rdi
mov rax, qword [r14 + 8]
and rax, 0xfffffffffffffffc
mov r14, qword [rax + 0x10]
lock inc dword [r14 + 0x30]
mov dword [rdi + 0x30], 1
mov rcx, qword [r14 + 0x28]
xor edx, edx
xor r8d, r8d
mov r9, rdi
vzeroupper
call qword [sym.imp.KERNEL32.dll_PostQueuedCompletionStatus]
test eax, eax
jne 0x1400125d9
lea rsi, [r14 + 0x60]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
lea rax, [r14 + 0x90]
mov qword [rdi + 0x20], 0
mov rcx, qword [r14 + 0x98]
lea rdx, [rcx + 0x20]
test rcx, rcx
cmove rdx, rax
mov qword [rdx], rdi
mov qword [r14 + 0x98], rdi
mov eax, 1
xchg dword [r14 + 0x58], eax
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
vmovups xmmword [rbx], xmm6
lea rcx, [rbp - 0x40]
call fcn.140012840
vmovaps xmm6, xmmword [rbp - 0x10]
add rsp, 0x70
pop rbx
pop rdi
pop rsi
pop r14
pop rbp
ret