Function at 0x4c5ae0
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 [0x0083c130]
test rax, rax
je 0x4c630a
test ax, ax
js 0x4c6324
mov rax, qword [0x0083c130]
test rax, rax
je 0x4c638a
test eax, 0x4000
jne 0x4c63a6
mov rax, qword [0x0083c130]
test rax, rax
je 0x4c640c
test eax, 0x400
jne 0x4c6428
mov rax, qword [0x0083c130]
test rax, rax
je 0x4c648e
test eax, 0x200
jne 0x4c64aa
movdqa xmm11, xmmword [rcx]
movdqa xmm2, xmmword [rcx + 0x10]
movdqa xmm8, xmmword [rcx + 0x20]
mov rax, qword [rcx + 0x20]
lea r8, [rax + 1]
movd xmm12, r8d
shr r8, 0x20
pshufd xmm0, xmm8, 0xf8
pslldq xmm0, 4
movdqa xmmword [rsp + 0x50], xmm0
movd xmm0, r8d
pslldq xmm0, 8
shufps xmm0, xmm8, 0xe8
por xmm12, xmm0
lea r8, [rax + 2]
movd xmm7, r8d
shr r8, 0x20
movd xmm0, r8d
pslldq xmm0, 8
shufps xmm0, xmm8, 0xe8
por xmm7, xmm0
lea r8, [rax + 3]
movd xmm5, r8d
shr r8, 0x20
movd xmm0, r8d
pslldq xmm0, 8
shufps xmm0, xmm8, 0xe8
por xmm5, xmm0
movdqa xmm10, xmmword [0x0071f6c0]
mov r8d, 6
movdqa xmm9, xmm10
movdqa xmmword [rsp + 0x40], xmm10
movdqa xmmword [rsp + 0x30], xmm10
movdqa xmm1, xmm11
movdqa xmm15, xmm11
movdqa xmm13, xmm11
movdqa xmmword [rsp + 0xa0], xmm11
movdqa xmm6, xmm2
movdqa xmm0, xmm2
movdqa xmm14, xmm2
movdqa xmmword [rsp + 0xb0], xmm2
movdqa xmmword [rsp + 0x20], xmm2
movaps xmmword [rsp + 0x90], xmm8
movdqa xmmword [rsp + 0x80], xmm12
movdqa xmmword [rsp + 0x70], xmm7
movdqa xmmword [rsp + 0x60], xmm5
nop word [rax + rax]
paddd xmm10, xmm1
paddd xmm9, xmm15
movdqa xmm3, xmmword [rsp + 0x40]
paddd xmm3, xmm13
movdqa xmmword [rsp + 0x40], xmm3
movdqa xmm2, xmmword [rsp + 0x30]
paddd xmm2, xmm11
movdqa xmmword [rsp + 0x30], xmm2
pxor xmm8, xmm10
pxor xmm12, xmm9
pxor xmm7, xmm3
pxor xmm5, xmm2
pshuflw xmm2, xmm8, 0xb1
pshufhw xmm2, xmm2, 0xb1
pshuflw xmm3, xmm12, 0xb1
pshufhw xmm4, xmm3, 0xb1
pshuflw xmm3, xmm7, 0xb1
pshufhw xmm3, xmm3, 0xb1
pshuflw xmm5, xmm5, 0xb1
pshufhw xmm5, xmm5, 0xb1
paddd xmm6, xmm2
paddd xmm0, xmm4
paddd xmm14, xmm3
movdqa xmm7, xmmword [rsp + 0x20]
paddd xmm7, xmm5
movdqa xmm8, xmm7
movdqa xmmword [rsp + 0x20], xmm7
pxor xmm1, xmm6
movdqa xmm7, xmm1
psrld xmm7, 0x14
pslld xmm1, 0xc
por xmm1, xmm7
pxor xmm15, xmm0
movdqa xmm7, xmm15
psrld xmm7, 0x14
pslld xmm15, 0xc
por xmm15, xmm7
pxor xmm13, xmm14
movdqa xmm7, xmm13
psrld xmm7, 0x14
pslld xmm13, 0xc
por xmm13, xmm7
pxor xmm11, xmm8
movdqa xmm7, xmm11
psrld xmm7, 0x14
pslld xmm11, 0xc
por xmm11, xmm7
paddd xmm10, xmm1
paddd xmm9, xmm15
movdqa xmm8, xmm9
movdqa xmm9, xmmword [rsp + 0x40]
paddd xmm9, xmm13
movdqa xmmword [rsp + 0x40], xmm9
movdqa xmm12, xmmword [rsp + 0x30]
paddd xmm12, xmm11
movdqa xmmword [rsp + 0x30], xmm12
pxor xmm2, xmm10
movdqa xmm7, xmm2
psrld xmm7, 0x18
pslld xmm2, 8
por xmm2, xmm7
pxor xmm4, xmm8
movdqa xmm7, xmm4
psrld xmm7, 0x18
pslld xmm4, 8
por xmm4, xmm7
pxor xmm3, xmm9
movdqa xmm9, xmm8
movdqa xmm7, xmm3
psrld xmm7, 0x18
pslld xmm3, 8
por xmm3, xmm7
pxor xmm5, xmm12
movdqa xmm7, xmm5
psrld xmm7, 0x18
pslld xmm5, 8
por xmm5, xmm7
paddd xmm6, xmm2
paddd xmm0, xmm4
paddd xmm14, xmm3
movdqa xmm7, xmmword [rsp + 0x20]
paddd xmm7, xmm5
pxor xmm1, xmm6
pxor xmm15, xmm0
pxor xmm13, xmm14
pxor xmm11, xmm7
movdqa xmm8, xmm7
movdqa xmm7, xmm1
psrld xmm7, 0x19
pslld xmm1, 7
por xmm1, xmm7
movdqa xmm7, xmm15
psrld xmm7, 0x19
pslld xmm15, 7
por xmm15, xmm7
movdqa xmm7, xmm13
psrld xmm7, 0x19
pslld xmm13, 7
por xmm13, xmm7
movdqa xmm7, xmm11
psrld xmm7, 0x19
pslld xmm11, 7
por xmm11, xmm7
pshufd xmm1, xmm1, 0x39
pshufd xmm15, xmm15, 0x39
pshufd xmm13, xmm13, 0x39
pshufd xmm11, xmm11, 0x39
pshufd xmm6, xmm6, 0x4e
movdqa xmmword [rsp + 0xc0], xmm6
pshufd xmm0, xmm0, 0x4e
movdqa xmmword [rsp + 0x20], xmm0
pshufd xmm14, xmm14, 0x4e
pshufd xmm12, xmm8, 0x4e
pshufd xmm2, xmm2, 0x93
pshufd xmm4, xmm4, 0x93
pshufd xmm3, xmm3, 0x93
pshufd xmm7, xmm5, 0x93
paddd xmm10, xmm1
paddd xmm9, xmm15
movdqa xmm0, xmmword [rsp + 0x40]
paddd xmm0, xmm13
movdqa xmmword [rsp + 0x40], xmm0
movdqa xmm6, xmmword [rsp + 0x30]
paddd xmm6, xmm11
pshuflw xmm5, xmm10, 0xb1
pshufhw xmm8, xmm5, 0xb1
pshuflw xmm2, xmm2, 0xb1
pshufhw xmm5, xmm2, 0xb1
pxor xmm5, xmm8
pshuflw xmm2, xmm9, 0xb1
pshufhw xmm8, xmm2, 0xb1
pshuflw xmm2, xmm4, 0xb1
pshufhw xmm2, xmm2, 0xb1
pxor xmm2, xmm8
pshuflw xmm4, xmm0, 0xb1
pshufhw xmm8, xmm4, 0xb1
pshuflw xmm3, xmm3, 0xb1
pshufhw xmm4, xmm3, 0xb1
pxor xmm4, xmm8
movdqa xmm0, xmm6
pshuflw xmm3, xmm6, 0xb1
pshufhw xmm8, xmm3, 0xb1
pshuflw xmm3, xmm7, 0xb1
pshufhw xmm3, xmm3, 0xb1
pxor xmm3, xmm8
movdqa xmm6, xmmword [rsp + 0xc0]
paddd xmm6, xmm5
movdqa xmm7, xmmword [rsp + 0x20]
paddd xmm7, xmm2
movdqa xmmword [rsp + 0x20], xmm7
paddd xmm14, xmm4
paddd xmm12, xmm3
pxor xmm1, xmm6
pxor xmm15, xmm7
pxor xmm13, xmm14
pxor xmm11, xmm12
movdqa xmm7, xmm1
psrld xmm7, 0x14
pslld xmm1, 0xc
por xmm1, xmm7
movdqa xmm7, xmm15
psrld xmm7, 0x14
pslld xmm15, 0xc
por xmm15, xmm7
movdqa xmm7, xmm13
psrld xmm7, 0x14
pslld xmm13, 0xc
por xmm13, xmm7
movdqa xmm7, xmm11
psrld xmm7, 0x14
pslld xmm11, 0xc
por xmm11, xmm7
paddd xmm10, xmm1
paddd xmm9, xmm15
movdqa xmm8, xmmword [rsp + 0x40]
paddd xmm8, xmm13
paddd xmm0, xmm11
pxor xmm5, xmm10
movdqa xmm7, xmm5
psrld xmm7, 0x18
pslld xmm5, 8
por xmm5, xmm7
pxor xmm2, xmm9
movdqa xmm7, xmm2
psrld xmm7, 0x18
pslld xmm2, 8
por xmm2, xmm7
movdqa xmm7, xmm8
movdqa xmmword [rsp + 0x40], xmm8
pxor xmm4, xmm8
movdqa xmm7, xmm4
psrld xmm7, 0x18
pslld xmm4, 8
por xmm4, xmm7
movdqa xmm7, xmm0
movdqa xmmword [rsp + 0x30], xmm0
pxor xmm3, xmm0
movdqa xmm7, xmm3
psrld xmm7, 0x18
pslld xmm3, 8
por xmm3, xmm7
paddd xmm6, xmm5
movdqa xmm0, xmmword [rsp + 0x20]
paddd xmm0, xmm2
paddd xmm14, xmm4
paddd xmm12, xmm3
pxor xmm1, xmm6
pxor xmm15, xmm0
pxor xmm13, xmm14
pxor xmm11, xmm12
movdqa xmm7, xmm1
psrld xmm7, 0x19
pslld xmm1, 7
por xmm1, xmm7
movdqa xmm7, xmm15
psrld xmm7, 0x19
pslld xmm15, 7
por xmm15, xmm7
movdqa xmm7, xmm13
psrld xmm7, 0x19
pslld xmm13, 7
por xmm13, xmm7
movdqa xmm7, xmm11
psrld xmm7, 0x19
pslld xmm11, 7
por xmm11, xmm7
pshufd xmm1, xmm1, 0x93
pshufd xmm15, xmm15, 0x93
pshufd xmm13, xmm13, 0x93
pshufd xmm11, xmm11, 0x93
pshufd xmm6, xmm6, 0x4e
pshufd xmm0, xmm0, 0x4e
pshufd xmm14, xmm14, 0x4e
pshufd xmm7, xmm12, 0x4e
movdqa xmmword [rsp + 0x20], xmm7
pshufd xmm8, xmm5, 0x39
pshufd xmm12, xmm2, 0x39
pshufd xmm7, xmm4, 0x39
pshufd xmm5, xmm3, 0x39
dec r8d
jne 0x4c5cb0
movdqa xmm2, xmmword [0x0071f6c0]
movdqa xmm3, xmmword [rsp + 0x30]
paddd xmm3, xmm2
movdqa xmmword [rsp + 0x30], xmm3
movdqa xmm4, xmmword [rsp + 0x40]
paddd xmm4, xmm2
paddd xmm9, xmm2
paddd xmm10, xmm2
add rax, 4
mov r8, rax
shr r8, 0x20
movd xmm2, r8d
por xmm2, xmmword [rsp + 0x50]
movdqa xmm3, xmm2
pslldq xmm3, 8
shufps xmm3, xmm2, 0xe8
movd xmm2, eax
por xmm2, xmm3
movdqa xmmword [rcx + 0x20], xmm2
movdqu xmmword [rdx], xmm10
movdqa xmm2, xmmword [rsp + 0xa0]
paddd xmm1, xmm2
movdqu xmmword [rdx + 0x10], xmm1
movdqa xmm1, xmmword [rsp + 0xb0]
paddd xmm6, xmm1
movdqu xmmword [rdx + 0x20], xmm6
paddd xmm8, xmmword [rsp + 0x90]
movdqu xmmword [rdx + 0x30], xmm8
movdqu xmmword [rdx + 0x40], xmm9
paddd xmm15, xmm2
movdqu xmmword [rdx + 0x50], xmm15
paddd xmm0, xmm1
movdqu xmmword [rdx + 0x60], xmm0
paddd xmm12, xmmword [rsp + 0x80]
movdqu xmmword [rdx + 0x70], xmm12
movdqu xmmword [rdx + 0x80], xmm4
paddd xmm13, xmm2
movdqu xmmword [rdx + 0x90], xmm13
paddd xmm14, xmm1
movdqu xmmword [rdx + 0xa0], xmm14
paddd xmm7, xmmword [rsp + 0x70]
movdqu xmmword [rdx + 0xb0], xmm7
movaps xmm0, xmmword [rsp + 0x30]
movups xmmword [rdx + 0xc0], xmm0
paddd xmm11, xmm2
movdqu xmmword [rdx + 0xd0], xmm11
movdqa xmm0, xmmword [rsp + 0x20]
paddd xmm0, xmm1
movdqu xmmword [rdx + 0xe0], xmm0
paddd xmm5, xmmword [rsp + 0x60]
movdqu xmmword [rdx + 0xf0], xmm5
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
ret
mov rsi, rdx
mov rdi, rcx
call sym.std_detect::detect::cache::detect_and_initialize::hfe122b35fe975782
mov rcx, rdi
mov rdx, rsi
test ax, ax
jns 0x4c5b5a
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 sym.rand_chacha::guts::refill_wide::impl_avx2::h789c9a93211d13c6
mov rsi, rdx
mov rdi, rcx
call sym.std_detect::detect::cache::detect_and_initialize::hfe122b35fe975782
mov rcx, rdi
mov rdx, rsi
test eax, 0x4000
je 0x4c5b75
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 sym.rand_chacha::guts::refill_wide::impl_avx::h9b089430f0b7a6b6
mov rsi, rdx
mov rdi, rcx
call sym.std_detect::detect::cache::detect_and_initialize::hfe122b35fe975782
mov rcx, rdi
mov rdx, rsi
test eax, 0x400
je 0x4c5b90
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 sym.rand_chacha::guts::refill_wide::impl_sse41::h0a8f98e5c6c3a628
mov rsi, rdx
mov rdi, rcx
call sym.std_detect::detect::cache::detect_and_initialize::hfe122b35fe975782
mov rcx, rdi
mov rdx, rsi
test eax, 0x200
je 0x4c5bab
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 sym.rand_chacha::guts::refill_wide::impl_ssse3::h931010f45d648bb4