PpmParkReportParkedCores

INT64 __fastcall PpmParkReportParkedCores(){
  INT64 v0; 
  int v1; 
  int v2; 
  int v3; 
  INT64 v4; 
  INT64 v5; 
  UINT64 ProcessorNumber; 
  _KAFFINITY_EX *p_result; 
  unsigned __int64 v8; 
  __int16 v9; 
  int v10; 
  __int16 v11; 
  _KAFFINITY_EX v12; 
  _KAFFINITY_EX result; 
  INT64 v14[22]; 
  v10 = 0;
  v11 = 0;
  LODWORD(ProcessorNumber) = 0;
  memset((INT64)&result, 0i64);
  memset((INT64)v14, 0i64);
  v0 = memset((INT64)&v12, 0i64);
  if( PpmIsParkingEnabled
    && (v1 = KeAndAffinityEx((_KAFFINITY_EX *)&PpmPerfChangedCoreParkingMask, &PpmPerfNewCoreParkingMask, &result),
        KeSubtractAffinityEx(
          &PpmPerfNewCoreParkingMask,
          (_KAFFINITY_EX *)&PpmPerfChangedCoreParkingMask,
          (_KAFFINITY_EX *)v14),
        KeXorAffinityEx(&PpmParkSoftParkingMask, &PpmParkNewSoftParkingMask, &v12.Count),
        v0 = v1 | (unsigned int)KeAndAffinityEx(&v12, (_KAFFINITY_EX *)v14, &v12),
        (_DWORD)v0) )
  {
    v2 = KeCountSetBitsAffinityEx(&v12);
    v3 = KeCountSetBitsAffinityEx(&result);
    v9 = 0;
    v8 = result.Bitmap[0];
    p_result = &result;
    PpmCheckCount = v3 + v2;
    while( !(unsigned int)KeEnumerateNextProcessor(&ProcessorNumber, (unsigned __int16 **)&p_result) )
    {
      KeGetPrcb((unsigned int)ProcessorNumber);
      PpmPerfQueueAction(v4, 3);
    }
    v8 = v12.Bitmap[0];
    p_result = &v12;
    v9 = 0;
    while( 1 )
    {
      v0 = KeEnumerateNextProcessor(&ProcessorNumber, (unsigned __int16 **)&p_result);
      if( (_DWORD)v0 )
        break;
      KeGetPrcb((unsigned int)ProcessorNumber);
      PpmPerfQueueAction(v5, 4);
    }
    LOBYTE(v0) = 0;
  }
  else
  {
    LOBYTE(v0) = 1;
  }
  return v0;
}

Referenced by:

No references.