public static <T> T catenate(PcodeArithmetic<T> arithmetic, int sizeTotal, T upper, T lower,
			int sizeLower) {
		T zext = arithmetic.unaryOp(PcodeOp.INT_ZEXT, sizeTotal, sizeLower, lower);
		T shift = arithmetic.binaryOp(PcodeOp.INT_LEFT, sizeTotal, sizeTotal, upper, 4,
			arithmetic.fromConst(sizeLower * 8, 4));
		return arithmetic.binaryOp(PcodeOp.INT_OR, sizeTotal, sizeTotal, shift, sizeTotal, zext);
	}
A convenience for concatenating two varnodes

<p>
There is no p-code op for catenation, but it is easily achieved as one might do in C or
SLEIGH: {@code shift} the left piece then {@code or} it with the right piece.

@param <T> the type of values
@param arithmetic the p-code arithmetic for values of type {@code T}
@param sizeTotal the expected output size in bytes
@param upper the value of the left (more significant) piece
@param lower the value of the right (less significant) piece
@param sizeLower the size of the lower piece
@return the result of concatenation
Ghidra/Debug/ProposedUtils/src/main/java/ghidra/pcode/eval/ArithmeticVarnodeEvaluator.java