SymCryptSha256Append

VOID __stdcall SymCryptSha256Append(PSYMCRYPT_SHA256_STATE pState, PCBYTE pbData, _SIZE_T cbData, UINT64 a4){
  unsigned __int64 v4; 
  const __m128i *v5; 
  __int64 v6; 
  __m128i *v7; 
  unsigned __int64 v8; 
  unsigned __int64 v9; 
  unsigned __int64 v10; 

  v10 = 0i64;
  v4 = *(_QWORD *)&cbData;
  *(_QWORD *)(*(_QWORD *)&pState + 16i64) += *(_QWORD *)&cbData;
  v5 = (const __m128i *)pbData;
  v6 = (unsigned int)**(_DWORD **)&pState;
  v7 = *(__m128i **)&pState;
  if( (_DWORD)v6 )
  {
    v8 = (unsigned int)(64 - v6);
    if( *(_QWORD *)&cbData >= v8 )
    {
      memmove((VOID *)(v6 + *(_QWORD *)&pState + 32i64), pbData, v8);
      v5 = (const __m128i *)((char *)v5 + v8);
      v4 -= v8;
      SymCryptSha256AppendBlocks(v7 + 6, v7 + 2, 0x40ui64, &v10);
      LODWORD(v6) = 0;
    }
  }
  if( v4 >= 0x40 )
  {
    SymCryptSha256AppendBlocks(v7 + 6, v5, v4, &v10);
    v9 = v4;
    v4 = v10;
    v5 = (const __m128i *)((char *)v5 + v9 - v10);
  }
  if( v4 )
  {
    memmove(&v7[2].m128i_i8[(unsigned int)v6], v5, v4);
    LODWORD(v6) = v4 + v6;
  }
  v7->m128i_i32[0] = v6;
}

Referenced by:

SymCryptSha256