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

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x10
test dword [rcx], 0x3fffffff
je 0x1400ae9ba
xor eax, eax
nop word [rax + rax]
movzx r9d, byte [rdx + rax]
mov byte [r8 + rax], r9b
inc rax
mov r11d, dword [rcx]
shl r11d, 2
cmp rax, r11
jb 0x1400ae9a0
jmp 0x1400ae9bd
xor r11d, r11d
mov eax, dword [rcx + 4]
shl eax, 4
add eax, 0x10
cmp r11d, eax
jae 0x1400aec2d
mov r9d, r11d
xor eax, eax
mov qword [rsp], rax
mov qword [rsp + 8], rcx
jmp 0x1400aea6f
mov r13b, 1
xor r13b, dil
shl r14d, 2
mov eax, r9d
mov edx, r9d
sub edx, r14d
xor r13b, byte [r8 + rdx]
mov byte [r8 + r9], r13b
mov rdx, rax
or rdx, 1
mov rcx, qword [rsp + 8]
mov r10d, dword [rcx]
shl r10d, 2
mov esi, edx
sub esi, r10d
xor bpl, byte [r8 + rsi]
mov byte [r8 + rdx], bpl
mov rdx, rax
or rdx, 2
mov r10d, dword [rcx]
shl r10d, 2
mov esi, edx
sub esi, r10d
xor r15b, byte [r8 + rsi]
mov byte [r8 + rdx], r15b
or rax, 3
mov edx, dword [rcx]
shl edx, 2
mov r10d, eax
sub r10d, edx
xor r12b, byte [r8 + r10]
mov byte [r8 + rax], r12b
add r9, 4
mov eax, dword [rcx + 4]
shl eax, 4
add eax, 0x10
mov rdx, qword [rsp]
inc edx
mov qword [rsp], rdx
cmp r9, rax
jae 0x1400aec2d
mov edx, 0xfffffffc
lea eax, [rdx + r9]
and eax, 0xfffffffc
movzx r13d, byte [r8 + rax]
movzx r10d, r13b
lea eax, [rdx + r9]
inc eax
and eax, 0xfffffffd
movzx ebp, byte [r8 + rax]
movzx edi, bpl
lea eax, [rdx + r9]
add eax, 2
and eax, 0xfffffffe
movzx r15d, byte [r8 + rax]
movzx esi, r15b
lea eax, [rdx + r9]
add eax, 3
movzx r12d, byte [r8 + rax]
movzx ebx, r12b
mov rax, r9
shr rax, 2
mov r14d, dword [rcx]
xor edx, edx
div r14d
test edx, edx
je 0x1400aeb30
cmp r14d, 7
jb 0x1400ae9e8
cmp edx, 4
jne 0x1400ae9e8
mov eax, r10d
and eax, 0xfffffff0
and r10d, 0xf
lea rcx, str.cw
add rax, rcx
movzx r13d, byte [r10 + rax]
mov eax, edi
and eax, 0xfffffff0
and edi, 0xf
add rax, rcx
movzx ebp, byte [rdi + rax]
mov eax, esi
and eax, 0xfffffff0
and esi, 0xf
add rax, rcx
movzx r15d, byte [rsi + rax]
mov eax, ebx
and eax, 0xfffffff0
and ebx, 0xf
add rax, rcx
movzx r12d, byte [rbx + rax]
jmp 0x1400ae9e8
mov eax, edi
and eax, 0xfffffff0
and edi, 0xf
lea rcx, str.cw
add rax, rcx
movzx edi, byte [rdi + rax]
mov eax, esi
and eax, 0xfffffff0
and esi, 0xf
add rax, rcx
movzx ebp, byte [rsi + rax]
mov eax, ebx
and eax, 0xfffffff0
and ebx, 0xf
add rax, rcx
movzx r15d, byte [rbx + rax]
mov eax, r10d
and eax, 0xfffffff0
and r10d, 0xf
add rax, rcx
movzx r12d, byte [r10 + rax]
lea esi, [r14*4]
mov eax, r9d
xor edx, edx
div esi
mov r10d, eax
dec r10d
je 0x1400ae9e2
mov rax, qword [rsp]
lea eax, [r11 + rax*4]
xor edx, edx
div esi
add eax, 0xfffffffe
mov r13b, 1
cmp eax, 3
jb 0x1400aebfb
mov eax, r10d
and eax, 0xfffffffc
mov dl, 1
nop word cs:[rax + rax]
lea r13d, [rdx + rdx]
sar dl, 7
and dl, 0x1b
xor dl, r13b
add dl, dl
sar r13b, 7
and r13b, 0x1b
xor r13b, dl
add r13b, r13b
sar dl, 7
and dl, 0x1b
xor dl, r13b
add dl, dl
sar r13b, 7
and r13b, 0x1b
xor r13b, dl
mov edx, r13d
add eax, 0xfffffffc
jne 0x1400aebc0
and r10d, 3
je 0x1400ae9e5
nop word cs:[rax + rax]
lea eax, [r13*2]
sar r13b, 7
and r13b, 0x1b
xor r13b, al
dec r10d
jne 0x1400aec10
jmp 0x1400ae9e5
add rsp, 0x10
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret