PpmParkReportUnparkedCore
_BYTE *__fastcall PpmParkReportUnparkedCore(__int64 a1){
__int64 v2;
unsigned __int64 v3;
__int64 v4;
_BYTE *result;
KeTransitionProcessorParkState(a1, 0);
v2 = *(unsigned int *)(a1 + 36);
*(_BYTE *)(a1 + 33212) = 0;
v3 = (unsigned int)KiProcessorIndexToNumberMappingTable[v2];
v4 = ~(1i64 << (KiProcessorIndexToNumberMappingTable[v2] & 0x3F));
_InterlockedAnd64(&qword_140C11318[v3 >> 6], v4);
if( *(_BYTE *)(a1 + 32819) )
{
v3 = (unsigned int)KiProcessorIndexToNumberMappingTable[*(unsigned int *)(a1 + 36)];
v4 = ~(1i64 << (KiProcessorIndexToNumberMappingTable[*(unsigned int *)(a1 + 36)] & 0x3F));
_InterlockedAnd64(&qword_140C129D8[v3 >> 6], v4);
*(_BYTE *)(a1 + 32819) = 0;
}
PpmEventCoreParkingStateChange(a1, v3, (EVENT_DESCRIPTOR *)v4);
result = *(_BYTE **)(a1 + 0x8000);
if( result )
{
if( *result == 1 )
*(_BYTE *)(a1 + 32829) = 1;
}
return result;
}Referenced by:
PpmPerfAction