private List<Point2D> routeLoopEdge(Vertex2d start, Vertex2d end, double x) {

		// going backwards
		List<Point2D> articulations = new ArrayList<>();

		int startRow = start.rowIndex;
		int endRow = end.rowIndex;
		if (startRow > endRow) { // going upwards			
			endRow = start.rowIndex;
			startRow = end.rowIndex;
		}

		int delta = endRow - startRow;
		x += delta; // adding the delta makes overlap less likely

		Point2D startVertexPoint = start.center;
		double y1 = startVertexPoint.getY();
		Point2D first = new Point2D.Double(x, y1);
		articulations.add(first);

		// loop second point - same y coord as destination;
		// 					   x is the col after the outermost dominated vertex

		Point2D endVertexPoint = end.center;
		double y2 = endVertexPoint.getY();
		Point2D second = new Point2D.Double(x, y2);
		articulations.add(second);

		return articulations;
	}
An amount by which edges entering a vertex from the left are offset to avoid overlapping
Ghidra/Features/FunctionGraphDecompilerExtension/src/main/java/ghidra/app/plugin/core/functiongraph/graph/layout/DecompilerNestedLayout.java