Function at 0x14001d840
Capabilities:
Send data
Send data on socket
Terminate thread

Disassembly:
push rbp
push r15
push r14
push r12
push rsi
push rdi
push rbx
sub rsp, 0x90
lea rbp, [rsp + 0x80]
movaps xmmword [rbp], xmm6
mov qword [rbp - 8], 0xfffffffffffffffe
mov rsi, rcx
lea rdi, [rcx + 0x30]
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov byte [rsi + 0x1e8], 1
mov byte [rsi + 0x198], 1
cmp qword [rsi + 0x1a0], 0
je 0x14001d951
mov byte [rbp - 9], 0
lea rax, [rbp - 9]
mov qword [rbp - 0x38], rax
mov dword [rbp - 0x40], 1
mov rcx, qword [rsi + 0x60]
mov dword [rbp - 0x20], 0
pxor xmm0, xmm0
movdqu xmmword [rsp + 0x28], xmm0
mov dword [rsp + 0x20], 0
lea rdx, [rbp - 0x40]
lea r9, [rbp - 0x20]
mov r8d, 1
call qword [sym.imp.WS2_32.dll_WSASend]
call qword [sym.imp.WS2_32.dll_WSAGetLastError]
mov ebx, eax
mov rax, qword [0x14015f250]
shr rax, 1
movabs r14, 0x595588bd12bf6fe8
cmp rax, r14
je 0x14001d909
mov rax, qword [0x14015f248]
lea rcx, [0x14015f248]
mov edx, ebx
call qword [rax + 0x30]
cmp ebx, 0x4d2
je 0x14001d92c
cmp ebx, 0x40
jne 0x14001d951
mov rax, qword [0x14015f250]
shr rax, 1
mov edx, 0x2746
cmp rax, r14
jne 0x14001d940
jmp 0x14001d951
mov rax, qword [0x14015f250]
shr rax, 1
mov edx, 0x274d
cmp rax, r14
je 0x14001d951
mov rax, qword [0x14015f248]
lea rcx, [0x14015f248]
call qword [rax + 0x30]
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov rdi, qword [rsi + 0x1a0]
test rdi, rdi
je 0x14001da01
movdqu xmm0, xmmword [rdi + 8]
pshufd xmm0, xmm0, 0x4e
movdqa xmmword [rbp - 0x40], xmm0
lea rdx, [rbp - 0x40]
mov ecx, 2
xor r8d, r8d
mov r9d, 0xffffffff
call qword [sym.imp.KERNEL32.dll_WaitForMultipleObjects]
mov rcx, qword [rdi + 0x10]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mfence
mov eax, dword [0x140164a88]
mov rdx, qword [rdi + 8]
test eax, eax
je 0x14001d9b9
mov rcx, rdx
xor edx, edx
call qword [sym.imp.KERNEL32.dll_TerminateThread]
jmp 0x14001d9d8
lea rcx, [0x14000eb70]
xor r8d, r8d
call qword [sym.imp.KERNEL32.dll_QueueUserAPC]
mov rcx, qword [rdi + 8]
mov edx, 0xffffffff
call qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov rdi, qword [rsi + 0x1a0]
test rdi, rdi
je 0x14001d9f6
mov rcx, qword [rdi + 8]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rcx, rdi
call fcn.1400551fc
mov qword [rsi + 0x1a0], 0
xorps xmm6, xmm6
movaps xmmword [rbp - 0x20], xmm6
xor r15d, r15d
lea rbx, [rbp - 0x20]
xor r14d, r14d
jmp 0x14001da23
inc r14d
cmp r14d, 4
jae 0x14001da8c
mov eax, r14d
imul rax, rax, 0x38
mov rcx, qword [rsi + rax + 0x70]
mov rdx, qword [rcx]
cmp rdx, rcx
je 0x14001da20
lea rdi, [rsi + rax]
add rdi, 0x68
nop word cs:[rax + rax]
mov r12, qword [rdx]
mov rax, qword [rdx + 0x18]
test rax, rax
je 0x14001da79
lea rcx, [rdx + 0x18]
lea r8, [r15 + 0x20]
test r15, r15
cmove r8, rbx
mov qword [r8], rax
mov r15, qword [rdx + 0x20]
mov qword [rbp - 0x18], r15
movups xmmword [rcx], xmm6
mov rcx, rdi
call fcn.14000f330
mov rdx, r12
cmp r12, qword [rdi + 8]
jne 0x14001da50
jmp 0x14001da20
mov rdi, qword [rsi + 0x190]
test rdi, rdi
je 0x14001dab5
lea rbx, [rbp - 0x20]
nop dword [rax]
mov rax, qword [rdi]
mov rcx, rdi
mov rdx, rbx
call qword [rax + 0x28]
mov rdi, qword [rdi + 8]
test rdi, rdi
jne 0x14001daa0
mov rdx, qword [rbp - 0x20]
test rdx, rdx
je 0x14001db14
mov rdi, qword [rsi + 0x28]
xorps xmm6, xmm6
lea rsi, [rbp - 0x40]
nop dword [rax]
mov rax, qword [rdx + 0x20]
mov qword [rbp - 0x20], rax
test rax, rax
jne 0x14001dae5
mov qword [rbp - 0x18], 0
mov qword [rdx + 0x20], 0
lock dec dword [rdi + 0x30]
mov rax, qword [rdx + 0x28]
movaps xmmword [rbp - 0x40], xmm6
mov qword [rbp - 0x30], 0
xor ecx, ecx
mov r8, rsi
xor r9d, r9d
call rax
mov rdx, qword [rbp - 0x20]
test rdx, rdx
jne 0x14001dad0
movaps xmm6, xmmword [rbp]
add rsp, 0x90
pop rbx
pop rdi
pop rsi
pop r12
pop r14
pop r15
pop rbp
ret