int av_crc_init(AVCRC *ctx, int le, int bits, uint32_t poly, int ctx_size){

    int i, j;

    uint32_t c;



    if (bits < 8 || bits > 32 || poly >= (1LL<<bits))

        return -1;

    if (ctx_size != sizeof(AVCRC)*257 && ctx_size != sizeof(AVCRC)*1024)

        return -1;



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

        if (le) {

            for (c = i, j = 0; j < 8; j++)

                c = (c>>1)^(poly & (-(c&1)));

            ctx[i] = c;

        } else {

            for (c = i << 24, j = 0; j < 8; j++)

                c = (c<<1) ^ ((poly<<(32-bits)) & (((int32_t)c)>>31) );

            ctx[i] = av_bswap32(c);

        }

    }

    ctx[256]=1;

#if !CONFIG_SMALL

    if(ctx_size >= sizeof(AVCRC)*1024)

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

            for(j=0; j<3; j++)

                ctx[256*(j+1) + i]= (ctx[256*j + i]>>8) ^ ctx[ ctx[256*j + i]&0xFF ];

#endif



    return 0;

}

int av_crc_init(AVCRC *ctx, int le, int bits, uint32_t poly, int ctx_size){

    int i, j;

    uint32_t c;



    if (bits < 8 || bits > 32 || poly >= (1LL<<bits))

        return -1;

    if (ctx_size != sizeof(AVCRC)*257 && ctx_size != sizeof(AVCRC)*1024)

        return -1;



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

        if (le) {

            for (c = i, j = 0; j < 8; j++)

                c = (c>>1)^(poly & (-(c&1)));

            ctx[i] = c;

        } else {

            for (c = i << 24, j = 0; j < 8; j++)

                c = (c<<1) ^ ((poly<<(32-bits)) & (((int32_t)c)>>31) );

            ctx[i] = av_bswap32(c);

        }

    }

    ctx[256]=1;

#if !CONFIG_SMALL

    if(ctx_size >= sizeof(AVCRC)*1024)

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

            for(j=0; j<3; j++)

                ctx[256*(j+1) + i]= (ctx[256*j + i]>>8) ^ ctx[ ctx[256*j + i]&0xFF ];

#endif



    return 0;

}

    int i, j;
int FUNC_0(AVCRC *VAR_0, int VAR_1, int VAR_2, uint32_t VAR_3, int VAR_4){

    int VAR_5, VAR_6;

    uint32_t c;



    if (VAR_2 < 8 || VAR_2 > 32 || VAR_3 >= (1LL<<VAR_2))

        return -1;

    if (VAR_4 != sizeof(AVCRC)*257 && VAR_4 != sizeof(AVCRC)*1024)

        return -1;



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

        if (VAR_1) {

            for (c = VAR_5, VAR_6 = 0; VAR_6 < 8; VAR_6++)

                c = (c>>1)^(VAR_3 & (-(c&1)));

            VAR_0[VAR_5] = c;

        } else {

            for (c = VAR_5 << 24, VAR_6 = 0; VAR_6 < 8; VAR_6++)

                c = (c<<1) ^ ((VAR_3<<(32-VAR_2)) & (((int32_t)c)>>31) );

            VAR_0[VAR_5] = av_bswap32(c);

        }

    }

    VAR_0[256]=1;

#if !CONFIG_SMALL

    if(VAR_4 >= sizeof(AVCRC)*1024)

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

            for(VAR_6=0; VAR_6<3; VAR_6++)

                VAR_0[256*(VAR_6+1) + VAR_5]= (VAR_0[256*VAR_6 + VAR_5]>>8) ^ VAR_0[ VAR_0[256*VAR_6 + VAR_5]&0xFF ];

#endif



    return 0;

}

int FUNC_0(AVCRC *VAR_0, int VAR_1, int VAR_2, uint32_t VAR_3, int VAR_4){ int VAR_5, VAR_6; uint32_t c; if (VAR_2 < 8 || VAR_2 > 32 || VAR_3 >= (1LL<<VAR_2))
return -1; if (VAR_4 != sizeof(AVCRC)*257 && VAR_4 != sizeof(AVCRC)*1024)
return -1; for (VAR_5 = 0; VAR_5 < 256; VAR_5++) { if (VAR_1) { for (c = VAR_5, VAR_6 = 0; VAR_6 < 8; VAR_6++) c = (c>>1)^(VAR_3 & (-(c&1))); VAR_0[VAR_5] = c; } else { for (c = VAR_5 << 24, VAR_6 = 0; VAR_6 < 8; VAR_6++) c = (c<<1) ^ ((VAR_3<<(32-VAR_2)) & (((int32_t)c)>>31) ); VAR_0[VAR_5] = av_bswap32(c); } } VAR_0[256]=1; #if !CONFIG_SMALL
if(VAR_4 >= sizeof(AVCRC)*1024)
for (VAR_5 = 0; VAR_5 < 256; VAR_5++) for(VAR_6=0; VAR_6<3; VAR_6++) VAR_0[256*(VAR_6+1) + VAR_5]= (VAR_0[256*VAR_6 + VAR_5]>>8) ^ VAR_0[ VAR_0[256*VAR_6 + VAR_5]&0xFF ]; #endif
return 0; }