*u2p = bit_value >> (7 - pool->bit);
*u8p = bit_value >> (7 - pool->bit);
do_bit(XPTCursor *cursor, uint8 *u8p, int bitno){    int bit_value, delta, new_value;    XPTDatapool *pool = state->pool;    if (state->mode == XPT_ENCODE) {        bit_value = (*u8p & 1) << (bitno);   /* 7 = 0100 0000, 6 = 0010 0000 */        if (bit_value) {            delta = pool->bit + (bitno) - 7;            new_value = delta >= 0 ? bit_value >> delta : bit_value << -delta;            pool->data[pool->count] |= new_value;        }    } else {        bit_value = pool->data[pool->count] & (1 << (7 - pool->bit));        *u2p = bit_value >> (7 - pool->bit);    }    if (++pool->bit == 8) {        pool->count++;        pool->bit = 0;    }    return CHECK_COUNT(state);}