    [StructLayout(LayoutKind.Sequential, Pack = 1)]
        public struct EFI_LEGACY_EXPANSION_AMD_ROM_HEADER
        {
            public Byte Signature55;
            public Byte SignatureAA;
            public Byte Bit8Length_in_512bytes;
            public Byte JmpRel16_OpCode_E9;
            public UInt16 Jmp_Target_Rel_To_0x6;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 18)]
            [DumpByteArrAsText]
            public Byte[] reserved_legacy;
            public UInt16 PCIRHeaderOffset;
            public UInt16 PnPHeaderOffset;
            public UInt16 TextsAfterHeaderNullPadding;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            [DumpByteArrAsText]
            public Byte[] TextIBM;
            public Byte SimpleChecksum8ToZeroOverRegion_BeforeNextHeader;
            public UInt16 Unknown2_1;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 11)]
            [DumpByteArrAsText]
            public Byte[] Zeroes11;
            public Byte Unknown1;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
            [DumpByteArrAsText]
            public Byte[] ATIAMDSignature_SP761295520;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
            [DumpByteArrAsText]
            public Byte[] Zeroes6_1;
            public UInt16 Unknown2_2;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
            [DumpByteArrAsText]
            public Byte[] Zeroes6_2;
            public UInt16 AtomRomHeaderOffset;
            public string ComputedOffsetToNextHeader
            {
                get { return string.Format("0x{0:X}",Bit8Length_in_512bytes * 512); }
                set { throw new NotImplementedException(); }
            }
            public string ComputedJmpTarget
            {
                get { return string.Format("0x{0:X}",Jmp_Target_Rel_To_0x6 + 6);  }
                set { throw new NotImplementedException(); }
            }
        }