Function at 0x1400066c0
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x20], r9
push rbp
push rsi
push rdi
push r12
push r14
sub rsp, 0x20
xor r14d, r14d
mov rbp, r9
mov r12, r8
mov rsi, rdx
mov rdi, rcx
test rdx, rdx
je 0x14000671e
mov rax, qword [rcx + 0x80]
mov rdx, r8
sub rdx, r9
mov rcx, r9
cmp rax, 0x40
jae 0x14000671e
movzx eax, byte [rax + rdi + 0x40]
inc r14
xor al, byte [rdx + rcx]
mov byte [rcx], al
inc rcx
inc qword [rdi + 0x80]
mov rax, qword [rdi + 0x80]
sub rsi, 1
jne 0x1400066f4
mov qword [rsp + 0x50], rbx
cmp rsi, 0x40
jb 0x140006aca
mov qword [rsp + 0x58], r13
mov rbx, r12
mov r13, rsi
mov qword [rsp + 0x60], r15
shr r13, 6
lea r15, [r9 + 1]
imul rax, r13, 0xffffffffffffffc0
add r15, r14
sub rbx, r9
add rsi, rax
mov rax, r13
shl rax, 6
add r14, rax
nop dword [rax]
lea rdx, [rdi + 0x40]
mov rcx, rdi
call fcn.140006570
inc dword [rdi + 0x30]
movzx eax, byte [rbx + r15 - 1]
xor al, byte [rdi + 0x40]
mov byte [r15 - 1], al
movzx eax, byte [rbx + r15]
xor al, byte [rdi + 0x41]
mov byte [r15], al
movzx eax, byte [rbx + r15 + 1]
xor al, byte [rdi + 0x42]
mov byte [r15 + 1], al
movzx eax, byte [rbx + r15 + 2]
xor al, byte [rdi + 0x43]
mov byte [r15 + 2], al
movzx eax, byte [rbx + r15 + 3]
xor al, byte [rdi + 0x44]
mov byte [r15 + 3], al
movzx eax, byte [rbx + r15 + 4]
xor al, byte [rdi + 0x45]
mov byte [r15 + 4], al
movzx eax, byte [r15 + rbx + 5]
xor al, byte [rdi + 0x46]
mov byte [r15 + 5], al
movzx eax, byte [r15 + rbx + 6]
xor al, byte [rdi + 0x47]
mov byte [r15 + 6], al
movzx eax, byte [r15 + rbx + 7]
xor al, byte [rdi + 0x48]
mov byte [r15 + 7], al
movzx eax, byte [r15 + rbx + 8]
xor al, byte [rdi + 0x49]
mov byte [r15 + 8], al
movzx eax, byte [r15 + rbx + 9]
xor al, byte [rdi + 0x4a]
mov byte [r15 + 9], al
movzx eax, byte [r15 + rbx + 0xa]
xor al, byte [rdi + 0x4b]
mov byte [r15 + 0xa], al
movzx eax, byte [r15 + rbx + 0xb]
xor al, byte [rdi + 0x4c]
mov byte [r15 + 0xb], al
movzx eax, byte [r15 + rbx + 0xc]
xor al, byte [rdi + 0x4d]
mov byte [r15 + 0xc], al
movzx eax, byte [r15 + rbx + 0xd]
xor al, byte [rdi + 0x4e]
mov byte [r15 + 0xd], al
movzx eax, byte [r15 + rbx + 0xe]
xor al, byte [rdi + 0x4f]
mov byte [r15 + 0xe], al
movzx eax, byte [r15 + rbx + 0xf]
xor al, byte [rdi + 0x50]
mov byte [r15 + 0xf], al
movzx eax, byte [r15 + rbx + 0x10]
xor al, byte [rdi + 0x51]
mov byte [r15 + 0x10], al
movzx eax, byte [r15 + rbx + 0x11]
xor al, byte [rdi + 0x52]
mov byte [r15 + 0x11], al
movzx eax, byte [r15 + rbx + 0x12]
xor al, byte [rdi + 0x53]
mov byte [r15 + 0x12], al
movzx eax, byte [rbx + r15 + 0x13]
xor al, byte [rdi + 0x54]
mov byte [r15 + 0x13], al
movzx eax, byte [rbx + r15 + 0x14]
xor al, byte [rdi + 0x55]
mov byte [r15 + 0x14], al
movzx eax, byte [rbx + r15 + 0x15]
xor al, byte [rdi + 0x56]
mov byte [r15 + 0x15], al
movzx eax, byte [rbx + r15 + 0x16]
xor al, byte [rdi + 0x57]
mov byte [r15 + 0x16], al
movzx eax, byte [rbx + r15 + 0x17]
xor al, byte [rdi + 0x58]
mov byte [r15 + 0x17], al
movzx eax, byte [rbx + r15 + 0x18]
xor al, byte [rdi + 0x59]
mov byte [r15 + 0x18], al
movzx eax, byte [rbx + r15 + 0x19]
xor al, byte [rdi + 0x5a]
mov byte [r15 + 0x19], al
movzx eax, byte [r15 + rbx + 0x1a]
xor al, byte [rdi + 0x5b]
mov byte [r15 + 0x1a], al
movzx eax, byte [r15 + rbx + 0x1b]
xor al, byte [rdi + 0x5c]
mov byte [r15 + 0x1b], al
movzx eax, byte [r15 + rbx + 0x1c]
xor al, byte [rdi + 0x5d]
mov byte [r15 + 0x1c], al
movzx eax, byte [r15 + rbx + 0x1d]
xor al, byte [rdi + 0x5e]
mov byte [r15 + 0x1d], al
movzx eax, byte [r15 + rbx + 0x1e]
xor al, byte [rdi + 0x5f]
mov byte [r15 + 0x1e], al
movzx eax, byte [r15 + rbx + 0x1f]
xor al, byte [rdi + 0x60]
mov byte [r15 + 0x1f], al
movzx eax, byte [r15 + rbx + 0x20]
xor al, byte [rdi + 0x61]
mov byte [r15 + 0x20], al
movzx eax, byte [r15 + rbx + 0x21]
xor al, byte [rdi + 0x62]
mov byte [r15 + 0x21], al
movzx eax, byte [r15 + rbx + 0x22]
xor al, byte [rdi + 0x63]
mov byte [r15 + 0x22], al
movzx eax, byte [r15 + rbx + 0x23]
xor al, byte [rdi + 0x64]
mov byte [r15 + 0x23], al
movzx eax, byte [r15 + rbx + 0x24]
xor al, byte [rdi + 0x65]
mov byte [r15 + 0x24], al
movzx eax, byte [rbx + r15 + 0x25]
xor al, byte [rdi + 0x66]
mov byte [r15 + 0x25], al
movzx eax, byte [rbx + r15 + 0x26]
xor al, byte [rdi + 0x67]
mov byte [r15 + 0x26], al
movzx eax, byte [rbx + r15 + 0x27]
xor al, byte [rdi + 0x68]
mov byte [r15 + 0x27], al
movzx eax, byte [rbx + r15 + 0x28]
xor al, byte [rdi + 0x69]
mov byte [r15 + 0x28], al
movzx eax, byte [rbx + r15 + 0x29]
xor al, byte [rdi + 0x6a]
mov byte [r15 + 0x29], al
movzx eax, byte [rbx + r15 + 0x2a]
xor al, byte [rdi + 0x6b]
mov byte [r15 + 0x2a], al
movzx eax, byte [rbx + r15 + 0x2b]
xor al, byte [rdi + 0x6c]
mov byte [r15 + 0x2b], al
movzx eax, byte [rbx + r15 + 0x2c]
xor al, byte [rdi + 0x6d]
mov byte [r15 + 0x2c], al
movzx eax, byte [rbx + r15 + 0x2d]
xor al, byte [rdi + 0x6e]
mov byte [r15 + 0x2d], al
movzx eax, byte [rbx + r15 + 0x2e]
xor al, byte [rdi + 0x6f]
mov byte [r15 + 0x2e], al
movzx eax, byte [rbx + r15 + 0x2f]
xor al, byte [rdi + 0x70]
mov byte [r15 + 0x2f], al
movzx eax, byte [r15 + rbx + 0x30]
xor al, byte [rdi + 0x71]
mov byte [r15 + 0x30], al
movzx eax, byte [r15 + rbx + 0x31]
xor al, byte [rdi + 0x72]
mov byte [r15 + 0x31], al
movzx eax, byte [r15 + rbx + 0x32]
xor al, byte [rdi + 0x73]
mov byte [r15 + 0x32], al
movzx eax, byte [r15 + rbx + 0x33]
xor al, byte [rdi + 0x74]
mov byte [r15 + 0x33], al
movzx eax, byte [r15 + rbx + 0x34]
lea r15, [r15 + 0x40]
xor al, byte [rdi + 0x75]
mov byte [r15 - 0xc], al
movzx eax, byte [r15 + rbx - 0xb]
xor al, byte [rdi + 0x76]
mov byte [r15 - 0xb], al
movzx eax, byte [r15 + rbx - 0xa]
xor al, byte [rdi + 0x77]
mov byte [r15 - 0xa], al
movzx eax, byte [r15 + rbx - 9]
xor al, byte [rdi + 0x78]
mov byte [r15 - 9], al
movzx eax, byte [r15 + rbx - 8]
xor al, byte [rdi + 0x79]
mov byte [r15 - 8], al
movzx eax, byte [r15 + rbx - 7]
xor al, byte [rdi + 0x7a]
mov byte [r15 - 7], al
movzx eax, byte [rbx + r15 - 6]
xor al, byte [rdi + 0x7b]
mov byte [r15 - 6], al
movzx eax, byte [rbx + r15 - 5]
xor al, byte [rdi + 0x7c]
mov byte [r15 - 5], al
movzx eax, byte [rbx + r15 - 4]
xor al, byte [rdi + 0x7d]
mov byte [r15 - 4], al
movzx eax, byte [rbx + r15 - 3]
xor al, byte [rdi + 0x7e]
mov byte [r15 - 3], al
movzx eax, byte [rbx + r15 - 2]
xor al, byte [rdi + 0x7f]
mov byte [r15 - 2], al
sub r13, 1
jne 0x140006760
mov rbp, qword [rsp + 0x68]
mov r15, qword [rsp + 0x60]
mov r13, qword [rsp + 0x58]
test rsi, rsi
je 0x140006af9
lea rdx, [rdi + 0x40]
mov rcx, rdi
call fcn.140006570
inc dword [rdi + 0x30]
lea rdx, [r14 + r12]
lea rcx, [r14 + rbp]
mov r9, rsi
lea r8, [rdi + 0x40]
call fcn.1400023c0
mov qword [rdi + 0x80], rsi
mov rbx, qword [rsp + 0x50]
xor eax, eax
add rsp, 0x20
pop r14
pop r12
pop rdi
pop rsi
pop rbp
ret