PpmEventPlatformVetoRundown

VOID __stdcall PpmEventPlatformVetoRundown(){
  EVENT_DESCRIPTOR *v0; 
  UINT64 v1; 
  __int64 v2; 
  UINT64 v3; 
  UINT64 v4; 
  unsigned int v5; 
  unsigned __int8 v6; 
  unsigned __int64 v7; 
  __int64 v8; 
  _QWORD **v9; 
  _QWORD *v10; 
  UINT64 UserDataCount; 
  unsigned int i; 
  EVENT_DATA_DESCRIPTOR UserData; 
  _QWORD *v14; 
  int v15; 
  int v16; 
  __int64 v17; 
  int v18; 
  int v19; 
  v1 = PpmPlatformStates;
  if( PpmPlatformStates )
  {
    v2 = 0i64;
    for( i = 0; (unsigned int)v2 < *(_DWORD *)PpmPlatformStates; i = v2 )
    {
      UserData.Reserved = 0;
      UserData.Size = 4;
      UserData.Ptr = (unsigned __int64)&i;
      PpmEventTracePreVetoAccounting(
        (EVENT_DESCRIPTOR *)&PPM_ETW_PLATFORM_PRE_VETO_ACCOUNTING_RUNDOWN,
        &UserData,
        384 * v2 + v1 + 80);
      v1 = PpmPlatformStates;
      v2 = i + 1;
    }
    if( PpmEtwRegistered && EtwEventEnabled(PpmEtwHandle, (EVENT_DESCRIPTOR *)&PPM_ETW_PLATFORM_IDLE_VETO_RUNDOWN, v0) )
    {
      KeAcquireSpinLockRaiseToDpc(&PpmIdleVetoLock, v3);
      v4 = PpmPlatformStates;
      v5 = 0;
      i = 0;
      v7 = v6;
      if( *(_DWORD *)PpmPlatformStates )
      {
        v8 = 0i64;
        do
        {
          UserData.Reserved = 0;
          UserData.Ptr = (unsigned __int64)&i;
          UserData.Size = 4;
          v9 = (_QWORD **)(384 * v8 + v4 + 88);
          v10 = *v9;
          if( *v9 != v9 )
          {
            do
            {
              v16 = 0;
              v19 = 0;
              v14 = v10 + 2;
              v15 = 4;
              v17 = (__int64)v10 + 20;
              LODWORD(UserDataCount) = 3;
              v18 = 4;
              EtwWriteEx(
                PpmEtwHandle,
                (EVENT_DESCRIPTOR *)&PPM_ETW_PLATFORM_IDLE_VETO_RUNDOWN,
                0i64,
                0i64,
                0i64,
                0i64,
                UserDataCount,
                &UserData);
              v10 = (_QWORD *)*v10;
            }
            while( v10 != v9 );
            v5 = i;
          }
          v4 = PpmPlatformStates;
          i = ++v5;
          v8 = v5;
        }
        while( v5 < *(_DWORD *)PpmPlatformStates );
      }
      KxReleaseSpinLock(&PpmIdleVetoLock);
      __writecr8(v7);
    }
  }
}

Referenced by:

PpmEventTraceControlCallback