private PcodeOp[] doCallOtherPcodeInjection(Instruction instr, Varnode ins[], Varnode out) {
		Program prog = instr.getProgram();

		PcodeInjectLibrary snippetLibrary = prog.getCompilerSpec().getPcodeInjectLibrary();
		InjectPayload payload = findPcodeInjection(prog, snippetLibrary, ins[0].getOffset());
		// no injection defined for this call-other pcodeop
		if (payload == null) {
			return null;
		}

		ArrayList<Varnode> inputs = new ArrayList<Varnode>();
		for (int i = 1; i < ins.length; i++) {
			Varnode vval = context.getValue(ins[i], evaluator);
			if (vval == null || !context.isConstant(vval)) {
				return null;
			}
			inputs.add(vval);
		}

		InjectContext con = snippetLibrary.buildInjectContext();
		con.baseAddr = instr.getMinAddress();
		con.nextAddr = con.baseAddr.add(instr.getDefaultFallThroughOffset());
		con.callAddr = null;
		con.refAddr = con.callAddr;
		con.inputlist = inputs;
		con.output = new ArrayList<Varnode>();
		if (out != null) {
			con.output.add(out);
		}
		try {
			return payload.getPcode(prog, con);
		}
		catch (Exception e) {
			Msg.warn(this, e.getMessage());
		}
		return null;
	}
Check for pcode replacement for a callother pcode op

@param instr instruction whose pcodeop we might replace
@param ins input varnodes to callother pcodeop, ins[0] is callother nameindex
@param out output varnode for pcodeop
@return pcode that should replace callother, null otherwise
Ghidra/Features/Base/src/main/java/ghidra/program/util/SymbolicPropogator.java