Function at 0x50a840
Capabilities:
Encode data using xor
Encrypt data using hc-128

Disassembly:
push rbp
push r14
push r13
push rdi
push rsi
push rbx
sub rsp, 0x148
mov rbp, rsp
mov qword [rbp + 0x28], rcx
mov eax, dword [rcx + 0x90]
mov dword [rbp + 0x34], eax
mov rax, qword [rbp + 0x28]
mov eax, dword [rax + 0x94]
mov dword [rbp + 0x38], eax
mov rax, qword [rbp + 0x28]
mov eax, dword [rax + 0x98]
mov dword [rbp + 0x3c], eax
mov rax, qword [rbp + 0x28]
mov ebx, dword [rax + 0x9c]
mov rax, qword [rbp + 0x28]
mov esi, dword [rax + 0xa0]
mov rax, qword [rbp + 0x28]
mov edi, dword [rax + 0xa4]
mov rax, qword [rbp + 0x28]
mov r13d, dword [rax + 0xa8]
mov rax, qword [rbp + 0x28]
mov r14d, dword [rax + 0xac]
mov rcx, qword [rbp + 0x28]
lea rdx, [rbp + 0x40]
mov r8d, 0x40
call fcn.00409480
mov edx, 0x10
lea rcx, [rbp + 0x40]
mov eax, dword [rcx]
mov r8d, eax
shr r8d, 0x18
mov r9d, eax
shl r9d, 0x18
or r8d, r9d
mov r9d, eax
shr r9d, 8
and r9d, 0xff00
or r8d, r9d
shl eax, 8
and eax, 0xff0000
or r8d, eax
mov dword [rcx], r8d
add rcx, 4
sub edx, 1
test edx, edx
jne 0x50a8c9
nop
mov eax, 0x10
lea r8, [rbp + 0x80]
mov ecx, eax
sub ecx, 0xf
movsxd rcx, ecx
mov r9d, dword [rbp + rcx*4 + 0x40]
mov ecx, r9d
mov edx, r9d
mov r10d, ecx
shl r10d, 0x19
shr ecx, 7
or r10d, ecx
mov ecx, edx
shl ecx, 0xe
shr edx, 0x12
or ecx, edx
xor r10d, ecx
shr r9d, 3
xor r10d, r9d
mov ecx, r10d
mov edx, eax
sub edx, 2
movsxd rdx, edx
mov r9d, dword [rbp + rdx*4 + 0x40]
mov edx, r9d
mov r10d, edx
shl r10d, 0xf
shr edx, 0x11
or r10d, edx
mov edx, r9d
shl edx, 0xd
shr r9d, 0x13
or edx, r9d
xor r10d, edx
mov edx, eax
sub edx, 2
movsxd rdx, edx
mov edx, dword [rbp + rdx*4 + 0x40]
shr edx, 0xa
xor r10d, edx
mov edx, r10d
mov r9d, eax
sub r9d, 0x10
movsxd r9, r9d
mov r9d, dword [rbp + r9*4 + 0x40]
add r9d, ecx
mov ecx, eax
sub ecx, 7
movsxd rcx, ecx
add r9d, dword [rbp + rcx*4 + 0x40]
add r9d, edx
mov dword [r8], r9d
add eax, 1
add r8, 4
cmp eax, 0x40
jne 0x50a914
nop
mov r10d, 0x40
lea r8, [0x00751aec]
lea r9, [rbp + 0x40]
mov ecx, dword [rbp + 0x34]
shl ecx, 0x1e
mov eax, dword [rbp + 0x34]
shr eax, 2
or ecx, eax
mov eax, dword [rbp + 0x34]
shl eax, 0x13
mov edx, dword [rbp + 0x34]
shr edx, 0xd
or eax, edx
xor ecx, eax
mov eax, dword [rbp + 0x34]
shl eax, 0xa
mov edx, dword [rbp + 0x34]
shr edx, 0x16
or eax, edx
xor ecx, eax
mov eax, dword [rbp + 0x34]
mov edx, dword [rbp + 0x38]
and eax, edx
mov edx, dword [rbp + 0x34]
mov r11d, dword [rbp + 0x3c]
and edx, r11d
xor eax, edx
mov edx, dword [rbp + 0x38]
mov r11d, dword [rbp + 0x3c]
and edx, r11d
xor eax, edx
add ecx, eax
mov edx, esi
shl edx, 0x1a
mov eax, esi
shr eax, 6
or edx, eax
mov eax, esi
shl eax, 0x15
mov r11d, esi
shr r11d, 0xb
or eax, r11d
xor edx, eax
mov eax, esi
shl eax, 7
mov r11d, esi
shr r11d, 0x19
or eax, r11d
xor edx, eax
mov eax, r14d
add eax, edx
mov edx, esi
and edx, edi
mov r11d, esi
not r11d
and r11d, r13d
xor edx, r11d
add eax, edx
add eax, dword [r8]
add eax, dword [r9]
mov r14d, r13d
mov r13d, edi
mov edi, esi
mov esi, ebx
add esi, eax
mov ebx, dword [rbp + 0x3c]
mov edx, dword [rbp + 0x38]
mov dword [rbp + 0x3c], edx
mov edx, dword [rbp + 0x34]
mov dword [rbp + 0x38], edx
add eax, ecx
mov dword [rbp + 0x34], eax
add r9, 4
add r8, 4
sub r10d, 1
test r10d, r10d
jne 0x50a9d4
nop
mov rax, qword [rbp + 0x28]
lea rax, [rax + 0x90]
mov ecx, dword [rbp + 0x34]
add dword [rax], ecx
mov rax, qword [rbp + 0x28]
lea rax, [rax + 0x94]
mov ecx, dword [rbp + 0x38]
add dword [rax], ecx
mov rax, qword [rbp + 0x28]
lea rax, [rax + 0x98]
mov ecx, dword [rbp + 0x3c]
add dword [rax], ecx
mov rax, qword [rbp + 0x28]
lea rax, [rax + 0x9c]
add dword [rax], ebx
mov rax, qword [rbp + 0x28]
lea rax, [rax + 0xa0]
add dword [rax], esi
mov rax, qword [rbp + 0x28]
lea rax, [rax + 0xa4]
add dword [rax], edi
mov rax, qword [rbp + 0x28]
lea rax, [rax + 0xa8]
add dword [rax], r13d
mov rax, qword [rbp + 0x28]
lea rax, [rax + 0xac]
add dword [rax], r14d
lea rsp, [rbp + 0x148]
pop rbx
pop rsi
pop rdi
pop r13
pop r14
pop rbp
ret