public Instruction findMatchingPush() {
		int count = 0;
		Instruction instr = this;
		int poppush[] = new int[2];
		while (true) {
			if (instr.preds != null)
				return null;
			instr = instr.prevByAddr;
			if (instr == null || instr.succs != null || instr.doesAlwaysJump())
				return null;

			instr.getStackPopPush(poppush);
			if (count < poppush[1]) {
				return count == 0 ? instr : null;
			}
			count += poppush[0] - poppush[1];
		}
	}