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

Disassembly:
push rbp
sub rsp, 0x4f0
lea rbp, [rsp + 0x40]
mov qword [rbp + 0x498], r15
mov r15, rcx
mov qword [rbp + 0x490], r14
mov qword [rbp + 0x488], r13
mov qword [rbp + 0x480], r12
mov qword [rbp + 0x478], rdi
lea rcx, [r15 + 0x30]
mov qword [rbp + 0x470], rsi
mov qword [rbp + 0x468], rbx
mov qword [rbp + 0x4a0], r8
mov qword [rbp + 0x460], 0xfffffffffffffffe
mov qword [rbp + 0x450], rcx
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
nop
mov byte [rbp + 0x458], 1
cmp byte [r15 + 0x198], 0
je 0x14000b63d
mov rcx, qword [rbp + 0x450]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov rbx, qword [rbp + 0x468]
mov rsi, qword [rbp + 0x470]
mov rdi, qword [rbp + 0x478]
mov r12, qword [rbp + 0x480]
mov r13, qword [rbp + 0x488]
mov r14, qword [rbp + 0x490]
mov r15, qword [rbp + 0x498]
lea rsp, [rbp + 0x4b0]
pop rbp
ret
mov rsi, qword [r15 + 0x148]
xor edx, edx
mov r12, qword [r15 + 0x160]
lea rax, [r15 + 0x160]
mov rcx, qword [r15 + 0x178]
mov rbx, 0xffffffffffffffff
mov dword [rsi], edx
lea rdi, [r15 + 0x178]
mov dword [r12], edx
mov dword [rcx], edx
mov qword [r15 + 0x158], rbx
mov qword [rbp + 0x448], rax
mov qword [rax + 0x10], rbx
mov eax, dword [rsi]
mov qword [rbp + 0x440], rdi
mov qword [rdi + 0x10], rbx
mov r12, qword [r15 + 0x58]
test eax, eax
jbe 0x14000b6a9
cmp r12, qword [rsi + rdx*8 + 8]
je 0x14000b75a
inc edx
cmp edx, eax
jb 0x14000b698
mov edx, dword [r15 + 0x150]
lea ebx, [rax + 1]
cmp ebx, edx
jbe 0x14000b753
mov eax, edx
shr eax, 1
add edx, eax
cmp edx, ebx
cmova ebx, edx
lea rcx, [rbx*8 + 8]
call fcn.14010fbf8
mov rsi, rax
mov rdi, qword [r15 + 0x148]
mov eax, dword [rdi]
mov dword [rsi], eax
mov r8d, dword [rdi]
test r8d, r8d
jbe 0x14000b738
cmp r8d, 0xc
jbe 0x14000c08a
mov rdx, rsi
lea eax, [r8*8]
sub rdx, rdi
xor r9d, r9d
mov r11d, 1
xor r10d, r10d
cmp rdx, rax
cmovg r10d, r11d
neg rdx
cmp rdx, rax
cmovg r9d, r11d
or r10d, r9d
je 0x14000c03c
lea rcx, [rsi + 8]
shl r8, 3
lea rdx, [rdi + 8]
call fcn.140106bc0
mov rcx, rdi
call fcn.1401100d8
mov eax, dword [rsi]
mov qword [r15 + 0x148], rsi
mov dword [r15 + 0x150], ebx
lea ebx, [rax + 1]
mov dword [rsi], ebx
mov qword [rsi + rax*8 + 8], r12
mov rbx, qword [r15 + 0x190]
mov qword [rbp], 0
test rbx, rbx
je 0x14000b784
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + reloc.WS2_32.dll_htonl]
test al, al
je 0x14000b784
mov rbx, qword [rbx + 8]
test rbx, rbx
jne 0x14000b76e
xor r12d, r12d
mov qword [rbp + 8], r12
xor r14d, r14d
mov rcx, qword [r14 + r15 + 0x70]
mov r13, qword [rcx]
cmp r13, rcx
je 0x14000b87f
mov rdi, qword [r12 + r15 + 0x148]
mov esi, dword [r12 + r15 + 0x150]
mov eax, dword [rdi]
mov rbx, r13
mov r13, qword [r13]
lea edx, [rax + 1]
cmp edx, esi
jbe 0x14000b86b
mov eax, esi
shr eax, 1
add esi, eax
cmp esi, edx
cmovbe esi, edx
lea rcx, [rsi*8 + 8]
call fcn.14010fbf8
mov rdi, rax
mov rax, qword [r12 + r15 + 0x148]
mov edx, dword [rax]
mov dword [rdi], edx
mov r10d, dword [rax]
test r10d, r10d
jbe 0x14000b849
cmp r10d, 0xc
jbe 0x14000bfe5
mov r8, rdi
lea r11d, [r10*8]
sub r8, rax
xor ecx, ecx
mov r9d, 1
xor edx, edx
cmp r8, r11
cmovg edx, r9d
neg r8
cmp r8, r11
cmovg ecx, r9d
or edx, ecx
je 0x14000bfeb
lea rcx, [rdi + 8]
shl r10, 3
lea rdx, [rax + 8]
mov r8, r10
mov qword [rbp + 0x10], rax
call fcn.140106bc0
mov rax, qword [rbp + 0x10]
mov rcx, rax
call fcn.1401100d8
mov eax, dword [rdi]
mov qword [r12 + r15 + 0x148], rdi
mov dword [r12 + r15 + 0x150], esi
mov rcx, qword [r14 + r15 + 0x70]
lea edx, [rax + 1]
mov rbx, qword [rbx + 0x10]
mov dword [rdi], edx
mov qword [rdi + rax*8 + 8], rbx
cmp r13, rcx
jne 0x14000b7af
mov rax, qword [rbp]
add r14, 0x38
cmp rax, qword [r12 + r15 + 0x158]
mov rdx, qword [rbp + 8]
cmovb rax, qword [r12 + r15 + 0x158]
inc rdx
add r12, 0x18
mov qword [rbp], rax
mov qword [rbp + 8], rdx
cmp rdx, 3
jl 0x14000b78e
lea rax, [r15 + 0x110]
mov qword [rbp + 0x438], rax
mov rax, qword [r15 + 0x118]
mov r13, qword [rax]
cmp r13, rax
je 0x14000b9ba
mov rdx, qword [rbp + 0x448]
mov r12, qword [r15 + 0x160]
mov esi, dword [rdx + 8]
mov edx, dword [r12]
mov rdi, r13
mov r13, qword [r13]
lea ecx, [rdx + 1]
cmp ecx, esi
jbe 0x14000b9a4
mov eax, esi
shr eax, 1
add esi, eax
cmp esi, ecx
cmovbe esi, ecx
lea rcx, [rsi*8 + 8]
call fcn.14010fbf8
mov r12, rax
mov rbx, qword [r15 + 0x160]
mov eax, dword [rbx]
mov dword [r12], eax
mov r8d, dword [rbx]
test r8d, r8d
jbe 0x14000b97d
cmp r8d, 0xc
jbe 0x14000bf91
mov rdx, r12
lea eax, [r8*8]
sub rdx, rbx
xor r9d, r9d
mov r11d, 1
xor r10d, r10d
cmp rdx, rax
cmovg r10d, r11d
neg rdx
cmp rdx, rax
cmovg r9d, r11d
or r10d, r9d
je 0x14000bf97
lea rcx, [r12 + 8]
shl r8, 3
lea rdx, [rbx + 8]
call fcn.140106bc0
mov rcx, rbx
call fcn.1401100d8
mov rax, qword [rbp + 0x448]
mov edx, dword [r12]
mov qword [r15 + 0x160], r12
mov dword [rax + 8], esi
mov rax, qword [r15 + 0x118]
lea ecx, [rdx + 1]
mov rdi, qword [rdi + 0x10]
mov dword [r12], ecx
mov qword [r12 + rdx*8 + 8], rdi
cmp r13, rax
jne 0x14000b8e7
mov rdx, qword [rbp + 0x448]
mov rbx, qword [rbp]
mov r13, qword [rax]
mov rcx, qword [rdx + 0x10]
cmp rcx, rbx
cmova rbx, rcx
mov qword [rbp], rbx
cmp r13, rax
je 0x14000bac4
mov rdx, qword [rbp + 0x440]
mov r12, qword [r15 + 0x178]
mov edi, dword [rdx + 8]
mov edx, dword [r12]
mov rsi, r13
mov r13, qword [r13]
lea ecx, [rdx + 1]
cmp ecx, edi
jbe 0x14000baae
mov eax, edi
shr eax, 1
add edi, eax
cmp edi, ecx
cmovbe edi, ecx
lea rcx, [rdi*8 + 8]
call fcn.14010fbf8
mov r12, rax
mov rbx, qword [r15 + 0x178]
mov eax, dword [rbx]
mov dword [r12], eax
mov r8d, dword [rbx]
test r8d, r8d
jbe 0x14000ba87
cmp r8d, 0xc
jbe 0x14000bf83
mov rdx, r12
lea eax, [r8*8]
sub rdx, rbx
xor r10d, r10d
mov r9d, 1
xor r11d, r11d
cmp rdx, rax
cmovg r11d, r9d
neg rdx
cmp rdx, rax
cmovle r9d, r10d
or r11d, r9d
je 0x14000bec2
lea rcx, [r12 + 8]
shl r8, 3
lea rdx, [rbx + 8]
call fcn.140106bc0
mov rcx, rbx
call fcn.1401100d8
mov rax, qword [rbp + 0x440]
mov edx, dword [r12]
mov qword [r15 + 0x178], r12
mov dword [rax + 8], edi
mov rax, qword [r15 + 0x118]
lea ecx, [rdx + 1]
mov rsi, qword [rsi + 0x10]
mov dword [r12], ecx
mov qword [r12 + rdx*8 + 8], rsi
cmp r13, rax
jne 0x14000b9f1
mov rax, qword [rbp + 0x440]
mov esi, 0x11e1a300
mov rcx, qword [rbp]
mov rbx, qword [r15 + 0x190]
mov rdx, qword [rax + 0x10]
cmp rdx, rcx
cmova rcx, rdx
mov qword [rbp], rcx
test rbx, rbx
je 0x14000bb13
xor eax, eax
mov dword [rbp + 0x434], eax
mov dword [rbp + 0x430], eax
mov rax, qword [rbx]
mov rcx, rbx
mov edx, esi
call qword [rax + 0x18]
mov esi, eax
mov rbx, qword [rbx + 8]
test rbx, rbx
jne 0x14000bafd
mov eax, 0x431bde83
mov ecx, esi
imul esi
sar ecx, 0x1f
sar edx, 0x12
sub edx, ecx
imul ebx, edx, 0xfff0bdc0
add esi, ebx
mov dword [rbp + 0x430], edx
mov dword [rbp + 0x434], esi
cmp byte [rbp + 0x458], 0
je 0x14000bb55
mov rcx, qword [rbp + 0x450]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov byte [rbp + 0x458], 0
call fcn.1400cc560
xor ecx, ecx
mov rsi, qword [r15 + 0x148]
mov rdi, qword [r15 + 0x160]
mov rbx, qword [r15 + 0x178]
call qword [sym.imp.WS2_32.dll_WSASetLastError]
test rsi, rsi
jne 0x14000bbbe
test rdi, rdi
jne 0x14000bbbe
test rbx, rbx
jne 0x14000bbbe
mov eax, 0x10624dd3
mov esi, 1
mov ebx, dword [rbp + 0x434]
imul ebx
imul ecx, dword [rbp + 0x430], 0x3e8
sar edx, 6
sar ebx, 0x1f
sub edx, ebx
add ecx, edx
cmove ecx, esi
call qword [sym.imp.KERNEL32.dll_Sleep]
call fcn.1400cc560
xor edi, edi
jmp 0x14000bc1e
cmp dword [rbp + 0x430], 0
jne 0x14000bbe2
mov eax, dword [rbp + 0x434]
test eax, eax
jle 0x14000bbe2
cmp eax, 0x3e7
jg 0x14000bbe2
mov dword [rbp + 0x434], 0x3e8
mov r10, rsp
mov rdx, rsi
mov rcx, qword [rbp]
mov r8, rdi
inc rcx
mov r9, rbx
lea rax, [rbp + 0x430]
mov qword [r10 + 0x20], rax
call qword [sym.imp.WS2_32.dll_select]
mov edi, eax
call qword [sym.imp.WS2_32.dll_WSAGetLastError]
mov ebx, eax
call fcn.1400cc560
test edi, edi
jl 0x14000bc1e
call fcn.1400cc560
test edi, edi
jle 0x14000bc3a
mov rcx, qword [r15 + 0x58]
mov rdx, qword [r15 + 0x148]
call sub.WS2_32.dll___WSAFDIsSet
test eax, eax
jne 0x14000bd39
cmp byte [rbp + 0x458], 0
jne 0x14000bc57
mov rcx, qword [rbp + 0x450]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov byte [rbp + 0x458], 1
test edi, edi
jle 0x14000bcc4
mov rcx, qword [rbp + 0x440]
mov rdx, qword [rbp + 0x438]
mov r8, qword [rbp + 0x4a0]
call fcn.14000c0c0
mov rcx, qword [rbp + 0x448]
mov rdx, qword [rbp + 0x438]
mov r8, qword [rbp + 0x4a0]
call fcn.14000c0c0
mov edi, 2
mov esi, reloc.WS2_32.dll_WSASetLastError
mov ebx, 0x30
lea rcx, [rbx + r15 + 0x148]
mov r8, qword [rbp + 0x4a0]
lea rdx, [rsi + r15 + 0x68]
call fcn.14000c0c0
add rsi, 0xffffffffffffffc8
add rbx, 0xffffffffffffffe8
dec rdi
jns 0x14000bc9e
mov rbx, qword [r15 + 0x190]
test rbx, rbx
je 0x14000bce9
mov rax, qword [rbx]
mov rcx, rbx
mov rdx, qword [rbp + 0x4a0]
call qword [rax + 0x20]
mov rbx, qword [rbx + 8]
test rbx, rbx
jne 0x14000bcd0
cmp byte [rbp + 0x458], 0
je 0x14000bcff
mov rcx, qword [rbp + 0x450]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov rbx, qword [rbp + 0x468]
mov rsi, qword [rbp + 0x470]
mov rdi, qword [rbp + 0x478]
mov r12, qword [rbp + 0x480]
mov r13, qword [rbp + 0x488]
mov r14, qword [rbp + 0x490]
mov r15, qword [rbp + 0x498]
lea rsp, [rbp + 0x4b0]
pop rbp
ret
lea rax, [rbp]
mov qword [rbp + 0x418], rax
mov dword [rbp + 0x410], 0x400
call fcn.1400cc560
xor ecx, ecx
mov r12, qword [r15 + 0x58]
call qword [sym.imp.WS2_32.dll_WSASetLastError]
mov rsi, rsp
mov rcx, r12
mov r8d, 1
lea rdx, [rbp + 0x410]
xor eax, eax
lea r9, [rbp + 0x420]
mov dword [rbp + 0x420], eax
lea rbx, [rbp + 0x424]
mov dword [rbp + 0x424], eax
mov qword [rsi + 0x20], rbx
mov qword [rsi + 0x28], 0
mov qword [rsi + 0x30], 0
call qword [sym.imp.WS2_32.dll_WSARecv]
mov ebx, eax
call qword [sym.imp.WS2_32.dll_WSAGetLastError]
mov esi, eax
call fcn.1400cc560
mov dword [rbp + 0x400], esi
mov qword [rbp + 0x408], rax
mov eax, dword [rbp + 0x400]
cmp eax, 0x40
je 0x14000beb8
cmp eax, 0x4d2
je 0x14000beb8
test ebx, ebx
je 0x14000bea8
mov eax, 0xffffffff
cmp eax, 0x400
je 0x14000c092
jmp 0x14000be8d
xor ecx, ecx
mov r12, qword [r15 + 0x58]
call qword [sym.imp.WS2_32.dll_WSASetLastError]
mov rbx, rsp
mov rcx, r12
mov r8d, 1
lea rdx, [rbp + 0x410]
xor eax, eax
lea r9, [rbp + 0x428]
mov dword [rbp + 0x428], eax
mov dword [rbp + 0x42c], eax
mov qword [rbx + 0x20], rsi
mov qword [rbx + 0x28], 0
mov qword [rbx + 0x30], 0
call qword [sym.imp.WS2_32.dll_WSARecv]
mov ebx, eax
call qword [sym.imp.WS2_32.dll_WSAGetLastError]
mov r12d, eax
call fcn.1400cc560
mov dword [rbp + 0x400], r12d
mov qword [rbp + 0x408], rax
mov eax, dword [rbp + 0x400]
cmp eax, 0x40
je 0x14000bea1
cmp eax, 0x4d2
je 0x14000bea1
test ebx, ebx
je 0x14000be94
mov eax, 0xffffffff
cmp eax, 0x400
je 0x14000bdfb
dec edi
jmp 0x14000bc3a
call fcn.1400cc560
mov eax, dword [rbp + 0x428]
jmp 0x14000be82
call fcn.1400cc560
jmp 0x14000be79
call fcn.1400cc560
mov eax, dword [rbp + 0x420]
jmp 0x14000bdeb
call fcn.1400cc560
jmp 0x14000bdde
lea rax, [r12 + 8]
and rax, 0xf
test eax, eax
je 0x14000bee0
mov eax, 1
cmp r8d, 3
jb 0x14000bf8d
jmp 0x14000beec
lea edx, [rax + 2]
cmp r8d, edx
jb 0x14000bf8d
mov edx, r8d
xor r10d, r10d
sub edx, eax
and edx, 1
neg edx
add edx, r8d
test eax, eax
jbe 0x14000bf18
xor r9d, r9d
inc r9d
mov r11, qword [rbx + r10*8 + 8]
mov qword [r12 + r10*8 + 8], r11
mov r10d, r9d
cmp r9d, eax
jb 0x14000bf03
mov eax, eax
lea r9, [rbx + rax*8 + 8]
test r9, 0xf
je 0x14000bf45
mov r9d, eax
vmovdqu xmm0, xmmword [rbx + r9*8 + 8]
add eax, 2
vmovdqu xmmword [r12 + r9*8 + 8], xmm0
mov r9d, eax
cmp eax, edx
jb 0x14000bf2b
jmp 0x14000bf60
mov r9d, eax
add eax, 2
vmovdqu xmm0, xmmword [rbx + r9*8 + 8]
vmovdqu xmmword [r12 + r9*8 + 8], xmm0
mov r9d, eax
cmp eax, edx
jb 0x14000bf48
mov eax, edx
cmp edx, r8d
jae 0x14000ba87
inc edx
mov r9, qword [rbx + rax*8 + 8]
mov qword [r12 + rax*8 + 8], r9
mov eax, edx
cmp edx, r8d
jb 0x14000bf6b
jmp 0x14000ba87
cmp r8d, 2
jae 0x14000bec2
xor edx, edx
jmp 0x14000bf60
mov r11d, 1
mov edx, r8d
xor eax, eax
shr edx, 1
test edx, edx
jbe 0x14000bfca
lea r9d, [rax + rax]
lea r11d, [rax + rax + 1]
inc eax
mov r10, qword [rbx + r9*8 + 8]
mov qword [r12 + r9*8 + 8], r10
mov r14, qword [rbx + r11*8 + 8]
mov qword [r12 + r11*8 + 8], r14
cmp eax, edx
jb 0x14000bfa2
lea r11d, [rax + rax + 1]
dec r11d
cmp r11d, r8d
jae 0x14000b97d
mov rax, qword [rbx + r11*8 + 8]
mov qword [r12 + r11*8 + 8], rax
jmp 0x14000b97d
mov r9d, 1
mov edx, r10d
xor r8d, r8d
shr edx, 1
test edx, edx
jbe 0x14000c021
lea r9d, [r8 + r8]
mov r11, qword [rax + r9*8 + 8]
mov qword [rdi + r9*8 + 8], r11
lea r9d, [r8 + r8 + 1]
inc r8d
mov r11, qword [rax + r9*8 + 8]
mov qword [rdi + r9*8 + 8], r11
cmp r8d, edx
jb 0x14000bff7
lea r9d, [r8 + r8 + 1]
dec r9d
cmp r9d, r10d
jae 0x14000b849
mov rdx, qword [rax + r9*8 + 8]
mov qword [rdi + r9*8 + 8], rdx
jmp 0x14000b849
mov eax, r8d
xor edx, edx
shr eax, 1
test eax, eax
jbe 0x14000c06f
lea r9d, [rdx + rdx]
lea r11d, [rdx + rdx + 1]
inc edx
mov r10, qword [rdi + r9*8 + 8]
mov qword [rsi + r9*8 + 8], r10
mov r13, qword [rdi + r11*8 + 8]
mov qword [rsi + r11*8 + 8], r13
cmp edx, eax
jb 0x14000c047
lea r11d, [rdx + rdx + 1]
dec r11d
cmp r11d, r8d
jae 0x14000b738
mov rax, qword [rdi + r11*8 + 8]
mov qword [rsi + r11*8 + 8], rax
jmp 0x14000b738
mov r11d, 1
jmp 0x14000c03c
lea rsi, [rbp + 0x42c]
jmp 0x14000bdfb