Function at 0x140023d30
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 0x140023f5f
movabs rsi, 0xc3a5c85c97cb3127
cmp rdx, 0x40
jbe 0x14002400f
movabs r8, 0xb492b66fbe98f273
mov r11, qword [rcx + rdx - 0x10]
mov r10, r11
xor r10, r8
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 rbp, [r14 + r10]
add rbp, rdi
rol rbp, 0x2b
xor rbx, rsi
add r9, qword [rcx + rdx - 0x30]
add r9, rdi
mov rax, r9
rol rax, 0x14
add rax, rdi
add rax, rbp
mov rbp, rdx
imul rbp, r8
mov r15, qword [rcx + rdx - 8]
add rbp, qword [rcx + rdx - 0x20]
add rsi, r15
add rsi, rbp
rol rsi, 0x2b
add r11, qword [rcx + rdx - 0x18]
add r11, rbp
mov rdi, r11
rol rdi, 0x14
add r9, r14
add rdi, rbp
add rdi, rsi
mov rsi, rax
shr rsi, 0x2f
xor rsi, rax
imul rsi, r8
add rsi, rbx
mov rbx, qword [rcx]
add rbx, rsi
rol rbx, 0x19
add r11, r15
imul rbx, r8
rol r10, 0x1f
imul r10, r8
dec rdx
and rdx, 0xffffffffffffffc0
xor r14d, r14d
mov rbp, rsi
add rbx, r9
add rbx, r10
mov r13, qword [rcx + r14 + 0x10]
mov r12, qword [rcx + r14 + 0x18]
add rbx, r13
rol rbx, 0x1b
imul rbx, r8
add r10, rax
mov r15, qword [rcx + r14 + 0x30]
add r10, r15
rol r10, 0x16
imul r10, r8
mov rsi, rbx
xor rbp, r11
mov rbx, rbp
rol rbx, 0x1f
xor rsi, rdi
imul rax, r8
add rax, qword [rcx + r14]
xor r10, r9
add r11, r12
add r11, rsi
add r11, rax
rol r11, 0x2b
add r13, qword [rcx + r14 + 8]
add r13, rax
mov rbp, r13
rol rbp, 0x14
mov r9, r13
add rax, rbp
add rax, r11
add r9, r12
add rdi, rbx
mov r12, qword [rcx + r14 + 0x38]
add rdi, qword [rcx + r14 + 0x20]
lea rbp, [r12 + r10]
add rbp, rdi
rol rbp, 0x2b
add r15, qword [rcx + r14 + 0x28]
add r15, rdi
mov r11, r15
rol r15, 0x14
add rdi, r15
add rdi, rbp
add r11, r12
add r14, 0x40
cmp rdx, r14
jne 0x140023e0e
xor rax, rdi
movabs rcx, 0x9ddfea08eb382d69
imul rax, rcx
mov rdx, rax
shr rdx, 0x2f
xor rax, rdi
xor rax, rdx
imul rax, rcx
mov rdx, rax
shr rdx, 0x2f
xor rdx, rax
imul rdx, rcx
add rdx, rbx
xor r9, r11
imul r9, rcx
mov rax, r9
shr rax, 0x2f
xor r9, r11
xor r9, rax
imul r9, rcx
mov rax, r9
shr rax, 0x2f
xor rax, r9
imul rax, rcx
mov rbp, r10
shr rbp, 0x2f
xor rbp, r10
imul rbp, r8
add rbp, rsi
add rbp, rax
xor rbp, rdx
imul rbp, rcx
mov rax, rbp
shr rax, 0x2f
xor rbp, rdx
xor rbp, rax
imul rbp, rcx
mov rax, rbp
shr rax, 0x2f
xor rax, rbp
imul rax, rcx
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
cmp rdx, 0x10
jbe 0x1400240ce
movabs rax, 0xb492b66fbe98f273
imul rax, qword [rcx]
mov rbp, qword [rcx + 8]
mov rbx, qword [rcx + rdx - 8]
movabs rdi, 0x9ae16a3b2f90404f
imul rdi, rbx
movabs rsi, 0xc3a5c85c97cb3127
imul rsi, qword [rcx + rdx - 0x10]
movabs rcx, 0xc949d7c7509e6557
xor rcx, rbp
rol rcx, 0x2c
add rdx, rax
add rdx, rcx
sub rdx, rdi
sub rax, rbp
rol rax, 0x15
shr rdi, 0x1e
movabs rcx, 0xbe41013c00000000
imul rcx, rbx
add rcx, rax
add rcx, rdi
add rcx, rsi
xor rcx, rdx
movabs rbp, 0x9ddfea08eb382d69
imul rcx, rbp
mov rax, rcx
shr rax, 0x2f
xor rcx, rdx
xor rcx, rax
imul rcx, rbp
mov rax, rcx
shr rax, 0x2f
xor rax, rcx
imul rax, rbp
jmp 0x140023f52
mov rdi, qword [rcx + 0x10]
mov r8, qword [rcx + 0x18]
mov r9, qword [rcx + rdx - 0x10]
mov rax, qword [rcx + rdx - 8]
lea rbx, [r9 + rdx]
imul rbx, rsi
add rbx, qword [rcx]
lea r10, [rbx + r8]
mov r11, rbx
add rbx, qword [rcx + 8]
mov rbp, rbx
add rbx, rdi
add rdi, qword [rcx + rdx - 0x20]
lea r14, [rdi + rax]
mov r15, rdi
add rdi, qword [rcx + rdx - 0x18]
rol r10, 0xc
rol r11, 0x1b
rol rbp, 0x39
add rbp, r11
mov rcx, rbx
rol rcx, 0x21
rol r14, 0xc
rol r15, 0x1b
add rbp, r10
mov rdx, rdi
rol rdx, 0x39
add rdi, r9
add rax, rdi
rol rdi, 0x21
add rcx, rbp
add rbx, r8
add rbx, r15
add rbx, r14
add rbx, rdx
add rbx, rdi
movabs rdx, 0x9ae16a3b2f90404f
imul rbx, rdx
add rax, rcx
imul rax, rsi
add rax, rbx
mov rbp, rax
shr rbp, 0x2f
xor rbp, rax
imul rbp, rsi
add rbp, rcx
mov rax, rbp
shr rax, 0x2f
xor rax, rbp
imul rax, rdx
jmp 0x140023f52
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
jmp 0x14005add0
mov r8, rcx
cmp rdx, 9
jb 0x14005ae1e
mov r9, qword [r8 + rdx - 8]
lea rax, [r9 + rdx]
mov ecx, edx
ror rax, cl
mov rcx, qword [r8]
xor rcx, rax
movabs r8, 0x9ddfea08eb382d69
imul rcx, r8
mov rdx, rcx
shr rdx, 0x2f
xor rcx, rax
xor rcx, rdx
imul rcx, r8
mov rax, rcx
shr rax, 0x2f
xor rax, rcx
imul rax, r8
xor rax, r9
ret
cmp rdx, 4
jb 0x14005ae61
mov eax, dword [r8]
mov ecx, dword [r8 + rdx - 4]
lea rdx, [rdx + rax*8]
xor rdx, rcx
movabs r8, 0x9ddfea08eb382d69
imul rdx, r8
mov rax, rdx
shr rax, 0x2f
xor rdx, rcx
xor rdx, rax
imul rdx, r8
mov rax, rdx
shr rax, 0x2f
xor rax, rdx
imul rax, r8
ret
movabs rax, 0x9ae16a3b2f90404f
test rdx, rdx
je 0x14005aeb3
movzx r9d, byte [r8]
mov rcx, rdx
shr rcx, 1
movzx ecx, byte [r8 + rcx]
movzx r8d, byte [rdx + r8 - 1]
shl rcx, 8
or rcx, r9
lea r8, [rdx + r8*4]
imul rcx, rax
movabs rdx, 0xc949d7c7509e6557
imul rdx, r8
xor rdx, rcx
mov rcx, rdx
shr rcx, 0x2f
xor rcx, rdx
imul rax, rcx
ret