PopIdleChooseDozeS4Time

CHAR __fastcall PopIdleChooseDozeS4Time(UINT64 *a1, INT64 *a2){
  UINT64 v2; 
  CHAR v3; 
  int v4; 
  unsigned __int64 v5; 
  v2 = 0i64;
  v3 = 0;
  v4 = 0;
  v5 = 10000000i64 * *((unsigned int *)PopPolicy + 22);
  if( dword_140C231D0 )
  {
    v3 = 1;
    LOBYTE(v4) = dword_140C231D0 != 1;
    v4 += 3;
  }
  else if( qword_140C231C8 > *(__int64 *)&KUSER_SHARED_DATA.SystemTime.LowPart && PopSmartUserPresenceAction == 1 )
  {
    if( *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart - qword_140C231F8 <= 10000000
                                                                                * (unsigned __int64)(unsigned int)PopSmartUserPresenceGracePeriod )
      v2 = 10000000i64 * (unsigned int)PopSmartUserPresenceGracePeriod
         - (*(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart
          - qword_140C231F8);
    if( (__int64)(v2 + *(_QWORD *)&KUSER_SHARED_DATA.SystemTime.LowPart) < qword_140C231C8
                                                                          - 10000000
                                                                          * ((unsigned int)PopSmartUserPresenceWakeOffset
                                                                           + 60i64)
      && (!v2 || !v5 || v2 < v5) )
    {
      v3 = 1;
      v4 = 2;
    }
    v2 = -(__int64)v2;
  }
  if( v5 && !v4 )
  {
    v3 = 1;
    v2 = -10000000i64 * *((unsigned int *)PopPolicy + 22);
    v4 = 1;
  }
  *a1 = v2;
  if( a2 )
    *(_DWORD *)a2 = v4;
  return v3;
}

Referenced by:

PopIdleArmAoAcDozeS4Timer