Function at 0x14008f610
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x48
mov rdi, rdx
mov rbp, rcx
movzx eax, byte [r8 + 0x17]
mov ecx, eax
and ecx, 0x7f
test al, al
mov rax, qword [r8]
cmovns rax, r8
cmovs rcx, qword [r8 + 8]
cmp rcx, 0x20
ja 0x14008f702
cmp rcx, 0x10
jbe 0x14008f7df
movabs r11, 0xb492b66fbe98f273
imul r11, qword [rax]
mov r9, qword [rax + 8]
movabs rdx, 0x9ae16a3b2f90404f
imul rdx, qword [rax + rcx - 8]
movabs r10, 0xc3a5c85c97cb3127
imul r10, qword [rax + rcx - 0x10]
movabs rax, 0xc949d7c7509e6557
xor rax, r9
rol rax, 0x2c
add rcx, r11
add rcx, rax
sub r11, r9
rol r11, 0x15
sub rcx, rdx
rol rdx, 0x22
add rdx, r10
add rdx, r11
xor rdx, rcx
movabs rax, 0x9ddfea08eb382d69
imul rdx, rax
xor rcx, rdx
shr rdx, 0x2f
xor rdx, rcx
imul rdx, rax
mov r14, rdx
shr r14, 0x2f
xor r14, rdx
imul r14, rax
mov r12, qword [rbp + 8]
test r12, r12
jne 0x14008f888
xor ebp, ebp
mov qword [rdi], rbp
mov rax, rdi
add rsp, 0x48
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov qword [rsp + 0x28], rdi
cmp rcx, 0x40
ja 0x14008f9ca
mov r13, qword [rax + 0x10]
mov r11, qword [rax + 0x18]
mov rdi, qword [rax + rcx - 0x10]
lea r9, [rdi + rcx]
movabs rdx, 0xc3a5c85c97cb3127
imul r9, rdx
add r9, qword [rax]
lea r10, [r9 + r11]
mov r14, r9
add r9, qword [rax + 8]
mov rsi, r9
add r9, r13
add r13, qword [rax + rcx - 0x20]
mov rbx, qword [rax + rcx - 8]
add rbx, r11
lea r15, [rbx + r13]
mov r12, r13
add r13, qword [rax + rcx - 0x18]
rol r10, 0xc
rol r14, 0x1b
rol rsi, 0x39
rol r15, 0xc
rol r12, 0x1b
add rsi, r14
mov rax, r13
rol rax, 0x39
add r13, rdi
add rbx, r13
rol r13, 0x21
add r12, r11
add r12, rax
add r12, r15
add r12, r13
add r12, r9
rol r9, 0x21
add rsi, r10
add r9, rsi
movabs rax, 0x9ae16a3b2f90404f
imul r12, rax
add rbx, r9
imul rbx, rdx
add rbx, r12
mov rcx, rbx
shr rcx, 0x2f
xor rcx, rbx
imul rcx, rdx
add rcx, r9
mov r14, rcx
shr r14, 0x2f
xor r14, rcx
imul r14, rax
mov rdi, qword [rsp + 0x28]
jmp 0x14008f6dc
cmp rcx, 9
jae 0x14008f844
cmp rcx, 4
jae 0x14008f967
movabs r14, 0x9ae16a3b2f90404f
test rcx, rcx
je 0x14008f6dc
movzx edx, byte [rax]
mov r9, rcx
shr r9, 1
movzx r9d, byte [rax + r9]
movzx eax, byte [rcx + rax - 1]
shl r9, 8
or r9, rdx
lea rax, [rcx + rax*4]
imul r9, r14
movabs rcx, 0xc949d7c7509e6557
imul rcx, rax
xor rcx, r9
mov rax, rcx
shr rax, 0x2f
xor rax, rcx
jmp 0x14008f6d8
mov rdx, qword [rax + rcx - 8]
lea r9, [rdx + rcx]
ror r9, cl
mov rax, qword [rax]
xor rax, r9
movabs rcx, 0x9ddfea08eb382d69
imul rax, rcx
xor r9, rax
shr rax, 0x2f
xor rax, r9
imul rax, rcx
mov r14, rax
shr r14, 0x2f
xor r14, rax
imul r14, rcx
xor r14, rdx
jmp 0x14008f6dc
mov rax, r12
shr rax, 1
movabs rcx, 0x5555555555555555
and rcx, rax
mov rax, r12
sub rax, rcx
movabs rcx, 0x3333333333333333
mov rdx, rax
and rdx, rcx
shr rax, 2
and rax, rcx
add rax, rdx
mov rcx, rax
shr rcx, 4
add rcx, rax
movabs rax, 0xf0f0f0f0f0f0f0f
and rax, rcx
movabs r13, 0x101010101010101
imul r13, rax
shr r13, 0x38
cmp r13, 1
jbe 0x14008fc37
mov r15, r14
cmp r14, r12
jb 0x14008f901
mov rax, r14
xor edx, edx
div r12
mov r15, rdx
mov rax, qword [rbp]
mov rax, qword [rax + r15*8]
test rax, rax
je 0x14008f6e9
mov rbx, qword [rax]
test rbx, rbx
je 0x14008f6e9
mov qword [rsp + 0x30], r8
lea rcx, [r12 - 1]
add rbp, 0x24
mov rsi, rbp
xor ebp, ebp
mov rax, qword [rbx + 8]
cmp r14, rax
je 0x14008f9a3
cmp r13d, 1
jbe 0x14008fc2f
cmp rax, r12
jb 0x14008f951
xor edx, edx
div r12
mov rax, rdx
cmp rax, r15
jne 0x14008f6eb
mov rbx, qword [rbx]
test rbx, rbx
jne 0x14008f931
jmp 0x14008f6eb
mov edx, dword [rax]
mov eax, dword [rax + rcx - 4]
lea rcx, [rcx + rdx*8]
xor rcx, rax
movabs rdx, 0x9ddfea08eb382d69
imul rcx, rdx
xor rax, rcx
shr rcx, 0x2f
xor rcx, rax
imul rcx, rdx
mov r14, rcx
shr r14, 0x2f
xor r14, rcx
imul r14, rdx
jmp 0x14008f6dc
lea rdx, [rbx + 0x10]
mov qword [rsp + 0x28], rcx
mov rcx, rsi
mov r8, qword [rsp + 0x30]
call fcn.14003aea0
mov rcx, qword [rsp + 0x28]
test al, al
je 0x14008f95a
mov rbp, rbx
jmp 0x14008f6eb
mov qword [rsp + 0x38], rbp
mov qword [rsp + 0x30], r8
movabs rbx, 0xb492b66fbe98f273
movabs rdi, 0x9ddfea08eb382d69
mov r15, qword [rax + rcx - 0x28]
mov rdx, qword [rax + rcx - 0x10]
mov r8, qword [rax + rcx - 0x38]
mov r10, qword [rax + rcx - 0x30]
lea r9, [r8 + rdx]
mov r14, qword [rax + rcx - 0x18]
lea rsi, [r10 + rcx]
xor rsi, r14
imul rsi, rdi
mov r11, r14
xor r11, rsi
shr rsi, 0x2f
xor rsi, r11
imul rsi, rdi
mov r11, rsi
shr r11, 0x2f
xor r11, rsi
imul r11, rdi
mov rsi, qword [rax + rcx - 0x40]
add rsi, rcx
lea rdi, [rsi + r15]
add rdi, r11
rol rdi, 0x2b
add r10, r8
add r10, rsi
mov r12, r10
rol r12, 0x14
add r12, rsi
add r12, rdi
add r10, r15
mov r8, qword [rax + rcx - 0x20]
add r8, r9
mov rsi, qword [rax + rcx - 8]
add r8, rbx
lea rdi, [rsi + r15]
add rdi, r8
rol rdi, 0x2b
add r14, rdx
add r14, r8
mov r13, r14
rol r13, 0x14
add r13, r8
add r13, rdi
imul r15, rbx
add r15, qword [rax]
add r14, rsi
dec rcx
and rcx, 0xffffffffffffffc0
xor ebp, ebp
mov rbx, r11
add r15, r10
add r15, r9
mov rdi, qword [rax + rbp + 8]
mov r8, qword [rax + rbp + 0x10]
add r15, rdi
rol r15, 0x1b
add r9, r12
mov rdx, qword [rax + rbp + 0x30]
mov qword [rsp + 0x40], rdx
add r9, rdx
rol r9, 0x16
movabs r11, 0xb492b66fbe98f273
imul r15, r11
mov rdx, r9
imul rdx, r11
mov r11, r15
xor r11, r13
mov rsi, qword [rax + rbp + 0x28]
add r10, rsi
mov r9, r10
add r9, rdx
add rbx, r14
movabs rdx, 0xb492b66fbe98f273
imul r12, rdx
mov rdx, qword [rax + rbp + 0x18]
add r12, qword [rax + rbp]
add r14, rdx
add r14, r12
add r14, r11
rol r14, 0x2b
add rdi, r8
add rdi, r12
mov r10, rdi
rol r10, 0x14
add r12, r10
add r12, r14
rol rbx, 0x1f
mov r10, rdi
mov r15, rbx
movabs rdi, 0xb492b66fbe98f273
imul r15, rdi
add r10, rdx
add r13, r15
mov rdx, qword [rax + rbp + 0x38]
add r13, qword [rax + rbp + 0x20]
add r8, rdx
add r8, r9
add r8, r13
add rsi, qword [rsp + 0x40]
add rsi, r13
mov rdi, rsi
rol rdi, 0x14
add r13, rdi
rol r8, 0x2b
add r13, r8
mov r14, rsi
add r14, rdx
add rbp, 0x40
cmp rcx, rbp
jne 0x14008fa99
xor r12, r13
movabs r8, 0x9ddfea08eb382d69
imul r12, r8
xor r13, r12
shr r12, 0x2f
xor r12, r13
imul r12, r8
mov rax, r12
shr rax, 0x2f
xor rax, r12
imul rax, r8
add rax, r15
xor r10, r14
imul r10, r8
xor r14, r10
shr r10, 0x2f
xor r10, r14
imul r10, r8
mov rcx, r10
shr rcx, 0x2f
xor rcx, r10
imul rcx, r8
mov rdx, r9
shr rdx, 0x2f
xor rdx, r9
movabs r9, 0xb492b66fbe98f273
imul rdx, r9
add rdx, r11
add rdx, rcx
xor rdx, rax
imul rdx, r8
xor rax, rdx
shr rdx, 0x2f
xor rdx, rax
imul rdx, r8
mov r14, rdx
shr r14, 0x2f
xor r14, rdx
imul r14, r8
mov rdi, qword [rsp + 0x28]
mov r8, qword [rsp + 0x30]
mov rbp, qword [rsp + 0x38]
jmp 0x14008f6dc
and rax, rcx
jmp 0x14008f951
lea r15, [r12 - 1]
and r15, r14
jmp 0x14008f901