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