public void InflateEntry(Entry entry, BigEndianBinaryReader reader, uint[] zLenghts, uint blockSize, Stream output) { if (entry.Length != 0) { reader.BaseStream.Position = (long)entry.Offset; uint num = entry.zIndex; do { if (zLenghts[num] == 0) { byte[] array = reader.ReadBytes((int)blockSize); output.Write(array, 0, (int)blockSize); } else { ushort num2 = reader.ReadUInt16(); reader.BaseStream.Position -= 2; byte[] array = reader.ReadBytes((int)zLenghts[num]); if (num2 == 30938) { ZOutputStream zOutputStream = new ZOutputStream(output); zOutputStream.Write(array, 0, array.Length); zOutputStream.Flush(); } else { output.Write(array, 0, array.Length); } } num += 1; } while (output.Length < (long)entry.Length); } output.Flush(); output.Seek(0, SeekOrigin.Begin); }