@Override
			public int compare(DataCtrl o0, DataCtrl o1) {
				int hash0 = o0.ctrlNGram.hash;
				int hash1 = o1.ctrlNGram.hash;
				if (hash0 < hash1) {
					return -1;
				}
				if (hash0 > hash1) {
					return 1;
				}
				CtrlVertex o0Block = o0.ctrlNGram.root;
				CtrlVertex o1Block = o1.ctrlNGram.root;
				int res = o0Block.graph.side.compareTo(o1Block.graph.side);
				if (res != 0) {
					return res;
				}
				if (o0Block.uid < o1Block.uid) {
					return -1;
				}
				if (o0Block.uid > o1Block.uid) {
					return 1;
				}
				PcodeOp op0 = o0.dataVertex.isOp() ? o0.dataVertex.op : o0.dataVertex.vn.getDef();
				PcodeOp op1 = o1.dataVertex.isOp() ? o1.dataVertex.op : o1.dataVertex.vn.getDef();
				int order0 = op0.getSeqnum().getOrder();
				int order1 = op1.getSeqnum().getOrder();
				if (order0 < order1) {
					return -1;
				}
				if (order0 > order1) {
					return 1;
				}
				return 0;
			}
Sort by control-flow n-gram, then by side.
Within this group, sort by block (multiple blocks can have the same hash),
then by PcodeOp order within the block.
Ghidra/Features/CodeCompare/src/main/java/ghidra/features/codecompare/graphanalysis/Pinning.java