SymCryptParallelSha256AppendBlocks_ymm
NTSTATUS __stdcall SymCryptParallelSha256AppendBlocks_ymm(INT64 *a1, INT64 *a2, UINT64 a3, INT64 R9){
UINT64 v51;
__int64 v53;
__int64 v107;
int *v155;
__m256i v370;
_RBP = (unsigned __int64)&v370 & 0xFFFFFFFFFFFFFFE0ui64;
_RAX = *a1;
_XMM0 = 0i64;
_XMM1 = 0i64;
*(_OWORD *)(_RBP + 32) = 0i64;
__asm { vmovdqu ymm8, ymmword ptr [rax] }
_RAX = a1[1];
__asm
{
vmovups xmmword ptr [rbp+7C0h+var_7A0+10h], xmm0
vmovups xmmword ptr [rbp+7C0h+var_760], xmm0
vmovups xmmword ptr [rbp+7C0h+var_760+10h], xmm0
vmovdqu ymm0, ymmword ptr [rax]
}
_RAX = a1[2];
__asm
{
vpunpckldq ymm6, ymm8, ymm0
vpunpckhdq ymm9, ymm8, ymm0
vmovups xmmword ptr [rbp+7C0h+var_780], xmm1
vmovdqu ymm7, ymmword ptr [rax]
}
_RAX = a1[3];
__asm
{
vmovups xmmword ptr [rbp+7C0h+var_780+10h], xmm1
vmovups xmmword ptr [rbp+7C0h+var_7C0], xmm1
vmovdqu ymm3, ymmword ptr [rax]
}
_RAX = a1[4];
__asm
{
vpunpckldq ymm0, ymm7, ymm3
vpunpckhqdq ymm11, ymm6, ymm0
vpunpcklqdq ymm13, ymm6, ymm0
vmovdqu ymm5, ymmword ptr [rax]
}
_RAX = a1[5];
__asm
{
vmovups xmmword ptr [rbp+7C0h+var_7C0+10h], xmm1
vpunpckhdq ymm3, ymm7, ymm3
vmovups xmmword ptr [rbp+7C0h+var_740], xmm1
vmovdqu ymm2, ymmword ptr [rax]
}
_RAX = a1[6];
__asm
{
vpunpckldq ymm8, ymm5, ymm2
vpunpckhdq ymm10, ymm5, ymm2
vmovups xmmword ptr [rbp+7C0h+var_740+10h], xmm1
vmovdqu ymm4, ymmword ptr [rax]
}
_RAX = a1[7];
__asm
{
vpunpcklqdq ymm12, ymm9, ymm3
vpunpckhqdq ymm9, ymm9, ymm3
vmovdqu ymm1, ymmword ptr [rax]
vpunpckldq ymm2, ymm4, ymm1
vpunpckhdq ymm5, ymm4, ymm1
vpunpcklqdq ymm7, ymm8, ymm2
vpunpckhqdq ymm6, ymm8, ymm2
vperm2i128 ymm0, ymm13, ymm7, 20h ; ' '
vmovdqu ymmword ptr [r9+160h], ymm0
vpunpcklqdq ymm4, ymm10, ymm5
vperm2i128 ymm0, ymm12, ymm4, 20h ; ' '
vmovdqu ymmword ptr [r9+120h], ymm0
vperm2i128 ymm1, ymm11, ymm6, 20h ; ' '
vmovdqu ymmword ptr [r9+140h], ymm1
vperm2i128 ymm0, ymm13, ymm7, 31h ; '1'
vmovdqu ymmword ptr [r9+0E0h], ymm0
vperm2i128 ymm1, ymm11, ymm6, 31h ; '1'
vmovdqu ymmword ptr [r9+0C0h], ymm1
vpunpckhqdq ymm3, ymm10, ymm5
vperm2i128 ymm0, ymm12, ymm4, 31h ; '1'
vmovdqu ymmword ptr [r9+0A0h], ymm0
vperm2i128 ymm2, ymm9, ymm3, 20h ; ' '
vmovdqu ymmword ptr [r9+100h], ymm2
vperm2i128 ymm1, ymm9, ymm3, 31h ; '1'
vmovdqu ymmword ptr [r9+80h], ymm1
vmovdqu ymmword ptr [r9], ymm2
vmovdqu ymm0, ymmword ptr [r9+120h]
vmovdqu ymmword ptr [r9+20h], ymm0
vmovdqu ymm1, ymmword ptr [r9+140h]
vmovdqu ymmword ptr [r9+40h], ymm1
vmovdqu ymm0, ymmword ptr [r9+160h]
vmovdqu ymmword ptr [r9+60h], ymm0
vzeroupper
}
if( a3 < 0x40 )
{
__asm
{
vmovdqu ymm7, ymmword ptr [r9+0E0h]
vmovdqu ymm8, ymmword ptr [r9+0C0h]
vmovdqu ymm9, ymmword ptr [r9+0A0h]
vmovdqu ymm10, ymmword ptr [r9+80h]
}
}
else
{
_R11 = R9 + 224;
v51 = a3 >> 6;
do
{
_R8 = R9 + 448;
v53 = 2i64;
do
{
_RAX = *a2;
__asm
{
vmovdqu ymm1, cs:__ymm@0c0d0e0f08090a0b04050607000102030c0d0e0f08090a0b0405060700010203
vmovdqu ymm0, ymmword ptr [rax]
vpshufb ymm9, ymm0, ymm1
}
*a2 += 32i64;
_RAX = a2[1];
__asm
{
vmovdqu ymm0, ymmword ptr [rax]
vpshufb ymm7, ymm0, ymm1
}
a2[1] = _RAX + 32;
_RAX = a2[2];
__asm
{
vpunpckldq ymm4, ymm9, ymm7
vpunpckhdq ymm7, ymm9, ymm7
vmovdqu ymm0, ymmword ptr [rax]
vpshufb ymm6, ymm0, ymm1
}
a2[2] = _RAX + 32;
_RAX = a2[3];
__asm
{
vmovdqu ymm0, ymmword ptr [rax]
vpshufb ymm3, ymm0, ymm1
}
a2[3] = _RAX + 32;
_RAX = a2[4];
__asm
{
vmovdqu ymm0, ymmword ptr [rax]
vpshufb ymm8, ymm0, ymm1
}
a2[4] = _RAX + 32;
_RAX = a2[5];
__asm
{
vmovdqu ymm0, ymmword ptr [rax]
vpshufb ymm2, ymm0, ymm1
}
a2[5] = _RAX + 32;
_RAX = a2[6];
__asm
{
vpunpckhdq ymm9, ymm8, ymm2
vmovdqu ymm0, ymmword ptr [rax]
vpshufb ymm5, ymm0, ymm1
}
a2[6] = _RAX + 32;
_RAX = a2[7];
__asm
{
vmovdqu ymm0, ymmword ptr [rax]
vpshufb ymm1, ymm0, ymm1
vpunpckldq ymm0, ymm6, ymm3
vpunpckhqdq ymm10, ymm4, ymm0
vpunpcklqdq ymm11, ymm4, ymm0
vpunpckhdq ymm3, ymm6, ymm3
vpunpckldq ymm6, ymm8, ymm2
vpunpckldq ymm2, ymm5, ymm1
vpunpckhdq ymm1, ymm5, ymm1
vpunpcklqdq ymm8, ymm7, ymm3
vpunpcklqdq ymm5, ymm6, ymm2
vpunpckhqdq ymm4, ymm6, ymm2
vpunpckhqdq ymm2, ymm9, ymm1
vpunpckhqdq ymm7, ymm7, ymm3
vpunpcklqdq ymm3, ymm9, ymm1
}
a2[7] = _RAX + 32;
__asm
{
vperm2i128 ymm0, ymm11, ymm5, 20h ; ' '
vmovdqu ymmword ptr [r8-40h], ymm0
vperm2i128 ymm1, ymm10, ymm4, 20h ; ' '
vmovdqu ymmword ptr [r8-20h], ymm1
vperm2i128 ymm0, ymm8, ymm3, 20h ; ' '
vmovdqu ymmword ptr [r8], ymm0
}
_R8 += 256i64;
__asm
{
vperm2i128 ymm1, ymm7, ymm2, 20h ; ' '
vmovdqu ymmword ptr [r8-0E0h], ymm1
vperm2i128 ymm0, ymm11, ymm5, 31h ; '1'
vperm2i128 ymm1, ymm10, ymm4, 31h ; '1'
vmovdqu ymmword ptr [r8-0C0h], ymm0
vmovdqu ymmword ptr [r8-0A0h], ymm1
vperm2i128 ymm0, ymm8, ymm3, 31h ; '1'
vperm2i128 ymm1, ymm7, ymm2, 31h ; '1'
vmovdqu ymmword ptr [r8-80h], ymm0
vmovdqu ymmword ptr [r8-60h], ymm1
}
--v53;
}
while( v53 );
__asm
{
vmovdqu ymm8, ymmword ptr [r9+360h]
vmovdqu ymm9, ymmword ptr [r9+340h]
vmovdqu ymm10, ymmword ptr [r9+180h]
}
_RAX = R9 + 672;
v107 = (unsigned int)(unsigned __int8)v53 + 24;
do
{
__asm
{
vmovdqu ymm7, ymmword ptr [rax-100h]
vpsrld ymm5, ymm9, 0Ah
vpslld ymm0, ymm7, 19h
vpsrld ymm4, ymm7, 3
vpsrld ymm1, ymm7, 7
vpxor ymm1, ymm0, ymm1
vpsrld ymm0, ymm9, 11h
vpslld ymm2, ymm7, 0Eh
vpxor ymm2, ymm1, ymm2
vpslld ymm1, ymm9, 0Fh
vpxor ymm1, ymm0, ymm1
vpsrld ymm3, ymm7, 12h
vpxor ymm3, ymm2, ymm3
vpxor ymm6, ymm3, ymm4
vpsrld ymm4, ymm9, 13h
vpslld ymm2, ymm9, 0Dh
vpxor ymm2, ymm1, ymm2
vpxor ymm3, ymm2, ymm4
vpxor ymm0, ymm3, ymm5
vpaddd ymm1, ymm0, ymm10
vpaddd ymm2, ymm1, ymmword ptr [rax]
vmovdqu ymm10, ymmword ptr [rax-0E0h]
}
_RAX += 64i64;
__asm
{
vpaddd ymm9, ymm2, ymm6
vpslld ymm0, ymm10, 19h
vpsrld ymm4, ymm10, 3
vpsrld ymm5, ymm8, 0Ah
vpsrld ymm1, ymm10, 7
vpxor ymm1, ymm0, ymm1
vpsrld ymm0, ymm8, 11h
vpslld ymm2, ymm10, 0Eh
vpxor ymm2, ymm1, ymm2
vpslld ymm1, ymm8, 0Fh
vpxor ymm1, ymm0, ymm1
vpsrld ymm3, ymm10, 12h
vpxor ymm3, ymm2, ymm3
vpxor ymm6, ymm3, ymm4
vpslld ymm2, ymm8, 0Dh
vpxor ymm2, ymm1, ymm2
vpsrld ymm4, ymm8, 13h
vpxor ymm3, ymm2, ymm4
vpxor ymm0, ymm3, ymm5
vpaddd ymm1, ymm0, ymm7
vpaddd ymm2, ymm1, ymmword ptr [rax-20h]
vpaddd ymm8, ymm2, ymm6
vmovdqu ymmword ptr [rax+0C0h], ymm8
vmovdqu ymmword ptr [rax+0A0h], ymm9
}
--v107;
}
while( v107 );
__asm
{
vmovdqu ymm9, ymmword ptr [r11]
vmovdqu ymm12, ymmword ptr [r9+160h]
vmovdqu ymm13, ymmword ptr [r9+140h]
vmovdqu ymm14, ymmword ptr [r9+120h]
vmovdqu ymm15, ymmword ptr [r9+100h]
vmovdqu [rbp+7C0h+var_7C0], ymm9
}
v155 = (int *)&SymCryptSha256K + 2;
_R8 = R9 + 224;
do
{
_EAX = *(v155 - 2);
__asm
{
vmovdqu ymm8, ymmword ptr [r8-40h]
vmovdqu ymm10, ymmword ptr [r8-20h]
vpslld ymm4, ymm9, 7
vpsrld ymm5, ymm9, 19h
vmovd xmm7, eax
vpshufd xmm7, xmm7, 0
vinsertf128 ymm7, ymm7, xmm7, 1
vpxor ymm0, ymm10, ymm8
vpand ymm1, ymm0, ymm9
vpxor ymm6, ymm1, ymm8
vpslld ymm0, ymm9, 1Ah
vpsrld ymm1, ymm9, 6
vpxor ymm1, ymm0, ymm1
vpslld ymm2, ymm9, 15h
vpxor ymm2, ymm1, ymm2
vpsrld ymm3, ymm9, 0Bh
vpxor ymm3, ymm2, ymm3
vpxor ymm0, ymm3, ymm4
vpxor ymm1, ymm0, ymm5
vpaddd ymm2, ymm1, ymmword ptr [r8+0A0h]
vpaddd ymm3, ymm2, ymmword ptr [r8-60h]
vpaddd ymm0, ymm3, ymm6
vpaddd ymm7, ymm0, ymm7
vpaddd ymm11, ymm7, ymm15
vpor ymm0, ymm13, ymm12
vpand ymm1, ymm0, ymm14
vpand ymm2, ymm13, ymm12
vpor ymm6, ymm1, ymm2
vpslld ymm0, ymm12, 1Eh
vpslld ymm4, ymm12, 0Ah
vpsrld ymm5, ymm12, 16h
vpsrld ymm1, ymm12, 2
vpxor ymm1, ymm0, ymm1
vpslld ymm2, ymm12, 13h
vpxor ymm2, ymm1, ymm2
vpsrld ymm3, ymm12, 0Dh
vpxor ymm3, ymm2, ymm3
vpxor ymm0, ymm3, ymm4
vpxor ymm1, ymm0, ymm5
vpaddd ymm2, ymm1, ymm7
vpaddd ymm15, ymm2, ymm6
vpxor ymm0, ymm9, ymm10
vpand ymm1, ymm0, ymm11
vpxor ymm6, ymm1, ymm10
vpslld ymm0, ymm11, 1Ah
vpslld ymm4, ymm11, 7
vpsrld ymm5, ymm11, 19h
vpsrld ymm1, ymm11, 6
vpxor ymm1, ymm0, ymm1
vpslld ymm2, ymm11, 15h
vpxor ymm2, ymm1, ymm2
vpsrld ymm3, ymm11, 0Bh
vpxor ymm3, ymm2, ymm3
vpxor ymm0, ymm3, ymm4
vpxor ymm1, ymm0, ymm5
vpaddd ymm2, ymm1, ymmword ptr [r8+0C0h]
vpaddd ymm3, ymm2, ymm8
vpaddd ymm0, ymm3, ymm6
vpand ymm2, ymm15, ymm12
vmovdqu ymmword ptr [r8+20h], ymm11
}
_EAX = *(v155 - 1);
__asm
{
vmovd xmm7, eax
vpshufd xmm7, xmm7, 0
vinsertf128 ymm7, ymm7, xmm7, 1
vpaddd ymm7, ymm0, ymm7
vpor ymm0, ymm15, ymm12
vpand ymm1, ymm0, ymm13
vpor ymm6, ymm1, ymm2
vpslld ymm0, ymm15, 1Eh
vpsrld ymm1, ymm15, 2
vpxor ymm1, ymm0, ymm1
vpslld ymm2, ymm15, 13h
vpxor ymm2, ymm1, ymm2
vpsrld ymm3, ymm15, 0Dh
vpxor ymm3, ymm2, ymm3
vpaddd ymm9, ymm7, ymm14
vpslld ymm4, ymm15, 0Ah
vpxor ymm0, ymm3, ymm4
vmovdqu ymmword ptr [r8+40h], ymm9
vpsrld ymm5, ymm15, 16h
}
_EAX = *v155;
_R8 += 128i64;
__asm
{
vpxor ymm1, ymm0, ymm5
vpxor ymm0, ymm11, [rbp+7C0h+var_7C0]
vpaddd ymm2, ymm1, ymm7
vpaddd ymm14, ymm2, ymm6
vpand ymm1, ymm0, ymm9
vpxor ymm6, ymm1, [rbp+7C0h+var_7C0]
vpslld ymm0, ymm9, 1Ah
vpslld ymm4, ymm9, 7
vpsrld ymm5, ymm9, 19h
vmovd xmm7, eax
vpshufd xmm7, xmm7, 0
vinsertf128 ymm7, ymm7, xmm7, 1
vpsrld ymm1, ymm9, 6
vpxor ymm1, ymm0, ymm1
vpslld ymm2, ymm9, 15h
vpxor ymm2, ymm1, ymm2
vpsrld ymm3, ymm9, 0Bh
vpxor ymm3, ymm2, ymm3
vpxor ymm0, ymm3, ymm4
vpxor ymm1, ymm0, ymm5
vpaddd ymm2, ymm1, ymmword ptr [r8+60h]
vpaddd ymm3, ymm2, ymm10
vpaddd ymm0, ymm3, ymm6
vpaddd ymm7, ymm0, ymm7
vpaddd ymm8, ymm7, ymm13
vpor ymm0, ymm15, ymm14
vpand ymm1, ymm0, ymm12
vpand ymm2, ymm15, ymm14
vpor ymm6, ymm1, ymm2
vpslld ymm0, ymm14, 1Eh
vpslld ymm4, ymm14, 0Ah
vpsrld ymm5, ymm14, 16h
vmovdqu ymmword ptr [r8-20h], ymm8
}
_EAX = v155[1];
__asm
{
vpsrld ymm1, ymm14, 2
vpxor ymm1, ymm0, ymm1
vpslld ymm2, ymm14, 13h
vpxor ymm2, ymm1, ymm2
vpsrld ymm3, ymm14, 0Dh
vpxor ymm3, ymm2, ymm3
vpxor ymm0, ymm3, ymm4
vpxor ymm1, ymm0, ymm5
vpaddd ymm2, ymm1, ymm7
vpaddd ymm13, ymm2, ymm6
vpxor ymm0, ymm9, ymm11
vpand ymm1, ymm0, ymm8
vpxor ymm6, ymm1, ymm11
vpslld ymm0, ymm8, 1Ah
vpslld ymm4, ymm8, 7
vpsrld ymm5, ymm8, 19h
vmovd xmm7, eax
vpshufd xmm7, xmm7, 0
vpsrld ymm1, ymm8, 6
vpxor ymm1, ymm0, ymm1
vpslld ymm2, ymm8, 15h
vpxor ymm2, ymm1, ymm2
vpsrld ymm3, ymm8, 0Bh
vpxor ymm3, ymm2, ymm3
vpxor ymm0, ymm3, ymm4
vpxor ymm1, ymm0, ymm5
vpaddd ymm2, ymm1, ymmword ptr [r8+80h]
vpaddd ymm3, ymm2, [rbp+7C0h+var_7C0]
vpaddd ymm0, ymm3, ymm6
vpand ymm2, ymm14, ymm13
vinsertf128 ymm7, ymm7, xmm7, 1
vpaddd ymm7, ymm0, ymm7
vpor ymm0, ymm14, ymm13
vpand ymm1, ymm0, ymm15
vpor ymm6, ymm1, ymm2
vpaddd ymm9, ymm7, ymm12
vpsrld ymm1, ymm13, 2
vpslld ymm0, ymm13, 1Eh
vpxor ymm1, ymm0, ymm1
vmovdqu [rbp+7C0h+var_7C0], ymm9
vmovdqu ymmword ptr [r8], ymm9
vpsrld ymm5, ymm13, 16h
vpslld ymm4, ymm13, 0Ah
vpsrld ymm3, ymm13, 0Dh
vpslld ymm2, ymm13, 13h
vpxor ymm2, ymm1, ymm2
vpxor ymm3, ymm2, ymm3
vpxor ymm0, ymm3, ymm4
vpxor ymm1, ymm0, ymm5
}
v155 += 4;
__asm
{
vpaddd ymm2, ymm1, ymm7
vpaddd ymm12, ymm2, ymm6
}
}
while( (__int64)v155 < (__int64)&_xmm + 8 );
__asm
{
vpaddd ymm1, ymm12, ymmword ptr [r9+60h]
vmovdqu ymmword ptr [r9+160h], ymm1
vpaddd ymm0, ymm13, ymmword ptr [r9+40h]
vmovdqu ymmword ptr [r9+60h], ymm1
vmovdqu ymmword ptr [r9+140h], ymm0
vpaddd ymm1, ymm14, ymmword ptr [r9+20h]
vmovdqu ymmword ptr [r9+40h], ymm0
vmovdqu ymmword ptr [r9+120h], ymm1
vpaddd ymm0, ymm15, ymmword ptr [r9]
vmovdqu ymmword ptr [r9+20h], ymm1
vmovdqu ymmword ptr [r9+100h], ymm0
vmovdqu ymmword ptr [r9], ymm0
vmovdqu ymm0, ymmword ptr [r9+8E0h]
vpaddd ymm0, ymm0, ymmword ptr [r9+0E0h]
vmovdqu [rbp+7C0h+var_740], ymm0
vmovdqu ymmword ptr [r9+0E0h], ymm0
vmovdqu ymm0, ymmword ptr [r9+0C0h]
vpaddd ymm0, ymm0, ymmword ptr [r9+8C0h]
vmovdqu [rbp+7C0h+var_760], ymm0
vmovdqu ymmword ptr [r9+0C0h], ymm0
vmovdqu ymm0, ymmword ptr [r9+8A0h]
vpaddd ymm0, ymm0, ymmword ptr [r9+0A0h]
vmovdqu [rbp+7C0h+var_780], ymm0
vmovdqu ymmword ptr [r9+0A0h], ymm0
vmovdqu ymm0, ymmword ptr [r9+80h]
vpaddd ymm0, ymm0, ymmword ptr [r9+880h]
vmovdqu [rbp+7C0h+var_7A0], ymm0
vmovdqu ymmword ptr [r9+80h], ymm0
}
--v51;
__asm { vzeroupper }
}
while( v51 );
__asm
{
vmovdqu ymm7, [rbp+7C0h+var_740]
vmovdqu ymm8, [rbp+7C0h+var_760]
vmovdqu ymm9, [rbp+7C0h+var_780]
vmovdqu ymm10, [rbp+7C0h+var_7A0]
}
}
__asm
{
vmovdqu ymm1, ymmword ptr [r9+160h]
vmovdqu ymm0, ymmword ptr [r9+140h]
}
_RAX = *a1;
__asm
{
vpunpckldq ymm5, ymm1, ymm0
vpunpckhdq ymm6, ymm1, ymm0
vmovdqu ymm1, ymmword ptr [r9+120h]
vmovdqu ymm0, ymmword ptr [r9+100h]
vpunpckldq ymm2, ymm1, ymm0
vpunpckhdq ymm3, ymm1, ymm0
vpunpckldq ymm4, ymm7, ymm8
vpunpckhdq ymm1, ymm9, ymm10
vpunpckldq ymm0, ymm9, ymm10
vpunpcklqdq ymm10, ymm5, ymm2
vpunpckhqdq ymm11, ymm5, ymm2
vpunpcklqdq ymm2, ymm4, ymm0
vpunpckhqdq ymm0, ymm4, ymm0
vpunpcklqdq ymm12, ymm6, ymm3
vpunpckhqdq ymm13, ymm6, ymm3
vpunpckhdq ymm7, ymm7, ymm8
vpunpcklqdq ymm6, ymm7, ymm1
vpunpckhqdq ymm7, ymm7, ymm1
vperm2i128 ymm9, ymm10, ymm2, 20h ; ' '
vmovdqu ymmword ptr [rax], ymm9
}
_RAX = a1[1];
__asm
{
vperm2i128 ymm8, ymm11, ymm0, 20h ; ' '
vperm2i128 ymm3, ymm10, ymm2, 31h ; '1'
vperm2i128 ymm2, ymm11, ymm0, 31h ; '1'
vmovdqu ymmword ptr [rax], ymm8
}
_RAX = a1[2];
__asm
{
vperm2i128 ymm5, ymm12, ymm6, 20h ; ' '
vperm2i128 ymm4, ymm13, ymm7, 20h ; ' '
vperm2i128 ymm1, ymm12, ymm6, 31h ; '1'
vmovdqu ymmword ptr [rax], ymm5
}
_RAX = a1[3];
__asm
{
vperm2i128 ymm0, ymm13, ymm7, 31h ; '1'
vmovdqu ymmword ptr [rax], ymm4
}
_RAX = a1[4];
__asm { vmovdqu ymmword ptr [rax], ymm3 }
_RAX = a1[5];
__asm { vmovdqu ymmword ptr [rax], ymm2 }
_RAX = a1[6];
__asm { vmovdqu ymmword ptr [rax], ymm1 }
_RAX = a1[7];
__asm
{
vmovdqu ymmword ptr [rax], ymm0
vzeroupper
}
return _RAX;
}Referenced by:
SymCryptParallelSha256Append