diff --git a/generator/sections/gen-section-ampere.c b/generator/sections/gen-section-ampere.c
index 3ffe2f5..a28cdf1 100644
--- a/generator/sections/gen-section-ampere.c
+++ b/generator/sections/gen-section-ampere.c
@@ -12,8 +12,10 @@
 
 //Generates a single pseudo-random Ampere error section, saving the resulting address to the given
 //location. Returns the size of the newly created section.
-size_t generate_section_ampere(void **location)
+size_t generate_section_ampere(void **location,
+			       GEN_VALID_BITS_TEST_TYPE validBitsType)
 {
+	(void)validBitsType;
 	//Create random bytes.
 	size_t size = sizeof(EFI_AMPERE_ERROR_DATA);
 	UINT8 *section = generate_random_bytes(size);
diff --git a/generator/sections/gen-section-arm.c b/generator/sections/gen-section-arm.c
index 5043741..c181663 100644
--- a/generator/sections/gen-section-arm.c
+++ b/generator/sections/gen-section-arm.c
@@ -5,18 +5,20 @@
  **/
 
 #include <stdlib.h>
+#include <stdio.h>
 #include <string.h>
 #include <libcper/BaseTypes.h>
 #include <libcper/generator/gen-utils.h>
 #include <libcper/generator/sections/gen-section.h>
 #define ARM_ERROR_INFO_SIZE 32
 
-void *generate_arm_error_info();
+void *generate_arm_error_info(GEN_VALID_BITS_TEST_TYPE validBitsType);
 size_t generate_arm_context_info(void **location);
 
 //Generates a single pseudo-random ARM processor section, saving the resulting address to the given
 //location. Returns the size of the newly created section.
-size_t generate_section_arm(void **location)
+size_t generate_section_arm(void **location,
+			    GEN_VALID_BITS_TEST_TYPE validBitsType)
 {
 	//Set up for generation of error/context structures.
 	UINT16 error_structure_num = rand() % 4 + 1; //Must be at least 1.
@@ -27,7 +29,7 @@
 
 	//Generate the structures.
 	for (int i = 0; i < error_structure_num; i++) {
-		error_structures[i] = generate_arm_error_info();
+		error_structures[i] = generate_arm_error_info(validBitsType);
 	}
 	for (int i = 0; i < context_structure_num; i++) {
 		context_structure_lengths[i] =
@@ -35,7 +37,7 @@
 	}
 
 	//Determine a random amount of vendor specific info.
-	int vendor_info_len = rand() % 16;
+	size_t vendor_info_len = rand() % 16 + 4;
 
 	//Create the section as a whole.
 	size_t total_len = 40 + (error_structure_num * ARM_ERROR_INFO_SIZE);
@@ -56,8 +58,13 @@
 	*(section + 12) = rand() % 4;
 
 	//Reserved zero bytes.
-	UINT64 *validation = (UINT64 *)section;
-	*validation &= 0x7;
+	UINT32 *validation = (UINT32 *)section;
+	*validation &= 0xF;
+	if (validBitsType == ALL_VALID) {
+		*validation = 0xF;
+	} else if (validBitsType == SOME_VALID) {
+		*validation = 0xA;
+	}
 	UINT32 *running_state = (UINT32 *)(section + 32);
 	*running_state &= 0x1;
 	memset(section + 13, 0, 3);
@@ -76,13 +83,21 @@
 		cur_pos += context_structure_lengths[i];
 	}
 
+	//vendor specific
+	for (size_t i = 0; i < vendor_info_len; i++) {
+		//Ensure only ascii is used so we don't
+		// fail base64E
+		*cur_pos = rand() % 127 + 1;
+		cur_pos += 1;
+	}
+
 	//Set return values and exit.
 	*location = section;
 	return total_len;
 }
 
 //Generates a single pseudo-random ARM error info structure. Must be later freed.
-void *generate_arm_error_info()
+void *generate_arm_error_info(GEN_VALID_BITS_TEST_TYPE validBitsType)
 {
 	UINT8 *error_info = generate_random_bytes(ARM_ERROR_INFO_SIZE);
 
@@ -91,12 +106,17 @@
 	*(error_info + 1) = ARM_ERROR_INFO_SIZE;
 
 	//Type of error.
-	UINT8 error_type = rand() % 4;
+	UINT8 error_type = rand() % 3;
 	*(error_info + 4) = error_type;
 
 	//Reserved bits for error information.
 	UINT16 *validation = (UINT16 *)(error_info + 2);
 	*validation &= 0x1F;
+	if (validBitsType == ALL_VALID) {
+		*validation = 0x1F;
+	} else if (validBitsType == SOME_VALID) {
+		*validation = 0x15;
+	}
 
 	//Make sure reserved bits are zero according with the type.
 	UINT64 *error_subinfo = (UINT64 *)(error_info + 8);
@@ -105,11 +125,25 @@
 	case 0:
 	case 1:
 		*error_subinfo &= 0xFFFFFFF;
+		//Reserved bits for cache/tlb.
+		UINT16 *val_cache = (UINT16 *)(error_info + 8);
+		if (validBitsType == ALL_VALID) {
+			*val_cache = 0x7F;
+		} else if (validBitsType == SOME_VALID) {
+			*val_cache = 0x55;
+		}
 		break;
 
 	//Bus
 	case 2:
 		*error_subinfo &= 0xFFFFFFFFFFF;
+		UINT16 *val_bus = (UINT16 *)(error_info + 8);
+		if (validBitsType == ALL_VALID) {
+			*val_bus = 0xFFF;
+		} else if (validBitsType == SOME_VALID) {
+			*val_bus = 0x555;
+		}
+
 		break;
 
 	//Microarch/other.
@@ -117,6 +151,10 @@
 		break;
 	}
 
+	//flags
+	UINT8 *flags = (UINT8 *)(error_info + 7);
+	*flags &= 0xF;
+
 	return error_info;
 }
 
@@ -175,6 +213,14 @@
 	int total_size = 8 + reg_size;
 	UINT16 *context_info = (UINT16 *)generate_random_bytes(total_size);
 
+	//UEFI spec is not clear about bit 15 in the
+	// reg type 8 section. This sets it to 0 to
+	// avoid confusion for now.
+	if (reg_type == 8) {
+		UINT8 *reg_decode = (UINT8 *)context_info;
+		*(reg_decode + 9) &= 0x7F;
+	}
+
 	//Set header information.
 	*(context_info + 1) = reg_type;
 	*((UINT32 *)(context_info + 2)) = reg_size;
diff --git a/generator/sections/gen-section-ccix-per.c b/generator/sections/gen-section-ccix-per.c
index 0784d34..e648cba 100644
--- a/generator/sections/gen-section-ccix-per.c
+++ b/generator/sections/gen-section-ccix-per.c
@@ -11,7 +11,8 @@
 
 //Generates a single pseudo-random CCIX PER error section, saving the resulting address to the given
 //location. Returns the size of the newly created section.
-size_t generate_section_ccix_per(void **location)
+size_t generate_section_ccix_per(void **location,
+				 GEN_VALID_BITS_TEST_TYPE validBitsType)
 {
 	//Create a random length for the CCIX PER log.
 	//The log attached here does not necessarily conform to the CCIX specification, and is simply random.
@@ -25,6 +26,11 @@
 	UINT32 *validation = (UINT32 *)(bytes + 4);
 	*validation &= 0x7;    //Validation bits 3-63.
 	*(validation + 1) = 0; //Validation bits 3-63.
+	if (validBitsType == ALL_VALID) {
+		*validation = 0x7;
+	} else if (validBitsType == SOME_VALID) {
+		*validation = 0x5;
+	}
 	*(bytes + 13) &= 0x1F; //CCIX port ID bits 5-7.
 	UINT16 *reserved = (UINT16 *)(bytes + 14);
 	*reserved = 0;	       //Reserved bytes 14-15.
diff --git a/generator/sections/gen-section-cxl-component.c b/generator/sections/gen-section-cxl-component.c
index 395defb..615a152 100644
--- a/generator/sections/gen-section-cxl-component.c
+++ b/generator/sections/gen-section-cxl-component.c
@@ -11,7 +11,8 @@
 
 //Generates a single pseudo-random CXL component error section, saving the resulting address to the given
 //location. Returns the size of the newly created section.
-size_t generate_section_cxl_component(void **location)
+size_t generate_section_cxl_component(void **location,
+				      GEN_VALID_BITS_TEST_TYPE validBitsType)
 {
 	//Create a random length for the CXL component event log.
 	//The logs attached here do not necessarily conform to the specification, and are simply random.
@@ -24,6 +25,11 @@
 	//Set reserved areas to zero.
 	UINT32 *validation = (UINT32 *)(bytes + 4);
 	*validation &= 0x7;
+	if (validBitsType == ALL_VALID) {
+		*validation = 0x7;
+	} else if (validBitsType == SOME_VALID) {
+		*validation = 0x5;
+	}
 	*(validation + 1) = 0;
 	UINT8 *slot_number = (UINT8 *)(bytes + 21);
 	*slot_number &= ~0x7; //Device ID slot number bits 0-2.
diff --git a/generator/sections/gen-section-cxl-protocol.c b/generator/sections/gen-section-cxl-protocol.c
index 5139005..1918d68 100644
--- a/generator/sections/gen-section-cxl-protocol.c
+++ b/generator/sections/gen-section-cxl-protocol.c
@@ -11,7 +11,8 @@
 
 //Generates a single pseudo-random CXL protocol error section, saving the resulting address to the given
 //location. Returns the size of the newly created section.
-size_t generate_section_cxl_protocol(void **location)
+size_t generate_section_cxl_protocol(void **location,
+				     GEN_VALID_BITS_TEST_TYPE validBitsType)
 {
 	//Create a random length for the CXL DVSEC and CXL error log.
 	//The logs attached here do not necessarily conform to the specification, and are simply random.
@@ -28,7 +29,12 @@
 
 	//Set reserved areas to zero.
 	UINT64 *validation = (UINT64 *)bytes;
-	*validation &= 0x3F;	      //Validation bits 6-63.
+	*validation &= 0x67;
+	if (validBitsType == ALL_VALID) {
+		*validation = 0x67;
+	} else if (validBitsType == SOME_VALID) {
+		*validation = 0x25;
+	}
 	for (int i = 0; i < 7; i++) {
 		*(bytes + 9 + i) = 0; //Reserved bytes 9-15.
 	}
@@ -38,6 +44,8 @@
 		for (int i = 0; i < 3; i++) {
 			*(bytes + 21 + i) = 0; //CXL agent address bytes 5-7.
 		}
+		*validation |=
+			0x18; //Device Serial Number depends on agent type
 	}
 
 	*(bytes + 34) &= ~0x7; //Device ID byte 10 bits 0-2.
diff --git a/generator/sections/gen-section-dmar.c b/generator/sections/gen-section-dmar.c
index dc34696..7c2a85f 100644
--- a/generator/sections/gen-section-dmar.c
+++ b/generator/sections/gen-section-dmar.c
@@ -11,8 +11,10 @@
 
 //Generates a single pseudo-random generic DMAr error section, saving the resulting address to the given
 //location. Returns the size of the newly created section.
-size_t generate_section_dmar_generic(void **location)
+size_t generate_section_dmar_generic(void **location,
+				     GEN_VALID_BITS_TEST_TYPE validBitsType)
 {
+	(void)validBitsType;
 	//Create random bytes.
 	int size = 32;
 	UINT8 *bytes = generate_random_bytes(size);
@@ -35,8 +37,10 @@
 
 //Generates a single pseudo-random VT-d DMAr error section, saving the resulting address to the given
 //location. Returns the size of the newly created section.
-size_t generate_section_dmar_vtd(void **location)
+size_t generate_section_dmar_vtd(void **location,
+				 GEN_VALID_BITS_TEST_TYPE validBitsType)
 {
+	(void)validBitsType;
 	//Create random bytes.
 	int size = 144;
 	UINT8 *bytes = generate_random_bytes(size);
@@ -59,8 +63,10 @@
 
 //Generates a single pseudo-random IOMMU DMAr error section, saving the resulting address to the given
 //location. Returns the size of the newly created section.
-size_t generate_section_dmar_iommu(void **location)
+size_t generate_section_dmar_iommu(void **location,
+				   GEN_VALID_BITS_TEST_TYPE validBitsType)
 {
+	(void)validBitsType;
 	//Create random bytes.
 	int size = 144;
 	UINT8 *bytes = generate_random_bytes(size);
diff --git a/generator/sections/gen-section-firmware.c b/generator/sections/gen-section-firmware.c
index e482a6b..6ec4b88 100644
--- a/generator/sections/gen-section-firmware.c
+++ b/generator/sections/gen-section-firmware.c
@@ -11,8 +11,10 @@
 
 //Generates a single pseudo-random firmware error section, saving the resulting address to the given
 //location. Returns the size of the newly created section.
-size_t generate_section_firmware(void **location)
+size_t generate_section_firmware(void **location,
+				 GEN_VALID_BITS_TEST_TYPE validBitsType)
 {
+	(void)validBitsType;
 	//Create random bytes.
 	int size = 32;
 	UINT8 *bytes = generate_random_bytes(size);
diff --git a/generator/sections/gen-section-generic.c b/generator/sections/gen-section-generic.c
index 7baf325..54de52e 100644
--- a/generator/sections/gen-section-generic.c
+++ b/generator/sections/gen-section-generic.c
@@ -11,21 +11,28 @@
 
 //Generates a single pseudo-random generic processor section, saving the resulting address to the given
 //location. Returns the size of the newly created section.
-size_t generate_section_generic(void **location)
+size_t generate_section_generic(void **location,
+				GEN_VALID_BITS_TEST_TYPE validBitsType)
 {
 	//Create random bytes.
 	size_t size = generate_random_section(location, 192);
 
 	//Set reserved locations to zero.
 	UINT8 *start_byte = (UINT8 *)*location;
-	*((UINT64 *)start_byte) &= 0xFFF;
+	UINT64 *validation = (UINT64 *)*location;
+	*validation &= 0x1FFF;
+	if (validBitsType == ALL_VALID) {
+		*validation = 0x1FFF;
+	} else if (validBitsType == SOME_VALID) {
+		*validation = 0x1555;
+	}
 	*(start_byte + 12) &= 0x7;
 	*((UINT16 *)(start_byte + 14)) = 0x0;
 
 	//Ensure CPU brand string does not terminate early.
 	for (int i = 0; i < 128; i++) {
 		UINT8 *byte = start_byte + 24 + i;
-		//CPU brand can only be ASCII
+		//Ensure only ascii is used
 		*byte = rand() % 127 + 1;
 
 		//Null terminate last byte.
diff --git a/generator/sections/gen-section-ia32x64.c b/generator/sections/gen-section-ia32x64.c
index 5415f02..647f77d 100644
--- a/generator/sections/gen-section-ia32x64.c
+++ b/generator/sections/gen-section-ia32x64.c
@@ -11,12 +11,13 @@
 #include <libcper/generator/sections/gen-section.h>
 #define IA32X64_ERROR_STRUCTURE_SIZE 64
 
-void *generate_ia32x64_error_structure();
+void *generate_ia32x64_error_structure(GEN_VALID_BITS_TEST_TYPE validBitsType);
 size_t generate_ia32x64_context_structure(void **location);
 
 //Generates a single pseudo-random IA32/x64 section, saving the resulting address to the given
 //location. Returns the size of the newly created section.
-size_t generate_section_ia32x64(void **location)
+size_t generate_section_ia32x64(void **location,
+				GEN_VALID_BITS_TEST_TYPE validBitsType)
 {
 	//Set up for generation of error/context structures.
 	UINT16 error_structure_num = rand() % 4 + 1;
@@ -27,7 +28,8 @@
 
 	//Generate the structures.
 	for (int i = 0; i < error_structure_num; i++) {
-		error_structures[i] = generate_ia32x64_error_structure();
+		error_structures[i] =
+			generate_ia32x64_error_structure(validBitsType);
 	}
 	for (int i = 0; i < context_structure_num; i++) {
 		context_structure_lengths[i] =
@@ -51,6 +53,11 @@
 	//Set header information.
 	UINT64 *validation = (UINT64 *)section;
 	*validation &= 0x3;
+	if (validBitsType == ALL_VALID) {
+		*validation = 0x3;
+	} else if (validBitsType == SOME_VALID) {
+		*validation = 0x2;
+	}
 	*validation |= error_structure_num << 2;
 	*validation |= context_structure_num << 8;
 
@@ -75,7 +82,7 @@
 }
 
 //Generates a single IA32/x64 error structure. Must later be freed.
-void *generate_ia32x64_error_structure()
+void *generate_ia32x64_error_structure(GEN_VALID_BITS_TEST_TYPE validBitsType)
 {
 	UINT8 *error_structure =
 		generate_random_bytes(IA32X64_ERROR_STRUCTURE_SIZE);
@@ -83,6 +90,11 @@
 	//Set error structure reserved space to zero.
 	UINT64 *validation = (UINT64 *)(error_structure + 16);
 	*validation &= 0x1F;
+	if (validBitsType == ALL_VALID) {
+		*validation = 0x1F;
+	} else if (validBitsType == SOME_VALID) {
+		*validation = 0x15;
+	}
 
 	//Create a random type of error structure.
 	EFI_GUID *guid = (EFI_GUID *)error_structure;
@@ -95,7 +107,7 @@
 		       sizeof(EFI_GUID));
 
 		//Set reserved space to zero.
-		*check_info &= ~0x20FF00;
+		*check_info = ~0x20FF00;
 		*check_info &= 0x3FFFFFFF;
 		break;
 
@@ -105,7 +117,7 @@
 		       sizeof(EFI_GUID));
 
 		//Set reserved space to zero.
-		*check_info &= ~0x20FF00;
+		*check_info = ~0x20FF00;
 		*check_info &= 0x3FFFFFFF;
 		break;
 
@@ -115,7 +127,7 @@
 		       sizeof(EFI_GUID));
 
 		//Set reserved space to zero.
-		*check_info &= ~0x20F800;
+		*check_info = ~0x20F800;
 		*check_info &= 0x7FFFFFFFF;
 		break;
 
@@ -125,7 +137,7 @@
 		       sizeof(EFI_GUID));
 
 		//Set reserved space to zero.
-		*check_info &= ~0xFFE0;
+		*check_info = ~0xFFC0;
 		*check_info &= 0xFFFFFF;
 		break;
 	}
diff --git a/generator/sections/gen-section-memory.c b/generator/sections/gen-section-memory.c
index 475d6d0..a45f0ce 100644
--- a/generator/sections/gen-section-memory.c
+++ b/generator/sections/gen-section-memory.c
@@ -11,7 +11,8 @@
 
 //Generates a single pseudo-random platform memory error section, saving the resulting address to the given
 //location. Returns the size of the newly created section.
-size_t generate_section_memory(void **location)
+size_t generate_section_memory(void **location,
+			       GEN_VALID_BITS_TEST_TYPE validBitsType)
 {
 	//Create random bytes.
 	int size = 80;
@@ -19,8 +20,14 @@
 
 	//Set reserved areas to zero.
 	UINT64 *validation = (UINT64 *)bytes;
-	*validation &= 0x2FFFFF; //Validation 22-63
-	*(bytes + 73) &= ~0x1C;	 //Extended bits 2-4
+	//Validation 22-63 reserved. 19/20=0 for bank
+	*validation &= 0x27FFFF;
+	if (validBitsType == ALL_VALID) {
+		*validation = 0x27FFFF;
+	} else if (validBitsType == SOME_VALID) {
+		*validation = 0x275555;
+	}
+	*(bytes + 73) &= ~0x1C; //Extended bits 2-4
 
 	//Fix values that could be above range.
 	*(bytes + 72) = rand() % 16; //Memory error type
@@ -35,7 +42,8 @@
 
 //Generates a single pseudo-random memory 2 error section, saving the resulting address to the given
 //location. Returns the size of the newly created section.
-size_t generate_section_memory2(void **location)
+size_t generate_section_memory2(void **location,
+				GEN_VALID_BITS_TEST_TYPE validBitsType)
 {
 	//Create random bytes.
 	int size = 96;
@@ -43,8 +51,14 @@
 
 	//Set reserved areas to zero.
 	UINT64 *validation = (UINT64 *)bytes;
-	*validation &= 0x2FFFFF; //Validation 22-63
-	*(bytes + 63) = 0;	 //Reserved byte 63
+	//Validation 22-63, 20/21 is 0 since 6 is valid
+	*validation &= 0xFFFFF;
+	if (validBitsType == ALL_VALID) {
+		*validation = 0xFFFFF;
+	} else if (validBitsType == SOME_VALID) {
+		*validation = 0x55555;
+	}
+	*(bytes + 63) = 0; //Reserved byte 63
 
 	//Fix values that could be above range.
 	*(bytes + 61) = rand() % 16; //Memory error type
diff --git a/generator/sections/gen-section-nvidia.c b/generator/sections/gen-section-nvidia.c
index 3d2b706..a06f545 100644
--- a/generator/sections/gen-section-nvidia.c
+++ b/generator/sections/gen-section-nvidia.c
@@ -13,8 +13,10 @@
 
 //Generates a single pseudo-random NVIDIA error section, saving the resulting address to the given
 //location. Returns the size of the newly created section.
-size_t generate_section_nvidia(void **location)
+size_t generate_section_nvidia(void **location,
+			       GEN_VALID_BITS_TEST_TYPE validBitsType)
 {
+	(void)validBitsType;
 	const char *signatures[] = {
 		"DCC-ECC",   "DCC-COH",	      "HSS-BUSY",      "HSS-IDLE",
 		"CLink",     "C2C",	      "C2C-IP-FAIL",   "L0 RESET",
diff --git a/generator/sections/gen-section-pci-bus.c b/generator/sections/gen-section-pci-bus.c
index 1e424bf..ca0f255 100644
--- a/generator/sections/gen-section-pci-bus.c
+++ b/generator/sections/gen-section-pci-bus.c
@@ -11,7 +11,8 @@
 
 //Generates a single pseudo-random PCI/PCI-X bus error section, saving the resulting address to the given
 //location. Returns the size of the newly created section.
-size_t generate_section_pci_bus(void **location)
+size_t generate_section_pci_bus(void **location,
+				GEN_VALID_BITS_TEST_TYPE validBitsType)
 {
 	//Create random bytes.
 	int size = 72;
@@ -20,6 +21,11 @@
 	//Set reserved areas to zero.
 	UINT64 *validation = (UINT64 *)bytes;
 	*validation &= 0x1FF; //Validation 9-63
+	if (validBitsType == ALL_VALID) {
+		*validation = 0x1FF;
+	} else if (validBitsType == SOME_VALID) {
+		*validation = 0x155;
+	}
 	UINT32 *reserved = (UINT32 *)(bytes + 20);
 	*reserved = 0;
 	UINT64 *bus_command = (UINT64 *)(bytes + 40);
diff --git a/generator/sections/gen-section-pci-dev.c b/generator/sections/gen-section-pci-dev.c
index 999739a..6deac59 100644
--- a/generator/sections/gen-section-pci-dev.c
+++ b/generator/sections/gen-section-pci-dev.c
@@ -11,7 +11,8 @@
 
 //Generates a single pseudo-random PCI component error section, saving the resulting address to the given
 //location. Returns the size of the newly created section.
-size_t generate_section_pci_dev(void **location)
+size_t generate_section_pci_dev(void **location,
+				GEN_VALID_BITS_TEST_TYPE validBitsType)
 {
 	//Generate how many register pairs will be attached to this section.
 	UINT32 num_memory_pairs = rand() % 4;
@@ -24,7 +25,12 @@
 
 	//Set reserved areas to zero.
 	UINT64 *validation = (UINT64 *)bytes;
-	*validation &= 0x1F;	       //Validation 5-63
+	*validation &= 0x1F; //Validation 5-63
+	if (validBitsType == ALL_VALID) {
+		*validation = 0x1F;
+	} else if (validBitsType == SOME_VALID) {
+		*validation = 0x15;
+	}
 	for (int i = 0; i < 5; i++) {
 		*(bytes + 27 + i) = 0; //Bytes 11-15 of ID info.
 	}
diff --git a/generator/sections/gen-section-pcie.c b/generator/sections/gen-section-pcie.c
index eaf050c..db9dfd9 100644
--- a/generator/sections/gen-section-pcie.c
+++ b/generator/sections/gen-section-pcie.c
@@ -13,7 +13,8 @@
 
 //Generates a single pseudo-random PCIe error section, saving the resulting address to the given
 //location. Returns the size of the newly created section.
-size_t generate_section_pcie(void **location)
+size_t generate_section_pcie(void **location,
+			     GEN_VALID_BITS_TEST_TYPE validBitsType)
 {
 	//Create random bytes.
 	int size = 208;
@@ -21,7 +22,12 @@
 
 	//Set reserved areas to zero.
 	UINT64 *validation = (UINT64 *)bytes;
-	*validation &= 0xFF;   //Validation 8-63
+	*validation &= 0xFF; //Validation 8-63
+	if (validBitsType == ALL_VALID) {
+		*validation = 0xFF;
+	} else if (validBitsType == SOME_VALID) {
+		*validation = 0x55;
+	}
 	UINT32 *version = (UINT32 *)(bytes + 12);
 	*version &= 0xFFFF;    //Version bytes 2-3
 	UINT32 *reserved = (UINT32 *)(bytes + 20);
