static int decode_subframe_fixed(FLACContext *s, int channel, int pred_order)

{

    const int blocksize = s->blocksize;

    int32_t *decoded = s->decoded[channel];

    int a, b, c, d, i;



    /* warm up samples */

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

        decoded[i] = get_sbits(&s->gb, s->curr_bps);

    }



    if (decode_residuals(s, channel, pred_order) < 0)

        return -1;



    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 -1;

    }



    return 0;

}

static int decode_subframe_fixed(FLACContext *s, int channel, int pred_order)

{

    const int blocksize = s->blocksize;

    int32_t *decoded = s->decoded[channel];

    int a, b, c, d, i;



    

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

        decoded[i] = get_sbits(&s->gb, s->curr_bps);

    }



    if (decode_residuals(s, channel, pred_order) < 0)

        return -1;



    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 -1;

    }



    return 0;

}

    int a, b, c, d, i;
static int FUNC_0(FLACContext *VAR_0, int VAR_1, int VAR_2)

{

    const int VAR_3 = VAR_0->VAR_3;

    int32_t *decoded = VAR_0->decoded[VAR_1];

    int VAR_4, VAR_5, VAR_6, VAR_7, VAR_8;



    

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

        decoded[VAR_8] = get_sbits(&VAR_0->gb, VAR_0->curr_bps);

    }



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

        return -1;



    if (VAR_2 > 0)

        VAR_4 = decoded[VAR_2-1];

    if (VAR_2 > 1)

        VAR_5 = VAR_4 - decoded[VAR_2-2];

    if (VAR_2 > 2)

        VAR_6 = VAR_5 - decoded[VAR_2-2] + decoded[VAR_2-3];

    if (VAR_2 > 3)

        VAR_7 = VAR_6 - decoded[VAR_2-2] + 2*decoded[VAR_2-3] - decoded[VAR_2-4];



    switch (VAR_2) {

    case 0:

        break;

    case 1:

        for (VAR_8 = VAR_2; VAR_8 < VAR_3; VAR_8++)

            decoded[VAR_8] = VAR_4 += decoded[VAR_8];

        break;

    case 2:

        for (VAR_8 = VAR_2; VAR_8 < VAR_3; VAR_8++)

            decoded[VAR_8] = VAR_4 += VAR_5 += decoded[VAR_8];

        break;

    case 3:

        for (VAR_8 = VAR_2; VAR_8 < VAR_3; VAR_8++)

            decoded[VAR_8] = VAR_4 += VAR_5 += VAR_6 += decoded[VAR_8];

        break;

    case 4:

        for (VAR_8 = VAR_2; VAR_8 < VAR_3; VAR_8++)

            decoded[VAR_8] = VAR_4 += VAR_5 += VAR_6 += VAR_7 += decoded[VAR_8];

        break;

    default:

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

        return -1;

    }



    return 0;

}

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