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

Disassembly:
mov qword [rsp + 0x18], rbx
mov qword [rsp + 8], rcx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x20
mov rbx, rdx
mov r15, rcx
call fcn.1801aaeb0
mov r11b, 0x10
nop word [rax + rax]
mov rax, qword [r15 + 0x30]
add r11b, 0xff
movzx ecx, r11b
lea rdx, [rcx + rbx]
movzx ecx, byte [rcx + rax]
xor byte [rdx], cl
test r11b, r11b
jne 0x1801aaa70
mov r13b, 1
lea r8, [rbx + 3]
mov byte [rsp + 0x68], r13b
lea r12, [rbx + 0x10]
lea r9, str.cw
mov dl, 0x10
mov rcx, r12
nop word [rax + rax]
movzx eax, byte [rcx - 1]
lea rcx, [rcx - 1]
movzx eax, byte [rax + r9]
mov byte [rcx], al
add dl, 0xff
jne 0x1801aaab0
movzx eax, byte [rbx + 5]
xor r12b, r12b
movzx ecx, byte [rbx + 1]
mov r15, r8
mov byte [rbx + 1], al
movzx eax, byte [rbx + 9]
mov byte [rbx + 5], al
movzx eax, byte [rbx + 0xd]
mov byte [rbx + 9], al
movzx eax, byte [rbx + 2]
mov byte [rbx + 0xd], cl
movzx ecx, byte [rbx + 0xa]
mov byte [rbx + 0xa], al
movzx eax, byte [rbx + 0xf]
mov byte [rbx + 2], cl
movzx ecx, byte [r8]
mov byte [r8], al
movzx eax, byte [rbx + 0xb]
mov byte [rbx + 0xf], al
movzx eax, byte [rbx + 7]
mov byte [rbx + 0xb], al
movzx eax, byte [rbx + 6]
mov byte [rbx + 7], cl
movzx ecx, byte [rbx + 0xe]
mov byte [rbx + 0xe], al
mov byte [rbx + 6], cl
nop
movzx esi, byte [r15 - 3]
movzx r14d, byte [r15]
movzx edi, byte [r15 - 1]
lea r15, [r15 + 4]
movzx r10d, r12b
movzx r11d, r14b
xor r11b, dil
movzx ebp, r11b
movzx r9d, byte [r10 + rbx + 1]
xor bpl, r9b
movzx r8d, r9b
xor r8b, sil
xor bpl, sil
movzx eax, r8b
add al, al
movzx ecx, al
movzx eax, cl
xor al, 0x1b
movzx edx, al
test r8b, r8b
movzx r8d, dil
cmovns edx, ecx
xor r8b, r9b
xor dl, bpl
movzx eax, r8b
xor dl, sil
add al, al
mov byte [r15 - 7], dl
movzx ecx, al
movzx eax, cl
xor al, 0x1b
movzx edx, al
test r8b, r8b
movzx eax, r11b
movzx r8d, r14b
cmovns edx, ecx
add al, al
xor dl, r9b
movzx ecx, al
xor dl, bpl
movzx eax, cl
xor al, 0x1b
mov byte [r10 + rbx + 1], dl
movzx edx, al
test r11b, r11b
cmovns edx, ecx
xor r8b, sil
xor dl, bpl
movzx eax, r8b
xor dl, dil
add al, al
mov byte [r15 - 5], dl
movzx ecx, al
movzx eax, cl
xor al, 0x1b
test r8b, r8b
movzx edx, al
cmovns edx, ecx
add r12b, 4
xor dl, bpl
xor dl, r14b
mov byte [r15 - 4], dl
cmp r12b, 0x10
jb 0x1801aab20
mov r15, qword [rsp + 0x60]
lea r12, [rbx + 0x10]
movzx edi, r13b
and dil, 1
jne 0x1801aac15
lea rdx, [rsp + 0x68]
mov rcx, r15
call fcn.1801aad30
mov dl, 0x10
mov r8, r12
nop word [rax + rax]
add dl, 0xff
lea r8, [r8 - 1]
movzx ecx, dl
test dil, dil
lea eax, [rcx + 0x10]
cmove eax, ecx
mov ecx, eax
mov rax, qword [r15 + 0x30]
movzx ecx, byte [rcx + rax]
xor byte [r8], cl
test dl, dl
jne 0x1801aac20
inc r13b
lea r8, [rbx + 3]
lea r9, str.cw
cmp r13b, 0xe
jb 0x1801aaaa2
mov dl, 0x10
lea r8, str.cw
mov rcx, r12
nop dword [rax + rax]
movzx eax, byte [rcx - 1]
lea rcx, [rcx - 1]
movzx eax, byte [rax + r8]
mov byte [rcx], al
add dl, 0xff
jne 0x1801aac70
movzx ecx, byte [rbx + 1]
lea rdx, [rsp + 0x68]
movzx eax, byte [rbx + 5]
mov byte [rbx + 1], al
movzx eax, byte [rbx + 9]
mov byte [rbx + 5], al
movzx eax, byte [rbx + 0xd]
mov byte [rbx + 9], al
movzx eax, byte [rbx + 2]
mov byte [rbx + 0xd], cl
movzx ecx, byte [rbx + 0xa]
mov byte [rbx + 0xa], al
movzx eax, byte [rbx + 0xf]
mov byte [rbx + 2], cl
movzx ecx, byte [rbx + 3]
mov byte [rbx + 3], al
movzx eax, byte [rbx + 0xb]
mov byte [rbx + 0xf], al
movzx eax, byte [rbx + 7]
mov byte [rbx + 7], cl
movzx ecx, byte [rbx + 0xe]
mov byte [rbx + 0xb], al
movzx eax, byte [rbx + 6]
mov byte [rbx + 6], cl
mov rcx, r15
mov byte [rbx + 0xe], al
call fcn.1801aad30
mov dl, 0x10
and r13b, 1
nop dword [rax + rax]
add dl, 0xff
lea r12, [r12 - 1]
movzx ecx, dl
test r13b, r13b
lea eax, [rcx + 0x10]
cmove eax, ecx
mov ecx, eax
mov rax, qword [r15 + 0x30]
movzx ecx, byte [rcx + rax]
xor byte [r12], cl
test dl, dl
jne 0x1801aacf0
mov rbx, qword [rsp + 0x70]
add rsp, 0x20
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret