public static Address setTargetContextForDisassembly(DisassemblerContext procContext,
			Address addr) {
		if (!addr.isMemoryAddress()) {
			Msg.error(PseudoDisassembler.class,
				"Invalid attempt to adjust disassembler context at " + addr.toString(true));
			return addr;
		}

		long offset = addr.getOffset();
		if ((offset & 1) == 0) {
			return addr;
		}

		Register lowBitCodeMode = procContext.getRegister(LOW_BIT_CODE_MODE_REGISTER_NAME);
		if (lowBitCodeMode == null) {
			return addr;
		}

		// Set context and revise addr (clear lsb of offset)
		addr = addr.getNewAddress(addr.getOffset() & ~0x1);
		RegisterValue val = new RegisterValue(lowBitCodeMode, BigInteger.ONE);
		procContext.setFutureRegisterValue(addr, val);
		return addr;
	}
In order to check a location to see if it disassembles from an address reference, the
address is checked for low-bit code switch behavior.  If it does switch, the context
is changed.

@param procContext context to change
@param addr destination address that will be disassembled (possible pseudo disassembled)
@return the correct disassembly location if the address needed to be adjusted.
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/app/util/PseudoDisassembler.java