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

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rbp
mov qword [rsp + 0x20], rsi
push rdi
push r12
push r13
push r14
push r15
mov r12, rdx
mov rsi, rcx
sub r12, rcx
mov r8d, 4
nop word [rax + rax]
mov edx, 4
nop word [rax + rax]
movzx eax, byte [r12 + rcx]
xor byte [rcx], al
inc rcx
sub rdx, 1
jne 0x180003230
sub r8, 1
jne 0x180003220
lea r14, [r12 + 0x10]
mov qword [rsp + 0x30], 9
lea r10, [0x180040040]
nop dword [rax + rax]
mov r8, rsi
mov r9d, 4
nop dword [rax]
mov rcx, r8
mov edx, 4
nop dword [rax + rax]
movzx eax, byte [rcx]
lea rcx, [rcx + 4]
movzx eax, byte [rax + r10]
mov byte [rcx - 4], al
sub rdx, 1
jne 0x180003280
inc r8
sub r9, 1
jne 0x180003270
movzx eax, byte [rsi + 5]
lea r15, [rsi + 2]
movzx ecx, byte [rsi + 1]
lea ebp, [rdx + 4]
mov byte [rsi + 1], al
movzx eax, byte [rsi + 9]
mov byte [rsi + 5], al
movzx eax, byte [rsi + 0xd]
mov byte [rsi + 9], al
movzx eax, byte [rsi + 0xa]
mov byte [rsi + 0xd], cl
movzx ecx, byte [rsi + 2]
mov byte [rsi + 2], al
movzx eax, byte [rsi + 0xe]
mov byte [rsi + 0xa], cl
movzx ecx, byte [rsi + 6]
mov byte [rsi + 6], al
movzx eax, byte [rsi + 0xf]
mov byte [rsi + 0xe], cl
movzx ecx, byte [rsi + 3]
mov byte [rsi + 3], al
movzx eax, byte [rsi + 0xb]
mov byte [rsi + 0xf], al
movzx eax, byte [rsi + 7]
mov byte [rsi + 0xb], al
mov byte [rsi + 7], cl
nop dword [rax]
movzx ebx, byte [r15 - 2]
movzx r8d, byte [r15 - 1]
movzx edx, bl
movzx edi, byte [r15 + 1]
xor dl, r8b
movzx r10d, byte [r15]
lea r15, [r15 + 4]
movzx eax, dl
movzx r9d, dil
shr al, 7
add dl, dl
movzx eax, al
xor r9b, r10b
imul ecx, eax, 0x1b
movzx r11d, r9b
xor r11b, bl
xor r11b, r8b
xor cl, dl
movzx edx, r8b
xor cl, r11b
xor dl, r10b
xor cl, bl
movzx eax, dl
mov byte [r15 - 6], cl
xor bl, dil
shr al, 7
add dl, dl
movzx eax, al
imul ecx, eax, 0x1b
movzx eax, r9b
shr al, 7
add r9b, r9b
movzx eax, al
xor cl, dl
xor cl, r11b
xor cl, r8b
mov byte [r15 - 5], cl
imul ecx, eax, 0x1b
movzx eax, bl
shr al, 7
add bl, bl
movzx eax, al
xor cl, r9b
xor cl, r11b
xor cl, r10b
mov byte [r15 - 4], cl
imul ecx, eax, 0x1b
xor cl, bl
xor cl, r11b
xor cl, dil
mov byte [r15 - 3], cl
sub rbp, 1
jne 0x180003300
mov rax, rsi
lea r8d, [rbp + 4]
nop dword [rax]
nop word [rax + rax]
mov edx, 4
nop word [rax + rax]
movzx ecx, byte [r14 + rax]
xor byte [rax], cl
inc rax
sub rdx, 1
jne 0x1800033d0
sub r8, 1
jne 0x1800033c0
add r14, 0x10
lea r10, [0x180040040]
sub qword [rsp + 0x30], 1
jne 0x180003260
mov r8, rsi
lea r9d, [rdx + 4]
lea r10, [0x180040040]
nop dword [rax + rax]
mov rcx, r8
mov edx, 4
nop dword [rax + rax]
movzx eax, byte [rcx]
lea rcx, [rcx + 4]
movzx eax, byte [rax + r10]
mov byte [rcx - 4], al
sub rdx, 1
jne 0x180003420
inc r8
sub r9, 1
jne 0x180003410
movzx eax, byte [rsi + 5]
lea edx, [r9 + 4]
movzx ecx, byte [rsi + 1]
mov byte [rsi + 1], al
movzx eax, byte [rsi + 9]
mov byte [rsi + 5], al
movzx eax, byte [rsi + 0xd]
mov byte [rsi + 9], al
movzx eax, byte [rsi + 0xa]
mov byte [rsi + 0xd], cl
movzx ecx, byte [rsi + 2]
mov byte [rsi + 2], al
movzx eax, byte [rsi + 0xe]
mov byte [rsi + 0xa], cl
movzx ecx, byte [rsi + 6]
mov byte [rsi + 6], al
movzx eax, byte [rsi + 0xf]
mov byte [rsi + 0xe], cl
movzx ecx, byte [rsi + 3]
mov byte [rsi + 3], al
movzx eax, byte [rsi + 0xb]
mov byte [rsi + 0xf], al
movzx eax, byte [rsi + 7]
mov byte [rsi + 0xb], al
mov byte [rsi + 7], cl
nop word [rax + rax]
mov ecx, 4
nop word [rax + rax]
movzx eax, byte [r12 + rsi + 0xa0]
xor byte [rsi], al
inc rsi
sub rcx, 1
jne 0x1800034b0
sub rdx, 1
jne 0x1800034a0
mov rbx, qword [rsp + 0x38]
mov rbp, qword [rsp + 0x40]
mov rsi, qword [rsp + 0x48]
pop r15
pop r14
pop r13
pop r12
pop rdi
ret