SymCryptParallelSha256Append

__m128i *__fastcall SymCryptParallelSha256Append(INT64 a1, UINT64 a2, UINT64 a3, __m128i *a4){
  unsigned int v8; 
  UINT64 v10; 
  _QWORD *v11; 
  __int64 v12; 
  __int64 v13; 
  __int64 v14[8]; 
  INT64 result[8]; 
  memset((INT64)result, 0i64);
  memset((INT64)v14, 0i64);
  v8 = (a2 + 3) & 0xFFFFFFFC;
  if( a2 < 2 )
    return(__m128i *)SymCryptParallelSha256AppendBytes_serial(a1, a2, a3);
  v10 = 0i64;
  do
  {
    v11 = *(_QWORD **)(a1 + 8 * v10);
    result[v10] = *v11 + 96i64;
    v12 = v11[4];
    v14[v10] = v12;
    v11[4] = a3 + v12;
    v13 = *(_QWORD *)(a1 + 8 * v10++);
    *(_QWORD *)(v13 + 40) -= a3;
  }
  while( v10 < a2 );
  while( v10 < v8 )
  {
    result[v10] = result[0];
    v14[v10++] = v14[0];
  }
  if( v8 == 8 )
    return(__m128i *)SymCryptParallelSha256AppendBlocks_ymm(result, v14, a3, (INT64)a4);
  else
    return SymCryptParallelSha256AppendBlocks_xmm((__m128i **)result, (INT64)v14, a3, a4);
}

Referenced by:

No references.