HalpCmciSetProcessorConfigAMD

CHAR __stdcall HalpCmciSetProcessorConfigAMD(INT64 a1, CHAR a2, INT64 a3){
  INT64 v5; 
  __int64 v6; 
  __int64 v7; 
  unsigned int v8; 
  unsigned int v9; 
  unsigned int v10; 
  unsigned int v11; 
  INT64 v12; 
  unsigned int v13; 
  __int64 v14; 
  INT64 v15; 
  INT64 v16; 
  __int64 v17; 
  INT64 v18; 
  INT64 v19; 
  __int64 v21; 
  unsigned int v23; 

  v5 = a1;
  if( HalpMcaScalableRasSupported )
  {
    v6 = ((__int64(__fastcall *)(INT64, __int64, _QWORD))qword_140C49C20)(a3, 3221226512i64, 0i64);
    qword_140C49C10(a3, 3221226512i64, (a2 != 0 ? 0x1000ui64 : 0) | v6 & 0xFFFFFFFFFFFF0F0Fui64 | (a2 != 0 ? 0x20 : 0));
  }
  LOBYTE(v7) = byte_140C50568[0];
  if( !byte_140C50568[0] )
  {
    v7 = __readmsr(0x179u);
    byte_140C50568[0] = v7;
  }
  v8 = byte_140C50568[0];
  v9 = 0;
  v23 = byte_140C50568[0];
  if( byte_140C50568[0] )
  {
    v10 = -1073733622;
    v11 = 1027;
    do
    {
      LODWORD(v7) = HalpWheaReadMsrMisc(a3, v9);
      v21 = v7;
      v12 = v7;
      if( v7 < 0 )
      {
        if( BYTE3(v7) )
        {
          if( HalpMcaScalableRasSupported )
            v13 = v10;
          else
            v13 = 8 * BYTE3(v7) - 1073740800;
          v14 = 4i64;
          do
          {
            v15 = ((__int64(__fastcall *)(INT64, _QWORD, _QWORD))qword_140C49C20)(a3, v13, 0i64);
            HalpCmciSetProcessorMiscConfigAMD(a1, v13++, v15, a2, a3);
            --v14;
          }
          while( v14 );
          v12 = v21;
          v8 = v23;
          v5 = a1;
        }
        v16 = v10 - 7;
        if( !HalpMcaScalableRasSupported )
          v16 = v11;
        LOBYTE(v7) = HalpCmciSetProcessorMiscConfigAMD(v5, v16, v12, a2, a3);
        if( HalpMcaScalableRasSupported )
        {
          v17 = ((__int64(__fastcall *)(INT64, _QWORD, _QWORD))qword_140C49C20)(a3, v10 - 6, 0i64);
          qword_140C49C10(a3, v10 - 6, v17 & 0xFFFFFF9FFFFFFFFFui64 | -(__int64)(a2 != 0) & 0x2000000000i64);
          v18 = ((__int64(__fastcall *)(INT64, _QWORD, _QWORD))qword_140C49C20)(a3, v10, 0i64);
          HalpCmciSetProcessorMiscConfigAMD(v5, v10, v18, a2, a3);
          v19 = ((__int64(__fastcall *)(INT64, _QWORD, _QWORD))qword_140C49C20)(a3, v10 + 1, 0i64);
          LOBYTE(v7) = HalpCmciSetProcessorMiscConfigAMD(v5, v10 + 1, v19, a2, a3);
        }
      }
      ++v9;
      v11 += 4;
      v10 += 16;
    }
    while( v9 < v8 );
  }
  return v7;
}

Referenced by:

HalpCmciPollProcessor
HalpCmciResetStateAMD
HalpCmciSetProcessorConfig