PopExecuteSystemIdleAction

NTSTATUS __stdcall PopExecuteSystemIdleAction(_LOADER_PARAMETER_BLOCK *LoaderBlock){
  char v1; 
  __int64 v2; 
  UINT8 v3; 
  __int64 v4; 
  unsigned int v5; 
  unsigned __int64 v6; 
  char v7; 
  unsigned int updated; 
  POWER_ACTION_POLICY ActionPolicy; 
  _POP_ACTION_TRIGGER Trigger; 

  v3 = v1;
  memset(&Trigger, 0, sizeof(Trigger));
  v4 = v2;
  v5 = (unsigned int)LoaderBlock;
  v6 = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart / 0x989680ui64;
  if( (_DWORD)LoaderBlock == 1 )
  {
    v7 = v1;
    goto LABEL_10;
  }
  if( (int)LoaderBlock <= 2 )
    goto LABEL_8;
  if( (int)LoaderBlock > 4 )
  {
    if( (_DWORD)LoaderBlock == 5 )
    {
      v7 = 0;
LABEL_10:
      updated = PopUpdatePdcSystemIdleState(v7);
      goto LABEL_11;
    }
LABEL_8:
    updated = -1073741811;
    goto LABEL_11;
  }
  updated = 0;
  if( v1 )
  {
    Trigger.Type = PolicySystemIdle;
    Trigger.Flags = 128;
    ActionPolicy.EventCode = 0;
    ActionPolicy.Action = PowerActionHibernate;
    ActionPolicy.Flags = -2147483612;
    PopAcquirePolicyLock();
    PopExecutePowerAction(&Trigger, 0i64, &ActionPolicy, PowerSystemHibernate, SubstituteLightestOverallDownwardBounded);
    PopReleasePolicyLock();
  }
LABEL_11:
  *(_QWORD *)v4 = v6;
  *(_DWORD *)(v4 + 8) = v5;
  *(_BYTE *)(v4 + 12) = v3;
  *(_DWORD *)(v4 + 16) = updated;
  PopDiagTraceSystemIdleAction(v5, v3, (NPTEXTMETRIC *)updated);
  return updated;
}

Referenced by:

PopSystemIdleWorker