private void grabEquates(Function dbFunction) {
		// Find named constants via Equates
		Program program = dbFunction.getProgram();
		EquateTable equateTable = program.getEquateTable();
		Listing listing = program.getListing();
		AddressIterator equateAddresses = equateTable.getEquateAddresses(dbFunction.getBody());
		while (equateAddresses.hasNext()) {
			Address defAddr = equateAddresses.next();
			for (Equate eq : equateTable.getEquates(defAddr)) {
				List<EquateReference> references = eq.getReferences(defAddr);
				String displayName = eq.getDisplayName();
				long eqValue = eq.getValue();

				EquateSymbol eqSymbol;
				for (EquateReference ref : references) {
					long hashVal = ref.getDynamicHashValue();
					if (hashVal == 0) {
						// Multiple varnodes of the same constant
						Instruction instr = listing.getInstructionAt(defAddr);
						if (instr == null) {
							continue;
						}
						long hash[] = DynamicHash.calcConstantHash(instr, eqValue);
						if (hash.length == 0) {
							continue;
						}
						Arrays.sort(hash);		// Sort in preparation for deduping
						for (int i = 0; i < hash.length; ++i) {
							if (i != 0 && hash[i - 1] == hash[i]) {
								continue;		// Found a duplicate, skip it
							}
							// Emit each varnode copy as a separate EquateSymbol
							eqSymbol = newEquateSymbol(0, displayName, eqValue, hash[i], defAddr);
							symbolMap.put(eqSymbol.getId(), eqSymbol);
						}
					}
					else {
						eqSymbol = newEquateSymbol(0, displayName, eqValue, hashVal, defAddr);
						symbolMap.put(eqSymbol.getId(), eqSymbol);
					}
				}
			}
		}
	}
Build dynamic symbols based on equates
@param dbFunction is the function to pull equates for
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/LocalSymbolMap.java