Function at 0x140016110
Capabilities:
Encode data using xor
Manually build aes constants

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rbp
push rsi
push rdi
push r14
sub rsp, 0x20
lea r10, [rcx + 0x20]
lea rbx, [rdx + 0x10]
mov r14, rcx
mov r11, r10
sub r14, rdx
mov rsi, rdx
sub r11, rcx
mov rbp, rcx
mov r9b, 0x10
sub r10, rdx
mov r8, rbx
nop word [rax + rax]
movzx eax, byte [r10 + r8 - 1]
dec r8
lea rcx, [r14 + 0x10]
add rcx, r8
mov byte [r14 + r8], al
xor byte [r8], al
movzx eax, byte [rcx + r11]
mov byte [rcx], al
add r9b, 0xff
jne 0x140016150
mov dil, 1
mov byte [rsp + 0x40], dil
nop dword [rax]
mov r10b, 0x10
mov r9, rbx
nop word [rax + rax]
movzx r8d, byte [r9 - 1]
lea r9, [r9 - 1]
add r10b, 0xff
test r8b, r8b
je 0x1400161e6
mov al, 1
xor dl, dl
cmp al, r8b
je 0x1400161bc
movzx ecx, al
add al, al
test cl, cl
jns 0x1400161b6
xor al, 0x1b
xor al, cl
inc dl
jne 0x1400161a6
mov ecx, 0xff
mov al, 1
sub cl, dl
je 0x1400161e8
nop word [rax + rax]
movzx edx, al
add cl, 0xff
add al, al
test dl, dl
jns 0x1400161de
xor al, 0x1b
xor al, dl
test cl, cl
jne 0x1400161d0
jmp 0x1400161e8
xor al, al
movzx edx, al
rol dl, 1
xor al, dl
rol dl, 1
xor al, dl
rol dl, 1
movzx ecx, dl
rol cl, 1
xor cl, dl
xor cl, al
xor cl, 0x63
mov byte [r9], cl
test r10b, r10b
jne 0x140016190
movzx ecx, byte [rsi + 1]
movzx eax, byte [rsi + 5]
mov byte [rsi + 1], al
movzx eax, byte [rsi + 9]
mov byte [rsi + 5], al
movzx eax, byte [rsi + 0xd]
mov byte [rsi + 0xd], cl
movzx ecx, byte [rsi + 0xa]
mov byte [rsi + 9], al
movzx eax, byte [rsi + 2]
mov byte [rsi + 0xa], al
movzx eax, byte [rsi + 0xf]
mov byte [rsi + 2], cl
movzx ecx, byte [rsi + 3]
mov byte [rsi + 3], al
movzx eax, byte [rsi + 0xb]
mov byte [rsi + 0xf], al
movzx eax, byte [rsi + 7]
mov byte [rsi + 7], cl
movzx ecx, byte [rsi + 0xe]
mov byte [rsi + 0xb], al
movzx eax, byte [rsi + 6]
mov byte [rsi + 6], cl
mov rcx, rsi
mov byte [rsi + 0xe], al
call fcn.140016030
test dil, 1
je 0x140016282
mov dl, 0x10
mov rcx, rbx
movzx eax, byte [r14 + rcx + 0xf]
dec rcx
xor byte [rcx], al
add dl, 0xff
jne 0x140016270
jmp 0x1400162b0
lea rdx, [rsp + 0x40]
mov rcx, rbp
call fcn.140004bb0
mov dl, 0x10
mov rcx, rbx
nop dword [rax]
nop dword [rax + rax]
movzx eax, byte [r14 + rcx - 1]
dec rcx
xor byte [rcx], al
add dl, 0xff
jne 0x1400162a0
inc dil
cmp dil, 0xe
jb 0x140016180
mov r10b, 0x10
mov r9, rbx
nop dword [rax]
nop word [rax + rax]
movzx r8d, byte [r9 - 1]
lea r9, [r9 - 1]
add r10b, 0xff
xor dl, dl
test r8b, r8b
je 0x140016324
mov al, 1
cmp al, r8b
je 0x1400162fc
movzx ecx, al
add al, al
test cl, cl
jns 0x1400162f6
xor al, 0x1b
xor al, cl
inc dl
jne 0x1400162e6
mov eax, 0xff
sub al, dl
mov dl, 1
je 0x140016324
nop word [rax + rax]
movzx ecx, dl
add al, 0xff
add dl, dl
test cl, cl
jns 0x14001631e
xor dl, 0x1b
xor dl, cl
test al, al
jne 0x140016310
movzx ecx, dl
rol cl, 1
xor dl, cl
rol cl, 1
xor dl, cl
rol cl, 1
movzx eax, cl
rol al, 1
xor al, cl
xor al, dl
xor al, 0x63
mov byte [r9], al
test r10b, r10b
jne 0x1400162d0
movzx ecx, byte [rsi + 1]
movzx eax, byte [rsi + 5]
lea rdx, [rsp + 0x40]
mov byte [rsi + 1], al
movzx eax, byte [rsi + 9]
mov byte [rsi + 5], al
movzx eax, byte [rsi + 0xd]
mov byte [rsi + 0xd], cl
movzx ecx, byte [rsi + 0xa]
mov byte [rsi + 9], al
movzx eax, byte [rsi + 2]
mov byte [rsi + 0xa], al
movzx eax, byte [rsi + 0xf]
mov byte [rsi + 2], cl
movzx ecx, byte [rsi + 3]
mov byte [rsi + 3], al
movzx eax, byte [rsi + 0xb]
mov byte [rsi + 0xf], al
movzx eax, byte [rsi + 7]
mov byte [rsi + 7], cl
movzx ecx, byte [rsi + 0xe]
mov byte [rsi + 0xb], al
movzx eax, byte [rsi + 6]
mov byte [rsi + 6], cl
mov rcx, rbp
mov byte [rsi + 0xe], al
call fcn.140004bb0
mov cl, 0x10
nop word [rax + rax]
movzx eax, byte [r14 + rbx - 1]
lea rbx, [rbx - 1]
xor byte [rbx], al
add cl, 0xff
jne 0x1400163b0
mov rbx, qword [rsp + 0x48]
mov rbp, qword [rsp + 0x50]
add rsp, 0x20
pop r14
pop rdi
pop rsi
ret