Function at 0x14000ce30
Capabilities:
Get socket status
Receive data
Receive data on socket
Send data
Send data on socket

Disassembly:
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x460
cmp dword [rcx + 0x58], 1
mov rsi, rcx
mov eax, edx
je 0x14000d1b8
test edx, edx
jne 0x14000d0c0
mov rax, qword [rsi + 0x10]
mov rcx, qword [rsi + 8]
lea rbp, [rsi + 8]
mov rdi, qword [sym.imp.WSOCK32.dll_recv]
nop word [rax + rax]
mov r12, rax
sub r12, rcx
lea edx, [r12 + 0x5dc]
movsxd rdx, edx
cmp r12, rdx
jb 0x14000cf00
cmp rdx, r12
jae 0x14000cea0
add rdx, rcx
cmp rdx, rax
je 0x14000cea0
mov qword [rsi + 0x10], rdx
nop word [rax + rax]
movsxd r12, r12d
xor r9d, r9d
mov r8d, 0x5dc
lea rdx, [rcx + r12]
mov rcx, qword [rsi + 0x50]
call rdi
movsxd rbx, eax
test rbx, rbx
js 0x14000cf38
mov rax, qword [rsi + 0x10]
mov rcx, qword [rsi + 8]
mov rdx, rax
mov r8, rax
mov r9, rcx
sub rdx, rcx
test rbx, rbx
je 0x14000cf61
add rbx, r12
cmp rdx, rbx
jb 0x14000cf18
cmp rbx, rdx
jae 0x14000ce70
lea rax, [rcx + rbx]
cmp rax, r8
je 0x14000ce70
mov qword [rsi + 0x10], rax
jmp 0x14000ce70
mov rcx, rbp
sub rdx, r12
call method.std::vector_unsigned_char__std::allocator_unsigned_char___._M_default_append_unsigned_long_long_
mov rcx, qword [rsi + 8]
jmp 0x14000cea0
sub rbx, rdx
mov rcx, rbp
mov rdx, rbx
call method.std::vector_unsigned_char__std::allocator_unsigned_char___._M_default_append_unsigned_long_long_
mov rax, qword [rsi + 0x10]
mov rcx, qword [rsi + 8]
jmp 0x14000ce70
mov rdi, qword [sym.imp.WSOCK32.dll_WSAGetLastError]
call rdi
cmp eax, 0x2733
je 0x14000d180
call rdi
cmp eax, 0x2734
je 0x14000d180
mov r8, qword [rsi + 0x10]
mov r9, qword [rsi + 8]
mov rax, r8
sub rax, r9
cmp rax, r12
jb 0x14000d240
cmp r12, rax
jb 0x14000d218
mov rcx, qword [rsi + 0x50]
call qword [sym.imp.WSOCK32.dll_closesocket]
mov ecx, 2
mov dword [rsi + 0x58], 1
call qword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll___acrt_iob_func]
test rbx, rbx
lea rcx, str.Connection_closed__n
mov rdx, rax
lea rax, str.Connection_error__n
cmovne rcx, rax
call sym.fputs
mov rax, qword [rsi + 0x28]
mov r10, qword [rsi + 0x20]
mov rbp, qword [sym.imp.WSOCK32.dll_send]
nop dword [rax]
mov r8, rax
sub r8, r10
cmp rax, r10
je 0x14000d042
xor r9d, r9d
mov rcx, qword [rsi + 0x50]
mov rdx, r10
call rbp
test eax, eax
js 0x14000d060
je 0x14000d253
mov rdi, qword [rsi + 0x20]
cdqe
lea rbx, [rdi + rax]
mov rax, qword [rsi + 0x28]
mov r10, rdi
mov r8, rax
sub r8, rbx
cmp rbx, rax
je 0x14000d028
cmp r8, 1
jle 0x14000d160
mov rdx, rbx
mov rcx, rdi
call sym.memmove
mov rax, qword [rsi + 0x28]
mov r10, qword [rsi + 0x20]
mov r8, rax
sub r8, rbx
add rdi, r8
cmp rdi, rax
je 0x14000cfc8
mov rax, rdi
mov qword [rsi + 0x28], rdi
mov r8, rax
sub r8, r10
cmp rax, r10
jne 0x14000cfd3
mov eax, dword [rsi + 0x58]
test eax, eax
jne 0x14000d0b1
mov rcx, qword [rsi + 0x50]
call qword [sym.imp.WSOCK32.dll_closesocket]
mov dword [rsi + 0x58], 1
jmp 0x14000d0b1
mov rbx, qword [sym.imp.WSOCK32.dll_WSAGetLastError]
call rbx
cmp eax, 0x2733
je 0x14000d0a4
call rbx
cmp eax, 0x2734
je 0x14000d0a4
mov rcx, qword [rsi + 0x50]
call qword [sym.imp.WSOCK32.dll_closesocket]
mov ecx, 2
mov dword [rsi + 0x58], 1
call qword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll___acrt_iob_func]
lea rcx, str.Connection_error__n
mov rdx, rax
call sym.fputs
mov rdx, qword [rsi + 0x28]
mov rax, qword [rsi + 0x20]
cmp rdx, rax
je 0x14000d042
add rsp, 0x460
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
movsxd rdx, edx
mov ecx, eax
mov rdi, qword [rsi + 0x28]
mov dword [rsp + 0x250], 0
imul rdx, rdx, 0x10624dd3
sar ecx, 0x1f
mov dword [rsp + 0x40], 1
sar rdx, 0x26
sub edx, ecx
mov ecx, eax
mov dword [rsp + 0x38], edx
imul edx, edx, 0x3e8
sub ecx, edx
imul edx, ecx, 0x3e8
mov rcx, qword [rsi + 0x50]
mov qword [rsp + 0x48], rcx
mov dword [rsp + 0x3c], edx
cmp qword [rsi + 0x20], rdi
je 0x14000d126
mov qword [rsp + 0x258], rcx
mov dword [rsp + 0x250], 1
test eax, eax
lea rdx, [rsp + 0x38]
mov eax, 0
cmovg rax, rdx
lea rdx, [rsp + 0x40]
add ecx, 1
xor r9d, r9d
lea r8, [rsp + 0x250]
mov qword [rsp + 0x20], rax
call qword [sym.imp.WSOCK32.dll_select]
jmp 0x14000ce54
jne 0x14000d028
movzx eax, byte [rbx]
mov byte [rdi], al
mov rax, qword [rsi + 0x28]
mov r10, qword [rsi + 0x20]
mov r8, rax
sub r8, rbx
jmp 0x14000d028
mov rcx, qword [rsi + 0x10]
mov rax, qword [rsi + 8]
mov rdx, rcx
sub rdx, rax
cmp rdx, r12
jb 0x14000d22d
cmp r12, rdx
jae 0x14000cfb2
add rax, r12
cmp rcx, rax
je 0x14000cfb2
mov qword [rsi + 0x10], rax
jmp 0x14000cfb2
test edx, edx
jle 0x14000d0b1
movsxd rdx, edx
mov ecx, eax
xor r9d, r9d
xor r8d, r8d
imul rdx, rdx, 0x10624dd3
sar ecx, 0x1f
sar rdx, 0x26
sub edx, ecx
xor ecx, ecx
mov dword [rsp + 0x250], edx
imul edx, edx, 0x3e8
sub eax, edx
xor edx, edx
imul eax, eax, 0x3e8
mov dword [rsp + 0x254], eax
lea rax, [rsp + 0x250]
mov qword [rsp + 0x20], rax
call qword [sym.imp.WSOCK32.dll_select]
jmp 0x14000d0b1
add r9, r12
cmp r8, r9
je 0x14000cf79
mov qword [rsi + 0x10], r9
jmp 0x14000cf79
sub r12, rdx
mov rcx, rbp
mov rdx, r12
call method.std::vector_unsigned_char__std::allocator_unsigned_char___._M_default_append_unsigned_long_long_
jmp 0x14000cfb2
mov rdx, r12
mov rcx, rbp
sub rdx, rax
call method.std::vector_unsigned_char__std::allocator_unsigned_char___._M_default_append_unsigned_long_long_
jmp 0x14000cf79
mov rcx, qword [rsi + 0x50]
call qword [sym.imp.WSOCK32.dll_closesocket]
mov ecx, 2
mov dword [rsi + 0x58], 1
call qword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll___acrt_iob_func]
lea rcx, str.Connection_closed__n
mov rdx, rax
jmp 0x14000d09f