private int ssMedian5 (final int Td, final int PA, int v1, int v2, int v3, int v4, int v5) {

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

		int T_v1 = T[Td + SA[PA + SA[v1]]] & 0xff;
		int T_v2 = T[Td + SA[PA + SA[v2]]] & 0xff;
		int T_v3 = T[Td + SA[PA + SA[v3]]] & 0xff;
		int T_v4 = T[Td + SA[PA + SA[v4]]] & 0xff;
		int T_v5 = T[Td + SA[PA + SA[v5]]] & 0xff;
		int temp;
		int T_vtemp;

		if (T_v2 > T_v3) {
			temp = v2;
			v2 = v3;
			v3 = temp;
			T_vtemp = T_v2;
			T_v2 = T_v3;
			T_v3 = T_vtemp;
		}
		if (T_v4 > T_v5) {
			temp = v4;
			v4 = v5;
			v5 = temp;
			T_vtemp = T_v4;
			T_v4 = T_v5;
			T_v5 = T_vtemp;
		}
		if (T_v2 > T_v4) {
			temp = v2;
			v2 = v4;
			v4 = temp;
			T_vtemp = T_v2;
			T_v2 = T_v4;
			T_v4 = T_vtemp;
			temp = v3;
			v3 = v5;
			v5 = temp;
			T_vtemp = T_v3;
			T_v3 = T_v5;
			T_v5 = T_vtemp;
		}
		if (T_v1 > T_v3) {
			temp = v1;
			v1 = v3;
			v3 = temp;
			T_vtemp = T_v1;
			T_v1 = T_v3;
			T_v3 = T_vtemp;
		}
		if (T_v1 > T_v4) {
			temp = v1;
			v1 = v4;
			v4 = temp;
			T_vtemp = T_v1;
			T_v1 = T_v4;
			T_v4 = T_vtemp;
			temp = v3;
			v3 = v5;
			v5 = temp;
			T_vtemp = T_v3;
			T_v3 = T_v5;
			T_v5 = T_vtemp;
		}
		if (T_v3 > T_v4) {
			return v4;
		}
		return v3;

	}