static void fft(AC3MDCTContext *mdct, IComplex *z, int ln)

{

    int j, l, np, np2;

    int nblocks, nloops;

    register IComplex *p,*q;

    int tmp_re, tmp_im;



    np = 1 << ln;



    /* reverse */

    for (j = 0; j < np; j++) {

        int k = av_reverse[j] >> (8 - ln);

        if (k < j)

            FFSWAP(IComplex, z[k], z[j]);

    }



    /* pass 0 */



    p = &z[0];

    j = np >> 1;

    do {

        BF(p[0].re, p[0].im, p[1].re, p[1].im,

           p[0].re, p[0].im, p[1].re, p[1].im);

        p += 2;

    } while (--j);



    /* pass 1 */



    p = &z[0];

    j = np >> 2;

    do {

        BF(p[0].re, p[0].im, p[2].re,  p[2].im,

           p[0].re, p[0].im, p[2].re,  p[2].im);

        BF(p[1].re, p[1].im, p[3].re,  p[3].im,

           p[1].re, p[1].im, p[3].im, -p[3].re);

        p+=4;

    } while (--j);



    /* pass 2 .. ln-1 */



    nblocks = np >> 3;

    nloops  =  1 << 2;

    np2     = np >> 1;

    do {

        p = z;

        q = z + nloops;

        for (j = 0; j < nblocks; j++) {

            BF(p->re, p->im, q->re, q->im,

               p->re, p->im, q->re, q->im);

            p++;

            q++;

            for(l = nblocks; l < np2; l += nblocks) {

                CMUL(tmp_re, tmp_im, mdct->costab[l], -mdct->sintab[l], q->re, q->im, 15);

                BF(p->re, p->im, q->re,  q->im,

                   p->re, p->im, tmp_re, tmp_im);

                p++;

                q++;

            }

            p += nloops;

            q += nloops;

        }

        nblocks = nblocks >> 1;

        nloops  = nloops  << 1;

    } while (nblocks);

}

static void fft(AC3MDCTContext *mdct, IComplex *z, int ln)

{

    int j, l, np, np2;

    int nblocks, nloops;

    register IComplex *p,*q;

    int tmp_re, tmp_im;



    np = 1 << ln;



    

    for (j = 0; j < np; j++) {

        int k = av_reverse[j] >> (8 - ln);

        if (k < j)

            FFSWAP(IComplex, z[k], z[j]);

    }



    



    p = &z[0];

    j = np >> 1;

    do {

        BF(p[0].re, p[0].im, p[1].re, p[1].im,

           p[0].re, p[0].im, p[1].re, p[1].im);

        p += 2;

    } while (--j);



    



    p = &z[0];

    j = np >> 2;

    do {

        BF(p[0].re, p[0].im, p[2].re,  p[2].im,

           p[0].re, p[0].im, p[2].re,  p[2].im);

        BF(p[1].re, p[1].im, p[3].re,  p[3].im,

           p[1].re, p[1].im, p[3].im, -p[3].re);

        p+=4;

    } while (--j);



    



    nblocks = np >> 3;

    nloops  =  1 << 2;

    np2     = np >> 1;

    do {

        p = z;

        q = z + nloops;

        for (j = 0; j < nblocks; j++) {

            BF(p->re, p->im, q->re, q->im,

               p->re, p->im, q->re, q->im);

            p++;

            q++;

            for(l = nblocks; l < np2; l += nblocks) {

                CMUL(tmp_re, tmp_im, mdct->costab[l], -mdct->sintab[l], q->re, q->im, 15);

                BF(p->re, p->im, q->re,  q->im,

                   p->re, p->im, tmp_re, tmp_im);

                p++;

                q++;

            }

            p += nloops;

            q += nloops;

        }

        nblocks = nblocks >> 1;

        nloops  = nloops  << 1;

    } while (nblocks);

}

static void FUNC_0(AC3MDCTContext *VAR_0, IComplex *VAR_1, int VAR_2)

{

    int VAR_3, VAR_4, VAR_5, VAR_6;

    int VAR_7, VAR_8;

    register IComplex *VAR_9,*q;

    int VAR_10, VAR_11;



    VAR_5 = 1 << VAR_2;



    

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

        int VAR_12 = av_reverse[VAR_3] >> (8 - VAR_2);

        if (VAR_12 < VAR_3)

            FFSWAP(IComplex, VAR_1[VAR_12], VAR_1[VAR_3]);

    }



    



    VAR_9 = &VAR_1[0];

    VAR_3 = VAR_5 >> 1;

    do {

        BF(VAR_9[0].re, VAR_9[0].im, VAR_9[1].re, VAR_9[1].im,

           VAR_9[0].re, VAR_9[0].im, VAR_9[1].re, VAR_9[1].im);

        VAR_9 += 2;

    } while (--VAR_3);



    



    VAR_9 = &VAR_1[0];

    VAR_3 = VAR_5 >> 2;

    do {

        BF(VAR_9[0].re, VAR_9[0].im, VAR_9[2].re,  VAR_9[2].im,

           VAR_9[0].re, VAR_9[0].im, VAR_9[2].re,  VAR_9[2].im);

        BF(VAR_9[1].re, VAR_9[1].im, VAR_9[3].re,  VAR_9[3].im,

           VAR_9[1].re, VAR_9[1].im, VAR_9[3].im, -VAR_9[3].re);

        VAR_9+=4;

    } while (--VAR_3);



    



    VAR_7 = VAR_5 >> 3;

    VAR_8  =  1 << 2;

    VAR_6     = VAR_5 >> 1;

    do {

        VAR_9 = VAR_1;

        q = VAR_1 + VAR_8;

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

            BF(VAR_9->re, VAR_9->im, q->re, q->im,

               VAR_9->re, VAR_9->im, q->re, q->im);

            VAR_9++;

            q++;

            for(VAR_4 = VAR_7; VAR_4 < VAR_6; VAR_4 += VAR_7) {

                CMUL(VAR_10, VAR_11, VAR_0->costab[VAR_4], -VAR_0->sintab[VAR_4], q->re, q->im, 15);

                BF(VAR_9->re, VAR_9->im, q->re,  q->im,

                   VAR_9->re, VAR_9->im, VAR_10, VAR_11);

                VAR_9++;

                q++;

            }

            VAR_9 += VAR_8;

            q += VAR_8;

        }

        VAR_7 = VAR_7 >> 1;

        VAR_8  = VAR_8  << 1;

    } while (VAR_7);

}

static void FUNC_0(AC3MDCTContext *VAR_0, IComplex *VAR_1, int VAR_2)
{ int VAR_3, VAR_4, VAR_5, VAR_6; int VAR_7, VAR_8; register IComplex *VAR_9,*q; int VAR_10, VAR_11; VAR_5 = 1 << VAR_2; for (VAR_3 = 0; VAR_3 < VAR_5; VAR_3++) { int VAR_12 = av_reverse[VAR_3] >> (8 - VAR_2); if (VAR_12 < VAR_3)
FFSWAP(IComplex, VAR_1[VAR_12], VAR_1[VAR_3]); } VAR_9 = &VAR_1[0]; VAR_3 = VAR_5 >> 1; do { BF(VAR_9[0].re, VAR_9[0].im, VAR_9[1].re, VAR_9[1].im,
VAR_9[0].re, VAR_9[0].im, VAR_9[1].re, VAR_9[1].im); VAR_9 += 2; } while (--VAR_3); VAR_9 = &VAR_1[0]; VAR_3 = VAR_5 >> 2; do { BF(VAR_9[0].re, VAR_9[0].im, VAR_9[2].re,  VAR_9[2].im,
VAR_9[0].re, VAR_9[0].im, VAR_9[2].re,  VAR_9[2].im); BF(VAR_9[1].re, VAR_9[1].im, VAR_9[3].re,  VAR_9[3].im,
VAR_9[1].re, VAR_9[1].im, VAR_9[3].im, -VAR_9[3].re); VAR_9+=4; } while (--VAR_3); VAR_7 = VAR_5 >> 3; VAR_8  =  1 << 2; VAR_6     = VAR_5 >> 1; do { VAR_9 = VAR_1; q = VAR_1 + VAR_8; for (VAR_3 = 0; VAR_3 < VAR_7; VAR_3++) { BF(VAR_9->re, VAR_9->im, q->re, q->im,
VAR_9->re, VAR_9->im, q->re, q->im); VAR_9++; q++; for(VAR_4 = VAR_7; VAR_4 < VAR_6; VAR_4 += VAR_7) { CMUL(VAR_10, VAR_11, VAR_0->costab[VAR_4], -VAR_0->sintab[VAR_4], q->re, q->im, 15); BF(VAR_9->re, VAR_9->im, q->re,  q->im,
VAR_9->re, VAR_9->im, VAR_10, VAR_11); VAR_9++; q++; } VAR_9 += VAR_8; q += VAR_8; } VAR_7 = VAR_7 >> 1; VAR_8  = VAR_8  << 1; } while (VAR_7); }