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

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x178
mov rbx, r9
mov rdi, r8
mov rsi, rcx
mov r13, qword [rdx]
test r13, r13
je 0x14004f42f
movzx ebp, byte [rbx + 0x10]
cmp bpl, 2
jne 0x14004f46f
mov r14, rdx
mov byte [rsp + 0x37], bpl
mov rbp, qword [rbx]
mov r12, qword [rbx + 8]
lea r15, [rbx + 0x18]
lea rcx, [rsp + 0x50]
mov rdx, r15
call fcn.140095d50
mov qword [rsp + 0x48], rbp
lock inc qword [rbp]
jle 0x14004fa54
lea rcx, [r12 + 0x1c8]
call fcn.140086af0
lock inc qword [rax]
mov qword [rsp + 0xb0], r12
lock inc qword [r12]
jle 0x14004fa54
movups xmm0, xmmword [rsp + 0x50]
movups xmm1, xmmword [rsp + 0x59]
movups xmmword [rsp + 0x168], xmm1
movups xmmword [rsp + 0x15f], xmm0
movzx ebp, byte [rsp + 0x69]
mov eax, dword [rsp + 0x6a]
mov dword [rsp + 0x88], eax
movzx eax, word [rsp + 0x6e]
mov word [rsp + 0x8c], ax
movups xmm0, xmmword [r15]
movups xmm1, xmmword [r15 + 9]
movups xmmword [rsp + 0x97], xmm0
movups xmmword [rsp + 0xa0], xmm1
movzx ecx, byte [rbx + 0x31]
movzx eax, word [rbx + 0x36]
mov word [rsp + 0x44], ax
mov eax, dword [rbx + 0x32]
mov dword [rsp + 0x40], eax
cmp bpl, 2
jne 0x14004f5a3
mov r15, qword [rsp + 0x48]
mov r14, qword [rsp + 0xb0]
movzx ebp, byte [rsp + 0x37]
jmp 0x14004f4f4
mov r15, qword [rbx]
mov r14, qword [rbx + 8]
movzx ebp, byte [rbx + 0x10]
movups xmm0, xmmword [rbx + 0x21]
movaps xmmword [rsp + 0xd0], xmm0
movups xmm0, xmmword [rbx + 0x11]
movaps xmmword [rsp + 0xc0], xmm0
movzx r12d, byte [rbx + 0x31]
mov eax, dword [rbx + 0x32]
mov dword [rsp + 0x38], eax
movzx eax, word [rbx + 0x36]
mov word [rsp + 0x3c], ax
xor r13d, r13d
jmp 0x14004f7e4
movups xmm0, xmmword [rbx + 0x18]
movups xmm1, xmmword [rbx + 0x21]
movups xmmword [rsp + 0x60], xmm1
movups xmmword [rsp + 0x57], xmm0
movzx ecx, byte [rbx + 0x31]
movzx eax, word [rbx + 0x36]
mov word [rsp + 0x44], ax
mov eax, dword [rbx + 0x32]
mov dword [rsp + 0x40], eax
mov r15, qword [rbx]
mov r14, qword [rbx + 8]
mov eax, dword [rbx + 0x14]
mov dword [rsp + 0x53], eax
mov eax, dword [rbx + 0x11]
mov dword [rsp + 0x50], eax
movups xmm0, xmmword [rsp + 0x60]
movaps xmmword [rsp + 0xa0], xmm0
mov eax, dword [rsp + 0x50]
mov dword [rsp + 0x90], eax
movzx eax, word [rsp + 0x54]
mov word [rsp + 0x94], ax
movzx eax, byte [rsp + 0x56]
mov byte [rsp + 0x96], al
mov rax, qword [rsp + 0x57]
mov qword [rsp + 0x97], rax
movzx eax, byte [rsp + 0x5f]
mov byte [rsp + 0x9f], al
mov eax, dword [rsp + 0x90]
movzx edx, word [rsp + 0x94]
movzx r8d, byte [rsp + 0x96]
mov r9, qword [rsp + 0x97]
movzx r10d, byte [rsp + 0x9f]
movaps xmm0, xmmword [rsp + 0xa0]
movaps xmmword [rsp + 0xd0], xmm0
mov dword [rsp + 0xc0], eax
mov word [rsp + 0xc4], dx
mov byte [rsp + 0xc6], r8b
mov qword [rsp + 0xc7], r9
mov byte [rsp + 0xcf], r10b
mov eax, dword [rsp + 0x40]
mov dword [rsp + 0x38], eax
movzx eax, word [rsp + 0x44]
mov word [rsp + 0x3c], ax
jmp 0x14004f572
pause
mov rax, qword [r13 + 8]
nop word cs:[rax + rax]
cmp rax, 0xffffffffffffffff
je 0x14004f570
test rax, rax
js 0x14004f9fa
lea rdx, [rax + 1]
lock cmpxchg qword [r13 + 8], rdx
jne 0x14004f580
mov r12d, ecx
jmp 0x14004f7e4
add rbx, 0x32
mov rax, qword [rsp + 0x48]
mov qword [rsp + 0xf8], rax
mov rax, qword [rsp + 0xb0]
mov qword [rsp + 0x100], rax
mov byte [rsp + 0x108], 2
movaps xmm0, xmmword [rsp + 0x90]
movaps xmm1, xmmword [rsp + 0xa0]
movups xmmword [rsp + 0x109], xmm0
movups xmmword [rsp + 0x119], xmm1
mov byte [rsp + 0x129], cl
mov eax, dword [rbx]
mov dword [rsp + 0x12a], eax
movzx eax, word [rbx + 4]
mov word [rsp + 0x12e], ax
lea rbx, [r13 + 0x10]
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
mov rax, qword [0x1401d3f18]
mov rax, qword [rax]
shl rax, 1
test rax, rax
jne 0x14004f99b
xor eax, eax
movzx ecx, byte [r13 + 0x18]
test cl, cl
jne 0x14004f9af
mov qword [rsp + 0xe0], rbx
movzx ecx, byte [rdi]
test rcx, rcx
mov dword [rsp + 0xbc], eax
je 0x14004f663
movzx ebx, byte [rsp + 0x37]
cmp ecx, 1
jne 0x14004f66c
movzx ecx, byte [rdi + 1]
mov al, 1
jmp 0x14004f6ac
movzx ebx, byte [rsp + 0x37]
xor eax, eax
jmp 0x14004f6ac
mov r12, qword [rdi + 8]
movzx eax, byte [0x1401d3fa1]
mov ecx, 0x20
mov edx, 8
call fcn.14000cc60
test rax, rax
je 0x14004fa58
mov r15, rax
lea rdx, [r12 + 0x18]
mov rax, qword [r12]
mov r8, qword [r12 + 8]
mov r9, qword [r12 + 0x10]
mov rcx, r15
call qword [rax]
mov al, 2
lea r12, [r13 + 0x20]
mov byte [rsp + 0x50], al
mov byte [rsp + 0x51], cl
mov qword [rsp + 0x58], r15
lea rcx, [rsp + 0x60]
lea rdx, [rdi + 0x28]
mov rax, qword [rdi + 0x10]
mov r8, qword [rdi + 0x18]
mov r9, qword [rdi + 0x20]
call qword [rax]
lea rdx, [rsp + 0x50]
lea r8, [rsp + 0xf8]
mov rcx, r12
mov r9, r14
call fcn.14004fa70
lea rcx, [r13 + 0x30]
mov rdx, rdi
call fcn.1400147e0
lea rdx, [r13 + 0x90]
lea rcx, [rsp + 0x50]
mov r8, rdi
call fcn.140014550
mov r14, qword [rsp + 0x50]
test r14, r14
je 0x14004f73c
lea rcx, [rsp + 0x50]
call fcn.140047e20
mov rdx, qword [rsp + 0x58]
test rdx, rdx
je 0x14004f73c
shl rdx, 3
mov r8d, 8
mov rcx, r14
call fcn.14000cc70
mov rcx, qword [rdi + 0x30]
lea rax, [rcx + 1]
cmp rax, 2
mov r15, qword [rsp + 0x48]
mov r12d, ebp
jb 0x14004f769
lock dec qword [rcx + 8]
jne 0x14004f769
mov edx, 0xe0
mov r8d, 8
call fcn.14000cc70
mov qword [rdi + 0x30], 0
movups xmm0, xmmword [rsp + 0x158]
movups xmm1, xmmword [rsp + 0x168]
movaps xmmword [rsp + 0xd0], xmm1
movaps xmmword [rsp + 0xc0], xmm0
mov eax, dword [rsp + 0x88]
mov dword [rsp + 0x38], eax
movzx eax, word [rsp + 0x8c]
mov word [rsp + 0x3c], ax
cmp byte [rsp + 0xbc], 0
mov r14, qword [rsp + 0xb0]
jne 0x14004f7d1
mov rax, qword [0x1401d3f18]
mov rax, qword [rax]
shl rax, 1
test rax, rax
jne 0x14004f9e3
mov rcx, qword [rsp + 0xe0]
call qword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
xor r13d, r13d
mov ebp, ebx
movaps xmm0, xmmword [rsp + 0xc0]
movaps xmm1, xmmword [rsp + 0xd0]
movaps xmmword [rsp + 0x140], xmm1
movaps xmmword [rsp + 0x130], xmm0
mov eax, dword [rsp + 0x38]
mov dword [rsp + 0x80], eax
movzx eax, word [rsp + 0x3c]
mov word [rsp + 0x84], ax
movzx eax, byte [rdi]
test rax, rax
je 0x14004f831
cmp eax, 1
jne 0x14004f835
movzx ecx, byte [rdi + 1]
mov al, 1
jmp 0x14004f88e
xor eax, eax
jmp 0x14004f88e
mov byte [rsp + 0x48], r12b
mov r12, r15
mov r15d, ebp
mov rbp, r14
mov r14, qword [rdi + 8]
movzx eax, byte [0x1401d3fa1]
mov ecx, 0x20
mov edx, 8
call fcn.14000cc60
test rax, rax
je 0x14004fa58
mov rbx, rax
lea rdx, [r14 + 0x18]
mov rax, qword [r14]
mov r8, qword [r14 + 8]
mov r9, qword [r14 + 0x10]
mov rcx, rbx
call qword [rax]
mov al, 2
mov r14, rbp
mov ebp, r15d
mov r15, r12
movzx r12d, byte [rsp + 0x48]
mov byte [rsp + 0x50], al
mov byte [rsp + 0x51], cl
mov qword [rsp + 0x58], rbx
lea rcx, [rsp + 0x60]
lea rbx, [rdi + 0x28]
mov rax, qword [rdi + 0x10]
mov r8, qword [rdi + 0x18]
mov r9, qword [rdi + 0x20]
mov rdx, rbx
call qword [rax]
mov qword [rsi + 0x30], r15
mov qword [rsi + 0x38], r14
mov byte [rsi + 0x40], bpl
movaps xmm0, xmmword [rsp + 0x130]
movaps xmm1, xmmword [rsp + 0x140]
movups xmmword [rsi + 0x41], xmm0
movups xmmword [rsi + 0x51], xmm1
mov byte [rsi + 0x61], r12b
mov eax, dword [rsp + 0x80]
mov dword [rsi + 0x62], eax
movzx eax, word [rsp + 0x84]
mov word [rsi + 0x66], ax
mov byte [rsi + 0x70], 0
movups xmm0, xmmword [rsp + 0x50]
movups xmm1, xmmword [rsp + 0x60]
movups xmm2, xmmword [rsp + 0x70]
movups xmmword [rsi], xmm0
movups xmmword [rsi + 0x10], xmm1
movups xmmword [rsi + 0x20], xmm2
mov qword [rsi + 0x68], r13
mov rcx, rdi
call fcn.140052780
cmp byte [rdi], 2
jb 0x14004f94b
mov r14, qword [rdi + 8]
lea rcx, [r14 + 0x18]
mov rax, qword [r14]
mov rdx, qword [r14 + 8]
mov r8, qword [r14 + 0x10]
call qword [rax + reloc.WS2_32.dll_recv]
mov edx, 0x20
mov r8d, 8
mov rcx, r14
call fcn.14000cc70
mov rax, qword [rdi + 0x10]
mov rdx, qword [rdi + 0x18]
mov r8, qword [rdi + 0x20]
mov rcx, rbx
call qword [rax + reloc.WS2_32.dll_recv]
mov rcx, qword [rdi + 0x30]
lea rax, [rcx + 1]
cmp rax, 2
jae 0x14004f982
mov rax, rsi
add rsp, 0x178
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
lock dec qword [rcx + 8]
jne 0x14004f96b
mov edx, 0xe0
mov r8d, 8
call fcn.14000cc70
jmp 0x14004f96b
call fcn.140135820
xor al, 1
movzx ecx, byte [r13 + 0x18]
test cl, cl
je 0x14004f63a
mov qword [rsp + 0x50], rbx
mov byte [rsp + 0x58], al
lea rax, [0x1401416a8]
mov qword [rsp + 0x20], rax
lea rcx, [0x140141408]
lea r9, [0x140141438]
lea r8, [rsp + 0x50]
mov edx, 0x2b
call fcn.1401369c0
ud2
call fcn.140135820
test al, al
jne 0x14004f7d1
mov byte [r13 + 0x18], 1
jmp 0x14004f7d1
lea rax, [0x14013da30]
mov qword [rsp + 0xe8], rax
lea rax, [0x140011da0]
mov qword [rsp + 0xf0], rax
mov qword [rsp + 0x20], 1
lea rdx, [0x14013da40]
lea rsi, [rsp + 0x50]
lea r9, [rsp + 0xe8]
mov r8d, 1
mov rcx, rsi
call fcn.14002d740
lea rdx, [0x14013daa0]
mov rcx, rsi
call fcn.1401365b0
ud2
ud2
mov ecx, 8
mov edx, 0x20
call fcn.140136460
ud2