public MaskedLong readContextOp(ContextOp cop) {
		// Pull defined bits from the pattern block that also fall within the "mask" of the op.
		// It bothers me, this int => long conversion. Can a context operation not read more
		// than 32 bits?
		int idx = cop.getWordIndex();
		long cmsk = cop.getMask() & 0xffffffffL;
		long lmsk = 0;
		for (int i = 0; i < 4; i++) {
			lmsk <<= 8;
			lmsk |= checkRead(mask, idx * 4 + i - offset, 0);
		}
		long rmsk = lmsk & cmsk; // resulting mask
		if (rmsk == 0) {
			return MaskedLong.UNKS;
		}

		long rval = 0; // resulting value
		for (int i = 0; i < 4; i++) {
			rval <<= 8;
			rval |= checkRead(vals, idx * 4 + i - offset, 0);
		}
		// Shift the two separately to spare an object instantiation.
		return MaskedLong.fromMaskAndValue(rmsk >>> cop.getShift(), rval >>> cop.getShift());
	}
Read the input of a context operation from this pattern block

@param cop the context operation
@return the decoded input, as a masked value
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/app/plugin/assembler/sleigh/sem/AssemblyPatternBlock.java