U64 nextQuad( U64 **p, U8 o ) { // p: pointer to pointer to the 'current' quad; o: value of the unused bits at the beginning. U64 hi = *( ++*p ) // increment the pointer at *p, and set hi to the value it points at. , lo = *( *p+1 ); // and lo to the value + 1 it points at return __shiftleft128( lo, hi, o ); // return the value from the higher location with o bits from lo shifted in from the right. }