public static PcodeOp findOp(PcodeSyntaxTree fd, Address addr, long h) {
		DynamicHash dhash = new DynamicHash();
		int method = getMethodFromHash(h);
		int slot = getSlotFromHash(h);
		int total = getTotalFromHash(h);
		int pos = getPositionFromHash(h);
		h = clearTotalPosition(h);
		ArrayList<PcodeOp> oplist = new ArrayList<>();
		ArrayList<PcodeOp> oplist2 = new ArrayList<>();
		gatherOpsAtAddress(oplist, fd, addr);
		for (PcodeOp tmpop : oplist) {
			if (slot >= tmpop.getNumInputs()) {
				continue;
			}
			dhash.clear();
			dhash.calcHash(tmpop, slot, method);
			if (getComparable(dhash.getHash()) == getComparable(h)) {
				oplist2.add(tmpop);
			}
		}
		if (total != oplist2.size()) {
			return null;
		}
		return oplist2.get(pos);
	}
Encode a particular PcodeOp and slot
@param op is the PcodeOp to preserve
@param slot is the slot to preserve (-1 for output, >=0 for input)
@param method is the method to use for encoding (4, 5, or 6)
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/DynamicHash.java