Function at 0x140157e60
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x10
mov r8, rdx
cmp rdx, 0x20
ja 0x140157ef0
movabs rax, 0x9ae16a3b2f90404f
cmp r8, 0x10
ja 0x14015823c
cmp r8, 8
jb 0x14015820d
lea rdx, [rax + r8*2]
add rax, qword [rcx]
mov rcx, qword [rcx + r8 - 8]
mov r8, rcx
rol r8, 0x1b
imul r8, rdx
add r8, rax
rol rax, 0x27
add rax, rcx
imul rax, rdx
xor r8, rax
imul r8, rdx
xor rax, r8
shr r8, 0x2f
xor r8, rax
imul r8, rdx
mov rax, r8
shr rax, 0x2f
xor rax, r8
imul rax, rdx
add rsp, 0x10
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
cmp r8, 0x40
jbe 0x140158147
movabs r13, 0xb492b66fbe98f273
movabs r14, 0x9ddfea08eb382d69
mov r9, r8
mov rdi, qword [rcx + r8 - 0x28]
mov r8, qword [rcx + r8 - 0x10]
mov rsi, qword [rcx + r9 - 0x38]
mov rdx, qword [rcx + r9 - 0x30]
lea rax, [rsi + r8]
mov r11, qword [rcx + r9 - 0x18]
lea rbx, [rdx + r9]
xor rbx, r11
imul rbx, r14
mov r10, r11
xor r10, rbx
shr rbx, 0x2f
xor rbx, r10
imul rbx, r14
mov rbp, rbx
shr rbp, 0x2f
xor rbp, rbx
imul rbp, r14
mov r14, qword [rcx + r9 - 0x40]
add r14, r9
lea r15, [r14 + rdi]
add r15, rbp
rol r15, 0x2b
add rdx, rsi
add rdx, r14
mov rbx, rdx
rol rbx, 0x14
add rbx, r14
add rbx, r15
add rdx, rdi
mov rsi, qword [rcx + r9 - 0x20]
add rsi, rax
mov r15, qword [rcx + r9 - 8]
add rsi, r13
lea r12, [r15 + rdi]
add r12, rsi
rol r12, 0x2b
add r11, r8
add r11, rsi
mov r14, r11
rol r14, 0x14
add r14, rsi
add r14, r12
imul rdi, r13
add rdi, qword [rcx]
add r11, r15
dec r9
and r9, 0xffffffffffffffc0
mov qword [rsp], r9
xor r15d, r15d
mov r13, rbp
add rdi, rdx
add rdi, rax
mov rsi, qword [rcx + r15 + 8]
mov r12, qword [rcx + r15 + 0x10]
add rdi, rsi
rol rdi, 0x1b
add rax, rbx
mov r8, qword [rcx + r15 + 0x30]
mov qword [rsp + 8], r8
add rax, r8
rol rax, 0x16
mov r10, rcx
movabs rcx, 0xb492b66fbe98f273
imul rdi, rcx
mov r9, rax
imul r9, rcx
mov rbp, rdi
xor rbp, r14
mov r8, qword [r10 + r15 + 0x28]
add rdx, r8
mov rax, rdx
add rax, r9
add r13, r11
imul rbx, rcx
mov r9, qword [r10 + r15 + 0x18]
add rbx, qword [r10 + r15]
add r11, r9
add r11, rbp
add r11, rbx
rol r11, 0x2b
add rsi, r12
add rsi, rbx
mov rdx, rsi
rol rdx, 0x14
add rbx, rdx
add rbx, r11
rol r13, 0x1f
mov rdx, rsi
mov rdi, r13
imul rdi, rcx
mov rcx, r10
add rdx, r9
add r12, rax
add r14, rdi
add r14, qword [r10 + r15 + 0x20]
mov r9, qword [r10 + r15 + 0x38]
add r12, r9
add r12, r14
add r8, qword [rsp + 8]
add r8, r14
mov r11, r8
rol r11, 0x14
add r14, r11
rol r12, 0x2b
add r14, r12
mov r11, r8
add r11, r9
add r15, 0x40
cmp qword [rsp], r15
jne 0x140157fc7
xor rbx, r14
movabs r9, 0x9ddfea08eb382d69
imul rbx, r9
mov r8, rbx
shr r8, 0x2f
xor r8, r14
xor r8, rbx
imul r8, r9
mov rcx, r8
shr rcx, 0x2f
xor rcx, r8
imul rcx, r9
add rcx, rdi
xor rdx, r11
imul rdx, r9
mov r8, rdx
shr r8, 0x2f
xor r8, r11
xor r8, rdx
imul r8, r9
mov rdx, r8
shr rdx, 0x2f
xor rdx, r8
imul rdx, r9
mov r8, rax
shr r8, 0x2f
xor r8, rax
movabs rax, 0xb492b66fbe98f273
imul r8, rax
add r8, rbp
add r8, rdx
xor r8, rcx
imul r8, r9
xor rcx, r8
shr r8, 0x2f
xor r8, rcx
imul r8, r9
mov rax, r8
shr rax, 0x2f
xor rax, r8
imul rax, r9
jmp 0x140157edf
movabs rax, 0x9ae16a3b2f90404f
mov r14, r8
lea r8, [rax + r8*2]
mov r10, qword [rcx]
imul r10, rax
mov r9, qword [rcx + r14 - 0x20]
mov r11, qword [rcx + r14 - 0x18]
imul rax, qword [rcx + 0x10]
mov rbx, qword [rcx + 8]
mov rdx, qword [rcx + 0x18]
lea rdi, [rdx + rdx*8]
mov rsi, qword [rcx + r14 - 8]
mov rcx, qword [rcx + r14 - 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 0x140157edf
cmp r8, 4
jb 0x140158299
lea rdx, [rax + r8*2]
mov eax, dword [rcx]
mov ecx, dword [rcx + r8 - 4]
lea r8, [r8 + rax*8]
xor r8, rcx
imul r8, rdx
xor rcx, r8
shr r8, 0x2f
xor r8, rcx
jmp 0x140157ecd
movabs r9, 0xb492b66fbe98f273
imul r9, qword [rcx]
mov rsi, r8
lea rdx, [rax + r8*2]
mov r10, qword [rcx + 8]
mov r8, qword [rcx + r8 - 8]
lea r11, [r10 + rax]
imul rax, qword [rcx + rsi - 0x10]
rol r11, 0x2e
imul r8, rdx
add r11, r9
add r11, r8
add r9, r10
rol r9, 0x15
rol r8, 0x22
add r8, r9
add r8, rax
xor r8, r11
imul r8, rdx
xor r11, r8
shr r8, 0x2f
xor r8, r11
jmp 0x140157ecd
test r8, r8
je 0x140157edf
movzx edx, byte [rcx]
mov r9, r8
shr r8, 1
movzx r8d, byte [rcx + r8]
movzx ecx, byte [r9 + rcx - 1]
shl r8, 8
or r8, rdx
lea rcx, [r9 + rcx*4]
imul r8, rax
movabs rdx, 0xc3a5c85c97cb3127
imul rdx, rcx
xor rdx, r8
mov rcx, rdx
shr rcx, 0x2f
xor rcx, rdx
imul rax, rcx
jmp 0x140157edf