@Override
	public RegisterValue getRegisterValue(Register register) {
		if (register == null) {
			return null;
		}
		if (register.isProcessorContext()) {
			RegisterValue registerValue = null;
			if (contextRegister != null) {
				registerValue = contextRegisterValue.getRegisterValue(register);
			}
			return registerValue;
		}

		Register baseRegister = register.getBaseRegister();

		// if we have a current value and it specifies all the required bits then return it
		RegisterValue value = registerStateMap.get(baseRegister);
		if (value != null) {
			value = value.getRegisterValue(register);
		}
		if (value != null && value.hasValue()) {
			return value;
		}

		// otherwise get the value stored in the program and combine with any current bits
		RegisterValue programValue = programContext.getRegisterValue(baseRegister, currentAddress);
		if (programValue == null) {
			return value;
		}
		programValue = programValue.getRegisterValue(register);

		return programValue.combineValues(value);
	}
Ends the current flow.  Unsaved register values will be saved up to and including max address.
@param maxAddress the maximum address of an instruction flow.  If maxAddress is null,
or the current flow address has already advanced beyond maxAddress, then no save is performed.
@throws IllegalStateException if a flow has not been started.
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/disassemble/DisassemblerContextImpl.java