PopPolicyWorkerAction
VOID __stdcall PopPolicyWorkerAction(_KEXCEPTION_VERIFY *Verify){
char v1;
__int64 v2;
_SYSTEM_POWER_STATE v3;
unsigned int v4;
POWER_POLICY_DEVICE_TYPE v5;
unsigned int v6;
__int64 **i;
UINT64 v8;
__int64 v9;
__int64 v10;
unsigned int v11;
int v12;
__int64 *v13;
int v14;
int v15;
v1 = 0;
PopAcquirePolicyLock();
qword_140C23410 = (__int64)KeGetCurrentThread();
if( byte_140C23261 == 1 )
{
v2 = SystemAction;
v3 = *(&SystemAction + 1);
v4 = Flags;
PopSetPowerActionState(2u);
v5 = SleepReason;
v6 = PopIssueActionRequest(0, (POWER_ACTION)v2, v3, v4);
v1 = 1;
if( (PopAction & 2) != 0 )
{
if( *(&SystemAction + 1) == PowerActionShutdownReset )
v5 = PolicyImmediateDozeS4;
SleepReason = v5;
LODWORD(Flags) = Flags & 0x7FFFFFDC | 0x80000020;
LOBYTE(PopAction) = PopAction & 0xFD;
PopSetPowerActionState(1u);
v8 = 2i64;
}
else
{
if( (xmmword_140CFB490 & 0x8000) != 0 )
{
v12 = 0;
v15 = 0;
v13 = &v10;
v10 = v2;
v11 = v6;
v14 = 16;
EtwTraceKernelEvent((__int64)&v13, 1u, 0x80008000, 0x1223u, 0x401802u);
}
HIDWORD(Flags) = v6;
PopSetPowerActionState(0);
for( i = (__int64 **)*(&stru_140C23628 + 179); i != (__int64 **)((char *)&stru_140C23628 + 1432); i = (__int64 **)*i )
PopCompleteAction((_POP_ACTION_TRIGGER *)i[2], v6);
v8 = 1i64;
}
PopGetPolicyWorker(v8);
}
qword_140C23410 = 0i64;
PopReleasePolicyLock();
if( v1 && PoPdcCallbacks )
PoPdcCallbacks(v9);
if( KeGetCurrentThread()->WaitBlock[3].SpareLong )
__fastfail(0x20u);
}Referenced by:
No references.