static void final(const short *i1, const short *i2,

                  void *out, int *statbuf, int len)

{

    int x, i;

    unsigned short int work[50];

    short *ptr = work;



    memcpy(work, statbuf,20);

    memcpy(work + 10, i2, len * 2);



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

        int sum = 0;



        for(x=0; x<10; x++)

            sum += i1[9-x] * ptr[x];



        sum >>= 12;



        if (ptr[10] - sum < -32768 || ptr[10] - sum > 32767) {

            memset(out, 0, len * 2);

            memset(statbuf, 0, 20);

            return;

        }



        ptr[10] -= sum;

        ptr++;

    }



    memcpy(out, work+10, len * 2);

    memcpy(statbuf, work + 40, 20);

}

static void final(const short *i1, const short *i2,

                  void *out, int *statbuf, int len)

{

    int x, i;

    unsigned short int work[50];

    short *ptr = work;



    memcpy(work, statbuf,20);

    memcpy(work + 10, i2, len * 2);



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

        int sum = 0;



        for(x=0; x<10; x++)

            sum += i1[9-x] * ptr[x];



        sum >>= 12;



        if (ptr[10] - sum < -32768 || ptr[10] - sum > 32767) {

            memset(out, 0, len * 2);

            memset(statbuf, 0, 20);

            return;

        }



        ptr[10] -= sum;

        ptr++;

    }



    memcpy(out, work+10, len * 2);

    memcpy(statbuf, work + 40, 20);

}

        if (ptr[10] - sum < -32768 || ptr[10] - sum > 32767) {         ptr[10] -= sum;
static void FUNC_0(const short *VAR_0, const short *VAR_1,

                  void *VAR_2, int *VAR_3, int VAR_4)

{

    int VAR_5, VAR_6;

    unsigned short int VAR_7[50];

    short *VAR_8 = VAR_7;



    memcpy(VAR_7, VAR_3,20);

    memcpy(VAR_7 + 10, VAR_1, VAR_4 * 2);



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

        int VAR_9 = 0;



        for(VAR_5=0; VAR_5<10; VAR_5++)

            VAR_9 += VAR_0[9-VAR_5] * VAR_8[VAR_5];



        VAR_9 >>= 12;



        if (VAR_8[10] - VAR_9 < -32768 || VAR_8[10] - VAR_9 > 32767) {

            memset(VAR_2, 0, VAR_4 * 2);

            memset(VAR_3, 0, 20);

            return;

        }



        VAR_8[10] -= VAR_9;

        VAR_8++;

    }



    memcpy(VAR_2, VAR_7+10, VAR_4 * 2);

    memcpy(VAR_3, VAR_7 + 40, 20);

}

static void FUNC_0(const short *VAR_0, const short *VAR_1,
void *VAR_2, int *VAR_3, int VAR_4)
{ int VAR_5, VAR_6; unsigned short int VAR_7[50]; short *VAR_8 = VAR_7; memcpy(VAR_7, VAR_3,20); memcpy(VAR_7 + 10, VAR_1, VAR_4 * 2); for (VAR_6=0; VAR_6<VAR_4; VAR_6++) { int VAR_9 = 0; for(VAR_5=0; VAR_5<10; VAR_5++) VAR_9 += VAR_0[9-VAR_5] * VAR_8[VAR_5]; VAR_9 >>= 12; if (VAR_8[10] - VAR_9 < -32768 || VAR_8[10] - VAR_9 > 32767) { memset(VAR_2, 0, VAR_4 * 2); memset(VAR_3, 0, 20); return; } VAR_8[10] -= VAR_9; VAR_8++; } memcpy(VAR_2, VAR_7+10, VAR_4 * 2); memcpy(VAR_3, VAR_7 + 40, 20); }