private void handleStatusModification(Instruction instr) {
		fs32Context.writeValue(instr.getMaxAddress());
		fs10Context.writeValue(instr.getMaxAddress());
		String mnemonic = instr.getMnemonicString();
		if ("CLRF".equals(mnemonic)) {
			fs32Context.setValueAt(instr, 0, false);
			fs10Context.setValueAt(instr, 0, false);
		}
		else if ("SETF".equals(mnemonic)) {
			fs32Context.setValueAt(instr, 0x3, false);
			fs10Context.setValueAt(instr, 0x3, false);
		}
		else if ("BSF".equals(mnemonic)) {
			Scalar s = instr.getScalar(1);
			boolean success = false;
			if (s != null) {
				int bit = (int) s.getUnsignedValue();
				if (bit == 6 || bit == 7) {
					success = fs32Context.setBitAt(instr, bit - 6);
				}
				else if (bit == 4 || bit == 5) {
					success = fs10Context.setBitAt(instr, bit - 4);
				}
				else {
					success = true; // ignore untracked portions of alusta reg
				}
			}
			if (!success) {
				Msg.warn(this, "Unhandled ALUSTA bit-set at: " + instr.getMinAddress());
			}
		}
		else if ("BCF".equals(mnemonic)) {
			Scalar s = instr.getScalar(1);
			boolean success = false;
			if (s != null) {
				int bit = (int) s.getUnsignedValue();
				if (bit == 6 || bit == 7) {
					success = fs32Context.clearBitAt(instr, bit - 6);
				}
				else if (bit == 4 || bit == 5) {
					success = fs10Context.clearBitAt(instr, bit - 4);
				}
				else {
					success = true; // ignore untracked portions of alusta reg
				}
			}
			if (!success) {
				Msg.warn(this, "Unhandled ALUSTA bit-set at: " + instr.getMinAddress());
			}
		}
		else if ("BTG".equals(mnemonic)) {
			Scalar s = instr.getScalar(1);
			if (s != null) {
				byte bit = (byte) s.getUnsignedValue();

				RegisterContextBuilder ctx;
				if (bit == 6 || bit == 7) {
					ctx = fs32Context;
					bit -= 6;
				}
				else if (bit == 4 || bit == 5) {
					ctx = fs10Context;
					bit -= 4;
				}
				else {
					return;
				}
				if (!ctx.hasValue()) {
					return;
				}
				byte bitmask = (byte) (1 << bit);
				long fsVal = ctx.longValue();
				if ((fsVal & bitmask) == 0) {
					fsVal = (byte) (fsVal | bitmask); // set bit
				}
				else {
					fsVal = (byte) (fsVal & ~bitmask); // clear bit
				}
				ctx.setValueAt(instr, fsVal, false);
			}
			else {
				// Unhandled ALUSTA modification
				Msg.warn(this, "Unhandled ALUSTA bit-toggle at: " + instr.getMinAddress());
				fs32Context.setValueUnknown();
				fs10Context.setValueUnknown();
			}
		}
		else if ("MOVWF".equals(mnemonic)) {
			if (wContext.hasValue()) {
				fs32Context.setValueAt(instr, wContext.longValue() >> 6, false);
				fs10Context.setValueAt(instr, wContext.longValue() >> 4, false);
			}
			else {
				fs32Context.setValueUnknown();
				fs10Context.setValueUnknown();
				Msg.warn(this, "Unhandled ALUSTA change at: " + instr.getMinAddress());
			}
		}
		else if ("MOVFP".equals(mnemonic) || "MOVPF".equals(mnemonic)) {
			Object[] objs = instr.getOpObjects(0);
			if (objs.length == 0 && (wReg.equals(objs[0]) || wReg.getAddress().equals(objs[0])) &&
				wContext.hasValue()) {
				fs32Context.setValueAt(instr, wContext.longValue() >> 6, false);
				fs10Context.setValueAt(instr, wContext.longValue() >> 4, false);
			}
			else {
				fs32Context.setValueUnknown();
				fs10Context.setValueUnknown();
				Msg.warn(this, "Unhandled ALUSTA change at: " + instr.getMinAddress());
			}
		}
		else if (REG_S_MODIFICATION_MNEMONICS.contains(mnemonic)) {
			fs32Context.setValueUnknown();
			fs10Context.setValueUnknown();
			Msg.warn(this, "Unhandled ALUSTA change at: " + instr.getMinAddress());
		}
		else if (REG_MODIFICATION_MNEMONICS.contains(mnemonic)) {
			if (instr.getNumOperands() == 2) { // REG_D type instructions
				List<?> repObjs = instr.getDefaultOperandRepresentationList(1);
				if (repObjs.size() == 1 && DEST_FREG.equals(repObjs.get(0))) {
					// Unhandled alusta modification
					fs32Context.setValueUnknown();
					fs10Context.setValueUnknown();
					Msg.warn(this, "Unhandled ALUSTA change at: " + instr.getMinAddress());
				}
			}
			else if (instr.getNumOperands() == 1) {
				// Unhandled alusta modification
				fs32Context.setValueUnknown();
				fs10Context.setValueUnknown();
				Msg.warn(this, "Unhandled ALUSTA change at: " + instr.getMinAddress());
			}
		}
	}
Attempt to markup FReg access instruction with register reference.

@param instr
@return register name if identified, else null
Ghidra/Processors/PIC/src/main/java/ghidra/app/plugin/core/analysis/Pic17c7xxAnalyzer.java