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

Disassembly:
mov qword [rsp + 0x10], rdx
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], 0x79622d32
mov r13, r8
mov r8d, 0x61707865
mov eax, 0x3320646e
mov dword [rsp], r8d
mov r10d, 0x6b206574
mov dword [rsp + 4], eax
test r9, r9
je 0x14004fb60
movzx eax, byte [r9 + 2]
movzx r8d, byte [r9 + 3]
movzx edx, byte [r9 + 7]
movzx r10d, byte [r9 + 0xf]
shl edx, 8
shl r8d, 8
or r8d, eax
shl r10d, 8
movzx eax, byte [r9 + 1]
shl r8d, 8
or r8d, eax
movzx eax, byte [r9]
shl r8d, 8
or r8d, eax
movzx eax, byte [r9 + 6]
or edx, eax
mov dword [rsp], r8d
movzx eax, byte [r9 + 5]
shl edx, 8
or edx, eax
movzx eax, byte [r9 + 4]
shl edx, 8
or edx, eax
movzx eax, byte [r9 + 0xa]
mov dword [rsp + 4], edx
movzx edx, byte [r9 + 0xb]
shl edx, 8
or edx, eax
movzx eax, byte [r9 + 9]
shl edx, 8
or edx, eax
movzx eax, byte [r9 + 8]
shl edx, 8
or edx, eax
movzx eax, byte [r9 + 0xe]
or r10d, eax
mov dword [rsp + 0xb8], edx
movzx eax, byte [r9 + 0xd]
shl r10d, 8
or r10d, eax
movzx eax, byte [r9 + 0xc]
shl r10d, 8
or r10d, eax
movzx eax, byte [r13 + 2]
movzx r11d, byte [r13 + 3]
movzx ebx, byte [r13 + 7]
movzx edi, byte [r13 + 0xb]
movzx esi, byte [r13 + 0xf]
movzx r14d, byte [r13 + 0x13]
movzx r15d, byte [r13 + 0x17]
movzx r12d, byte [r13 + 0x1b]
movzx ebp, byte [r13 + 0x1f]
shl r11d, 8
or r11d, eax
shl ebx, 8
movzx eax, byte [r13 + 1]
shl edi, 8
shl esi, 8
shl r14d, 8
shl r15d, 8
shl r12d, 8
shl r11d, 8
or r11d, eax
mov dword [rsp + 0x3c], r10d
movzx eax, byte [r13]
shl r11d, 8
or r11d, eax
movzx eax, byte [r13 + 6]
or ebx, eax
mov dword [rsp + 0xc], r11d
movzx eax, byte [r13 + 5]
shl ebx, 8
or ebx, eax
movzx eax, byte [r13 + 4]
shl ebx, 8
or ebx, eax
movzx eax, byte [r13 + 0xa]
or edi, eax
mov dword [rsp + 0x10], ebx
movzx eax, byte [r13 + 9]
shl edi, 8
or edi, eax
movzx eax, byte [r13 + 8]
shl edi, 8
or edi, eax
movzx eax, byte [r13 + 0xe]
or esi, eax
mov dword [rsp + 0x14], edi
movzx eax, byte [r13 + 0xd]
shl esi, 8
or esi, eax
movzx eax, byte [r13 + 0xc]
shl esi, 8
or esi, eax
movzx eax, byte [r13 + 0x12]
or r14d, eax
mov dword [rsp + 0x18], esi
movzx eax, byte [r13 + 0x11]
shl r14d, 8
or r14d, eax
movzx eax, byte [r13 + 0x10]
shl r14d, 8
or r14d, eax
movzx eax, byte [r13 + 0x16]
or r15d, eax
mov dword [rsp + 0x2c], r14d
movzx eax, byte [r13 + 0x15]
shl r15d, 8
or r15d, eax
movzx eax, byte [r13 + 0x14]
shl r15d, 8
or r15d, eax
movzx eax, byte [r13 + 0x1a]
or r12d, eax
mov dword [rsp + 0x30], r15d
movzx eax, byte [r13 + 0x19]
shl r12d, 8
or r12d, eax
movzx eax, byte [r13 + 0x18]
shl r12d, 8
or r12d, eax
movzx eax, byte [r13 + 0x1e]
mov dword [rsp + 0x34], r12d
shl ebp, 8
mov r9, qword [rsp + 0xa8]
or ebp, eax
movzx eax, byte [r13 + 0x1d]
shl ebp, 8
or ebp, eax
movzx eax, byte [r13 + 0x1c]
movzx r13d, byte [r9 + 3]
movzx edx, byte [r9 + 7]
shl edx, 8
shl r13d, 8
shl ebp, 8
or ebp, eax
movzx eax, byte [r9 + 2]
or r13d, eax
mov dword [rsp + 0x38], ebp
movzx eax, byte [r9 + 1]
shl r13d, 8
or r13d, eax
movzx eax, byte [r9]
shl r13d, 8
or r13d, eax
movzx eax, byte [r9 + 6]
or edx, eax
mov dword [rsp + 0x1c], r13d
movzx eax, byte [r9 + 5]
shl edx, 8
or edx, eax
movzx eax, byte [r9 + 4]
shl edx, 8
or edx, eax
movzx eax, byte [r9 + 0xa]
mov dword [rsp + 8], edx
mov dword [rsp + 0x20], edx
movzx edx, byte [r9 + 0xb]
shl edx, 8
or edx, eax
movzx eax, byte [r9 + 9]
shl edx, 8
or edx, eax
movzx eax, byte [r9 + 8]
shl edx, 8
or edx, eax
movzx eax, byte [r9 + 0xe]
mov dword [rsp + 0xa8], edx
mov dword [rsp + 0x24], edx
movzx edx, byte [r9 + 0xf]
shl edx, 8
or edx, eax
movzx eax, byte [r9 + 0xd]
shl edx, 8
or edx, eax
movzx eax, byte [r9 + 0xc]
mov r9d, dword [rsp + 0xb8]
shl edx, 8
or edx, eax
mov eax, dword [rsp + 4]
cmp dword [rsp + 0xc0], 0
mov dword [rsp + 0xb0], edx
mov dword [rsp + 0x28], edx
mov edx, r8d
mov r8d, eax
jle 0x14004ff4b
mov ecx, dword [rsp + 0xc0]
mov edx, dword [rsp]
dec ecx
shr ecx, 1
inc ecx
mov qword [rsp + 0x40], rcx
mov ecx, dword [rsp + 8]
nop
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 0x14004fdb0
mov dword [rsp + 8], ecx
mov rcx, qword [rsp + 0xa0]
mov eax, dword [rsp]
add eax, edx
mov byte [rcx], al
shr eax, 8
mov byte [rcx + 1], al
shr eax, 8
mov byte [rcx + 2], al
shr eax, 8
mov byte [rcx + 3], al
mov eax, dword [rsp + 0xc]
add eax, r11d
mov byte [rcx + 4], al
shr eax, 8
mov byte [rcx + 5], al
shr eax, 8
mov byte [rcx + 6], al
shr eax, 8
mov byte [rcx + 7], al
mov eax, dword [rsp + 0x10]
add eax, ebx
mov byte [rcx + 8], al
shr eax, 8
mov byte [rcx + 9], al
shr eax, 8
mov byte [rcx + 0xa], al
shr eax, 8
mov byte [rcx + 0xb], al
mov eax, dword [rsp + 0x14]
add eax, edi
mov byte [rcx + 0xc], al
shr eax, 8
mov byte [rcx + 0xd], al
shr eax, 8
mov byte [rcx + 0xe], al
shr eax, 8
mov byte [rcx + 0xf], al
mov eax, dword [rsp + 0x18]
add eax, esi
mov byte [rcx + 0x10], al
shr eax, 8
mov byte [rcx + 0x11], al
shr eax, 8
mov byte [rcx + 0x12], al
shr eax, 8
mov byte [rcx + 0x13], al
mov eax, dword [rsp + 4]
add eax, r8d
mov byte [rcx + 0x14], al
shr eax, 8
mov byte [rcx + 0x15], al
shr eax, 8
mov byte [rcx + 0x16], al
shr eax, 8
mov byte [rcx + 0x17], al
mov eax, dword [rsp + 0x1c]
add eax, r13d
mov byte [rcx + 0x18], al
shr eax, 8
mov byte [rcx + 0x19], al
shr eax, 8
mov byte [rcx + 0x1a], al
shr eax, 8
mov byte [rcx + 0x1b], al
mov eax, dword [rsp + 8]
add eax, dword [rsp + 0x20]
mov byte [rcx + 0x1c], al
shr eax, 8
mov byte [rcx + 0x1d], al
shr eax, 8
mov byte [rcx + 0x1e], al
shr eax, 8
mov byte [rcx + 0x1f], al
mov eax, dword [rsp + 0xa8]
add eax, dword [rsp + 0x24]
mov byte [rcx + 0x20], al
shr eax, 8
mov byte [rcx + 0x21], al
shr eax, 8
mov byte [rcx + 0x22], al
shr eax, 8
mov byte [rcx + 0x23], al
mov eax, dword [rsp + 0xb0]
add eax, dword [rsp + 0x28]
mov byte [rcx + 0x24], al
shr eax, 8
mov byte [rcx + 0x25], al
shr eax, 8
mov byte [rcx + 0x26], al
shr eax, 8
mov byte [rcx + 0x27], al
mov eax, dword [rsp + 0xb8]
add eax, r9d
mov byte [rcx + 0x28], al
shr eax, 8
mov byte [rcx + 0x29], al
shr eax, 8
mov byte [rcx + 0x2a], al
shr eax, 8
mov byte [rcx + 0x2b], al
mov eax, dword [rsp + 0x2c]
add eax, r14d
mov byte [rcx + 0x2c], al
shr eax, 8
mov byte [rcx + 0x2d], al
shr eax, 8
mov byte [rcx + 0x2e], al
shr eax, 8
mov byte [rcx + 0x2f], al
mov eax, dword [rsp + 0x30]
add eax, r15d
mov byte [rcx + 0x30], al
shr eax, 8
mov byte [rcx + 0x31], al
shr eax, 8
mov byte [rcx + 0x32], al
shr eax, 8
mov byte [rcx + 0x33], al
mov eax, dword [rsp + 0x34]
add eax, r12d
mov byte [rcx + 0x34], al
shr eax, 8
mov byte [rcx + 0x35], al
shr eax, 8
mov byte [rcx + 0x36], al
shr eax, 8
mov byte [rcx + 0x37], al
mov eax, dword [rsp + 0x38]
add eax, ebp
mov byte [rcx + 0x38], al
shr eax, 8
mov byte [rcx + 0x39], al
shr eax, 8
mov byte [rcx + 0x3a], al
shr eax, 8
mov byte [rcx + 0x3b], al
mov eax, dword [rsp + 0x3c]
add eax, r10d
mov byte [rcx + 0x3c], al
shr eax, 8
mov byte [rcx + 0x3d], al
shr eax, 8
mov byte [rcx + 0x3e], al
shr eax, 8
mov byte [rcx + 0x3f], al
add rsp, 0x58
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret