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

Disassembly:
push r12
push r14
sub rsp, 0x18
mov eax, dword [rcx + 4]
lea r14, [rcx + 4]
xor dword [rdx], eax
lea r12, str.cw
mov eax, dword [rdx + 4]
xor eax, dword [r14 + 4]
mov dword [rdx + 4], eax
mov eax, dword [rdx + 8]
xor eax, dword [r14 + 8]
mov dword [rdx + 8], eax
mov eax, dword [rdx + 0xc]
xor eax, dword [r14 + 0xc]
add r14, 0x10
mov dword [rdx + 0xc], eax
movzx eax, word [rcx]
cmp eax, 1
jbe 0x14029aee0
mov qword [rsp + 0x30], rbx
mov qword [rsp + 0x40], rbp
mov qword [rsp + 0x10], rsi
mov qword [rsp + 8], rdi
mov qword [rsp], r15
lea r15d, [rax - 1]
movzx eax, byte [rdx + 3]
movzx r10d, byte [rax + r12]
movzx eax, byte [rdx + 6]
movzx r11d, byte [rax + r12]
movzx eax, byte [rdx + 9]
movzx r8d, byte [rax + r12]
movzx eax, byte [rdx + 0xc]
movzx r9d, byte [rax + r12]
imul eax, r8d, 0x10100
imul ecx, r9d, 0x101
xor ecx, eax
imul eax, r11d, 0x1010000
xor ecx, eax
imul eax, r10d, 0x1000001
xor ecx, eax
mov eax, ecx
and ecx, 0xff7f7f7f
shr eax, 7
add ecx, ecx
and eax, 0x1010101
imul ebp, eax, 0x1b
imul eax, r8d, 0x1010001
xor ebp, ecx
xor ebp, eax
imul eax, r10d, 0x10101
xor ebp, eax
imul eax, r9d, 0x1010100
xor ebp, eax
imul eax, r11d, 0x1000101
xor ebp, eax
movzx eax, byte [rdx + 7]
movzx r10d, byte [rax + r12]
movzx eax, byte [rdx + 0xa]
movzx r11d, byte [rax + r12]
movzx eax, byte [rdx + 0xd]
movzx r8d, byte [rax + r12]
movzx eax, byte [rdx]
movzx r9d, byte [rax + r12]
imul eax, r8d, 0x10100
imul ecx, r9d, 0x101
xor ecx, eax
imul eax, r11d, 0x1010000
xor ecx, eax
imul eax, r10d, 0x1000001
xor ecx, eax
mov eax, ecx
and ecx, 0xff7f7f7f
shr eax, 7
add ecx, ecx
and eax, 0x1010101
imul esi, eax, 0x1b
imul eax, r8d, 0x1010001
xor esi, ecx
xor esi, eax
imul eax, r10d, 0x10101
xor esi, eax
imul eax, r9d, 0x1010100
xor esi, eax
imul eax, r11d, 0x1000101
xor esi, eax
movzx eax, byte [rdx + 0xb]
movzx r10d, byte [rax + r12]
movzx eax, byte [rdx + 0xe]
movzx r11d, byte [rax + r12]
movzx eax, byte [rdx + 1]
movzx r8d, byte [rax + r12]
movzx eax, byte [rdx + 4]
movzx r9d, byte [rax + r12]
imul eax, r8d, 0x10100
imul ecx, r9d, 0x101
xor ecx, eax
imul eax, r11d, 0x1010000
xor ecx, eax
imul eax, r10d, 0x1000001
xor ecx, eax
mov eax, ecx
and ecx, 0xff7f7f7f
shr eax, 7
and eax, 0x1010101
imul edi, eax, 0x1b
add ecx, ecx
xor ebp, dword [r14]
xor edi, ecx
imul eax, r8d, 0x1010001
xor edi, eax
imul eax, r10d, 0x10101
xor edi, eax
imul eax, r9d, 0x1010100
xor edi, eax
imul eax, r11d, 0x1000101
xor edi, eax
movzx eax, byte [rdx + 0xf]
movzx r11d, byte [rax + r12]
movzx eax, byte [rdx + 2]
movzx ebx, byte [rax + r12]
movzx eax, byte [rdx + 5]
movzx r8d, byte [rax + r12]
movzx eax, byte [rdx + 8]
movzx r9d, byte [rax + r12]
mov dword [rdx], ebp
xor esi, dword [r14 + 4]
imul eax, r8d, 0x10100
imul ecx, r9d, 0x101
mov dword [rdx + 4], esi
xor edi, dword [r14 + 8]
mov dword [rdx + 8], edi
xor ecx, eax
imul eax, ebx, 0x1010000
xor ecx, eax
imul eax, r11d, 0x1000001
xor ecx, eax
mov eax, ecx
and ecx, 0xff7f7f7f
shr eax, 7
add ecx, ecx
and eax, 0x1010101
imul r10d, eax, 0x1b
imul eax, r8d, 0x1010001
xor r10d, ecx
xor r10d, eax
imul eax, r11d, 0x10101
xor r10d, eax
imul eax, r9d, 0x1010100
xor r10d, eax
imul eax, ebx, 0x1000101
xor r10d, eax
xor r10d, dword [r14 + 0xc]
add r14, 0x10
mov dword [rdx + 0xc], r10d
sub r15, 1
jne 0x14029ac92
mov r15, qword [rsp]
mov rdi, qword [rsp + 8]
mov rsi, qword [rsp + 0x10]
mov rbp, qword [rsp + 0x40]
mov rbx, qword [rsp + 0x30]
nop word [rax + rax]
movzx eax, byte [rdx + 3]
movzx r11d, byte [rax + r12]
movzx eax, byte [rdx + 6]
shl r11d, 8
movzx ecx, byte [rax + r12]
movzx eax, byte [rdx + 9]
or r11d, ecx
shl r11d, 8
movzx ecx, byte [rax + r12]
movzx eax, byte [rdx + 0xc]
or r11d, ecx
shl r11d, 8
movzx ecx, byte [rax + r12]
movzx eax, byte [rdx + 7]
or r11d, ecx
xor r11d, dword [r14]
movzx r10d, byte [rax + r12]
movzx eax, byte [rdx + 0xa]
shl r10d, 8
movzx ecx, byte [rax + r12]
movzx eax, byte [rdx + 0xd]
or r10d, ecx
shl r10d, 8
movzx ecx, byte [rax + r12]
movzx eax, byte [rdx]
or r10d, ecx
shl r10d, 8
movzx ecx, byte [rax + r12]
movzx eax, byte [rdx + 0xb]
or r10d, ecx
movzx r9d, byte [rax + r12]
movzx eax, byte [rdx + 0xe]
shl r9d, 8
movzx ecx, byte [rax + r12]
movzx eax, byte [rdx + 1]
or r9d, ecx
shl r9d, 8
movzx ecx, byte [rax + r12]
movzx eax, byte [rdx + 4]
or r9d, ecx
shl r9d, 8
movzx ecx, byte [rax + r12]
movzx eax, byte [rdx + 0xf]
or r9d, ecx
movzx r8d, byte [rax + r12]
movzx eax, byte [rdx + 2]
shl r8d, 8
movzx ecx, byte [rax + r12]
movzx eax, byte [rdx + 5]
or r8d, ecx
shl r8d, 8
movzx ecx, byte [rax + r12]
movzx eax, byte [rdx + 8]
or r8d, ecx
shl r8d, 8
movzx ecx, byte [rax + r12]
mov dword [rdx], r11d
or r8d, ecx
xor r10d, dword [r14 + 4]
mov dword [rdx + 4], r10d
xor r9d, dword [r14 + 8]
mov dword [rdx + 8], r9d
xor r8d, dword [r14 + 0xc]
mov dword [rdx + 0xc], r8d
add rsp, 0x18
pop r14
pop r12
ret