Function at 0x18008ae40
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x20], r9
mov qword [rsp + 0x18], r8
mov qword [rsp + 8], rcx
push rbp
push rsi
push rdi
push r12
push r14
sub rsp, 0x90
xor ebp, ebp
mov r12, r9
mov r14, r8
mov rsi, rdx
mov rdi, rcx
test rcx, rcx
jne 0x18008ae84
mov eax, 0xffffffaf
add rsp, 0x90
pop r14
pop r12
pop rdi
pop rsi
pop rbp
ret
test rdx, rdx
je 0x18008aecb
test r8, r8
je 0x18008ae70
test r9, r9
je 0x18008ae70
mov rcx, r9
sub r8, r9
nop dword [rax]
mov rdx, qword [rdi + 0x80]
cmp rdx, 0x40
jae 0x18008aecb
movzx eax, byte [r8 + rcx]
inc rcx
inc rbp
xor al, byte [rdx + rdi + 0x40]
mov byte [rcx - 1], al
inc qword [rdi + 0x80]
dec rsi
jne 0x18008aea0
mov qword [rsp + 0x88], rbx
cmp rsi, 0x40
jb 0x18008b07b
mov rax, rbp
mov qword [rsp + 0x80], r13
mov qword [rsp + 0x78], r15
sub rax, rdi
mov r15, r14
mov r14, rsi
sub r15, r9
shr r14, 6
lea rbx, [r9 - 0x40]
add rbx, rax
lea rax, [r15 + 4]
mov qword [rsp + 0x50], r15
mov qword [rsp + 0x28], rax
lea rax, [r15 + 5]
lea r12, [r15 + 2]
mov qword [rsp + 0x48], rax
lea rax, [r15 + 6]
lea r13, [r15 + 3]
mov qword [rsp + 0x38], rax
lea rax, [r15 + 7]
mov qword [rsp + 0x58], rax
imul rax, r14, 0xffffffffffffffc0
add rsi, rax
mov rax, r14
shl rax, 6
mov qword [rsp + 0xc8], rsi
lea rsi, [r15 + 1]
add rbp, rax
mov qword [rsp + 0x60], rbp
lea rbp, [rdi + 0x40]
nop dword [rax + rax]
mov rdx, rbp
mov rcx, rdi
call fcn.18008a8b0
inc dword [rdi + 0x30]
mov rcx, qword [rsp + 0x48]
add rcx, rbx
lea r11, [rbx + r13]
mov r13, qword [rsp + 0x28]
mov qword [rsp + 0x20], rcx
mov rcx, qword [rsp + 0x38]
add r13, rbx
add rcx, rbx
lea r8, [r15 + rbx]
lea r10, [r12 + rbx]
mov r12, qword [rsp + 0x20]
mov qword [rsp + 0x30], rcx
mov rcx, qword [rsp + 0x58]
mov rdi, qword [rsp + 0x30]
add rcx, rbx
mov rax, rbp
lea r9, [rsi + rbx]
mov edx, 8
mov r15, rcx
nop dword [rax]
movzx ecx, byte [rax + r8]
lea rax, [rax + 8]
xor cl, byte [rax - 8]
mov byte [rax + rbx - 8], cl
movzx ecx, byte [rax + r9 - 8]
xor cl, byte [rax - 7]
mov byte [rax + rbx - 7], cl
movzx ecx, byte [rax + r10 - 8]
xor cl, byte [rax - 6]
mov byte [rax + rbx - 6], cl
movzx ecx, byte [rax + r11 - 8]
xor cl, byte [rax - 5]
mov byte [rax + rbx - 5], cl
movzx ecx, byte [r13 + rax - 8]
xor cl, byte [rax - 4]
mov byte [rbx + rax - 4], cl
movzx ecx, byte [r12 + rax - 8]
xor cl, byte [rax - 3]
mov byte [rbx + rax - 3], cl
movzx ecx, byte [rdi + rax - 8]
xor cl, byte [rax - 2]
mov byte [rbx + rax - 2], cl
movzx ecx, byte [r15 + rax - 8]
xor cl, byte [rax - 1]
mov byte [rbx + rax - 1], cl
dec rdx
jne 0x18008afc0
mov r15, qword [rsp + 0x50]
mov rdi, qword [rsp + 0xc0]
add rbx, 0x40
lea r12, [r15 + 2]
lea r13, [r15 + 3]
dec r14
jne 0x18008af60
mov rsi, qword [rsp + 0xc8]
mov rbp, qword [rsp + 0x60]
mov r12, qword [rsp + 0xd8]
mov r14, qword [rsp + 0xd0]
mov r15, qword [rsp + 0x78]
mov r13, qword [rsp + 0x80]
test rsi, rsi
je 0x18008b0cd
lea rbx, [rdi + 0x40]
mov rcx, rdi
mov rdx, rbx
call fcn.18008a8b0
inc dword [rdi + 0x30]
test rsi, rsi
je 0x18008b0c6
sub rbp, rdi
mov rcx, rsi
lea rdx, [r14 + rbp]
lea r8, [r12 + rbp]
nop word [rax + rax]
movzx eax, byte [rdx + rbx - 0x40]
lea rbx, [rbx + 1]
xor al, byte [rbx - 1]
mov byte [r8 + rbx - 0x41], al
dec rcx
jne 0x18008b0b0
mov qword [rdi + 0x80], rsi
xor eax, eax
mov rbx, qword [rsp + 0x88]
add rsp, 0x90
pop r14
pop r12
pop rdi
pop rsi
pop rbp
ret