private void routeToTheRight(Vertex2d start, Vertex2d end, Vertex2dFactory vertex2dFactory,
			List<Point2D> articulations) {

		//
		// For routing to the right we will leave the start vertex from the right side and
		// enter the end vertex on the left side.   As the vertices get further apart, we will
		// space them further in towards the center.  This will keep edges with close endpoints
		// from intersecting edges with distant endpoints.
		//

		int delta = end.rowIndex - start.rowIndex;
		if (delta < 0) {
			delta = -delta; // going up
		}
		int multiplier = EDGE_ENDPOINT_DISTANCE_MULTIPLIER;
		if (useSimpleRouting()) {
			multiplier = 1; // we allow edges to overlap with 'simple routing'
		}
		int distanceSpacing = delta * multiplier;

		double startRightX = start.getRight();
		double x1 = startRightX - VERTEX_BORDER_THICKNESS; // start at the end

		// spacing moves closer to center as the distance grows
		x1 -= distanceSpacing;

		// restrict x from moving past the end vertex x value to force the edge to enter
		// from the side
		double endLeftX = end.getLeft() - end.getEdgeOffset();
		x1 = Math.min(x1, endLeftX);

		// restrict from moving backwards past the center
		double startXLimit = start.getX() + VERTEX_BORDER_THICKNESS;
		x1 = Math.max(x1, startXLimit);

		double y1 = start.getY();
		articulations.add(new Point2D.Double(x1, y1)); // point is hidden behind the vertex

		// Use the spacing to move the y value towards the top of the vertex.  Just like with
		// the x value, restrict the y to the range between the edge and the center.
		double x2 = x1;
		double y2 = end.getTop() + VERTEX_BORDER_THICKNESS;

		// spacing moves closer to center as the distance grows
		y2 += distanceSpacing;

		// restrict from moving forwards past the center
		double endYLimit = end.getY() - VERTEX_BORDER_THICKNESS;
		y2 = Math.min(y2, endYLimit);
		articulations.add(new Point2D.Double(x2, y2));

		routeAroundColumnVertices(start, end, vertex2dFactory, articulations, x2);

		double x3 = x2;
		double y3 = end.getY();
		articulations.add(new Point2D.Double(x3, y3)); // point is hidden behind the vertex

		double x4 = end.getX();
		double y4 = y3;
		articulations.add(new Point2D.Double(x4, y4)); // point is hidden behind the vertex
	}
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