Function at 0x14006be80
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push rsi
push rdi
push rbx
sub rsp, 0xc0
mov rsi, rcx
mov rax, qword [rcx]
nop word cs:[rax + rax]
mov rcx, rax
xor rcx, 3
lock cmpxchg qword [rsi], rcx
jne 0x14006bea0
test al, 1
je 0x14006c125
test al, 2
jne 0x14006c13d
test al, 8
jne 0x14006bee2
mov dword [rsp + 0x40], 2
mov rdi, qword [rsi + 0x28]
call fcn.140114f10
test rax, rax
je 0x14006befc
mov r14, qword [rax + 0x30]
mov qword [rax + 0x30], rdi
jmp 0x14006beff
test al, 0x10
je 0x14006bf2a
mov rax, qword [rsi + 0x60]
test rax, rax
je 0x14006c201
mov rcx, qword [rsi + 0x68]
call qword [rax + 0x10]
jmp 0x14006bf2a
xor r14d, r14d
lea rbx, [rsi + 0x30]
mov rcx, rbx
call fcn.14006b4b0
movups xmm0, xmmword [rsp + 0x40]
movups xmm1, xmmword [rsp + 0x50]
movups xmmword [rbx + 0x10], xmm1
movups xmmword [rbx], xmm0
call fcn.140114f10
test rax, rax
je 0x14006bf2a
mov qword [rax + 0x30], r14
mov rax, qword [rsi + 0x70]
test rax, rax
je 0x14006bf52
mov r8, qword [rsi + 0x78]
mov rcx, qword [r8 + 0x10]
dec rcx
and rcx, 0xfffffffffffffff0
add rcx, rax
add rcx, 0x10
lea rdx, [rsp + 0x2f]
call qword [r8 + 0x28]
mov rax, qword [rsi + 0x18]
test rax, rax
je 0x14006c03f
mov rdi, qword [rsi + 0x20]
mov qword [rsp + 0x70], rax
cmp rax, qword [rdi + 0xb0]
jne 0x14006c1d9
mov rax, qword [rsi + 0x10]
mov rax, qword [rax + 0x48]
mov rdx, qword [rdi + 0x88]
mov rcx, qword [rdi + 0xa8]
and rcx, qword [rsi + rax]
lea r8, [rcx + rcx*2]
lea rcx, [rdx + r8*8]
mov bl, 1
xor eax, eax
lock cmpxchg byte [rdx + r8*8], bl
jne 0x14006c0e7
movabs r14, 0x8000000000000001
mov rax, qword [0x1401ba118]
add r14, 0xfffffffffffffffe
test rax, r14
jne 0x14006c0f7
movzx eax, byte [rcx + 1]
mov rax, qword [rsi + 0x10]
mov rax, qword [rax + 0x38]
mov rdx, qword [rsi + rax]
test rdx, rdx
je 0x14006c047
mov r8, qword [rdx + 0x10]
mov r8, qword [r8 + 0x38]
mov rax, qword [rsi + rax + 8]
mov qword [rdx + r8 + 8], rax
mov rax, qword [rsi + 0x10]
mov rax, qword [rax + 0x38]
mov rdx, qword [rsi + rax + 8]
test rdx, rdx
je 0x14006c061
mov r8, qword [rdx + 0x10]
mov r8, qword [r8 + 0x38]
mov rax, qword [rsi + rax]
mov qword [rdx + r8], rax
mov rax, qword [rsi + 0x10]
mov rax, qword [rax + 0x38]
mov qword [rsi + rax + 8], 0
mov rax, qword [rsi + 0x10]
mov rax, qword [rax + 0x38]
mov qword [rsi + rax], 0
lock dec qword [rdi + 0xa0]
mov r15d, 2
jmp 0x14006c06d
mov r15d, 1
jmp 0x14006c08e
mov r15d, 1
cmp qword [rcx + 8], rsi
jne 0x14006c06d
mov rdx, qword [rsi + rax + 8]
mov qword [rcx + 8], rdx
test rdx, rdx
jne 0x14006bffe
mov r15d, 1
cmp qword [rcx + 0x10], rsi
je 0x14006c0da
test bl, bl
je 0x14006c081
mov rax, qword [0x1401ba118]
test rax, r14
jne 0x14006c109
xor eax, eax
xchg byte [rcx], al
cmp al, 2
jne 0x14006c08e
call fcn.1401333b8
mov qword [rsp + 0x30], r15
shl r15d, 6
neg r15
lock xadd qword [rsi], r15
shr r15, 6
cmp r15, qword [rsp + 0x30]
jb 0x14006c155
jne 0x14006c0ca
mov rcx, rsi
call fcn.140069da0
mov r8, qword [rsi - 8]
mov rcx, qword [0x1401ba0e0]
xor edx, edx
call fcn.1401336c4
nop
add rsp, 0xc0
pop rbx
pop rdi
pop rsi
pop r14
pop r15
ret
mov rdx, qword [rsi + rax]
mov qword [rcx + 0x10], rdx
jmp 0x14006c016
mov r14, rcx
call fcn.1400edd30
mov rcx, r14
jmp 0x14006bfa7
mov rbx, rcx
call fcn.1400edde0
mov rcx, rbx
mov ebx, eax
jmp 0x14006bfc5
mov rdi, rcx
call fcn.1400edde0
mov rcx, rdi
test al, al
jne 0x14006c081
mov byte [rcx + 1], 1
jmp 0x14006c081
lea rcx, str.assertion_failed:_prev.is_running__
lea r8, [0x1401729a0]
mov edx, 0x23
call fcn.140018100
lea rcx, str.assertion_failed:__prev.is_complete__
lea r8, [0x1401729e0]
mov edx, 0x25
call fcn.140018100
mov qword [rsp + 0x38], r15
lea rax, [rsp + 0x38]
mov qword [rsp + 0x70], rax
lea rax, [fcn.1400175a0]
mov qword [rsp + 0x78], rax
lea rcx, [rsp + 0x30]
mov qword [rsp + 0x80], rcx
mov qword [rsp + 0x88], rax
lea rax, str.current:___sub:
mov qword [rsp + 0x90], rax
mov qword [rsp + 0x98], 2
mov qword [rsp + 0xb0], 0
lea rax, [rsp + 0x70]
mov qword [rsp + 0xa0], rax
mov qword [rsp + 0xa8], 2
lea rdx, [0x140172a28]
lea rcx, [rsp + 0x90]
call fcn.140017480
mov qword [rsp + 0x90], 0
add rdi, 0xb0
lea rcx, [rsp + 0x70]
lea r8, [rsp + 0x90]
mov rdx, rdi
call fcn.14011bec0
lea rax, str.waker_missing
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x48], 1
mov qword [rsp + 0x50], 8
xorps xmm0, xmm0
movups xmmword [rsp + 0x58], xmm0
lea rdx, str.005ycQaYKbzl4O3p6rmUd75C1BogKW5lnoOZjMtjNUpP2ieYXiD8ISQgeg9ntxMV5jdA0lmi3whVh79rMgqK17tqh3Wbo4nwA3FEF
lea rcx, [rsp + 0x40]
call fcn.140017480
ud2