static void mdct512(AC3MDCTContext *mdct, int32_t *out, int16_t *in)

{

    int i, re, im, n, n2, n4;

    int16_t *rot = mdct->rot_tmp;

    IComplex *x  = mdct->cplx_tmp;



    n  = 1 << mdct->nbits;

    n2 = n >> 1;

    n4 = n >> 2;



    /* shift to simplify computations */

    for (i = 0; i <n4; i++)

        rot[i] = -in[i + 3*n4];

    memcpy(&rot[n4], &in[0], 3*n4*sizeof(*in));



    /* pre rotation */

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

        re =  ((int)rot[   2*i] - (int)rot[ n-1-2*i]) >> 1;

        im = -((int)rot[n2+2*i] - (int)rot[n2-1-2*i]) >> 1;

        CMUL(x[i].re, x[i].im, re, im, -mdct->xcos1[i], mdct->xsin1[i]);

    }



    fft(mdct, x, mdct->nbits - 2);



    /* post rotation */

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

        re = x[i].re;

        im = x[i].im;

        CMUL(out[n2-1-2*i], out[2*i], re, im, mdct->xsin1[i], mdct->xcos1[i]);

    }

}

static void mdct512(AC3MDCTContext *mdct, int32_t *out, int16_t *in)

{

    int i, re, im, n, n2, n4;

    int16_t *rot = mdct->rot_tmp;

    IComplex *x  = mdct->cplx_tmp;



    n  = 1 << mdct->nbits;

    n2 = n >> 1;

    n4 = n >> 2;



    

    for (i = 0; i <n4; i++)

        rot[i] = -in[i + 3*n4];

    memcpy(&rot[n4], &in[0], 3*n4*sizeof(*in));



    

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

        re =  ((int)rot[   2*i] - (int)rot[ n-1-2*i]) >> 1;

        im = -((int)rot[n2+2*i] - (int)rot[n2-1-2*i]) >> 1;

        CMUL(x[i].re, x[i].im, re, im, -mdct->xcos1[i], mdct->xsin1[i]);

    }



    fft(mdct, x, mdct->nbits - 2);



    

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

        re = x[i].re;

        im = x[i].im;

        CMUL(out[n2-1-2*i], out[2*i], re, im, mdct->xsin1[i], mdct->xcos1[i]);

    }

}

        CMUL(x[i].re, x[i].im, re, im, -mdct->xcos1[i], mdct->xsin1[i]);         CMUL(out[n2-1-2*i], out[2*i], re, im, mdct->xsin1[i], mdct->xcos1[i]);
static void FUNC_0(AC3MDCTContext *VAR_0, int32_t *VAR_1, int16_t *VAR_2)

{

    int VAR_3, VAR_4, VAR_5, VAR_6, VAR_7, VAR_8;

    int16_t *rot = VAR_0->rot_tmp;

    IComplex *x  = VAR_0->cplx_tmp;



    VAR_6  = 1 << VAR_0->nbits;

    VAR_7 = VAR_6 >> 1;

    VAR_8 = VAR_6 >> 2;



    

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

        rot[VAR_3] = -VAR_2[VAR_3 + 3*VAR_8];

    memcpy(&rot[VAR_8], &VAR_2[0], 3*VAR_8*sizeof(*VAR_2));



    

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

        VAR_4 =  ((int)rot[   2*VAR_3] - (int)rot[ VAR_6-1-2*VAR_3]) >> 1;

        VAR_5 = -((int)rot[VAR_7+2*VAR_3] - (int)rot[VAR_7-1-2*VAR_3]) >> 1;

        CMUL(x[VAR_3].VAR_4, x[VAR_3].VAR_5, VAR_4, VAR_5, -VAR_0->xcos1[VAR_3], VAR_0->xsin1[VAR_3]);

    }



    fft(VAR_0, x, VAR_0->nbits - 2);



    

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

        VAR_4 = x[VAR_3].VAR_4;

        VAR_5 = x[VAR_3].VAR_5;

        CMUL(VAR_1[VAR_7-1-2*VAR_3], VAR_1[2*VAR_3], VAR_4, VAR_5, VAR_0->xsin1[VAR_3], VAR_0->xcos1[VAR_3]);

    }

}

static void FUNC_0(AC3MDCTContext *VAR_0, int32_t *VAR_1, int16_t *VAR_2)
{ int VAR_3, VAR_4, VAR_5, VAR_6, VAR_7, VAR_8; int16_t *rot = VAR_0->rot_tmp; IComplex *x  = VAR_0->cplx_tmp; VAR_6  = 1 << VAR_0->nbits; VAR_7 = VAR_6 >> 1; VAR_8 = VAR_6 >> 2; for (VAR_3 = 0; VAR_3 <VAR_8; VAR_3++) rot[VAR_3] = -VAR_2[VAR_3 + 3*VAR_8]; memcpy(&rot[VAR_8], &VAR_2[0], 3*VAR_8*sizeof(*VAR_2)); for (VAR_3 = 0; VAR_3 < VAR_8; VAR_3++) { VAR_4 =  ((int)rot[   2*VAR_3] - (int)rot[ VAR_6-1-2*VAR_3]) >> 1; VAR_5 = -((int)rot[VAR_7+2*VAR_3] - (int)rot[VAR_7-1-2*VAR_3]) >> 1; CMUL(x[VAR_3].VAR_4, x[VAR_3].VAR_5, VAR_4, VAR_5, -VAR_0->xcos1[VAR_3], VAR_0->xsin1[VAR_3]); } fft(VAR_0, x, VAR_0->nbits - 2); for (VAR_3 = 0; VAR_3 < VAR_8; VAR_3++) { VAR_4 = x[VAR_3].VAR_4; VAR_5 = x[VAR_3].VAR_5; CMUL(VAR_1[VAR_7-1-2*VAR_3], VAR_1[2*VAR_3], VAR_4, VAR_5, VAR_0->xsin1[VAR_3], VAR_0->xcos1[VAR_3]); } }