Function at 0x14015a620
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push rbx
push rbp
push rdi
sub rsp, 0x60
mov rax, qword [0x14032f0c0]
xor rax, rsp
mov qword [rsp + 0x48], rax
mov rbx, qword [rcx + 0xa0]
lea r9, [rsp + 0x20]
mov rax, rcx
mov r8, rbx
mov edx, 0x67766172
mov rcx, qword [rbx + 0x30]
mov rdi, qword [rax + 0x410]
mov qword [rsp + 0x28], rcx
mov rcx, rax
call qword [rax + 0x2a0]
mov ebp, eax
test eax, eax
jne 0x14015abb7
mov r9, qword [rbx + 0x38]
xor r10d, r10d
mov qword [rsp + 0x88], rsi
mov eax, r10d
mov qword [rsp + 0x90], r12
lea rsi, [0x1402d8900]
mov r12d, dword [rbx + 0xc]
mov ebp, r10d
mov qword [rsp + 0x98], r13
mov r8, r9
mov qword [rsp + 0x50], r15
lea r13, [0x140000000]
cdqe
xor r15b, r15b
mov qword [rsp + 0x58], r14
mov dword [rsp + 0x24], r12d
mov ecx, dword [r13 + rax*4 + 0x15abd0]
add rcx, r13
jmp rcx
movzx edx, word [rsi + 2]
mov rcx, rbx
call fcn.140107240
mov ebp, eax
test eax, eax
jne 0x14015a840
mov r9, qword [rbx + 0x38]
mov r15b, 1
jmp 0x14015a810
movzx r8d, byte [rsi + 1]
lea r14, [r8 + r9]
cmp r14, qword [rbx + 0x40]
ja 0x14015a835
cmp byte [rsi], 0x18
jne 0x14015a71a
movzx eax, word [rsi + 2]
lea rcx, [rsp + 0x30]
add rcx, rax
mov rdx, r9
call fcn.140276ca0
mov r9, r14
jmp 0x14015a810
movzx edx, byte [r9]
mov ecx, 0x18
inc r9
jmp 0x14015a7df
movzx eax, byte [r8]
add r9, 2
shl eax, 8
mov ecx, reloc.WS2_32.dll_recv
movzx edx, byte [r9 - 1]
jmp 0x14015a7dd
movzx edx, byte [r9 + 1]
add r9, 2
mov ecx, reloc.WS2_32.dll_recv
jmp 0x14015a7d6
movzx eax, byte [r8]
add r9, 4
shl eax, 8
mov ecx, r10d
movzx edx, byte [r9 - 3]
or edx, eax
movzx eax, byte [r9 - 2]
shl edx, 8
or edx, eax
movzx eax, byte [r9 - 1]
jmp 0x14015a7da
movzx eax, byte [r9 + 2]
add r9, 4
mov ecx, r10d
movzx edx, byte [r9 - 1]
shl edx, 8
or edx, eax
movzx eax, byte [r9 - 3]
jmp 0x14015a7d1
movzx eax, byte [r8]
add r9, 3
shl eax, 8
mov ecx, 8
movzx edx, byte [r9 - 2]
or edx, eax
movzx eax, byte [r9 - 1]
jmp 0x14015a7da
movzx edx, byte [r9 + 2]
add r9, 3
mov ecx, 8
movzx eax, byte [r9 - 2]
shl edx, 8
or edx, eax
movzx eax, byte [r8]
shl edx, 8
or edx, eax
test byte [rsi], 1
je 0x14015a7e8
shl edx, cl
sar edx, cl
movzx eax, word [rsi + 2]
lea r8, [rsp + 0x30]
movzx ecx, byte [rsi + 1]
add r8, rax
sub ecx, 1
je 0x14015a80d
sub ecx, 1
je 0x14015a807
mov dword [r8], edx
jmp 0x14015a810
mov word [r8], dx
jmp 0x14015a810
mov byte [r8], dl
movzx eax, byte [rsi + 4]
add rsi, 4
sub eax, 4
cmp eax, 0x15
ja case.0x14015a833.5
cdqe
xor r10d, r10d
mov r8, r9
mov ecx, dword [r13 + rax*4 + 0x15abd0]
add rcx, r13
jmp rcx
mov ebp, 0x55
jmp 0x14015a840
mov qword [rbx + 0x38], r9
test r15b, r15b
je 0x14015a84d
mov rcx, rbx
call fcn.140107380
test ebp, ebp
jne 0x14015ab95
cmp dword [rsp + 0x30], 0x10000
jne 0x14015a8ab
mov rax, qword [rdi + 0x18]
movzx r15d, word [rsp + 0x34]
cmp r15w, word [rax]
jne 0x14015a8ab
movzx ecx, word [rsp + 0x36]
mov r8d, dword [rsp + 0x20]
mov eax, r8d
imul ecx, r15d
shr eax, 1
cmp ecx, eax
ja 0x14015a8ab
movzx eax, word [rsp + 0x3e]
movzx r13d, word [rsp + 0x3c]
and ax, 1
movzx r14d, ax
lea esi, [r13 + 1]
lea edx, [r14 + 1]
imul edx, esi
add edx, edx
cmp edx, r8d
jbe 0x14015a8b5
mov ebp, 8
jmp 0x14015ab95
add r12d, dword [rsp + 0x40]
mov rcx, rbx
mov dword [rdi + 0x88], r8d
call fcn.140107240
mov ebp, eax
test eax, eax
jne 0x14015ab95
mov rax, qword [rsp + 0x28]
lea edx, [rsi*4]
mov rcx, rax
call qword [rax + reloc.WS2_32.dll_htonl]
mov ebp, 0x40
mov edx, 0
test rax, rax
mov qword [rdi + 0x80], rax
cmovne ebp, edx
je 0x14015ab6a
test r14w, r14w
mov r11d, esi
mov r14d, dword [rsp + 0x24]
je 0x14015a9ac
add r14d, dword [rsp + 0x20]
xor r15d, r15d
mov r10d, r15d
mov r8d, r15d
mov r9, qword [rbx + 0x38]
mov ecx, r15d
mov rdx, r9
lea rax, [r9 + 3]
cmp rax, qword [rbx + 0x40]
jae 0x14015a959
movzx eax, byte [rdx + 1]
add rdx, 4
movzx ecx, byte [r9]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx - 2]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx - 1]
shl ecx, 8
or ecx, eax
mov qword [rbx + 0x38], rdx
add ecx, r12d
mov rax, qword [rdi + 0x80]
mov dword [r8 + rax], ecx
mov rcx, qword [rdi + 0x80]
mov eax, dword [rcx + r8]
cmp r10d, eax
ja 0x14015a980
mov r10d, eax
jmp 0x14015a984
mov dword [rcx + r8], r10d
mov rax, qword [rdi + 0x80]
cmp r14d, dword [rax + r8]
jae 0x14015a995
mov dword [rax + r8], r14d
add r8, 4
sub r11, 1
jne 0x14015a922
movzx r15d, word [rsp + 0x34]
xor esi, esi
jmp 0x14015aa2b
add r14d, dword [rsp + 0x20]
mov r10d, edx
xor esi, esi
mov r8, rdx
nop dword [rax]
mov r9, qword [rbx + 0x38]
mov edx, esi
mov rcx, r9
lea rax, [r9 + 1]
cmp rax, qword [rbx + 0x40]
jae 0x14015a9e4
movzx eax, byte [r9]
add rcx, 2
shl eax, 8
movzx edx, byte [rcx - 1]
or edx, eax
mov qword [rbx + 0x38], rcx
lea ecx, [r12 + rdx*2]
mov rax, qword [rdi + 0x80]
mov dword [r8 + rax], ecx
mov rcx, qword [rdi + 0x80]
mov eax, dword [rcx + r8]
cmp r10d, eax
ja 0x14015aa0c
mov r10d, eax
jmp 0x14015aa10
mov dword [rcx + r8], r10d
mov rax, qword [rdi + 0x80]
cmp r14d, dword [rax + r8]
jae 0x14015aa21
mov dword [rax + r8], r14d
add r8, 4
sub r11, 1
jne 0x14015a9c0
mov rcx, rbx
mov dword [rdi + 0x78], r13d
call fcn.140107380
movzx r12d, word [rsp + 0x36]
test r12w, r12w
je 0x14015ab95
mov edx, dword [rsp + 0x38]
mov rcx, rbx
add edx, dword [rsp + 0x24]
call fcn.140107030
mov ebp, eax
test eax, eax
jne 0x14015ab74
movzx eax, r15w
mov edx, r12d
imul edx, eax
mov rcx, rbx
add edx, edx
call fcn.140107240
mov ebp, eax
test eax, eax
jne 0x14015ab74
movzx eax, r15w
mov edx, r12d
imul edx, eax
test edx, edx
js 0x14015ab5f
je 0x14015aad1
cmp edx, 0x1fffffff
jle 0x14015aaa9
mov qword [rdi + 0x70], rsi
mov ebp, 0xa
jmp 0x14015ab6c
mov rax, qword [rsp + 0x28]
lea edx, [rdx*4]
mov rcx, rax
call qword [rax + reloc.WS2_32.dll_htonl]
test rax, rax
mov qword [rdi + 0x70], rax
mov ebp, 0x40
cmovne ebp, esi
jne 0x14015aad7
jmp 0x14015ab6c
mov qword [rdi + 0x70], rsi
mov ebp, esi
mov r14d, r12d
test r12d, r12d
je 0x14015ab51
movzx r11d, r15w
xor edx, edx
mov r8d, edx
test r11d, r11d
je 0x14015ab4a
mov r10d, r11d
imul r10d, esi
xor r14d, r14d
nop word [rax + rax]
mov r9, qword [rbx + 0x38]
movzx edx, r14w
mov rax, r9
lea rcx, [r9 + 1]
cmp rcx, qword [rbx + 0x40]
jae 0x14015ab28
movzx ecx, byte [r9]
add rax, 2
shl cx, 8
movzx edx, byte [rax - 1]
or dx, cx
mov qword [rbx + 0x38], rax
lea ecx, [r10 + r8]
mov rax, qword [rdi + 0x70]
inc r8d
movsx edx, dx
shl edx, 2
mov dword [rax + rcx*4], edx
cmp r8d, r11d
jb 0x14015ab00
mov r14d, r12d
xor edx, edx
inc esi
cmp esi, r14d
jb 0x14015aae5
mov rcx, rbx
mov dword [rdi + 0x68], r12d
call fcn.140107380
jmp 0x14015ab95
mov qword [rdi + 0x70], rsi
mov ebp, 6
jmp 0x14015ab6c
xor esi, esi
mov rcx, rbx
call fcn.140107380
mov rdx, qword [rdi + 0x80]
test rdx, rdx
je 0x14015ab8b
mov rax, qword [rsp + 0x28]
mov rcx, rax
call qword [rax + reloc.WS2_32.dll_recv]
mov qword [rdi + 0x80], rsi
mov dword [rdi + 0x78], esi
mov r14, qword [rsp + 0x58]
mov r13, qword [rsp + 0x98]
mov r12, qword [rsp + 0x90]
mov rsi, qword [rsp + 0x88]
mov r15, qword [rsp + 0x50]
mov eax, ebp
mov rcx, qword [rsp + 0x48]
xor rcx, rsp
call fcn.1401f4d70
add rsp, 0x60
pop rdi
pop rbp
pop rbx
ret