VslpSkStartProfiling

INT64 __fastcall VslpSkStartProfiling(UINT16 *a1){
  INT64 result; 
  unsigned int v3; 
  unsigned int v4; 
  unsigned __int64 v5; 
  unsigned int v6; 
  void *PoolWithTag; 
  unsigned int *v8; 
  int v9; 
  UINT64 v10; 
  INT64 v11[2]; 
  __int128 v12; 
  *(_OWORD *)v11 = 0i64;
  v12 = 0i64;
  result = WmiQueryTraceInformation(TraceSessionSettingsClass, v11, 0x20ui64, &v10, a1);
  if( (int)result >= 0 )
  {
    v3 = HIDWORD(v11[1]);
    v4 = HIDWORD(v11[0]);
    v5 = ((unsigned __int64)HIDWORD(v11[1]) + 63) >> 6;
    if( HIDWORD(v11[0]) > 0x48 )
    {
      if( DWORD1(v12) )
        VslpFlushTimerInterval = DWORD1(v12);
      v6 = 16 * (((unsigned __int64)HIDWORD(v11[1]) + 63) >> 6) + HIDWORD(v11[1]) * HIDWORD(v11[0]) + 24;
      PoolWithTag = ExAllocatePoolWithTag(NonPagedPoolNx, v6, 0x54736D56ui64);
      VslpEventLog = PoolWithTag;
      v8 = (unsigned int *)PoolWithTag;
      if( PoolWithTag )
      {
        memset((INT64)PoolWithTag, 0i64);
        v8[2] = v5;
        v8[1] = v4;
        v8[3] = v6;
        *v8 = v3;
        memset((INT64)(v8 + 6), 255i64);
        memset((INT64)&v8[2 * v8[2] + 6], 0i64);
        VslpLoggerId = (UINT64 *)*a1;
        VslpSkCreateBuffers(v4, v3);
        ExInitializePushLock((EX_RUNDOWN_REF *)&VslpBufferFlushRundown);
        v9 = VslpSkMapBuffers();
        if( v9 >= 0 )
        {
          KeInitializeTimerEx((PKTIMER)VslpFlushTimer, NotificationTimer);
          KeInitializeDpc(&VslpFlushDpc, VslpSkFlushBufferCallback, 0i64);
          KiSetTimerEx(
            (_KTIMER *)VslpFlushTimer,
            (_LARGE_INTEGER)(-10000000i64 * (unsigned int)VslpFlushTimerInterval),
            0i64,
            0,
            &VslpFlushDpc);
        }
        else
        {
          ExFreePoolWithTag(VslpEventLog, 0x54736D56u);
          VslpEventLog = 0i64;
          VslpLoggerId = 0i64;
        }
        return(unsigned int)v9;
      }
      else
      {
        return 3221225626i64;
      }
    }
    else
    {
      return 3221225485i64;
    }
  }
  return result;
}

Referenced by:

VslpEtwClassicCallback