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

Disassembly:
push rsi
push rbx
sub rsp, 0x38
mov rax, qword [0x14022c040]
mov dword [0x140255de0], 0
mov qword [rsp + 0x68], r9
mov rbx, r8
mov rsi, qword [rax]
mov qword [rsp + 0x28], rsi
xor esi, esi
lea rsi, [rsp + 0x68]
mov r9, rsi
mov qword [rsp + 0x20], rsi
call fcn.1400b6810
mov eax, dword [0x140255de8]
test eax, eax
jne 0x1401df3d0
mov r8, rbx
mov r9, rsi
lea rbx, str.usage.c
mov edx, 0x140
mov dword [0x140255de8], 1
mov rcx, rbx
call fcn.1400a0aa0
mov r8d, dword [0x140255de4]
test r8d, r8d
je 0x1401df3d0
mov rcx, rbx
mov edx, 0x143
call fcn.140009c20
mov ecx, eax
call sub.msvcrt.dll_exit
nop
nop word cs:[rax + rax]
nop dword [rax]
push rdi
push rsi
push rbx
sub rsp, 0xb0
movups xmmword [rsp + 0x50], xmm6
movups xmmword [rsp + 0x60], xmm7
movups xmmword [rsp + 0x70], xmm8
movups xmmword [rsp + 0x80], xmm9
movups xmmword [rsp + 0x90], xmm10
movups xmmword [rsp + 0xa0], xmm11
mov rbx, qword [0x14022c040]
mov rdi, qword [rbx]
mov qword [rsp + 0x48], rdi
lea rdi, [rsp + 0x20]
mov rsi, rcx
test dl, dl
jne 0x1400f11ac
mov edx, 0x20
mov rcx, rdi
call fcn.1400f2550
test al, al
je 0x1400f11a0
lea rdi, [rsi + 8]
mov rcx, rsi
xor eax, eax
mov qword [rsi], 0
and rdi, 0xfffffffffffffff8
lea rdx, str.expand_32_byte_k
mov r8, rsi
mov qword [rsi + 0x80], 0
sub rcx, rdi
lea r9, [rdx + 0x10]
add ecx, 0x88
shr ecx, 3
rep stosq qword [rdi], rax
movzx eax, byte [rdx + 1]
movzx ecx, byte [rdx + 2]
add rdx, 4
add r8, 4
shl ecx, 0x10
shl eax, 8
or eax, ecx
movzx ecx, byte [rdx - 4]
or eax, ecx
movzx ecx, byte [rdx - 1]
shl ecx, 0x18
or eax, ecx
mov dword [r8 - 4], eax
cmp rdx, r9
jne 0x1400f0ef5
movq xmm2, qword [0x140208cc0]
movq xmm1, qword [rsp + 0x20]
mov qword [rsi + 0x38], rsi
movq xmm4, qword [rsp + 0x28]
movq xmm3, qword [rsp + 0x30]
movdqa xmm0, xmm2
movdqa xmm6, xmm2
movq xmm5, qword [rsp + 0x38]
pand xmm6, xmm4
psrlw xmm4, 8
pand xmm0, xmm1
psrlw xmm1, 8
packuswb xmm0, xmm6
movdqa xmm6, xmm2
packuswb xmm1, xmm4
movdqa xmm4, xmm2
pand xmm6, xmm5
pand xmm4, xmm3
psrlw xmm5, 8
pshufd xmm0, xmm0, 8
packuswb xmm4, xmm6
psrlw xmm3, 8
movdqa xmm6, xmm2
pshufd xmm4, xmm4, 8
packuswb xmm3, xmm5
movdqa xmm5, xmm2
pand xmm6, xmm4
pand xmm5, xmm0
pshufd xmm1, xmm1, 8
psrlw xmm4, 8
psrlw xmm0, 8
pshufd xmm3, xmm3, 8
packuswb xmm0, xmm4
movdqa xmm4, xmm2
pand xmm2, xmm3
pand xmm4, xmm1
psrlw xmm3, 8
packuswb xmm5, xmm6
packuswb xmm4, xmm2
psrlw xmm1, 8
pshufd xmm0, xmm0, 8
pshufd xmm4, xmm4, 8
packuswb xmm1, xmm3
pshufd xmm5, xmm5, 8
pxor xmm3, xmm3
pshufd xmm1, xmm1, 8
movdqa xmm8, xmm4
movdqa xmm2, xmm0
movdqa xmm10, xmm5
punpcklbw xmm8, xmm3
punpcklbw xmm2, xmm3
movdqa xmm6, xmm1
punpcklbw xmm10, xmm3
punpcklbw xmm6, xmm3
punpcklbw xmm5, xmm3
punpcklbw xmm4, xmm3
psllw xmm8, 8
punpcklbw xmm0, xmm3
punpcklbw xmm1, xmm3
movdqa xmm7, xmm2
pxor xmm3, xmm3
movdqa xmm9, xmm8
punpcklwd xmm7, xmm3
punpcklwd xmm9, xmm3
punpcklwd xmm2, xmm3
pslld xmm7, 0x10
movdqa xmm11, xmm10
pshufd xmm2, xmm2, 0x4e
por xmm7, xmm9
movdqa xmm9, xmm6
punpcklwd xmm6, xmm3
punpcklwd xmm8, xmm3
pshufd xmm6, xmm6, 0x4e
punpcklwd xmm10, xmm3
pslld xmm2, 0x10
pslld xmm6, 0x18
pshufd xmm1, xmm1, 0x4e
pshufd xmm8, xmm8, 0x4e
pshufd xmm10, xmm10, 0x4e
pshufd xmm5, xmm5, 0x4e
por xmm6, xmm10
por xmm2, xmm8
punpcklwd xmm9, xmm3
por xmm2, xmm6
pslld xmm9, 0x18
movdqa xmm6, xmm5
movq qword [rsi + 0x18], xmm2
movdqa xmm2, xmm1
punpcklwd xmm6, xmm3
punpcklwd xmm1, xmm3
punpcklwd xmm11, xmm3
punpcklwd xmm2, xmm3
pshufd xmm0, xmm0, 0x4e
pshufd xmm4, xmm4, 0x4e
por xmm9, xmm11
pshufd xmm1, xmm1, 0x4e
pslld xmm2, 0x18
psllw xmm4, 8
por xmm7, xmm9
por xmm2, xmm6
movdqa xmm6, xmm0
punpcklwd xmm0, xmm3
movq qword [rsi + 0x10], xmm7
punpcklwd xmm6, xmm3
movdqa xmm7, xmm4
pshufd xmm0, xmm0, 0x4e
punpcklwd xmm4, xmm3
punpcklwd xmm5, xmm3
punpcklwd xmm7, xmm3
pslld xmm6, 0x10
pslld xmm0, 0x10
pshufd xmm4, xmm4, 0x4e
pslld xmm1, 0x18
pshufd xmm5, xmm5, 0x4e
por xmm6, xmm7
por xmm0, xmm4
por xmm1, xmm5
por xmm2, xmm6
por xmm0, xmm1
movq qword [rsi + 0x20], xmm2
movq qword [rsi + 0x28], xmm0
mov rax, qword [rsp + 0x48]
sub rax, qword [rbx]
jne 0x1400f1246
movups xmm6, xmmword [rsp + 0x50]
movups xmm7, xmmword [rsp + 0x60]
movups xmm9, xmmword [rsp + 0x80]
movups xmm8, xmmword [rsp + 0x70]
movups xmm10, xmmword [rsp + 0x90]
movups xmm11, xmmword [rsp + 0xa0]
add rsp, 0xb0
pop rbx
pop rsi
pop rdi
ret
lea rcx, str.unable_to_use_secure_randomness_n
call fcn.1400ed990
xor ecx, ecx
call fcn.1400f0d80
mov rdx, rdi
lea r8, [rsp + 0x40]
movabs r11, 0x302b8631721c51be
movabs r10, 0xbf58476d1ce4e5b9
movabs r9, 0x94d049bb133111eb
jmp 0x1400f1237
mov rcx, rax
shr rcx, 0x1e
xor rax, rcx
imul rax, r10
mov rcx, rax
shr rcx, 0x1b
xor rcx, rax
imul rcx, r9
mov rax, rcx
shr rax, 0x1f
xor rax, rcx
mov ecx, eax
mov dword [rdx], ecx
add rdx, 4
cmp rdx, r8
je 0x1400f0eb9
test rax, rax
jne 0x1400f1200
mov ecx, 0x721c51be
mov rax, r11
jmp 0x1400f1228
call fcn.1401d96b0
nop
nop dword [rax]
cmp byte [rcx + 0x84], 0
jne 0x1400f16b0
ret
xor edx, edx
jmp 0x1400f0e50
call sub.msvcrt.dll_abort
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
call sub.msvcrt.dll_abort
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
call sub.msvcrt.dll_abort
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
call sub.msvcrt.dll_abort
nop
lea rdx, str.out_of_memory_in_new
mov ecx, 0xc
call fcn.1400eda70
call sub.msvcrt.dll_abort
nop
lea rdx, str.out_of_memory_in_new
mov ecx, 0xc
call fcn.1400eda70
call sub.msvcrt.dll_abort
nop
lea rdx, str.out_of_memory_in_new
mov ecx, 0xc
call fcn.1400eda70
call sub.msvcrt.dll_abort
nop
nop
nop
nop
nop
nop
sub rsp, 0x28
cmp qword [0x1401e55b0], 0
je 0x1401df4bb
lea rcx, [0x1400ec1b0]
mov byte [0x1401e4a60], 0
call fcn.140001400
call fcn.1400ed890
cmp byte [0x14025b142], 0
jne 0x1401df4a6
mov byte [0x14025b142], 1
call fcn.1400f25d0
lea rcx, [0x1401e4a40]
call fcn.1401d9370
lea rcx, [0x1401e4a80]
mov qword [rax], rcx
call fcn.1400f2600
call fcn.1400eca10
lea rcx, [0x1401e55c8]
add rsp, 0x28
jmp 0x1400f16a0
call fcn.1400ec140
jmp 0x1401df45e