Function at 0x140022c90
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
cmp rdx, 0x20
jbe 0x140022eb6
movabs rsi, 0xc3a5c85c97cb3127
cmp rdx, 0x40
jbe 0x140022f63
movabs rax, 0xb492b66fbe98f273
mov r10, qword [rcx + rdx - 0x10]
mov r8, r10
xor r8, rax
mov r9, qword [rcx + rdx - 0x38]
mov r14, qword [rcx + rdx - 0x28]
mov rbx, r9
mov rdi, qword [rcx + rdx - 0x40]
add rdi, rdx
lea r15, [r14 + r8]
add r15, rdi
rol r15, 0x2b
xor rbx, rsi
add r9, qword [rcx + rdx - 0x30]
add r9, rdi
mov r11, r9
rol r11, 0x14
add r11, rdi
add r11, r15
mov r12, rdx
imul r12, rax
mov r15, qword [rcx + rdx - 8]
add r12, qword [rcx + rdx - 0x20]
add rsi, r15
add rsi, r12
rol rsi, 0x2b
add r10, qword [rcx + rdx - 0x18]
add r10, r12
mov rdi, r10
rol rdi, 0x14
add r9, r14
add rdi, r12
add rdi, rsi
mov rsi, r11
shr rsi, 0x2f
xor rsi, r11
imul rsi, rax
add rsi, rbx
mov rbx, qword [rcx]
add rbx, rsi
rol rbx, 0x19
add r10, r15
imul rbx, rax
rol r8, 0x1f
imul r8, rax
dec rdx
and rdx, 0xffffffffffffffc0
xor r14d, r14d
mov rbp, rsi
add rbx, r9
add rbx, r8
mov r13, qword [rcx + r14 + 0x10]
mov r12, qword [rcx + r14 + 0x18]
add rbx, r13
rol rbx, 0x1b
imul rbx, rax
add r8, r11
mov r15, qword [rcx + r14 + 0x30]
add r8, r15
rol r8, 0x16
imul r8, rax
mov rsi, rbx
xor rbp, r10
mov rbx, rbp
rol rbx, 0x1f
xor rsi, rdi
imul r11, rax
add r11, qword [rcx + r14]
xor r8, r9
add r10, r12
add r10, r11
add r10, rsi
rol r10, 0x2b
add r13, qword [rcx + r14 + 8]
add r13, r11
mov rbp, r13
rol rbp, 0x14
mov r9, r13
add r11, rbp
add r11, r10
add r9, r12
add rdi, rbx
mov r12, qword [rcx + r14 + 0x38]
add rdi, qword [rcx + r14 + 0x20]
lea r13, [r12 + rdi]
add r13, r8
rol r13, 0x2b
add r15, qword [rcx + r14 + 0x28]
add r15, rdi
mov r10, r15
rol r15, 0x14
add rdi, r15
add rdi, r13
add r10, r12
add r14, 0x40
cmp rdx, r14
jne 0x140022d6e
xor r11, rdi
movabs rcx, 0x9ddfea08eb382d69
imul r11, rcx
xor rdi, r11
shr r11, 0x2f
xor r11, rdi
imul r11, rcx
mov rdx, r11
shr rdx, 0x2f
xor rdx, r11
imul rdx, rcx
add rdx, rbx
xor r9, r10
imul r9, rcx
xor r10, r9
shr r9, 0x2f
xor r9, r10
imul r9, rcx
mov r10, r9
shr r10, 0x2f
xor r10, r9
imul r10, rcx
mov r9, r8
shr r9, 0x2f
xor r9, r8
imul r9, rax
add r9, rsi
add r9, r10
xor r9, rdx
imul r9, rcx
xor rdx, r9
shr r9, 0x2f
xor r9, rdx
imul r9, rcx
mov rax, r9
shr rax, 0x2f
xor rax, r9
imul rax, rcx
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
cmp rdx, 0x10
jbe 0x14002301b
movabs rax, 0xb492b66fbe98f273
imul rax, qword [rcx]
mov r8, qword [rcx + 8]
mov r9, qword [rcx + rdx - 8]
movabs r10, 0x9ae16a3b2f90404f
movabs r11, 0xc3a5c85c97cb3127
imul r11, qword [rcx + rdx - 0x10]
movabs rcx, 0xc949d7c7509e6557
xor rcx, r8
rol rcx, 0x2c
imul r10, r9
add rdx, rax
add rdx, rcx
sub rdx, r10
sub rax, r8
rol rax, 0x15
shr r10, 0x1e
movabs rcx, 0xbe41013c00000000
imul rcx, r9
add rcx, r10
add rcx, r11
add rcx, rax
xor rcx, rdx
movabs r8, 0x9ddfea08eb382d69
imul rcx, r8
xor rdx, rcx
shr rcx, 0x2f
xor rcx, rdx
imul rcx, r8
mov rax, rcx
shr rax, 0x2f
xor rax, rcx
imul rax, r8
jmp 0x140022ea9
mov r8, qword [rcx + 0x10]
mov r11, qword [rcx + 0x18]
mov rbx, qword [rcx + rdx - 0x10]
mov rax, qword [rcx + rdx - 8]
lea r9, [rbx + rdx]
imul r9, rsi
add r9, qword [rcx]
lea r10, [r9 + r11]
mov r14, r9
add r9, qword [rcx + 8]
mov rdi, r9
add r9, r8
add r8, qword [rcx + rdx - 0x20]
lea r15, [r8 + rax]
mov r12, r8
add r8, qword [rcx + rdx - 0x18]
rol r10, 0xc
rol r14, 0x1b
rol rdi, 0x39
rol r15, 0xc
rol r12, 0x1b
add rdi, r14
mov rcx, r8
rol rcx, 0x39
add r8, rbx
add rax, r8
rol r8, 0x21
add r12, r11
add r12, r15
add r12, rcx
add r12, r8
add r12, r9
rol r9, 0x21
add rdi, r10
add r9, rdi
movabs rcx, 0x9ae16a3b2f90404f
imul r12, rcx
add rax, r9
imul rax, rsi
add rax, r12
mov rdx, rax
shr rdx, 0x2f
xor rdx, rax
imul rdx, rsi
add rdx, r9
mov rax, rdx
shr rax, 0x2f
xor rax, rdx
jmp 0x140022ea5
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
jmp 0x140058bc0
mov r8, rcx
cmp rdx, 9
jb 0x140058c0b
mov r9, qword [r8 + rdx - 8]
lea rax, [r9 + rdx]
mov ecx, edx
ror rax, cl
mov rcx, qword [r8]
xor rcx, rax
movabs rdx, 0x9ddfea08eb382d69
imul rcx, rdx
xor rax, rcx
shr rcx, 0x2f
xor rcx, rax
imul rcx, rdx
mov rax, rcx
shr rax, 0x2f
xor rax, rcx
imul rax, rdx
xor rax, r9
ret
cmp rdx, 4
jb 0x140058c4b
mov eax, dword [r8]
mov ecx, dword [r8 + rdx - 4]
lea rdx, [rdx + rax*8]
xor rdx, rcx
movabs r8, 0x9ddfea08eb382d69
imul rdx, r8
xor rcx, rdx
shr rdx, 0x2f
xor rdx, rcx
imul rdx, r8
mov rax, rdx
shr rax, 0x2f
xor rax, rdx
imul rax, r8
ret
movabs rax, 0x9ae16a3b2f90404f
test rdx, rdx
je 0x140058c9d
movzx ecx, byte [r8]
mov r9, rdx
shr r9, 1
movzx r9d, byte [r8 + r9]
movzx r8d, byte [rdx + r8 - 1]
shl r9, 8
or r9, rcx
lea rcx, [rdx + r8*4]
imul r9, rax
movabs rdx, 0xc949d7c7509e6557
imul rdx, rcx
xor rdx, r9
mov rcx, rdx
shr rcx, 0x2f
xor rcx, rdx
imul rax, rcx
ret