Ejemplo n.º 1
0
 static uint ReadUInt32(IBinaryReader reader)
 {
     try {
         return(reader.Read7BitEncodedUInt32());
     }
     catch {
         throw new ResourceReaderException("Invalid encoded int32");
     }
 }
Ejemplo n.º 2
0
 static uint readUInt32(IBinaryReader reader)
 {
     try {
         return reader.Read7BitEncodedUInt32();
     }
     catch {
         throw new ResourceReaderException("Invalid encoded int32");
     }
 }
Ejemplo n.º 3
0
            protected static byte[] Decompress(byte[] decrypted, IBinaryReader reader, byte[] key, int keyMod)
            {
                int destIndex = 0;

                while (reader.Position < reader.Length)
                {
                    if (destIndex >= decrypted.Length)
                    {
                        break;
                    }
                    byte flags = reader.ReadByte();
                    for (int mask = 1; mask != 0x100; mask <<= 1)
                    {
                        if (reader.Position >= reader.Length)
                        {
                            break;
                        }
                        if (destIndex >= decrypted.Length)
                        {
                            break;
                        }
                        if ((flags & mask) != 0)
                        {
                            int displ = (int)reader.Read7BitEncodedUInt32();
                            int size  = (int)reader.Read7BitEncodedUInt32();
                            Copy(decrypted, destIndex - displ, decrypted, destIndex, size);
                            destIndex += size;
                        }
                        else
                        {
                            byte b = reader.ReadByte();
                            if (key != null)
                            {
                                b ^= key[destIndex % keyMod];
                            }
                            decrypted[destIndex++] = b;
                        }
                    }
                }

                return(decrypted);
            }
Ejemplo n.º 4
0
 /// <summary>
 /// Reads a 7-bit encoded integer
 /// </summary>
 /// <param name="reader">this</param>
 /// <returns>The decoded integer</returns>
 public static int Read7BitEncodedInt32(this IBinaryReader reader)
 {
     return((int)reader.Read7BitEncodedUInt32());
 }
Ejemplo n.º 5
0
 static byte[] Decompress(IBinaryReader reader, byte[] key, int keyMod)
 {
     return(Decompress(new byte[reader.Read7BitEncodedUInt32()], reader, key, keyMod));
 }
			protected static byte[] Decompress(byte[] decrypted, IBinaryReader reader, byte[] key, int keyMod) {
				int destIndex = 0;
				while (reader.Position < reader.Length) {
					if (destIndex >= decrypted.Length)
						break;
					byte flags = reader.ReadByte();
					for (int mask = 1; mask != 0x100; mask <<= 1) {
						if (reader.Position >= reader.Length)
							break;
						if (destIndex >= decrypted.Length)
							break;
						if ((flags & mask) != 0) {
							int displ = (int)reader.Read7BitEncodedUInt32();
							int size = (int)reader.Read7BitEncodedUInt32();
							Copy(decrypted, destIndex - displ, decrypted, destIndex, size);
							destIndex += size;
						}
						else {
							byte b = reader.ReadByte();
							if (key != null)
								b ^= key[destIndex % keyMod];
							decrypted[destIndex++] = b;
						}
					}
				}

				return decrypted;
			}
			static byte[] Decompress(IBinaryReader reader, byte[] key, int keyMod) {
				return Decompress(new byte[reader.Read7BitEncodedUInt32()], reader, key, keyMod);
			}