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

Disassembly:
push rsi
push rdi
sub rsp, 0x178
movaps xmmword [rsp + 0x160], xmm15
movaps xmmword [rsp + 0x150], xmm14
movaps xmmword [rsp + 0x140], xmm13
movaps xmmword [rsp + 0x130], xmm12
movaps xmmword [rsp + 0x120], xmm11
movaps xmmword [rsp + 0x110], xmm10
movaps xmmword [rsp + 0x100], xmm9
movaps xmmword [rsp + 0xf0], xmm8
movaps xmmword [rsp + 0xe0], xmm7
movaps xmmword [rsp + 0xd0], xmm6
mov rax, qword [0x1401822d8]
test rax, rax
je 0x14004b6aa
test ax, ax
js 0x14004b6c4
mov rax, qword [0x1401822d8]
test rax, rax
je 0x14004b72a
test eax, 0x4000
jne 0x14004b746
mov rax, qword [0x1401822d8]
test rax, rax
je 0x14004b7ac
test eax, 0x400
jne 0x14004b7c8
mov rax, qword [0x1401822d8]
test rax, rax
je 0x14004b82e
test eax, 0x200
jne 0x14004b84a
mov rsi, rdx
mov rdi, rcx
call fcn.140110bb0
mov rcx, rdi
mov rdx, rsi
test ax, ax
jns 0x14004aefa
movaps xmm6, xmmword [rsp + 0xd0]
movaps xmm7, xmmword [rsp + 0xe0]
movaps xmm8, xmmword [rsp + 0xf0]
movaps xmm9, xmmword [rsp + 0x100]
movaps xmm10, xmmword [rsp + 0x110]
movaps xmm11, xmmword [rsp + 0x120]
movaps xmm12, xmmword [rsp + 0x130]
movaps xmm13, xmmword [rsp + 0x140]
movaps xmm14, xmmword [rsp + 0x150]
movaps xmm15, xmmword [rsp + 0x160]
add rsp, 0x178
pop rdi
pop rsi
jmp 0x14004b8b0
mov rsi, rdx
mov rdi, rcx
call fcn.140110bb0
mov rcx, rdi
mov rdx, rsi
test eax, 0x4000
je 0x14004af15
movaps xmm6, xmmword [rsp + 0xd0]
movaps xmm7, xmmword [rsp + 0xe0]
movaps xmm8, xmmword [rsp + 0xf0]
movaps xmm9, xmmword [rsp + 0x100]
movaps xmm10, xmmword [rsp + 0x110]
movaps xmm11, xmmword [rsp + 0x120]
movaps xmm12, xmmword [rsp + 0x130]
movaps xmm13, xmmword [rsp + 0x140]
movaps xmm14, xmmword [rsp + 0x150]
movaps xmm15, xmmword [rsp + 0x160]
add rsp, 0x178
pop rdi
pop rsi
jmp 0x14004bca0
mov rsi, rdx
mov rdi, rcx
call fcn.140110bb0
mov rcx, rdi
mov rdx, rsi
test eax, 0x400
je 0x14004af30
movaps xmm6, xmmword [rsp + 0xd0]
movaps xmm7, xmmword [rsp + 0xe0]
movaps xmm8, xmmword [rsp + 0xf0]
movaps xmm9, xmmword [rsp + 0x100]
movaps xmm10, xmmword [rsp + 0x110]
movaps xmm11, xmmword [rsp + 0x120]
movaps xmm12, xmmword [rsp + 0x130]
movaps xmm13, xmmword [rsp + 0x140]
movaps xmm14, xmmword [rsp + 0x150]
movaps xmm15, xmmword [rsp + 0x160]
mov esp, 0x16024
add byte [rax - 0x7f], cl
add esp, 0x178
mov rsi, rdx
sub rsp, 0xb8
vmovaps xmmword [rsp + 0xa0], xmm15
vmovaps 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 r8, [rax + 1]
vpinsrd xmm0, xmm5, r8d, 0
shr r8, 0x20
vpinsrd xmm3, xmm0, r8d, 1
lea r8, [rax + 2]
vpinsrd xmm0, xmm5, r8d, 0
shr r8, 0x20
vpinsrd xmm1, xmm0, r8d, 1
lea r8, [rax + 3]
vpinsrd xmm0, xmm5, r8d, 0
shr r8, 0x20
vpinsrd xmm0, xmm0, r8d, 1
vmovdqu ymm4, ymmword [rcx]
vmovdqu ymm2, ymmword [rcx + 0x10]
vmovdqa xmmword [rsp], xmm0
vinserti128 ymm10, ymm1, xmm0, 1
vinserti128 ymm15, ymm5, xmm3, 1
vinserti128 ymm13, ymm4, xmm4, 1
vinserti128 ymm14, ymm2, xmm2, 1
vbroadcasti128 ymm12, xmmword [str.expand_32_byte_k]
mov r8d, 6
vbroadcasti128 ymm6, xmmword [0x1401129c0]
vmovdqa ymm7, ymmword [0x1401129a0]
vmovdqa ymm8, ymm12
vmovdqa ymm9, ymm13
vmovdqa ymm11, ymm14
nop word cs:[rax + rax]
vpaddd ymm12, ymm12, ymm13
vpaddd ymm8, ymm8, ymm9
vpxor ymm15, ymm15, ymm12
vpxor ymm10, ymm8, ymm10
vpshuflw ymm15, ymm15, 0xb1
vpshufhw ymm15, ymm15, 0xb1
vpshuflw ymm10, ymm10, 0xb1
vpshufhw ymm10, ymm10, 0xb1
vpaddd ymm14, ymm14, ymm15
vpaddd ymm11, ymm11, ymm10
vpxor ymm13, ymm14, ymm13
vpsrld ymm0, ymm13, 0x14
vpslld ymm13, ymm13, 0xc
vpor ymm0, ymm13, ymm0
vpxor ymm9, ymm11, ymm9
vpsrld ymm13, ymm9, 0x14
vpslld ymm9, ymm9, 0xc
vpor ymm9, ymm9, ymm13
vpaddd ymm12, ymm12, ymm0
vpaddd ymm8, ymm9, ymm8
vpshufb ymm13, ymm12, ymm6
vpshufb ymm15, ymm15, ymm6
vpxor ymm13, ymm15, ymm13
vpshufb ymm15, ymm8, ymm6
vpshufb ymm10, ymm10, ymm6
vpxor ymm10, ymm10, ymm15
vpaddd ymm14, ymm14, ymm13
vpaddd ymm11, ymm11, ymm10
vpxor ymm0, ymm14, ymm0
vpxor ymm9, ymm11, ymm9
vpsrld ymm15, ymm0, 0x19
vpslld ymm0, ymm0, 7
vpor ymm0, ymm15, ymm0
vpsrld ymm15, ymm9, 0x19
vpslld ymm9, ymm9, 7
vpor ymm9, ymm9, ymm15
vpshufd ymm0, ymm0, 0x39
vpshufd ymm9, ymm9, 0x39
vpshufd ymm14, ymm14, 0x4e
vpshufd ymm11, ymm11, 0x4e
vpaddd ymm12, ymm12, ymm0
vpaddd ymm8, ymm9, ymm8
vpshuflw ymm15, ymm12, 0xb1
vpshufhw ymm15, ymm15, 0xb1
vpshufb ymm13, ymm13, ymm7
vpxor ymm13, ymm13, ymm15
vpshuflw ymm15, ymm8, 0xb1
vpshufhw ymm15, ymm15, 0xb1
vpshufb ymm10, ymm10, ymm7
vpxor ymm10, ymm10, ymm15
vpaddd ymm14, ymm14, ymm13
vpaddd ymm11, ymm11, ymm10
vpxor ymm0, ymm14, ymm0
vpxor ymm9, ymm11, ymm9
vpsrld ymm15, ymm0, 0x14
vpslld ymm0, ymm0, 0xc
vpor ymm0, ymm15, ymm0
vpsrld ymm15, ymm9, 0x14
vpslld ymm9, ymm9, 0xc
vpor ymm9, ymm9, ymm15
vpaddd ymm12, ymm12, ymm0
vpaddd ymm8, ymm9, ymm8
vpxor ymm13, ymm13, ymm12
vpshufb ymm15, ymm13, ymm6
vpxor ymm10, ymm10, ymm8
vpshufb ymm10, ymm10, ymm6
vpaddd ymm14, ymm14, ymm15
vpaddd ymm11, ymm11, ymm10
vpxor ymm0, ymm14, ymm0
vpxor ymm9, ymm11, ymm9
vpsrld ymm13, ymm0, 0x19
vpslld ymm0, ymm0, 7
vpor ymm0, ymm13, ymm0
vpsrld ymm13, ymm9, 0x19
vpslld ymm9, ymm9, 7
vpor ymm9, ymm9, ymm13
vpshufd ymm13, ymm0, 0x93
vpshufd ymm9, ymm9, 0x93
vpshufd ymm14, ymm14, 0x4e
vpshufd ymm11, ymm11, 0x4e
vpshufd ymm15, ymm15, 0x39
vpshufd ymm10, ymm10, 0x39
dec r8d
jne 0x14004b9a0
add rax, 4
mov r8, rax
shr r8, 0x20
vpinsrd xmm0, xmm5, eax, 0
vpinsrd xmm0, xmm0, r8d, 1
vmovdqa xmmword [rcx + 0x20], xmm0
vmovdqa xmm6, xmmword [str.expand_32_byte_k]
vpaddd xmm0, xmm12, xmm6
vmovdqu xmmword [rdx], xmm0
vpaddd xmm0, xmm13, xmm4
vmovdqu xmmword [rdx + 0x10], xmm0
vpaddd xmm0, xmm14, xmm2
vmovdqu xmmword [rdx + 0x20], xmm0
vpaddd xmm0, xmm15, xmm5
vmovdqu xmmword [rdx + 0x30], xmm0
vextracti128 xmm0, ymm15, 1
vextracti128 xmm5, ymm14, 1
vextracti128 xmm7, ymm12, 1
vpaddd xmm7, xmm7, xmm6
vextracti128 xmm12, ymm13, 1
vmovdqu xmmword [rdx + 0x40], xmm7
vpaddd xmm7, xmm12, xmm4
vmovdqu xmmword [rdx + 0x50], xmm7
vpaddd xmm5, xmm5, xmm2
vmovdqu xmmword [rdx + 0x60], xmm5
vpaddd xmm0, xmm3, xmm0
vmovdqu xmmword [rdx + 0x70], xmm0
vpaddd xmm0, xmm8, xmm6
vmovdqu xmmword [rdx + 0x80], xmm0
vpaddd xmm0, xmm9, xmm4
vmovdqu xmmword [rdx + 0x90], xmm0
vpaddd xmm0, xmm11, xmm2
vmovdqu xmmword [rdx + 0xa0], xmm0
vpaddd xmm0, xmm10, xmm1
vmovdqu xmmword [rdx + 0xb0], xmm0
vextracti128 xmm0, ymm10, 1
vextracti128 xmm1, ymm11, 1
vextracti128 xmm3, ymm8, 1
vpaddd xmm3, xmm3, xmm6
vextracti128 xmm5, ymm9, 1
vmovdqu xmmword [rdx + 0xc0], xmm3
vpaddd xmm3, xmm5, xmm4
vmovdqu xmmword [rdx + 0xd0], xmm3
vpaddd xmm1, xmm1, xmm2
vmovdqu xmmword [rdx + 0xe0], xmm1
vpaddd xmm0, xmm0, xmmword [rsp]
vmovdqu xmmword [rdx + 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
sub rsp, 0x168
vmovaps xmmword [rsp + 0x150], xmm15
vmovaps xmmword [rsp + 0x140], xmm14
vmovaps xmmword [rsp + 0x130], xmm13
vmovaps xmmword [rsp + 0x120], xmm12
vmovaps xmmword [rsp + 0x110], xmm11
vmovaps xmmword [rsp + 0x100], xmm10
vmovdqa xmmword [rsp + 0xf0], xmm9
vmovaps xmmword [rsp + 0xe0], xmm8
vmovdqa xmmword [rsp + 0xd0], xmm7
vmovaps xmmword [rsp + 0xc0], xmm6
vmovdqa xmm6, xmmword [rcx + 0x20]
mov rax, qword [rcx + 0x20]
lea r8, [rax + 1]
vpinsrd xmm0, xmm6, r8d, 0
shr r8, 0x20
vpinsrd xmm4, xmm0, r8d, 1
lea r8, [rax + 2]
vpinsrd xmm0, xmm6, r8d, 0
shr r8, 0x20
vpinsrd xmm13, xmm0, r8d, 1
vmovdqa xmm1, xmmword [rcx]
lea r8, [rax + 3]
vpinsrd xmm0, xmm6, r8d, 0
shr r8, 0x20
vpinsrd xmm5, xmm0, r8d, 1
vmovdqa xmm0, xmmword [rcx + 0x10]
vmovdqa xmm11, xmmword [str.expand_32_byte_k]
mov r8d, 6
vmovdqa xmm14, xmm11
vmovdqa xmm15, xmm11
vmovdqa xmm12, xmm11
vmovdqa xmm3, xmm1
vmovdqa xmm2, xmm1
vmovdqa xmmword [rsp + 0x20], xmm1
vmovdqa xmmword [rsp + 0x80], xmm1
vmovdqa xmmword [rsp + 0x30], xmm1
vmovdqa xmm8, xmm0
vmovdqa xmm1, xmm0
vmovdqa xmmword [rsp], xmm0
vmovdqa xmmword [rsp + 0x50], xmm0
vmovdqa xmm10, xmm0
vmovdqa xmmword [rsp + 0xa0], xmm6
vmovdqa xmmword [rsp + 0x90], xmm4
vmovdqa xmm0, xmm4
vmovdqa xmmword [rsp + 0x70], xmm13
vmovdqa xmmword [rsp + 0x60], xmm5
vmovdqa xmmword [rsp + 0x10], xmm5
nop dword [rax + rax]