static uint64_t hb_count_between(HBitmap *hb, uint64_t start, uint64_t last)

{

    HBitmapIter hbi;

    uint64_t count = 0;

    uint64_t end = last + 1;

    unsigned long cur;

    size_t pos;



    hbitmap_iter_init(&hbi, hb, start << hb->granularity);

    for (;;) {

        pos = hbitmap_iter_next_word(&hbi, &cur);

        if (pos >= (end >> BITS_PER_LEVEL)) {

            break;

        }

        count += popcountl(cur);

    }



    if (pos == (end >> BITS_PER_LEVEL)) {

        /* Drop bits representing the END-th and subsequent items.  */

        int bit = end & (BITS_PER_LONG - 1);

        cur &= (1UL << bit) - 1;

        count += popcountl(cur);

    }



    return count;

}

static uint64_t hb_count_between(HBitmap *hb, uint64_t start, uint64_t last)

{

    HBitmapIter hbi;

    uint64_t count = 0;

    uint64_t end = last + 1;

    unsigned long cur;

    size_t pos;



    hbitmap_iter_init(&hbi, hb, start << hb->granularity);

    for (;;) {

        pos = hbitmap_iter_next_word(&hbi, &cur);

        if (pos >= (end >> BITS_PER_LEVEL)) {

            break;

        }

        count += popcountl(cur);

    }



    if (pos == (end >> BITS_PER_LEVEL)) {

        

        int bit = end & (BITS_PER_LONG - 1);

        cur &= (1UL << bit) - 1;

        count += popcountl(cur);

    }



    return count;

}

        count += popcountl(cur);         count += popcountl(cur);
static uint64_t FUNC_0(HBitmap *hb, uint64_t start, uint64_t last)

{

    HBitmapIter hbi;

    uint64_t count = 0;

    uint64_t end = last + 1;

    unsigned long VAR_0;

    size_t pos;



    hbitmap_iter_init(&hbi, hb, start << hb->granularity);

    for (;;) {

        pos = hbitmap_iter_next_word(&hbi, &VAR_0);

        if (pos >= (end >> BITS_PER_LEVEL)) {

            break;

        }

        count += popcountl(VAR_0);

    }



    if (pos == (end >> BITS_PER_LEVEL)) {

        

        int VAR_1 = end & (BITS_PER_LONG - 1);

        VAR_0 &= (1UL << VAR_1) - 1;

        count += popcountl(VAR_0);

    }



    return count;

}

static uint64_t FUNC_0(HBitmap *hb, uint64_t start, uint64_t last)
{ HBitmapIter hbi; uint64_t count = 0; uint64_t end = last + 1; unsigned long VAR_0; size_t pos; hbitmap_iter_init(&hbi, hb, start << hb->granularity); for (;;) { pos = hbitmap_iter_next_word(&hbi, &VAR_0); if (pos >= (end >> BITS_PER_LEVEL)) { break; } count += popcountl(VAR_0); } if (pos == (end >> BITS_PER_LEVEL)) { int VAR_1 = end & (BITS_PER_LONG - 1); VAR_0 &= (1UL << VAR_1) - 1; count += popcountl(VAR_0); } return count; }