WheapPersistPageForMemoryError

VOID __fastcall WheapPersistPageForMemoryError(INT64 a1){
  __int64 v1; 
  _LARGE_INTEGER v2; 
  UINT64 Attributes; 
  _LARGE_INTEGER DataBlockObject; 

  if( (*(_BYTE *)(a1 + 104) & 0x20) != 0 )
  {
    LODWORD(v1) = WheapErrorContainsMemorySection(a1);
    if( v1 )
    {
      if( (*(_BYTE *)v1 & 2) != 0 )
      {
        v2 = *(_LARGE_INTEGER *)(v1 + 16);
        DataBlockObject = v2;
        if( !MmGetPageBadStatus(&DataBlockObject) )
        {
          DataBlockObject.QuadPart = (unsigned __int64)v2.QuadPart >> 12;
          LODWORD(Attributes) = 7;
          HalSetEnvironmentVariableEx(
            (WCHAR *)L"UncorrectedBadMemoryPage",
            &WheapHardwareErrorGuid,
            &DataBlockObject,
            8ui64,
            Attributes);
        }
      }
    }
  }
}

Referenced by:

WheaReportHwError