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

Disassembly:
sub rsp, 0xb8
vmovaps xmmword [rsp + 0xa0], xmm15
vmovdqa xmmword [rsp + 0x90], xmm14
vmovaps xmmword [rsp + 0x80], xmm13
vmovaps xmmword [rsp + 0x70], xmm12
vmovaps xmmword [rsp + 0x60], xmm11
vmovaps xmmword [rsp + 0x50], xmm10
vmovaps xmmword [rsp + 0x40], xmm9
vmovaps xmmword [rsp + 0x30], xmm8
vmovaps xmmword [rsp + 0x20], xmm7
vmovaps xmmword [rsp + 0x10], xmm6
vmovdqa xmm5, xmmword [rcx + 0x20]
mov rax, qword [rcx + 0x20]
lea r9, [rax + 1]
vpinsrd xmm0, xmm5, r9d, 0
shr r9, 0x20
vpinsrd xmm2, xmm0, r9d, 1
lea r9, [rax + 2]
vpinsrd xmm0, xmm5, r9d, 0
shr r9, 0x20
vpinsrd xmm1, xmm0, r9d, 1
lea r9, [rax + 3]
vpinsrd xmm0, xmm5, r9d, 0
shr r9, 0x20
vpinsrd xmm15, xmm0, r9d, 1
vmovdqu ymm4, ymmword [rcx]
vmovdqu ymm3, ymmword [rcx + 0x10]
vinserti128 ymm6, ymm4, xmm4, 1
vinserti128 ymm7, ymm3, xmm3, 1
vinserti128 ymm13, ymm5, xmm2, 1
vinserti128 ymm9, ymm1, xmm15, 1
test edx, edx
je 0x14012cc9c
vmovdqa xmmword [rsp], xmm15
vbroadcasti128 ymm12, xmmword [0x140226540]
vbroadcasti128 ymm10, xmmword [0x140226550]
vmovdqa ymm11, ymmword [0x140226520]
vmovdqa ymm8, ymm12
vmovdqa ymm14, ymm6
vmovdqa ymm15, ymm7
nop word cs:[rax + rax]
vpaddd ymm12, ymm12, ymm6
vpaddd ymm8, ymm14, ymm8
vpxor ymm13, ymm13, ymm12
vpxor ymm9, ymm9, ymm8
vpshuflw ymm13, ymm13, 0xb1
vpshufhw ymm13, ymm13, 0xb1
vpshuflw ymm9, ymm9, 0xb1
vpshufhw ymm9, ymm9, 0xb1
vpaddd ymm7, ymm13, ymm7
vpaddd ymm15, ymm15, ymm9
vpxor ymm6, ymm7, ymm6
vpsrld ymm0, ymm6, 0x14
vpslld ymm6, ymm6, 0xc
vpor ymm0, ymm6, ymm0
vpxor ymm6, ymm15, ymm14
vpsrld ymm14, ymm6, 0x14
vpslld ymm6, ymm6, 0xc
vpor ymm6, ymm14, ymm6
vpaddd ymm12, ymm12, ymm0
vpaddd ymm8, ymm8, ymm6
vpshufb ymm14, ymm12, ymm10
vpshufb ymm13, ymm13, ymm10
vpxor ymm13, ymm13, ymm14
vpshufb ymm14, ymm8, ymm10
vpshufb ymm9, ymm9, ymm10
vpxor ymm9, ymm9, ymm14
vpaddd ymm7, ymm13, ymm7
vpaddd ymm14, ymm15, ymm9
vpxor ymm0, ymm7, ymm0
vpxor ymm6, ymm14, ymm6
vpsrld ymm15, ymm0, 0x19
vpslld ymm0, ymm0, 7
vpor ymm0, ymm15, ymm0
vpsrld ymm15, ymm6, 0x19
vpslld ymm6, ymm6, 7
vpor ymm6, ymm15, ymm6
vpshufd ymm0, ymm0, 0x39
vpshufd ymm6, ymm6, 0x39
vpshufd ymm7, ymm7, 0x4e
vpshufd ymm14, ymm14, 0x4e
vpaddd ymm12, ymm12, ymm0
vpaddd ymm8, ymm8, ymm6
vpshuflw ymm15, ymm12, 0xb1
vpshufhw ymm15, ymm15, 0xb1
vpshufb ymm13, ymm13, ymm11
vpxor ymm13, ymm13, ymm15
vpshuflw ymm15, ymm8, 0xb1
vpshufhw ymm15, ymm15, 0xb1
vpshufb ymm9, ymm9, ymm11
vpxor ymm9, ymm9, ymm15
vpaddd ymm7, ymm13, ymm7
vpaddd ymm14, ymm14, ymm9
vpxor ymm0, ymm7, ymm0
vpxor ymm6, ymm14, ymm6
vpsrld ymm15, ymm0, 0x14
vpslld ymm0, ymm0, 0xc
vpor ymm0, ymm15, ymm0
vpsrld ymm15, ymm6, 0x14
vpslld ymm6, ymm6, 0xc
vpor ymm6, ymm15, ymm6
vpaddd ymm12, ymm12, ymm0
vpaddd ymm8, ymm8, ymm6
vpxor ymm13, ymm13, ymm12
vpshufb ymm13, ymm13, ymm10
vpxor ymm9, ymm9, ymm8
vpshufb ymm9, ymm9, ymm10
vpaddd ymm7, ymm13, ymm7
vpaddd ymm15, ymm14, ymm9
vpxor ymm0, ymm7, ymm0
vpxor ymm6, ymm15, ymm6
vpsrld ymm14, ymm0, 0x19
vpslld ymm0, ymm0, 7
vpor ymm0, ymm14, ymm0
vpsrld ymm14, ymm6, 0x19
vpslld ymm6, ymm6, 7
vpor ymm14, ymm14, ymm6
vpshufd ymm6, ymm0, 0x93
vpshufd ymm14, ymm14, 0x93
vpshufd ymm7, ymm7, 0x4e
vpshufd ymm15, ymm15, 0x4e
vpshufd ymm13, ymm13, 0x39
vpshufd ymm9, ymm9, 0x39
dec edx
jne 0x14012caf0
vmovdqa ymm10, ymm7
vmovdqa ymm11, ymm6
vmovdqa ymm7, ymm15
vmovdqa ymm6, ymm14
vmovdqa xmm15, xmmword [rsp]
jmp 0x14012ccb2
vbroadcasti128 ymm8, xmmword [0x140226540]
vmovdqa ymm10, ymm7
vmovdqa ymm11, ymm6
vmovdqa ymm12, ymm8
add rax, 4
mov rdx, rax
shr rdx, 0x20
vpinsrd xmm0, xmm5, eax, 0
vpinsrd xmm0, xmm0, edx, 1
vmovdqa xmmword [rcx + 0x20], xmm0
vmovdqa xmm14, xmmword [0x140226540]
vpaddd xmm0, xmm12, xmm14
vmovdqu xmmword [r8], xmm0
vpaddd xmm0, xmm11, xmm4
vmovdqu xmmword [r8 + 0x10], xmm0
vpaddd xmm0, xmm10, xmm3
vmovdqu xmmword [r8 + 0x20], xmm0
vpaddd xmm0, xmm13, xmm5
vmovdqu xmmword [r8 + 0x30], xmm0
vextracti128 xmm0, ymm13, 1
vextracti128 xmm5, ymm10, 1
vextracti128 xmm10, ymm12, 1
vpaddd xmm10, xmm10, xmm14
vextracti128 xmm11, ymm11, 1
vmovdqu xmmword [r8 + 0x40], xmm10
vpaddd xmm10, xmm11, xmm4
vmovdqu xmmword [r8 + 0x50], xmm10
vpaddd xmm5, xmm5, xmm3
vmovdqu xmmword [r8 + 0x60], xmm5
vpaddd xmm0, xmm2, xmm0
vmovdqu xmmword [r8 + 0x70], xmm0
vpaddd xmm0, xmm8, xmm14
vmovdqu xmmword [r8 + 0x80], xmm0
vpaddd xmm0, xmm6, xmm4
vmovdqu xmmword [r8 + 0x90], xmm0
vpaddd xmm0, xmm7, xmm3
vmovdqu xmmword [r8 + 0xa0], xmm0
vpaddd xmm0, xmm9, xmm1
vmovdqu xmmword [r8 + 0xb0], xmm0
vextracti128 xmm0, ymm9, 1
vextracti128 xmm1, ymm7, 1
vextracti128 xmm2, ymm8, 1
vpaddd xmm2, xmm14, xmm2
vextracti128 xmm5, ymm6, 1
vmovdqu xmmword [r8 + 0xc0], xmm2
vpaddd xmm2, xmm5, xmm4
vmovdqu xmmword [r8 + 0xd0], xmm2
vpaddd xmm1, xmm1, xmm3
vmovdqu xmmword [r8 + 0xe0], xmm1
vpaddd xmm0, xmm15, xmm0
vmovdqu xmmword [r8 + 0xf0], xmm0
vzeroupper
vmovaps xmm6, xmmword [rsp + 0x10]
vmovaps xmm7, xmmword [rsp + 0x20]
vmovaps xmm8, xmmword [rsp + 0x30]
vmovaps xmm9, xmmword [rsp + 0x40]
vmovaps xmm10, xmmword [rsp + 0x50]
vmovaps xmm11, xmmword [rsp + 0x60]
vmovaps xmm12, xmmword [rsp + 0x70]
vmovaps xmm13, xmmword [rsp + 0x80]
vmovaps xmm14, xmmword [rsp + 0x90]
vmovaps xmm15, xmmword [rsp + 0xa0]
add rsp, 0xb8
ret