private SearchPair SEARCH(int p, int[] raw_buffer, int raw, int raw_end) {
		int l = BLZ_THRESHOLD;
		int max = (raw >= BLZ_N) ? BLZ_N : raw;
		for (int pos = 3; pos <= max; pos++) {
			int len;
			for (len = 0; len < BLZ_F; len++) {
				if (raw + len == raw_end) {
					break;
				}
				if (len >= pos) {
					break;
				}
				if (raw_buffer[raw + len] != raw_buffer[raw + len - pos]) {
					break;
				}
			}

			if (len > l) {
				p = pos;
				if ((l = len) == BLZ_F) {
					break;
				}
			}
		}
		return new SearchPair(l, p);
	}