U64 nextBit( U64 **p, U8 *o ) { // p: pointer to pointer to current quad; o: pointer to current offset if( ++( *o ) == 64 ) { // increment the offset and detect transitions across quad boundaries. *o = 0; // reset the offset. ++*p; // increment the quad pointer. } // Get the 'current' (unshifted) quad value; and the next return __shiftleft128( *( *p + 1 ), **p, *o ); // return the value from the higher location with *o bits from lo shifted in from the right. }