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

		lighten(e);

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

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

		double x1 = start.getX() - VERTEX_BORDER_THICKNESS; // start at the center

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

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

		// restrict x from moving past the end vertex x value to force the edge to enter
		// from the side
		double endRightX = end.getRight() - VERTEX_BORDER_THICKNESS;
		x1 = Math.max(x1, endRightX);

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

		double x2 = x1;
		double y2 = start.getBottom() + start.getEdgeOffset();
		articulations.add(new Point2D.Double(x2, y2)); // out of the bottom of the vertex

		// Use the spacing to move the end x value towards the center of the vertex
		double x3 = endRightX - VERTEX_BORDER_THICKNESS; // start at the end			

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

		// restrict x from moving past the end vertex center x
		int edgeOffset = 0;
		if (usesEdgeArticulations()) {
			// for now, only offset edge lines when we are performing complex routing
			edgeOffset = EDGE_OFFSET_INCOMING_FROM_LEFT;
		}
		double endXLimit = end.getX() + VERTEX_BORDER_THICKNESS + edgeOffset;
		x3 = Math.max(x3, endXLimit);
		double y3 = y2;
		articulations.add(new Point2D.Double(x3, y3)); // into the top of the end vertex

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

		double x4 = x3;
		double y4 = end.getY();
		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