Can you say anything about the adjacent byte values that represent an empty pair?
I want to propose looking at the bytes rather than the bits.
Any given byte if it is to be the left hand contributer of a pair of empty 6 bits chars must fit a particular bit mask whose value depends upon his postion. ?? ?? 00 00 or ?? 00 00 00 or whatever. You can consider each byte in turn for their candidacy as a left most byte. A simple lookup table of which mask to use is possible.
Hence we don't actually have to pull out the 6bit chars before considering them.
Can we do better, having discarded a byte as a candidate, can we now skip the one to left?
In the case where our mask was 00 00 00 00 if that fails then the our neighbour to the left, yes if the first bit is set.
Does that actually make things any faster?