Function at 0x1401516ed
Capabilities:
Encode data using xor

Disassembly:
cmp r8d, 0x80
jg 0x14015198f
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
sub rsp, 0x50
mov rax, qword [0x1402581e0]
xor rax, rsp
mov qword [rsp + 0x48], rax
mov rsi, qword [rsp + 0x90]
mov rax, qword [rsp + 0xa0]
mov ebp, r8d
mov rdi, rdx
mov rbx, rcx
mov r8, r9
movups xmm0, xmmword [rsi]
mov rdx, rsi
mov rcx, rsi
movups xmmword [rsp + 0x20], xmm0
call rax
lea eax, [rbp + 7]
cdq
and edx, 7
add eax, edx
sar eax, 3
cmp dword [rsp + 0x98], 0
movsxd r10, eax
mov r9, r10
je 0x140151790
test eax, eax
jle 0x1401518a0
lea r8, [rsp + 0x30]
mov rdx, rsi
sub r8, rbx
sub rdx, rbx
sub rdi, rbx
nop dword [rax]
movzx ecx, byte [rdx + rbx]
movzx eax, byte [rbx]
lea rbx, [rbx + 1]
xor ecx, eax
mov byte [r8 + rbx - 1], cl
mov byte [rdi + rbx - 1], cl
dec r9
jne 0x140151770
jmp 0x1401518a0
xor r8d, r8d
test eax, eax
jle 0x140151851
cmp r10d, 0x10
jb 0x140151851
lea edx, [r10 - 1]
lea r11, [rsp + 0x20]
lea eax, [rdx + 0x10]
movsxd rcx, eax
movsxd rax, edx
add r11, rcx
lea rdx, [rax + rsi]
lea rcx, [rsp + 0x30]
cmp rcx, rdx
ja 0x1401517d1
cmp r11, rsi
jae 0x140151851
mov qword [rsp + 0x70], r14
lea r14, [rsp + 0x30]
lea rcx, [rax + rdi]
cmp r14, rcx
mov r14, qword [rsp + 0x70]
ja 0x1401517ee
cmp r11, rdi
jae 0x140151851
cmp rdi, rdx
ja 0x1401517f8
cmp rcx, rsi
jae 0x140151851
add rax, rbx
cmp rdi, rax
ja 0x140151805
cmp rcx, rbx
jae 0x140151851
mov eax, r10d
and eax, 0x8000000f
jge 0x140151816
dec eax
or eax, 0xfffffff0
inc eax
sub r10d, eax
nop dword [rax]
lea edx, [r8 + 0x10]
lea rcx, [rsp + 0x20]
movsxd rax, edx
add rcx, rax
movsxd rax, r8d
mov r8d, edx
movdqu xmm0, xmmword [rax + rbx]
movdqu xmm1, xmmword [rax + rsi]
pxor xmm1, xmm0
movdqu xmmword [rax + rdi], xmm1
movdqu xmmword [rcx], xmm0
cmp edx, r10d
jl 0x140151820
movsxd r8, r8d
cmp r8, r9
jge 0x1401518a0
lea rax, [rsp + 0x30]
mov r10, rsi
sub rbx, rax
lea rax, [rsp + 0x30]
sub r10, rax
lea rax, [rsp + 0x30]
sub rdi, rax
nop dword [rax]
nop dword [rax + rax]
lea rdx, [rsp + 0x30]
add rdx, r8
inc r8
movzx ecx, byte [rbx + rdx]
movzx eax, byte [rdx + r10]
xor al, cl
mov byte [rdx], cl
mov byte [rdx + rdi], al
cmp r8, r9
jl 0x140151880
mov eax, ebp
cdq
and edx, 7
add eax, edx
mov ecx, eax
and eax, 7
sub eax, edx
sar ecx, 3
mov r11d, eax
test eax, eax
jne 0x1401518c9
movsxd rax, ecx
movups xmm0, xmmword [rsp + rax + 0x20]
movups xmmword [rsi], xmm0
jmp 0x140151973
movsxd rcx, ecx
mov ebx, 8
lea rbp, [rsp + 0x20]
sub ebx, eax
mov rax, rcx
lea r10, [rsp + 0x21]
sub rax, rsi
sub rsi, rcx
add r10, rcx
add rbp, rax
lea rax, [rsp + 0x21]
mov edi, 4
sub rsi, rax
nop dword [rax]
movzx r9d, byte [r10]
lea r8, [rsi + r10]
mov ecx, r11d
movzx edx, byte [r8 + rbp]
movzx eax, r9b
lea r10, [r10 + 4]
shl dl, cl
movzx ecx, bl
shr al, cl
or dl, al
mov byte [r8], dl
movzx r8d, byte [r10 - 3]
movzx edx, byte [r10 - 2]
movzx eax, r8b
shr al, cl
mov ecx, r11d
shl r9b, cl
movzx ecx, bl
or al, r9b
mov byte [rsi + r10 - 3], al
movzx eax, dl
shr al, cl
mov ecx, r11d
shl r8b, cl
movzx ecx, bl
or al, r8b
mov byte [rsi + r10 - 2], al
movzx eax, byte [r10 - 1]
shr al, cl
mov ecx, r11d
shl dl, cl
or al, dl
mov byte [rsi + r10 - 1], al
dec rdi
jne 0x140151900
mov rcx, qword [rsp + 0x48]
xor rcx, rsp
call fcn.1401bddc0
mov rbx, qword [rsp + 0x80]
add rsp, 0x50
pop rdi
pop rsi
pop rbp
ret