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