Function at 0x140166930
Capabilities:
Encode data using xor

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r15
mov rbp, rsp
mov eax, 0x50
call fcn.1402b4f90
sub rsp, rax
mov rax, qword [0x1403c37a8]
xor rax, rsp
mov qword [rbp - 8], rax
mov rsi, qword [rbp + 0x50]
lea eax, [r8 - 1]
mov r10, qword [rbp + 0x60]
mov r15d, r8d
mov rdi, rdx
mov rbx, rcx
cmp eax, 0x7f
ja 0x140166ce0
movups xmm0, xmmword [rsi]
mov r8, r9
mov rdx, rsi
mov rcx, rsi
movups xmmword [rbp - 0x30], xmm0
call r10
lea eax, [r15 + 7]
cdq
and edx, 7
add eax, edx
sar eax, 3
cmp dword [rbp + 0x58], 0
movsxd r11, eax
mov r9, r11
je 0x1401669db
test eax, eax
jle 0x140166b1c
mov rcx, rsi
lea rdx, [rbp - 0x20]
sub rcx, rbx
sub rdx, rbx
sub rdi, rbx
nop word [rax + rax]
movzx eax, byte [rcx + rbx]
xor al, byte [rbx]
mov byte [rdx + rbx], al
mov byte [rdi + rbx], al
lea rbx, [rbx + 1]
sub r9, 1
jne 0x1401669c0
jmp 0x140166b1c
xor r8d, r8d
mov r10d, r8d
test eax, eax
jle 0x140166ad4
cmp r11d, 0x10
jb 0x140166ad4
lea edx, [r11 - 1]
mov qword [rsp + 0x90], r14
lea eax, [rdx + 0x10]
movsxd rcx, eax
lea r14, [rbp - 0x30]
add r14, rcx
movsxd rax, edx
lea rcx, [rbp - 0x20]
lea rdx, [rax + rsi]
cmp rcx, rdx
ja 0x140166a25
cmp r14, rsi
jae 0x140166acc
mov qword [rsp + 0x80], r12
lea rcx, [rax + rdi]
lea r12, [rbp - 0x20]
cmp r12, rcx
mov r12, qword [rsp + 0x80]
ja 0x140166a4b
cmp r14, rdi
jae 0x140166acc
cmp rdi, rdx
ja 0x140166a55
cmp rcx, rsi
jae 0x140166acc
add rax, rbx
cmp rdi, rax
ja 0x140166a62
cmp rcx, rbx
jae 0x140166acc
mov eax, r11d
and eax, 0x8000000f
jge 0x140166a73
dec eax
or eax, 0xfffffff0
inc eax
sub r11d, eax
mov rcx, rbx
lea rax, [rbp - 0x20]
movsxd r14, r11d
sub rcx, rax
mov rdx, rsi
lea rax, [rbp - 0x20]
mov r11, rdi
sub rdx, rax
lea rax, [rbp - 0x20]
sub r11, rax
nop word [rax + rax]
lea rax, [rbp - 0x20]
add r10d, 0x10
add rax, r8
add r8, 0x10
movdqu xmm1, xmmword [rax + rcx]
movdqu xmm0, xmmword [rax + rdx]
movdqu xmmword [rax], xmm1
pxor xmm0, xmm1
movdqu xmmword [rax + r11], xmm0
cmp r8, r14
jl 0x140166aa0
mov r14, qword [rsp + 0x90]
movsxd rdx, r10d
cmp rdx, r9
jge 0x140166b1c
lea rax, [rbp - 0x20]
mov r8, rsi
sub rbx, rax
lea rax, [rbp - 0x20]
sub r8, rax
lea rax, [rbp - 0x20]
sub rdi, rax
nop dword [rax]
nop dword [rax + rax]
lea rcx, [rbp - 0x20]
add rcx, rdx
inc rdx
movzx eax, byte [rcx + rbx]
mov byte [rcx], al
xor al, byte [rcx + r8]
mov byte [rcx + rdi], al
cmp rdx, r9
jl 0x140166b00
mov eax, r15d
cdq
and edx, 7
add eax, edx
mov ecx, eax
and eax, 7
sub eax, edx
sar ecx, 3
movsxd r11, ecx
mov ebx, eax
test eax, eax
jne 0x140166b46
movups xmm0, xmmword [rbp + r11 - 0x30]
movups xmmword [rsi], xmm0
jmp 0x140166ce0
movzx r8d, byte [rbp + r11 - 0x2f]
mov ecx, ebx
movzx r9d, byte [rbp + r11 - 0x2c]
movzx eax, r8b
movzx edx, byte [rbp + r11 - 0x30]
mov r10d, 8
shl dl, cl
sub r10b, bl
movzx ecx, r10b
shr al, cl
mov ecx, ebx
or dl, al
shl r8b, cl
mov byte [rsi], dl
movzx ecx, r10b
movzx edx, byte [rbp + r11 - 0x2e]
movzx eax, dl
shr al, cl
or r8b, al
mov byte [rsi + 1], r8b
movzx r8d, byte [rbp + r11 - 0x2d]
movzx eax, r8b
shr al, cl
mov ecx, ebx
shl dl, cl
movzx ecx, r10b
or al, dl
movzx edx, byte [rbp + r11 - 0x2b]
mov byte [rsi + 2], al
movzx eax, r9b
shr al, cl
mov ecx, ebx
shl r8b, cl
or al, r8b
shl r9b, cl
movzx r8d, byte [rbp + r11 - 0x2a]
movzx ecx, r10b
mov byte [rsi + 3], al
movzx eax, dl
shr al, cl
or r9b, al
movzx eax, r8b
shr al, cl
mov ecx, ebx
shl dl, cl
or al, dl
shl r8b, cl
movzx edx, byte [rbp + r11 - 0x29]
movzx ecx, r10b
mov byte [rsi + 5], al
movzx eax, dl
shr al, cl
mov ecx, ebx
or r8b, al
shl dl, cl
mov byte [rsi + 6], r8b
movzx ecx, r10b
movzx r8d, byte [rbp + r11 - 0x28]
movzx eax, r8b
mov byte [rsi + 4], r9b
shr al, cl
mov ecx, ebx
or dl, al
shl r8b, cl
mov byte [rsi + 7], dl
movzx ecx, r10b
movzx edx, byte [rbp + r11 - 0x27]
movzx eax, dl
shr al, cl
mov ecx, ebx
or r8b, al
shl dl, cl
movzx ecx, r10b
mov byte [rsi + 8], r8b
movzx r8d, byte [rbp + r11 - 0x26]
movzx eax, r8b
shr al, cl
mov ecx, ebx
or dl, al
mov byte [rsi + 9], dl
movzx edx, byte [rbp + r11 - 0x25]
shl r8b, cl
movzx eax, dl
movzx ecx, r10b
shr al, cl
mov ecx, ebx
or r8b, al
shl dl, cl
mov byte [rsi + 0xa], r8b
movzx ecx, r10b
movzx r8d, byte [rbp + r11 - 0x24]
movzx eax, r8b
shr al, cl
mov ecx, ebx
or dl, al
shl r8b, cl
mov byte [rsi + 0xb], dl
movzx ecx, r10b
movzx edx, byte [rbp + r11 - 0x23]
movzx eax, dl
shr al, cl
mov ecx, ebx
or r8b, al
shl dl, cl
mov byte [rsi + 0xc], r8b
movzx ecx, r10b
movzx r8d, byte [rbp + r11 - 0x22]
movzx eax, r8b
shr al, cl
mov ecx, ebx
or dl, al
shl r8b, cl
movzx ecx, r10b
mov byte [rsi + 0xd], dl
movzx edx, byte [rbp + r11 - 0x21]
movzx eax, dl
shr al, cl
or r8b, al
movzx eax, byte [rbp + r11 - 0x20]
shr al, cl
mov ecx, ebx
shl dl, cl
or al, dl
mov byte [rsi + 0xe], r8b
mov byte [rsi + 0xf], al
mov rcx, qword [rbp - 8]
xor rcx, rsp
call fcn.1402b4ff0
add rsp, 0x50
pop r15
pop rdi
pop rsi
pop rbx
pop rbp
ret