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.