static int cow_find_streak(const uint8_t *bitmap, int value, int start, int nb_sectors)

{

    int streak_value = value ? 0xFF : 0;

    int last = MIN(start + nb_sectors, BITS_PER_BITMAP_SECTOR);

    int bitnum = start;

    while (bitnum < last) {

        if ((bitnum & 7) == 0 && bitmap[bitnum / 8] == streak_value) {

            bitnum += 8;

            continue;

        }

        if (cow_test_bit(bitnum, bitmap) == value) {

            bitnum++;

            continue;

        }

        break;

    }

    return MIN(bitnum, last) - start;

}

static int cow_find_streak(const uint8_t *bitmap, int value, int start, int nb_sectors)

{

    int streak_value = value ? 0xFF : 0;

    int last = MIN(start + nb_sectors, BITS_PER_BITMAP_SECTOR);

    int bitnum = start;

    while (bitnum < last) {

        if ((bitnum & 7) == 0 && bitmap[bitnum / 8] == streak_value) {

            bitnum += 8;

            continue;

        }

        if (cow_test_bit(bitnum, bitmap) == value) {

            bitnum++;

            continue;

        }

        break;

    }

    return MIN(bitnum, last) - start;

}

static int FUNC_0(const uint8_t *VAR_0, int VAR_1, int VAR_2, int VAR_3)

{

    int VAR_4 = VAR_1 ? 0xFF : 0;

    int VAR_5 = MIN(VAR_2 + VAR_3, BITS_PER_BITMAP_SECTOR);

    int VAR_6 = VAR_2;

    while (VAR_6 < VAR_5) {

        if ((VAR_6 & 7) == 0 && VAR_0[VAR_6 / 8] == VAR_4) {

            VAR_6 += 8;

            continue;

        }

        if (cow_test_bit(VAR_6, VAR_0) == VAR_1) {

            VAR_6++;

            continue;

        }

        break;

    }

    return MIN(VAR_6, VAR_5) - VAR_2;

}

static int FUNC_0(const uint8_t *VAR_0, int VAR_1, int VAR_2, int VAR_3)
{ int VAR_4 = VAR_1 ? 0xFF : 0; int VAR_5 = MIN(VAR_2 + VAR_3, BITS_PER_BITMAP_SECTOR); int VAR_6 = VAR_2; while (VAR_6 < VAR_5) { if ((VAR_6 & 7) == 0 && VAR_0[VAR_6 / 8] == VAR_4) { VAR_6 += 8; continue; } if (cow_test_bit(VAR_6, VAR_0) == VAR_1) { VAR_6++; continue; } break; } return MIN(VAR_6, VAR_5) - VAR_2; }