PpmClearSimulatedLoad
INT64 __stdcall PpmClearSimulatedLoad(PPROCESSOR_NUMBER ProcessorNumber){
void *v2;
INT64 i;
unsigned int v4;
unsigned int v5;
__int64 v6;
__int64 v7;
__int64 v8;
unsigned int v9;
unsigned int ProcessorIndexFromNumber;
__int64 v11;
v2 = 0i64;
PpmAcquireLock(&PpmPerfPolicyLock);
if( *(_DWORD *)ProcessorNumber < 0 )
{
for( i = PpmPerfDomainHead; (INT64 *)i != &PpmPerfDomainHead; i = *(_QWORD *)i )
{
v4 = *(_DWORD *)(i + 200);
v5 = 0;
if( v4 )
{
v6 = *(_QWORD *)(i + 216);
while( 1 )
{
v7 = 136i64 * v5;
if( *(_DWORD *)(v7 + v6 + 16) == 1 && *(_DWORD *)(v7 + v6 + 20) == (*(_DWORD *)ProcessorNumber & 0x7FFFFFFF) )
break;
if( ++v5 >= v4 )
goto LABEL_10;
}
v8 = *(_QWORD *)(v7 + v6);
if( v8 )
goto LABEL_16;
}
LABEL_10:
;
}
goto LABEL_12;
}
if( ProcessorNumber->Reserved
|| (ProcessorIndexFromNumber = KeGetProcessorIndexFromNumber(ProcessorNumber), ProcessorIndexFromNumber == -1) )
{
LABEL_12:
v9 = -1073741811;
goto LABEL_17;
}
KeGetPrcb(ProcessorIndexFromNumber);
v8 = v11 + 33128;
LABEL_16:
v2 = *(void **)(v8 + 24);
*(_QWORD *)(v8 + 24) = 0i64;
v9 = 0;
LABEL_17:
PpmReleaseLock(&PpmPerfPolicyLock);
if( v2 )
ExFreePoolWithTag(v2, 0x704D5050u);
return v9;
}Referenced by:
NtPowerInformation