Function at 0x140156530
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
cmp r8, 0x20
ja 0x1401565a4
cmp r8, 0x10
ja 0x140156666
cmp r8, 9
jb 0x140156704
mov rbp, qword [rdx + r8 - 8]
lea rax, [r8 + rbp]
mov ecx, r8d
ror rax, cl
mov rcx, qword [rdx]
xor rcx, rax
movabs rdx, 0x9ddfea08eb382d69
imul rcx, rdx
mov rbx, rcx
shr rbx, 0x2f
xor rcx, rax
xor rcx, rbx
imul rcx, rdx
mov rax, rcx
shr rax, 0x2f
xor rax, rcx
imul rax, rdx
xor rax, rbp
jmp 0x1401566f3
cmp r8, 0x40
ja 0x14015673b
mov r10, qword [rdx + r8 - 0x10]
lea rbp, [r10 + r8]
movabs r9, 0xc3a5c85c97cb3127
imul rbp, r9
add rbp, qword [rdx]
mov rbx, qword [rdx + 0x18]
lea r11, [rbx + rbp]
rol r11, 0xc
mov rdi, rbp
rol rdi, 0x1b
mov rsi, qword [rdx + 0x10]
add rbp, qword [rdx + 8]
mov rax, rbp
rol rax, 0x39
add rbp, rsi
mov r15, rbp
rol r15, 0x21
add rsi, qword [rdx + r8 - 0x20]
add rbp, rbx
add rbx, qword [rdx + r8 - 8]
add rax, rdi
lea r14, [rbx + rsi]
rol r14, 0xc
add rax, r11
mov rdi, rsi
rol rdi, 0x1b
add r15, rax
add rsi, qword [rdx + r8 - 0x18]
mov rax, rsi
rol rax, 0x39
add rsi, r10
add rbx, rsi
rol rsi, 0x21
add rdi, rbp
add rdi, rax
add rdi, r14
add rdi, rsi
movabs rdx, 0x9ae16a3b2f90404f
imul rdi, rdx
add rbx, r15
imul rbx, r9
add rbx, rdi
mov rcx, rbx
shr rcx, 0x2f
xor rcx, rbx
imul rcx, r9
add rcx, r15
jmp 0x1401566e5
movabs rax, 0xb492b66fbe98f273
imul rax, qword [rdx]
mov rbp, qword [rdx + 8]
movabs rcx, 0x9ae16a3b2f90404f
imul rcx, qword [rdx + r8 - 8]
movabs rbx, 0xc3a5c85c97cb3127
imul rbx, qword [rdx + r8 - 0x10]
movabs rdx, 0xc949d7c7509e6557
xor rdx, rbp
rol rdx, 0x2c
add r8, rax
add r8, rdx
sub r8, rcx
sub rax, rbp
rol rax, 0x15
rol rcx, 0x22
add rcx, rax
add rcx, rbx
xor rcx, r8
movabs rdx, 0x9ddfea08eb382d69
imul rcx, rdx
mov rax, rcx
shr rax, 0x2f
xor rcx, r8
xor rcx, rax
imul rcx, rdx
mov rax, rcx
shr rax, 0x2f
xor rax, rcx
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, 4
jb 0x14015697f
mov ecx, dword [rdx]
mov eax, dword [rdx + r8 - 4]
shl ecx, 3
add rcx, r8
xor rcx, rax
movabs rdx, 0x9ddfea08eb382d69
imul rcx, rdx
mov rbp, rcx
shr rbp, 0x2f
xor rcx, rax
xor rcx, rbp
jmp 0x1401566e1
movabs r11, 0xb492b66fbe98f273
movabs rbp, 0x9ddfea08eb382d69
mov rdi, qword [rdx + r8 - 0x28]
mov r9, qword [rdx + r8 - 0x10]
mov rax, qword [rdx + r8 - 0x38]
mov r10, qword [rdx + r8 - 0x30]
lea r14, [rax + r9]
mov rsi, qword [rdx + r8 - 0x18]
lea rbx, [r10 + r8]
xor rbx, rsi
imul rbx, rbp
mov rcx, rbx
shr rcx, 0x2f
xor rbx, rsi
xor rbx, rcx
imul rbx, rbp
mov r13, rbx
shr r13, 0x2f
xor r13, rbx
imul r13, rbp
mov rcx, qword [rdx + r8 - 0x40]
add rcx, r8
lea rbp, [rcx + rdi]
add rbp, r13
rol rbp, 0x2b
add rax, r10
add rax, rcx
mov rbx, rax
rol rbx, 0x14
add rbx, rcx
add rbx, rbp
add rax, rdi
mov rbp, qword [rdx + r8 - 0x20]
add rbp, r14
mov r10, qword [rdx + r8 - 8]
add rbp, r11
lea r15, [r10 + rdi]
add r15, rbp
rol r15, 0x2b
add rsi, r9
add rsi, rbp
mov rcx, rsi
rol rcx, 0x14
add rcx, rbp
add rcx, r15
imul rdi, r11
add rdi, qword [rdx]
add rsi, r10
dec r8
and r8, 0xffffffffffffffc0
xor r15d, r15d
mov qword [rsp], r13
add rdi, rax
add rdi, r14
mov r10, qword [rdx + r15 + 8]
mov r12, qword [rdx + r15 + 0x10]
add rdi, r10
rol rdi, 0x1b
add r14, rbx
mov rbp, qword [rdx + r15 + 0x30]
mov qword [rsp + 8], rbp
add r14, rbp
rol r14, 0x16
movabs rbp, 0xb492b66fbe98f273
imul rdi, rbp
mov r11, r14
imul r11, rbp
mov r13, rdi
xor r13, rcx
mov r9, qword [rdx + r15 + 0x28]
add rax, r9
mov r14, rax
add r14, r11
mov rdi, qword [rsp]
add rdi, rsi
imul rbx, rbp
mov r11, qword [rdx + r15 + 0x18]
add rbx, qword [rdx + r15]
add rsi, r11
add rsi, r13
add rsi, rbx
rol rsi, 0x2b
add r10, r12
add r10, rbx
mov rax, r10
rol rax, 0x14
add rbx, rax
add rbx, rsi
rol rdi, 0x1f
mov rax, r10
imul rdi, rbp
add rax, r11
add r12, r14
add rcx, rdi
add rcx, qword [rdx + r15 + 0x20]
mov rbp, qword [rdx + r15 + 0x38]
add r12, rbp
add r12, rcx
add r9, qword [rsp + 8]
add r9, rcx
mov rsi, r9
rol rsi, 0x14
add rcx, rsi
rol r12, 0x2b
add rcx, r12
mov rsi, r9
add rsi, rbp
add r15, 0x40
cmp r8, r15
jne 0x140156801
xor rbx, rcx
movabs r8, 0x9ddfea08eb382d69
imul rbx, r8
mov rdx, rbx
shr rdx, 0x2f
xor rbx, rcx
xor rbx, rdx
imul rbx, r8
mov rcx, rbx
shr rcx, 0x2f
xor rcx, rbx
imul rcx, r8
add rcx, rdi
xor rax, rsi
imul rax, r8
mov rdx, rax
shr rdx, 0x2f
xor rax, rsi
xor rax, rdx
imul rax, r8
mov rdx, rax
shr rdx, 0x2f
xor rdx, rax
imul rdx, r8
mov rbp, r14
shr rbp, 0x2f
xor rbp, r14
movabs rax, 0xb492b66fbe98f273
imul rbp, rax
add rbp, r13
add rbp, rdx
xor rbp, rcx
imul rbp, r8
mov rax, rbp
shr rax, 0x2f
xor rbp, rcx
xor rbp, rax
imul rbp, r8
mov rax, rbp
shr rax, 0x2f
xor rax, rbp
imul rax, r8
jmp 0x1401566f3
movabs rax, 0x9ae16a3b2f90404f
test r8, r8
je 0x1401566f3
movzx ecx, byte [rdx]
mov rbp, r8
shr rbp, 1
movzx ebp, byte [rdx + rbp]
movzx edx, byte [r8 + rdx - 1]
shl rbp, 8
or rbp, rcx
lea rcx, [r8 + rdx*4]
imul rbp, rax
movabs rdx, 0xc949d7c7509e6557
imul rdx, rcx
xor rdx, rbp
mov rcx, rdx
shr rcx, 0x2f
xor rcx, rdx
imul rax, rcx
jmp 0x1401566f3