static int decode_subframe_fixed(FLACContext *s, int32_t *decoded,

                                 int pred_order, int bps)

{

    const int blocksize = s->blocksize;

    unsigned av_uninit(a), av_uninit(b), av_uninit(c), av_uninit(d);

    int i;

    int ret;



    /* warm up samples */

    for (i = 0; i < pred_order; i++) {

        decoded[i] = get_sbits_long(&s->gb, bps);

    }



    if ((ret = decode_residuals(s, decoded, pred_order)) < 0)

        return ret;



    if (pred_order > 0)

        a = decoded[pred_order-1];

    if (pred_order > 1)

        b = a - decoded[pred_order-2];

    if (pred_order > 2)

        c = b - decoded[pred_order-2] + decoded[pred_order-3];

    if (pred_order > 3)

        d = c - decoded[pred_order-2] + 2*decoded[pred_order-3] - decoded[pred_order-4];



    switch (pred_order) {

    case 0:

        break;

    case 1:

        for (i = pred_order; i < blocksize; i++)

            decoded[i] = a += decoded[i];

        break;

    case 2:

        for (i = pred_order; i < blocksize; i++)

            decoded[i] = a += b += decoded[i];

        break;

    case 3:

        for (i = pred_order; i < blocksize; i++)

            decoded[i] = a += b += c += decoded[i];

        break;

    case 4:

        for (i = pred_order; i < blocksize; i++)

            decoded[i] = a += b += c += d += decoded[i];

        break;

    default:

        av_log(s->avctx, AV_LOG_ERROR, "illegal pred order %d\n", pred_order);

        return AVERROR_INVALIDDATA;

    }



    return 0;

}

static int decode_subframe_fixed(FLACContext *s, int32_t *decoded,

                                 int pred_order, int bps)

{

    const int blocksize = s->blocksize;

    unsigned av_uninit(a), av_uninit(b), av_uninit(c), av_uninit(d);

    int i;

    int ret;



    

    for (i = 0; i < pred_order; i++) {

        decoded[i] = get_sbits_long(&s->gb, bps);

    }



    if ((ret = decode_residuals(s, decoded, pred_order)) < 0)

        return ret;



    if (pred_order > 0)

        a = decoded[pred_order-1];

    if (pred_order > 1)

        b = a - decoded[pred_order-2];

    if (pred_order > 2)

        c = b - decoded[pred_order-2] + decoded[pred_order-3];

    if (pred_order > 3)

        d = c - decoded[pred_order-2] + 2*decoded[pred_order-3] - decoded[pred_order-4];



    switch (pred_order) {

    case 0:

        break;

    case 1:

        for (i = pred_order; i < blocksize; i++)

            decoded[i] = a += decoded[i];

        break;

    case 2:

        for (i = pred_order; i < blocksize; i++)

            decoded[i] = a += b += decoded[i];

        break;

    case 3:

        for (i = pred_order; i < blocksize; i++)

            decoded[i] = a += b += c += decoded[i];

        break;

    case 4:

        for (i = pred_order; i < blocksize; i++)

            decoded[i] = a += b += c += d += decoded[i];

        break;

    default:

        av_log(s->avctx, AV_LOG_ERROR, "illegal pred order %d\n", pred_order);

        return AVERROR_INVALIDDATA;

    }



    return 0;

}

        d = c - decoded[pred_order-2] + 2*decoded[pred_order-3] - decoded[pred_order-4];
static int FUNC_0(FLACContext *VAR_0, int32_t *VAR_1,

                                 int VAR_2, int VAR_3)

{

    const int VAR_4 = VAR_0->VAR_4;

    unsigned FUNC_1(a), FUNC_1(b), FUNC_1(c), FUNC_1(d);

    int VAR_5;

    int VAR_6;



    

    for (VAR_5 = 0; VAR_5 < VAR_2; VAR_5++) {

        VAR_1[VAR_5] = get_sbits_long(&VAR_0->gb, VAR_3);

    }



    if ((VAR_6 = decode_residuals(VAR_0, VAR_1, VAR_2)) < 0)

        return VAR_6;



    if (VAR_2 > 0)

        a = VAR_1[VAR_2-1];

    if (VAR_2 > 1)

        b = a - VAR_1[VAR_2-2];

    if (VAR_2 > 2)

        c = b - VAR_1[VAR_2-2] + VAR_1[VAR_2-3];

    if (VAR_2 > 3)

        d = c - VAR_1[VAR_2-2] + 2*VAR_1[VAR_2-3] - VAR_1[VAR_2-4];



    switch (VAR_2) {

    case 0:

        break;

    case 1:

        for (VAR_5 = VAR_2; VAR_5 < VAR_4; VAR_5++)

            VAR_1[VAR_5] = a += VAR_1[VAR_5];

        break;

    case 2:

        for (VAR_5 = VAR_2; VAR_5 < VAR_4; VAR_5++)

            VAR_1[VAR_5] = a += b += VAR_1[VAR_5];

        break;

    case 3:

        for (VAR_5 = VAR_2; VAR_5 < VAR_4; VAR_5++)

            VAR_1[VAR_5] = a += b += c += VAR_1[VAR_5];

        break;

    case 4:

        for (VAR_5 = VAR_2; VAR_5 < VAR_4; VAR_5++)

            VAR_1[VAR_5] = a += b += c += d += VAR_1[VAR_5];

        break;

    default:

        av_log(VAR_0->avctx, AV_LOG_ERROR, "illegal pred order %d\n", VAR_2);

        return AVERROR_INVALIDDATA;

    }



    return 0;

}

static int FUNC_0(FLACContext *VAR_0, int32_t *VAR_1,
int VAR_2, int VAR_3)
{ const int VAR_4 = VAR_0->VAR_4; unsigned FUNC_1(a), FUNC_1(b), FUNC_1(c), FUNC_1(d); int VAR_5; int VAR_6; for (VAR_5 = 0; VAR_5 < VAR_2; VAR_5++) { VAR_1[VAR_5] = get_sbits_long(&VAR_0->gb, VAR_3); } if ((VAR_6 = decode_residuals(VAR_0, VAR_1, VAR_2)) < 0)
return VAR_6; if (VAR_2 > 0)
a = VAR_1[VAR_2-1]; if (VAR_2 > 1)
b = a - VAR_1[VAR_2-2]; if (VAR_2 > 2)
c = b - VAR_1[VAR_2-2] + VAR_1[VAR_2-3]; if (VAR_2 > 3)
d = c - VAR_1[VAR_2-2] + 2*VAR_1[VAR_2-3] - VAR_1[VAR_2-4]; switch (VAR_2) { case 0:
break; case 1:
for (VAR_5 = VAR_2; VAR_5 < VAR_4; VAR_5++) VAR_1[VAR_5] = a += VAR_1[VAR_5]; break; case 2:
for (VAR_5 = VAR_2; VAR_5 < VAR_4; VAR_5++) VAR_1[VAR_5] = a += b += VAR_1[VAR_5]; break; case 3:
for (VAR_5 = VAR_2; VAR_5 < VAR_4; VAR_5++) VAR_1[VAR_5] = a += b += c += VAR_1[VAR_5]; break; case 4:
for (VAR_5 = VAR_2; VAR_5 < VAR_4; VAR_5++) VAR_1[VAR_5] = a += b += c += d += VAR_1[VAR_5]; break; default:
av_log(VAR_0->avctx, AV_LOG_ERROR, "illegal pred order %d\n", VAR_2); return AVERROR_INVALIDDATA; } return 0; }