EtwpDemuxPrivateTraceHandle

NTSTATUS __stdcall EtwpDemuxPrivateTraceHandle(PLEARNING_MODE_DATA *a1, UINT16 a2, UINT16 *a3){
  int v5; 
  _ETW_SILODRIVERSTATE *EtwSiloState; 
  _ETHREAD *CurrentThread; 
  ULONG_PTR v9; 
  _ETW_PRIV_HANDLE_DEMUX_TABLE *p_PrivHandleDemuxTable; 
  INT64 Root; 
  NTSTATUS v12; 
  int v13; 
  NTSTATUS v14; 
  INT64 v15; 
  __int64 **v16; 
  __int64 *i; 
  UINT64 v18; 

  v5 = (int)a1;
  if( a2 >= 0x40u )
  {
    EtwSiloState = PsGetCurrentServerSiloGlobals((_KSPIN_LOCK *)a1)->EtwSiloState;
    CurrentThread = (_ETHREAD *)KeGetCurrentThread();
    --CurrentThread->Tcb.KernelApcDisable;
    v9 = (_DWORD)EtwSiloState + 4096;
    ExAcquirePushLockExclusiveEx(&EtwSiloState->PrivHandleDemuxTable.Lock, 0i64);
    p_PrivHandleDemuxTable = &EtwSiloState->PrivHandleDemuxTable;
    LODWORD(v18) = v5;
    Root = (INT64)EtwSiloState->PrivHandleDemuxTable.Tree.Root;
    v12 = 0;
    if( (p_PrivHandleDemuxTable->Tree._bf_0 & 1) != 0 )
    {
      if( Root )
        Root ^= (unsigned __int64)p_PrivHandleDemuxTable;
      else
        Root = 0i64;
    }
    v13 = p_PrivHandleDemuxTable->Tree._bf_0 & 1;
    if( Root )
    {
      do
      {
        v14 = PidNodeCompare(&v18, Root);
        if( v14 >= 0 )
        {
          if( v14 <= 0 )
            break;
          v15 = *(_QWORD *)(Root + 8);
        }
        else
        {
          v15 = *(_QWORD *)Root;
        }
        if( v13 && v15 )
          Root ^= v15;
        else
          Root = v15;
      }
      while( Root );
      if( Root )
      {
        v16 = (__int64 **)(Root + 32);
        for( i = *v16; i != (__int64 *)v16; i = (__int64 *)*i )
        {
          if( *((_WORD *)i + 9) == a2 )
          {
            *a3 = *((_WORD *)i + 8);
            goto LABEL_23;
          }
        }
      }
    }
    v12 = -1073741162;
LABEL_23:
    ExReleasePushLockEx(v9, 0);
    KeLeaveCriticalRegionThread(KeGetCurrentThread());
    return v12;
  }
  else
  {
    *a3 = a2;
    return 0;
  }
}

Referenced by:

EtwpEnableGuid
EtwpNotifyGuid