public ImageOptionalHeader64VM(HexBuffer buffer, PeOptionalHeader64Data optionalHeader)
            : base(buffer, optionalHeader)
        {
            Name        = optionalHeader.Name;
            ImageBaseVM = new UInt64HexField(optionalHeader.ImageBase);

            SizeOfStackReserveVM = new UInt64HexField(optionalHeader.SizeOfStackReserve);
            SizeOfStackCommitVM  = new UInt64HexField(optionalHeader.SizeOfStackCommit);
            SizeOfHeapReserveVM  = new UInt64HexField(optionalHeader.SizeOfHeapReserve);
            SizeOfHeapCommitVM   = new UInt64HexField(optionalHeader.SizeOfHeapCommit);

            var list = new List <HexField> {
                MagicVM,
                MajorLinkerVersionVM,
                MinorLinkerVersionVM,
                SizeOfCodeVM,
                SizeOfInitializedDataVM,
                SizeOfUninitializedDataVM,
                AddressOfEntryPointVM,
                BaseOfCodeVM,
                ImageBaseVM,
                SectionAlignmentVM,
                FileAlignmentVM,
                MajorOperatingSystemVersionVM,
                MinorOperatingSystemVersionVM,
                MajorImageVersionVM,
                MinorImageVersionVM,
                MajorSubsystemVersionVM,
                MinorSubsystemVersionVM,
                Win32VersionValueVM,
                SizeOfImageVM,
                SizeOfHeadersVM,
                CheckSumVM,
                SubsystemVM,
                DllCharacteristicsVM,
                SizeOfStackReserveVM,
                SizeOfStackCommitVM,
                SizeOfHeapReserveVM,
                SizeOfHeapCommitVM,
                LoaderFlagsVM,
                NumberOfRvaAndSizesVM,
            };

            AddDataDirs(list, optionalHeader);
        }
		public ImageOptionalHeader64VM(HexBuffer buffer, HexPosition startOffset, HexPosition endOffset)
			: base(buffer, startOffset, endOffset, 0x20, 0x68) {
			ImageBaseVM = new UInt64HexField(buffer, Name, "ImageBase", startOffset + 0x18);

			SizeOfStackReserveVM = new UInt64HexField(buffer, Name, "SizeOfStackReserve", startOffset + 0x48);
			SizeOfStackCommitVM = new UInt64HexField(buffer, Name, "SizeOfStackCommit", startOffset + 0x50);
			SizeOfHeapReserveVM = new UInt64HexField(buffer, Name, "SizeOfHeapReserve", startOffset + 0x58);
			SizeOfHeapCommitVM = new UInt64HexField(buffer, Name, "SizeOfHeapCommit", startOffset + 0x60);

			var list = new List<HexField> {
				MagicVM,
				MajorLinkerVersionVM,
				MinorLinkerVersionVM,
				SizeOfCodeVM,
				SizeOfInitializedDataVM,
				SizeOfUninitializedDataVM,
				AddressOfEntryPointVM,
				BaseOfCodeVM,
				ImageBaseVM,
				SectionAlignmentVM,
				FileAlignmentVM,
				MajorOperatingSystemVersionVM,
				MinorOperatingSystemVersionVM,
				MajorImageVersionVM,
				MinorImageVersionVM,
				MajorSubsystemVersionVM,
				MinorSubsystemVersionVM,
				Win32VersionValueVM,
				SizeOfImageVM,
				SizeOfHeadersVM,
				CheckSumVM,
				SubsystemVM,
				DllCharacteristicsVM,
				SizeOfStackReserveVM,
				SizeOfStackCommitVM,
				SizeOfHeapReserveVM,
				SizeOfHeapCommitVM,
				LoaderFlagsVM,
				NumberOfRvaAndSizesVM,
			};

			AddDataDirs(list, endOffset);
		}