Function at 0x14027d3d0
Capabilities:
Encode data using xor

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