Function at 0x431c60
Capabilities:
Receive data
Receive data on socket

Disassembly:
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x68
mov rsi, qword [rcx + 8]
mov eax, dword [rcx + 0x58]
mov rbx, rcx
mov qword [rbx + 0x68], rdx
mov edx, dword [rbx + 0x7c]
mov ecx, eax
mov qword [rbx + 0x70], r8
or ch, 0x10
lea r8d, [rdx + 1]
test edx, edx
mov dword [rbx + 0x58], ecx
mov dword [rbx + 0x7c], r8d
jne 0x431c99
test al, 4
je 0x431dd0
test ecx, 0x10000
jne 0x431dc5
test ecx, 0x80000
je 0x431eb0
mov rax, qword [rbx + 0xf0]
test rax, rax
je 0x431f03
lea r8, [rbx + 0xc0]
lea rdx, [0x006e2540]
or ecx, 0x40000
lea rdi, [rbx + 0x80]
mov dword [rbx + 0x58], ecx
mov qword [rbx + 0xc0], 0
mov qword [rsp + 0x58], rdx
mov dword [rsp + 0x50], 0
mov qword [r8 + 8], 0
mov qword [r8 + 0x10], 0
mov qword [r8 + 0x18], 0
or rax, 1
mov qword [rbx + 0xd8], rax
lea rax, [rsp + 0x4c]
lea rdx, [rsp + 0x50]
mov rcx, qword [rbx + 0x110]
mov qword [rsp + 0x28], r8
mov dword [rsp + 0x4c], 0
lea r9, [rsp + 0x48]
mov qword [rsp + 0x30], 0
mov qword [rsp + 0x20], rax
mov r8d, 1
call qword [sym.imp.WS2_32.dll_WSARecv]
mov ecx, dword [rbx + 0x58]
add dword [rbx + 0x78], 1
mov edx, ecx
or edx, 0x10000
test eax, eax
mov dword [rbx + 0x58], edx
je 0x431df0
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x3e5
je 0x431e40
mov rbp, qword [sym.imp.WS2_32.dll_WSAGetLastError]
call rbp
test eax, eax
jle 0x431ea4
call rbp
movzx eax, ax
or eax, 0x80070000
cdqe
mov qword [rbx + 0xc0], rax
mov qword [rbx + 0xe8], 0
mov rax, qword [rsi + 0x48]
test rax, rax
jne 0x431e17
mov qword [rbx + 0xe8], rdi
mov qword [rsi + 0x48], rdi
xor eax, eax
add rsp, 0x68
pop rbx
pop rsi
pop rdi
pop rbp
ret
mov ecx, eax
or ecx, 0x1004
test al, 8
mov dword [rbx + 0x58], ecx
je 0x431c99
add dword [rsi + 8], 1
mov ecx, dword [rbx + 0x58]
jmp 0x431c99
and ecx, 0x20000
je 0x431e43
mov eax, dword [rsp + 0x48]
mov qword [rbx + 0xe8], 0
mov qword [rbx + 0xc8], rax
mov rax, qword [rsi + 0x48]
test rax, rax
je 0x431dba
mov rax, qword [rax + 0x68]
mov qword [rbx + 0xe8], rax
mov rax, qword [rsi + 0x48]
mov qword [rax + 0x68], rdi
xor eax, eax
mov qword [rsi + 0x48], rdi
add rsp, 0x68
pop rbx
pop rsi
pop rdi
pop rbp
ret
mov edx, dword [rbx + 0x58]
and edx, 0x80000
je 0x431dc5
cmp qword [rbx + 0xf8], 0xffffffffffffffff
jne 0x431dc5
mov rdx, qword [rbx + 0xf0]
lea rcx, [rbx + 0xf8]
mov dword [rsp + 0x28], 4
mov dword [rsp + 0x20], 0xffffffff
mov r9, rdi
lea r8, [0x004305a0]
call qword [sym.imp.KERNEL32.dll_RegisterWaitForSingleObject]
test eax, eax
jne 0x431dc5
mov rbp, qword [sym.imp.KERNEL32.dll_GetLastError]
call rbp
test eax, eax
jg 0x431d93
call rbp
cdqe
jmp 0x431d9f
lea r8, [rbx + 0xc0]
lea rax, [0x006e2540]
or ecx, 0x40000
mov dword [rbx + 0x58], ecx
mov qword [rbx + 0xc0], 0
lea rdi, [rbx + 0x80]
mov qword [rsp + 0x58], rax
mov dword [rsp + 0x50], 0
mov qword [r8 + 8], 0
mov qword [r8 + 0x10], 0
mov qword [r8 + 0x18], 0
jmp 0x431d1a
xor r9d, r9d
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_CreateEventA]
test rax, rax
mov qword [rbx + 0xf0], rax
je 0x431f83
mov edx, dword [rbx + 0x58]
lea r8, [rbx + 0xc0]
mov qword [rbx + 0xc0], 0
lea rdi, [rbx + 0x80]
mov dword [rsp + 0x50], 0
mov ecx, edx
or ecx, 0x40000
and edx, 0x80000
mov dword [rbx + 0x58], ecx
lea rcx, [0x006e2540]
mov qword [r8 + 8], 0
mov qword [r8 + 0x10], 0
mov qword [r8 + 0x18], 0
mov qword [rsp + 0x58], rcx
je 0x431d1a
jmp 0x431d0f
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.CreateEvent
mov ecx, eax
call fcn.00416440
nop
nop dword [rax + rax]