static void sbr_hf_inverse_filter(float (*alpha0)[2], float (*alpha1)[2],

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

{

    int k;

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

        float phi[3][2][2], dk;



        autocorrelate(X_low[k], phi, 0);

        autocorrelate(X_low[k], phi, 1);

        autocorrelate(X_low[k], phi, 2);



        dk =  phi[2][1][0] * phi[1][0][0] -

             (phi[1][1][0] * phi[1][1][0] + phi[1][1][1] * phi[1][1][1]) / 1.000001f;



        if (!dk) {

            alpha1[k][0] = 0;

            alpha1[k][1] = 0;

        } else {

            float temp_real, temp_im;

            temp_real = phi[0][0][0] * phi[1][1][0] -

                        phi[0][0][1] * phi[1][1][1] -

                        phi[0][1][0] * phi[1][0][0];

            temp_im   = phi[0][0][0] * phi[1][1][1] +

                        phi[0][0][1] * phi[1][1][0] -

                        phi[0][1][1] * phi[1][0][0];



            alpha1[k][0] = temp_real / dk;

            alpha1[k][1] = temp_im   / dk;

        }



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

            alpha0[k][0] = 0;

            alpha0[k][1] = 0;

        } else {

            float temp_real, temp_im;

            temp_real = phi[0][0][0] + alpha1[k][0] * phi[1][1][0] +

                                       alpha1[k][1] * phi[1][1][1];

            temp_im   = phi[0][0][1] + alpha1[k][1] * phi[1][1][0] -

                                       alpha1[k][0] * phi[1][1][1];



            alpha0[k][0] = -temp_real / phi[1][0][0];

            alpha0[k][1] = -temp_im   / phi[1][0][0];

        }



        if (alpha1[k][0] * alpha1[k][0] + alpha1[k][1] * alpha1[k][1] >= 16.0f ||

           alpha0[k][0] * alpha0[k][0] + alpha0[k][1] * alpha0[k][1] >= 16.0f) {

            alpha1[k][0] = 0;

            alpha1[k][1] = 0;

            alpha0[k][0] = 0;

            alpha0[k][1] = 0;

        }

    }

}

static void sbr_hf_inverse_filter(float (*alpha0)[2], float (*alpha1)[2],

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

{

    int k;

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

        float phi[3][2][2], dk;



        autocorrelate(X_low[k], phi, 0);

        autocorrelate(X_low[k], phi, 1);

        autocorrelate(X_low[k], phi, 2);



        dk =  phi[2][1][0] * phi[1][0][0] -

             (phi[1][1][0] * phi[1][1][0] + phi[1][1][1] * phi[1][1][1]) / 1.000001f;



        if (!dk) {

            alpha1[k][0] = 0;

            alpha1[k][1] = 0;

        } else {

            float temp_real, temp_im;

            temp_real = phi[0][0][0] * phi[1][1][0] -

                        phi[0][0][1] * phi[1][1][1] -

                        phi[0][1][0] * phi[1][0][0];

            temp_im   = phi[0][0][0] * phi[1][1][1] +

                        phi[0][0][1] * phi[1][1][0] -

                        phi[0][1][1] * phi[1][0][0];



            alpha1[k][0] = temp_real / dk;

            alpha1[k][1] = temp_im   / dk;

        }



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

            alpha0[k][0] = 0;

            alpha0[k][1] = 0;

        } else {

            float temp_real, temp_im;

            temp_real = phi[0][0][0] + alpha1[k][0] * phi[1][1][0] +

                                       alpha1[k][1] * phi[1][1][1];

            temp_im   = phi[0][0][1] + alpha1[k][1] * phi[1][1][0] -

                                       alpha1[k][0] * phi[1][1][1];



            alpha0[k][0] = -temp_real / phi[1][0][0];

            alpha0[k][1] = -temp_im   / phi[1][0][0];

        }



        if (alpha1[k][0] * alpha1[k][0] + alpha1[k][1] * alpha1[k][1] >= 16.0f ||

           alpha0[k][0] * alpha0[k][0] + alpha0[k][1] * alpha0[k][1] >= 16.0f) {

            alpha1[k][0] = 0;

            alpha1[k][1] = 0;

            alpha0[k][0] = 0;

            alpha0[k][1] = 0;

        }

    }

}

static void FUNC_0(float (*VAR_0)[2], float (*VAR_1)[2],

                                  const float VAR_2[32][40][2], int VAR_3)

{

    int VAR_4;

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

        float VAR_5[3][2][2], VAR_6;



        autocorrelate(VAR_2[VAR_4], VAR_5, 0);

        autocorrelate(VAR_2[VAR_4], VAR_5, 1);

        autocorrelate(VAR_2[VAR_4], VAR_5, 2);



        VAR_6 =  VAR_5[2][1][0] * VAR_5[1][0][0] -

             (VAR_5[1][1][0] * VAR_5[1][1][0] + VAR_5[1][1][1] * VAR_5[1][1][1]) / 1.000001f;



        if (!VAR_6) {

            VAR_1[VAR_4][0] = 0;

            VAR_1[VAR_4][1] = 0;

        } else {

            float VAR_9, VAR_9;

            VAR_9 = VAR_5[0][0][0] * VAR_5[1][1][0] -

                        VAR_5[0][0][1] * VAR_5[1][1][1] -

                        VAR_5[0][1][0] * VAR_5[1][0][0];

            VAR_9   = VAR_5[0][0][0] * VAR_5[1][1][1] +

                        VAR_5[0][0][1] * VAR_5[1][1][0] -

                        VAR_5[0][1][1] * VAR_5[1][0][0];



            VAR_1[VAR_4][0] = VAR_9 / VAR_6;

            VAR_1[VAR_4][1] = VAR_9   / VAR_6;

        }



        if (!VAR_5[1][0][0]) {

            VAR_0[VAR_4][0] = 0;

            VAR_0[VAR_4][1] = 0;

        } else {

            float VAR_9, VAR_9;

            VAR_9 = VAR_5[0][0][0] + VAR_1[VAR_4][0] * VAR_5[1][1][0] +

                                       VAR_1[VAR_4][1] * VAR_5[1][1][1];

            VAR_9   = VAR_5[0][0][1] + VAR_1[VAR_4][1] * VAR_5[1][1][0] -

                                       VAR_1[VAR_4][0] * VAR_5[1][1][1];



            VAR_0[VAR_4][0] = -VAR_9 / VAR_5[1][0][0];

            VAR_0[VAR_4][1] = -VAR_9   / VAR_5[1][0][0];

        }



        if (VAR_1[VAR_4][0] * VAR_1[VAR_4][0] + VAR_1[VAR_4][1] * VAR_1[VAR_4][1] >= 16.0f ||

           VAR_0[VAR_4][0] * VAR_0[VAR_4][0] + VAR_0[VAR_4][1] * VAR_0[VAR_4][1] >= 16.0f) {

            VAR_1[VAR_4][0] = 0;

            VAR_1[VAR_4][1] = 0;

            VAR_0[VAR_4][0] = 0;

            VAR_0[VAR_4][1] = 0;

        }

    }

}

static void FUNC_0(float (*VAR_0)[2], float (*VAR_1)[2],
const float VAR_2[32][40][2], int VAR_3)
{ int VAR_4; for (VAR_4 = 0; VAR_4 < VAR_3; VAR_4++) { float VAR_5[3][2][2], VAR_6; autocorrelate(VAR_2[VAR_4], VAR_5, 0); autocorrelate(VAR_2[VAR_4], VAR_5, 1); autocorrelate(VAR_2[VAR_4], VAR_5, 2); VAR_6 =  VAR_5[2][1][0] * VAR_5[1][0][0] -
(VAR_5[1][1][0] * VAR_5[1][1][0] + VAR_5[1][1][1] * VAR_5[1][1][1]) / 1.000001f; if (!VAR_6) { VAR_1[VAR_4][0] = 0; VAR_1[VAR_4][1] = 0; } else { float VAR_9, VAR_9; VAR_9 = VAR_5[0][0][0] * VAR_5[1][1][0] -
VAR_5[0][0][1] * VAR_5[1][1][1] -
VAR_5[0][1][0] * VAR_5[1][0][0]; VAR_9   = VAR_5[0][0][0] * VAR_5[1][1][1] +
VAR_5[0][0][1] * VAR_5[1][1][0] -
VAR_5[0][1][1] * VAR_5[1][0][0]; VAR_1[VAR_4][0] = VAR_9 / VAR_6; VAR_1[VAR_4][1] = VAR_9   / VAR_6; } if (!VAR_5[1][0][0]) { VAR_0[VAR_4][0] = 0; VAR_0[VAR_4][1] = 0; } else { float VAR_9, VAR_9; VAR_9 = VAR_5[0][0][0] + VAR_1[VAR_4][0] * VAR_5[1][1][0] +
VAR_1[VAR_4][1] * VAR_5[1][1][1]; VAR_9   = VAR_5[0][0][1] + VAR_1[VAR_4][1] * VAR_5[1][1][0] -
VAR_1[VAR_4][0] * VAR_5[1][1][1]; VAR_0[VAR_4][0] = -VAR_9 / VAR_5[1][0][0]; VAR_0[VAR_4][1] = -VAR_9   / VAR_5[1][0][0]; } if (VAR_1[VAR_4][0] * VAR_1[VAR_4][0] + VAR_1[VAR_4][1] * VAR_1[VAR_4][1] >= 16.0f ||
VAR_0[VAR_4][0] * VAR_0[VAR_4][0] + VAR_0[VAR_4][1] * VAR_0[VAR_4][1] >= 16.0f) { VAR_1[VAR_4][0] = 0; VAR_1[VAR_4][1] = 0; VAR_0[VAR_4][0] = 0; VAR_0[VAR_4][1] = 0; } } }