PpmCheckRun

VOID __stdcall PpmCheckRun(KDPC *Dpc, PVOID Context, PVOID Arg1, PVOID Arg2){
  int v4; 
  unsigned __int8(__fastcall *v5)(__int64, PVOID, _QWORD, PVOID); 
  __int64 v6; 
  EVENT_DESCRIPTOR *v7; 
  UINT64 v8; 
  UINT64 UserDataCount; 
  EVENT_DATA_DESCRIPTOR UserData; 
  v4 = PpmCheckPipelineIndex;
  v5 = *(unsigned __int8(__fastcall **)(__int64, PVOID, _QWORD, PVOID))(PpmCheckPipeline
                                                                       + 8i64 * (unsigned int)PpmCheckPipelineIndex);
  if( v5 )
  {
    while( 1 )
    {
      v6 = (unsigned int)(v4 + 1);
      PpmCheckPipelineIndex = v6;
      if( !v5(v6, Context, v5, Arg2) )
        break;
      v4 = PpmCheckPipelineIndex;
      v5 = *(unsigned __int8(__fastcall **)(__int64, PVOID, _QWORD, PVOID))(PpmCheckPipeline
                                                                           + 8i64 * (unsigned int)PpmCheckPipelineIndex);
      if( !v5 )
        goto LABEL_4;
    }
  }
  else
  {
LABEL_4:
    PpmReleaseLock(&PpmPerfPolicyLock);
    if( PpmEtwRegistered )
    {
      v8 = PpmEtwHandle;
      if( EtwEventEnabled(PpmEtwHandle, (EVENT_DESCRIPTOR *)&PPM_ETW_PERF_CHECK_STOP, v7) )
      {
        *(_QWORD *)&UserData.Size = 8i64;
        UserData.Ptr = (unsigned __int64)&PpmCheckTime;
        LODWORD(UserDataCount) = 1;
        EtwWriteEx(v8, (EVENT_DESCRIPTOR *)&PPM_ETW_PERF_CHECK_STOP, 0i64, 0i64, 0i64, 0i64, UserDataCount, &UserData);
      }
    }
  }
}

Referenced by:

PpmCheckStart