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