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

Disassembly:
mov qword [rsp + 0x10], rbp
push rsi
push rdi
push r14
sub rsp, 0x40
mov rax, qword [0x180e670c0]
xor rax, rsp
mov qword [rsp + 0x30], rax
mov r9, qword [rcx + 8]
mov r14, rcx
lea rcx, [rsp + 0x20]
mov rdi, r8
mov eax, dword [r9 - 0x10]
xor eax, dword [rdx]
mov dword [rsp + 0x20], eax
mov eax, dword [r9 - 0xc]
xor eax, dword [rdx + 4]
mov dword [rsp + 0x24], eax
mov eax, dword [r9 - 8]
xor eax, dword [rdx + 8]
mov dword [rsp + 0x28], eax
mov eax, dword [r9 - 4]
xor eax, dword [rdx + 0xc]
mov dword [rsp + 0x2c], eax
call fcn.180004b60
mov edx, dword [rsp + 0x20]
lea rbp, [0x1809fe830]
mov eax, edx
shr rax, 0x10
movzx ecx, al
mov eax, edx
shr rax, 0x18
movzx r8d, byte [rcx + rbp]
movzx eax, byte [rax + rbp]
shl eax, 8
or r8d, eax
mov eax, edx
shr rax, 8
movzx ecx, al
shl r8d, 8
movzx eax, byte [rcx + rbp]
or r8d, eax
movzx eax, dl
mov edx, dword [rsp + 0x24]
shl r8d, 8
movzx ecx, byte [rax + rbp]
mov eax, edx
shr rax, 0x10
or r8d, ecx
movzx ecx, al
mov eax, edx
shr rax, 0x18
movzx r9d, byte [rcx + rbp]
movzx eax, byte [rax + rbp]
shl eax, 8
or r9d, eax
mov eax, edx
shr rax, 8
movzx ecx, al
shl r9d, 8
movzx eax, byte [rcx + rbp]
or r9d, eax
movzx eax, dl
mov edx, dword [rsp + 0x28]
shl r9d, 8
movzx ecx, byte [rax + rbp]
mov eax, edx
shr rax, 0x10
or r9d, ecx
movzx ecx, al
mov eax, edx
shr rax, 0x18
movzx r10d, byte [rcx + rbp]
movzx eax, byte [rax + rbp]
shl eax, 8
or r10d, eax
mov eax, edx
shr rax, 8
movzx ecx, al
shl r10d, 8
movzx eax, byte [rcx + rbp]
or r10d, eax
movzx eax, dl
mov edx, dword [rsp + 0x2c]
shl r10d, 8
movzx ecx, byte [rax + rbp]
mov eax, edx
or r10d, ecx
shr rax, 0x10
mov rsi, qword [r14 + 8]
sub rsi, qword [r14]
movzx ecx, al
mov eax, edx
shr rax, 0x18
sar rsi, 4
movzx r11d, byte [rcx + rbp]
movzx eax, byte [rax + rbp]
shl eax, 8
or r11d, eax
mov eax, edx
shr rax, 8
shl r11d, 8
movzx ecx, al
movzx eax, byte [rcx + rbp]
or r11d, eax
movzx eax, dl
shl r11d, 8
movzx ecx, byte [rax + rbp]
or r11d, ecx
sub rsi, 2
je 0x180005a74
mov qword [rsp + 0x60], rbx
mov rbx, rsi
shl rbx, 4
mov rax, qword [r14]
lea rcx, [rsp + 0x20]
xor r8d, dword [rbx + rax]
xor r9d, dword [rbx + rax + 4]
xor r10d, dword [rbx + rax + 8]
xor r11d, dword [rbx + rax + 0xc]
mov dword [rsp + 0x20], r8d
mov dword [rsp + 0x24], r9d
mov dword [rsp + 0x28], r10d
mov dword [rsp + 0x2c], r11d
call fcn.180004ca0
lea rcx, [rsp + 0x20]
call fcn.180004b60
mov edx, dword [rsp + 0x20]
mov eax, edx
shr rax, 0x10
movzx ecx, al
mov eax, edx
shr rax, 0x18
movzx r8d, byte [rcx + rbp]
movzx eax, byte [rax + rbp]
shl eax, 8
or r8d, eax
mov eax, edx
shr rax, 8
movzx ecx, al
shl r8d, 8
movzx eax, byte [rcx + rbp]
or r8d, eax
movzx eax, dl
mov edx, dword [rsp + 0x24]
shl r8d, 8
movzx ecx, byte [rax + rbp]
mov eax, edx
shr rax, 0x10
or r8d, ecx
movzx ecx, al
mov eax, edx
shr rax, 0x18
movzx r9d, byte [rcx + rbp]
movzx eax, byte [rax + rbp]
shl eax, 8
or r9d, eax
mov eax, edx
shr rax, 8
movzx ecx, al
shl r9d, 8
movzx eax, byte [rcx + rbp]
or r9d, eax
movzx eax, dl
mov edx, dword [rsp + 0x28]
shl r9d, 8
movzx ecx, byte [rax + rbp]
mov eax, edx
shr rax, 0x10
or r9d, ecx
movzx ecx, al
mov eax, edx
shr rax, 0x18
movzx r10d, byte [rcx + rbp]
movzx eax, byte [rax + rbp]
shl eax, 8
or r10d, eax
mov eax, edx
shr rax, 8
movzx ecx, al
shl r10d, 8
movzx eax, byte [rcx + rbp]
or r10d, eax
movzx eax, dl
mov edx, dword [rsp + 0x2c]
shl r10d, 8
movzx ecx, byte [rax + rbp]
mov eax, edx
shr rax, 0x10
or r10d, ecx
movzx ecx, al
mov eax, edx
shr rax, 0x18
movzx r11d, byte [rcx + rbp]
movzx eax, byte [rax + rbp]
shl eax, 8
lea rbx, [rbx - 0x10]
or r11d, eax
mov eax, edx
shr rax, 8
shl r11d, 8
movzx ecx, al
movzx eax, byte [rcx + rbp]
or r11d, eax
movzx eax, dl
shl r11d, 8
movzx ecx, byte [rax + rbp]
or r11d, ecx
sub rsi, 1
jne 0x180005913
mov rbx, qword [rsp + 0x60]
mov rax, qword [r14]
xor r8d, dword [rax]
xor r9d, dword [rax + 4]
xor r10d, dword [rax + 8]
xor r11d, dword [rax + 0xc]
mov dword [rdi + 0xc], r11d
mov dword [rdi], r8d
mov dword [rdi + 4], r9d
mov dword [rdi + 8], r10d
mov rcx, qword [rsp + 0x30]
xor rcx, rsp
call fcn.18001def0
mov rbp, qword [rsp + 0x68]
add rsp, 0x40
pop r14
pop rdi
pop rsi
ret