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

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r14
push r15
sub rsp, 0xb8
mov qword [rsp + 0x48], 0xfffffffffffffffe
mov rax, qword [0x140121ef0]
xor rax, rsp
mov qword [rsp + 0xa0], rax
mov rdi, r8
mov esi, ecx
mov dword [rsp + 0x40], edx
mov dword [rsp + 0x44], r9d
mov rbp, qword [r8 + 0x20]
mov r14d, 1
test ecx, ecx
jne 0x14009cef1
cmp byte [rbp + 0xcec], cl
jne 0x14009cef1
add dword [r8 + 0xb58], edx
mov r8d, dword [r8 + 0xb58]
lea rbx, [rdi + 0xb48]
mov eax, dword [rbx]
test eax, eax
je 0x14009cb9d
test edx, edx
jne 0x14009cb90
mov rax, qword [0x140122018]
mov rbx, qword [rax + 0x1a8]
call qword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov r8d, eax
xor esi, esi
mov dword [rsp + 0x20], esi
mov r9d, dword [rdi + 0x28]
lea rdx, str.Thread_0x_.4X__CSocketAsync::ReadResultCompletionRoutine_Error2__d___0x_X
mov rcx, rbx
call fcn.14004c390
mov rcx, qword [rdi + 0x300]
cmp rcx, 0xffffffffffffffff
je 0x14009cb84
call qword [sym.imp.WS2_32.dll_closesocket]
mov qword [rdi + 0x300], 0xffffffffffffffff
mov dword [rdi + 0x28], 0xffffffff
jmp 0x14009cf87
sub eax, edx
mov dword [rbx], eax
mov eax, edx
add qword [rdi + 0xb50], rax
xor esi, esi
mov r9d, edx
cmp dword [rdi + 0xb28], r8d
je 0x14009cbdd
dec dword [rdi + 0x28]
mov rax, qword [0x140122018]
mov rcx, qword [rax + 0x1a8]
mov eax, dword [rdi + 0xb28]
mov dword [rsp + 0x28], eax
mov dword [rsp + 0x20], r8d
mov r8d, dword [rdi + 0x28]
lea rdx, str.CSocketAsync::ReadResultCompletionRoutine___d_:_read__d__sum__d__expect__d
call fcn.14004c390
jmp 0x14009cc06
mov rax, qword [0x140122018]
mov dword [rsp + 0x20], r8d
mov r8d, dword [rdi + 0x28]
lea rdx, str.CSocketAsync::ReadResultCompletionRoutine:_next_position__d__read__d__sum__d
mov rcx, qword [rax + 0x1a8]
call fcn.14004c390
mov dword [rdi + 0xb58], esi
mov ecx, dword [rdi + 0x28]
dec ecx
je 0x14009ce0b
dec ecx
je 0x14009cd32
dec ecx
jne 0x14009cee9
cmp dword [rsp + 0x40], esi
je 0x14009cb66
mov qword [rsp + 0x98], 7
mov qword [rsp + 0x90], rsi
mov word [rsp + 0x80], si
lea rcx, [rsp + 0x50]
call fcn.1400abf20
nop
mov r8d, dword [rdi + 0xb28]
lea rdx, [rdi + 0xb30]
lea rcx, [rsp + 0x50]
call fcn.1400acc00
lea rdx, [rsp + 0x80]
lea rcx, [rsp + 0x50]
call fcn.1400ac2d0
lea r8, [rsp + 0x80]
cmp qword [rsp + 0x98], 8
cmovae r8, qword [rsp + 0x80]
mov rax, qword [0x140122018]
lea rdx, str.Remote_Result_Received:__s
mov rcx, qword [rax + 0x1a8]
call fcn.14004c390
lea rcx, [rdi + 0x1b0]
call fcn.1400b63e0
lea rdx, [rsp + 0x80]
lea rcx, [rdi + 0x1b0]
call fcn.1400b5200
test eax, eax
je 0x14009cced
lea rcx, [rdi + 0x1b0]
call fcn.1400b63e0
mov edx, 4
mov rcx, rbp
call fcn.140032520
mov dword [rdi + 0xb28], esi
mov qword [rdi + Ordinal_2866], rsi
mov dword [rdi + 0x28], esi
mov rcx, rbp
call fcn.140056600
nop
lea rcx, [rsp + 0x50]
call fcn.1400abfb0
nop
cmp qword [rsp + 0x98], 8
jb 0x14009cf87
mov rcx, qword [rsp + 0x80]
call sub.mfc110u.dll_Ordinal_1482
jmp 0x14009cf87
cmp dword [rsp + 0x40], esi
je 0x14009cb66
cmp dword [rdi + 0xb58], esi
jne 0x14009cd93
mov rcx, qword [rdi + 0xb30]
mov r15d, dword [rcx]
test rcx, rcx
je 0x14009cd60
call qword [sym.imp.MSVCR110.dll_free]
mov qword [rdi + Ordinal_2866], rsi
mov rcx, r15
call qword [sym.imp.MSVCR110.dll_malloc]
mov qword [rdi + Ordinal_2866], rax
test rax, rax
cmove r14d, esi
mov ecx, esi
cmovne ecx, r15d
mov dword [rdi + 0xb28], ecx
mov dword [rbx], ecx
mov rax, qword [rdi + 0xb30]
mov qword [rdi + 0xb50], rax
lea rax, [fcn.14009cac0]
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x28], rdi
lea rax, [rsp + 0x44]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x40]
mov r8d, 1
mov rdx, rbx
mov rcx, qword [rdi + 0x300]
call qword [sym.imp.WS2_32.dll_WSARecv]
cmp eax, 0xffffffff
jne 0x14009cdfd
call qword [sym.imp.WS2_32.dll_WSAGetLastError]
cmp eax, 0x3e5
je 0x14009cdfd
mov rcx, qword [rdi + 0xb30]
test rcx, rcx
je 0x14009ce92
call qword [sym.imp.MSVCR110.dll_free]
mov qword [rdi + Ordinal_2866], rsi
jmp 0x14009ce92
test r14d, r14d
je 0x14009ceb0
jmp 0x14009cee9
mov eax, dword [rbx]
test eax, eax
jne 0x14009ce4d
cmp dword [rsp + 0x40], esi
jne 0x14009ceb0
test eax, eax
jne 0x14009ce4d
mov dword [rdi + 0xb28], 4
lea ecx, [rax + 4]
call qword [sym.imp.MSVCR110.dll_malloc]
mov qword [rdi + Ordinal_2866], rax
mov dword [rbx], 4
mov rax, qword [rdi + 0xb30]
mov qword [rdi + 0xb50], rax
lea rax, [fcn.14009cac0]
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x28], rdi
lea rax, [rsp + 0x44]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x40]
mov r8d, r14d
mov rdx, rbx
mov rcx, qword [rdi + 0x300]
call qword [sym.imp.WS2_32.dll_WSARecv]
cmp eax, 0xffffffff
jne 0x14009cee9
call qword [sym.imp.WS2_32.dll_WSAGetLastError]
cmp eax, 0x3e5
je 0x14009cee9
mov rcx, qword [rdi + 0x300]
cmp rcx, 0xffffffffffffffff
je 0x14009ceb0
call qword [sym.imp.WS2_32.dll_closesocket]
mov qword [rdi + 0x300], 0xffffffffffffffff
mov dword [rdi + 0x28], 0xffffffff
mov rax, qword [0x140122018]
mov rbx, qword [rax + 0x1a8]
call qword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov r8d, eax
lea rdx, str.Thread_0x_.4X__CSocketAsync::ReadResultCompletionRoutine_2___OnBrokenConnection
mov rcx, rbx
call fcn.14004c390
mov byte [rbp + 0xcec], 1
jmp 0x14009cf7f
inc dword [rdi + 0x28]
jmp 0x14009cf87
mov rax, qword [0x140122018]
mov rbx, qword [rax + 0x1a8]
call qword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov r8d, eax
mov dword [rsp + 0x20], esi
mov r9d, dword [rdi + 0x28]
lea rdx, str.Thread_0x_.4X__CSocketAsync::ReadResultCompletionRoutine_Error__d___0x_X
mov rcx, rbx
call fcn.14004c390
mov rax, qword [0x140122018]
mov rbx, qword [rax + 0x1a8]
call qword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov r8d, eax
lea rdx, str.Thread_0x_.4X__CSocketAsync::ReadResultCompletionRoutine___OnBrokenConnection
mov rcx, rbx
call fcn.14004c390
lea rcx, [rdi + 0x310]
call fcn.14005e250
mov r8d, WSAGetLastError
mov rdx, rax
mov rcx, rbp
call fcn.140032ef0
lea rdx, [rdi + 0x310]
mov rcx, rbp
call fcn.140033da0
mov byte [rbp + 0xcec], r14b
mov dword [rdi + 0x28], 0xffffffff
mov rcx, rbp
call fcn.140056600
mov rcx, qword [rsp + 0xa0]
xor rcx, rsp
call fcn.1400bb310
add rsp, 0xb8
pop r15
pop r14
pop rdi
pop rsi
pop rbp
pop rbx
ret