static int read_low_coeffs(AVCodecContext *avctx, int16_t *dst, int size, int width, ptrdiff_t stride)

{

    PixletContext *ctx = avctx->priv_data;

    GetBitContext *b = &ctx->gbit;

    unsigned cnt1, nbits, k, j = 0, i = 0;

    int64_t value, state = 3;

    int rlen, escape, flag = 0;



    while (i < size) {

        nbits = FFMIN(ff_clz((state >> 8) + 3) ^ 0x1F, 14);



        cnt1 = get_unary(b, 0, 8);

        if (cnt1 < 8) {

            value = show_bits(b, nbits);

            if (value <= 1) {

                skip_bits(b, nbits - 1);

                escape = ((1 << nbits) - 1) * cnt1;

            } else {

                skip_bits(b, nbits);

                escape = value + ((1 << nbits) - 1) * cnt1 - 1;

            }

        } else {

            escape = get_bits(b, 16);

        }



        value = -((escape + flag) & 1) | 1;

        dst[j++] = value * ((escape + flag + 1) >> 1);

        i++;

        if (j == width) {

            j = 0;

            dst += stride;

        }

        state = 120 * (escape + flag) + state - (120 * state >> 8);

        flag = 0;



        if (state * 4 > 0xFF || i >= size)

            continue;



        nbits = ((state + 8) >> 5) + (state ? ff_clz(state) : 32) - 24;

        escape = av_mod_uintp2(16383, nbits);

        cnt1 = get_unary(b, 0, 8);

        if (cnt1 > 7) {

            rlen = get_bits(b, 16);

        } else {

            value = show_bits(b, nbits);

            if (value > 1) {

                skip_bits(b, nbits);

                rlen = value + escape * cnt1 - 1;

            } else {

                skip_bits(b, nbits - 1);

                rlen = escape * cnt1;

            }

        }



        if (i + rlen > size)

            return AVERROR_INVALIDDATA;

        i += rlen;



        for (k = 0; k < rlen; k++) {

            dst[j++] = 0;

            if (j == width) {

                j = 0;

                dst += stride;

            }

        }



        state = 0;

        flag = rlen < 0xFFFF ? 1 : 0;

    }



    align_get_bits(b);

    return get_bits_count(b) >> 3;

}

static int read_low_coeffs(AVCodecContext *avctx, int16_t *dst, int size, int width, ptrdiff_t stride)

{

    PixletContext *ctx = avctx->priv_data;

    GetBitContext *b = &ctx->gbit;

    unsigned cnt1, nbits, k, j = 0, i = 0;

    int64_t value, state = 3;

    int rlen, escape, flag = 0;



    while (i < size) {

        nbits = FFMIN(ff_clz((state >> 8) + 3) ^ 0x1F, 14);



        cnt1 = get_unary(b, 0, 8);

        if (cnt1 < 8) {

            value = show_bits(b, nbits);

            if (value <= 1) {

                skip_bits(b, nbits - 1);

                escape = ((1 << nbits) - 1) * cnt1;

            } else {

                skip_bits(b, nbits);

                escape = value + ((1 << nbits) - 1) * cnt1 - 1;

            }

        } else {

            escape = get_bits(b, 16);

        }



        value = -((escape + flag) & 1) | 1;

        dst[j++] = value * ((escape + flag + 1) >> 1);

        i++;

        if (j == width) {

            j = 0;

            dst += stride;

        }

        state = 120 * (escape + flag) + state - (120 * state >> 8);

        flag = 0;



        if (state * 4 > 0xFF || i >= size)

            continue;



        nbits = ((state + 8) >> 5) + (state ? ff_clz(state) : 32) - 24;

        escape = av_mod_uintp2(16383, nbits);

        cnt1 = get_unary(b, 0, 8);

        if (cnt1 > 7) {

            rlen = get_bits(b, 16);

        } else {

            value = show_bits(b, nbits);

            if (value > 1) {

                skip_bits(b, nbits);

                rlen = value + escape * cnt1 - 1;

            } else {

                skip_bits(b, nbits - 1);

                rlen = escape * cnt1;

            }

        }



        if (i + rlen > size)

            return AVERROR_INVALIDDATA;

        i += rlen;



        for (k = 0; k < rlen; k++) {

            dst[j++] = 0;

            if (j == width) {

                j = 0;

                dst += stride;

            }

        }



        state = 0;

        flag = rlen < 0xFFFF ? 1 : 0;

    }



    align_get_bits(b);

    return get_bits_count(b) >> 3;

}

static int FUNC_0(AVCodecContext *VAR_0, int16_t *VAR_1, int VAR_2, int VAR_3, ptrdiff_t VAR_4)

{

    PixletContext *ctx = VAR_0->priv_data;

    GetBitContext *b = &ctx->gbit;

    unsigned VAR_5, VAR_6, VAR_7, VAR_8 = 0, VAR_9 = 0;

    int64_t value, state = 3;

    int VAR_10, VAR_11, VAR_12 = 0;



    while (VAR_9 < VAR_2) {

        VAR_6 = FFMIN(ff_clz((state >> 8) + 3) ^ 0x1F, 14);



        VAR_5 = get_unary(b, 0, 8);

        if (VAR_5 < 8) {

            value = show_bits(b, VAR_6);

            if (value <= 1) {

                skip_bits(b, VAR_6 - 1);

                VAR_11 = ((1 << VAR_6) - 1) * VAR_5;

            } else {

                skip_bits(b, VAR_6);

                VAR_11 = value + ((1 << VAR_6) - 1) * VAR_5 - 1;

            }

        } else {

            VAR_11 = get_bits(b, 16);

        }



        value = -((VAR_11 + VAR_12) & 1) | 1;

        VAR_1[VAR_8++] = value * ((VAR_11 + VAR_12 + 1) >> 1);

        VAR_9++;

        if (VAR_8 == VAR_3) {

            VAR_8 = 0;

            VAR_1 += VAR_4;

        }

        state = 120 * (VAR_11 + VAR_12) + state - (120 * state >> 8);

        VAR_12 = 0;



        if (state * 4 > 0xFF || VAR_9 >= VAR_2)

            continue;



        VAR_6 = ((state + 8) >> 5) + (state ? ff_clz(state) : 32) - 24;

        VAR_11 = av_mod_uintp2(16383, VAR_6);

        VAR_5 = get_unary(b, 0, 8);

        if (VAR_5 > 7) {

            VAR_10 = get_bits(b, 16);

        } else {

            value = show_bits(b, VAR_6);

            if (value > 1) {

                skip_bits(b, VAR_6);

                VAR_10 = value + VAR_11 * VAR_5 - 1;

            } else {

                skip_bits(b, VAR_6 - 1);

                VAR_10 = VAR_11 * VAR_5;

            }

        }



        if (VAR_9 + VAR_10 > VAR_2)

            return AVERROR_INVALIDDATA;

        VAR_9 += VAR_10;



        for (VAR_7 = 0; VAR_7 < VAR_10; VAR_7++) {

            VAR_1[VAR_8++] = 0;

            if (VAR_8 == VAR_3) {

                VAR_8 = 0;

                VAR_1 += VAR_4;

            }

        }



        state = 0;

        VAR_12 = VAR_10 < 0xFFFF ? 1 : 0;

    }



    align_get_bits(b);

    return get_bits_count(b) >> 3;

}

static int FUNC_0(AVCodecContext *VAR_0, int16_t *VAR_1, int VAR_2, int VAR_3, ptrdiff_t VAR_4)
{ PixletContext *ctx = VAR_0->priv_data; GetBitContext *b = &ctx->gbit; unsigned VAR_5, VAR_6, VAR_7, VAR_8 = 0, VAR_9 = 0; int64_t value, state = 3; int VAR_10, VAR_11, VAR_12 = 0; while (VAR_9 < VAR_2) { VAR_6 = FFMIN(ff_clz((state >> 8) + 3) ^ 0x1F, 14); VAR_5 = get_unary(b, 0, 8); if (VAR_5 < 8) { value = show_bits(b, VAR_6); if (value <= 1) { skip_bits(b, VAR_6 - 1); VAR_11 = ((1 << VAR_6) - 1) * VAR_5; } else { skip_bits(b, VAR_6); VAR_11 = value + ((1 << VAR_6) - 1) * VAR_5 - 1; } } else { VAR_11 = get_bits(b, 16); } value = -((VAR_11 + VAR_12) & 1) | 1; VAR_1[VAR_8++] = value * ((VAR_11 + VAR_12 + 1) >> 1); VAR_9++; if (VAR_8 == VAR_3) { VAR_8 = 0; VAR_1 += VAR_4; } state = 120 * (VAR_11 + VAR_12) + state - (120 * state >> 8); VAR_12 = 0; if (state * 4 > 0xFF || VAR_9 >= VAR_2)
continue; VAR_6 = ((state + 8) >> 5) + (state ? ff_clz(state) : 32) - 24; VAR_11 = av_mod_uintp2(16383, VAR_6); VAR_5 = get_unary(b, 0, 8); if (VAR_5 > 7) { VAR_10 = get_bits(b, 16); } else { value = show_bits(b, VAR_6); if (value > 1) { skip_bits(b, VAR_6); VAR_10 = value + VAR_11 * VAR_5 - 1; } else { skip_bits(b, VAR_6 - 1); VAR_10 = VAR_11 * VAR_5; } } if (VAR_9 + VAR_10 > VAR_2)
return AVERROR_INVALIDDATA; VAR_9 += VAR_10; for (VAR_7 = 0; VAR_7 < VAR_10; VAR_7++) { VAR_1[VAR_8++] = 0; if (VAR_8 == VAR_3) { VAR_8 = 0; VAR_1 += VAR_4; } } state = 0; VAR_12 = VAR_10 < 0xFFFF ? 1 : 0; } align_get_bits(b); return get_bits_count(b) >> 3; }