static void sbr_qmf_analysis(DSPContext *dsp, FFTContext *mdct, const float *in, float *x,

                             float z[320], float W[2][32][32][2])

{

    int i, k;

    memcpy(W[0], W[1], sizeof(W[0]));

    memcpy(x    , x+1024, (320-32)*sizeof(x[0]));

    memcpy(x+288, in,         1024*sizeof(x[0]));

    for (i = 0; i < 32; i++) { // numTimeSlots*RATE = 16*2 as 960 sample frames

                               // are not supported

        dsp->vector_fmul_reverse(z, sbr_qmf_window_ds, x, 320);

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

            float f = z[k] + z[k + 64] + z[k + 128] + z[k + 192] + z[k + 256];

            z[k] = f;

        }

        //Shuffle to IMDCT

        z[64] = z[0];

        for (k = 1; k < 32; k++) {

            z[64+2*k-1] =  z[   k];

            z[64+2*k  ] = -z[64-k];

        }

        z[64+63] = z[32];



        mdct->imdct_half(mdct, z, z+64);

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

            W[1][i][k][0] = -z[63-k];

            W[1][i][k][1] = z[k];

        }

        x += 32;

    }

}

static void sbr_qmf_analysis(DSPContext *dsp, FFTContext *mdct, const float *in, float *x,

                             float z[320], float W[2][32][32][2])

{

    int i, k;

    memcpy(W[0], W[1], sizeof(W[0]));

    memcpy(x    , x+1024, (320-32)*sizeof(x[0]));

    memcpy(x+288, in,         1024*sizeof(x[0]));

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

                               

        dsp->vector_fmul_reverse(z, sbr_qmf_window_ds, x, 320);

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

            float f = z[k] + z[k + 64] + z[k + 128] + z[k + 192] + z[k + 256];

            z[k] = f;

        }

        

        z[64] = z[0];

        for (k = 1; k < 32; k++) {

            z[64+2*k-1] =  z[   k];

            z[64+2*k  ] = -z[64-k];

        }

        z[64+63] = z[32];



        mdct->imdct_half(mdct, z, z+64);

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

            W[1][i][k][0] = -z[63-k];

            W[1][i][k][1] = z[k];

        }

        x += 32;

    }

}

static void FUNC_0(DSPContext *VAR_0, FFTContext *VAR_1, const float *VAR_2, float *VAR_3,

                             float VAR_4[320], float VAR_5[2][32][32][2])

{

    int VAR_6, VAR_7;

    memcpy(VAR_5[0], VAR_5[1], sizeof(VAR_5[0]));

    memcpy(VAR_3    , VAR_3+1024, (320-32)*sizeof(VAR_3[0]));

    memcpy(VAR_3+288, VAR_2,         1024*sizeof(VAR_3[0]));

    for (VAR_6 = 0; VAR_6 < 32; VAR_6++) { 

                               

        VAR_0->vector_fmul_reverse(VAR_4, sbr_qmf_window_ds, VAR_3, 320);

        for (VAR_7 = 0; VAR_7 < 64; VAR_7++) {

            float VAR_8 = VAR_4[VAR_7] + VAR_4[VAR_7 + 64] + VAR_4[VAR_7 + 128] + VAR_4[VAR_7 + 192] + VAR_4[VAR_7 + 256];

            VAR_4[VAR_7] = VAR_8;

        }

        

        VAR_4[64] = VAR_4[0];

        for (VAR_7 = 1; VAR_7 < 32; VAR_7++) {

            VAR_4[64+2*VAR_7-1] =  VAR_4[   VAR_7];

            VAR_4[64+2*VAR_7  ] = -VAR_4[64-VAR_7];

        }

        VAR_4[64+63] = VAR_4[32];



        VAR_1->imdct_half(VAR_1, VAR_4, VAR_4+64);

        for (VAR_7 = 0; VAR_7 < 32; VAR_7++) {

            VAR_5[1][VAR_6][VAR_7][0] = -VAR_4[63-VAR_7];

            VAR_5[1][VAR_6][VAR_7][1] = VAR_4[VAR_7];

        }

        VAR_3 += 32;

    }

}

static void FUNC_0(DSPContext *VAR_0, FFTContext *VAR_1, const float *VAR_2, float *VAR_3,
float VAR_4[320], float VAR_5[2][32][32][2])
{ int VAR_6, VAR_7; memcpy(VAR_5[0], VAR_5[1], sizeof(VAR_5[0])); memcpy(VAR_3    , VAR_3+1024, (320-32)*sizeof(VAR_3[0])); memcpy(VAR_3+288, VAR_2,         1024*sizeof(VAR_3[0])); for (VAR_6 = 0; VAR_6 < 32; VAR_6++) { VAR_0->vector_fmul_reverse(VAR_4, sbr_qmf_window_ds, VAR_3, 320); for (VAR_7 = 0; VAR_7 < 64; VAR_7++) { float VAR_8 = VAR_4[VAR_7] + VAR_4[VAR_7 + 64] + VAR_4[VAR_7 + 128] + VAR_4[VAR_7 + 192] + VAR_4[VAR_7 + 256]; VAR_4[VAR_7] = VAR_8; } VAR_4[64] = VAR_4[0]; for (VAR_7 = 1; VAR_7 < 32; VAR_7++) { VAR_4[64+2*VAR_7-1] =  VAR_4[   VAR_7]; VAR_4[64+2*VAR_7  ] = -VAR_4[64-VAR_7]; } VAR_4[64+63] = VAR_4[32]; VAR_1->imdct_half(VAR_1, VAR_4, VAR_4+64); for (VAR_7 = 0; VAR_7 < 32; VAR_7++) { VAR_5[1][VAR_6][VAR_7][0] = -VAR_4[63-VAR_7]; VAR_5[1][VAR_6][VAR_7][1] = VAR_4[VAR_7]; } VAR_3 += 32; } }