u16_t bit; u8_t nr = 0; do { bit = (bit << 8) | *src++; nr += 8; do { nr -= 5; N(i) = (bit >> nr) & 0x1f; } while (nr >= 5); } while(???);