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.