Function at 0x140015530
Capabilities:
Encode data using xor
Encrypt data using salsa20 or chacha

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x48
cmp r8, 0x20
jne 0x1400157ba
mov qword [rsp + 0x40], rcx
cmp qword [rsp + 0xb0], 0x18
jne 0x1400157d4
mov eax, dword [rdx]
mov esi, dword [rdx + 4]
mov edi, dword [rdx + 8]
mov ebx, dword [rdx + 0xc]
mov ecx, dword [rdx + 0x10]
mov dword [rsp + 0x28], ecx
mov r14d, dword [rdx + 0x14]
mov ecx, dword [rdx + 0x18]
mov dword [rsp + 0x24], ecx
mov r13d, dword [rdx + 0x1c]
mov edx, dword [r9]
mov r8d, dword [r9 + 4]
mov r10d, dword [r9 + 8]
mov qword [rsp + 0x38], r9
mov r11d, dword [r9 + 0xc]
mov r15d, 0x6b206574
mov ebp, 0x79622d32
mov r9d, 0x3320646e
mov ecx, 0x61707865
mov dword [rsp + 0x34], 0xa
nop word cs:[rax + rax]
add ecx, eax
add r9d, esi
add ebp, edi
add r15d, ebx
xor edx, ecx
xor r8d, r9d
xor r10d, ebp
rol edx, 0x10
rol r8d, 0x10
rol r10d, 0x10
xor r11d, r15d
rol r11d, 0x10
add dword [rsp + 0x28], edx
add r14d, r8d
mov r12d, dword [rsp + 0x24]
add r12d, r10d
mov dword [rsp + 0x24], r12d
add r13d, r11d
xor eax, dword [rsp + 0x28]
xor esi, r14d
xor edi, r12d
rol eax, 0xc
rol esi, 0xc
rol edi, 0xc
xor ebx, r13d
rol ebx, 0xc
add ecx, eax
add r9d, esi
add ebp, edi
mov dword [rsp + 0x2c], ebp
add r15d, ebx
xor edx, ecx
xor r8d, r9d
xor r10d, ebp
rol edx, 8
rol r8d, 8
rol r10d, 8
xor r11d, r15d
rol r11d, 8
mov r12d, dword [rsp + 0x28]
add r12d, edx
mov dword [rsp + 0x28], r12d
add r14d, r8d
mov dword [rsp + 0x30], r14d
mov ebp, r13d
mov r13d, dword [rsp + 0x24]
add r13d, r10d
add ebp, r11d
xor eax, r12d
xor esi, r14d
mov r12d, r13d
mov r13d, ebp
mov ebp, dword [rsp + 0x2c]
xor edi, r12d
rol eax, 7
rol esi, 7
rol edi, 7
xor ebx, r13d
rol ebx, 7
add ecx, esi
add r9d, edi
add ebp, ebx
add r15d, eax
xor r11d, ecx
xor edx, r9d
xor r8d, ebp
rol r11d, 0x10
rol edx, 0x10
rol r8d, 0x10
xor r10d, r15d
rol r10d, 0x10
add r12d, r11d
mov dword [rsp + 0x24], r12d
add r13d, edx
mov r14d, dword [rsp + 0x28]
add r14d, r8d
add dword [rsp + 0x30], r10d
xor esi, r12d
xor edi, r13d
xor ebx, r14d
rol esi, 0xc
rol edi, 0xc
rol ebx, 0xc
mov r12d, dword [rsp + 0x30]
xor eax, r12d
rol eax, 0xc
add ecx, esi
add r9d, edi
add ebp, ebx
add r15d, eax
mov dword [rsp + 0x2c], r15d
xor r11d, ecx
xor edx, r9d
xor r8d, ebp
rol r11d, 8
rol edx, 8
rol r8d, 8
xor r10d, r15d
rol r10d, 8
mov r15d, dword [rsp + 0x24]
add r15d, r11d
add r13d, edx
add r14d, r8d
add r12d, r10d
mov dword [rsp + 0x24], r15d
xor esi, r15d
mov r15d, dword [rsp + 0x2c]
xor edi, r13d
mov dword [rsp + 0x28], r14d
xor ebx, r14d
rol esi, 7
rol edi, 7
rol ebx, 7
mov r14d, r12d
xor eax, r12d
rol eax, 7
dec dword [rsp + 0x34]
jne 0x1400155c0
movaps xmm0, xmmword [str.expand_32_byte_k]
mov rax, qword [rsp + 0x40]
movups xmmword [rax], xmm0
mov dword [rax + 0x10], ecx
mov dword [rax + 0x14], r9d
mov dword [rax + 0x18], ebp
mov dword [rax + 0x1c], r15d
mov dword [rax + 0x20], edx
mov dword [rax + 0x24], r8d
mov dword [rax + 0x28], r10d
mov dword [rax + 0x2c], r11d
mov qword [rax + 0x30], 0
mov rcx, qword [rsp + 0x38]
mov rcx, qword [rcx + 0x10]
mov qword [rax + 0x38], rcx
xorps xmm0, xmm0
movups xmmword [rax + 0x40], xmm0
movups xmmword [rax + 0x50], xmm0
movups xmmword [rax + 0x60], xmm0
movups xmmword [rax + 0x70], xmm0
mov qword [rax + 0x80], 0x40
add rsp, 0x48
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
lea rcx, str.assertion_failed:_key.len____32
lea r8, [0x14012e3a0]
mov edx, 0x21
call dbg.panic
ud2
lea rcx, [0x14012e338]
lea r8, [0x14012e360]
mov edx, 0x23
call dbg.panic
ud2