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}"); } }