SymCryptSha256Result

VOID __stdcall SymCryptSha256Result(PSYMCRYPT_SHA256_STATE pState, PBYTE pbResult){
  __int64 v2; 
  __int64 v3; 
  unsigned int v5; 
  __int64 *v6; 
  __int64 v7; 
  __int64 v8; 
  unsigned __int64 v9; 

  v9 = 0i64;
  v2 = *(_QWORD *)&pState;
  v3 = (unsigned int)**(_DWORD **)&pState;
  *(_BYTE *)(v3 + v2 + 32) = 0x80;
  v5 = v3 + 1;
  if( v5 > 0x38 )
  {
    SymCryptWipe((VOID *)(v5 + v2 + 32), 64 - v5);
    SymCryptSha256AppendBlocks((__m128i *)(v2 + 96), (const __m128i *)(v2 + 32), 0x40ui64, &v9);
    v5 = 0;
  }
  SymCryptWipe((VOID *)(v5 + v2 + 32), 64 - v5);
  *(_QWORD *)(v2 + 88) = _byteswap_uint64(8i64 * *(_QWORD *)(v2 + 16));
  SymCryptSha256AppendBlocks((__m128i *)(v2 + 96), (const __m128i *)(v2 + 32), 0x40ui64, &v9);
  v6 = (__int64 *)(v2 + 96);
  v7 = 4i64;
  do
  {
    v8 = *v6++;
    *(_QWORD *)pbResult = _byteswap_uint64(__ROL8__(v8, 32));
    pbResult += 8;
    --v7;
  }
  while( v7 );
  SymCryptWipe((VOID *)v2, 128);
  *(_OWORD *)(v2 + 96) = xmmword_14000F498;
  *(_OWORD *)(v2 + 112) = xmmword_14000F4A8;
}

Referenced by:

SymCryptSha256