Function at 0x1800011b0
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, 0x28
test dword [rcx], 0x3fffffff
je 0x1800011e9
xor eax, eax
nop word [rax + rax]
movzx ebx, byte [rdx + rax]
mov byte [r8 + rax], bl
inc rax
mov r11d, dword [rcx]
shl r11d, 2
cmp rax, r11
jb 0x1800011d0
jmp 0x1800011ec
xor r11d, r11d
mov eax, dword [rcx + 4]
shl eax, 4
add eax, 0x10
cmp r11d, eax
jae 0x180001478
mov r9d, r11d
xor eax, eax
mov qword [rsp], rax
mov qword [rsp + 0x20], rcx
jmp 0x1800012b6
mov r14b, 1
mov rbx, qword [rsp + 8]
movzx r10d, byte [r13 + rbp]
mov rax, qword [rsp + 0x18]
movzx r13d, byte [rax + r12]
movzx r12d, byte [rsi + rdi]
mov rax, qword [rsp + 0x10]
xor r14b, byte [rbx + rax]
shl r15d, 2
mov ebx, r9d
mov edx, r9d
sub edx, r15d
xor r14b, byte [r8 + rdx]
mov byte [r8 + r9], r14b
mov rdx, rbx
or rdx, 1
mov rcx, qword [rsp + 0x20]
mov esi, dword [rcx]
shl esi, 2
mov edi, edx
sub edi, esi
xor r10b, byte [r8 + rdi]
mov byte [r8 + rdx], r10b
mov rax, rbx
or rax, 2
mov ebp, dword [rcx]
shl ebp, 2
mov edx, eax
sub edx, ebp
xor r13b, byte [r8 + rdx]
mov byte [r8 + rax], r13b
or rbx, 3
mov eax, dword [rcx]
shl eax, 2
mov edx, ebx
sub edx, eax
xor r12b, byte [r8 + rdx]
mov byte [r8 + rbx], 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 0x180001478
mov edx, 0xfffffffc
lea eax, [rdx + r9]
and eax, 0xfffffffc
movzx r14d, byte [r8 + rax]
movzx edi, r14b
lea eax, [rdx + r9]
inc eax
and eax, 0xfffffffd
movzx r10d, byte [r8 + rax]
movzx esi, r10b
lea eax, [rdx + r9]
add eax, 2
and eax, 0xfffffffe
movzx r13d, byte [r8 + rax]
movzx ebp, r13b
lea eax, [rdx + r9]
add eax, 3
movzx r12d, byte [r8 + rax]
movzx ebx, r12b
mov rax, r9
shr rax, 2
mov r15d, dword [rcx]
xor edx, edx
div r15d
test edx, edx
je 0x180001380
cmp r15d, 7
jb 0x180001237
cmp edx, 4
jne 0x180001237
mov eax, edi
and eax, 0xf
and edi, 0xfffffff0
lea rcx, str.cw
add rdi, rcx
movzx r14d, byte [rax + rdi]
mov eax, esi
and eax, 0xf
and esi, 0xfffffff0
add rsi, rcx
movzx r10d, byte [rax + rsi]
mov eax, ebp
and eax, 0xf
and ebp, 0xfffffff0
add rbp, rcx
movzx r13d, byte [rax + rbp]
mov eax, ebx
and eax, 0xf
and ebx, 0xfffffff0
add rbx, rcx
movzx r12d, byte [rax + rbx]
jmp 0x180001237
mov eax, esi
and eax, 0xf
mov qword [rsp + 8], rax
and esi, 0xfffffff0
lea rax, str.cw
add rsi, rax
mov qword [rsp + 0x10], rsi
mov r13d, ebp
and r13d, 0xf
and ebp, 0xfffffff0
add rbp, rax
mov ecx, ebx
and ecx, 0xf
and ebx, 0xfffffff0
add rbx, rax
mov r12, rbx
mov esi, edi
and esi, 0xf
and edi, 0xfffffff0
add rdi, rax
lea ebx, [r15*4]
mov eax, r9d
xor edx, edx
div ebx
mov r10d, eax
dec r10d
mov qword [rsp + 0x18], rcx
je 0x180001211
mov rax, qword [rsp]
lea eax, [r11 + rax*4]
xor edx, edx
div ebx
add eax, 0xfffffffe
mov edx, r10d
and edx, 3
mov r14b, 1
cmp eax, 3
jb 0x18000144a
and r10d, 0xfffffffc
mov al, 1
nop word cs:[rax + rax]
lea r14d, [rax + rax]
sar al, 7
and al, 0x1b
xor al, r14b
add al, al
sar r14b, 7
and r14b, 0x1b
xor r14b, al
add r14b, r14b
sar al, 7
and al, 0x1b
xor al, r14b
add al, al
sar r14b, 7
and r14b, 0x1b
xor r14b, al
mov eax, r14d
add r10d, 0xfffffffc
jne 0x180001410
test edx, edx
mov rbx, qword [rsp + 8]
je 0x180001219
nop word [rax + rax]
lea eax, [r14 + r14]
sar r14b, 7
and r14b, 0x1b
xor r14b, al
dec edx
jne 0x180001460
jmp 0x180001219
add rsp, 0x28
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret