Function at 0x18002b8b0
Capabilities:
Encode data using xor
Encrypt data using aes
Reference aes constants

Disassembly:
push rdi
push r12
push r15
sub rsp, 0x30
xor eax, eax
mov qword [rsp + 0x50], rbx
xor r15d, r15d
mov qword [rcx], rax
mov qword [rcx + 8], rax
mov eax, dword [rcx + 0x10]
mov qword [rsp + 0x60], rsi
shl eax, 2
mov qword [rsp + 0x28], r13
mov qword [rsp + 0x20], r14
mov r12, r8
mov r10, rdx
mov rdi, rcx
mov r9d, r15d
test eax, eax
jle 0x18002b926
mov eax, r9d
inc r9d
lea r10, [r10 + 1]
cdq
and edx, 3
add eax, edx
mov ecx, eax
and eax, 3
sub eax, edx
sar ecx, 2
movsxd rdx, eax
movzx eax, byte [r10 - 1]
movsxd rcx, ecx
add rcx, rdi
mov byte [rcx + rdx*4], al
mov eax, dword [rdi + 0x10]
shl eax, 2
cmp r9d, eax
jl 0x18002b8f0
movsxd rax, dword [rdi + 0x18]
lea rbx, [rdi + 4]
lea rdx, [rdi + 0x3e]
mov esi, 4
shl rax, 4
mov rcx, rbx
add rdx, rax
mov r8d, esi
nop dword [rax]
nop dword [rax + rax]
movzx eax, byte [rdx - 2]
lea rdx, [rdx + 4]
lea rcx, [rcx + 1]
xor byte [rcx - 5], al
movzx eax, byte [rdx - 5]
xor byte [rcx - 1], al
movzx eax, byte [rdx - 4]
xor byte [rcx + 3], al
movzx eax, byte [rdx - 3]
xor byte [rcx + 7], al
dec r8
jne 0x18002b950
mov eax, dword [rdi + 0x18]
lea r13, [0x180102620]
dec eax
movsxd r14, eax
cmp r14, 1
jl 0x18002ba53
mov qword [rsp + 0x58], rbp
mov rax, r14
lea rbp, [rdi + 0x3e]
shl rax, 4
add rbp, rax
mov rcx, rdi
call fcn.18002c0a0
mov rcx, rbx
mov rdx, rsi
nop dword [rax]
nop word [rax + rax]
movzx eax, byte [rcx - 4]
lea rcx, [rcx + 1]
movzx eax, byte [rax + r13]
mov byte [rcx - 5], al
movzx eax, byte [rcx - 1]
movzx eax, byte [rax + r13]
mov byte [rcx - 1], al
movzx eax, byte [rcx + 3]
movzx eax, byte [rax + r13]
mov byte [rcx + 3], al
movzx eax, byte [rcx + 7]
movzx eax, byte [rax + r13]
mov byte [rcx + 7], al
dec rdx
jne 0x18002b9c0
mov rax, rbx
mov rdx, rbp
mov r8, rsi
nop dword [rax]
nop word [rax + rax]
movzx ecx, byte [rdx - 2]
lea rdx, [rdx + 4]
lea rax, [rax + 1]
xor byte [rax - 5], cl
movzx ecx, byte [rdx - 5]
xor byte [rax - 1], cl
movzx ecx, byte [rdx - 4]
xor byte [rax + 3], cl
movzx ecx, byte [rdx - 3]
xor byte [rax + 7], cl
dec r8
jne 0x18002ba10
mov rcx, rdi
call fcn.18002bb50
sub rbp, 0x10
dec r14
jne 0x18002b9a5
mov rbp, qword [rsp + 0x58]
mov rcx, rdi
call fcn.18002c0a0
mov r14, qword [rsp + 0x20]
mov rcx, rbx
mov rdx, rsi
nop word [rax + rax]
movzx eax, byte [rcx - 4]
lea rcx, [rcx + 1]
movzx eax, byte [rax + r13]
mov byte [rcx - 5], al
movzx eax, byte [rcx - 1]
movzx eax, byte [rax + r13]
mov byte [rcx - 1], al
movzx eax, byte [rcx + 3]
movzx eax, byte [rax + r13]
mov byte [rcx + 3], al
movzx eax, byte [rcx + 7]
movzx eax, byte [rax + r13]
mov byte [rcx + 7], al
dec rdx
jne 0x18002ba70
mov r13, qword [rsp + 0x28]
lea rcx, [rdi + 0x3d]
nop dword [rax]
nop word [rax + rax]
movzx eax, byte [rcx - 1]
lea rbx, [rbx + 1]
lea rcx, [rcx + 4]
xor byte [rbx - 5], al
movzx eax, byte [rcx - 4]
xor byte [rbx - 1], al
movzx eax, byte [rcx - 3]
xor byte [rbx + 3], al
movzx eax, byte [rcx - 2]
xor byte [rbx + 7], al
dec rsi
jne 0x18002bac0
mov eax, dword [rdi + 0x10]
mov rsi, qword [rsp + 0x60]
mov rbx, qword [rsp + 0x50]
shl eax, 2
test eax, eax
jle 0x18002bb38
nop dword [rax]
mov eax, r15d
inc r15d
lea r12, [r12 + 1]
cdq
and edx, 3
add eax, edx
mov ecx, eax
and eax, 3
sub eax, edx
sar ecx, 2
movsxd rdx, eax
movsxd rcx, ecx
add rcx, rdi
movzx eax, byte [rcx + rdx*4]
mov byte [r12 - 1], al
mov eax, dword [rdi + 0x10]
shl eax, 2
cmp r15d, eax
jl 0x18002bb00
add rsp, 0x30
pop r15
pop r12
pop rdi
ret