EtwpDequeueBuffer

VOID __fastcall EtwpDequeueBuffer(_WMI_LOGGER_CONTEXT *LoggerContext, _ETW_BUFFER_QUEUE *Queue){
  _SINGLE_LIST_ENTRY *p_QueueEntry; 
  _SINGLE_LIST_ENTRY *Next; 
  p_QueueEntry = &Queue->QueueEntry;
  while( 1 )
  {
    Next = p_QueueEntry->Next;
    if( !p_QueueEntry->Next )
      break;
    p_QueueEntry->Next = Next->Next;
    if( Next->Next )
      Next->Next = 0i64;
    else
      Queue->QueueTail = p_QueueEntry;
    if( HIDWORD(Next[1].Next) != 6 )
      break;
    Next->Next = *(_SINGLE_LIST_ENTRY **)((char *)LoggerContext + 1168);
    *((_QWORD *)LoggerContext + 146) = Next;
  }
}

Referenced by:

EtwpAdjustSiloTraceBuffers
EtwpDequeueFreeBuffer
EtwpFreeTraceBufferPool