EtwpInitializeCompression

NTSTATUS __stdcall EtwpInitializeCompression(_WMI_LOGGER_CONTEXT *LoggerContext){
  NTSTATUS result; 
  NTSTATUS v3; 
  VOID **v4; 
  unsigned int v5; 
  VOID **PoolWithTag; 
  UINT64 NumberOfBytes; 
  UINT64 v8; 

  LoggerContext->CompressionRatioGuess = 5;
  LODWORD(NumberOfBytes) = 0;
  LODWORD(v8) = 0;
  LoggerContext->PartialBufferCompressionLevel = 3;
  LoggerContext->CompressionWorkItem.WorkerRoutine = (void(__fastcall *)(void *))EtwpCompressionProc;
  LoggerContext->CompressionWorkItem.Parameter = LoggerContext;
  LoggerContext->CompressionWorkItem.List.Flink = 0i64;
  result = RtlGetCompressionWorkSpaceSize(3u, &NumberOfBytes, &v8);
  v3 = result;
  if( result >= 0 )
  {
    if( !(_DWORD)NumberOfBytes
      || (v4 = ExAllocatePoolWithTag(0x200ui64, (unsigned int)NumberOfBytes, 1517777989i64),
          (LoggerContext->CompressionWorkspace = v4) != 0i64) )
    {
      LoggerContext->CompressionLock._bf_0 = 0i64;
      LoggerContext->CompressionDpc.DeferredRoutine = (void(__fastcall *)(_KDPC *, void *, void *, void *))EtwpCompressionDpc;
      LoggerContext->CompressionDpc.TargetInfoAsUlong = 275;
      v5 = 0;
      LoggerContext->CompressionDpc.DeferredContext = LoggerContext;
      LoggerContext->CompressionDpc.DpcData = 0i64;
      LoggerContext->CompressionDpc.ProcessorHistory = 0i64;
      LoggerContext->PlaceholderList.Next = 0i64;
      if( LoggerContext->CompressionRatioGuess )
      {
        while( 1 )
        {
          PoolWithTag = ExAllocatePoolWithTag((unsigned int)LoggerContext->PoolType, 0x48ui64, 1115124805i64);
          if( !PoolWithTag )
            break;
          *((_DWORD *)PoolWithTag + 11) = 6;
          ++v5;
          PoolWithTag[4] = LoggerContext->PlaceholderList.Next;
          LoggerContext->PlaceholderList.Next = (_SINGLE_LIST_ENTRY *)(PoolWithTag + 4);
          if( v5 >= LoggerContext->CompressionRatioGuess )
            goto LABEL_8;
        }
        v3 = -1073741801;
        EtwpFreePlaceholderList(LoggerContext);
      }
      else
      {
LABEL_8:
        _InterlockedExchange(&LoggerContext->CompressionOn, 1);
      }
      return v3;
    }
    else
    {
      return -1073741801;
    }
  }
  return result;
}

Referenced by:

EtwpInitLoggerContext