Function at 0x14008fa30
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x10
mov rdx, qword [rcx]
mov r13, qword [rcx + 8]
cmp r13, 0x20
ja 0x14008fba8
movabs rax, 0x9ae16a3b2f90404f
cmp r13, 0x10
ja 0x14008fb4e
cmp r13, 8
jae 0x14008faa9
cmp r13, 4
jb 0x14008fb02
lea r8, [rax + r13*2]
mov r9d, dword [rdx]
mov eax, dword [rdx + r13 - 4]
shl r9, 3
or r9, r13
xor r9, rax
imul r9, r8
xor rax, r9
shr r9, 0x2f
xor r9, rax
imul r9, r8
mov rax, r9
shr rax, 0x2f
xor rax, r9
jmp 0x14008faed
lea r8, [rax + r13*2]
add rax, qword [rdx]
mov rcx, qword [rdx + r13 - 8]
mov rdx, rcx
rol rdx, 0x1b
imul rdx, r8
add rdx, rax
rol rax, 0x27
add rax, rcx
imul rax, r8
xor rdx, rax
imul rdx, r8
xor rax, rdx
shr rdx, 0x2f
xor rdx, rax
imul rdx, r8
mov rax, rdx
shr rax, 0x2f
xor rax, rdx
imul rax, r8
add rsp, 0x10
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
test r13, r13
je 0x14008faf1
movzx r8d, byte [rdx]
mov r9, r13
shr r9, 1
movzx r9d, byte [rdx + r9]
movzx edx, byte [rdx + r13 - 1]
shl r9d, 8
or r9, r8
shl edx, 2
or rdx, r13
imul r9, rax
movabs rcx, 0xc3a5c85c97cb3127
imul rcx, rdx
xor rcx, r9
mov rdx, rcx
shr rdx, 0x2f
xor rdx, rcx
imul rax, rdx
jmp 0x14008faf1
movabs r10, 0xb492b66fbe98f273
imul r10, qword [rdx]
lea r8, [rax + r13*2]
mov r11, qword [rdx + 8]
mov r9, qword [rdx + r13 - 8]
lea rsi, [r11 + rax]
imul rax, qword [rdx + r13 - 0x10]
rol rsi, 0x2e
imul r9, r8
add rsi, r10
add rsi, r9
add r10, r11
rol r10, 0x15
rol r9, 0x22
add r9, rax
add r9, r10
xor r9, rsi
imul r9, r8
xor rsi, r9
shr r9, 0x2f
xor r9, rsi
jmp 0x14008fa99
mov rsi, qword [rdx]
mov r14, qword [rdx + r13 - 8]
mov r15, qword [rdx + r13 - 0x10]
mov r12, qword [rdx + r13 - 0x20]
mov rax, qword [rdx + r13 - 0x18]
cmp r13, 0x40
jbe 0x14008fdfd
movabs r10, 0x9ddfea08eb382d69
mov rdi, qword [rdx + r13 - 0x28]
mov r8, qword [rdx + r13 - 0x38]
mov rcx, qword [rdx + r13 - 0x30]
lea r9, [r8 + r15]
lea r11, [rcx + r13]
xor r11, rax
imul r11, r10
mov qword [rsp], rsi
mov rsi, rax
xor rsi, r11
shr r11, 0x2f
xor r11, rsi
imul r11, r10
mov rbp, r11
shr rbp, 0x2f
xor rbp, r11
imul rbp, r10
mov r11, qword [rdx + r13 - 0x40]
add r11, r13
add rcx, r8
add rcx, r11
mov rbx, rcx
rol rbx, 0x14
add rbx, r11
lea r8, [r11 + rdi]
add r8, rbp
rol r8, 0x2b
add rbx, r8
movabs r10, 0xb492b66fbe98f273
add r12, r10
add r12, r9
lea r8, [rdi + r14]
add rax, r15
add rax, r12
mov r15, rax
rol r15, 0x14
add r8, r12
add r15, r12
rol r8, 0x2b
add r15, r8
add rax, r14
add rcx, rdi
imul rdi, r10
add rdi, qword [rsp]
dec r13
and r13, 0xffffffffffffffc0
xor r14d, r14d
mov qword [rsp + 8], r13
mov r13, rbp
add rdi, rcx
add rdi, r9
mov r11, qword [rdx + r14 + 8]
mov r12, qword [rdx + r14 + 0x10]
add rdi, r11
rol rdi, 0x1b
add r9, rbx
mov r8, qword [rdx + r14 + 0x30]
mov qword [rsp], r8
add r9, r8
rol r9, 0x16
mov rsi, rdx
movabs rdx, 0xb492b66fbe98f273
imul rdi, rdx
mov r10, r9
imul r10, rdx
mov rbp, rdi
xor rbp, r15
mov r8, qword [rsi + r14 + 0x28]
add rcx, r8
mov r9, rcx
add r9, r10
add r13, rax
imul rbx, rdx
mov r10, qword [rsi + r14 + 0x18]
add rbx, qword [rsi + r14]
add rax, r10
add rax, rbx
add rax, rbp
rol rax, 0x2b
add r11, r12
add r11, rbx
mov rcx, r11
rol rcx, 0x14
add rbx, rcx
add rbx, rax
rol r13, 0x1f
mov rcx, r11
mov rdi, r13
imul rdi, rdx
mov rdx, rsi
add rcx, r10
add r15, rdi
mov r10, qword [rsi + r14 + 0x38]
add r15, qword [rsi + r14 + 0x20]
add r12, r10
add r12, r9
add r12, r15
add r8, qword [rsp]
mov r13, qword [rsp + 8]
add r8, r15
mov rax, r8
rol rax, 0x14
add r15, rax
rol r12, 0x2b
add r15, r12
mov rax, r8
add rax, r10
add r14, 0x40
cmp r13, r14
jne 0x14008fc85
xor rbx, r15
movabs r8, 0x9ddfea08eb382d69
imul rbx, r8
xor r15, rbx
shr rbx, 0x2f
xor rbx, r15
imul rbx, r8
mov rdx, rbx
shr rdx, 0x2f
xor rdx, rbx
imul rdx, r8
add rdx, rdi
xor rcx, rax
imul rcx, r8
xor rax, rcx
shr rcx, 0x2f
xor rcx, rax
imul rcx, r8
mov rax, rcx
shr rax, 0x2f
xor rax, rcx
imul rax, r8
mov rcx, r9
shr rcx, 0x2f
xor rcx, r9
movabs r9, 0xb492b66fbe98f273
imul rcx, r9
add rcx, rbp
add rcx, rax
xor rcx, rdx
imul rcx, r8
xor rdx, rcx
shr rcx, 0x2f
xor rcx, rdx
imul rcx, r8
mov rax, rcx
shr rax, 0x2f
xor rax, rcx
jmp 0x14008faed
movabs r8, 0x9ae16a3b2f90404f
lea rcx, [r8 + r13*2]
imul rsi, r8
imul r8, qword [rdx + 0x10]
mov r11, qword [rdx + 8]
mov rdx, qword [rdx + 0x18]
lea r10, [rdx + rdx*8]
add rsi, r14
mov r9, r12
xor r9, rsi
rol rsi, 0x15
add r8, r10
mov rdx, r8
add r8, rax
add r14, r8
add r8, r11
rol r11, 0x22
imul r15, rcx
add r11, rax
lea r11, [r11 + r11*8]
add r11, rsi
lea rsi, [r9 + r10]
inc rsi
add r9, r10
add rsi, r11
imul rsi, rcx
bswap rsi
rol rdx, 0x16
add rdx, rax
lea rax, [r15 + r9]
inc rax
add rax, rsi
imul rax, rcx
bswap rax
add r14, rdx
add r14, rax
imul r14, rcx
bswap r14
add r8, r14
imul r8, rcx
add r15, r12
add r15, r8
mov rax, r15
shr rax, 0x2f
xor rax, r15
imul rax, rcx
add rax, rdx
jmp 0x14008faf1