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