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

Disassembly:
mov rax, rsp
push r15
sub rsp, 0x40
movups xmm0, xmmword [rdx]
mov qword [rax + 8], rbx
mov r15, r8
mov qword [rax + 0x10], rbp
mov rbx, rcx
mov qword [rax + 0x18], rsi
mov qword [rax - 0x10], r12
mov qword [rax - 0x18], r14
lea r14, [rcx + 0x18]
movdqa xmmword [rax - 0x28], xmm0
lea rax, [rax - 0x28]
mov qword [rcx + 0x10], rax
mov r9, r14
mov eax, dword [rcx + 0xc]
shl eax, 2
xor esi, esi
movsxd r10, eax
mov r8d, esi
nop dword [rax + rax]
mov rax, qword [r9]
lea r9, [r9 + 8]
mov rdx, qword [rbx + 0x10]
movzx ecx, byte [r10 + rax]
xor byte [rdx + r8], cl
mov rax, qword [r9 - 8]
mov rdx, qword [rbx + 0x10]
movzx ecx, byte [r10 + rax + 1]
xor byte [rdx + r8 + 1], cl
mov rax, qword [r9 - 8]
mov rdx, qword [rbx + 0x10]
movzx ecx, byte [r10 + rax + 2]
xor byte [rdx + r8 + 2], cl
mov rax, qword [r9 - 8]
mov rdx, qword [rbx + 0x10]
movzx ecx, byte [r10 + rax + 3]
xor byte [rdx + r8 + 3], cl
add r8, 4
cmp r8, 0x10
jl 0x180001680
mov ebp, dword [rbx + 0xc]
lea r12, [0x18001f100]
dec ebp
test ebp, ebp
jle 0x1800017de
movsxd rax, ebp
mov qword [rsp + 0x68], rdi
lea rdi, [rax*4]
nop dword [rax + rax]
mov rcx, rbx
call fcn.180002100
mov rdx, rsi
nop dword [rax + rax]
mov rcx, qword [rbx + 0x10]
movzx eax, byte [rcx + rdx]
movzx eax, byte [rax + r12]
mov byte [rcx + rdx], al
mov rcx, qword [rbx + 0x10]
movzx eax, byte [rcx + rdx + 1]
movzx eax, byte [rax + r12]
mov byte [rcx + rdx + 1], al
mov rcx, qword [rbx + 0x10]
movzx eax, byte [rcx + rdx + 2]
movzx eax, byte [rax + r12]
mov byte [rcx + rdx + 2], al
mov rcx, qword [rbx + 0x10]
movzx eax, byte [rcx + rdx + 3]
movzx eax, byte [rax + r12]
mov byte [rcx + rdx + 3], al
add rdx, 4
cmp rdx, 0x10
jl 0x180001710
mov r8, rsi
mov r9, r14
nop word [rax + rax]
mov rax, qword [r9]
lea r9, [r9 + 8]
mov rdx, qword [rbx + 0x10]
movzx ecx, byte [rdi + rax]
xor byte [rdx + r8], cl
mov rax, qword [r9 - 8]
mov rdx, qword [rbx + 0x10]
movzx ecx, byte [rdi + rax + 1]
xor byte [rdx + r8 + 1], cl
mov rax, qword [r9 - 8]
mov rdx, qword [rbx + 0x10]
movzx ecx, byte [rdi + rax + 2]
xor byte [rdx + r8 + 2], cl
mov rax, qword [r9 - 8]
mov rdx, qword [rbx + 0x10]
movzx ecx, byte [rdi + rax + 3]
xor byte [rdx + r8 + 3], cl
add r8, 4
cmp r8, 0x10
jl 0x180001770
mov rcx, rbx
call fcn.180001e20
dec ebp
sub rdi, 4
test ebp, ebp
jg 0x180001700
mov rdi, qword [rsp + 0x68]
mov rcx, rbx
call fcn.180002100
mov rdx, rsi
nop dword [rax]
mov rcx, qword [rbx + 0x10]
movzx eax, byte [rcx + rdx]
movzx eax, byte [rax + r12]
mov byte [rcx + rdx], al
mov rcx, qword [rbx + 0x10]
movzx eax, byte [rcx + rdx + 1]
movzx eax, byte [rax + r12]
mov byte [rcx + rdx + 1], al
mov rcx, qword [rbx + 0x10]
movzx eax, byte [rcx + rdx + 2]
movzx eax, byte [rax + r12]
mov byte [rcx + rdx + 2], al
mov rcx, qword [rbx + 0x10]
movzx eax, byte [rcx + rdx + 3]
movzx eax, byte [rax + r12]
mov byte [rcx + rdx + 3], al
add rdx, 4
cmp rdx, 0x10
jl 0x1800017f0
mov r12, qword [rsp + 0x38]
lea eax, [rbp*4]
mov rbp, qword [rsp + 0x58]
movsxd r8, eax
nop dword [rax]
nop dword [rax + rax]
mov rax, qword [r14]
lea r14, [r14 + 8]
mov rdx, qword [rbx + 0x10]
movzx ecx, byte [r8 + rax]
xor byte [rdx + rsi], cl
mov rax, qword [r14 - 8]
mov rdx, qword [rbx + 0x10]
movzx ecx, byte [r8 + rax + 1]
xor byte [rdx + rsi + 1], cl
mov rax, qword [r14 - 8]
mov rdx, qword [rbx + 0x10]
movzx ecx, byte [r8 + rax + 2]
xor byte [rdx + rsi + 2], cl
mov rax, qword [r14 - 8]
mov rdx, qword [rbx + 0x10]
movzx ecx, byte [r8 + rax + 3]
xor byte [rdx + rsi + 3], cl
add rsi, 4
cmp rsi, 0x10
jl 0x180001860
movzx eax, byte [rsp + 0x20]
mov r14, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x60]
mov rbx, qword [rsp + 0x50]
mov byte [r15], al
movzx eax, byte [rsp + 0x21]
mov byte [r15 + 1], al
movzx eax, byte [rsp + 0x22]
mov byte [r15 + 2], al
movzx eax, byte [rsp + 0x23]
mov byte [r15 + 3], al
movzx eax, byte [rsp + 0x24]
mov byte [r15 + 4], al
movzx eax, byte [rsp + 0x25]
mov byte [r15 + 5], al
movzx eax, byte [rsp + 0x26]
mov byte [r15 + 6], al
movzx eax, byte [rsp + 0x27]
mov byte [r15 + 7], al
movzx eax, byte [rsp + 0x28]
mov byte [r15 + 8], al
movzx eax, byte [rsp + 0x29]
mov byte [r15 + 9], al
movzx eax, byte [rsp + 0x2a]
mov byte [r15 + 0xa], al
movzx eax, byte [rsp + 0x2b]
mov byte [r15 + 0xb], al
movzx eax, byte [rsp + 0x2c]
mov byte [r15 + 0xc], al
movzx eax, byte [rsp + 0x2d]
mov byte [r15 + 0xd], al
movzx eax, byte [rsp + 0x2e]
mov byte [r15 + 0xe], al
movzx eax, byte [rsp + 0x2f]
mov byte [r15 + 0xf], al
add rsp, 0x40
pop r15
ret