PpmParkApplyForcedMask

NTSTATUS __stdcall PpmParkApplyForcedMask(_GROUP_AFFINITY *Group){
  __int64 *v1; 
  unsigned __int16 v2; 
  unsigned __int64 Mask; 
  NTSTATUS v5; 
  __int64 *v6; 
  unsigned int v8; 
  char v9; 
  unsigned __int16 v10; 
  __int64 v11; 
  __int64 v12; 
  __int64 v13; 
  __int64 v14; 

  v2 = Group->Group;
  Mask = Group->Mask;
  v5 = 0;
  v14 = 0i64;
  v6 = v1;
  PpmAcquireLock((_PPM_LOCK *)((char *)&stru_140C23628 + 1048));
  if( v2 > 0x14u || Group->Reserved[0] || Group->Reserved[1] || Group->Reserved[2] )
    goto LABEL_7;
  if( v6 )
  {
    if( (~Mask & *v6) != 0 )
      goto LABEL_7;
  }
  else
  {
    v6 = &v14;
  }
  v8 = PpmParkNumNodes;
  v9 = 0;
  v10 = 0;
  if( (_DWORD)PpmParkNumNodes )
  {
    do
    {
      v11 = PpmParkNodes + 272i64 * v10;
      if( *(_WORD *)(v11 + 4) == v2 )
      {
        v12 = *(_QWORD *)(v11 + 8);
        *(_QWORD *)(v11 + 32) = Mask & v12;
        v13 = *v6 & v12;
        *(_BYTE *)(v11 + 146) |= 1u;
        *(_QWORD *)(v11 + 48) = v13;
        v9 = 1;
      }
      ++v10;
    }
    while( v10 < v8 );
    if( v9 )
    {
      PpmParkApplyPolicy();
      PpmParkParkingAvailable();
      PpmCheckApplyParkConstraints();
      return v5;
    }
  }
LABEL_7:
  PpmReleaseLock((INT64 *)&stru_140C23628 + 131);
  return -1073741811;
}

Referenced by:

NtPowerInformation