Function at 0x1402f8eb0
Capabilities:
Get socket status
Send data
Send data on socket

Disassembly:
endbr64
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x98
mov rsi, qword [0x140485900]
mov rax, qword [rsi]
mov qword [rsp + 0x88], rax
xor eax, eax
lea rax, [rcx + 0x30]
mov r15, rcx
mov dword [rsp + 0xe8], edx
mov qword [rsp + 0x48], rax
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov rdi, r8
mov qword [rsp + 0x58], rax
call rax
movzx eax, byte [r15 + 0x1f8]
mov byte [rsp + 0x38], al
test al, al
jne 0x1402f950f
mov rax, qword [r15 + 0x1a8]
mov dword [rax], 0
mov rax, qword [r15 + 0x1c0]
mov qword [r15 + 0x1b8], 0xffffffffffffffff
mov dword [rax], 0
mov rax, qword [r15 + 0x1d8]
mov qword [r15 + 0x1d0], 0xffffffffffffffff
mov dword [rax], 0
mov rbp, qword [r15 + 0x1a8]
mov qword [r15 + 0x1e8], 0xffffffffffffffff
mov rbx, qword [r15 + 0x58]
mov ecx, dword [rbp]
test ecx, ecx
je 0x1402f97dc
mov edx, ecx
mov rax, rbp
lea rdx, [rbp + rdx*8]
jmp 0x1402f8f8d
add rax, 8
cmp rdx, rax
je 0x1402f9553
cmp rbx, qword [rax + 8]
jne 0x1402f8f80
mov rbx, qword [r15 + 0x1f0]
mov rsi, qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
test rbx, rbx
jne 0x1402f8fb9
jmp 0x1402f8fce
mov rbx, qword [rbx + 8]
test rbx, rbx
je 0x1402f8fce
mov rax, qword [rbx]
mov r13, rsi
mov rcx, rbx
call qword [rax + 0x10]
test al, al
jne 0x1402f8fb0
mov byte [rsp + 0x38], 1
lea rax, [r15 + 0x1f0]
lea r14, [r15 + 0x78]
mov qword [rsp + 0x40], 0
mov qword [rsp + 0x50], rax
lea rbp, [r15 + 0x1a8]
cmp byte [rsp + 0x38], 0
mov rsi, qword [r14]
jne 0x1402f9000
cmp r14, rsi
setne byte [rsp + 0x38]
cmp r14, rsi
je 0x1402f909d
nop dword [rax]
mov r13, qword [rbp]
mov edx, dword [rbp + 8]
mov r12, rsi
mov rsi, qword [rsi]
mov eax, dword [r13]
lea ebx, [rax + 1]
cmp edx, ebx
jae 0x1402f9086
mov eax, edx
mov r13, qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
shr eax, 1
add eax, edx
cmp eax, ebx
cmovae ebx, eax
mov eax, ebx
lea rcx, [rax*8 + 8]
call sym.operator_new_unsigned_long_long_
mov rcx, qword [rbp]
mov r13, rax
mov edx, dword [rcx]
mov dword [rax], edx
xor eax, eax
test edx, edx
je 0x1402f9073
nop word [rax + rax]
mov edx, eax
add eax, 1
mov r8, qword [rcx + rdx*8 + 8]
mov qword [r13 + rdx*8 + 8], r8
cmp eax, dword [rcx]
jb 0x1402f9060
call sym.operator_delete_void_
mov eax, dword [r13]
mov qword [rbp], r13
mov dword [rbp + 8], ebx
lea ebx, [rax + 1]
mov dword [r13], ebx
mov rdx, qword [r12 + 0x10]
mov qword [r13 + rax*8 + 8], rdx
cmp rsi, r14
jne 0x1402f9010
mov rax, qword [rbp + 0x10]
mov rsi, qword [rsp + 0x40]
cmp rsi, rax
cmovae rax, rsi
add r14, 0x50
add rbp, 0x18
mov qword [rsp + 0x40], rax
cmp qword [rsp + 0x50], rbp
jne 0x1402f8fee
cmp byte [rsp + 0x38], 0
mov rsi, qword [r15 + 0x168]
lea r12, [r15 + 0x168]
je 0x1402f9546
cmp r12, rsi
je 0x1402f975e
mov r14, qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
nop
mov r13, qword [r15 + 0x1c0]
mov edx, dword [r15 + 0x1c8]
mov rbp, rsi
mov rsi, qword [rsi]
mov eax, dword [r13]
lea ebx, [rax + 1]
cmp edx, ebx
jae 0x1402f916d
mov eax, edx
mov r13, r14
shr eax, 1
add eax, edx
cmp eax, ebx
cmovae ebx, eax
mov eax, ebx
lea rcx, [rax*8 + 8]
call sym.operator_new_unsigned_long_long_
mov rcx, qword [r15 + 0x1c0]
mov r13, rax
mov edx, dword [rcx]
mov dword [rax], edx
xor eax, eax
test edx, edx
je 0x1402f9153
mov edx, eax
add eax, 1
mov r8, qword [rcx + rdx*8 + 8]
mov qword [r13 + rdx*8 + 8], r8
cmp eax, dword [rcx]
jb 0x1402f9140
call sym.operator_delete_void_
mov eax, dword [r13]
mov qword [r15 + 0x1c0], r13
mov dword [r15 + 0x1c8], ebx
lea ebx, [rax + 1]
mov dword [r13], ebx
mov rdx, qword [rbp + 0x10]
mov qword [r13 + rax*8 + 8], rdx
cmp r12, rsi
jne 0x1402f90f0
mov rcx, qword [rsp + 0x40]
mov rax, qword [r15 + 0x1d0]
mov rbp, qword [r15 + 0x168]
cmp rcx, rax
cmovae rax, rcx
mov qword [rsp + 0x40], rax
lea rax, [r15 + 0x1d8]
mov qword [rsp + 0x50], rax
cmp rsi, rbp
je 0x1402f925c
mov r14, qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
nop
mov r13, qword [r15 + 0x1d8]
mov edx, dword [r15 + 0x1e0]
mov r12, rbp
mov rbp, qword [rbp]
mov eax, dword [r13]
lea ebx, [rax + 1]
cmp edx, ebx
jae 0x1402f9245
mov eax, edx
mov r13, r14
shr eax, 1
add eax, edx
cmp eax, ebx
cmovae ebx, eax
mov eax, ebx
lea rcx, [rax*8 + 8]
call sym.operator_new_unsigned_long_long_
mov rcx, qword [r15 + 0x1d8]
mov r13, rax
mov edx, dword [rcx]
mov dword [rax], edx
xor eax, eax
test edx, edx
je 0x1402f922b
nop dword [rax]
mov edx, eax
add eax, 1
mov r8, qword [rcx + rdx*8 + 8]
mov qword [r13 + rdx*8 + 8], r8
cmp eax, dword [rcx]
jb 0x1402f9218
call sym.operator_delete_void_
mov eax, dword [r13]
mov qword [r15 + 0x1d8], r13
mov dword [r15 + 0x1e0], ebx
lea ebx, [rax + 1]
mov dword [r13], ebx
mov rdx, qword [r12 + 0x10]
mov qword [r13 + rax*8 + 8], rdx
cmp rsi, rbp
jne 0x1402f91c0
mov ecx, dword [rsp + 0xe8]
mov rsi, qword [r15 + 0x1e8]
test ecx, ecx
jne 0x1402f9279
cmp byte [rsp + 0x38], 1
jne 0x1402f950f
mov qword [rsp + 0x68], 0
mov edx, dword [rsp + 0xe8]
test edx, edx
jne 0x1402f96ce
mov rcx, qword [rsp + 0x48]
mov r13, qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
call r13
mov rax, qword [rsp + 0x40]
mov r8, qword [r15 + 0x1c0]
mov dword [rsp + 0x70], 0
mov r9, qword [r15 + 0x1d8]
mov rdx, qword [r15 + 0x1a8]
mov qword [rsp + 0x78], 0
cmp rsi, rax
mov r10d, dword [rsp + 0x68]
mov qword [rsp + 0x80], 0
cmovb rsi, rax
mov rax, r8
or rax, r9
or rax, rdx
lea ecx, [rsi + 1]
je 0x1402f979b
test r10d, r10d
je 0x1402f9629
lea rax, [rsp + 0x68]
mov qword [rsp + 0x20], rax
call qword [sym.imp.WS2_32.dll_select]
mov ebx, eax
test eax, eax
js 0x1402f956e
je 0x1402f9578
mov rdx, qword [r15 + 0x1a8]
mov rcx, qword [r15 + 0x58]
call sym.__WSAFDIsSet
test eax, eax
jne 0x1402f9648
mov rcx, qword [rsp + 0x48]
mov rax, qword [rsp + 0x58]
call rax
lea rbx, [r15 + 0x158]
mov rcx, qword [rsp + 0x50]
mov r8, rdi
mov rdx, rbx
call method.boost::asio::detail::win_fd_set_adapter.perform_boost::asio::detail::reactor_op_queue_unsigned_long_long___boost::asio::detail::op_queue_boost::asio::detail::win_iocp_operation___const
lea rcx, [r15 + 0x1c0]
mov r8, rdi
mov rdx, rbx
call method.boost::asio::detail::win_fd_set_adapter.perform_boost::asio::detail::reactor_op_queue_unsigned_long_long___boost::asio::detail::op_queue_boost::asio::detail::win_iocp_operation___const
lea rax, [r15 + 0x28]
mov r14, qword [rsp + 0x50]
lea rbp, [r15 + 0x118]
mov qword [rsp + 0x38], rax
mov r10, qword [r14]
xor r12d, r12d
mov eax, dword [r10]
test eax, eax
je 0x1402f94f7
nop dword [rax]
mov r8, qword [rbp + 0x38]
mov eax, r12d
mov rcx, qword [r10 + rax*8 + 8]
test r8, r8
je 0x1402f94ea
mov rax, rcx
xor edx, edx
mov r9, qword [rbp + 0x30]
div r8
shl rdx, 4
lea rax, [r9 + rdx]
mov rsi, qword [rax]
cmp rsi, rbp
je 0x1402f94ea
mov rax, qword [rax + 8]
mov rax, qword [rax]
cmp rsi, rax
jne 0x1402f93ec
jmp 0x1402f94ea
mov rsi, qword [rsi]
cmp rax, rsi
je 0x1402f94ea
cmp rcx, qword [rsi + 0x10]
jne 0x1402f93e0
cmp rsi, rbp
je 0x1402f94ea
mov rbx, qword [rsi + 0x18]
test rbx, rbx
jne 0x1402f9421
jmp 0x1402f947f
mov qword [rax + 0x20], rbx
mov qword [rdi + 8], rbx
mov rbx, qword [rsi + 0x18]
test rbx, rbx
je 0x1402f9477
mov rcx, rbx
call qword [rbx + 0x60]
test eax, eax
je 0x1402f94e7
mov rax, qword [rsi + 0x18]
test rax, rax
je 0x1402f9451
mov rdx, qword [rax + 0x20]
mov qword [rsi + 0x18], rdx
test rdx, rdx
je 0x1402f9698
mov qword [rax + 0x20], 0
mov qword [rbx + 0x20], 0
mov rax, qword [rdi + 8]
test rax, rax
jne 0x1402f9410
movq xmm0, rbx
punpcklqdq xmm0, xmm0
movups xmmword [rdi], xmm0
mov rbx, qword [rsi + 0x18]
test rbx, rbx
jne 0x1402f9421
mov r8, qword [rbp + 0x38]
mov r9, qword [rbp + 0x30]
mov rax, qword [rsi + 0x10]
xor edx, edx
div r8
shl rdx, 4
add r9, rdx
mov rax, qword [r9]
mov rcx, qword [r9 + 8]
cmp rsi, rax
jne 0x1402f96a8
cmp rsi, rcx
jne 0x1402f96be
mov qword [r9 + 8], rbp
add rdx, qword [rbp + 0x30]
mov rax, qword [rdx + 8]
mov qword [rdx], rax
mov qword [rsi + 0x10], 0
mov r8, qword [rsi]
mov rcx, qword [rbp + 0x18]
cmp rcx, r8
je 0x1402f94e2
cmp rsi, rcx
je 0x1402f94e2
mov rdx, rsi
call sym.std::__detail::_List_node_base::_M_transfer_std::__detail::_List_node_base__std::__detail::_List_node_base_
add qword [rbp + 0x28], 1
sub qword [rbp + 0x10], 1
sub qword [rbp - 8], 1
mov r10, qword [r14]
add r12d, 1
cmp r12d, dword [r10]
jb 0x1402f9398
mov rax, qword [rsp + 0x38]
sub rbp, 0x50
sub r14, 0x18
cmp rbp, rax
jne 0x1402f9380
jmp 0x1402f9584
mov rcx, qword [rsp + 0x48]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov rdi, qword [0x140485900]
mov rax, qword [rsp + 0x88]
sub rax, qword [rdi]
jne 0x1402f9809
add rsp, 0x98
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
cmp rsi, r12
setne byte [rsp + 0x38]
jmp 0x1402f90de
lea esi, [rcx + 1]
mov eax, dword [r15 + 0x1b0]
cmp eax, esi
jb 0x1402f95b2
mov dword [rbp], esi
mov qword [rbp + rcx*8 + 8], rbx
jmp 0x1402f8f93
lea rcx, [rsp + 0x70]
call method.boost::asio::detail::socket_ops.get_last_error_boost::system::error_code__bool___clone_.part.0_
mov rcx, qword [rsp + 0x48]
mov rax, qword [rsp + 0x58]
call rax
mov rbx, qword [r15 + 0x1f0]
test rbx, rbx
je 0x1402f95a5
mov rax, qword [rbx]
mov rdx, rdi
mov rcx, rbx
call qword [rax + 0x28]
mov rbx, qword [rbx + 8]
test rbx, rbx
jne 0x1402f9590
mov rcx, qword [rsp + 0x48]
call r13
jmp 0x1402f951a
mov edx, eax
mov r13, qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
shr edx, 1
add eax, edx
cmp eax, esi
cmovae esi, eax
mov eax, esi
lea rcx, [rax*8 + 8]
call sym.operator_new_unsigned_long_long_
mov rcx, qword [r15 + 0x1a8]
mov rbp, rax
mov edx, dword [rcx]
mov dword [rax], edx
xor eax, eax
test edx, edx
je 0x1402f9603
nop word [rax + rax]
mov edx, eax
add eax, 1
mov r8, qword [rcx + rdx*8 + 8]
mov qword [rbp + rdx*8 + 8], r8
cmp eax, dword [rcx]
jb 0x1402f95f0
call sym.operator_delete_void_
mov ecx, dword [rbp]
mov dword [r15 + 0x1b0], esi
mov qword [r15 + 0x1a8], rbp
lea esi, [rcx + 1]
mov dword [rbp], esi
mov qword [rbp + rcx*8 + 8], rbx
jmp 0x1402f8f93
mov eax, dword [rsp + 0x6c]
sub eax, 1
cmp eax, 0x3e6
ja 0x1402f92fe
mov dword [rsp + 0x6c], 0x3e8
jmp 0x1402f92fe
lea rcx, [r15 + 0x58]
call method.boost::asio::detail::socket_select_interrupter.reset__
test al, al
jne 0x1402f9787
mov rcx, qword [rsp + 0x48]
mov rax, qword [rsp + 0x58]
call rax
mov rcx, qword [r15 + 0x28]
mov byte [r15 + 0x1f8], 1
lock add dword [rcx + 0x30], 1
lea rdx, [r15 + 0x208]
call method.boost::asio::detail::win_iocp_io_context.post_deferred_completion_boost::asio::detail::win_iocp_operation_
sub ebx, 1
test ebx, ebx
jne 0x1402f9342
jmp 0x1402f9584
mov qword [rsi + 0x20], 0
jmp 0x1402f9449
cmp rsi, rcx
jne 0x1402f94b7
mov rax, qword [rsi + 8]
mov qword [r9 + 8], rax
jmp 0x1402f94b7
cmp rsi, rax
jne 0x1402f96a8
mov rax, qword [rsi]
mov qword [r9], rax
jmp 0x1402f94b7
mov eax, 0x11e1a300
mov rbx, qword [r15 + 0x1f0]
cmp dword [rsp + 0xe8], eax
cmovbe eax, dword [rsp + 0xe8]
mov dword [rsp + 0xe8], eax
test rbx, rbx
je 0x1402f9723
mov rbp, qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
nop dword [rax]
mov rax, qword [rbx]
mov edx, dword [rsp + 0xe8]
mov r13, rbp
mov rcx, rbx
call qword [rax + 0x20]
mov rbx, qword [rbx + 8]
mov dword [rsp + 0xe8], eax
test rbx, rbx
jne 0x1402f9700
movsxd rax, dword [rsp + 0xe8]
mov edx, dword [rsp + 0xe8]
imul rax, rax, 0x431bde83
sar edx, 0x1f
sar rax, 0x32
sub eax, edx
mov edx, dword [rsp + 0xe8]
mov dword [rsp + 0x68], eax
imul eax, eax, 0xf4240
sub edx, eax
mov dword [rsp + 0x6c], edx
jmp 0x1402f9291
mov rsi, qword [rsp + 0x40]
mov rax, qword [r15 + 0x1d0]
cmp rsi, rax
cmovae rax, rsi
mov qword [rsp + 0x40], rax
lea rax, [r15 + 0x1d8]
mov qword [rsp + 0x50], rax
jmp 0x1402f925c
mov rcx, qword [rsp + 0x48]
mov rax, qword [rsp + 0x58]
sub ebx, 1
call rax
jmp 0x1402f9685
movsxd rcx, dword [rsp + 0x6c]
imul r10d, r10d, 0x3e8
mov rax, rcx
imul rcx, rcx, 0x10624dd3
sar eax, 0x1f
sar rcx, 0x26
sub ecx, eax
mov eax, 1
add ecx, r10d
cmove ecx, eax
call qword [sym.imp.KERNEL32.dll_Sleep]
mov rcx, qword [rsp + 0x48]
mov rax, qword [rsp + 0x58]
call rax
jmp 0x1402f9584
mov esi, 1
jmp 0x1402f9556
call dbg.__stack_chk_fail
mov rcx, rbx
call sym._Unwind_Resume
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop