Function at 0x180012170
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, 0xb8
movdqa xmmword [rsp + 0xa0], xmm12
movdqa xmmword [rsp + 0x90], xmm11
movaps xmmword [rsp + 0x80], xmm10
movaps xmmword [rsp + 0x70], xmm9
movdqa xmmword [rsp + 0x60], xmm8
movdqa xmmword [rsp + 0x50], xmm7
movdqa xmmword [rsp + 0x40], xmm6
mov r13, rcx
movzx eax, byte [rdx]
xor byte [rcx], al
movzx eax, byte [rdx + 1]
xor byte [rcx + 1], al
movzx eax, byte [rdx + 2]
xor byte [rcx + 2], al
movzx eax, byte [rdx + 3]
xor byte [rcx + 3], al
movzx eax, byte [rdx + 4]
xor byte [rcx + 4], al
movzx eax, byte [rdx + 5]
xor byte [rcx + 5], al
movzx eax, byte [rdx + 6]
xor byte [rcx + 6], al
movzx eax, byte [rdx + 7]
xor byte [rcx + 7], al
movzx eax, byte [rdx + 8]
xor byte [rcx + 8], al
movzx eax, byte [rdx + 9]
xor byte [rcx + 9], al
movzx eax, byte [rdx + 0xa]
xor byte [rcx + 0xa], al
movzx eax, byte [rdx + 0xb]
xor byte [rcx + 0xb], al
movzx eax, byte [rdx + 0xc]
xor byte [rcx + 0xc], al
movzx eax, byte [rdx + 0xd]
xor byte [rcx + 0xd], al
movzx eax, byte [rdx + 0xe]
xor byte [rcx + 0xe], al
mov qword [rsp + 0x38], rdx
movzx eax, byte [rdx + 0xf]
xor byte [rcx + 0xf], al
mov bl, 1
pxor xmm8, xmm8
movdqa xmm10, xmmword [0x18002e2b0]
movdqa xmm9, xmmword [0x18002e2c0]
nop dword [rax + rax]
mov byte [rsp + 0x2e], bl
movzx eax, byte [r13]
lea rsi, str.cw
movzx eax, byte [rax + rsi]
mov byte [r13], al
movzx eax, byte [r13 + 4]
movzx eax, byte [rax + rsi]
mov byte [r13 + 4], al
movzx eax, byte [r13 + 8]
movzx eax, byte [rax + rsi]
mov byte [r13 + 8], al
movzx eax, byte [r13 + 0xc]
movzx eax, byte [rax + rsi]
mov byte [r13 + 0xc], al
movzx eax, byte [r13 + 1]
movzx r15d, byte [rax + rsi]
movzx ecx, byte [r13 + 5]
movzx r9d, byte [rcx + rsi]
movzx ecx, byte [r13 + 9]
movzx ecx, byte [rcx + rsi]
movzx edx, byte [r13 + 0xd]
movzx r10d, byte [rdx + rsi]
movzx edx, byte [r13 + 2]
movzx r12d, byte [rdx + rsi]
mov dword [rsp + 0x30], r12d
movzx edx, byte [r13 + 6]
movzx r8d, byte [rdx + rsi]
movzx ebp, byte [r13 + 0xa]
movzx edx, byte [rbp + rsi]
mov dword [rsp + 0x34], edx
movzx ebp, byte [r13 + 0xe]
movzx ebx, byte [rbp + rsi]
movzx ebp, byte [r13 + 3]
movzx edi, byte [rbp + rsi]
movzx ebp, byte [r13 + 7]
movzx r11d, byte [rbp + rsi]
movzx ebp, byte [r13 + 0xb]
movzx ebp, byte [rbp + rsi]
movzx eax, byte [r13 + 0xf]
movzx r14d, byte [rax + rsi]
mov esi, r9d
mov byte [r13 + 1], sil
mov byte [r13 + 5], cl
mov byte [r13 + 9], r10b
mov byte [r13 + 0xd], r15b
mov byte [r13 + 2], dl
mov byte [r13 + 0xa], r12b
mov byte [r13 + 6], bl
mov byte [r13 + 0xe], r8b
mov byte [r13 + 3], r14b
mov byte [r13 + 0xf], bpl
mov byte [r13 + 0xb], r11b
mov byte [r13 + 7], dil
movzx r9d, byte [r13]
movzx r12d, byte [r13 + 8]
movzx eax, byte [r13 + 0xc]
shl eax, 8
or eax, r12d
movzx edx, byte [r13 + 4]
shl edx, 8
or edx, r9d
movd xmm11, edx
pinsrw xmm11, eax, 1
shl r15d, 8
or r15d, r10d
shl ecx, 8
or ecx, esi
movd xmm4, ecx
pinsrw xmm4, r15d, 1
shl r8d, 8
add r8d, dword [rsp + 0x30]
shl ebx, 8
add ebx, dword [rsp + 0x34]
movd xmm6, ebx
movzx ebx, byte [rsp + 0x2e]
pinsrw xmm6, r8d, 1
shl ebp, 8
or ebp, r11d
shl edi, 8
or edi, r14d
movd xmm3, edi
pinsrw xmm3, ebp, 1
movdqa xmm1, xmm4
pxor xmm1, xmm11
movdqa xmm12, xmm1
pxor xmm12, xmm6
movdqa xmm5, xmm12
pxor xmm5, xmm3
movdqa xmm2, xmm1
paddb xmm2, xmm1
pxor xmm0, xmm0
pcmpgtb xmm0, xmm1
pand xmm0, xmm10
pxor xmm2, xmm11
pxor xmm2, xmm0
pxor xmm2, xmm5
movdqa xmm0, xmm3
pxor xmm0, xmm6
pxor xmm6, xmm4
pxor xmm7, xmm7
pcmpgtb xmm7, xmm6
paddb xmm6, xmm6
pand xmm7, xmm10
pxor xmm6, xmm4
pxor xmm6, xmm5
pxor xmm6, xmm7
punpckldq xmm2, xmm6
pxor xmm4, xmm4
pcmpgtb xmm4, xmm0
paddb xmm0, xmm0
pand xmm4, xmm10
pxor xmm1, xmm3
pxor xmm1, xmm0
pxor xmm1, xmm4
pxor xmm3, xmm11
pxor xmm0, xmm0
pcmpgtb xmm0, xmm3
paddb xmm3, xmm3
pand xmm0, xmm10
pxor xmm3, xmm12
pxor xmm3, xmm0
punpckldq xmm1, xmm3
punpcklbw xmm2, xmm8
pshufd xmm0, xmm2, 0xd7
pshuflw xmm0, xmm0, 0xe2
pshufhw xmm0, xmm0, 0xed
pshufd xmm2, xmm2, 0x28
pshuflw xmm2, xmm2, 0xe8
pshufhw xmm2, xmm2, 0xe7
packuswb xmm2, xmm0
pand xmm2, xmm9
punpcklbw xmm1, xmm8
pshufd xmm0, xmm1, 0xd7
pshuflw xmm0, xmm0, 0x24
pshufhw xmm0, xmm0, 0xd4
pshufd xmm1, xmm1, 0x28
pshuflw xmm1, xmm1, 0x84
pshufhw xmm1, xmm1, 0x74
packuswb xmm1, xmm0
movdqa xmm0, xmm9
pandn xmm0, xmm1
por xmm0, xmm2
movdqu xmmword [r13], xmm0
mov ecx, ebx
mov rdx, r13
mov r8, qword [rsp + 0x38]
call fcn.1800129a0
inc bl
cmp bl, 0xe
jne 0x180012250
movzx eax, byte [r13]
lea rdx, str.cw
movzx r12d, byte [rax + rdx]
mov byte [r13], r12b
movzx eax, byte [r13 + 4]
movzx eax, byte [rax + rdx]
mov byte [rsp + 0x30], al
mov byte [r13 + 4], al
movzx eax, byte [r13 + 8]
movzx eax, byte [rax + rdx]
mov byte [rsp + 0x34], al
mov byte [r13 + 8], al
movzx eax, byte [r13 + 0xc]
movzx eax, byte [rax + rdx]
mov byte [rsp + 0x2e], al
mov byte [r13 + 0xc], al
movzx eax, byte [r13 + 1]
movzx eax, byte [rax + rdx]
mov byte [rsp + 0x2f], al
movzx eax, byte [r13 + 5]
movzx ebx, byte [rax + rdx]
movzx eax, byte [r13 + 9]
movzx r11d, byte [rax + rdx]
movzx eax, byte [r13 + 0xd]
movzx r15d, byte [rax + rdx]
movzx eax, byte [r13 + 2]
movzx r14d, byte [rax + rdx]
movzx eax, byte [r13 + 6]
movzx esi, byte [rax + rdx]
movzx eax, byte [r13 + 0xa]
movzx r8d, byte [rax + rdx]
movzx ecx, byte [r13 + 0xe]
movzx r9d, byte [rcx + rdx]
movzx ecx, byte [r13 + 3]
movzx ecx, byte [rcx + rdx]
movzx edi, byte [r13 + 7]
movzx r10d, byte [rdi + rdx]
movzx edi, byte [r13 + 0xb]
movzx ebp, byte [rdi + rdx]
movzx edi, byte [r13 + 0xf]
movzx edi, byte [rdi + rdx]
mov byte [r13 + 1], bl
mov byte [r13 + 5], r11b
mov byte [r13 + 9], r15b
movzx edx, byte [rsp + 0x2f]
mov byte [r13 + 0xd], dl
mov byte [r13 + 2], r8b
mov byte [r13 + 0xa], r14b
mov byte [r13 + 6], r9b
mov byte [r13 + 0xe], sil
mov byte [r13 + 3], dil
mov byte [r13 + 0xf], bpl
mov byte [r13 + 0xb], r10b
mov byte [r13 + 7], cl
mov rax, qword [rsp + 0x38]
xor r12b, byte [rax + 0xe0]
mov byte [r13], r12b
xor bl, byte [rax + 0xe1]
mov byte [r13 + 1], bl
xor r8b, byte [rax + 0xe2]
mov byte [r13 + 2], r8b
xor dil, byte [rax + 0xe3]
mov byte [r13 + 3], dil
movzx ebx, byte [rsp + 0x30]
xor bl, byte [rax + 0xe4]
mov byte [r13 + 4], bl
xor r11b, byte [rax + 0xe5]
mov byte [r13 + 5], r11b
xor r9b, byte [rax + 0xe6]
mov byte [r13 + 6], r9b
xor cl, byte [rax + 0xe7]
mov byte [r13 + 7], cl
movzx ecx, byte [rsp + 0x34]
xor cl, byte [rax + 0xe8]
mov byte [r13 + 8], cl
xor r15b, byte [rax + 0xe9]
mov byte [r13 + 9], r15b
xor r14b, byte [rax + 0xea]
mov byte [r13 + 0xa], r14b
xor r10b, byte [rax + 0xeb]
mov byte [r13 + 0xb], r10b
movzx ecx, byte [rsp + 0x2e]
xor cl, byte [rax + 0xec]
mov byte [r13 + 0xc], cl
mov ecx, edx
xor cl, byte [rax + 0xed]
mov byte [r13 + 0xd], cl
xor sil, byte [rax + 0xee]
mov byte [r13 + 0xe], sil
xor bpl, byte [rax + 0xef]
mov byte [r13 + 0xf], bpl
movaps xmm6, xmmword [rsp + 0x40]
movaps xmm7, xmmword [rsp + 0x50]
movaps xmm8, xmmword [rsp + 0x60]
movaps xmm9, xmmword [rsp + 0x70]
movaps xmm10, xmmword [rsp + 0x80]
movaps xmm11, xmmword [rsp + 0x90]
movaps xmm12, xmmword [rsp + 0xa0]
add rsp, 0xb8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret