Private/Expand-ZlibData.ps1

function Expand-ZlibData {
    <#
    .SYNOPSIS
        Decompresses zlib data by skipping 2-byte header and using raw deflate.
    
    .PARAMETER Data
        Byte array containing zlib-compressed data.
    
    .PARAMETER Offset
        Starting offset of zlib data in the byte array.
    
    .OUTPUTS
        System.Byte[]
    #>

    [CmdletBinding()]
    [OutputType([byte[]])]
    param(
        [Parameter(Mandatory)]
        [byte[]]$Data,
        
        [Parameter(Mandatory)]
        [int]$Offset
    )
    
    $slice = $Data[($Offset + 2)..($Data.Length - 1)]
    $memoryStream = New-Object System.IO.MemoryStream (, $slice)
    $deflateStream = New-Object System.IO.Compression.DeflateStream (
        $memoryStream,
        [System.IO.Compression.CompressionMode]::Decompress
    )
    $outputStream = New-Object System.IO.MemoryStream
    
    try {
        $deflateStream.CopyTo($outputStream)
        return $outputStream.ToArray()
    } finally {
        $deflateStream.Dispose()
        $memoryStream.Dispose()
        $outputStream.Dispose()
    }
}