static void Extract(Stream src, Stream dest, uint crc32FromHeader)
    {
        uint fileCRC = 0;
        int  fread   = 0;
        var  crc32   = new CRC32();
        var  buffer  = new byte [8192];

        using (var iis = new DeflateStream(src, CompressionMode.Decompress)) {
            while (true)
            {
                fread = iis.Read(buffer, 0, buffer.Length);
                if (fread <= 0)
                {
                    break;
                }

                fileCRC = crc32.Append(fileCRC, buffer, 0, fread);
                dest.Write(buffer, 0, fread);
            }
            dest.Flush();
        }

        if (fileCRC != crc32FromHeader)
        {
            Console.Error.WriteLine($"  Invalid CRC32: expected 0x{crc32FromHeader:x}, got 0x{fileCRC:x}");
        }
    }