EtwpUpdateStackTracing

INT64 __fastcall EtwpUpdateStackTracing(_WMI_LOGGER_CONTEXT *LoggerContext, UINT64 *StackTraceFilter, UINT64 Count){
  unsigned int v3; 
  __int64 v6; 
  int v7; 
  v3 = Count;
  v6 = 0i64;
  v7 = 0;
  if( (_DWORD)Count )
  {
    if( (unsigned int)Count > 0x100 )
      return(unsigned int)-1073741811;
    if( (*((_DWORD *)LoggerContext + 208) & 0x80u) != 0 )
    {
      RtlClearAllBits((RTL_BITMAP *)LoggerContext + 61);
    }
    else
    {
      v7 = EtwpInitializeStackTracing((INT64)LoggerContext);
      if( v7 < 0 )
        return(unsigned int)v7;
    }
    while( (unsigned int)v6 < v3 )
    {
      _bittestandset(*((signed __int32 **)LoggerContext + 123), *((_WORD *)StackTraceFilter + 2 * v6) & 0x1FFF);
      v6 = (unsigned int)(v6 + 1);
    }
  }
  else if( (*((_DWORD *)LoggerContext + 208) & 0x80u) != 0 )
  {
    RtlClearAllBits((RTL_BITMAP *)LoggerContext + 61);
  }
  return(unsigned int)v7;
}

Referenced by:

EtwSetPerformanceTraceInformation
EtwpCheckForStackTracingExtension