joyce8/EMBER2024-capa huggingface dataset:
Function at 0x140065aa0
Capabilities:
Send data
Send data on socket

Disassembly:
push rsi
sub rsp, 0x40
mov rax, r8
mov rsi, rcx
mov r8d, 0xffffffff
cmp r9, r8
cmovb r8, r9
mov dword [rsp + 0x3c], 0
mov rcx, qword [rdx]
xorps xmm0, xmm0
movups xmmword [rsp + 0x28], xmm0
mov dword [rsp + 0x20], 0
lea r9, [rsp + 0x3c]
mov rdx, rax
call sub.WS2_32.dll_WSASend
cmp eax, 0xffffffff
je 0x140065af1
mov eax, dword [rsp + 0x3c]
mov qword [rsi + 8], rax
xor eax, eax
jmp 0x140065b07
call sub.WS2_32.dll_WSAGetLastError
shl rax, 0x20
or rax, 2
mov qword [rsi + 8], rax
mov eax, 1
mov qword [rsi], rax
mov rax, rsi
add rsp, 0x40
pop rsi
ret

Function at 0x140065b20
Capabilities:
Set socket configuration

Disassembly:
push rbx
sub rsp, 0x30
cmp qword [rdx], 0
je 0x140065b98
mov r9, rdx
mov eax, 0x3e8
mul qword [rdx + 8]
mov r11d, 0xffffffff
jo 0x140065b9b
mov r9d, dword [r9 + 0x10]
mov edx, r9d
imul rdx, rdx, 0x431bde83
shr rdx, 0x32
add rax, rdx
jb 0x140065b9b
imul edx, edx, 0xf4240
sub r9d, edx
mov r10, rax
inc r10
sete bl
test r9d, r9d
setne dl
cmove r10, rax
and dl, bl
test dl, 1
jne 0x140065b9b
mov r11d, 0xffffffff
cmp r10, r11
cmovb r11, r10
test r11, r11
jne 0x140065b9b
lea rax, str.cannot_set_a_0_duration_timeout
add rsp, 0x30
pop rbx
ret
xor r11d, r11d
mov rcx, qword [rcx]
mov dword [rsp + 0x2c], r11d
mov dword [rsp + 0x20], 4
lea r9, [rsp + 0x2c]
mov edx, 0xffff
call sub.WS2_32.dll_setsockopt
cmp eax, 0xffffffff
je 0x140065bc7
xor eax, eax
add rsp, 0x30
pop rbx
ret
call sub.WS2_32.dll_WSAGetLastError
shl rax, 0x20
or rax, 2
add rsp, 0x30
pop rbx
ret

Function at 0x140065cc0
Capabilities:
Set socket configuration

Disassembly:
sub rsp, 0x28
movzx eax, dl
mov dword [rsp + 0x24], eax
mov rcx, qword [rcx]
lea r8, [rsp + 0x24]
mov edx, 0x8004667e
call sub.WS2_32.dll_ioctlsocket
cmp eax, 0xffffffff
je 0x140065ce9
xor eax, eax
add rsp, 0x28
ret
call sub.WS2_32.dll_WSAGetLastError
shl rax, 0x20
or rax, 2
add rsp, 0x28
ret

Function at 0x140065d00
Capabilities:
Set socket configuration

Disassembly:
sub rsp, 0x38
mov rax, qword [rdx]
cmp rax, 1
jne 0x140065d13
movzx edx, word [rdx + 8]
jmp 0x140065d15
xor edx, edx
mov rcx, qword [rcx]
mov word [rsp + 0x30], ax
mov word [rsp + 0x32], dx
mov dword [rsp + 0x20], 4
lea r9, [rsp + 0x30]
mov edx, 0xffff
mov r8d, pe_nt_image_headers64
call sub.WS2_32.dll_setsockopt
cmp eax, 0xffffffff
je 0x140065d4b
xor eax, eax
add rsp, 0x38
ret
call sub.WS2_32.dll_WSAGetLastError
shl rax, 0x20
or rax, 2
add rsp, 0x38
ret

Function at 0x140065de0
Capabilities:
Set socket configuration

Disassembly:
sub rsp, 0x38
movzx eax, dl
mov rcx, qword [rcx]
mov dword [rsp + 0x34], eax
mov dword [rsp + 0x20], 4
lea r9, [rsp + 0x34]
mov edx, 6
mov r8d, 1
call sub.WS2_32.dll_setsockopt
cmp eax, 0xffffffff
je 0x140065e17
xor eax, eax
add rsp, 0x38
ret
call sub.WS2_32.dll_WSAGetLastError
shl rax, 0x20
or rax, 2
add rsp, 0x38
ret
Function at 0x140065eb0
Capabilities:
Receive data
Receive data on socket

Disassembly:
push rsi
sub rsp, 0x20
mov rax, r8
mov rsi, rcx
mov rcx, qword [rdx]
mov rcx, qword [rcx]
cmp r9, 0x7fffffff
mov r8d, 0x7fffffff
cmovb r8, r9
mov rdx, rax
xor r9d, r9d
call sub.WS2_32.dll_recv
cmp eax, 0xffffffff
je 0x140065ef1
cdqe
mov qword [rsi + 8], rax
mov qword [rsi], 0
jmp 0x140065f18
call sub.WS2_32.dll_WSAGetLastError
cmp eax, 0x274a
jne 0x140065f05
xorps xmm0, xmm0
movups xmmword [rsi], xmm0
jmp 0x140065f18
shl rax, 0x20
or rax, 2
mov qword [rsi + 8], rax
mov qword [rsi], 1
mov rax, rsi
add rsp, 0x20
pop rsi
ret

Function at 0x140066980
Capabilities:
Set current directory

Disassembly:
push rsi
push rdi
sub rsp, 0x58
add rdx, rcx
mov qword [rsp + 0x40], rcx
mov qword [rsp + 0x48], rdx
mov word [rsp + 0x50], 0
lea rcx, [rsp + 0x28]
lea rdx, [rsp + 0x40]
call dbg.from_iter<u16, std::sys_common::wtf8::EncodeWide>
mov rdx, qword [rsp + 0x38]
cmp rdx, qword [rsp + 0x30]
jne 0x1400669c4
lea rcx, [rsp + 0x28]
call dbg.reserve_for_push<u16, alloc::alloc::Global>
mov rdx, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x28]
mov word [rsi + rdx*2], 0
mov rcx, rsi
call sub.KERNEL32.dll_SetCurrentDirectoryW
test eax, eax
je 0x140066a02
xor edi, edi
mov rdx, qword [rsp + 0x30]
test rdx, rdx
je 0x1400669f8
add rdx, rdx
mov r8d, 2
mov rcx, rsi
call sym.__rust_dealloc
mov rax, rdi
add rsp, 0x58
pop rdi
pop rsi
ret
call fcn.1400d46b0
mov edi, eax
shl rdi, 0x20
or rdi, 2
mov rdx, qword [rsp + 0x30]
test rdx, rdx
jne 0x1400669e7
jmp 0x1400669f8
Function at 0x140068f40
Capabilities:
Read file on windows

Disassembly:
push rsi
push rdi
push rbx
sub rsp, 0x60
mov rdi, rdx
cmp qword [rdx + 0x20], 0
jne 0x14006904e
mov rsi, rcx
mov rbx, qword [rdi + 0x18]
mov rax, qword [rbx + 8]
test rax, rax
jne 0x140068f79
mov rdx, qword [rbx + 0x10]
lea rax, [rdx + 0xf]
cmp rax, 0xf
jbe 0x140069011
xor eax, eax
mov rdx, qword [rbx + 0x10]
cmp rax, rdx
je 0x140069030
sub rax, rdx
add rdx, qword [rbx]
mov rbx, qword [rdi + 0x10]
mov ecx, 0xffffffff
cmp rax, rcx
cmovae rax, rcx
mov dword [rsp + 0x30], 0
mov rcx, qword [rdi]
mov qword [rsp + 0x20], rbx
lea r9, [rsp + 0x30]
mov r8d, eax
call sub.KERNEL32.dll_ReadFile
test eax, eax
je 0x140068fcd
mov eax, dword [rsp + 0x30]
mov ecx, 2
test rax, rax
jne 0x140068fe9
jmp 0x140068fde
call fcn.1400d46b0
cmp eax, 0x3e5
je 0x140068fe4
cmp eax, 0x6d
jne 0x140069001
mov byte [rsi + 1], 0
jmp 0x140068ff5
mov ecx, 1
mov qword [rdi + 0x20], rcx
mov qword [rdi + 0x28], rax
mov byte [rsi + 1], 1
xor eax, eax
mov byte [rsi], al
add rsp, 0x60
pop rbx
pop rdi
pop rsi
ret
shl rax, 0x20
or rax, 2
mov qword [rsi + 8], rax
mov al, 1
jmp 0x140068ff7
mov r8d, 0x10
mov rcx, rbx
call sym.alloc::raw_vec::RawVec_T_A_::reserve::do_reserve_and_handle::h2ec7fe4b38353873
mov rax, qword [rbx + 8]
mov rdx, qword [rbx + 0x10]
cmp rax, rdx
jne 0x140068f86
mov r8d, 1
mov rcx, rbx
mov rdx, rax
call sym.alloc::raw_vec::RawVec_T_A_::reserve::do_reserve_and_handle::h2ec7fe4b38353873
mov rax, qword [rbx + 8]
mov rdx, qword [rbx + 0x10]
jmp 0x140068f86
mov qword [rsp + 0x30], 0
add rdi, 0x20
lea rdx, [rsp + 0x30]
mov rcx, rdi
call dbg.assert_failed<std::sys::windows::pipe::State, std::sys::windows::pipe::State>
ud2
Function at 0x14006d4b0
Capabilities:
Check if file exists
Get file attributes

Disassembly:
push rsi
push rdi
push rbx
sub rsp, 0x50
movdqa xmmword [rsp + 0x40], xmm6
mov rsi, rcx
lea rcx, [rsp + 0x28]
call dbg.maybe_verbatim
mov rdi, qword [rsp + 0x28]
test rdi, rdi
je 0x14006d4f1
movdqu xmm6, xmmword [rsp + 0x30]
mov rcx, rdi
call sub.KERNEL32.dll_GetFileAttributesW
cmp eax, 0xffffffff
je 0x14006d54e
mov qword [rsi], rdi
movdqu xmmword [rsi + 8], xmm6
jmp 0x14006d541
mov rbx, qword [rsp + 0x30]
mov eax, ebx
and eax, 3
cmp eax, 1
jne 0x14006d53a
lea rdi, [rbx - 1]
mov rcx, qword [rbx - 1]
mov rax, qword [rbx + 7]
call qword [rax]
mov rax, qword [rbx + 7]
mov rdx, qword [rax + 8]
test rdx, rdx
je 0x14006d527
mov r8, qword [rax + 0x10]
mov rcx, qword [rdi]
call sym.__rust_dealloc
mov edx, 0x18
mov r8d, 8
mov rcx, rdi
call sym.__rust_dealloc
mov qword [rsi], 0
movaps xmm6, xmmword [rsp + 0x40]
add rsp, 0x50
pop rbx
pop rdi
pop rsi
ret
mov qword [rsi], 0
movq rdx, xmm6
test rdx, rdx
je 0x14006d541
add rdx, rdx
mov r8d, 2
mov rcx, rdi
movaps xmm6, xmmword [rsp + 0x40]
add rsp, 0x50
pop rbx
pop rdi
pop rsi
jmp sym.__rust_dealloc

Function at 0x14006e010
Capabilities:
Generate random numbers via rtlgenrandom

Disassembly:
push rsi
sub rsp, 0x90
mov dword [rsp + 0x24], ecx
xorps xmm0, xmm0
movaps xmmword [rsp + 0x30], xmm0
lea rcx, [rsp + 0x30]
mov edx, 0x10
call sub.ADVAPI32.dll_SystemFunction036
test al, al
je 0x14006e04a
mov rax, qword [rsp + 0x30]
mov rdx, qword [rsp + 0x38]
add rsp, 0x90
pop rsi
ret
call fcn.1400d46b0
shl rax, 0x20
or rax, 2
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x28]
mov qword [rsp + 0x40], rax
lea rax, [sym.__std::io::error::Error_as_core::fmt::Display_::fmt::hce088afc0002fe40]
mov qword [rsp + 0x48], rax
lea rax, [rsp + 0x24]
mov qword [rsp + 0x50], rax
lea rax, [sym.core::fmt::num::__impl_core::fmt::LowerHex_for_i32_::fmt::h25055a1a7276a670]
mov qword [rsp + 0x58], rax
lea rax, [0x140146f90]
mov qword [rsp + 0x60], rax
mov qword [rsp + 0x68], 2
lea rax, [0x140146fb0]
mov qword [rsp + 0x70], rax
mov qword [rsp + 0x78], 2
lea rax, [rsp + 0x40]
mov qword [rsp + 0x80], rax
mov qword [rsp + 0x88], 2
lea rdx, str.library_std_src_syswindows_rand.rsRNG_broken:___fallback_RNG_broken:
lea rcx, [rsp + 0x60]
call dbg.panic_fmt
ud2
Function at 0x14006e100
Capabilities:
Create thread

Disassembly:
push r14
push rsi
push rdi
push rbx
sub rsp, 0x48
mov rbx, r8
mov rdi, rdx
mov r14, rcx
mov qword [rsp + 0x38], rdx
mov qword [rsp + 0x40], r8
mov ecx, 0x10
mov edx, 8
call sym.__rust_alloc
test rax, rax
je 0x14006e1c6
mov rsi, rax
mov qword [rax], rdi
mov qword [rax + 8], rbx
mov qword [rsp + 0x28], 0
mov dword [rsp + 0x20], 0x10000
lea r8, [dbg.thread_start]
xor ebx, ebx
xor ecx, ecx
mov rdx, r14
mov r9, rax
call sub.KERNEL32.dll_CreateThread
mov rcx, rax
test rax, rax
jne 0x14006e1b6
mov rcx, qword [rsi]
mov rax, qword [rsi + 8]
call qword [rax]
mov rax, qword [rsi + 8]
mov rdx, qword [rax + 8]
test rdx, rdx
je 0x14006e18f
mov r8, qword [rax + 0x10]
mov rcx, qword [rsi]
call sym.__rust_dealloc
mov edx, 0x10
mov r8d, 8
mov rcx, rsi
call sym.__rust_dealloc
call fcn.1400d46b0
mov ecx, eax
shl rcx, 0x20
or rcx, 2
mov ebx, 1
mov rax, rbx
mov rdx, rcx
add rsp, 0x48
pop rbx
pop rdi
pop rsi
pop r14
ret
mov ecx, 0x10
mov edx, 8
call dbg.handle_alloc_error
ud2
Function at 0x14006e450
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push rsi
push rdi
push rbx
sub rsp, 0x20
cmp edx, 3
je 0x14006e464
test edx, edx
jne 0x14006e5a1
mov rdi, qword [0x1401801a8]
test rdi, rdi
je 0x14006e5a1
xor ebx, ebx
jmp 0x14006e489
mov rdi, qword [rdi + 8]
test rdi, rdi
je 0x14006e4ac
mov ecx, dword [rdi + 0x10]
call sub.KERNEL32.dll_TlsGetValue
test rax, rax
je 0x14006e480
mov rsi, rax
mov ecx, dword [rdi + 0x10]
xor edx, edx
call sub.KERNEL32.dll_TlsSetValue
mov rcx, rsi
call qword [rdi]
mov bl, 1
jmp 0x14006e480
test bl, 1
je 0x14006e5a1
mov rdi, qword [0x1401801a8]
test rdi, rdi
je 0x14006e5a1
xor ebx, ebx
jmp 0x14006e4d9
mov rdi, qword [rdi + 8]
test rdi, rdi
je 0x14006e4fc
mov ecx, dword [rdi + 0x10]
call sub.KERNEL32.dll_TlsGetValue
test rax, rax
je 0x14006e4d0
mov rsi, rax
mov ecx, dword [rdi + 0x10]
xor edx, edx
call sub.KERNEL32.dll_TlsSetValue
mov rcx, rsi
call qword [rdi]
mov bl, 1
jmp 0x14006e4d0
test bl, 1
je 0x14006e5a1
mov rdi, qword [0x1401801a8]
test rdi, rdi
je 0x14006e5a1
xor ebx, ebx
jmp 0x14006e529
mov rdi, qword [rdi + 8]
test rdi, rdi
je 0x14006e54c
mov ecx, dword [rdi + 0x10]
call sub.KERNEL32.dll_TlsGetValue
test rax, rax
je 0x14006e520
mov rsi, rax
mov ecx, dword [rdi + 0x10]
xor edx, edx
call sub.KERNEL32.dll_TlsSetValue
mov rcx, rsi
call qword [rdi]
mov bl, 1
jmp 0x14006e520
test bl, 1
je 0x14006e5a1
mov rdi, qword [0x1401801a8]
test rdi, rdi
je 0x14006e5a1
xor ebx, ebx
jmp 0x14006e579
mov rdi, qword [rdi + 8]
test rdi, rdi
je 0x14006e59c
mov ecx, dword [rdi + 0x10]
call sub.KERNEL32.dll_TlsGetValue
test rax, rax
je 0x14006e570
mov rsi, rax
mov ecx, dword [rdi + 0x10]
xor edx, edx
call sub.KERNEL32.dll_TlsSetValue
mov rcx, rsi
call qword [rdi]
mov bl, 1
jmp 0x14006e570
test bl, 1
jne 0x14006e5a9
add rsp, 0x20
pop rbx
pop rdi
pop rsi
ret
mov rdi, qword [0x1401801a8]
jmp 0x14006e5b6
mov rdi, qword [rdi + 8]
test rdi, rdi
je 0x14006e5a1
mov ecx, dword [rdi + 0x10]
call sub.KERNEL32.dll_TlsGetValue
test rax, rax
je 0x14006e5b2
mov rsi, rax
mov ecx, dword [rdi + 0x10]
xor edx, edx
call sub.KERNEL32.dll_TlsSetValue
mov rcx, rsi
call qword [rdi]
jmp 0x14006e5b2
Function at 0x140071380
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push rsi
push rdi
sub rsp, 0x28
mov rsi, rcx
mov rcx, qword [0x1400d70b8]
test rcx, rcx
je 0x1400713a2
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 1
ja 0x1400713bc
jmp 0x1400713cb
lea rcx, [0x1400d70b8]
call dbg.lazy_init
mov rcx, rax
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 1
jbe 0x1400713cb
cmp byte [rax + 8], 0
je 0x1400713cb
add rax, 9
jmp 0x140071472
mov rcx, qword [0x1400d70b8]
test rcx, rcx
je 0x140071447
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 1
je 0x140071461
mov rdi, rax
test rax, rax
jne 0x140071432
mov ecx, 0x10
mov edx, 8
call sym.__rust_alloc
test rax, rax
je 0x140071479
mov rdi, rax
mov byte [rax + 8], 0
lea rax, [0x1400d70b8]
mov qword [rdi], rax
mov rcx, qword [0x1400d70b8]
test rcx, rcx
jne 0x14007142a
lea rcx, [0x1400d70b8]
call dbg.lazy_init
mov rcx, rax
mov rdx, rdi
call sub.KERNEL32.dll_TlsSetValue
test rsi, rsi
je 0x140071465
movzx ecx, byte [rsi]
and cl, 1
neg cl
mov byte [rsi], 0
and cl, byte [rsi + 1]
jmp 0x140071467
lea rcx, [0x1400d70b8]
call dbg.lazy_init
mov rcx, rax
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 1
jne 0x1400713e2
xor eax, eax
jmp 0x140071472
xor ecx, ecx
lea rax, [rdi + 9]
mov byte [rdi + 8], 1
mov byte [rdi + 9], cl
add rsp, 0x28
pop rdi
pop rsi
ret
mov ecx, 0x10
mov edx, 8
call dbg.handle_alloc_error
ud2
Function at 0x140071490
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push rsi
push rdi
push rbx
sub rsp, 0x20
mov rdi, rcx
mov rcx, qword [0x1400d70c8]
test rcx, rcx
je 0x1400714b3
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 1
ja 0x1400714cd
jmp 0x1400714df
lea rcx, [0x1400d70c8]
call dbg.lazy_init
mov rcx, rax
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 1
jbe 0x1400714df
mov rbx, rax
cmp qword [rax], 0
je 0x1400714df
add rbx, 8
jmp 0x1400715e7
mov rcx, qword [0x1400d70c8]
test rcx, rcx
je 0x14007157d
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 1
je 0x14007159b
mov rsi, rax
test rax, rax
jne 0x140071556
mov ecx, 0x20
mov edx, 8
call sym.__rust_alloc
test rax, rax
je 0x1400715f2
mov rsi, rax
mov qword [rax], 0
lea rax, [0x1400d70c8]
mov qword [rsi + 0x18], rax
mov rcx, qword [0x1400d70c8]
test rcx, rcx
jne 0x14007154e
lea rcx, [0x1400d70c8]
call dbg.lazy_init
mov rcx, rax
mov rdx, rsi
call sub.KERNEL32.dll_TlsSetValue
test rdi, rdi
je 0x1400715b6
mov rdx, qword [rdi]
mov rax, qword [rdi + 8]
mov rcx, qword [rdi + 0x10]
mov qword [rdi], 0
test rdx, rdx
je 0x1400715b6
cmp rdx, 1
jne 0x14007159f
mov rdx, rcx
jmp 0x1400715ba
lea rcx, [0x1400d70c8]
call dbg.lazy_init
mov rcx, rax
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 1
jne 0x1400714fe
xor ebx, ebx
jmp 0x1400715e7
test rcx, rcx
je 0x1400715b6
xor eax, eax
lock dec qword [rcx]
mov edx, 0
jne 0x1400715ba
call dbg.drop_slow<std::thread::Inner>
xor eax, eax
xor edx, edx
lea rbx, [rsi + 8]
cmp qword [rsi], 0
mov rcx, qword [rsi + 0x10]
mov qword [rsi], 1
mov qword [rsi + 8], rax
mov qword [rsi + 0x10], rdx
je 0x1400715e7
test rcx, rcx
je 0x1400715e7
lock dec qword [rcx]
jne 0x1400715e7
call dbg.drop_slow<std::thread::Inner>
mov rax, rbx
add rsp, 0x20
pop rbx
pop rdi
pop rsi
ret
mov ecx, 0x20
mov edx, 8
call dbg.handle_alloc_error
ud2
Function at 0x140071810
Capabilities:
Resolve dns

Disassembly:
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x68
mov rsi, rcx
mov rdi, qword [rdx]
mov rbx, qword [rdx + 8]
movzx ebp, word [rdx + 0x10]
mov rax, qword [0x140180180]
cmp rax, 3
jne 0x140071921
lea rcx, [rsp + 0x30]
mov rdx, rdi
mov r8, rbx
call sym.__str_as_alloc::ffi::c_str::CString::new::SpecNewImpl_::spec_new_impl::hc49d00225f1249a8
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x14007187e
mov rdx, qword [rsp + 0x40]
test rdx, rdx
je 0x14007186a
mov r8, rdx
not r8
shr r8, 0x3f
call sym.__rust_dealloc
lea rax, str.data_provided_contains_a_nul_byte
mov qword [rsi + 8], rax
mov qword [rsi], 1
jmp 0x1400718f5
mov rdi, qword [rsp + 0x40]
mov rbx, qword [rsp + 0x48]
xorps xmm0, xmm0
movaps xmmword [rsp + 0x30], xmm0
movaps xmmword [rsp + 0x50], xmm0
movaps xmmword [rsp + 0x40], xmm0
mov dword [rsp + 0x38], 1
mov qword [rsp + 0x28], 0
lea r8, [rsp + 0x30]
lea r9, [rsp + 0x28]
mov rcx, rdi
xor edx, edx
call sub.WS2_32.dll_getaddrinfo
test eax, eax
je 0x140071901
call sub.WS2_32.dll_WSAGetLastError
shl rax, 0x20
or rax, 2
mov qword [rsi + 8], rax
mov eax, 1
mov qword [rsi], rax
mov byte [rdi], 0
test rbx, rbx
je 0x1400718f5
mov r8d, 1
mov rcx, rdi
mov rdx, rbx
call sym.__rust_dealloc
mov rax, rsi
add rsp, 0x68
pop rbx
pop rbp
pop rdi
pop rsi
ret
mov rax, qword [rsp + 0x28]
mov qword [rsi + 8], rax
mov qword [rsi + 0x10], rax
mov word [rsi + 0x18], bp
xor eax, eax
mov qword [rsi], rax
mov byte [rdi], 0
test rbx, rbx
jne 0x1400718e4
jmp 0x1400718f5
call dbg.initialize<unsafe extern "system" fn() -> i32, std::sync::once_lock::{impl#0}::get_or_init::{closure_env#0}<unsafe extern "system" fn() -> i32, std::sys::windows::net::init::{closure_env#0}>, !>
jmp 0x140071837
Function at 0x140071930
Capabilities:
Connect socket

Disassembly:
push rsi
push rdi
push rbx
sub rsp, 0x40
mov rbx, r8
mov rsi, rcx
test rdx, rdx
je 0x140071952
mov qword [rsi + 8], rbx
mov qword [rsi], 1
jmp 0x140071a30
mov rax, qword [0x140180180]
cmp rax, 3
jne 0x140071a3b
lea rcx, [rsp + 0x20]
mov rdx, rbx
mov r8d, 1
call sym.std::sys::windows::net::Socket::new::h2c56d6199de012f7
cmp qword [rsp + 0x20], 0
mov rdi, qword [rsp + 0x28]
je 0x140071993
mov qword [rsi + 8], rdi
mov qword [rsi], 1
jmp 0x140071a30
cmp word [rbx], 0
je 0x1400719b7
mov eax, dword [rbx + 4]
movzx ecx, word [rbx + 0xc]
rol cx, 8
mov edx, dword [rbx + 8]
movups xmm0, xmmword [rbx + 0xe]
mov r8d, 0x1c
mov bx, 0x17
jmp 0x1400719da
mov ecx, dword [rbx + 2]
movzx eax, word [rbx + 6]
shl rax, 0x20
or rax, rcx
rol cx, 8
shr rax, 0x10
xorps xmm0, xmm0
mov r8d, 0x10
mov bx, 2
mov word [rsp + 0x20], bx
mov word [rsp + 0x22], cx
mov dword [rsp + 0x24], eax
movups xmmword [rsp + 0x28], xmm0
mov dword [rsp + 0x38], edx
lea rdx, [rsp + 0x20]
mov rcx, rdi
call sub.WS2_32.dll_connect
cmp eax, 0xffffffff
je 0x140071a10
mov qword [rsi + 8], rdi
mov qword [rsi], 0
jmp 0x140071a30
call sub.WS2_32.dll_WSAGetLastError
shl rax, 0x20
or rax, 2
mov qword [rsi + 8], rax
mov qword [rsi], 1
mov rcx, rdi
call fcn.1400d48e0
mov rax, rsi
add rsp, 0x40
pop rbx
pop rdi
pop rsi
ret
call dbg.initialize<unsafe extern "system" fn() -> i32, std::sync::once_lock::{impl#0}::get_or_init::{closure_env#0}<unsafe extern "system" fn() -> i32, std::sys::windows::net::init::{closure_env#0}>, !>
jmp 0x140071963
Function at 0x140071ed0
Capabilities:
Get local ipv4 addresses
Get socket information

Disassembly:
push rsi
sub rsp, 0xb0
mov rax, rdx
mov rsi, rcx
xorps xmm0, xmm0
movaps xmmword [rsp + 0xa0], xmm0
movaps xmmword [rsp + 0x90], xmm0
movaps xmmword [rsp + 0x80], xmm0
movaps xmmword [rsp + 0x70], xmm0
movaps xmmword [rsp + 0x60], xmm0
movaps xmmword [rsp + 0x50], xmm0
movaps xmmword [rsp + 0x40], xmm0
movaps xmmword [rsp + 0x30], xmm0
mov dword [rsp + 0x2c], pe_nt_image_headers64
lea rdx, [rsp + 0x30]
lea r8, [rsp + 0x2c]
mov rcx, rax
call sub.WS2_32.dll_getsockname
cmp eax, 0xffffffff
je 0x140071f83
mov eax, dword [rsp + 0x2c]
movzx ecx, word [rsp + 0x30]
cmp ecx, 2
je 0x140071f92
cmp ecx, 0x17
jne 0x140071fca
cmp eax, 0x1c
jb 0x140071fe3
movzx eax, word [rsp + 0x32]
mov ecx, dword [rsp + 0x34]
mov edx, dword [rsp + 0x48]
rol ax, 8
mov word [rsi], 1
mov dword [rsi + 4], ecx
mov dword [rsi + 8], edx
mov word [rsi + 0xc], ax
movups xmm0, xmmword [rsp + 0x38]
movups xmmword [rsi + 0xe], xmm0
add rsp, 0xb0
pop rsi
ret
call sub.WS2_32.dll_WSAGetLastError
shl rax, 0x20
or rax, 2
jmp 0x140071fd1
cmp eax, 0x10
jb 0x140071ffd
movzx eax, word [rsp + 0x32]
rol ax, 8
mov ecx, dword [rsp + 0x34]
mov rdx, rcx
shl rdx, 0x10
movzx eax, ax
or rax, rdx
mov word [rsi], 0
shr rcx, 0x10
mov word [rsi + 6], cx
mov dword [rsi + 2], eax
add rsp, 0xb0
pop rsi
ret
lea rax, str.invalid_argumentH
mov qword [rsi + 8], rax
mov word [rsi], 2
add rsp, 0xb0
pop rsi
ret
lea rcx, str.assertion_failed:_len_as_usize___mem::size_of::_c::sockaddr_in6___library_std_src_sys_common_net.rs
lea r8, [0x140147cd8]
mov edx, 0x43
call dbg.panic
ud2
lea rcx, str.assertion_failed:_len_as_usize___mem::size_of::_c::sockaddr_in___
lea r8, [0x140147d38]
mov edx, 0x42
call dbg.panic
ud2

Function at 0x140072290
Capabilities:
Send data
Send data on socket

Disassembly:
push rsi
push rdi
push rbx
sub rsp, 0x50
mov r10, r8
mov rbx, rcx
mov rdi, qword [rsp + 0x90]
cmp r9, 0x7fffffff
mov r8d, 0x7fffffff
cmovb r8, r9
cmp word [rdi], 0
je 0x1400722da
mov ecx, dword [rdi + 4]
movzx eax, word [rdi + 0xc]
rol ax, 8
mov r9d, dword [rdi + 8]
movups xmm0, xmmword [rdi + 0xe]
mov esi, 0x1c
mov di, 0x17
jmp 0x1400722fc
mov eax, dword [rdi + 2]
movzx ecx, word [rdi + 6]
shl rcx, 0x20
or rcx, rax
rol ax, 8
shr rcx, 0x10
xorps xmm0, xmm0
mov esi, 0x10
mov di, 2
mov word [rsp + 0x30], di
mov word [rsp + 0x32], ax
mov dword [rsp + 0x34], ecx
movups xmmword [rsp + 0x38], xmm0
mov dword [rsp + 0x48], r9d
mov rcx, qword [rdx]
mov dword [rsp + 0x28], esi
lea rax, [rsp + 0x30]
mov qword [rsp + 0x20], rax
mov rdx, r10
xor r9d, r9d
call sub.WS2_32.dll_sendto
cmp eax, 0xffffffff
je 0x140072344
cdqe
mov qword [rbx + 8], rax
mov qword [rbx], 0
jmp 0x14007235c
call sub.WS2_32.dll_WSAGetLastError
shl rax, 0x20
or rax, 2
mov qword [rbx + 8], rax
mov qword [rbx], 1
mov rax, rbx
add rsp, 0x50
pop rbx
pop rdi
pop rsi
ret
Function at 0x140072370
Capabilities:
Connect socket

Disassembly:
sub rsp, 0x48
mov rax, r8
test rdx, rdx
je 0x140072381
add rsp, 0x48
ret
cmp word [rax], 0
je 0x1400723a7
mov r9d, dword [rax + 4]
movzx edx, word [rax + 0xc]
rol dx, 8
mov r10d, dword [rax + 8]
movups xmm0, xmmword [rax + 0xe]
mov r8d, 0x1c
mov ax, 0x17
jmp 0x1400723cb
mov edx, dword [rax + 2]
movzx r9d, word [rax + 6]
shl r9, 0x20
or r9, rdx
rol dx, 8
shr r9, 0x10
xorps xmm0, xmm0
mov r8d, 0x10
mov ax, 2
mov word [rsp + 0x28], ax
mov word [rsp + 0x2a], dx
mov dword [rsp + 0x2c], r9d
movups xmmword [rsp + 0x30], xmm0
mov dword [rsp + 0x40], r10d
mov rcx, qword [rcx]
lea rdx, [rsp + 0x28]
call sub.WS2_32.dll_connect
cmp eax, 0xffffffff
je 0x1400723fd
xor eax, eax
add rsp, 0x48
ret
call sub.WS2_32.dll_WSAGetLastError
shl rax, 0x20
or rax, 2
add rsp, 0x48
ret

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

Disassembly:
push rsi
push rdi
sub rsp, 0x28
mov rsi, rcx
mov rcx, qword [0x1400d70d8]
test rcx, rcx
je 0x140072612
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 1
ja 0x14007262c
jmp 0x14007263b
lea rcx, [0x1400d70d8]
call dbg.lazy_init
mov rcx, rax
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 1
jbe 0x14007263b
cmp qword [rax], 0
je 0x14007263b
add rax, 8
jmp 0x140072700
mov rcx, qword [0x1400d70d8]
test rcx, rcx
je 0x1400726e0
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 1
je 0x1400726fe
mov rdi, rax
test rax, rax
jne 0x1400726b2
mov ecx, 0x18
mov edx, 8
call sym.__rust_alloc
test rax, rax
je 0x140072707
mov rdi, rax
mov qword [rax], 0
lea rax, [0x1400d70d8]
mov qword [rdi + 0x10], rax
mov rcx, qword [0x1400d70d8]
test rcx, rcx
jne 0x1400726aa
lea rcx, [0x1400d70d8]
call dbg.lazy_init
mov rcx, rax
mov rdx, rdi
call sub.KERNEL32.dll_TlsSetValue
test rsi, rsi
je 0x1400726cd
mov rax, qword [rsi]
mov qword [rsi], 0
cmp rax, 1
jne 0x1400726cd
mov rcx, qword [rsi + 8]
jmp 0x1400726cf
xor ecx, ecx
lea rax, [rdi + 8]
mov qword [rdi], 1
mov qword [rdi + 8], rcx
jmp 0x140072700
lea rcx, [0x1400d70d8]
call dbg.lazy_init
mov rcx, rax
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 1
jne 0x14007265a
xor eax, eax
add rsp, 0x28
pop rdi
pop rsi
ret
mov ecx, 0x18
mov edx, 8
call dbg.handle_alloc_error
ud2