SymCryptParallelHashProcess_serial
VOID __stdcall SymCryptParallelHashProcess_serial(
INT64 *a1,
INT64 a2,
UINT64 a3,
INT64 a4,
UINT64 a5,
INT64 pbData,
UINT64 a7){
__int64 v7;
INT64 v10;
UINT64 v12;
UINT64 v13;
unsigned __int64 v14;
unsigned __int64 v15;
_QWORD *v16;
UINT64 v17;
v7 = *((unsigned int *)a1 + 2);
v10 = *a1;
v12 = 56 * a3;
if( a7 < 56 * a3 + v7 )
SymCryptFatal(0x70733273u);
v13 = 0i64;
v14 = v12 + (unsigned int)v7;
if( v14 <= 0x40 )
{
if( (v14 & 1) != 0 )
*(_BYTE *)(--v14 + pbData) = 0;
if( (v14 & 2) != 0 )
{
v14 -= 2i64;
*(_WORD *)(v14 + pbData) = 0;
}
if( (v14 & 4) != 0 )
{
v14 -= 4i64;
*(_DWORD *)(v14 + pbData) = 0;
}
if( (v14 & 8) != 0 )
{
v14 -= 8i64;
*(_QWORD *)(v14 + pbData) = 0i64;
}
if( (v14 & 0x10) != 0 )
{
v14 -= 16i64;
*(_QWORD *)(v14 + pbData) = 0i64;
*(_QWORD *)(v14 + pbData + 8) = 0i64;
}
v15 = v14;
if( (v14 & 0x20) != 0 )
{
v14 -= 32i64;
*(_QWORD *)(v14 + pbData) = 0i64;
*(_QWORD *)(v14 + pbData + 8) = 0i64;
*(_QWORD *)(v15 + pbData - 16) = 0i64;
*(_QWORD *)(pbData + v15 - 8) = 0i64;
}
if( (v14 & 0x40) != 0 )
{
*(_QWORD *)(v14 + pbData - 64) = 0i64;
*(_QWORD *)(v14 + pbData - 56) = 0i64;
*(_QWORD *)(v14 + pbData - 48) = 0i64;
*(_QWORD *)(v14 + pbData - 40) = 0i64;
*(_QWORD *)(v14 + pbData - 32) = 0i64;
*(_QWORD *)(v14 + pbData - 24) = 0i64;
*(_QWORD *)(v14 + pbData - 16) = 0i64;
*(_QWORD *)(v14 + pbData - 8) = 0i64;
}
}
else
{
SymCryptWipe((VOID *)pbData, v12 + v7);
}
if( a5 )
{
v16 = (_QWORD *)(a4 + 24);
do
{
v17 = *(v16 - 3);
if( v17 >= a3 )
SymCryptFatal(0x70733269u);
if( *((_DWORD *)v16 - 4) == 1 )
{
(*(void(__fastcall **)(UINT64, _QWORD, _QWORD))(v10 + 8))(
a2 + v17 * *(unsigned int *)(v10 + 32),
*(v16 - 1),
*v16);
}
else
{
if( *((_DWORD *)v16 - 4) != 2 )
SymCryptFatal(0x7073326Fu);
if( *v16 != *(_DWORD *)(v10 + 36) )
SymCryptFatal(0x70733272u);
(*(void(__fastcall **)(UINT64, _QWORD))(v10 + 16))(a2 + v17 * *(unsigned int *)(v10 + 32), *(v16 - 1));
}
v16 += 5;
++v13;
}
while( v13 < a5 );
}
}Referenced by:
SymCryptParallelSha256Process