Function at 0x140016510
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rsi
mov qword [rsp + 0x18], rdi
mov rdi, qword [r8]
lea rbx, [rcx + 1]
mov r10, qword [r8 + 8]
mov r11, rdx
mov rdx, qword [r8 + 0x10]
sub r11, rcx
mov esi, 2
nop dword [rax]
mov rax, r10
imul rax, rdi
lea r9, [rax + rax*4]
lea rax, [r10 + 0x13]
mov r8, r9
imul r8, rdi
lea rdx, [rdx + r8*2]
add rdx, r8
lea r10, [r8 + r8*4]
add rax, rdx
mov r8, r10
mov rdx, rax
shl rax, 0x20
shr rdx, 0x20
or rdx, rax
movzx eax, dl
xor al, byte [r11 + rbx - 1]
mov byte [rbx - 1], al
imul r8, rdi
lea rax, [r8*2 + 0x13]
add rax, rdx
add rax, r8
add rax, r9
lea r9, [r8 + r8*4]
mov rdx, rax
mov r8, r9
shl rax, 0x20
shr rdx, 0x20
or rdx, rax
movzx eax, dl
xor al, byte [r11 + rbx]
mov byte [rbx], al
lea rax, [rdx + 0x13]
imul r8, rdi
lea rax, [rax + r8*2]
add rax, r8
add rax, r10
mov rdx, rax
shl rax, 0x20
shr rdx, 0x20
or rdx, rax
movzx eax, dl
xor al, byte [r11 + rbx + 1]
mov byte [rbx + 1], al
lea rax, [r9 + rdx]
lea r9, [r8 + r8*4]
mov r10, r9
imul r10, rdi
lea rdx, [r10*2 + 0x13]
add rdx, rax
add rdx, r10
mov r8, rdx
shl rdx, 0x20
shr r8, 0x20
or r8, rdx
movzx eax, r8b
xor al, byte [r11 + rbx + 2]
mov byte [rbx + 2], al
lea rax, [r9 + r8]
lea r9, [r10 + r10*4]
mov r10, r9
imul r10, rdi
lea rdx, [r10*2 + 0x13]
add rdx, rax
add rdx, r10
mov r8, rdx
shl rdx, 0x20
shr r8, 0x20
or r8, rdx
movzx eax, r8b
xor al, byte [r11 + rbx + 3]
mov byte [rbx + 3], al
lea rax, [r9 + r8]
lea r9, [r10 + r10*4]
mov r10, r9
imul r10, rdi
lea rdx, [r10*2 + 0x13]
add rdx, rax
add rdx, r10
mov r8, rdx
shr r8, 0x20
shl rdx, 0x20
or r8, rdx
movzx eax, r8b
xor al, byte [r11 + rbx + 4]
mov byte [rbx + 4], al
lea rax, [r9 + r8]
lea r9, [r10 + r10*4]
mov r10, r9
imul r10, rdi
lea rdx, [r10*2 + 0x13]
add rdx, rax
add rdx, r10
mov r8, rdx
shl rdx, 0x20
shr r8, 0x20
or r8, rdx
movzx eax, r8b
xor al, byte [r11 + rbx + 5]
mov byte [rbx + 5], al
lea rax, [r9 + r8]
lea r9, [r10 + r10*4]
mov r10, r9
imul r10, rdi
lea rdx, [r10*2 + 0x13]
add rdx, rax
add rdx, r10
mov r8, rdx
shl rdx, 0x20
shr r8, 0x20
or r8, rdx
movzx eax, r8b
xor al, byte [r11 + rbx + 6]
mov byte [rbx + 6], al
lea rax, [r9 + r8]
lea r9, [r10 + r10*4]
mov r10, r9
imul r10, rdi
lea rdx, [r10*2 + 0x13]
add rdx, rax
add rdx, r10
mov r8, rdx
shl rdx, 0x20
shr r8, 0x20
or r8, rdx
movzx eax, r8b
xor al, byte [r11 + rbx + 7]
mov byte [rbx + 7], al
lea rax, [r9 + r8]
lea r9, [r10 + r10*4]
mov r10, r9
imul r10, rdi
lea rdx, [r10*2 + 0x13]
add rdx, rax
add rdx, r10
mov r8, rdx
shl rdx, 0x20
shr r8, 0x20
or r8, rdx
movzx eax, r8b
xor al, byte [r11 + rbx + 8]
mov byte [rbx + 8], al
lea rax, [r9 + r8]
lea r9, [r10 + r10*4]
mov r10, r9
imul r10, rdi
lea rdx, [r10*2 + 0x13]
add rdx, rax
add rdx, r10
lea r10, [r10 + r10*4]
mov r8, rdx
shl rdx, 0x20
shr r8, 0x20
or r8, rdx
mov rdx, r10
movzx eax, r8b
xor al, byte [r11 + rbx + 9]
imul rdx, rdi
mov byte [rbx + 9], al
lea rax, [r9 + r8]
lea r8, [rax + rdx*2]
add rdx, 0x13
add r8, rdx
lea rbx, [rbx + 0xc]
mov rdx, r8
shl r8, 0x20
shr rdx, 0x20
or rdx, r8
movzx eax, dl
xor al, byte [r11 + rbx - 2]
mov byte [rbx - 2], al
sub rsi, 1
jne 0x140016540
mov rbx, qword [rsp + 8]
mov rax, rcx
mov rdi, qword [rsp + 0x18]
mov byte [rcx + 0x18], sil
mov rsi, qword [rsp + 0x10]
ret