HalpMcaSetFeatureFlags

VOID __stdcall HalpMcaSetFeatureFlags(){
  CHAR CpuInfo; 
  UINT8 v1; 
  unsigned __int64 v2; 
  int v3[8]; 
  UINT8 v4; 
  __int32 v5; 
  unsigned int v6; 
  int v7; 

  v5 = 0;
  v6 = 0;
  v7 = 0;
  v4 = 0;
  CpuInfo = HalpGetCpuInfo(0i64, 0i64, 0i64, &v4);
  v1 = CpuInfo != 0 ? v4 : 0;
  v4 = v1;
  if( v1 == 2 )
  {
    byte_140C50558 = 1;
    if( !HalpIsCmciImplemented() )
      *(&stru_140CF2E80 + 7433) = 1;
    v2 = __readmsr(0x179u);
    if( (v2 & 0x1000000) != 0 )
      HalpMcaRecoverySupported = 1;
    if( (v2 & 0x4000000) != 0 )
      *(&stru_140CF2E80 + 7434) = 1;
  }
  else
  {
    if( v1 != 1 )
      goto LABEL_19;
    HalpCpuID(0x80000000, (__int32 *)&v6, &v5, &v5, &v5);
    if( v6 >= 0x80000007 )
    {
      HalpCpuID(-2147483641, &v5, &v7, &v5, &v5);
      if( (v7 & 2) != 0 )
        HalpMcaRecoverySupported = 1;
      if( (v7 & 1) != 0 )
        *(&stru_140CF2E80 + 7924) = 1;
      if( (v7 & 8) != 0 )
        HalpMcaScalableRasSupported = 1;
    }
    if( !HalpMcaScalableRasSupported || !HalpIsCmciImplemented() )
LABEL_19:
      *(&stru_140CF2E80 + 7433) = 1;
  }
  byte_140C50520 = 1;
  byte_140C50522 = 1;
  _InterlockedOr(v3, 0);
}

Referenced by:

HalpInitializeMce