PpmEventTraceProfiles

VOID __stdcall PpmEventTraceProfiles(UINT8 Rundown){
  EVENT_DESCRIPTOR *v1; 
  EVENT_DESCRIPTOR *v3; 
  _QWORD *v4; 
  unsigned __int8 v5; 
  STRSAFE_PCNZWCH *v6; 
  unsigned __int64 *v7; 
  unsigned __int64 v8; 
  unsigned __int64 v9; 
  EVENT_DESCRIPTOR *v10; 
  size_t pcchLength; 
  unsigned __int64 v12; 
  unsigned __int64 v13; 
  unsigned __int64 v14; 
  __int64 v15; 
  EVENT_DATA_DESCRIPTOR UserData; 
  unsigned __int64 *v17; 
  int v18; 
  int v19; 
  unsigned __int64 *v20; 
  int v21; 
  int v22; 
  __int64 v23; 
  int v24; 
  int v25; 
  __int64 v26; 
  int v27; 
  int v28; 
  unsigned __int64 *v29; 
  int v30; 
  int v31; 
  unsigned __int64 *v32; 
  int v33; 
  int v34; 
  unsigned __int64 *v35; 
  int v36; 
  int v37; 
  unsigned __int64 *v38; 
  int v39; 
  int v40; 
  pcchLength = 0i64;
  if( PpmEtwRegistered )
  {
    v3 = (EVENT_DESCRIPTOR *)&PPM_ETW_PROCESSOR_PROFILE_REGISTERED;
    if( Rundown )
      v3 = (EVENT_DESCRIPTOR *)&PPM_ETW_PROCESSOR_PROFILE_RUNDOWN;
    if( EtwEventEnabled(PpmEtwHandle, v3, v1) )
    {
      v4 = PpmCurrentProfile;
      v5 = 0;
      v15 = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
      PpmEndProfileAccumulation(PpmCurrentProfile, *(INT64 *)&KUSER_SHARED_DATA.InterruptTime.LowPart);
      while( 1 )
      {
        RtlStringCchLengthW(*v6, 0x7FFFFFFFui64, &pcchLength);
        v8 = *v7;
        UserData.Reserved = 0;
        v19 = 0;
        v22 = 0;
        v25 = 0;
        v28 = 0;
        UserData.Ptr = v8;
        v18 = 1;
        v21 = 1;
        v24 = 4;
        UserData.Size = 2 * pcchLength + 2;
        v17 = v7 + 1;
        v20 = v7 + 4;
        v23 = (__int64)v7 + 28;
        v26 = (__int64)v7 + 12;
        v27 = 16;
        v12 = v7[691] / 0xA;
        v13 = v7[692] / 0xA;
        v9 = v7[693];
        v31 = 0;
        v34 = 0;
        v37 = 0;
        v40 = 0;
        v29 = v7 + 690;
        v32 = &v12;
        v35 = &v13;
        v38 = &v14;
        v14 = v9 / 0xA;
        v10 = (EVENT_DESCRIPTOR *)&PPM_ETW_PROCESSOR_PROFILE_RUNDOWN;
        v30 = 8;
        v33 = 8;
        v36 = 8;
        v39 = 8;
        if( !Rundown )
          v10 = (EVENT_DESCRIPTOR *)&PPM_ETW_PROCESSOR_PROFILE_REGISTERED;
        EtwWrite(PpmEtwHandle, v10, 0i64, 9ui64, &UserData);
        if( v5 == PpmProfileCount )
          break;
        v6 = (STRSAFE_PCNZWCH *)(PpmProfiles + 5552i64 * v5++);
      }
      v4[689] = v15;
    }
  }
}

Referenced by:

PpmEventTraceControlCallback
PpmRegisterProfiles