private int ssCompare (final int p1, final int p2, final int depth) {

		final int[] SA = this.SA;
		final byte[] T = this.T;

		final int U1n, U2n; // pointers within T
		int U1, U2;

		for (
				U1 = depth + SA[p1], U2 = depth + SA[p2], U1n = SA[p1 + 1] + 2, U2n = SA[p2 + 1] + 2;
				(U1 < U1n) && (U2 < U2n) && (T[U1] == T[U2]);
				++U1, ++U2
		    );

		return U1 < U1n ?
				  (U2 < U2n ? (T[U1] & 0xff) - (T[U2] & 0xff) : 1)
				: (U2 < U2n ? -1 : 0);

	}