PpmParkSetLpiCap

NTSTATUS __stdcall PpmParkSetLpiCap(UINT64 LpiCap, UINT64 ThermalCap, UINT64 *LpiCapSet){
  int v4; 
  int v5; 
  unsigned int v7; 
  unsigned int v8; 
  __int64 v9; 
  unsigned __int8 *v10; 
  int v11; 
  unsigned int v12; 
  unsigned int v13; 
  __int64 v14; 
  unsigned __int8 *v15; 
  int v16; 
  char v17; 
  v4 = ThermalCap;
  v5 = LpiCap;
  if( *((int *)KeGetCurrentPrcb() + 8246) >= 2 )
    return -1073741823;
  PpmAcquireLock(&PpmPerfPolicyLock);
  v7 = (unsigned __int8)PpmParkGranularity
     + v5
     - 1
     - ((unsigned int)(unsigned __int8)PpmParkGranularity + v5 - 1) % (unsigned __int8)PpmParkGranularity;
  if( v7 )
  {
    v8 = 0;
    if( (_DWORD)PpmParkNumNodes )
    {
      v9 = (unsigned int)PpmParkNumNodes;
      v10 = (unsigned __int8 *)(PpmParkNodes + 6);
      do
      {
        v11 = *v10;
        if( (unsigned __int8)v11 > (unsigned __int8)PpmParkGranularity )
          v8 += v11 - (unsigned __int8)PpmParkGranularity;
        v10 += 272;
        --v9;
      }
      while( v9 );
    }
    if( v7 > v8 )
      v7 = v8;
  }
  v12 = (unsigned __int8)PpmParkGranularity
      + v4
      - 1
      - ((unsigned int)(unsigned __int8)PpmParkGranularity + v4 - 1) % (unsigned __int8)PpmParkGranularity;
  if( v12 )
  {
    v13 = 0;
    if( (_DWORD)PpmParkNumNodes )
    {
      v14 = (unsigned int)PpmParkNumNodes;
      v15 = (unsigned __int8 *)(PpmParkNodes + 6);
      do
      {
        v16 = *v15;
        if( (unsigned __int8)v16 > (unsigned __int8)PpmParkGranularity )
          v13 += v16 - (unsigned __int8)PpmParkGranularity;
        v15 += 272;
        --v14;
      }
      while( v14 );
    }
    if( v12 > v13 )
      v12 = v13;
  }
  v17 = 0;
  if( v7 != PpmParkLpiCap )
  {
    PpmParkLpiCap = v7;
    v17 = 1;
    *(_DWORD *)PpmParkLpiCapChanged = 1;
  }
  if( v12 != PpmParkThermalCap )
  {
    PpmParkThermalCap = v12;
    v17 = 1;
  }
  if( v17 )
  {
    PpmParkApplyPolicy();
    PpmCheckReInit();
    PpmCheckCustomRun(4i64);
  }
  else
  {
    PpmReleaseLock(&PpmPerfPolicyLock);
  }
  *(_DWORD *)LpiCapSet = v7;
  return 0;
}

Referenced by:

NtPowerInformation