/*uint64 funnel_shift(uint64 low, uint64 high, int start, int size) { assert(start>=0 && size>0 && start+size<=128); uint128 v=(uint128(high)<<64) | uint128(low); v>>=start; v&=~(uint128(1)<=0 && start<64); assert(size>=0 && start+size<=64); t >>= start; t &= (1ull<=0 && start<64); assert(size>=0 && start+size<=64); assert( ( bits & ~((1ull<0 && size<64); assert( ( bits & ~((1ull<=0;--x) { bool v=bits&(1ull<