public MYP(MythicPackage package, Stream stream) { this._stream = stream; this.Package = package; BinaryReader reader = new BinaryReader(stream); this.Header = new MYP.MYPHeader(); this.Header.Load(reader); this.MFTTables.Add(new MYP.MFTHeader() { Length = this.Header.EntriesPerMFT, NextMFTOffset = this.Header.MFTOffset }); long num1 = this.Header.MFTOffset; uint num2 = this.Header.EntriesPerMFT; reader.BaseStream.Position = num1; while (num1 > 0L) { reader.BaseStream.Position = num1; this.MFT = new MYP.MFTHeader(); this.MFT.Offset = reader.BaseStream.Position; this.MFT.Load(reader); this.MFTTables.Add(this.MFT); num1 = this.MFT.NextMFTOffset; for (int index = 0; (long)index < (long)num2; ++index) { MYP.MFTEntry mftEntry = new MYP.MFTEntry(); mftEntry.Changed = false; mftEntry.Load(this, reader, index); if (mftEntry.Hash != 0L) { this.Enteries[mftEntry.Hash] = mftEntry; } } num2 = this.MFT.Length; } }