PpmParkComputeDiff

VOID __stdcall PpmParkComputeDiff(){
  __int64 v0; 
  unsigned __int16 *v1; 
  __int64 v2; 
  __int64 v3; 
  __int64 v4; 
  __int64 v5; 

  *(_DWORD *)&PpmPerfNewCoreParkingMask.Count = 1310721;
  memset(&PpmPerfNewCoreParkingMask.Reserved, 0i64, 0xA4u);
  *(_DWORD *)&PpmParkNewSoftParkingMask = 1310721;
  memset(&unk_140C127C4, 0i64, 0xA4u);
  if( (_DWORD)PpmParkNumNodes )
  {
    v0 = (unsigned int)PpmParkNumNodes;
    v1 = (unsigned __int16 *)(PpmParkNodes + 4);
    do
    {
      v2 = *v1;
      v3 = *(_QWORD *)(v1 + 14);
      if( PpmPerfNewCoreParkingMask.Count <= (unsigned __int16)v2 )
        PpmPerfNewCoreParkingMask.Count = v2 + 1;
      PpmPerfNewCoreParkingMask.Bitmap[v2] |= v3;
      v4 = *v1;
      v5 = *(_QWORD *)(v1 + 22);
      if( PpmParkNewSoftParkingMask <= (unsigned __int16)v4 )
        PpmParkNewSoftParkingMask = v4 + 1;
      v1 += 136;
      qword_140C127C8[v4] |= v5;
      --v0;
    }
    while( v0 );
  }
  KeXorAffinityEx(&PpmPerfCoreParkingMask.Count, &PpmPerfNewCoreParkingMask.Count, &PpmPerfChangedCoreParkingMask.Count);
}

Referenced by:

PpmParkCalculateCoreParkingMask