HalpMceRecovery

INT64 __fastcall HalpMceRecovery(INT64 a1, _DWORD *a2){
  __int64 v3; 
  int v4; 
  int v5; 
  v3 = *(_QWORD *)(a1 + 40);
  v4 = -1073741637;
  if( !HalpMcaRecoverySupported || !HalpMcaRecoveryPolicy )
    return(unsigned int)v4;
  v5 = *(_DWORD *)(a1 + 4);
  if( v5 == 1 )
  {
    if( (v3 & 0x80000000000000i64) == 0 )
      goto LABEL_5;
  }
  else if( v5 != 2 || (v3 & 0x2000100000000000i64) != 0x2000000000000000i64 )
  {
LABEL_5:
    if( v5 == 1 )
      HalpMceRecoveryNotRequiredIntel((_QWORD *)a1);
    else
      HalpMceRecoveryNotRequiredAmd((UINT64 *)a1);
    v4 = 0;
    goto LABEL_15;
  }
  if( ((v3 & 0x4000000000000000i64) == 0 || HalpMcaOverflowRecoverySupported) && (v3 & 0x200000000000000i64) == 0 )
  {
    v4 = HalpMceRecoveryRequired(a1);
LABEL_15:
    if( v4 >= 0 )
      *a2 = 2;
  }
  return(unsigned int)v4;
}

Referenced by:

No references.