Function at 0x14047c644
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, 0x20
movsxd rsi, r9d
mov qword [rsp + 0x18], rsi
shl rsi, 4
mov eax, dword [r8 + rsi]
mov ebp, dword [r8 + rsi + 4]
xor eax, dword [rcx]
mov dword [rsp], eax
xor ebp, dword [rcx + 4]
mov r9d, ebp
mov edi, dword [r8 + rsi + 8]
xor edi, dword [rcx + 8]
mov rbp, rdx
mov r13d, r9d
mov ebx, edi
mov r14d, edi
mov qword [rsp + 0x10], r8
mov edx, dword [r8 + rsi + 0xc]
xor edx, dword [rcx + 0xc]
shr ebx, 0x10
movzx ecx, al
lea r10, [0x140651df0]
movzx esi, dh
lea r12, [0x1406521f0]
mov eax, dword [r12 + rsi*4]
xor eax, dword [r10 + rcx*4]
movzx ecx, bl
lea r11, [0x1406525f0]
xor eax, dword [r11 + rcx*4]
shr r13d, 0x18
lea rcx, [0x1406529f0]
xor eax, dword [rcx + r13*4]
mov esi, edx
movzx r13d, dl
mov dword [rbp], eax
mov ebx, r9d
movzx edi, bl
mov ecx, dword [rsp]
movzx ecx, ch
mov ecx, dword [r12 + rcx*4]
xor ecx, dword [r10 + rdi*4]
shr edx, 0x10
movzx edx, dl
xor ecx, dword [r11 + rdx*4]
mov r8d, r14d
mov edx, r14d
shr edx, 0x18
lea r15, [0x1406529f0]
xor ecx, dword [r15 + rdx*4]
movzx edi, r8b
mov r14d, ecx
mov dword [rbp + 4], ecx
movzx edx, bh
mov rcx, r12
mov edx, dword [r12 + rdx*4]
xor edx, dword [r10 + rdi*4]
mov edi, dword [rsp]
shr edi, 0x10
movzx edi, dil
xor edx, dword [r11 + rdi*4]
mov r12, r11
mov r11, rcx
mov ecx, r8d
movzx ecx, ch
shr esi, 0x18
xor edx, dword [r15 + rsi*4]
mov dword [rbp + 8], edx
mov ecx, dword [r11 + rcx*4]
mov r11, rbp
xor ecx, dword [r10 + r13*4]
shr ebx, 0x10
movzx esi, bl
xor ecx, dword [r12 + rsi*4]
mov ebp, dword [rsp]
mov esi, ebp
shr esi, 0x18
xor ecx, dword [r15 + rsi*4]
mov rbp, qword [rsp + 0x18]
mov dword [r11 + 0xc], ecx
dec ebp
cmp ebp, 2
mov qword [rsp + 8], r11
jge 0x14047c655
mov ebx, edx
mov edi, r14d
mov esi, eax
jmp 0x14047c75a
movsxd r12, ebp
lea r15, [0x1406521f0]
lea r13, [0x1406525f0]
lea r11, [0x1406529f0]
mov rsi, r12
shl rsi, 4
mov r8, qword [rsp + 0x10]
xor eax, dword [r8 + rsi]
xor r14d, dword [r8 + rsi + 4]
mov ebp, eax
mov qword [rsp], rbp
xor edx, dword [r8 + rsi + 8]
movzx edi, al
movzx ebx, ah
mov r9d, edx
xor ecx, dword [r8 + rsi + 0xc]
movzx esi, ch
mov esi, dword [r15 + rsi*4]
xor esi, dword [r10 + rdi*4]
mov edi, edx
shr edi, 0x10
movzx edi, dil
xor esi, dword [r13 + rdi*4]
mov edi, r14d
shr edi, 0x18
xor esi, dword [r11 + rdi*4]
mov r8, qword [rsp + 8]
mov dword [r8], esi
mov rax, r10
movzx r10d, r14b
mov edi, dword [r15 + rbx*4]
xor edi, dword [rax + r10*4]
mov ebx, ecx
shr ebx, 0x10
movzx ebx, bl
xor edi, dword [r13 + rbx*4]
movzx r10d, dl
shr r9d, 0x18
xor edi, dword [r11 + r9*4]
mov dword [r8 + 4], edi
mov ebx, r14d
movzx ebx, bh
mov ebx, dword [r15 + rbx*4]
xor ebx, dword [rax + r10*4]
mov r10, rax
shr ebp, 0x10
movzx ebp, bpl
xor ebx, dword [r13 + rbp*4]
mov eax, ecx
shr eax, 0x18
xor ebx, dword [r11 + rax*4]
movzx eax, cl
movzx ecx, dh
mov rbp, qword [rsp]
shr ebp, 0x18
shr r14d, 0x10
mov dword [r8 + 8], ebx
mov ecx, dword [r15 + rcx*4]
xor ecx, dword [r10 + rax*4]
movzx eax, r14b
xor ecx, dword [r13 + rax*4]
xor ecx, dword [r11 + rbp*4]
mov dword [r8 + 0xc], ecx
dec r12
mov edx, ebx
mov r14d, edi
mov eax, esi
cmp r12, 1
jg 0x14047c66d
mov r8, qword [rsp + 0x10]
xor esi, dword [r8 + 0x10]
xor edi, dword [r8 + 0x14]
xor ebx, dword [r8 + 0x18]
xor ecx, dword [r8 + 0x1c]
movzx edx, sil
lea rax, [0x140652df0]
mov dl, byte [rdx + rax]
mov rbp, qword [rsp + 8]
mov byte [rbp], dl
mov edx, ecx
shr edx, 8
movzx edx, dl
mov dl, byte [rdx + rax]
mov byte [rbp + 1], dl
mov edx, ebx
shr edx, 0x10
movzx edx, dl
mov dl, byte [rdx + rax]
mov byte [rbp + 2], dl
mov rdx, rdi
shr rdx, 0x18
mov dl, byte [rdx + rax]
mov byte [rbp + 3], dl
movzx edx, dil
mov dl, byte [rdx + rax]
mov byte [rbp + 4], dl
mov edx, esi
shr edx, 8
movzx edx, dl
mov dl, byte [rdx + rax]
mov byte [rbp + 5], dl
mov edx, ecx
shr edx, 0x10
movzx edx, dl
mov dl, byte [rdx + rax]
mov byte [rbp + 6], dl
mov rdx, rbx
shr rdx, 0x18
mov dl, byte [rdx + rax]
mov byte [rbp + 7], dl
movzx edx, bl
mov dl, byte [rdx + rax]
mov byte [rbp + 8], dl
mov edx, edi
shr edx, 8
movzx edx, dl
mov dl, byte [rdx + rax]
mov byte [rbp + 9], dl
mov edx, esi
shr edx, 0x10
movzx edx, dl
mov dl, byte [rdx + rax]
mov byte [rbp + 0xa], dl
mov rdx, rcx
shr rdx, 0x18
mov dl, byte [rdx + rax]
mov byte [rbp + 0xb], dl
movzx ecx, cl
mov cl, byte [rcx + rax]
mov byte [rbp + 0xc], cl
shr ebx, 8
movzx ecx, bl
mov cl, byte [rcx + rax]
mov byte [rbp + 0xd], cl
shr edi, 0x10
movzx ecx, dil
mov cl, byte [rcx + rax]
mov byte [rbp + 0xe], cl
shr rsi, 0x18
mov al, byte [rsi + rax]
mov byte [rbp + 0xf], al
mov eax, dword [r8]
xor dword [rbp], eax
mov eax, dword [r8 + 4]
xor dword [rbp + 4], eax
mov eax, dword [r8 + 8]
xor dword [rbp + 8], eax
mov eax, dword [r8 + 0xc]
xor dword [rbp + 0xc], eax
xor eax, eax
add rsp, 0x20
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret