static void sbr_hf_inverse_filter(SBRDSPContext *dsp,

                                  int (*alpha0)[2], int (*alpha1)[2],

                                  const int X_low[32][40][2], int k0)

{

    int k;

    int shift, round;



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

        SoftFloat phi[3][2][2];

        SoftFloat a00, a01, a10, a11;

        SoftFloat dk;



        dsp->autocorrelate(X_low[k], phi);



        dk = av_sub_sf(av_mul_sf(phi[2][1][0], phi[1][0][0]),

             av_mul_sf(av_add_sf(av_mul_sf(phi[1][1][0], phi[1][1][0]),

             av_mul_sf(phi[1][1][1], phi[1][1][1])), FLOAT_0999999));



        if (!dk.mant) {

            a10 = FLOAT_0;

            a11 = FLOAT_0;

        } else {

            SoftFloat temp_real, temp_im;

            temp_real = av_sub_sf(av_sub_sf(av_mul_sf(phi[0][0][0], phi[1][1][0]),

                                            av_mul_sf(phi[0][0][1], phi[1][1][1])),

                                  av_mul_sf(phi[0][1][0], phi[1][0][0]));

            temp_im   = av_sub_sf(av_add_sf(av_mul_sf(phi[0][0][0], phi[1][1][1]),

                                            av_mul_sf(phi[0][0][1], phi[1][1][0])),

                                  av_mul_sf(phi[0][1][1], phi[1][0][0]));



            a10 = av_div_sf(temp_real, dk);

            a11 = av_div_sf(temp_im,   dk);

        }



        if (!phi[1][0][0].mant) {

            a00 = FLOAT_0;

            a01 = FLOAT_0;

        } else {

            SoftFloat temp_real, temp_im;

            temp_real = av_add_sf(phi[0][0][0],

                                  av_add_sf(av_mul_sf(a10, phi[1][1][0]),

                                            av_mul_sf(a11, phi[1][1][1])));

            temp_im   = av_add_sf(phi[0][0][1],

                                  av_sub_sf(av_mul_sf(a11, phi[1][1][0]),

                                            av_mul_sf(a10, phi[1][1][1])));



            temp_real.mant = -temp_real.mant;

            temp_im.mant   = -temp_im.mant;

            a00 = av_div_sf(temp_real, phi[1][0][0]);

            a01 = av_div_sf(temp_im,   phi[1][0][0]);

        }



        shift = a00.exp;

        if (shift >= 3)

            alpha0[k][0] = 0x7fffffff;

        else if (shift <= -30)

            alpha0[k][0] = 0;

        else {

            a00.mant *= 2;

            shift = 2-shift;

            if (shift == 0)

                alpha0[k][0] = a00.mant;

            else {

                round = 1 << (shift-1);

                alpha0[k][0] = (a00.mant + round) >> shift;

            }

        }



        shift = a01.exp;

        if (shift >= 3)

            alpha0[k][1] = 0x7fffffff;

        else if (shift <= -30)

            alpha0[k][1] = 0;

        else {

            a01.mant *= 2;

            shift = 2-shift;

            if (shift == 0)

                alpha0[k][1] = a01.mant;

            else {

                round = 1 << (shift-1);

                alpha0[k][1] = (a01.mant + round) >> shift;

            }

        }

        shift = a10.exp;

        if (shift >= 3)

            alpha1[k][0] = 0x7fffffff;

        else if (shift <= -30)

            alpha1[k][0] = 0;

        else {

            a10.mant *= 2;

            shift = 2-shift;

            if (shift == 0)

                alpha1[k][0] = a10.mant;

            else {

                round = 1 << (shift-1);

                alpha1[k][0] = (a10.mant + round) >> shift;

            }

        }



        shift = a11.exp;

        if (shift >= 3)

            alpha1[k][1] = 0x7fffffff;

        else if (shift <= -30)

            alpha1[k][1] = 0;

        else {

            a11.mant *= 2;

            shift = 2-shift;

            if (shift == 0)

                alpha1[k][1] = a11.mant;

            else {

                round = 1 << (shift-1);

                alpha1[k][1] = (a11.mant + round) >> shift;

            }

        }



        shift = (int)(((int64_t)(alpha1[k][0]>>1) * (alpha1[k][0]>>1) + \

                       (int64_t)(alpha1[k][1]>>1) * (alpha1[k][1]>>1) + \

                       0x40000000) >> 31);

        if (shift >= 0x20000000){

            alpha1[k][0] = 0;

            alpha1[k][1] = 0;

            alpha0[k][0] = 0;

            alpha0[k][1] = 0;

        }



        shift = (int)(((int64_t)(alpha0[k][0]>>1) * (alpha0[k][0]>>1) + \

                       (int64_t)(alpha0[k][1]>>1) * (alpha0[k][1]>>1) + \

                       0x40000000) >> 31);

        if (shift >= 0x20000000){

            alpha1[k][0] = 0;

            alpha1[k][1] = 0;

            alpha0[k][0] = 0;

            alpha0[k][1] = 0;

        }

    }

}

static void sbr_hf_inverse_filter(SBRDSPContext *dsp,

                                  int (*alpha0)[2], int (*alpha1)[2],

                                  const int X_low[32][40][2], int k0)

{

    int k;

    int shift, round;



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

        SoftFloat phi[3][2][2];

        SoftFloat a00, a01, a10, a11;

        SoftFloat dk;



        dsp->autocorrelate(X_low[k], phi);



        dk = av_sub_sf(av_mul_sf(phi[2][1][0], phi[1][0][0]),

             av_mul_sf(av_add_sf(av_mul_sf(phi[1][1][0], phi[1][1][0]),

             av_mul_sf(phi[1][1][1], phi[1][1][1])), FLOAT_0999999));



        if (!dk.mant) {

            a10 = FLOAT_0;

            a11 = FLOAT_0;

        } else {

            SoftFloat temp_real, temp_im;

            temp_real = av_sub_sf(av_sub_sf(av_mul_sf(phi[0][0][0], phi[1][1][0]),

                                            av_mul_sf(phi[0][0][1], phi[1][1][1])),

                                  av_mul_sf(phi[0][1][0], phi[1][0][0]));

            temp_im   = av_sub_sf(av_add_sf(av_mul_sf(phi[0][0][0], phi[1][1][1]),

                                            av_mul_sf(phi[0][0][1], phi[1][1][0])),

                                  av_mul_sf(phi[0][1][1], phi[1][0][0]));



            a10 = av_div_sf(temp_real, dk);

            a11 = av_div_sf(temp_im,   dk);

        }



        if (!phi[1][0][0].mant) {

            a00 = FLOAT_0;

            a01 = FLOAT_0;

        } else {

            SoftFloat temp_real, temp_im;

            temp_real = av_add_sf(phi[0][0][0],

                                  av_add_sf(av_mul_sf(a10, phi[1][1][0]),

                                            av_mul_sf(a11, phi[1][1][1])));

            temp_im   = av_add_sf(phi[0][0][1],

                                  av_sub_sf(av_mul_sf(a11, phi[1][1][0]),

                                            av_mul_sf(a10, phi[1][1][1])));



            temp_real.mant = -temp_real.mant;

            temp_im.mant   = -temp_im.mant;

            a00 = av_div_sf(temp_real, phi[1][0][0]);

            a01 = av_div_sf(temp_im,   phi[1][0][0]);

        }



        shift = a00.exp;

        if (shift >= 3)

            alpha0[k][0] = 0x7fffffff;

        else if (shift <= -30)

            alpha0[k][0] = 0;

        else {

            a00.mant *= 2;

            shift = 2-shift;

            if (shift == 0)

                alpha0[k][0] = a00.mant;

            else {

                round = 1 << (shift-1);

                alpha0[k][0] = (a00.mant + round) >> shift;

            }

        }



        shift = a01.exp;

        if (shift >= 3)

            alpha0[k][1] = 0x7fffffff;

        else if (shift <= -30)

            alpha0[k][1] = 0;

        else {

            a01.mant *= 2;

            shift = 2-shift;

            if (shift == 0)

                alpha0[k][1] = a01.mant;

            else {

                round = 1 << (shift-1);

                alpha0[k][1] = (a01.mant + round) >> shift;

            }

        }

        shift = a10.exp;

        if (shift >= 3)

            alpha1[k][0] = 0x7fffffff;

        else if (shift <= -30)

            alpha1[k][0] = 0;

        else {

            a10.mant *= 2;

            shift = 2-shift;

            if (shift == 0)

                alpha1[k][0] = a10.mant;

            else {

                round = 1 << (shift-1);

                alpha1[k][0] = (a10.mant + round) >> shift;

            }

        }



        shift = a11.exp;

        if (shift >= 3)

            alpha1[k][1] = 0x7fffffff;

        else if (shift <= -30)

            alpha1[k][1] = 0;

        else {

            a11.mant *= 2;

            shift = 2-shift;

            if (shift == 0)

                alpha1[k][1] = a11.mant;

            else {

                round = 1 << (shift-1);

                alpha1[k][1] = (a11.mant + round) >> shift;

            }

        }



        shift = (int)(((int64_t)(alpha1[k][0]>>1) * (alpha1[k][0]>>1) + \

                       (int64_t)(alpha1[k][1]>>1) * (alpha1[k][1]>>1) + \

                       0x40000000) >> 31);

        if (shift >= 0x20000000){

            alpha1[k][0] = 0;

            alpha1[k][1] = 0;

            alpha0[k][0] = 0;

            alpha0[k][1] = 0;

        }



        shift = (int)(((int64_t)(alpha0[k][0]>>1) * (alpha0[k][0]>>1) + \

                       (int64_t)(alpha0[k][1]>>1) * (alpha0[k][1]>>1) + \

                       0x40000000) >> 31);

        if (shift >= 0x20000000){

            alpha1[k][0] = 0;

            alpha1[k][1] = 0;

            alpha0[k][0] = 0;

            alpha0[k][1] = 0;

        }

    }

}

            a00.mant *= 2;             shift = 2-shift;             if (shift == 0)                 alpha0[k][0] = a00.mant;             a01.mant *= 2;             shift = 2-shift;             if (shift == 0)                 alpha0[k][1] = a01.mant;             a10.mant *= 2;             shift = 2-shift;             if (shift == 0)                 alpha1[k][0] = a10.mant;             a11.mant *= 2;             shift = 2-shift;             if (shift == 0)                 alpha1[k][1] = a11.mant;
static void FUNC_0(SBRDSPContext *VAR_0,

                                  int (*VAR_1)[2], int (*VAR_2)[2],

                                  const int VAR_3[32][40][2], int VAR_4)

{

    int VAR_5;

    int VAR_6, VAR_7;



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

        SoftFloat phi[3][2][2];

        SoftFloat a00, a01, a10, a11;

        SoftFloat dk;



        VAR_0->autocorrelate(VAR_3[VAR_5], phi);



        dk = av_sub_sf(av_mul_sf(phi[2][1][0], phi[1][0][0]),

             av_mul_sf(av_add_sf(av_mul_sf(phi[1][1][0], phi[1][1][0]),

             av_mul_sf(phi[1][1][1], phi[1][1][1])), FLOAT_0999999));



        if (!dk.mant) {

            a10 = FLOAT_0;

            a11 = FLOAT_0;

        } else {

            SoftFloat temp_real, temp_im;

            temp_real = av_sub_sf(av_sub_sf(av_mul_sf(phi[0][0][0], phi[1][1][0]),

                                            av_mul_sf(phi[0][0][1], phi[1][1][1])),

                                  av_mul_sf(phi[0][1][0], phi[1][0][0]));

            temp_im   = av_sub_sf(av_add_sf(av_mul_sf(phi[0][0][0], phi[1][1][1]),

                                            av_mul_sf(phi[0][0][1], phi[1][1][0])),

                                  av_mul_sf(phi[0][1][1], phi[1][0][0]));



            a10 = av_div_sf(temp_real, dk);

            a11 = av_div_sf(temp_im,   dk);

        }



        if (!phi[1][0][0].mant) {

            a00 = FLOAT_0;

            a01 = FLOAT_0;

        } else {

            SoftFloat temp_real, temp_im;

            temp_real = av_add_sf(phi[0][0][0],

                                  av_add_sf(av_mul_sf(a10, phi[1][1][0]),

                                            av_mul_sf(a11, phi[1][1][1])));

            temp_im   = av_add_sf(phi[0][0][1],

                                  av_sub_sf(av_mul_sf(a11, phi[1][1][0]),

                                            av_mul_sf(a10, phi[1][1][1])));



            temp_real.mant = -temp_real.mant;

            temp_im.mant   = -temp_im.mant;

            a00 = av_div_sf(temp_real, phi[1][0][0]);

            a01 = av_div_sf(temp_im,   phi[1][0][0]);

        }



        VAR_6 = a00.exp;

        if (VAR_6 >= 3)

            VAR_1[VAR_5][0] = 0x7fffffff;

        else if (VAR_6 <= -30)

            VAR_1[VAR_5][0] = 0;

        else {

            a00.mant *= 2;

            VAR_6 = 2-VAR_6;

            if (VAR_6 == 0)

                VAR_1[VAR_5][0] = a00.mant;

            else {

                VAR_7 = 1 << (VAR_6-1);

                VAR_1[VAR_5][0] = (a00.mant + VAR_7) >> VAR_6;

            }

        }



        VAR_6 = a01.exp;

        if (VAR_6 >= 3)

            VAR_1[VAR_5][1] = 0x7fffffff;

        else if (VAR_6 <= -30)

            VAR_1[VAR_5][1] = 0;

        else {

            a01.mant *= 2;

            VAR_6 = 2-VAR_6;

            if (VAR_6 == 0)

                VAR_1[VAR_5][1] = a01.mant;

            else {

                VAR_7 = 1 << (VAR_6-1);

                VAR_1[VAR_5][1] = (a01.mant + VAR_7) >> VAR_6;

            }

        }

        VAR_6 = a10.exp;

        if (VAR_6 >= 3)

            VAR_2[VAR_5][0] = 0x7fffffff;

        else if (VAR_6 <= -30)

            VAR_2[VAR_5][0] = 0;

        else {

            a10.mant *= 2;

            VAR_6 = 2-VAR_6;

            if (VAR_6 == 0)

                VAR_2[VAR_5][0] = a10.mant;

            else {

                VAR_7 = 1 << (VAR_6-1);

                VAR_2[VAR_5][0] = (a10.mant + VAR_7) >> VAR_6;

            }

        }



        VAR_6 = a11.exp;

        if (VAR_6 >= 3)

            VAR_2[VAR_5][1] = 0x7fffffff;

        else if (VAR_6 <= -30)

            VAR_2[VAR_5][1] = 0;

        else {

            a11.mant *= 2;

            VAR_6 = 2-VAR_6;

            if (VAR_6 == 0)

                VAR_2[VAR_5][1] = a11.mant;

            else {

                VAR_7 = 1 << (VAR_6-1);

                VAR_2[VAR_5][1] = (a11.mant + VAR_7) >> VAR_6;

            }

        }



        VAR_6 = (int)(((int64_t)(VAR_2[VAR_5][0]>>1) * (VAR_2[VAR_5][0]>>1) + \

                       (int64_t)(VAR_2[VAR_5][1]>>1) * (VAR_2[VAR_5][1]>>1) + \

                       0x40000000) >> 31);

        if (VAR_6 >= 0x20000000){

            VAR_2[VAR_5][0] = 0;

            VAR_2[VAR_5][1] = 0;

            VAR_1[VAR_5][0] = 0;

            VAR_1[VAR_5][1] = 0;

        }



        VAR_6 = (int)(((int64_t)(VAR_1[VAR_5][0]>>1) * (VAR_1[VAR_5][0]>>1) + \

                       (int64_t)(VAR_1[VAR_5][1]>>1) * (VAR_1[VAR_5][1]>>1) + \

                       0x40000000) >> 31);

        if (VAR_6 >= 0x20000000){

            VAR_2[VAR_5][0] = 0;

            VAR_2[VAR_5][1] = 0;

            VAR_1[VAR_5][0] = 0;

            VAR_1[VAR_5][1] = 0;

        }

    }

}

static void FUNC_0(SBRDSPContext *VAR_0,
int (*VAR_1)[2], int (*VAR_2)[2],
const int VAR_3[32][40][2], int VAR_4)
{ int VAR_5; int VAR_6, VAR_7; for (VAR_5 = 0; VAR_5 < VAR_4; VAR_5++) { SoftFloat phi[3][2][2]; SoftFloat a00, a01, a10, a11; SoftFloat dk; VAR_0->autocorrelate(VAR_3[VAR_5], phi); dk = av_sub_sf(av_mul_sf(phi[2][1][0], phi[1][0][0]),
av_mul_sf(av_add_sf(av_mul_sf(phi[1][1][0], phi[1][1][0]),
av_mul_sf(phi[1][1][1], phi[1][1][1])), FLOAT_0999999)); if (!dk.mant) { a10 = FLOAT_0; a11 = FLOAT_0; } else { SoftFloat temp_real, temp_im; temp_real = av_sub_sf(av_sub_sf(av_mul_sf(phi[0][0][0], phi[1][1][0]),
av_mul_sf(phi[0][0][1], phi[1][1][1])),
av_mul_sf(phi[0][1][0], phi[1][0][0])); temp_im   = av_sub_sf(av_add_sf(av_mul_sf(phi[0][0][0], phi[1][1][1]),
av_mul_sf(phi[0][0][1], phi[1][1][0])),
av_mul_sf(phi[0][1][1], phi[1][0][0])); a10 = av_div_sf(temp_real, dk); a11 = av_div_sf(temp_im,   dk); } if (!phi[1][0][0].mant) { a00 = FLOAT_0; a01 = FLOAT_0; } else { SoftFloat temp_real, temp_im; temp_real = av_add_sf(phi[0][0][0],
av_add_sf(av_mul_sf(a10, phi[1][1][0]),
av_mul_sf(a11, phi[1][1][1]))); temp_im   = av_add_sf(phi[0][0][1],
av_sub_sf(av_mul_sf(a11, phi[1][1][0]),
av_mul_sf(a10, phi[1][1][1]))); temp_real.mant = -temp_real.mant; temp_im.mant   = -temp_im.mant; a00 = av_div_sf(temp_real, phi[1][0][0]); a01 = av_div_sf(temp_im,   phi[1][0][0]); } VAR_6 = a00.exp; if (VAR_6 >= 3)
VAR_1[VAR_5][0] = 0x7fffffff; else if (VAR_6 <= -30)
VAR_1[VAR_5][0] = 0; else { a00.mant *= 2; VAR_6 = 2-VAR_6; if (VAR_6 == 0)
VAR_1[VAR_5][0] = a00.mant; else { VAR_7 = 1 << (VAR_6-1); VAR_1[VAR_5][0] = (a00.mant + VAR_7) >> VAR_6; } } VAR_6 = a01.exp; if (VAR_6 >= 3)
VAR_1[VAR_5][1] = 0x7fffffff; else if (VAR_6 <= -30)
VAR_1[VAR_5][1] = 0; else { a01.mant *= 2; VAR_6 = 2-VAR_6; if (VAR_6 == 0)
VAR_1[VAR_5][1] = a01.mant; else { VAR_7 = 1 << (VAR_6-1); VAR_1[VAR_5][1] = (a01.mant + VAR_7) >> VAR_6; } } VAR_6 = a10.exp; if (VAR_6 >= 3)
VAR_2[VAR_5][0] = 0x7fffffff; else if (VAR_6 <= -30)
VAR_2[VAR_5][0] = 0; else { a10.mant *= 2; VAR_6 = 2-VAR_6; if (VAR_6 == 0)
VAR_2[VAR_5][0] = a10.mant; else { VAR_7 = 1 << (VAR_6-1); VAR_2[VAR_5][0] = (a10.mant + VAR_7) >> VAR_6; } } VAR_6 = a11.exp; if (VAR_6 >= 3)
VAR_2[VAR_5][1] = 0x7fffffff; else if (VAR_6 <= -30)
VAR_2[VAR_5][1] = 0; else { a11.mant *= 2; VAR_6 = 2-VAR_6; if (VAR_6 == 0)
VAR_2[VAR_5][1] = a11.mant; else { VAR_7 = 1 << (VAR_6-1); VAR_2[VAR_5][1] = (a11.mant + VAR_7) >> VAR_6; } } VAR_6 = (int)(((int64_t)(VAR_2[VAR_5][0]>>1) * (VAR_2[VAR_5][0]>>1) + \
(int64_t)(VAR_2[VAR_5][1]>>1) * (VAR_2[VAR_5][1]>>1) + \
0x40000000) >> 31); if (VAR_6 >= 0x20000000){ VAR_2[VAR_5][0] = 0; VAR_2[VAR_5][1] = 0; VAR_1[VAR_5][0] = 0; VAR_1[VAR_5][1] = 0; } VAR_6 = (int)(((int64_t)(VAR_1[VAR_5][0]>>1) * (VAR_1[VAR_5][0]>>1) + \
(int64_t)(VAR_1[VAR_5][1]>>1) * (VAR_1[VAR_5][1]>>1) + \
0x40000000) >> 31); if (VAR_6 >= 0x20000000){ VAR_2[VAR_5][0] = 0; VAR_2[VAR_5][1] = 0; VAR_1[VAR_5][0] = 0; VAR_1[VAR_5][1] = 0; } } }