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

Disassembly:
mov qword [rsp + 0x20], rbx
push rbp
push rsi
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x50
mov rax, qword [0x140047d18]
xor rax, rsp
mov qword [rbp - 0x10], rax
mov r14d, dword [0x1400496bc]
mov rdx, rcx
mov rbx, r8
lea r13d, [r14 - 6]
lea eax, [r13 - 1]
movsxd rcx, eax
test eax, eax
js 0x14002ef50
lea r8, [rcx*4 + 4]
lea rax, [r8 - 4]
and r8, 0xfffffffffffffffc
lea rcx, [rcx*4]
sub rdx, rax
add rdx, rcx
sub rcx, rax
lea rax, [rbp - 0x30]
add rcx, rax
call sub.VCRUNTIME140.dll_memcpy
nop dword [rax + rax]
xor esi, esi
mov qword [rsp + 0x80], rdi
xor r11d, r11d
movsxd r9, r13d
test r13d, r13d
jle 0x14002efd6
xor r8d, r8d
lea edi, [r14 + 1]
xor r10d, r10d
xor edx, edx
cmp esi, edi
jge 0x14002efd6
cmp r8, r9
jge 0x14002efa0
nop word [rax + rax]
cmp rdx, 4
jge 0x14002efa0
mov eax, dword [rbp + r8*4 - 0x30]
lea rcx, [rdx + r10*4]
inc r8
mov dword [rbx + rcx*4], eax
inc rdx
inc r11d
cmp r8, r9
jl 0x14002ef80
cmp rdx, 4
lea eax, [rsi + 1]
cmovne eax, esi
mov esi, eax
xor eax, eax
cmp rdx, 4
cmovne eax, r11d
mov r11d, eax
lea rax, [r10 + 1]
cmovne rax, r10
mov r10, rax
xor eax, eax
cmp rdx, 4
cmovne rax, rdx
mov rdx, rax
cmp r8, r9
jl 0x14002ef71
inc r14d
movsxd r10, esi
movsxd r15, r14d
cmp r10, r15
jge 0x14002f0fe
lea rdi, [rbp - 0x30]
mov qword [rsp + 0x88], r12
sub rdi, 4
movsxd rax, r11d
mov r11, rdi
lea r12, [0x140046b10]
lea r8, str.cw
nop dword [rax]
movzx ecx, byte [rbp + r9*4 - 0x33]
lea r12, [r12 + 4]
movzx edx, byte [rbp - 0x30]
xor dl, byte [rcx + r8]
mov byte [rbp - 0x30], dl
movzx ecx, byte [rbp + r9*4 - 0x32]
movzx ecx, byte [rcx + r8]
xor byte [rbp - 0x2f], cl
movzx ecx, byte [rbp + r9*4 - 0x31]
movzx ecx, byte [rcx + r8]
xor byte [rbp - 0x2e], cl
movzx ecx, byte [rbp + r9*4 - 0x34]
movzx ecx, byte [rcx + r8]
xor byte [rbp - 0x2d], cl
mov ecx, dword [r12 - 4]
xor cl, dl
mov edx, 1
mov byte [rbp - 0x30], cl
cmp r13d, 8
je 0x14002f130
cmp rdx, r9
jge 0x14002f083
nop
mov ecx, dword [r11 + rdx*4]
mov r11, rdi
xor dword [rbp + rdx*4 - 0x30], ecx
inc rdx
cmp rdx, r9
jl 0x14002f070
lea r11, [rbp - 0x30]
sub r11, 4
xor r8d, r8d
test r13d, r13d
jle 0x14002f0e6
cmp esi, r14d
jge 0x14002f0e6
cmp r8, r9
jge 0x14002f0bd
nop dword [rax]
cmp rax, 4
jge 0x14002f0bd
mov ecx, dword [rbp + r8*4 - 0x30]
lea rdx, [rax + r10*4]
inc r8
mov dword [rbx + rdx*4], ecx
inc rax
cmp r8, r9
jl 0x14002f0a0
cmp rax, 4
lea ecx, [rsi + 1]
cmovne ecx, esi
mov esi, ecx
lea rcx, [r10 + 1]
cmovne rcx, r10
mov r10, rcx
xor ecx, ecx
cmp rax, 4
cmovne rcx, rax
mov rax, rcx
cmp r8, r9
jl 0x14002f093
lea r8, str.cw
cmp r10, r15
jl 0x14002f010
mov r12, qword [rsp + 0x88]
mov rdi, qword [rsp + 0x80]
xor eax, eax
mov rcx, qword [rbp - 0x10]
xor rcx, rsp
call fcn.140032dc0
mov rbx, qword [rsp + 0x98]
add rsp, 0x50
pop r15
pop r14
pop r13
pop rsi
pop rbp
ret
mov ecx, dword [rdi + rdx*4]
mov r11, rdi
xor dword [rbp + rdx*4 - 0x30], ecx
inc rdx
cmp rdx, 4
jl 0x14002f130
movzx ecx, byte [rbp - 0x24]
mov edx, 5
movzx ecx, byte [rcx + r8]
xor byte [rbp - 0x20], cl
movzx ecx, byte [rbp - 0x23]
movzx ecx, byte [rcx + r8]
xor byte [rbp - 0x1f], cl
movzx ecx, byte [rbp - 0x22]
movzx ecx, byte [rcx + r8]
xor byte [rbp - 0x1e], cl
movzx ecx, byte [rbp - 0x21]
movzx ecx, byte [rcx + r8]
xor byte [rbp - 0x1d], cl
cmp rdx, r9
jge 0x14002f08b
mov ecx, dword [rdi + rdx*4]
xor dword [rbp + rdx*4 - 0x30], ecx
inc rdx
cmp rdx, r9
jl 0x14002f181
xor r8d, r8d
jmp 0x14002f093