Function at 0x14015cc40
Capabilities:
Encode data using xor

Disassembly:
push r14
push rsi
push rdi
push rbx
sub rsp, 0x48
mov rsi, rdx
mov rdi, rcx
test r8b, r8b
je 0x14015ccab
mov rax, qword [rsi + 0x20]
mov qword [rsp + 0x40], rax
movups xmm0, xmmword [rsi]
movups xmm1, xmmword [rsi + 0x10]
movaps xmmword [rsp + 0x30], xmm1
movaps xmmword [rsp + 0x20], xmm0
mov rax, qword [rdi + 0x30]
cmp rax, 1
je 0x14015ccf8
test rax, rax
jne 0x14015ce1c
mov rax, qword [rdi + 0x38]
test rax, rax
je 0x14015ce1c
lock sub qword [rax], 1
jne 0x14015ce1c
lea rcx, [rdi + 0x38]
call fcn.14015cb10
jmp 0x14015ce1c
mov rax, qword [rdi]
nop
mov rcx, rax
or rcx, 2
cmp rcx, 0x40
jb 0x14015cffa
add rcx, 0xffffffffffffffc0
lock cmpxchg qword [rdi], rcx
jne 0x14015ccb0
mov bl, 1
cmp rcx, 0x3f
ja 0x14015ccdc
mov rcx, rdi
call fcn.14015d080
test bl, bl
je 0x14015ccee
mov eax, dword [rsi]
or eax, 2
cmp eax, 2
jne 0x14015cd80
add rsp, 0x48
pop rbx
pop rdi
pop rsi
pop r14
ret
mov eax, dword [rdi + 0x38]
or eax, 2
cmp eax, 2
je 0x14015ce1c
mov rax, qword [0x1402cee10]
test rax, rax
je 0x14015cfc6
lea rcx, [0x140142370]
cmp rax, rcx
jne 0x14015cd46
mov rbx, qword [rdi + 0x40]
test rbx, rbx
je 0x14015cd46
mov rcx, rbx
call sub.KERNEL32.dll_DeleteCriticalSection
call sub.KERNEL32.dll_GetProcessHeap
mov rcx, rax
xor edx, edx
mov r8, rbx
call fcn.14021dfcd
mov rcx, qword [rdi + 0x50]
mov rax, qword [rdi + 0x58]
call qword [rax]
mov rax, qword [rdi + 0x58]
cmp qword [rax + 8], 0
je 0x14015ce1c
mov rbx, qword [rdi + 0x50]
cmp qword [rax + 0x10], 0x11
jae 0x14015ce09
call sub.KERNEL32.dll_GetProcessHeap
mov rcx, rax
xor edx, edx
mov r8, rbx
jmp 0x14015ce17
mov rax, qword [0x1402cee10]
test rax, rax
je 0x14015cf46
lea rcx, [0x140142370]
cmp rax, rcx
jne 0x14015cdbf
mov rdi, qword [rsi + 8]
test rdi, rdi
je 0x14015cdbf
mov rcx, rdi
call sub.KERNEL32.dll_DeleteCriticalSection
call sub.KERNEL32.dll_GetProcessHeap
mov rcx, rax
xor edx, edx
mov r8, rdi
call fcn.14021dfcd
mov rdi, qword [rsi + 0x18]
mov rsi, qword [rsi + 0x20]
mov rcx, rdi
call qword [rsi]
cmp qword [rsi + 8], 0
je 0x14015ccee
cmp qword [rsi + 0x10], 0x11
jae 0x14015cded
call sub.KERNEL32.dll_GetProcessHeap
mov rcx, rax
xor edx, edx
mov r8, rdi
jmp 0x14015cdfb
call sub.KERNEL32.dll_GetProcessHeap
mov r8, qword [rdi - 8]
mov rcx, rax
xor edx, edx
add rsp, 0x48
pop rbx
pop rdi
pop rsi
pop r14
jmp fcn.14021dfcd
call sub.KERNEL32.dll_GetProcessHeap
mov r8, qword [rbx - 8]
mov rcx, rax
xor edx, edx
call fcn.14021dfcd
mov qword [rdi + 0x30], 1
lea rbx, [rdi + 0x38]
movaps xmm0, xmmword [rsp + 0x20]
movaps xmm1, xmmword [rsp + 0x30]
movups xmmword [rdi + 0x38], xmm0
movups xmmword [rdi + 0x48], xmm1
mov rax, qword [rsp + 0x40]
mov qword [rdi + 0x58], rax
mov rax, qword [rdi]
nop word cs:[rax + rax]
mov rcx, rax
xor rcx, 3
lock cmpxchg qword [rdi], rcx
jne 0x14015ce50
test al, 1
je 0x14015d02e
test al, 2
jne 0x14015d048
test al, 8
jne 0x14015cea9
mov rax, qword [rdi + 0x30]
cmp rax, 1
je 0x14015ceca
test rax, rax
jne 0x14015cf73
mov rax, qword [rbx]
test rax, rax
je 0x14015cf73
lock sub qword [rax], 1
jne 0x14015cf73
mov rcx, rbx
call fcn.14015cb10
jmp 0x14015cf73
test al, 0x10
je 0x14015cf95
mov rax, qword [rdi + 0x70]
test rax, rax
je 0x14015d062
mov rcx, qword [rdi + 0x68]
call qword [rax + reloc.WS2_32.dll_recv]
jmp 0x14015cf95
mov eax, dword [rbx]
or eax, 2
cmp eax, 2
je 0x14015cf73
mov rax, qword [0x1402cee10]
test rax, rax
je 0x14015cfe0
lea rcx, [0x140142370]
cmp rax, rcx
jne 0x14015cf17
mov r14, qword [rdi + 0x40]
test r14, r14
je 0x14015cf17
mov rcx, r14
call sub.KERNEL32.dll_DeleteCriticalSection
call sub.KERNEL32.dll_GetProcessHeap
mov rcx, rax
xor edx, edx
mov r8, r14
call fcn.14021dfcd
mov rcx, qword [rdi + 0x50]
mov rax, qword [rdi + 0x58]
call qword [rax]
mov rax, qword [rdi + 0x58]
cmp qword [rax + 8], 0
je 0x14015cf73
mov r14, qword [rdi + 0x50]
cmp qword [rax + 0x10], 0x11
jae 0x14015cf60
call sub.KERNEL32.dll_GetProcessHeap
mov rcx, rax
xor edx, edx
mov r8, r14
jmp 0x14015cf6e
call fcn.140142330
lea rcx, [0x140142370]
cmp rax, rcx
je 0x14015cd9c
jmp 0x14015cdbf
call sub.KERNEL32.dll_GetProcessHeap
mov r8, qword [r14 - 8]
mov rcx, rax
xor edx, edx
call fcn.14021dfcd
mov qword [rdi + 0x30], 2
mov rax, qword [rsp + 0x40]
mov qword [rbx + 0x20], rax
movups xmm0, xmmword [rsp + 0x20]
movups xmm1, xmmword [rsp + 0x30]
movups xmmword [rbx + 0x10], xmm1
movups xmmword [rbx], xmm0
mov rax, qword [rdi]
nop dword [rax + rax]
test al, 2
je 0x14015d014
cmp rax, 0x3f
jbe 0x14015cffa
lea rcx, [rax - 0x40]
lock cmpxchg qword [rdi], rcx
jne 0x14015cfa0
xor ebx, ebx
cmp rcx, 0x3f
jbe 0x14015ccd4
jmp 0x14015ccdc
call fcn.140142330
lea rcx, [0x140142370]
cmp rax, rcx
je 0x14015cd23
jmp 0x14015cd46
call fcn.140142330
lea rcx, [0x140142370]
cmp rax, rcx
je 0x14015cef4
jmp 0x14015cf17
lea rcx, str.assertion_failed:_self.ref_count_____0
lea r8, [0x140275e50]
mov edx, 0x26
call fcn.14001f9d0
ud2
lea rcx, str.assertion_failed:_snapshot.is_complete__8r_
lea r8, [0x140275cc8]
mov edx, 0x28
call fcn.14001f9d0
ud2
lea rcx, str.assertion_failed:_prev.is_running__
lea r8, [0x140275c70]
mov edx, 0x23
call fcn.14001f9d0
ud2
lea rcx, str.assertion_failed:__prev.is_complete__
lea r8, [0x140275cb0]
mov edx, 0x25
call fcn.14001f9d0
ud2
lea rcx, str.waker_missing
lea r8, str.C:Usersdarkarp.cargo_registry_srcgithub.com_1ecc6299db9ec823_tokio_1.4.0_src_runtime_taskcore.rsunexpected_stage
mov edx, recv
call fcn.140154a10
ud2