public RawEntry(CacheBase Cache, int Address)
            {
                EndianReader Reader = Cache.Reader;

                Reader.SeekTo(Address);

                Reader.SeekTo(Address + 12);
                TagID = Reader.ReadInt32();

                Reader.ReadInt16();
                Reader.ReadInt16();
                Reader.ReadInt32();

                FixupOffset = Reader.ReadInt32();
                FixupSize   = Reader.ReadInt32();

                Reader.ReadInt32();

                CacheIndex     = Reader.ReadInt32();
                RequiredOffset = Reader.ReadInt32();
                RequiredSize   = Reader.ReadInt32();

                Reader.ReadInt32();

                CacheIndex2    = Reader.ReadInt32();
                OptionalOffset = Reader.ReadInt32();
                OptionalSize   = Reader.ReadInt32();

                Reader.ReadInt32();
                Reader.ReadInt32();

                #region Resource Fixups
                int iCount  = Reader.ReadInt32();
                int iOffset = Reader.ReadInt32() - Cache.Magic;
                for (int i = 0; i < iCount; i++)
                {
                    Fixups.Add(new ResourceFixup(Cache, iOffset + 8 * i));
                }
                #endregion

                #region Resource Definition Fixups
                Reader.SeekTo(Address + 84);
                iCount  = Reader.ReadInt32();
                iOffset = Reader.ReadInt32() - Cache.Magic;
                for (int i = 0; i < iCount; i++)
                {
                    DefinitionFixups.Add(new ResourceDefinitionFixup(Cache, iOffset + 8 * i));
                }
                #endregion
            }
            public RawEntry(CacheBase Cache, int Address)
            {
                EndianReader Reader = Cache.Reader;

                Reader.SeekTo(Address);

                Reader.SeekTo(Address + 12);
                TagID = Reader.ReadInt32();
                Reader.ReadInt16();
                Reader.ReadByte();
                Reader.ReadByte();
                FixupSize = Reader.ReadInt32();
                Reader.ReadInt16();
                SegmentIndex = Reader.ReadInt16();
                Reader.ReadInt32();

                #region Resources
                Reader.SeekTo(Address + 32);
                int iCount  = Reader.ReadInt32();
                int iOffset = Reader.ReadInt32() - Cache.Magic;
                for (int i = 0; i < iCount; i++)
                {
                    Fixups.Add(new ResourceFixup(Cache, iOffset + 8 * i));
                }
                #endregion

                #region Resource Definitions
                Reader.SeekTo(Address + 44);
                iCount  = Reader.ReadInt32();
                iOffset = Reader.ReadInt32() - Cache.Magic;
                for (int i = 0; i < iCount; i++)
                {
                    DefinitionFixups.Add(new ResourceDefinitionFixup(Cache, iOffset + 8 * i));
                }
                #endregion

                #region Fixup Location
                Reader.SeekTo(Address + 56);
                iCount  = Reader.ReadInt32();
                iOffset = Reader.ReadInt32() - Cache.Magic;
                if (iCount > 0)
                {
                    Reader.SeekTo(iOffset);
                    FixupOffset = Reader.ReadInt32();
                }
                #endregion
            }