EtwpDequeueBufferPendingCompression

CHAR *__fastcall EtwpDequeueBufferPendingCompression(INT64 a1){
  __int64 *v1; 
  __int64 v3; 
  _WMI_BUFFER_HEADER *v4; 
  _WMI_BUFFER_HEADER *PoolWithTag; 
  _SINGLE_LIST_ENTRY *v6; 
  _WMI_BUFFER_HEADER *v7; 
  UINT8 v9; 
  v1 = *(__int64 **)(a1 + 1168);
  v9 = 0;
  if( v1 )
  {
    v3 = *v1;
    v4 = (_WMI_BUFFER_HEADER *)(v1 - 4);
    *(_QWORD *)(a1 + 1168) = v3;
  }
  else
  {
    PoolWithTag = (_WMI_BUFFER_HEADER *)ExAllocatePoolWithTag(
                                          (_POOL_TYPE)*(_DWORD *)(a1 + 316),
                                          0x48ui64,
                                          0x42777445ui64);
    v4 = PoolWithTag;
    if( !PoolWithTag )
    {
LABEL_11:
      EtwpDisableCompression(a1);
      return 0i64;
    }
    PoolWithTag->0 = 0i64;
    PoolWithTag->State = EtwBufferStatePlaceholder;
  }
  if( !v4 )
    goto LABEL_11;
  EtwpLockBufferList(a1, &v9);
  v6 = EtwpDequeueBufferPendingCompressionFromQueue((_ETW_BUFFER_QUEUE *)(a1 + 80), (volatile INT *)(a1 + 244), v4);
  if( !v6 )
    v6 = EtwpDequeueBufferPendingCompressionFromQueue((_ETW_BUFFER_QUEUE *)(a1 + 64), (volatile INT *)(a1 + 244), v7);
  EtwpUnlockBufferList(a1, &v9);
  if( !v6 )
  {
    v4->0 = *($CE5421AAA17F992240E21CD59A4E8E5E *)(a1 + 1168);
    *(_QWORD *)(a1 + 1168) = &v4->32;
  }
  return(CHAR *)v6;
}

Referenced by:

EtwpCompressPendingBuffers