PpmResetProcessorIdleAccounting

VOID __stdcall PpmResetProcessorIdleAccounting(_PROC_IDLE_ACCOUNTING *Accounting, UINT64 StartTime){
  unsigned int StateCount; 
  unsigned int ResetCount; 
  _PROC_IDLE_STATE_BUCKET *IdleTimeBuckets; 
  __int64 v7; 
  __int64 v8; 
  unsigned __int64 *p_MinTime; 
  unsigned __int64 *v10; 
  __int64 v11; 

  StateCount = Accounting->StateCount;
  ResetCount = Accounting->ResetCount;
  *(_OWORD *)&Accounting->StateCount = 0i64;
  *(_OWORD *)&Accounting->StartTime = 0i64;
  *(_QWORD *)&Accounting->TimeUnit = 0i64;
  if( StateCount )
  {
    IdleTimeBuckets = Accounting->State[0].IdleTimeBuckets;
    v7 = StateCount;
    v8 = StateCount;
    do
    {
      *(_OWORD *)&Accounting->StateCount = 0i64;
      *(_OWORD *)&Accounting->StartTime = 0i64;
      *(_QWORD *)&Accounting->TimeUnit = 0i64;
      memset(IdleTimeBuckets, 0i64, 0x340u);
      IdleTimeBuckets = (_PROC_IDLE_STATE_BUCKET *)((char *)IdleTimeBuckets + 1000);
      --v8;
    }
    while( v8 );
    p_MinTime = &Accounting->State[0].IdleTimeBuckets[0].MinTime;
    do
    {
      *(p_MinTime - 19) = -1i64;
      v10 = p_MinTime;
      v11 = 26i64;
      do
      {
        *v10 = -1i64;
        v10 += 4;
        --v11;
      }
      while( v11 );
      p_MinTime += 125;
      --v7;
    }
    while( v7 );
  }
  Accounting->TimeUnit = PpmIdleBucketTimeInQpc;
  Accounting->StateCount = StateCount;
  Accounting->ResetCount = ResetCount + 1;
  Accounting->StartTime = StartTime;
}

Referenced by:

PoIdle
PpmResetIdlePolicy