PopCalculateIdleInformation
UINT64 __fastcall PopCalculateIdleInformation(INT64 a1, UINT64 *a2){
__int64 v2;
INT64 v3;
__int64 v4;
unsigned int v5;
int v6;
UINT64 PlatformStateResidency;
int v8;
unsigned int v9;
UINT64 *v10;
int v11;
UINT64 v12;
UINT64 result;
ULONGLONG SourceFrequency;
UINT64 v16;
v2 = 0i64;
v3 = a1;
if( PpmPlatformStates )
{
v4 = *(_QWORD *)(PpmPlatformStates + 48);
v5 = *(_DWORD *)(v4 + 4);
v6 = *(_DWORD *)(v4 + 8);
}
else
{
v4 = 0i64;
v5 = 0;
v6 = 0;
}
v16 = 0i64;
PlatformStateResidency = PpmQueryPlatformStateResidency((unsigned int)PlatformIdleStateIndex);
if( PlatformStateResidency != -1i64 )
PlatformStateResidency /= 0xAui64;
v8 = 0;
v9 = 0;
if( v5 )
{
v10 = (UINT64 *)(v4 + 56);
v11 = PlatformIdleStateIndex;
do
{
SourceFrequency = PopQpcFrequency;
v2 += PpmConvertTime(*v10, PopQpcFrequency, 0xF4240ui64);
if( v11 != -1 && v9 == v11 )
{
v12 = PpmConvertTime(*v10, SourceFrequency, 0xF4240ui64);
v8 = *((_DWORD *)v10 - 6);
v16 = v12;
}
++v9;
v10 += 126;
}
while( v9 < v5 );
v3 = a1;
}
result = v16;
*(_QWORD *)v3 = v2;
*(_QWORD *)(v3 + 8) = v16;
*(_QWORD *)(v3 + 16) = PlatformStateResidency;
*(_DWORD *)(v3 + 24) = v8;
*(_DWORD *)(v3 + 28) = v6;
return result;
}Referenced by:
PopCalculateCsSummary
PopCaptureSleepStudyStatistics
PopDripsWatchdogCallbackWorker
PopDripsWatchdogDiagnosticWorker
PopDripsWatchdogStartWatchdog
PopSleepstudySnapModernStandbySessionData
PopSleepstudyStartNextSession