PopPowerInformationInternal

NTSTATUS __stdcall PopPowerInformationInternal(
        POWER_INFORMATION_LEVEL_INTERNAL InternalLevel,
        VOID *InputBuffer,
        UINT64 InputBufferLength,
        VOID *OutputBuffer,
        VOID **ReturnBuffer,
        UINT64 *ReturnBufferLength,
        UINT8 *FreeReturnBuffer,
        INT64 a8){
  unsigned __int64 v10; 
  void *v11; 
  unsigned int v12; 
  unsigned __int64 v13; 
  __int64 v14; 
  int v15; 
  int v16; 
  int v17; 
  int v18; 
  int v19; 
  VOID **v20; 
  CHAR *v21; 
  NTSTATUS PagesFromHiberFile; 
  unsigned __int64 v24; 
  unsigned __int64 v25; 
  __int64 v26; 
  int v27; 
  int v28; 
  int v29; 
  int v30; 
  int v31; 
  VOID *v32; 
  unsigned __int64 v33; 
  NTSTATUS v34; 
  NTSTATUS v35; 
  int v36; 
  int v37; 
  int v38; 
  int v39; 
  int v40; 
  int v41; 
  int v42; 
  int v43; 
  int v44; 
  VOID **v45; 
  char PowerButtonBugcheckEnabled; 
  VOID **v47; 
  char *v48; 
  const _WNF_STATE_NAME *v49; 
  VOID **v50; 
  VOID **v51; 
  VOID **v52; 
  __int128 v53; 
  const wchar_t *v54; 
  __int64 v55; 
  __int64 v56; 
  VOID **v57; 
  int BrandedFrequency; 
  _PROCESSOR_NUMBER *v59; 
  UINT32 v60; 
  char v61; 
  VOID **v62; 
  VOID **v63; 
  VOID **v64; 
  __int128 v65; 
  int v66; 
  bool v67; 
  int v68; 
  VOID **v69; 
  char v70; 
  VOID **v71; 
  unsigned int v72; 
  UINT8 *v73; 
  __int64 v74; 
  VOID **PoolWithTag; 
  __int64 v76; 
  __int64 v77; 
  __int64 v78; 
  char v79; 
  int v80; 
  int v81; 
  int v82; 
  int v83; 
  int v84; 
  VOID **v85; 
  char v86; 
  VOID **v87; 
  INT64 v88; 
  UINT64 MatchingChangeStamp; 
  UINT64 CheckStamp; 
  UINT8 IsMember; 
  char v92; 
  UINT8 *v93; 
  INT64 v94; 
  int v95; 
  int Data; 
  UINT64 pcbLength; 
  VOID *v98; 
  _UNICODE_STRING SourceString; 
  int InputBuffera[8]; 

  v10 = InternalLevel;
  v11 = 0i64;
  v12 = InputBufferLength;
  *ReturnBuffer = 0i64;
  *(_DWORD *)ReturnBufferLength = 0;
  *FreeReturnBuffer = 0;
  v93 = FreeReturnBuffer;
  IsMember = 0;
  pcbLength = 0i64;
  v95 = 0;
  v98 = 0i64;
  v94 = 0i64;
  if( KeGetCurrentThread()->PreviousMode )
  {
    if( (_DWORD)v10 == 36 )
    {
      if( PopIsRunningAsLocalSystem() )
        goto LABEL_245;
      return -1073741790;
    }
    if( (_DWORD)v10 == 65 )
      return -1073741790;
    if( (unsigned int)v10 <= 0x3F )
    {
      v24 = 0x8E00030014B80105ui64;
      if( _bittest64((const __int64 *)&v24, v10) )
        return -1073741790;
    }
    if( (_DWORD)v10 == 67 )
      return -1073741790;
    v25 = (unsigned int)(v10 - 29);
    if( (unsigned int)v25 <= 0x23 )
    {
      v26 = 0x88B4C0001i64;
      if( _bittest64(&v26, v25) )
      {
        if( !PspIsContextAdmin() )
          return -1073741790;
      }
    }
    if( ((_DWORD)v10 == 35 || (_DWORD)v10 == 24) && !PopIsRunningAsLocalSystem() )
      return -1073741790;
    switch( (_DWORD)v10 )
    {
      case 0x3D:
        if( !PopCheckTestsigningEnabled() || !PspIsContextAdmin() )
          return -1073741790;
        goto LABEL_76;
      case 0x2D:
        PagesFromHiberFile = 0;
        if( PopIsRunningAsLocalSystem() || PopCheckTestsigningEnabled() && PspIsContextAdmin() )
        {
          if( v12 != 12 )
            return -1073741811;
          if( *((_BYTE *)InputBuffer + 8) )
            PoUserShutdownInitiated();
          else
            PoUserShutdownCancelled();
          return PagesFromHiberFile;
        }
        return -1073741790;
      case 0x19:
        v54 = L"systemManagement";
        SourceString = 0i64;
        v55 = 0x7FFFi64;
        do
        {
          if( !*v54 )
            break;
          ++v54;
          --v55;
        }
        while( v55 );
        v56 = (0x7FFF - v55) & -(__int64)(v55 != 0);
        if( v55 )
        {
          SourceString.Buffer = L"systemManagement";
          SourceString.Length = 2 * v56;
          SourceString.MaximumLength = 2 * v56 + 2;
        }
        PagesFromHiberFile = RtlCapabilityCheckForSingleSessionSku(0, &SourceString);
        if( PagesFromHiberFile < 0 )
          return PagesFromHiberFile;
        return -1073741790;
    }
  }
  else
  {
    v13 = (unsigned int)(v10 - 5);
    if( (unsigned int)v13 <= 0x3B )
    {
      v14 = 0x88B4F8410080005i64;
      if( _bittest64(&v14, v13) )
      {
        PagesFromHiberFile = -1073741637;
        goto LABEL_72;
      }
    }
  }
  if( (int)v10 > 38 )
  {
    if( (int)v10 <= 54 )
    {
      if( (int)v10 < 53 )
      {
        if( (int)v10 <= 45 )
        {
          v27 = v10 - 39;
          if( !v27 )
          {
            if( v12 != 12 )
              return -1073741811;
            v48 = &v92;
            v92 = *((_BYTE *)InputBuffer + 8);
            v49 = (const _WNF_STATE_NAME *)&WNF_PO_WAKE_ON_VOICE_STATE;
            goto LABEL_116;
          }
          v28 = v27 - 1;
          if( v28 )
          {
            v29 = v28 - 1;
            if( !v29 )
            {
              if( v12 != 16 )
                return -1073741811;
              if( !OutputBuffer )
                return -1073741789;
              PoolWithTag = ExAllocatePoolWithTag(1ui64, 1ui64, 544040269i64);
              if( !PoolWithTag )
                return -1073741670;
              v76 = *((_QWORD *)InputBuffer + 1);
              if( v76 )
                v77 = *(_QWORD *)(*(_QWORD *)(v76 + 312) + 40i64);
              else
                v77 = 0i64;
              if( !v77 || (v78 = *(_QWORD *)(v77 + 80)) == 0 || (v67 = *(_QWORD *)(v78 + 64) == 0i64, v79 = 1, v67) )
                v79 = 0;
              *(_BYTE *)PoolWithTag = v79;
              *ReturnBuffer = PoolWithTag;
              *(_DWORD *)ReturnBufferLength = 1;
              *FreeReturnBuffer = 1;
              return 0;
            }
            v30 = v29 - 1;
            if( !v30 )
            {
              if( v12 < 8 || !OutputBuffer )
                return -1073741789;
              v52 = ExAllocatePoolWithTag(1ui64, 0x20ui64, 544040269i64);
              if( !v52 )
                return -1073741670;
              *(_OWORD *)v52 = 0i64;
              *((_OWORD *)v52 + 1) = 0i64;
              *(_OWORD *)v52 = PopBsdPowerTransitionExtensionAtBoot;
              v53 = xmmword_140C540A0;
LABEL_129:
              *((_OWORD *)v52 + 1) = v53;
              *ReturnBuffer = v52;
              *(_DWORD *)ReturnBufferLength = 32;
LABEL_51:
              *FreeReturnBuffer = 1;
              return 0;
            }
            v31 = v30 - 1;
            if( !v31 )
            {
              if( ((v12 - 8) & 0xFFFFFFFB) != 0 )
                return -1073741811;
              if( !OutputBuffer )
                return -1073741789;
              v51 = ExAllocatePoolWithTag(1ui64, 8ui64, 544040269i64);
              if( !v51 )
                return -1073741670;
              v59 = (_PROCESSOR_NUMBER *)((char *)InputBuffer + 8);
              *v51 = 0i64;
              if( v12 != 12 )
                v59 = 0i64;
              BrandedFrequency = PpmPerfGetBrandedFrequency(v59);
              goto LABEL_168;
            }
            if( v31 != 1 )
              return -1073741811;
            if( v12 < 0x90 )
              return -1073741789;
            if( OutputBuffer )
              return -1073741811;
            PagesFromHiberFile = RtlCheckTokenMembership(0i64, *(&stru_140C23628 + 288), &IsMember);
            if( PagesFromHiberFile < 0 )
              return PagesFromHiberFile;
            if( IsMember )
            {
              if( PopPlatformAoAc )
              {
                PagesFromHiberFile = RtlStringCbLengthW((WCHAR *)InputBuffer + 4, 0x80ui64, &pcbLength);
                if( PagesFromHiberFile < 0 )
                  return PagesFromHiberFile;
                v74 = *((_QWORD *)InputBuffer + 17);
                if( pcbLength )
                {
                  if( !v74 )
                    return -1073741811;
                }
                else if( v74 )
                {
                  return -1073741811;
                }
                PopAcquirePolicyLock();
                *(&stru_140C23628 + 2396) = 0;
                PagesFromHiberFile = RtlStringCbCopyW(
                                       (WCHAR *)&stru_140C23628 + 2396,
                                       0x80ui64,
                                       (WCHAR *)InputBuffer + 4);
                *(&stru_140C23628 + 596) = *((_QWORD *)InputBuffer + 17);
                goto LABEL_189;
              }
              return -1073741637;
            }
            return -1073741790;
          }
          if( v12 != 16 || *((_DWORD *)InputBuffer + 2) )
            return -1073741811;
          if( *((_BYTE *)InputBuffer + 12) )
            PopDeepSleepSetDisengageReason(PopDeepSleepDisengageReasonAcpi);
          else
            PopDeepSleepClearDisengageReason(PopDeepSleepDisengageReasonAcpi);
          return 0;
        }
        v80 = v10 - 46;
        if( !v80 )
        {
          if( v12 != 32 || OutputBuffer )
            return -1073741811;
          PopNotifySessionUserPowerRequestAttributed(
            *((_DWORD *)InputBuffer + 6),
            *((_LIST_ENTRY **)InputBuffer + 1),
            *((_LIST_ENTRY **)InputBuffer + 2));
          return 0;
        }
        v81 = v80 - 1;
        if( v81 )
        {
          v82 = v81 - 1;
          if( v82 )
          {
            v83 = v82 - 1;
            if( !v83 )
            {
              if( !OutputBuffer )
                return -1073741789;
              v45 = ExAllocatePoolWithTag(1ui64, 1ui64, 544040269i64);
              if( !v45 )
                return -1073741670;
              PowerButtonBugcheckEnabled = PopQueryPowerButtonBugcheckEnabled();
              goto LABEL_104;
            }
            v84 = v83 - 1;
            if( v84 )
            {
              if( v84 == 1 )
              {
                if( v12 >= 0x10 )
                {
                  PagesFromHiberFile = 0;
                  PopWakeAlarmTimeOverride = *((_QWORD *)InputBuffer + 1);
                  return PagesFromHiberFile;
                }
                return -1073741789;
              }
              return -1073741811;
            }
            if( !OutputBuffer )
              return -1073741789;
            v85 = ExAllocatePoolWithTag(1ui64, 1ui64, 544040269i64);
            if( !v85 )
              return -1073741670;
            v86 = PopAutoChkCausedReboot;
            goto LABEL_311;
          }
          if( v12 < 0x10 )
            return -1073741789;
          if( OutputBuffer )
            return -1073741811;
          if( !*((_DWORD *)InputBuffer + 1) )
            return PpmInternalPlatformIdleVeto(*((unsigned int *)InputBuffer + 2), *((_BYTE *)InputBuffer + 12));
        }
        else
        {
          if( v12 < 0x14 )
            return -1073741789;
          if( OutputBuffer )
            return -1073741811;
          if( !*((_DWORD *)InputBuffer + 1) )
            return PpmInternalProcessorIdleVeto(
                     (_XSTATE_CONFIGURATION *)*((unsigned int *)InputBuffer + 2),
                     *((unsigned int *)InputBuffer + 3),
                     *((_BYTE *)InputBuffer + 16));
        }
        return -1073741735;
      }
LABEL_356:
      PagesFromHiberFile = PopDirectedDripsUmPowerInformationInternal(
                             v10,
                             v12,
                             (INT64)InputBuffer,
                             ReturnBufferLength,
                             ReturnBuffer);
      if( PagesFromHiberFile >= 0 && *ReturnBuffer )
        goto LABEL_124;
      return PagesFromHiberFile;
    }
    if( (int)v10 > 62 )
    {
      if( (_DWORD)v10 == 63 )
      {
        if( !OutputBuffer )
          return -1073741811;
        v47 = ExAllocatePoolWithTag((unsigned int)(v10 - 63 + 1), (unsigned int)(v10 - 63 + 8), 544040269i64);
        if( !v47 )
          return -1073741670;
        *v47 = &SshpRoutineBlock;
        *ReturnBuffer = v47;
        *(_DWORD *)ReturnBufferLength = 8;
        goto LABEL_109;
      }
      if( (_DWORD)v10 != 64 )
      {
        if( (_DWORD)v10 == 65 )
        {
          if( v12 != 16 )
            return -1073741811;
          v88 = *((_QWORD *)InputBuffer + 1);
          if( !v88 )
            return -1073741811;
          PagesFromHiberFile = PopFxClearDeviceConstraints(v88);
          v35 = 0;
          if( PagesFromHiberFile < 0 )
            return PagesFromHiberFile;
          return v35;
        }
        if( (_DWORD)v10 == 66 )
          return -1073741637;
        if( (_DWORD)v10 != 67 )
          return -1073741811;
        *(_DWORD *)ReturnBufferLength = 0;
        *ReturnBuffer = 0i64;
        v87 = ExAllocatePoolWithTag((unsigned int)(v10 - 66), 4ui64, 544040269i64);
        if( !v87 )
          return -1073741670;
        *(_DWORD *)v87 = 0;
        *(_DWORD *)v87 = PopDisableInboxPepGeneratedConstraintsOverride;
        *ReturnBuffer = v87;
        *(_DWORD *)ReturnBufferLength = 4;
        return 0;
      }
      goto LABEL_356;
    }
    if( (_DWORD)v10 == 62 )
    {
      if( !OutputBuffer )
        return -1073741789;
      v85 = ExAllocatePoolWithTag(1ui64, 1ui64, 544040269i64);
      if( !v85 )
        return -1073741670;
      v86 = PopLastBootSucceeded;
LABEL_311:
      *(_BYTE *)v85 = v86;
      *ReturnBuffer = v85;
      *(_DWORD *)ReturnBufferLength = 1;
      goto LABEL_109;
    }
LABEL_76:
    if( (_DWORD)v10 != 56 )
    {
      if( (_DWORD)v10 == 57 )
      {
        if( OutputBuffer )
          return -1073741811;
        return PopPlRegisterPowerPlane((INT64)InputBuffer);
      }
      else if( (_DWORD)v10 == 58 )
      {
        if( v12 < 0x18 )
          return -1073741811;
        return PoDirectedDripsSetDeviceFlags(*((_QWORD *)InputBuffer + 1), *((unsigned int *)InputBuffer + 4));
      }
      else
      {
        if( (_DWORD)v10 != 59 )
        {
          if( (_DWORD)v10 == 60 )
          {
            if( !OutputBuffer )
              return -1073741789;
            PopAcquireTransitionLock();
            PagesFromHiberFile = PopReadResumeContext(&v95, &v98);
            PopReleaseTransitionLock();
            if( PagesFromHiberFile < 0 )
              return PagesFromHiberFile;
            *ReturnBuffer = v98;
            *(_DWORD *)ReturnBufferLength = v95;
          }
          else
          {
            if( (_DWORD)v10 != 61 || v12 < 0xC )
              return -1073741811;
            if( !OutputBuffer )
              return -1073741789;
            PopAcquireTransitionLock();
            PagesFromHiberFile = PopReadPagesFromHiberFile(
                                   *((unsigned int *)InputBuffer + 2),
                                   1ui64,
                                   (_XSTATE_FEATURE *)ReturnBuffer);
            PopReleaseTransitionLock();
            if( PagesFromHiberFile < 0 )
            {
              *ReturnBuffer = 0i64;
              return PagesFromHiberFile;
            }
            *(_DWORD *)ReturnBufferLength = 4096;
          }
          *v93 = 1;
          return 0;
        }
        if( v12 < 0x18 )
          return -1073741811;
        return PoDirectedDripsClearDeviceFlags(*((_QWORD *)InputBuffer + 1), *((unsigned int *)InputBuffer + 4));
      }
    }
    goto LABEL_356;
  }
  if( (_DWORD)v10 == 38 )
    goto LABEL_60;
  if( (int)v10 <= 22 )
  {
    if( (_DWORD)v10 != 22 )
    {
      if( (int)v10 > 6 )
      {
        v15 = v10 - 7;
        if( v15 )
        {
          v16 = v15 - 1;
          if( v16 )
          {
            v17 = v16 - 10;
            if( v17 )
            {
              v18 = v17 - 1;
              if( v18 )
              {
                v19 = v18 - 1;
                if( v19 )
                {
                  if( v19 == 1 )
                  {
                    if( v12 < 0x60 || !*((_QWORD *)InputBuffer + 1) && !OutputBuffer )
                      return -1073741789;
                    if( *((_DWORD *)InputBuffer + 6) == 412 )
                    {
                      if( *((_BYTE *)InputBuffer + 88) || !*((_DWORD *)InputBuffer + 4) )
                      {
                        *(&stru_140CF2E80 + 1639) = 0;
                      }
                      else
                      {
                        *(&stru_140CF2E80 + 1637) = *((_DWORD *)InputBuffer + 8);
                        *(&stru_140CF2E80 + 1639) = 1;
                      }
                    }
                    v20 = 0i64;
                    if( OutputBuffer )
                    {
                      v20 = ExAllocatePoolWithTag(1ui64, 8ui64, 544040269i64);
                      if( !v20 )
                        return -1073741670;
                    }
                    v21 = PopSetWatchdog(
                            *((VOID **)InputBuffer + 1),
                            (UINT64 *)InputBuffer + 2,
                            *((_BYTE *)InputBuffer + 88));
                    if( !OutputBuffer )
                      return 0;
                    *v20 = v21;
                    *ReturnBuffer = v20;
                    *(_DWORD *)ReturnBufferLength = 8;
                    goto LABEL_51;
                  }
                }
                else if( v12 == 20 && !OutputBuffer )
                {
                  TtmNotifySessionTerminalInput(
                    *((unsigned int *)InputBuffer + 2),
                    *((unsigned int *)InputBuffer + 3),
                    *((_BYTE *)InputBuffer + 16));
                  return 0;
                }
                return -1073741811;
              }
              if( v12 != 20 || OutputBuffer )
                return -1073741811;
              TtmNotifySessionPowerStateChange(*((unsigned int *)InputBuffer + 2), *((_BYTE *)InputBuffer + 12));
              v61 = *((_BYTE *)InputBuffer + 12);
              PopAcquirePolicyLock();
              if( *((_BYTE *)InputBuffer + 13) )
              {
                PopSetDisplayStatus((_MONITOR_DISPLAY_STATE)(v61 != 0));
                PopUpdateConsoleDisplayState((_MONITOR_DISPLAY_STATE)(v61 != 0));
                if( v61 )
                  PopPowerAggregatorNotifyDisplayPoweredOn();
              }
              PopDiagTraceSessionDisplayStateChange(
                *((_BYTE *)InputBuffer + 12) == 0,
                *((unsigned int *)InputBuffer + 2),
                *((unsigned __int8 *)InputBuffer + 13),
                *((unsigned int *)InputBuffer + 4));
              PagesFromHiberFile = 0;
LABEL_189:
              PopReleasePolicyLock();
              return PagesFromHiberFile;
            }
            if( PopPlatformAoAc )
            {
              if( OutputBuffer )
              {
                v62 = ExAllocatePoolWithTag(1ui64, 0x3B0ui64, 544040269i64);
                v63 = v62;
                if( !v62 )
                  return -1073741670;
                PagesFromHiberFile = PopQueryBootSessionStandbyActivationInfo((PDC_BOOT_SESSION_STANDBY_ACTIVATION_INFO *)v62);
                if( PagesFromHiberFile < 0 )
                  return PagesFromHiberFile;
                *ReturnBuffer = v63;
                *(_DWORD *)ReturnBufferLength = 944;
LABEL_124:
                *v93 = 1;
                return PagesFromHiberFile;
              }
              return -1073741789;
            }
            return -1073741637;
          }
          if( v12 < 8 )
            return -1073741789;
          if( OutputBuffer )
            return -1073741811;
          return PopUpdateBackgroundCoolingStatus(*((_BYTE *)InputBuffer + 8));
        }
        if( v12 < 8 || !OutputBuffer )
          return -1073741789;
        v52 = ExAllocatePoolWithTag(1ui64, 0x20ui64, 544040269i64);
        if( !v52 )
          return -1073741670;
        *(_OWORD *)v52 = 0i64;
        *((_OWORD *)v52 + 1) = 0i64;
        *(_OWORD *)v52 = *(_OWORD *)&PopBsdPowerTransitionAtBoot;
        v53 = xmmword_140C54080;
        goto LABEL_129;
      }
      if( (_DWORD)v10 == 6 )
      {
        if( v12 < 0xC )
          return -1073741789;
        if( OutputBuffer )
          return -1073741811;
        return PopNetUpdateStandbyRequest(*((_BYTE *)InputBuffer + 8));
      }
      if( !(_DWORD)v10 )
      {
        if( v12 < 0x20 || !OutputBuffer )
          return -1073741789;
        v50 = ExAllocatePoolWithTag(1ui64, 0x10ui64, 544040269i64);
        v51 = v50;
        if( !v50 )
          return -1073741670;
        PagesFromHiberFile = PopFxPlatformRegisterInterface(
                               (_POFX_PLATFORM_INTERFACE_REGISTER_INPUT *)InputBuffer,
                               (_POFX_PLATFORM_INTERFACE_REGISTER_OUTPUT *)v50);
        if( PagesFromHiberFile >= 0 )
        {
          *ReturnBuffer = v51;
          *(_DWORD *)ReturnBufferLength = 16;
          goto LABEL_124;
        }
        goto LABEL_170;
      }
      v41 = v10 - 1;
      if( v41 )
      {
        v42 = v41 - 1;
        if( v42 )
        {
          v43 = v42 - 1;
          if( !v43 )
          {
            if( v12 >= 0x10 )
            {
              if( !OutputBuffer && (*(&stru_140C23628 + 2328) & 1) != 0 )
              {
                PopUpdateSmartUserPresencePredictions(*((_QWORD *)InputBuffer + 1), PopDozeTimerCancelledReasonUnknown);
                return 0;
              }
              return -1073741811;
            }
            return -1073741789;
          }
          v44 = v43 - 1;
          if( v44 )
          {
            if( v44 != 1 )
              return -1073741811;
            if( v12 >= 0xC )
            {
              if( !OutputBuffer )
              {
                PoLatencySensitivityHint(*((unsigned int *)InputBuffer + 2));
                return 0;
              }
              return -1073741811;
            }
            return -1073741789;
          }
          if( v12 < 8 || !OutputBuffer )
            return -1073741789;
          v45 = ExAllocatePoolWithTag(1ui64, 1ui64, 544040269i64);
          if( !v45 )
            return -1073741670;
          if( !PopPlatformAoAc || (v67 = RtlIsMultiSessionSku() == 0, PowerButtonBugcheckEnabled = 1, v67) )
            PowerButtonBugcheckEnabled = 0;
LABEL_104:
          *(_BYTE *)v45 = PowerButtonBugcheckEnabled;
          *ReturnBuffer = v45;
          *(_DWORD *)ReturnBufferLength = 1;
          *FreeReturnBuffer = 1;
          return 0;
        }
        *(&stru_140C23628 + 5041) = 1;
        v48 = (char *)&stru_140C23628 + 5041;
        v49 = &WNF_PO_VIDEO_INITIALIALIZED;
LABEL_116:
        LODWORD(CheckStamp) = 0;
        LODWORD(MatchingChangeStamp) = 0;
        return ZwUpdateWnfStateData(v49, v48, 1ui64, 0i64, 0i64, MatchingChangeStamp, CheckStamp);
      }
      if( !OutputBuffer )
        return -1073741789;
      v57 = ExAllocatePoolWithTag(1ui64, 8ui64, 544040269i64);
      v51 = v57;
      if( !v57 )
        return -1073741670;
      BrandedFrequency = PopS0LowPowerIdleInfo((__int64)v57);
LABEL_168:
      PagesFromHiberFile = BrandedFrequency;
      if( BrandedFrequency >= 0 )
      {
        *ReturnBuffer = v51;
        *(_DWORD *)ReturnBufferLength = 8;
        goto LABEL_124;
      }
LABEL_170:
      v60 = 544040269;
      v11 = v51;
      goto LABEL_171;
    }
    if( v12 < 8 || !OutputBuffer )
      return -1073741789;
    v64 = ExAllocatePoolWithTag(1ui64, 0x30ui64, 544040269i64);
    if( !v64 )
      return -1073741670;
    *(_OWORD *)v64 = 0i64;
    *((_OWORD *)v64 + 1) = 0i64;
    *((_OWORD *)v64 + 2) = 0i64;
    *(_OWORD *)v64 = PopBsdPhysicalPowerButtonInfoAtBoot;
    *((_OWORD *)v64 + 1) = xmmword_140C54050;
    v65 = xmmword_140C54060;
LABEL_202:
    *((_OWORD *)v64 + 2) = v65;
    *ReturnBuffer = v64;
    *(_DWORD *)ReturnBufferLength = 48;
    goto LABEL_51;
  }
  if( (int)v10 > 29 )
  {
    if( (_DWORD)v10 != 30 )
    {
      if( (int)v10 <= 30 )
        return -1073741811;
      if( (int)v10 > 32 )
      {
        if( (_DWORD)v10 == 33 )
          return -1073741637;
        if( (int)v10 <= 33 )
          return -1073741811;
        if( (int)v10 > 35 )
        {
          if( (_DWORD)v10 != 36 )
          {
            if( (_DWORD)v10 != 37 )
              return -1073741811;
            if( v12 < 8 || !OutputBuffer )
              return -1073741789;
            v69 = ExAllocatePoolWithTag(1ui64, 4ui64, 544040269i64);
            if( !v69 )
              return -1073741670;
            *(_DWORD *)v69 = SystemAction;
            *ReturnBuffer = v69;
            *(_DWORD *)ReturnBufferLength = 4;
            goto LABEL_109;
          }
LABEL_245:
          if( PopIsRunningInVm() )
          {
            if( v12 >= 0xC )
            {
              if( !OutputBuffer )
              {
                v70 = *((_BYTE *)InputBuffer + 8);
                PopAcquireRwLockExclusive(&PopEsLock);
                PopEsEnabledOnHost = v70;
                PopReleaseRwLock(&PopEsLock);
                PopEsQueueStateEvaluation(0);
                return 0;
              }
              return -1073741811;
            }
            return -1073741789;
          }
          return -1073741637;
        }
      }
LABEL_60:
      if( v12 != 24 )
        return -1073741811;
      if( OutputBuffer )
      {
        v72 = *((_DWORD *)InputBuffer + 2);
        if( !v72 )
          return -1073741811;
        v33 = 4i64 * v72;
        if( v33 > 0xFFFFFFFF )
          return -1073741675;
        v94 = (INT64)ExAllocatePoolWithTag(1ui64, (unsigned int)v33, 544040269i64);
        v32 = (VOID *)v94;
        if( !v94 )
          return -1073741670;
      }
      else
      {
        v32 = (VOID *)v94;
        LODWORD(v33) = 0;
      }
      if( (_DWORD)v10 == 31 )
      {
        if( *((_DWORD *)InputBuffer + 2) )
        {
          v34 = PopBootStatGet((INT64)InputBuffer, (INT64)v32);
          goto LABEL_67;
        }
      }
      else if( (_DWORD)v10 == 32 )
      {
        if( *((_DWORD *)InputBuffer + 2) )
        {
          v34 = PopBootStatSet((INT64)InputBuffer, (INT64)v32);
          goto LABEL_67;
        }
      }
      else
      {
        if( (_DWORD)v10 != 34 )
        {
          if( (_DWORD)v10 == 35 )
          {
            v34 = PopBootStatRestoreDefaults();
          }
          else
          {
            if( (_DWORD)v10 != 38 )
            {
              PagesFromHiberFile = -1073741637;
LABEL_68:
              if( PagesFromHiberFile >= 0 )
              {
                if( v32 )
                {
                  v73 = v93;
                  v11 = 0i64;
                  *ReturnBuffer = v32;
                  *(_DWORD *)ReturnBufferLength = v33;
                  *v73 = 1;
                }
                else
                {
                  v11 = (void *)v94;
                }
                PagesFromHiberFile = 0;
                goto LABEL_72;
              }
              goto LABEL_117;
            }
            v34 = PopBootStatUnlock();
          }
LABEL_67:
          PagesFromHiberFile = v34;
          goto LABEL_68;
        }
        if( *((_DWORD *)InputBuffer + 2) )
        {
          v34 = PopBootStatCheckIntegrity((INT64)InputBuffer);
          goto LABEL_67;
        }
      }
      PagesFromHiberFile = -1073741811;
LABEL_117:
      v11 = (void *)v94;
LABEL_72:
      if( !v11 )
        return PagesFromHiberFile;
      v60 = 0;
LABEL_171:
      ExFreePoolWithTag(v11, v60);
      return PagesFromHiberFile;
    }
    if( v12 < 8 || !OutputBuffer )
      return -1073741789;
    v71 = ExAllocatePoolWithTag(1ui64, 3ui64, 544040269i64);
    if( !v71 )
      return -1073741670;
    *((_BYTE *)v71 + 2) = 0;
    *(_BYTE *)v71 = PpmPerfQosSupportedAndConfigured;
    *((_BYTE *)v71 + 1) = PpmPerfSchedulerDirectedPerfStatesSupported;
    *((_BYTE *)v71 + 2) = PpmPerfQosGroupPolicyDisable != 0;
    *ReturnBuffer = v71;
    *(_DWORD *)ReturnBufferLength = 3;
LABEL_109:
    *FreeReturnBuffer = 1;
    return 0;
  }
  if( (_DWORD)v10 == 29 )
  {
    if( v12 < 8 || !OutputBuffer )
      return -1073741789;
    v64 = ExAllocatePoolWithTag(1ui64, 0x30ui64, 544040269i64);
    if( !v64 )
      return -1073741670;
    *(_OWORD *)v64 = 0i64;
    *((_OWORD *)v64 + 1) = 0i64;
    *((_OWORD *)v64 + 2) = 0i64;
    *(_OWORD *)v64 = PopFirmwareResetReason;
    *((_OWORD *)v64 + 1) = xmmword_140C540C0;
    v65 = xmmword_140C540D0;
    goto LABEL_202;
  }
  v36 = v10 - 23;
  if( !v36 )
  {
    if( v12 != 12 )
      return -1073741811;
    PopUpdateExternalDisplayState(*((_BYTE *)InputBuffer + 8));
    return 0;
  }
  v37 = v36 - 1;
  if( !v37 )
  {
    if( v12 < 0x28 )
      return -1073741789;
    if( OutputBuffer )
      return -1073741811;
    v68 = *((_DWORD *)InputBuffer + 3);
    if( *(&stru_140C23628 + 5040)
      || v68 != -1
      && (LODWORD(CheckStamp) = 0,
          LODWORD(MatchingChangeStamp) = 0,
          *(&stru_140C23628 + 5040) = 1,
          ZwUpdateWnfStateData(
            &WNF_PO_BASIC_BRIGHTNESS_ENGINE_DISABLED,
            (char *)&stru_140C23628 + 5040,
            1ui64,
            0i64,
            0i64,
            MatchingChangeStamp,
            CheckStamp),
          PopDiagTraceEventNoPayload(&POP_ETW_EVENT_BASIC_BRIGHTNESS_ENGINE_OFF),
          *(&stru_140C23628 + 5040)) )
    {
      if( v68 == -1 )
        return -1073741637;
    }
    InputBuffera[0] = *((_DWORD *)InputBuffer + 2);
    InputBuffera[1] = *((_DWORD *)InputBuffer + 3);
    InputBuffera[2] = *((_DWORD *)InputBuffer + 4);
    InputBuffera[3] = *((_DWORD *)InputBuffer + 5);
    InputBuffera[4] = *((_DWORD *)InputBuffer + 6);
    InputBuffera[5] = *((_DWORD *)InputBuffer + 7);
    InputBuffera[6] = *((_DWORD *)InputBuffer + 8);
    InputBuffera[7] = *((_DWORD *)InputBuffer + 9);
    PopBroadcastSessionInfo(PowerInfo_Brightness, 0x20ui64, InputBuffera);
    return 0;
  }
  v38 = v37 - 1;
  if( !v38 )
  {
    if( v12 >= 0xC )
    {
      if( !OutputBuffer )
      {
        if( *((_BYTE *)InputBuffer + 8) )
          PopScreenOn();
        else
          PopScreenOff(MonitorRequestReasonMax|MonitorRequestReasonRemoteConnection);
        return 0;
      }
      return -1073741811;
    }
    return -1073741789;
  }
  v39 = v38 - 1;
  if( v39 )
  {
    v40 = v39 - 1;
    if( v40 )
    {
      if( v40 == 1 && v12 == 12 )
      {
        Data = *((_DWORD *)InputBuffer + 2);
        PopSetPowerSettingValueAcDc((_LPCGUID)&GUID_ADAPTIVE_INPUT_CONTROLLER_STATE, 4ui64, &Data);
        return 0;
      }
      return -1073741811;
    }
    if( v12 >= 0x10 )
    {
      if( !OutputBuffer )
      {
        PopTransitionCheckpoint(*((unsigned int *)InputBuffer + 2));
        return 0;
      }
      return -1073741811;
    }
    return -1073741789;
  }
  if( v12 < 0xC )
    return -1073741789;
  if( OutputBuffer )
    return -1073741811;
  PpmAcquireLock((_PPM_LOCK *)((char *)&stru_140C23628 + 1048));
  v66 = PpmPerfQosDisableRefcount;
  if( *((_BYTE *)InputBuffer + 8) )
  {
    if( PpmPerfQosDisableRefcount == -1 )
    {
      PagesFromHiberFile = -1073741675;
    }
    else
    {
      v66 = PpmPerfQosDisableRefcount + 1;
      PagesFromHiberFile = 0;
      ++PpmPerfQosDisableRefcount;
    }
    v67 = v66 == 1;
  }
  else
  {
    if( PpmPerfQosDisableRefcount )
    {
      v66 = PpmPerfQosDisableRefcount - 1;
      PagesFromHiberFile = 0;
      --PpmPerfQosDisableRefcount;
    }
    else
    {
      PagesFromHiberFile = -1073741637;
    }
    v67 = v66 == 0;
  }
  if( v67 )
    PpmPerfUpdateDomainPolicy(0);
  else
    PpmReleaseLock((INT64 *)&stru_140C23628 + 131);
  return PagesFromHiberFile;
}

Referenced by:

NtPowerInformation