PpmCheckMakeupSkippedChecks

INT64 __fastcall PpmCheckMakeupSkippedChecks(){
  INT64 result; 
  __int64 v1; 
  INT64 v2; 
  INT64 *v3; 
  unsigned int v4; 
  __int64 v5; 
  unsigned int v6; 
  unsigned __int16 i; 
  __int64 v8; 
  unsigned __int16 *v9[2]; 
  __int16 v10; 
  int v11; 
  __int16 v12; 
  void *retaddr; 
  UINT64 ProcessorNumber; 
  result = (INT64)&retaddr;
  v11 = 0;
  v12 = 0;
  LODWORD(ProcessorNumber) = 0;
  if( (_DWORD)PpmCheckMakeupCount )
  {
    if( PpmParkMaximumCoresParked() && PpmPerfMinimumPerfReached() )
    {
      v9[1] = (unsigned __int16 *)qword_140C11268[0];
      v9[0] = (unsigned __int16 *)&PpmCheckRegistered;
      v10 = 0;
      while( 1 )
      {
        result = KeEnumerateNextProcessor(&ProcessorNumber, v9);
        if( (_DWORD)result )
          break;
        KeGetPrcb((unsigned int)ProcessorNumber);
        PpmPerfCompleteMakeup(v1 + 33128);
      }
      v2 = PpmPerfDomainHead;
      v3 = &PpmPerfDomainHead;
      while( (INT64 *)v2 != v3 )
      {
        if( *(_DWORD *)(v2 + 200) )
        {
          v4 = 0;
          do
          {
            result = v4;
            v5 = *(_QWORD *)(v2 + 216) + 136i64 * v4;
            if( *(_DWORD *)(v5 + 16) == 1 )
              result = PpmPerfCompleteMakeup(*(_QWORD *)v5);
            ++v4;
          }
          while( v4 < *(_DWORD *)(v2 + 200) );
        }
        v2 = *(_QWORD *)v2;
      }
      v6 = PpmParkNumNodes;
      for( i = 0; i < v6; result = i )
      {
        v8 = i++;
        *(_QWORD *)(PpmParkNodes + 272 * v8 + 112) = *(_QWORD *)(PpmParkNodes + 272 * v8 + 104);
      }
      LODWORD(PpmCheckMakeupCount) = 0;
    }
    else
    {
      PpmEventTraceMakeupPerfCheck();
      LODWORD(PpmCheckMakeupCount) = PpmCheckMakeupCount - 1;
      PpmCheckPipelineIndex = 4;
    }
  }
  LOBYTE(result) = 1;
  return result;
}

Referenced by:

No references.