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

Disassembly:
mov qword [rsp + 8], rcx
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x58
mov dword [rsp + 0xb8], 0x3320646e
mov eax, 0x61707865
mov dword [rsp + 4], eax
mov r10d, 0x6b206574
mov dword [rsp], 0x79622d32
test r9, r9
je 0x18003c4c8
mov eax, dword [r9]
mov r10d, dword [r9 + 0xc]
mov dword [rsp + 4], eax
mov eax, dword [r9 + 4]
mov dword [rsp + 0xb8], eax
mov eax, dword [r9 + 8]
mov dword [rsp], eax
cmp dword [rsp + 0xc0], 0
mov eax, dword [rdx + 4]
mov r11d, dword [r8]
mov ebx, dword [r8 + 4]
mov edi, dword [r8 + 8]
mov esi, dword [r8 + 0xc]
mov r14d, dword [r8 + 0x10]
mov r15d, dword [r8 + 0x14]
mov r12d, dword [r8 + 0x18]
mov ebp, dword [r8 + 0x1c]
mov r13d, dword [rdx]
mov r8d, dword [rsp + 0xb8]
mov r9d, dword [rsp]
mov dword [rsp + 8], eax
mov dword [rsp + 0x20], eax
mov eax, dword [rdx + 8]
mov dword [rsp + 0xa8], eax
mov dword [rsp + 0x24], eax
mov eax, dword [rdx + 0xc]
mov dword [rsp + 0xb0], eax
mov dword [rsp + 0x28], eax
mov eax, dword [rsp + 4]
mov edx, eax
mov dword [rsp + 0x3c], r10d
mov dword [rsp + 0xc], r11d
mov dword [rsp + 0x10], ebx
mov dword [rsp + 0x14], edi
mov dword [rsp + 0x18], esi
mov dword [rsp + 0x2c], r14d
mov dword [rsp + 0x30], r15d
mov dword [rsp + 0x34], r12d
mov dword [rsp + 0x38], ebp
mov dword [rsp + 0x1c], r13d
jle 0x18003c71f
mov ecx, dword [rsp + 0xc0]
dec ecx
shr ecx, 1
inc ecx
mov qword [rsp + 0x40], rcx
mov ecx, dword [rsp + 8]
nop word [rax + rax]
lea eax, [r15 + rdx]
rol eax, 7
xor esi, eax
lea eax, [rsi + rdx]
rol eax, 9
xor dword [rsp + 0xa8], eax
mov eax, dword [rsp + 0xa8]
add eax, esi
rol eax, 0xd
xor r15d, eax
mov eax, dword [rsp + 0xa8]
add eax, r15d
mov dword [rsp + 0xc0], r15d
ror eax, 0xe
xor edx, eax
lea eax, [r11 + r8]
rol eax, 7
xor dword [rsp + 0xb0], eax
mov eax, dword [rsp + 0xb0]
add eax, r8d
rol eax, 9
xor r12d, eax
mov eax, dword [rsp + 0xb0]
add eax, r12d
rol eax, 0xd
xor r11d, eax
lea eax, [r12 + r11]
ror eax, 0xe
xor r8d, eax
lea eax, [r9 + r13]
rol eax, 7
xor ebp, eax
lea eax, [r9 + rbp]
rol eax, 9
xor ebx, eax
lea eax, [rbx + rbp]
rol eax, 0xd
xor r13d, eax
lea eax, [rbx + r13]
ror eax, 0xe
xor r9d, eax
lea eax, [r14 + r10]
rol eax, 7
xor edi, eax
lea eax, [rdi + r10]
rol eax, 9
xor ecx, eax
lea eax, [rcx + rdi]
rol eax, 0xd
xor r14d, eax
lea eax, [rcx + r14]
ror eax, 0xe
xor r10d, eax
lea eax, [rdi + rdx]
rol eax, 7
xor r11d, eax
lea eax, [r11 + rdx]
rol eax, 9
xor ebx, eax
lea eax, [rbx + r11]
rol eax, 0xd
xor edi, eax
lea eax, [rdi + rbx]
ror eax, 0xe
xor edx, eax
lea eax, [rsi + r8]
rol eax, 7
xor r13d, eax
lea eax, [r8 + r13]
rol eax, 9
xor ecx, eax
lea eax, [rcx + r13]
rol eax, 0xd
xor esi, eax
lea eax, [rcx + rsi]
ror eax, 0xe
xor r8d, eax
mov eax, dword [rsp + 0xb0]
add eax, r9d
rol eax, 7
xor r14d, eax
mov r15d, dword [rsp + 0xb0]
lea eax, [r14 + r9]
rol eax, 9
xor dword [rsp + 0xa8], eax
mov eax, dword [rsp + 0xa8]
add eax, r14d
rol eax, 0xd
xor r15d, eax
mov eax, dword [rsp + 0xa8]
add eax, r15d
mov dword [rsp + 0xb0], r15d
mov r15d, dword [rsp + 0xc0]
ror eax, 0xe
xor r9d, eax
lea eax, [r10 + rbp]
rol eax, 7
xor r15d, eax
lea eax, [r15 + r10]
rol eax, 9
xor r12d, eax
lea eax, [r12 + r15]
rol eax, 0xd
xor ebp, eax
lea eax, [r12 + rbp]
ror eax, 0xe
xor r10d, eax
sub qword [rsp + 0x40], 1
jne 0x18003c580
mov eax, dword [rsp + 4]
mov dword [rsp + 8], ecx
mov rcx, qword [rsp + 0xa0]
add eax, edx
mov dword [rcx], eax
mov eax, dword [rsp + 0xc]
add eax, r11d
mov dword [rcx + 4], eax
mov eax, dword [rsp + 0x10]
add eax, ebx
mov dword [rcx + 8], eax
mov eax, dword [rsp + 0x14]
add eax, edi
mov dword [rcx + 0xc], eax
mov eax, dword [rsp + 0x18]
add eax, esi
mov dword [rcx + 0x10], eax
mov eax, dword [rsp + 0xb8]
add eax, r8d
mov dword [rcx + 0x14], eax
mov eax, dword [rsp + 0x1c]
add eax, r13d
mov dword [rcx + 0x18], eax
mov eax, dword [rsp + 8]
add eax, dword [rsp + 0x20]
mov dword [rcx + 0x1c], eax
mov eax, dword [rsp + 0xa8]
add eax, dword [rsp + 0x24]
mov dword [rcx + 0x20], eax
mov eax, dword [rsp + 0xb0]
add eax, dword [rsp + 0x28]
mov dword [rcx + 0x24], eax
mov eax, dword [rsp]
add eax, r9d
mov dword [rcx + 0x28], eax
mov eax, dword [rsp + 0x2c]
add eax, r14d
mov dword [rcx + 0x2c], eax
mov eax, dword [rsp + 0x30]
add eax, r15d
mov dword [rcx + 0x30], eax
mov eax, dword [rsp + 0x34]
add eax, r12d
mov dword [rcx + 0x34], eax
mov eax, dword [rsp + 0x38]
add eax, ebp
mov dword [rcx + 0x38], eax
mov eax, dword [rsp + 0x3c]
add eax, r10d
mov dword [rcx + 0x3c], eax
add rsp, 0x58
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret