PsQueryTotalCycleTimeProcess

NTSTATUS __fastcall PsQueryTotalCycleTimeProcess(INT64 a1, UINT64 *a2){
  _ETHREAD *CurrentThread; 
  _EX_PUSH_LOCK *v5; 
  __int64 v6; 
  _QWORD **v7; 
  _QWORD *v8; 
  __int64 v9; 

  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  KeFlushProcessWriteBuffers(1u);
  KeUpdateTotalCyclesCurrentThread(&CurrentThread->Tcb, a2);
  --CurrentThread->Tcb.KernelApcDisable;
  v5 = (_EX_PUSH_LOCK *)(a1 + 2144);
  ExAcquirePushLockSharedEx((_EX_PUSH_LOCK *)(a1 + 2144), 0i64);
  v6 = *(_QWORD *)(a1 + 864);
  v7 = (_QWORD **)(a1 + 1504);
  v8 = *v7;
  while( v8 != v7 )
  {
    v9 = *(v8 - 148);
    v8 = (_QWORD *)*v8;
    LODWORD(v6) = v9 + v6;
  }
  if( _InterlockedCompareExchange64(&v5->_bf_0, 0i64, 17i64) != 17 )
    ExfReleasePushLockShared(v5);
  KeAbPostRelease(v5);
  KeLeaveCriticalRegionThread(&CurrentThread->Tcb);
  return v6;
}

Referenced by:

NtQueryInformationProcess