WheapAttemptErrorRecovery

NTSTATUS __stdcall WheapAttemptErrorRecovery(_WHEA_ERROR_RECORD *Record){
  int v2; 
  NTSTATUS v3; 
  _WHEA_ERROR_SEVERITY Severity; 

  v2 = WheapAttemptArchitecturalErrorRecovery(Record);
  if( v2 >= 0 && Record->Header.Severity == WheaErrSevRecoverable )
    Record->Header.Severity = WheaErrSevCorrected;
  v3 = PshedAttemptErrorRecovery(Record);
  Severity = Record->Header.Severity;
  if( Severity == WheaErrSevRecoverable )
  {
    if( v3 >= 0 )
    {
      Record->Header.Severity = WheaErrSevCorrected;
LABEL_9:
      Record->Header.Flags.AsULONG |= 1u;
      goto LABEL_10;
    }
    Record->Header.Severity = WheaErrSevFatal;
    Severity = WheaErrSevFatal;
  }
  if( Severity == WheaErrSevCorrected )
    goto LABEL_9;
LABEL_10:
  if( v2 < 0 && v3 >= 0 )
    return v3;
  return v2;
}

Referenced by:

WheaReportHwError