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.