private void deserializeHashHeader(PdbByteReader reader) throws PdbException {
		headerSignature = reader.parseInt();
		if (headerSignature == HEADER_SIGNATURE) {
			hashHeaderLength = HASH_70_HEADER_LENGTH;
			versionNumber = reader.parseInt();
			hashRecordsLength = reader.parseInt();
			bucketsLength = reader.parseInt();
			hashRecordsOffset = symbolHashOffset + reader.getIndex();
			bucketsOffset = hashRecordsOffset + hashRecordsLength;
		}
		else {
			hashHeaderLength = HASH_PRE70_HEADER_LENGTH;
			reader.reset(); // There was no header
			// Calculate the values
			bucketsLength = 4 * (numHashRecords + 1);
			if (symbolHashLength < bucketsLength) {
				throw new PdbException("Not enough data for symbol hash buckets.");
			}
			hashRecordsLength = symbolHashLength - bucketsLength;
			hashRecordsOffset = symbolHashOffset + 0;
			bucketsOffset = hashRecordsOffset + hashRecordsLength;
		}
	}
Deserialize the header of the Hash from the {@link PdbByteReader} provided
@param reader {@link PdbByteReader} containing the data buffer to process
@throws PdbException upon not enough data left to parse
Ghidra/Features/PDB/src/main/java/ghidra/app/util/bin/format/pdb2/pdbreader/AbstractSymbolInformation.java