Function at 0x14001ba60
Capabilities:
Get socket status
Receive data
Receive data on socket
Send data
Send data on socket
Terminate process

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xb58
mov rax, qword [rsp + 0xbc0]
movdqu xmm0, xmmword [rax]
lea rbx, [rsp + 0x90]
movaps xmmword [rsp + 0x50], xmm0
mov rax, qword [rax + 0x10]
mov rdi, rdx
lea r13, [rsp + 0xc0]
lea rdx, [rsp + 0x50]
mov rsi, rcx
mov rcx, rbx
mov qword [rsp + 0xbb0], r8
lea r15, [rsp + 0x86]
mov dword [rsp + 0xbb8], r9d
mov qword [rsp + 0x60], rax
call dbg.ipaddress_fmt
mov r9, rbx
mov edx, 0x40
mov rcx, r13
lea r8, [0x14005fcac]
lea rbx, [rsp + 0x350]
call sym.snprintf
mov ecx, dword [rsp + 0xbc8]
mov ebp, eax
call sym.name_from_ip_proto
mov r9d, dword [rsp + 0xbd0]
mov edx, 0xa
mov rcx, r15
mov qword [rsp + 0x20], rax
lea r8, str._u__s
call sym.snprintf
mov qword [rsp + 0x30], r13
mov rcx, rbx
mov r9d, 4
mov r12d, eax
lea rax, str.host
mov dword [rsp + 0x28], ebp
lea r8, str.3_r_n_4_r_nSADD_r_n__d_r_n_s_r_n__d_r_n_s_r_n
mov qword [rsp + 0x20], rax
mov edx, 0x400
call sym.snprintf
mov rcx, rbx
call sym.strlen
mov rdx, rbx
xor r9d, r9d
mov rcx, rdi
mov r8d, eax
mov r14, qword [sym.imp.WS2_32.dll_send]
call r14
mov rcx, rbx
mov dword [rsp + 0x48], eax
call sym.strlen
mov rdx, rax
movsxd rax, dword [rsp + 0x48]
cmp rdx, rax
jne 0x14001be4d
add qword [rsi + 0x308], 1
mov r9d, ebp
mov edx, 0x400
mov rcx, rbx
mov qword [rsp + 0x30], r15
lea r8, str.3_r_n_4_r_nSADD_r_n__d_r_n_s_r_n__d_r_n_s_r_n
mov dword [rsp + 0x28], r12d
mov qword [rsp + 0x20], r13
call sym.snprintf
mov rcx, rbx
call sym.strlen
mov rdx, rbx
xor r9d, r9d
mov rcx, rdi
mov r8d, eax
call r14
mov rcx, rbx
mov dword [rsp + 0x48], eax
call sym.strlen
mov rdx, rax
movsxd rax, dword [rsp + 0x48]
cmp rdx, rax
jne 0x14001be4d
mov eax, dword [rsp + 0xbe0]
add qword [rsi + 0x308], 1
lea rcx, [rsp + 0x100]
lea r8, str._u:_u:_u:_u
mov r9d, dword [rsp + 0xbb0]
mov edx, 0x40
mov qword [rsp + 0x48], rcx
mov dword [rsp + 0x30], eax
mov eax, dword [rsp + 0xbd8]
mov dword [rsp + 0x28], eax
mov eax, dword [rsp + 0xbb8]
mov dword [rsp + 0x20], eax
call sym.snprintf
mov rcx, qword [rsp + 0x48]
mov qword [rsp + 0x28], r15
lea r9d, [rbp + r12 + 1]
mov dword [rsp + 0x30], eax
lea r8, str.3_r_n_4_r_nSADD_r_n__d_r_n_s:_s_r_n__d_r_n_s_r_n
mov edx, 0x400
mov qword [rsp + 0x38], rcx
mov rcx, rbx
mov qword [rsp + 0x20], r13
call sym.snprintf
xor r9d, r9d
mov rdx, rbx
mov rcx, rdi
mov ebp, eax
mov r8d, eax
call r14
cmp eax, ebp
jne 0x14001be4d
lea rax, [rsp + 0x78]
xor r9d, r9d
xor r8d, r8d
mov ecx, edi
add qword [rsi + 0x308], 1
lea rdx, [rsp + 0x140]
mov qword [rsp + 0x78], 0
mov qword [rsp + 0x148], rdi
mov dword [rsp + 0x140], 1
mov qword [rsp + 0x20], rax
call qword [sym.imp.WS2_32.dll_select]
test eax, eax
je 0x14001bd5d
cmp eax, 1
jne 0x14001be80
lea rbx, [rsp + 0x750]
mov r8d, 0x400
xor r9d, r9d
mov rcx, rdi
mov rdx, rbx
call qword [sym.imp.WS2_32.dll_recv]
movsxd rdx, eax
mov r8, rdx
test rdx, rdx
je 0x14001be98
mov ecx, dword [rsi + 0x310]
cmp ecx, 1
je 0x14001be18
jbe 0x14001bd78
cmp ecx, 4
jbe 0x14001bd21
lea eax, [rcx - 6]
cmp eax, 1
ja 0x14001be32
xor r9d, r9d
xor eax, eax
add r9, rbx
lea edx, [rax - 2]
lea r11, str.PONG_r_n
movzx r10d, byte [r9]
movsx r11d, byte [r11 + rdx]
movzx edx, r10b
cmp r11d, edx
jne 0x14001be65
cmp r10b, 0xa
jne 0x14001be2f
mov dword [rsi + 0x310], 0
add rsp, 0xb58
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
xor r9d, r9d
xor eax, eax
add r9, rbx
movzx ecx, byte [r9]
cmp cl, 0x2b
je 0x14001bdf0
cmp cl, 0x3a
jne 0x14001be65
lea r9d, [rax + 1]
mov rax, r9
cmp r9, rdx
jae 0x14001be28
add r9, rbx
movzx ecx, byte [r9]
lea r10d, [rcx - 0x30]
cmp r10b, 9
jbe 0x14001bd92
cmp cl, 0xd
je 0x14001bd92
cmp cl, 0xa
jne 0x14001be65
mov rcx, qword [rsi + 0x308]
test rcx, rcx
je 0x14001beb0
sub rcx, 1
lea r9d, [rax + 1]
mov qword [rsi + 0x308], rcx
mov rax, r9
cmp r9, rdx
jb 0x14001bd7d
xor eax, eax
jmp 0x14001be0a
lea r9d, [rax + 1]
mov ecx, 2
mov rax, r9
cmp r9, rdx
jb 0x14001bd26
mov eax, 2
mov dword [rsi + 0x310], eax
jmp 0x14001bd5d
xor r9d, r9d
xor eax, eax
jmp 0x14001bda2
mov eax, 1
jmp 0x14001be0a
add ecx, 1
mov r8d, ecx
lea rdx, str.redis:_unexpected_state:__u_n
xor ecx, ecx
call dbg.LOG
mov ecx, 1
call sym.exit
xor ecx, ecx
lea rdx, str.redis:_error_sending_data_n
call dbg.LOG
mov ecx, 1
call sym.exit
xor ecx, ecx
sub r8d, eax
lea rdx, str.redis:_unexpected_data:__.s_n
call dbg.LOG
mov ecx, 1
call sym.exit
xor ecx, ecx
lea rdx, str.redis:select___failed_n
call dbg.LOG
mov ecx, 1
call sym.exit
xor ecx, ecx
lea rdx, str.redis:recv___failed_n
call dbg.LOG
mov ecx, 1
call sym.exit
lea rdx, str.redis:_out_of_sync_n
call dbg.LOG
mov ecx, 1
call sym.exit
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop