Function at 0x1801970d0
Capabilities:
Encode data using xor
Encrypt data using aes via x86 extensions

Disassembly:
push rbp
push rbx
push rdi
push r14
push r15
mov rbp, rsp
sub rsp, 0x50
mov rax, qword [0x18029e198]
xor rax, rsp
mov qword [rbp - 0x20], rax
mov r14, qword [rbp + 0x50]
lea rax, [r8 + 0xf]
mov rbx, r8
shr rax, 4
and ebx, 0xf
mov qword [rbp - 0x30], 0
mov qword [rbp - 0x28], 0
mov r15, r9
mov r9, rdx
mov rdi, rcx
test rax, rax
je 0x18019735b
mov qword [rsp + 0x48], rsi
lea r8, [rax - 1]
xor esi, esi
test r8, r8
je 0x180197275
nop word [rax + rax]
movzx ecx, byte [r14]
mov rdx, rsi
add rdx, rdx
inc rsi
lea rax, [rcx + 1]
movdqu xmm0, xmmword [r9 + rdx*8]
add rax, rax
movdqu xmm1, xmmword [rdi + rax*8]
lea rax, [rcx + 4]
add rax, rax
pxor xmm1, xmm0
pxor xmm1, xmmword [rdi + rax*8]
lea rax, [rcx + 3]
add rax, rax
add rcx, 2
add rcx, rcx
movdqu xmm0, xmmword [rdi + rax*8]
pand xmm0, xmmword [rdi + rcx*8]
pxor xmm1, xmm0
movdqu xmmword [r15 + rdx*8], xmm1
movzx ecx, byte [r14]
movzx eax, cl
shr al, 3
dec al
and al, 1
shl al, 3
movzx edx, al
lea rax, [rcx + 4]
add rax, rax
add rcx, 3
add rcx, rcx
movdqu xmm0, xmmword [rdi + rcx*8]
aesenc xmm0, xmmword [rdi + rax*8]
lea rax, [rdx + 4]
add rax, rax
movdqu xmmword [rdi + rax*8], xmm0
movzx ecx, byte [r14]
lea rax, [rcx + 3]
add rcx, 2
add rax, rax
add rcx, rcx
movdqu xmm0, xmmword [rdi + rcx*8]
aesenc xmm0, xmmword [rdi + rax*8]
lea rax, [rdx + 3]
add rax, rax
movdqu xmmword [rdi + rax*8], xmm0
movzx eax, byte [r14]
lea rcx, [rax + 2]
inc rax
add rax, rax
add rcx, rcx
movdqu xmm0, xmmword [rdi + rax*8]
lea rax, [rdx + 2]
aesenc xmm0, xmmword [rdi + rcx*8]
add rax, rax
movdqu xmmword [rdi + rax*8], xmm0
movzx eax, byte [r14]
lea rcx, [rax + 1]
add rax, rax
add rcx, rcx
movdqu xmm0, xmmword [rdi + rax*8]
lea rax, [rdx + 1]
aesenc xmm0, xmmword [rdi + rcx*8]
add rax, rax
movdqu xmmword [rdi + rax*8], xmm0
movzx ecx, byte [r14]
mov eax, ecx
add rax, rax
pxor xmm1, xmmword [rdi + rax*8]
lea rax, [rcx + 4]
add rax, rax
movdqu xmm0, xmmword [rdi + rax*8]
mov eax, edx
add rax, rax
aesenc xmm0, xmm1
movdqu xmmword [rdi + rax*8], xmm0
mov byte [r14], dl
cmp rsi, r8
jb 0x180197140
add rsi, rsi
lea rcx, [r9 + rsi*8]
test rbx, rbx
je 0x1801972fc
mov rdx, rcx
mov r8, rbx
lea rcx, [rbp - 0x30]
call fcn.18020b760
movzx ecx, byte [r14]
lea rdx, [rbp - 0x30]
movdqu xmm1, xmmword [rbp - 0x30]
mov r8, rbx
lea rax, [rcx + 1]
add rax, rax
pxor xmm1, xmmword [rdi + rax*8]
lea rax, [rcx + 4]
add rax, rax
pxor xmm1, xmmword [rdi + rax*8]
lea rax, [rcx + 3]
add rcx, 2
add rax, rax
add rcx, rcx
movdqu xmm0, xmmword [rdi + rax*8]
pand xmm0, xmmword [rdi + rcx*8]
lea rcx, [r15 + rsi*8]
pxor xmm1, xmm0
movdqu xmmword [rbp - 0x30], xmm1
call fcn.18020b760
mov byte [rbp + rbx - 0x30], 0
inc rbx
cmp rbx, 0x10
jb 0x1801972e2
movdqu xmm0, xmmword [rbp - 0x30]
movdqa xmmword [rbp - 0x30], xmm0
jmp 0x180197347
movzx edx, byte [r14]
movdqu xmm0, xmmword [rcx]
lea rax, [rdx + 1]
add rax, rax
movdqu xmm1, xmmword [rdi + rax*8]
lea rax, [rdx + 4]
add rax, rax
pxor xmm1, xmm0
pxor xmm1, xmmword [rdi + rax*8]
lea rax, [rdx + 3]
add rax, rax
add rdx, 2
add rdx, rdx
movdqu xmm0, xmmword [rdi + rax*8]
pand xmm0, xmmword [rdi + rdx*8]
pxor xmm1, xmm0
movdqa xmmword [rbp - 0x30], xmm1
movdqu xmmword [r15 + rsi*8], xmm1
mov r8, r14
lea rdx, [rbp - 0x30]
mov rcx, rdi
call fcn.1801985a0
mov rsi, qword [rsp + 0x48]
mov rcx, qword [rbp - 0x20]
xor rcx, rsp
call fcn.1801e67e0
add rsp, 0x50
pop r15
pop r14
pop rdi
pop rbx
pop rbp
ret