static int read_high_coeffs(AVCodecContext *avctx, uint8_t *src, int16_t *dst, int size,

                            int c, int a, int d,

                            int width, ptrdiff_t stride)

{

    PixletContext *ctx = avctx->priv_data;

    GetBitContext *b = &ctx->gbit;

    unsigned cnt1, shbits, rlen, nbits, length, i = 0, j = 0, k;

    int ret, escape, pfx, value, yflag, xflag, flag = 0;

    int64_t state = 3, tmp;



    if ((ret = init_get_bits8(b, src, bytestream2_get_bytes_left(&ctx->gb))) < 0)

      return ret;



    if ((a >= 0) + (a ^ (a >> 31)) - (a >> 31) != 1) {

        nbits = 33 - ff_clz((a >= 0) + (a ^ (a >> 31)) - (a >> 31) - 1);

        if (nbits > 16)

            return AVERROR_INVALIDDATA;

    } else {

        nbits = 1;

    }



    length = 25 - nbits;



    while (i < size) {

        if (state >> 8 != -3) {

            value = ff_clz((state >> 8) + 3) ^ 0x1F;

        } else {

            value = -1;

        }



        cnt1 = get_unary(b, 0, length);



        if (cnt1 >= length) {

            cnt1 = get_bits(b, nbits);

        } else {

            pfx = 14 + ((((uint64_t)(value - 14)) >> 32) & (value - 14));

            cnt1 *= (1 << pfx) - 1;

            shbits = show_bits(b, pfx);

            if (shbits <= 1) {

                skip_bits(b, pfx - 1);

            } else {

                skip_bits(b, pfx);

                cnt1 += shbits - 1;

            }

        }



        xflag = flag + cnt1;

        yflag = xflag;



        if (flag + cnt1 == 0) {

            value = 0;

        } else {

            xflag &= 1u;

            tmp = c * ((yflag + 1) >> 1) + (c >> 1);

            value = xflag + (tmp ^ -xflag);

        }



        i++;

        dst[j++] = value;

        if (j == width) {

            j = 0;

            dst += stride;

        }

        state += d * yflag - (d * state >> 8);



        flag = 0;



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

            continue;



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

        escape = av_mod_uintp2(16383, pfx);

        cnt1 = get_unary(b, 0, 8);

        if (cnt1 < 8) {

            if (pfx < 1 || pfx > 25)

                return AVERROR_INVALIDDATA;

            value = show_bits(b, pfx);

            if (value > 1) {

                skip_bits(b, pfx);

                rlen = value + escape * cnt1 - 1;

            } else {

                skip_bits(b, pfx - 1);

                rlen = escape * cnt1;

            }

        } else {

            if (get_bits1(b))

                value = get_bits(b, 16);

            else

                value = get_bits(b, 8);



            rlen = value + 8 * escape;

        }



        if (rlen > 0xFFFF || 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_high_coeffs(AVCodecContext *avctx, uint8_t *src, int16_t *dst, int size,

                            int c, int a, int d,

                            int width, ptrdiff_t stride)

{

    PixletContext *ctx = avctx->priv_data;

    GetBitContext *b = &ctx->gbit;

    unsigned cnt1, shbits, rlen, nbits, length, i = 0, j = 0, k;

    int ret, escape, pfx, value, yflag, xflag, flag = 0;

    int64_t state = 3, tmp;



    if ((ret = init_get_bits8(b, src, bytestream2_get_bytes_left(&ctx->gb))) < 0)

      return ret;



    if ((a >= 0) + (a ^ (a >> 31)) - (a >> 31) != 1) {

        nbits = 33 - ff_clz((a >= 0) + (a ^ (a >> 31)) - (a >> 31) - 1);

        if (nbits > 16)

            return AVERROR_INVALIDDATA;

    } else {

        nbits = 1;

    }



    length = 25 - nbits;



    while (i < size) {

        if (state >> 8 != -3) {

            value = ff_clz((state >> 8) + 3) ^ 0x1F;

        } else {

            value = -1;

        }



        cnt1 = get_unary(b, 0, length);



        if (cnt1 >= length) {

            cnt1 = get_bits(b, nbits);

        } else {

            pfx = 14 + ((((uint64_t)(value - 14)) >> 32) & (value - 14));

            cnt1 *= (1 << pfx) - 1;

            shbits = show_bits(b, pfx);

            if (shbits <= 1) {

                skip_bits(b, pfx - 1);

            } else {

                skip_bits(b, pfx);

                cnt1 += shbits - 1;

            }

        }



        xflag = flag + cnt1;

        yflag = xflag;



        if (flag + cnt1 == 0) {

            value = 0;

        } else {

            xflag &= 1u;

            tmp = c * ((yflag + 1) >> 1) + (c >> 1);

            value = xflag + (tmp ^ -xflag);

        }



        i++;

        dst[j++] = value;

        if (j == width) {

            j = 0;

            dst += stride;

        }

        state += d * yflag - (d * state >> 8);



        flag = 0;



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

            continue;



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

        escape = av_mod_uintp2(16383, pfx);

        cnt1 = get_unary(b, 0, 8);

        if (cnt1 < 8) {

            if (pfx < 1 || pfx > 25)

                return AVERROR_INVALIDDATA;

            value = show_bits(b, pfx);

            if (value > 1) {

                skip_bits(b, pfx);

                rlen = value + escape * cnt1 - 1;

            } else {

                skip_bits(b, pfx - 1);

                rlen = escape * cnt1;

            }

        } else {

            if (get_bits1(b))

                value = get_bits(b, 16);

            else

                value = get_bits(b, 8);



            rlen = value + 8 * escape;

        }



        if (rlen > 0xFFFF || 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;

}

            tmp = c * ((yflag + 1) >> 1) + (c >> 1);         state += d * yflag - (d * state >> 8);
static int FUNC_0(AVCodecContext *VAR_0, uint8_t *VAR_1, int16_t *VAR_2, int VAR_3,

                            int VAR_4, int VAR_5, int VAR_6,

                            int VAR_7, ptrdiff_t VAR_8)

{

    PixletContext *ctx = VAR_0->priv_data;

    GetBitContext *b = &ctx->gbit;

    unsigned VAR_9, VAR_10, VAR_11, VAR_12, VAR_13, VAR_14 = 0, VAR_15 = 0, VAR_16;

    int VAR_17, VAR_18, VAR_19, VAR_20, VAR_21, VAR_22, VAR_23 = 0;

    int64_t state = 3, tmp;



    if ((VAR_17 = init_get_bits8(b, VAR_1, bytestream2_get_bytes_left(&ctx->gb))) < 0)

      return VAR_17;



    if ((VAR_5 >= 0) + (VAR_5 ^ (VAR_5 >> 31)) - (VAR_5 >> 31) != 1) {

        VAR_12 = 33 - ff_clz((VAR_5 >= 0) + (VAR_5 ^ (VAR_5 >> 31)) - (VAR_5 >> 31) - 1);

        if (VAR_12 > 16)

            return AVERROR_INVALIDDATA;

    } else {

        VAR_12 = 1;

    }



    VAR_13 = 25 - VAR_12;



    while (VAR_14 < VAR_3) {

        if (state >> 8 != -3) {

            VAR_20 = ff_clz((state >> 8) + 3) ^ 0x1F;

        } else {

            VAR_20 = -1;

        }



        VAR_9 = get_unary(b, 0, VAR_13);



        if (VAR_9 >= VAR_13) {

            VAR_9 = get_bits(b, VAR_12);

        } else {

            VAR_19 = 14 + ((((uint64_t)(VAR_20 - 14)) >> 32) & (VAR_20 - 14));

            VAR_9 *= (1 << VAR_19) - 1;

            VAR_10 = show_bits(b, VAR_19);

            if (VAR_10 <= 1) {

                skip_bits(b, VAR_19 - 1);

            } else {

                skip_bits(b, VAR_19);

                VAR_9 += VAR_10 - 1;

            }

        }



        VAR_22 = VAR_23 + VAR_9;

        VAR_21 = VAR_22;



        if (VAR_23 + VAR_9 == 0) {

            VAR_20 = 0;

        } else {

            VAR_22 &= 1u;

            tmp = VAR_4 * ((VAR_21 + 1) >> 1) + (VAR_4 >> 1);

            VAR_20 = VAR_22 + (tmp ^ -VAR_22);

        }



        VAR_14++;

        VAR_2[VAR_15++] = VAR_20;

        if (VAR_15 == VAR_7) {

            VAR_15 = 0;

            VAR_2 += VAR_8;

        }

        state += VAR_6 * VAR_21 - (VAR_6 * state >> 8);



        VAR_23 = 0;



        if (state * 4 > 0xFF || VAR_14 >= VAR_3)

            continue;



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

        VAR_18 = av_mod_uintp2(16383, VAR_19);

        VAR_9 = get_unary(b, 0, 8);

        if (VAR_9 < 8) {

            if (VAR_19 < 1 || VAR_19 > 25)

                return AVERROR_INVALIDDATA;

            VAR_20 = show_bits(b, VAR_19);

            if (VAR_20 > 1) {

                skip_bits(b, VAR_19);

                VAR_11 = VAR_20 + VAR_18 * VAR_9 - 1;

            } else {

                skip_bits(b, VAR_19 - 1);

                VAR_11 = VAR_18 * VAR_9;

            }

        } else {

            if (get_bits1(b))

                VAR_20 = get_bits(b, 16);

            else

                VAR_20 = get_bits(b, 8);



            VAR_11 = VAR_20 + 8 * VAR_18;

        }



        if (VAR_11 > 0xFFFF || VAR_14 + VAR_11 > VAR_3)

            return AVERROR_INVALIDDATA;

        VAR_14 += VAR_11;



        for (VAR_16 = 0; VAR_16 < VAR_11; VAR_16++) {

            VAR_2[VAR_15++] = 0;

            if (VAR_15 == VAR_7) {

                VAR_15 = 0;

                VAR_2 += VAR_8;

            }

        }



        state = 0;

        VAR_23 = VAR_11 < 0xFFFF ? 1 : 0;

    }



    align_get_bits(b);

    return get_bits_count(b) >> 3;

}

static int FUNC_0(AVCodecContext *VAR_0, uint8_t *VAR_1, int16_t *VAR_2, int VAR_3,
int VAR_4, int VAR_5, int VAR_6,
int VAR_7, ptrdiff_t VAR_8)
{ PixletContext *ctx = VAR_0->priv_data; GetBitContext *b = &ctx->gbit; unsigned VAR_9, VAR_10, VAR_11, VAR_12, VAR_13, VAR_14 = 0, VAR_15 = 0, VAR_16; int VAR_17, VAR_18, VAR_19, VAR_20, VAR_21, VAR_22, VAR_23 = 0; int64_t state = 3, tmp; if ((VAR_17 = init_get_bits8(b, VAR_1, bytestream2_get_bytes_left(&ctx->gb))) < 0)
return VAR_17; if ((VAR_5 >= 0) + (VAR_5 ^ (VAR_5 >> 31)) - (VAR_5 >> 31) != 1) { VAR_12 = 33 - ff_clz((VAR_5 >= 0) + (VAR_5 ^ (VAR_5 >> 31)) - (VAR_5 >> 31) - 1); if (VAR_12 > 16)
return AVERROR_INVALIDDATA; } else { VAR_12 = 1; } VAR_13 = 25 - VAR_12; while (VAR_14 < VAR_3) { if (state >> 8 != -3) { VAR_20 = ff_clz((state >> 8) + 3) ^ 0x1F; } else { VAR_20 = -1; } VAR_9 = get_unary(b, 0, VAR_13); if (VAR_9 >= VAR_13) { VAR_9 = get_bits(b, VAR_12); } else { VAR_19 = 14 + ((((uint64_t)(VAR_20 - 14)) >> 32) & (VAR_20 - 14)); VAR_9 *= (1 << VAR_19) - 1; VAR_10 = show_bits(b, VAR_19); if (VAR_10 <= 1) { skip_bits(b, VAR_19 - 1); } else { skip_bits(b, VAR_19); VAR_9 += VAR_10 - 1; } } VAR_22 = VAR_23 + VAR_9; VAR_21 = VAR_22; if (VAR_23 + VAR_9 == 0) { VAR_20 = 0; } else { VAR_22 &= 1u; tmp = VAR_4 * ((VAR_21 + 1) >> 1) + (VAR_4 >> 1); VAR_20 = VAR_22 + (tmp ^ -VAR_22); } VAR_14++; VAR_2[VAR_15++] = VAR_20; if (VAR_15 == VAR_7) { VAR_15 = 0; VAR_2 += VAR_8; } state += VAR_6 * VAR_21 - (VAR_6 * state >> 8); VAR_23 = 0; if (state * 4 > 0xFF || VAR_14 >= VAR_3)
continue; VAR_19 = ((state + 8) >> 5) + (state ? ff_clz(state): 32) - 24; VAR_18 = av_mod_uintp2(16383, VAR_19); VAR_9 = get_unary(b, 0, 8); if (VAR_9 < 8) { if (VAR_19 < 1 || VAR_19 > 25)
return AVERROR_INVALIDDATA; VAR_20 = show_bits(b, VAR_19); if (VAR_20 > 1) { skip_bits(b, VAR_19); VAR_11 = VAR_20 + VAR_18 * VAR_9 - 1; } else { skip_bits(b, VAR_19 - 1); VAR_11 = VAR_18 * VAR_9; } } else { if (get_bits1(b))
VAR_20 = get_bits(b, 16); else
VAR_20 = get_bits(b, 8); VAR_11 = VAR_20 + 8 * VAR_18; } if (VAR_11 > 0xFFFF || VAR_14 + VAR_11 > VAR_3)
return AVERROR_INVALIDDATA; VAR_14 += VAR_11; for (VAR_16 = 0; VAR_16 < VAR_11; VAR_16++) { VAR_2[VAR_15++] = 0; if (VAR_15 == VAR_7) { VAR_15 = 0; VAR_2 += VAR_8; } } state = 0; VAR_23 = VAR_11 < 0xFFFF ? 1 : 0; } align_get_bits(b); return get_bits_count(b) >> 3; }