PpmCheckRecordAllUtility

UINT8 __stdcall PpmCheckRecordAllUtility(){
  UINT64 v0; 
  unsigned __int64 v1; 
  unsigned __int16 v2; 
  UINT64 Count; 
  UINT64 v4; 
  __int64 v5; 
  __int64 v6; 
  INT64 i; 
  unsigned int j; 

  v1 = PpmCheckRegistered.Bitmap[0];
  v2 = 0;
  while( 1 )
  {
    Count = PpmCheckRegistered.Count;
    if( !v1 )
      break;
LABEL_3:
    _BitScanForward64(&v4, v1);
    v1 &= ~(1i64 << v4);
    v5 = (unsigned int)KiProcessorNumberToIndexMappingTable[64 * v2 + (unsigned __int8)v4];
    if( (unsigned int)v5 >= (unsigned int)KeNumberProcessors_0 )
      v6 = 0i64;
    else
      v6 = (__int64)*(&KiProcessorBlock + v5);
    PpmPerfRecordUtility((_KPRCB *)(v6 + 33128), v4);
  }
  while( ++v2 < (unsigned int)PpmCheckRegistered.Count )
  {
    v1 = PpmCheckRegistered.Bitmap[v2];
    if( v1 )
      goto LABEL_3;
  }
  for( i = PpmPerfDomainHead; (INT64 *)i != &PpmPerfDomainHead; i = *(_QWORD *)i )
  {
    for( j = 0; j < *(_DWORD *)(i + 200); ++j )
    {
      Count = *(_QWORD *)(i + 216) + 136i64 * j;
      if( *(_DWORD *)(Count + 16) == 1 )
        PpmPerfRecordUtility(*(_KPRCB **)Count, v0);
    }
  }
  PpmParkRecordNodeStatistics(Count);
  return 1;
}

Referenced by:

No references.