Function at 0x408b32
Capabilities:
Get socket status
Receive data
Receive data on socket

Disassembly:
push rbp
push rbx
sub rsp, 0xae8
lea rbp, [rsp + 0x80]
mov qword [rbp + 0xa80], rcx
mov qword [rbp + 0x208], 0
mov ecx, 0
call sym.time
mov rdx, qword [rbp + 0xa80]
mov qword [rdx], rax
jmp 0x4092de
mov qword [rbp + 0xa40], 0
mov dword [rbp - 0x40], 0
mov rax, qword [rbp + 0xa80]
mov edx, dword [rax + 0x4c]
mov rax, qword [rbp + 0xa80]
mov eax, dword [rax + 0x48]
cmp edx, eax
cmovge eax, edx
mov dword [rbp + 0xa3c], eax
mov dword [rbp + 0xa4c], 0
jmp 0x408bce
mov eax, dword [rbp + 0xa4c]
mov rdx, qword [rbp + rax*8 - 0x38]
mov rax, qword [rbp + 0xa80]
mov eax, dword [rax + 0x48]
cdqe
cmp rdx, rax
je 0x408bdb
add dword [rbp + 0xa4c], 1
mov eax, dword [rbp - 0x40]
cmp dword [rbp + 0xa4c], eax
jb 0x408bab
jmp 0x408bdc
nop
mov eax, dword [rbp - 0x40]
cmp dword [rbp + 0xa4c], eax
jne 0x408c10
mov eax, dword [rbp - 0x40]
cmp eax, 0x3f
ja 0x408c10
mov rax, qword [rbp + 0xa80]
mov eax, dword [rax + 0x48]
movsxd rdx, eax
mov eax, dword [rbp + 0xa4c]
mov qword [rbp + rax*8 - 0x38], rdx
mov eax, dword [rbp - 0x40]
add eax, 1
mov dword [rbp - 0x40], eax
mov dword [rbp + 0xa48], 0
jmp 0x408c3f
mov eax, dword [rbp + 0xa48]
mov rdx, qword [rbp + rax*8 - 0x38]
mov rax, qword [rbp + 0xa80]
mov eax, dword [rax + 0x4c]
cdqe
cmp rdx, rax
je 0x408c4c
add dword [rbp + 0xa48], 1
mov eax, dword [rbp - 0x40]
cmp dword [rbp + 0xa48], eax
jb 0x408c1c
jmp 0x408c4d
nop
mov eax, dword [rbp - 0x40]
cmp dword [rbp + 0xa48], eax
jne 0x408c81
mov eax, dword [rbp - 0x40]
cmp eax, 0x3f
ja 0x408c81
mov rax, qword [rbp + 0xa80]
mov eax, dword [rax + 0x4c]
movsxd rdx, eax
mov eax, dword [rbp + 0xa48]
mov qword [rbp + rax*8 - 0x38], rdx
mov eax, dword [rbp - 0x40]
add eax, 1
mov dword [rbp - 0x40], eax
mov dword [rbp + 0x200], 0xa
mov dword [rbp + 0x204], 0
mov eax, dword [rbp + 0xa3c]
lea ecx, [rax + 1]
lea rax, [rbp - 0x40]
lea rdx, [rbp + 0x200]
mov qword [rsp + 0x20], rdx
mov r9d, 0
mov r8d, 0
mov rdx, rax
mov rax, qword [sym.imp.WS2_32.dll_select]
call rax
mov dword [rbp + 0xa38], eax
mov ecx, 0
call sym.time
mov qword [rbp + 0xa40], rax
cmp dword [rbp + 0xa38], 0
jle 0x408f6a
mov rax, qword [rbp + 0xa80]
mov eax, dword [rax + 0x48]
cdqe
lea rdx, [rbp - 0x40]
mov rcx, rax
call sym.__WSAFDIsSet
test eax, eax
je 0x408e4f
mov dword [rbp + 0x1ec], 0x10
mov rax, qword [rbp + 0xa80]
mov eax, dword [rax + 0x48]
cdqe
lea rdx, [rbp + 0x210]
lea rcx, [rbp + 0x1ec]
mov qword [rsp + 0x28], rcx
lea rcx, [rbp + 0x1f0]
mov qword [rsp + 0x20], rcx
mov r9d, 0
mov r8d, 0x800
mov rcx, rax
mov rax, qword [sym.imp.WS2_32.dll_recvfrom]
call rax
cdqe
mov qword [rbp + 0xa30], rax
cmp qword [rbp + 0xa30], 0
jns 0x408e0f
mov rax, qword [sym.imp.WS2_32.dll_WSAGetLastError]
call rax
cmp eax, 0x2746
je 0x408e0f
mov rax, qword [sym.imp.msvcrt.dll__errno]
call rax
mov eax, dword [rax]
mov ecx, eax
call sym.strerror
mov rbx, rax
mov rax, qword [sym.imp.msvcrt.dll__errno]
call rax
mov eax, dword [rax]
mov qword [rsp + 0x30], rbx
mov dword [rsp + 0x28], eax
mov rax, qword [rbp + 0xa30]
mov qword [rsp + 0x20], rax
lea r9, str.recvfrom___failed__d_errno__d___s_
mov r8d, 0x433
lea rdx, str._n2n_v2_sn.c
mov ecx, 0
call sym.traceEvent
mov rax, qword [sym.imp.WS2_32.dll_WSAGetLastError]
call rax
mov dword [rsp + 0x20], eax
lea r9, str.WSAGetLastError__:__u
mov r8d, 0x435
lea rdx, str._n2n_v2_sn.c
mov ecx, 0
call sym.traceEvent
mov dword [0x004150a0], 0
jmp 0x4092ec
cmp qword [rbp + 0xa30], 0
jle 0x408e4f
mov r8, qword [rbp + 0xa30]
lea rcx, [rbp + 0x210]
lea rax, [rbp + 0x1f0]
mov rdx, qword [rbp + 0xa40]
mov qword [rsp + 0x20], rdx
mov r9, r8
mov r8, rcx
mov rdx, rax
mov rcx, qword [rbp + 0xa80]
call sym.process_udp
mov rax, qword [rbp + 0xa80]
mov eax, dword [rax + 0x4c]
cdqe
lea rdx, [rbp - 0x40]
mov rcx, rax
call sym.__WSAFDIsSet
test eax, eax
je 0x408f88
mov qword [rbp + 0x1c8], 0x10
mov rax, qword [rbp + 0xa80]
mov eax, dword [rax + 0x4c]
cdqe
lea rdx, [rbp + 0x210]
lea rcx, [rbp + 0x1c8]
mov qword [rsp + 0x28], rcx
lea rcx, [rbp + 0x1d0]
mov qword [rsp + 0x20], rcx
mov r9d, 0
mov r8d, 0x800
mov rcx, rax
mov rax, qword [sym.imp.WS2_32.dll_recvfrom]
call rax
cdqe
mov qword [rbp + 0xa30], rax
cmp qword [rbp + 0xa30], 0
jg 0x408f32
mov rax, qword [sym.imp.msvcrt.dll__errno]
call rax
mov eax, dword [rax]
mov ecx, eax
call sym.strerror
mov rbx, rax
mov rax, qword [sym.imp.msvcrt.dll__errno]
call rax
mov eax, dword [rax]
mov qword [rsp + 0x30], rbx
mov dword [rsp + 0x28], eax
mov rax, qword [rbp + 0xa30]
mov qword [rsp + 0x20], rax
lea r9, str.recvfrom___failed__d_errno__d___s_
mov r8d, 0x44b
lea rdx, str._n2n_v2_sn.c
mov ecx, 0
call sym.traceEvent
mov dword [0x004150a0], 0
jmp 0x4092ec
mov r8, qword [rbp + 0xa30]
lea rcx, [rbp + 0x210]
lea rax, [rbp + 0x1d0]
mov rdx, qword [rbp + 0xa40]
mov qword [rsp + 0x20], rdx
mov r9, r8
mov r8, rcx
mov rdx, rax
mov rcx, qword [rbp + 0xa80]
call sym.process_mgmt
jmp 0x408f88
lea r9, str.timeout
mov r8d, 0x454
lea rdx, str._n2n_v2_sn.c
mov ecx, 4
call sym.traceEvent
mov rax, qword [rbp + 0xa80]
mov rax, qword [rax + 0x58]
mov qword [rbp + 0xa58], rax
mov rax, qword [rbp + 0xa80]
mov rax, qword [rax + 0x58]
test rax, rax
je 0x408fbb
mov rax, qword [rbp + 0xa80]
mov rax, qword [rax + 0x58]
mov rax, qword [rax + 0x28]
jmp 0x408fc0
mov eax, 0
mov qword [rbp + 0xa50], rax
jmp 0x4092d0
mov rax, qword [rbp + 0xa58]
lea rcx, [rax + 0x10]
lea rax, [rbp + 0x208]
mov rdx, rax
call sym.purge_expired_registrations
mov rax, qword [rbp + 0xa58]
mov rax, qword [rax + 0x10]
test rax, rax
jne 0x40929f
mov rax, qword [rbp + 0xa80]
mov eax, dword [rax + 0x50]
test eax, eax
jne 0x40929f
mov rax, qword [rbp + 0xa58]
mov qword [rsp + 0x20], rax
lea r9, str.Purging_idle_community__s
mov r8d, 0x45b
lea rdx, str._n2n_v2_sn.c
mov ecx, 3
call sym.traceEvent
mov rax, qword [rbp + 0xa58]
add rax, 0x18
mov qword [rbp + 0xa28], rax
mov rax, qword [rbp + 0xa28]
mov rax, qword [rax + 8]
test rax, rax
jne 0x4090ad
mov rax, qword [rbp + 0xa28]
mov rax, qword [rax + 0x10]
test rax, rax
jne 0x4090ad
mov rax, qword [rbp + 0xa80]
mov rax, qword [rax + 0x58]
mov rax, qword [rax + 0x18]
mov rax, qword [rax]
mov rcx, rax
call sym.free
mov rax, qword [rbp + 0xa80]
mov rax, qword [rax + 0x58]
mov rax, qword [rax + 0x18]
mov rcx, rax
call sym.free
mov rax, qword [rbp + 0xa80]
mov qword [rax + 0x58], 0
jmp 0x409290
mov rax, qword [rbp + 0xa80]
mov rax, qword [rax + 0x58]
mov rax, qword [rax + 0x18]
mov rax, qword [rax + 0x18]
cmp qword [rbp + 0xa28], rax
jne 0x409100
mov rax, qword [rbp + 0xa28]
mov rdx, qword [rax + 8]
mov rax, qword [rbp + 0xa80]
mov rax, qword [rax + 0x58]
mov rax, qword [rax + 0x18]
mov rax, qword [rax + 0x20]
mov rcx, rax
mov rax, qword [rbp + 0xa80]
mov rax, qword [rax + 0x58]
mov rax, qword [rax + 0x18]
add rdx, rcx
mov qword [rax + 0x18], rdx
mov rax, qword [rbp + 0xa28]
mov rax, qword [rax + 8]
test rax, rax
je 0x409142
mov rax, qword [rbp + 0xa28]
mov rdx, qword [rax + 8]
mov rax, qword [rbp + 0xa80]
mov rax, qword [rax + 0x58]
mov rax, qword [rax + 0x18]
mov rax, qword [rax + 0x20]
add rdx, rax
mov rax, qword [rbp + 0xa28]
mov rax, qword [rax + 0x10]
mov qword [rdx + 0x10], rax
jmp 0x409158
mov rax, qword [rbp + 0xa28]
mov rdx, qword [rax + 0x10]
mov rax, qword [rbp + 0xa80]
mov qword [rax + 0x58], rdx
mov rax, qword [rbp + 0xa28]
mov rax, qword [rax + 0x10]
test rax, rax
je 0x409198
mov rax, qword [rbp + 0xa28]
mov rdx, qword [rax + 0x10]
mov rax, qword [rbp + 0xa80]
mov rax, qword [rax + 0x58]
mov rax, qword [rax + 0x18]
mov rax, qword [rax + 0x20]
add rdx, rax
mov rax, qword [rbp + 0xa28]
mov rax, qword [rax + 8]
mov qword [rdx + 8], rax
mov rax, qword [rbp + 0xa28]
mov edx, dword [rax + 0x34]
mov rax, qword [rbp + 0xa80]
mov rax, qword [rax + 0x58]
mov rax, qword [rax + 0x18]
mov eax, dword [rax + 8]
sub eax, 1
and eax, edx
mov dword [rbp + 0xa24], eax
mov rax, qword [rbp + 0xa80]
mov rax, qword [rax + 0x58]
mov rax, qword [rax + 0x18]
mov rax, qword [rax]
mov edx, dword [rbp + 0xa24]
shl rdx, 4
add rax, rdx
mov qword [rbp + 0xa18], rax
mov rax, qword [rbp + 0xa18]
mov eax, dword [rax + 8]
lea edx, [rax - 1]
mov rax, qword [rbp + 0xa18]
mov dword [rax + 8], edx
mov rax, qword [rbp + 0xa18]
mov rax, qword [rax]
cmp qword [rbp + 0xa28], rax
jne 0x409224
mov rax, qword [rbp + 0xa28]
mov rdx, qword [rax + 0x20]
mov rax, qword [rbp + 0xa18]
mov qword [rax], rdx
mov rax, qword [rbp + 0xa28]
mov rax, qword [rax + 0x18]
test rax, rax
je 0x40924e
mov rax, qword [rbp + 0xa28]
mov rax, qword [rax + 0x18]
mov rdx, qword [rbp + 0xa28]
mov rdx, qword [rdx + 0x20]
mov qword [rax + 0x20], rdx
mov rax, qword [rbp + 0xa28]
mov rax, qword [rax + 0x20]
test rax, rax
je 0x409278
mov rax, qword [rbp + 0xa28]
mov rax, qword [rax + 0x20]
mov rdx, qword [rbp + 0xa28]
mov rdx, qword [rdx + 0x18]
mov qword [rax + 0x18], rdx
mov rax, qword [rbp + 0xa80]
mov rax, qword [rax + 0x58]
mov rax, qword [rax + 0x18]
mov edx, dword [rax + 0x10]
sub edx, 1
mov dword [rax + 0x10], edx
mov rax, qword [rbp + 0xa58]
mov rcx, rax
call sym.free
mov rax, qword [rbp + 0xa50]
mov qword [rbp + 0xa58], rax
cmp qword [rbp + 0xa50], 0
je 0x4092c4
mov rax, qword [rbp + 0xa50]
mov rax, qword [rax + 0x28]
jmp 0x4092c9
mov eax, 0
mov qword [rbp + 0xa50], rax
cmp qword [rbp + 0xa58], 0
jne 0x408fcc
mov eax, dword [0x004150a0]
test eax, eax
jne 0x408b6e
mov rcx, qword [rbp + 0xa80]
call sym.deinit_sn
mov eax, 0
add rsp, 0xae8
pop rbx
pop rbp
ret