Function at 0x140021e30
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
push rax
cmp rcx, 0x20
ja 0x140021eba
movabs rax, 0x9ae16a3b2f90404f
cmp rcx, 0x10
ja 0x140021f87
cmp rcx, 8
jb 0x140021fef
lea r8, [rax + rcx*2]
add rax, qword [rdx]
mov rcx, qword [rdx + rcx - 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, 8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
cmp rcx, 0x40
ja 0x14002202b
movabs rax, 0x9ae16a3b2f90404f
lea r8, [rax + rcx*2]
mov r10, qword [rdx]
imul r10, rax
mov r9, qword [rdx + rcx - 0x20]
mov r11, qword [rdx + rcx - 0x18]
imul rax, qword [rdx + 0x10]
mov rbx, qword [rdx + 8]
mov rsi, qword [rdx + 0x18]
lea rdi, [rsi + rsi*8]
mov rsi, qword [rdx + rcx - 8]
mov rcx, qword [rdx + rcx - 0x10]
imul rcx, r8
add r10, rsi
mov rdx, r10
rol rdx, 0x15
add rax, rdi
mov r14, rax
add rax, r11
add rsi, rax
add rax, rbx
rol rbx, 0x22
add rbx, r11
lea rbx, [rbx + rbx*8]
add rbx, rdx
xor r10, r9
lea rdx, [rdi + r10]
add r10, rdi
inc r10
add r10, rbx
imul r10, r8
bswap r10
rol r14, 0x16
add r14, r11
add rdx, rcx
inc rdx
add rdx, r10
imul rdx, r8
bswap rdx
add rsi, r14
add rsi, rdx
imul rsi, r8
bswap rsi
add rax, rsi
imul rax, r8
add rcx, r9
add rcx, rax
mov rax, rcx
shr rax, 0x2f
xor rax, rcx
imul rax, r8
add rax, r14
jmp 0x140021ea9
movabs r10, 0xb492b66fbe98f273
imul r10, qword [rdx]
lea r8, [rax + rcx*2]
mov r11, qword [rdx + 8]
mov r9, qword [rdx + rcx - 8]
lea rsi, [r11 + rax]
imul rax, qword [rdx + rcx - 0x10]
rol rsi, 0x2e
imul r9, r8
add rsi, r10
add rsi, r9
add r10, r11
rol r10, 0x15
rol r9, 0x22
add r9, r10
add r9, rax
xor r9, rsi
imul r9, r8
xor rsi, r9
shr r9, 0x2f
xor r9, rsi
imul r9, r8
mov rax, r9
shr rax, 0x2f
xor rax, r9
jmp 0x140021ea5
cmp rcx, 4
jb 0x140022276
lea r8, [rax + rcx*2]
mov eax, dword [rdx]
mov edx, dword [rdx + rcx - 4]
lea rcx, [rcx + rax*8]
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 0x140021ea5
movabs r13, 0xb492b66fbe98f273
movabs r14, 0x9ddfea08eb382d69
mov rdi, qword [rdx + rcx - 0x28]
mov r8, qword [rdx + rcx - 0x10]
mov rax, qword [rdx + rcx - 0x38]
mov r10, qword [rdx + rcx - 0x30]
lea r9, [rax + r8]
mov rsi, qword [rdx + rcx - 0x18]
lea rbx, [r10 + rcx]
xor rbx, rsi
imul rbx, r14
mov r11, rsi
xor r11, rbx
shr rbx, 0x2f
xor rbx, r11
imul rbx, r14
mov rbp, rbx
shr rbp, 0x2f
xor rbp, rbx
imul rbp, r14
mov r14, qword [rdx + rcx - 0x40]
add r14, rcx
lea r15, [r14 + rdi]
add r15, rbp
rol r15, 0x2b
add rax, r10
add rax, r14
mov rbx, rax
rol rbx, 0x14
add rbx, r14
add rbx, r15
add rax, rdi
mov r10, qword [rdx + rcx - 0x20]
add r10, r9
mov r15, qword [rdx + rcx - 8]
add r10, r13
lea r12, [r15 + rdi]
add r12, r10
rol r12, 0x2b
add rsi, r8
add rsi, r10
mov r14, rsi
rol r14, 0x14
add r14, r10
add r14, r12
imul rdi, r13
add rdi, qword [rdx]
add rsi, r15
dec rcx
and rcx, 0xffffffffffffffc0
xor r15d, r15d
mov r13, rbp
add rdi, rax
add rdi, r9
mov r10, qword [rdx + r15 + 8]
mov r12, qword [rdx + r15 + 0x10]
add rdi, r10
rol rdi, 0x1b
add r9, rbx
mov r8, qword [rdx + r15 + 0x30]
mov qword [rsp], r8
add r9, r8
rol r9, 0x16
movabs r8, 0xb492b66fbe98f273
imul rdi, r8
mov r11, r9
imul r11, r8
mov rbp, rdi
xor rbp, r14
mov r8, qword [rdx + r15 + 0x28]
add rax, r8
mov r9, rax
add r9, r11
add r13, rsi
movabs rax, 0xb492b66fbe98f273
imul rbx, rax
mov r11, qword [rdx + r15 + 0x18]
add rbx, qword [rdx + r15]
add rsi, r11
add rsi, rbx
add rsi, rbp
rol rsi, 0x2b
add r10, r12
add r10, rbx
mov rax, r10
rol rax, 0x14
add rbx, rax
add rbx, rsi
rol r13, 0x1f
mov rax, r10
mov rdi, r13
movabs r10, 0xb492b66fbe98f273
imul rdi, r10
add rax, r11
add r14, rdi
mov r10, qword [rdx + r15 + 0x38]
add r14, qword [rdx + r15 + 0x20]
add r12, r10
add r12, r9
add r12, r14
add r8, qword [rsp]
add r8, r14
mov r11, r8
rol r11, 0x14
add r14, r11
rol r12, 0x2b
add r14, r12
mov rsi, r8
add rsi, r10
add r15, 0x40
cmp rcx, r15
jne 0x1400220f1
xor rbx, r14
movabs r10, 0x9ddfea08eb382d69
imul rbx, r10
xor r14, rbx
shr rbx, 0x2f
xor rbx, r14
imul rbx, r10
mov rcx, rbx
shr rcx, 0x2f
xor rcx, rbx
imul rcx, r10
add rcx, rdi
xor rax, rsi
imul rax, r10
xor rsi, rax
shr rax, 0x2f
xor rax, rsi
imul rax, r10
mov rdx, rax
shr rdx, 0x2f
xor rdx, rax
imul rdx, r10
mov r8, r9
shr r8, 0x2f
xor r8, r9
movabs rax, 0xb492b66fbe98f273
imul r8, rax
add r8, rbp
add r8, rdx
xor r8, rcx
imul r8, r10
xor rcx, r8
shr r8, 0x2f
xor r8, rcx
imul r8, r10
mov rax, r8
shr rax, 0x2f
xor rax, r8
imul rax, r10
jmp 0x140021ea9
test rcx, rcx
je 0x140021ea9
movzx r8d, byte [rdx]
mov r9, rcx
shr r9, 1
movzx r9d, byte [rdx + r9]
movzx edx, byte [rcx + rdx - 1]
shl r9, 8
or r9, r8
lea rcx, [rcx + rdx*4]
imul r9, rax
movabs rdx, 0xc3a5c85c97cb3127
imul rdx, rcx
xor rdx, r9
mov rcx, rdx
shr rcx, 0x2f
xor rcx, rdx
imul rax, rcx
jmp 0x140021ea9