PopAssessSystemIdleEvent

INT64 __fastcall PopAssessSystemIdleEvent(INT64 a1, UINT64 a2, UINT64 *a3){
  unsigned __int64 v5; 
  unsigned int a5; 
  UINT8 v7; 
  unsigned __int64 v8; 
  unsigned __int64 v9; 
  INT64 v10; 
  v5 = (unsigned int)a2;
  a5 = 0;
  v7 = *(_BYTE *)(a1 + 16);
  v8 = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart / 0x989680ui64;
  v9 = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart / 0x989680ui64 - *(_QWORD *)(a1 + 8);
  if( v7 )
  {
    *a3 = -1i64;
  }
  else
  {
    *a3 = v9;
    if( (_DWORD)v5 )
    {
      if( v9 < v5 )
        a5 = 1;
    }
    else
    {
      a5 = 2;
    }
  }
  *(_QWORD *)(a1 + 24) = v8;
  v10 = *(unsigned int *)a1;
  *(_QWORD *)(a1 + 32) = v9;
  *(_QWORD *)(a1 + 40) = v5;
  *(_BYTE *)(a1 + 48) = v7;
  *(_DWORD *)(a1 + 52) = a5;
  PopDiagTraceSystemIdleEventAssessment(v10, v9, (EVENT_DESCRIPTOR *)v5, v7, a5);
  return a5;
}

Referenced by:

PopIsSystemIdle