PpmCheckStart

VOID __fastcall PpmCheckStart(INT64 a1){
  __int64 v1; 
  __int64 v2; 
  EVENT_DESCRIPTOR *v3; 
  int v4; 
  UINT64 v5; 
  int v6; 
  int v7; 
  UINT64 UserDataCount; 
  int v9; 
  UINT64 v10; 
  INT64 CurrentQpc; 
  EVENT_DATA_DESCRIPTOR UserData; 
  UINT64 *v13; 
  __int64 v14; 
  int *v15; 
  __int64 v16; 
  v1 = (int)a1;
  PpmCheckCurrentPipelineId = a1;
  LODWORD(v2) = RtlGetInterruptTimePrecise(&CurrentQpc);
  PpmCheckTime = v2;
  v4 = 0;
  v10 = PpmCheckLastExecutionTime;
  v9 = v1;
  if( PpmEtwRegistered )
  {
    v5 = PpmEtwHandle;
    if( EtwEventEnabled(PpmEtwHandle, (EVENT_DESCRIPTOR *)&PPM_ETW_PERF_CHECK_START, v3) )
    {
      *(_QWORD *)&UserData.Size = 8i64;
      UserData.Ptr = (unsigned __int64)&PpmCheckTime;
      v14 = 8i64;
      v13 = &v10;
      v16 = 4i64;
      v15 = &v9;
      LODWORD(UserDataCount) = 3;
      EtwWriteEx(v5, (EVENT_DESCRIPTOR *)&PPM_ETW_PERF_CHECK_START, 0i64, 0i64, 0i64, 0i64, UserDataCount, &UserData);
    }
  }
  PpmCheckPipeline = *(_QWORD *)(PpmCheckPipelines + 8 * v1);
  if( !PpmCheckPipeline )
    PpmCheckPipeline = *(_QWORD *)PpmCheckPipelines;
  v6 = 0;
  PpmCheckPipelineIndex = 0;
  if( PpmPerfLatencyBoostExpiration >= *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart )
    v6 = 1;
  if( PpmPerfDeadlineBoostExpiration >= *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart )
    v4 = 1;
  if( PpmCheckLatencyBoostActive != v6 || PpmCheckDeadlineBoostActive != v4 )
  {
    PpmPerfSetAllDomainsToUpdate();
    PpmCheckLatencyBoostActive = v7;
    PpmCheckDeadlineBoostActive = v4;
  }
  PpmCheckRun(0i64, 0i64, 0i64, 0i64);
}

Referenced by:

PpmCheckCustomRun
PpmCheckPeriodicStart