Function at 0x5016a0
Capabilities:
Encrypt data using salsa20 or chacha

Disassembly:
cmp rsp, qword [r14 + 0x10]
jbe 0x5019cc
push rbp
mov rbp, rsp
sub rsp, 0x58
mov qword [rsp + 0x68], rax
mov qword [rsp + 0x80], rdi
mov qword [rsp + 0x98], r9
cmp rsi, 0x20
jne 0x50178e
cmp r10, 0x10
jne 0x501756
mov qword [rsp + 0x78], rcx
mov qword [rsp + 0x70], rbx
mov qword [rsp + 0x68], rax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [rdi]
mov r8d, dword [rdi + 4]
mov r10d, dword [rdi + 8]
mov r11d, dword [rdi + 0xc]
mov r12d, dword [rdi + 0x10]
mov r13d, dword [rdi + 0x14]
mov r15d, dword [rdi + 0x18]
mov esi, dword [rdi + 0x1c]
mov edi, dword [r9]
mov ecx, dword [r9 + 4]
mov eax, dword [r9 + 8]
mov r9d, dword [r9 + 0xc]
mov dword [rsp + 0x50], eax
xor eax, eax
mov qword [rsp + 0x40], rax
mov eax, 0x61707865
mov dword [rsp + 0x2c], eax
mov eax, 0x3320646e
mov dword [rsp + 0x28], eax
mov eax, 0x79622d32
mov dword [rsp + 0x1c], eax
mov eax, 0x6b206574
mov dword [rsp + 0x18], eax
mov eax, dword [rsp + 0x50]
jmp 0x501959
lea rax, [0x00520a80]
nop dword [rax]
call fcn.0040d5c0
mov qword [rax + 8], 0x24
lea rcx, [0x00542220]
mov qword [rax], rcx
xor ebx, ebx
mov rcx, rbx
lea rdi, [0x005853e0]
mov rsi, rax
xor eax, eax
add rsp, 0x58
pop rbp
ret
lea rax, [0x00520a80]
call fcn.0040d5c0
mov qword [rax + 8], 0x22
lea rcx, [0x00541acd]
mov qword [rax], rcx
xor ebx, ebx
mov rcx, rbx
lea rdi, [0x005853e0]
mov rsi, rax
xor eax, eax
add rsp, 0x58
pop rbp
ret
mov ebx, dword [rsp + 0x2c]
add ebx, edx
xor edi, ebx
rol edi, 0x10
add r12d, edi
xor edx, r12d
rol edx, 0xc
add ebx, edx
xor edi, ebx
rol edi, 8
add r12d, edi
xor edx, r12d
rol edx, 7
mov dword [rsp + 0x3c], edx
mov r9d, dword [rsp + 0x28]
add r9d, r8d
xor ecx, r9d
rol ecx, 0x10
add r13d, ecx
xor r8d, r13d
rol r8d, 0xc
add r9d, r8d
xor ecx, r9d
rol ecx, 8
add r13d, ecx
mov dword [rsp + 0x38], r13d
xor r8d, r13d
rol r8d, 7
mov r13d, dword [rsp + 0x1c]
add r13d, r10d
xor eax, r13d
rol eax, 0x10
add r15d, eax
xor r10d, r15d
rol r10d, 0xc
add r13d, r10d
xor eax, r13d
rol eax, 8
mov dword [rsp + 0x34], eax
add r15d, eax
xor r10d, r15d
rol r10d, 7
mov eax, dword [rsp + 0x18]
add eax, r11d
mov edx, dword [rsp + 0x30]
xor edx, eax
rol edx, 0x10
add esi, edx
xor r11d, esi
rol r11d, 0xc
add eax, r11d
xor edx, eax
rol edx, 8
add esi, edx
xor r11d, esi
rol r11d, 7
add ebx, r8d
xor edx, ebx
rol edx, 0x10
add r15d, edx
xor r8d, r15d
rol r8d, 0xc
add ebx, r8d
mov dword [rsp + 0x2c], ebx
xor edx, ebx
rol edx, 8
mov dword [rsp + 0x20], edx
add r15d, edx
xor r8d, r15d
add r9d, r10d
xor edi, r9d
rol edi, 0x10
add esi, edi
xor r10d, esi
rol r10d, 0xc
add r9d, r10d
xor edi, r9d
rol edi, 8
add esi, edi
xor r10d, esi
add r13d, r11d
xor ecx, r13d
rol ecx, 0x10
add r12d, ecx
xor r11d, r12d
rol r11d, 0xc
add r13d, r11d
xor ecx, r13d
rol ecx, 8
mov dword [rsp + 0x24], ecx
add r12d, ecx
xor r11d, r12d
mov ecx, dword [rsp + 0x3c]
add eax, ecx
mov edx, dword [rsp + 0x34]
xor edx, eax
rol edx, 0x10
mov ebx, dword [rsp + 0x38]
add ebx, edx
xor ecx, ebx
rol ecx, 0xc
add eax, ecx
mov dword [rsp + 0x14], eax
xor edx, eax
rol edx, 8
add ebx, edx
xor ecx, ebx
mov rax, qword [rsp + 0x40]
inc rax
nop
nop
nop
nop
nop
nop
rol r8d, 7
rol r10d, 7
rol r11d, 7
rol ecx, 7
mov qword [rsp + 0x40], rax
mov dword [rsp + 0x28], r9d
mov dword [rsp + 0x1c], r13d
mov qword [rsp + 0x48], rax
mov eax, dword [rsp + 0x14]
mov dword [rsp + 0x18], eax
mov eax, edx
mov r9d, dword [rsp + 0x20]
mov edx, ecx
mov r13d, ebx
mov ecx, dword [rsp + 0x24]
mov rbx, qword [rsp + 0x70]
mov dword [rsp + 0x30], r9d
mov r9, qword [rsp + 0x40]
cmp r9, 0xa
jl 0x5017c3
cmp rbx, 0x1f
jbe 0x5019be
mov edx, dword [rsp + 0x2c]
mov r8, qword [rsp + 0x68]
mov dword [r8], edx
mov edx, dword [rsp + 0x28]
mov dword [r8 + 4], edx
mov edx, dword [rsp + 0x1c]
mov dword [r8 + 8], edx
mov edx, dword [rsp + 0x18]
mov dword [r8 + 0xc], edx
nop
mov dword [r8 + 0x10], edi
mov dword [r8 + 0x14], ecx
mov dword [r8 + 0x18], eax
mov edx, dword [rsp + 0x30]
mov dword [r8 + 0x1c], edx
mov rax, r8
mov rcx, qword [rsp + 0x78]
xor edi, edi
xor esi, esi
add rsp, 0x58
pop rbp
ret
mov eax, 0x1f
mov rcx, rbx
call fcn.0046f920
nop
mov qword [rsp + 8], rax
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rcx
mov qword [rsp + 0x20], rdi
mov qword [rsp + 0x28], rsi
mov qword [rsp + 0x30], r8
mov qword [rsp + 0x38], r9
mov qword [rsp + 0x40], r10
mov qword [rsp + 0x48], r11
call fcn.0046d640
mov rax, qword [rsp + 8]
mov rbx, qword [rsp + 0x10]
mov rcx, qword [rsp + 0x18]
mov rdi, qword [rsp + 0x20]
mov rsi, qword [rsp + 0x28]
mov r8, qword [rsp + 0x30]
mov r9, qword [rsp + 0x38]
mov r10, qword [rsp + 0x40]
mov r11, qword [rsp + 0x48]
jmp fcn.005016a0