@Override
			public boolean evaluateReference(VarnodeContext context, Instruction instr, int pcodeop,
					Address address, int size, DataType dataType, RefType refType) {

				// if this is a call, some processors use the register value
				// used in the call for PIC calculations
				if (refType.isFlow()) {
					if (address.isExternalAddress()) {
						return true;
					}
					
					// set the called function to have a constant value for this register
					// WARNING: This might not always be the case, if called directly or with a different register
					//          But then it won't matter, because the function won't depend on the registers value.
					if (instr.getFlowType().isCall()) {
						propagateR12ToCall(program, context, address);
					}

					if (refType.isComputed()) {
						boolean doRef = super.evaluateReference(context, instr, pcodeop, address,
							size, dataType, refType);
						if (!doRef) {
							return false;
						}
						if (checkComputedRelativeBranch(program, monitor, instr, address, refType,
							pcodeop)) {
							return false;
						}
						return doRef;
					}
				}

				// in the Early analyzer, don't lay down anything other than computed call references
				return false;
			}
The early SH4 address analyzer runs right after disassembly to lay down
any dynamic call or jump references and to install the R12 value which
is use for PIC calculations.
Other calculated references will occur when the functions are better
formed to stop mistakes in functions that flow together incorrectly.
Ghidra/Processors/SuperH4/src/main/java/ghidra/app/plugin/core/analysis/SH4EarlyAddressAnalyzer.java