PpmParkParkingAvailable
UINT8 __stdcall PpmParkParkingAvailable(){
UINT8 v0;
unsigned int v1;
__int64 v2;
unsigned int v3;
_QWORD *v4;
__int64 v5;
unsigned __int8 v6;
unsigned __int8 v7;
UINT8 result;
if( (_DWORD)PpmParkNumNodes != 1
|| KeGetCurrentPrcb()->LogicalProcessorsPerCore != *(unsigned __int8 *)(PpmParkNodes + 6) )
{
v0 = 0;
v1 = 0;
if( !(_DWORD)PpmParkNumNodes )
goto LABEL_17;
v2 = PpmParkNodes + 132;
while( 1 )
{
if( *(_BYTE *)(v2 + 2)
|| *(_BYTE *)(v2 + 4)
|| *(_QWORD *)(v2 - 100)
|| !KeIsEmptyAffinityEx(&PpmPerfCoreParkingMask.Count) )
{
v0 = 1;
goto LABEL_17;
}
v3 = 0;
v4 = (_QWORD *)(v2 - 76);
v5 = 0i64;
while( 1 )
{
v6 = *(_BYTE *)(v2 + v5 - 4);
if( v6 )
break;
LABEL_15:
++v3;
++v5;
++v4;
if( v3 >= 2 )
goto LABEL_16;
}
v7 = *(_BYTE *)(v2 + v5);
if( *(_BYTE *)(v2 + v5 - 2) >= v7 && v7 >= v6 )
break;
v0 = 1;
LABEL_16:
++v1;
v2 += 272i64;
if( v1 >= (unsigned int)PpmParkNumNodes )
{
LABEL_17:
result = v0;
PpmIsParkingEnabled = v0;
return result;
}
}
if( *v4 )
v0 = 1;
goto LABEL_15;
}
return 0;
}Referenced by:
PpmCheckReInit
PpmParkApplyForcedMask
PpmParkClearForcedMask
PpmParkRegisterParking