Function at 0x140221c60
Capabilities:
Encode data using xor

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r14
mov rbp, rsp
mov eax, 0x50
call fcn.1402d2bf0
sub rsp, rax
mov rax, qword [0x1403bf008]
xor rax, rsp
mov qword [rbp - 8], rax
mov rsi, qword [rbp + 0x50]
lea eax, [r8 - 1]
mov r10, qword [rbp + 0x60]
mov r14d, r8d
mov rdi, rdx
mov rbx, rcx
cmp eax, 0x7f
ja 0x140222022
movups xmm0, xmmword [rsi]
mov r8, r9
mov rdx, rsi
mov rcx, rsi
movups xmmword [rbp - 0x30], xmm0
call r10
lea eax, [r14 + 7]
cdq
and edx, 7
add eax, edx
sar eax, 3
cmp dword [rbp + 0x58], 0
movsxd r11, eax
mov r9, r11
je 0x140221d0b
test eax, eax
jle 0x140221e4c
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 0x140221cf0
jmp 0x140221e4c
xor r8d, r8d
mov r10d, r8d
test eax, eax
jle 0x140221e04
cmp r11d, 0x10
jb 0x140221e04
lea edx, [r11 - 1]
mov qword [rsp + 0x90], r15
lea eax, [rdx + 0x10]
movsxd rcx, eax
lea r15, [rbp - 0x30]
add r15, rcx
movsxd rax, edx
lea rcx, [rbp - 0x20]
lea rdx, [rax + rsi]
cmp rcx, rdx
ja 0x140221d55
cmp r15, rsi
jae 0x140221dfc
mov qword [rsp + 0x80], r12
lea rcx, [rax + rdi]
lea r12, [rbp - 0x20]
cmp r12, rcx
mov r12, qword [rsp + 0x80]
ja 0x140221d7b
cmp r15, rdi
jae 0x140221dfc
cmp rdi, rdx
ja 0x140221d85
cmp rcx, rsi
jae 0x140221dfc
add rax, rbx
cmp rdi, rax
ja 0x140221d92
cmp rcx, rbx
jae 0x140221dfc
mov eax, r11d
and eax, 0x8000000f
jge 0x140221da3
dec eax
or eax, 0xfffffff0
inc eax
sub r11d, eax
mov rcx, rbx
lea rax, [rbp - 0x20]
movsxd r15, 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, r15
jl 0x140221dd0
mov r15, qword [rsp + 0x90]
movsxd rdx, r10d
cmp rdx, r9
jge 0x140221e4c
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 0x140221e30
mov r11d, r14d
and r11d, 0x80000007
jge 0x140221e62
dec r11d
or r11d, 0xfffffff8
inc r11d
mov eax, r14d
cdq
and edx, 7
add eax, edx
sar eax, 3
movsxd rbx, eax
test r11d, r11d
jne 0x140221e83
movups xmm0, xmmword [rbp + rbx - 0x30]
movups xmmword [rsi], xmm0
jmp 0x140222022
movzx r8d, byte [rbp + rbx - 0x2f]
mov ecx, r11d
movzx r9d, byte [rbp + rbx - 0x2c]
movzx eax, r8b
movzx edx, byte [rbp + rbx - 0x30]
mov r10d, 8
shl dl, cl
sub r10b, r11b
movzx ecx, r10b
shr al, cl
mov ecx, r11d
or dl, al
shl r8b, cl
mov byte [rsi], dl
movzx ecx, r10b
movzx edx, byte [rbp + rbx - 0x2e]
movzx eax, dl
shr al, cl
or r8b, al
mov byte [rsi + 1], r8b
movzx r8d, byte [rbp + rbx - 0x2d]
movzx eax, r8b
shr al, cl
mov ecx, r11d
shl dl, cl
movzx ecx, r10b
or al, dl
movzx edx, byte [rbp + rbx - 0x2b]
mov byte [rsi + 2], al
movzx eax, r9b
shr al, cl
mov ecx, r11d
shl r8b, cl
or al, r8b
shl r9b, cl
movzx r8d, byte [rbp + rbx - 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, r11d
shl dl, cl
or al, dl
shl r8b, cl
movzx edx, byte [rbp + rbx - 0x29]
movzx ecx, r10b
mov byte [rsi + 5], al
movzx eax, dl
shr al, cl
mov ecx, r11d
or r8b, al
shl dl, cl
mov byte [rsi + 6], r8b
movzx ecx, r10b
movzx r8d, byte [rbp + rbx - 0x28]
movzx eax, r8b
mov byte [rsi + 4], r9b
shr al, cl
mov ecx, r11d
or dl, al
shl r8b, cl
mov byte [rsi + 7], dl
movzx ecx, r10b
movzx edx, byte [rbp + rbx - 0x27]
movzx eax, dl
shr al, cl
mov ecx, r11d
or r8b, al
shl dl, cl
movzx ecx, r10b
mov byte [rsi + 8], r8b
movzx r8d, byte [rbp + rbx - 0x26]
movzx eax, r8b
shr al, cl
mov ecx, r11d
or dl, al
mov byte [rsi + 9], dl
movzx edx, byte [rbp + rbx - 0x25]
shl r8b, cl
movzx eax, dl
movzx ecx, r10b
shr al, cl
mov ecx, r11d
or r8b, al
shl dl, cl
mov byte [rsi + 0xa], r8b
movzx ecx, r10b
movzx r8d, byte [rbp + rbx - 0x24]
movzx eax, r8b
shr al, cl
mov ecx, r11d
or dl, al
shl r8b, cl
mov byte [rsi + 0xb], dl
movzx ecx, r10b
movzx edx, byte [rbp + rbx - 0x23]
movzx eax, dl
shr al, cl
mov ecx, r11d
or r8b, al
shl dl, cl
mov byte [rsi + 0xc], r8b
movzx ecx, r10b
movzx r8d, byte [rbp + rbx - 0x22]
movzx eax, r8b
shr al, cl
mov ecx, r11d
or dl, al
shl r8b, cl
movzx ecx, r10b
mov byte [rsi + 0xd], dl
movzx edx, byte [rbp + rbx - 0x21]
movzx eax, dl
shr al, cl
or r8b, al
movzx eax, byte [rbp + rbx - 0x20]
shr al, cl
mov ecx, r11d
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.1400adbc0
add rsp, 0x50
pop r14
pop rdi
pop rsi
pop rbx
pop rbp
ret