Function at 0x14001b660
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push rsi
push rdi
push rbx
sub rsp, 0x20
mov rbx, r9
mov r14, r8
mov r15, rdx
mov rdi, rcx
cmp qword [rcx + 0x10], r8
jae 0x14001b6d6
mov rcx, rdi
mov rdx, r15
call fcn.140015e70
mov rcx, rdi
mov rdx, r15
mov r8, r14
mov r9, rbx
call fcn.140015eb0
mov rax, qword [rdi + 8]
lea r8, [r15 + rax]
add r8, 8
mov rcx, rdi
mov rdx, r15
call qword [rdi + 0x38]
mov r14, qword [rdi]
test r14, r14
je 0x14001b700
lea rcx, [r14 - 1]
mov eax, r14d
and eax, 3
cmp rcx, 3
jae 0x14001b708
xor ecx, ecx
test rax, rax
jne 0x14001b75d
jmp 0x14001b819
test r14, r14
je 0x14001b700
lea rcx, [r14 - 1]
mov r8d, r14d
and r8d, 3
cmp rcx, 3
jae 0x14001b787
xor ecx, ecx
test r8, r8
jne 0x14001b7e5
jmp 0x14001b819
xor r14d, r14d
jmp 0x14001b819
mov rdx, rax
sub rdx, r14
xor ecx, ecx
mov rsi, r15
nop word cs:[rax + rax]
nop dword [rax]
mov rbx, qword [rdi + 8]
xor byte [rbx + rsi + 8], 0x5c
mov rbx, qword [rdi + 8]
xor byte [rbx + rsi + 9], 0x5c
mov rbx, qword [rdi + 8]
xor byte [rbx + rsi + 0xa], 0x5c
mov rbx, qword [rdi + 8]
xor byte [rbx + rsi + 0xb], 0x5c
add rsi, 4
add rcx, 0xfffffffffffffffc
cmp rdx, rcx
jne 0x14001b720
neg rcx
test rax, rax
je 0x14001b819
add rcx, r15
add rcx, 8
nop word cs:[rax + rax]
nop
mov rdx, qword [rdi + 8]
xor byte [rcx + rdx], 0x5c
add rcx, 1
add rax, 0xffffffffffffffff
jne 0x14001b770
jmp 0x14001b819
mov rdx, r14
sub rdx, r8
xor ecx, ecx
nop
movzx eax, byte [rbx + rcx]
xor al, 0x5c
mov rsi, qword [rdi + 8]
add rsi, r15
mov byte [rcx + rsi + 8], al
movzx eax, byte [rbx + rcx + 1]
xor al, 0x5c
mov rsi, qword [rdi + 8]
add rsi, r15
mov byte [rcx + rsi + 9], al
movzx eax, byte [rbx + rcx + 2]
xor al, 0x5c
mov rsi, qword [rdi + 8]
add rsi, r15
mov byte [rcx + rsi + 0xa], al
movzx eax, byte [rbx + rcx + 3]
xor al, 0x5c
mov rsi, qword [rdi + 8]
add rsi, r15
mov byte [rcx + rsi + 0xb], al
add rcx, 4
cmp rdx, rcx
jne 0x14001b790
test r8, r8
je 0x14001b819
lea rdx, [r15 + rcx]
add rdx, 8
add rbx, rcx
xor ecx, ecx
nop word cs:[rax + rax]
nop dword [rax]
movzx eax, byte [rbx + rcx]
xor al, 0x5c
mov rsi, qword [rdi + 8]
add rsi, rdx
mov byte [rcx + rsi], al
add rcx, 1
cmp r8, rcx
jne 0x14001b800
mov rax, qword [rdi + 0x10]
mov r8, rax
sub r8, r14
jbe 0x14001b83f
mov rax, qword [rdi + 8]
add rax, r15
lea rcx, [r14 + rax]
add rcx, 8
mov dl, 0x5c
call sub.VCRUNTIME140.dll_memset
mov rax, qword [rdi + 0x10]
mov r8, qword [rdi + 8]
mov rdx, qword [rdi + 0x28]
lea rcx, [r8 + rax]
add rcx, 0x1b
and rcx, 0xfffffffffffffff0
add rcx, r15
call sub.VCRUNTIME140.dll_memcpy
mov rax, qword [rdi + 8]
mov rcx, qword [rdi + 0x10]
lea r8, [r15 + rax]
add r8, 8
add rcx, rax
add rcx, 0x1b
and rcx, 0xfffffffffffffff0
add rcx, r15
mov edx, 1
call qword [rdi + 0x30]
cmp qword [rdi + 0x10], 0
je 0x14001b8a5
lea rax, [r15 + 8]
xor ecx, ecx
nop
mov rdx, qword [rdi + 8]
add rdx, rax
xor byte [rcx + rdx], 0x6a
add rcx, 1
cmp rcx, qword [rdi + 0x10]
jb 0x14001b890
lea rbx, [r15 + 8]
mov r8, qword [rdi + 8]
mov rdx, qword [rdi + 0x28]
mov rcx, rbx
call sub.VCRUNTIME140.dll_memcpy
mov rax, qword [rdi + 8]
lea r8, [r15 + rax]
add r8, 8
mov edx, 1
mov rcx, rbx
call qword [rdi + 0x30]
mov rax, qword [rdi + 8]
add rax, r15
mov rcx, qword [rdi + 0x10]
mov dword [rcx + rax + 8], 0
mov rax, qword [rdi + 0x10]
shl rax, 3
mov qword [r15], rax
add rsp, 0x20
pop rbx
pop rdi
pop rsi
pop r14
pop r15
ret