private boolean markupScalarWithImpliedRegisterVariable(Instruction instr, Function func,
			Scalar scalarToReplace, int scalarIndex, Register associatedRegister,
			List<Object> representationList) {

		if (func == null || !options.doRegVariableMarkup ||
			!options.includeInferredVariableMarkup) {
			return false;
		}

		long scalarValue = scalarToReplace.getValue();
		if (scalarToReplace.isSigned() && scalarValue <= 0) {
			return false;
		}

		Variable regVar = instr.getProgram()
				.getFunctionManager()
				.getReferencedVariable(instr.getMinAddress(), associatedRegister.getAddress(),
					associatedRegister.getMinimumByteSize(), true);
		if (regVar == null) {
			return false;
		}

		// TODO: SCR 8400 - prevent this type of markup unless variable is a composite pointer
		// with positive offset within the bounds of the a single composite instance
		DataType dt = removeTypeDefs(regVar.getDataType());
		if (!(dt instanceof Pointer)) {
			return false;
		}

		dt = ((Pointer) dt).getDataType();
		dt = removeTypeDefs(dt);
		if (dt == null || !(dt instanceof Composite) || scalarValue > dt.getLength()) {
			return false;
		}

		VariableOffset variableOffset = new VariableOffset(regVar, scalarValue, true, true);
		variableOffset.setReplacedElement(scalarToReplace,
			options.includeScalarReferenceAdjustment);
		representationList.set(scalarIndex, variableOffset);
		return true;
	}
Markup scalar with implied register variable reference if one can be
determined.

@param instr instruction
@param func function containing instruction
@param scalarToReplace
@param scalarIndex index of scalarToReplace within representationList
@param associatedRegister register associated with scalarToReplace via an
           INT_ADD operation
@param representationList
Ghidra/Features/Base/src/main/java/ghidra/program/model/listing/CodeUnitFormat.java