in include/yyjson/yyjson.c [4166:4187]
static_inline void bigint_mul_pow2(bigint *big, u32 exp) {
u32 shft = exp % 64;
u32 move = exp / 64;
u32 idx = big->used;
if (unlikely(shft == 0)) {
for (; idx > 0; idx--) {
big->bits[idx + move - 1] = big->bits[idx - 1];
}
big->used += move;
while (move) big->bits[--move] = 0;
} else {
big->bits[idx] = 0;
for (; idx > 0; idx--) {
u64 num = big->bits[idx] << shft;
num |= big->bits[idx - 1] >> (64 - shft);
big->bits[idx + move] = num;
}
big->bits[move] = big->bits[0] << shft;
big->used += move + (big->bits[big->used + move] > 0);
while (move) big->bits[--move] = 0;
}
}