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

Disassembly:
push rbp
sub rsp, 0x40
mov rbp, rsp
mov qword [rbp + 0x50], rcx
mov dword [rbp + 0x3c], 0
mov dword [rbp + 0x38], 0
lea rax, [0x0064b850]
mov qword [rbp + 0x30], rax
mov rcx, rbp
call fcn.005cfec0
jmp 0x5d0479
mov rax, qword [rbp + 0x50]
lea rax, [rax + rbp + 0x20]
mov rcx, rbp
neg rcx
lea rax, [rax + rcx]
mov qword [rbp + 0x28], rax
mov rax, qword [rbp + 0x28]
mov rcx, qword [rbp + 0x28]
lea rdx, str.cw
mov r8, qword [rbp + 0x50]
lea r8, [r8 + rbp + 4]
mov r9, rbp
neg r9
lea r8, [r8 + r9]
mov r9, qword [rbp + 0x50]
lea r9, [r9 + rbp + 0x60]
mov r10, rbp
neg r10
mov r9, qword [r9 + r10]
movsxd r9, dword [r9 + 0xa0]
mov r8d, dword [r8 + r9*4]
shr r8d, 8
and r8d, 0xff
movsxd r8, r8d
movzx rcx, byte [rcx]
xor cl, byte [rdx + r8]
mov rdx, qword [rbp + 0x30]
xor cl, byte [rdx]
mov byte [rax], cl
add qword [rbp + 0x28], 1
mov rax, qword [rbp + 0x28]
lea rcx, str.cw
mov rdx, qword [rbp + 0x50]
lea rdx, [rdx + rbp + 4]
mov r8, rbp
neg r8
lea rdx, [rdx + r8]
mov r8, qword [rbp + 0x50]
lea r8, [r8 + rbp + 0x60]
mov r9, rbp
neg r9
mov r8, qword [r8 + r9]
movsxd r8, dword [r8 + 0xa0]
mov edx, dword [rdx + r8*4]
shr edx, 0x10
and edx, 0xff
movsxd rdx, edx
movzx rcx, byte [rcx + rdx]
xor byte [rax], cl
add qword [rbp + 0x28], 1
mov rax, qword [rbp + 0x28]
lea rcx, str.cw
mov rdx, qword [rbp + 0x50]
lea rdx, [rdx + rbp + 4]
mov r8, rbp
neg r8
lea rdx, [rdx + r8]
mov r8, qword [rbp + 0x50]
lea r8, [r8 + rbp + 0x60]
mov r9, rbp
neg r9
mov r8, qword [r8 + r9]
movsxd r8, dword [r8 + 0xa0]
mov edx, dword [rdx + r8*4]
shr edx, 0x18
movsxd rdx, edx
movzx rcx, byte [rcx + rdx]
xor byte [rax], cl
add qword [rbp + 0x28], 1
mov rax, qword [rbp + 0x28]
lea rcx, str.cw
mov rdx, qword [rbp + 0x50]
lea rdx, [rdx + rbp + 4]
mov r8, rbp
neg r8
lea rdx, [rdx + r8]
mov r8, qword [rbp + 0x50]
lea r8, [r8 + rbp + 0x60]
mov r9, rbp
neg r9
mov r8, qword [r8 + r9]
movsxd r8, dword [r8 + 0xa0]
mov edx, dword [rdx + r8*4]
and edx, 0xff
movsxd rdx, edx
movzx rcx, byte [rcx + rdx]
xor byte [rax], cl
add qword [rbp + 0x30], 1
mov rax, qword [rbp + 0x50]
lea rax, [rax + rbp + 0x60]
mov rcx, rbp
neg rcx
mov rax, qword [rax + rcx]
cmp dword [rax + 0xa0], 0xe
jne 0x5d03e9
mov dword [rbp + 0x24], 1
mov rax, qword [rbp + 0x50]
lea rax, [rax + rbp + 0x20]
mov rcx, rbp
neg rcx
lea rax, [rax + rcx]
movsxd rcx, dword [rbp + 0x24]
mov rdx, qword [rbp + 0x50]
lea rdx, [rdx + rbp + 0x20]
mov r8, rbp
neg r8
lea rdx, [rdx + r8]
movsxd r8, dword [rbp + 0x24]
mov r9, qword [rbp + 0x50]
lea r9, [r9 + rbp + 0x1c]
mov r10, rbp
neg r10
lea r9, [r9 + r10]
movsxd r10, dword [rbp + 0x24]
mov edx, dword [rdx + r8*4]
xor edx, dword [r9 + r10*4]
mov dword [rax + rcx*4], edx
add dword [rbp + 0x24], 1
cmp dword [rbp + 0x24], 4
jne 0x5d0246
nop
mov rax, qword [rbp + 0x50]
lea rax, [rax + rbp + 0x30]
mov rcx, rbp
neg rcx
lea rax, [rax + rcx]
mov qword [rbp + 0x28], rax
mov rax, qword [rbp + 0x28]
lea rcx, str.cw
mov rdx, qword [rbp + 0x50]
lea rdx, [rdx + rbp + 0x2c]
mov r8, rbp
neg r8
mov edx, dword [rdx + r8]
and edx, 0xff
movsxd rdx, edx
movzx rcx, byte [rcx + rdx]
xor byte [rax], cl
add qword [rbp + 0x28], 1
mov rax, qword [rbp + 0x28]
lea rcx, str.cw
mov rdx, qword [rbp + 0x50]
lea rdx, [rdx + rbp + 0x2c]
mov r8, rbp
neg r8
mov edx, dword [rdx + r8]
shr edx, 8
and edx, 0xff
movsxd rdx, edx
movzx rcx, byte [rcx + rdx]
xor byte [rax], cl
add qword [rbp + 0x28], 1
mov rax, qword [rbp + 0x28]
lea rcx, str.cw
mov rdx, qword [rbp + 0x50]
lea rdx, [rdx + rbp + 0x2c]
mov r8, rbp
neg r8
mov edx, dword [rdx + r8]
shr edx, 0x10
and edx, 0xff
movsxd rdx, edx
movzx rcx, byte [rcx + rdx]
xor byte [rax], cl
add qword [rbp + 0x28], 1
mov rax, qword [rbp + 0x28]
lea rcx, str.cw
mov rdx, qword [rbp + 0x50]
lea rdx, [rdx + rbp + 0x2c]
mov r8, rbp
neg r8
mov edx, dword [rdx + r8]
shr edx, 0x18
movsxd rdx, edx
movzx rcx, byte [rcx + rdx]
xor byte [rax], cl
mov dword [rbp + 0x24], 5
mov rax, qword [rbp + 0x50]
lea rax, [rax + rbp + 0x20]
mov rcx, rbp
neg rcx
lea rax, [rax + rcx]
movsxd rcx, dword [rbp + 0x24]
mov rdx, qword [rbp + 0x50]
lea rdx, [rdx + rbp + 0x20]
mov r8, rbp
neg r8
lea rdx, [rdx + r8]
movsxd r8, dword [rbp + 0x24]
mov r9, qword [rbp + 0x50]
lea r9, [r9 + rbp + 0x1c]
mov r10, rbp
neg r10
lea r9, [r9 + r10]
movsxd r10, dword [rbp + 0x24]
mov edx, dword [rdx + r8*4]
xor edx, dword [r9 + r10*4]
mov dword [rax + rcx*4], edx
add dword [rbp + 0x24], 1
cmp dword [rbp + 0x24], 8
jne 0x5d0389
nop
jmp 0x5d0471
mov eax, 1
mov rcx, qword [rbp + 0x50]
lea rcx, [rcx + rbp + 0x60]
mov rdx, rbp
neg rdx
mov rcx, qword [rcx + rdx]
mov ecx, dword [rcx + 0xa0]
sub ecx, 7
mov dword [rbp + 0x24], eax
cmp dword [rbp + 0x24], ecx
jg 0x5d0470
add ecx, 1
mov rax, qword [rbp + 0x50]
lea rax, [rax + rbp + 0x20]
mov rdx, rbp
neg rdx
lea rax, [rax + rdx]
movsxd rdx, dword [rbp + 0x24]
mov r8, qword [rbp + 0x50]
lea r8, [r8 + rbp + 0x20]
mov r9, rbp
neg r9
lea r8, [r8 + r9]
movsxd r9, dword [rbp + 0x24]
mov r10, qword [rbp + 0x50]
lea r10, [r10 + rbp + 0x1c]
mov r11, rbp
neg r11
lea r10, [r10 + r11]
movsxd r11, dword [rbp + 0x24]
mov r8d, dword [r8 + r9*4]
xor r8d, dword [r10 + r11*4]
mov dword [rax + rdx*4], r8d
add dword [rbp + 0x24], 1
cmp dword [rbp + 0x24], ecx
jne 0x5d0416
nop
mov rcx, rbp
call fcn.005cfec0
mov rax, qword [rbp + 0x50]
lea rax, [rax + rbp + 0x60]
mov rcx, rbp
neg rcx
mov rax, qword [rax + rcx]
mov ecx, dword [rbp + 0x3c]
cmp ecx, dword [rax + 0xa0]
jle 0x5d00b2
lea rsp, [rbp + 0x40]
pop rbp
ret