SymCryptParallelSha256Append
VOID __stdcall SymCryptParallelSha256Append(
PSYMCRYPT_PARALLEL_HASH_SCRATCH_STATE *pWork,
_SIZE_T nPar,
_SIZE_T nBytes,
PBYTE pbSimdScratch,
_SIZE_T cbSimdScratch){
unsigned __int64 v5;
UINT64 v6;
unsigned int v9;
unsigned __int64 i;
_QWORD *v11;
__int64 v12;
__int64 v13;
__int64 v14[8];
INT64 v15[8];
v5 = *(_QWORD *)&nPar;
v6 = *(_QWORD *)&nBytes;
memset(v15, 0i64, sizeof(v15));
memset(v14, 0i64, sizeof(v14));
v9 = (v5 + 3) & 0xFFFFFFFC;
if( v5 >= 2 )
{
for( i = 0i64; i < v5; ++i )
{
v11 = *(_QWORD **)&pWork[2 * i];
v15[i] = *v11 + 96i64;
v12 = v11[4];
v14[i] = v12;
v11[4] = v6 + v12;
v13 = *(_QWORD *)&pWork[2 * i];
*(_QWORD *)(v13 + 40) -= v6;
}
while( i < v9 )
{
v15[i] = v15[0];
v14[i++] = v14[0];
}
if( v9 == 8 )
SymCryptParallelSha256AppendBlocks_ymm(v15, v14, v6, (INT64)pbSimdScratch);
else
SymCryptParallelSha256AppendBlocks_xmm((__m128i **)v15, (INT64)v14, v6, (__m128i *)pbSimdScratch);
}
else
{
SymCryptParallelSha256AppendBytes_serial(pWork, v5, v6);
}
}Referenced by:
No references.