static int xan_huffman_decode(unsigned char *dest, unsigned char *src)

{

    unsigned char byte = *src++;

    unsigned char ival = byte + 0x16;

    unsigned char * ptr = src + byte*2;

    unsigned char val = ival;

    int counter = 0;



    unsigned char bits = *ptr++;



    while ( val != 0x16 ) {

        if ( (1 << counter) & bits )

            val = src[byte + val - 0x17];

        else

            val = src[val - 0x17];



        if ( val < 0x16 ) {

            *dest++ = val;

            val = ival;

        }



        if (counter++ == 7) {

            counter = 0;

            bits = *ptr++;

        }

    }



    return 0;

}

static int xan_huffman_decode(unsigned char *dest, unsigned char *src)

{

    unsigned char byte = *src++;

    unsigned char ival = byte + 0x16;

    unsigned char * ptr = src + byte*2;

    unsigned char val = ival;

    int counter = 0;



    unsigned char bits = *ptr++;



    while ( val != 0x16 ) {

        if ( (1 << counter) & bits )

            val = src[byte + val - 0x17];

        else

            val = src[val - 0x17];



        if ( val < 0x16 ) {

            *dest++ = val;

            val = ival;

        }



        if (counter++ == 7) {

            counter = 0;

            bits = *ptr++;

        }

    }



    return 0;

}

static int FUNC_0(unsigned char *VAR_0, unsigned char *VAR_1)

{

    unsigned char VAR_2 = *VAR_1++;

    unsigned char VAR_3 = VAR_2 + 0x16;

    unsigned char * VAR_4 = VAR_1 + VAR_2*2;

    unsigned char VAR_5 = VAR_3;

    int VAR_6 = 0;



    unsigned char VAR_7 = *VAR_4++;



    while ( VAR_5 != 0x16 ) {

        if ( (1 << VAR_6) & VAR_7 )

            VAR_5 = VAR_1[VAR_2 + VAR_5 - 0x17];

        else

            VAR_5 = VAR_1[VAR_5 - 0x17];



        if ( VAR_5 < 0x16 ) {

            *VAR_0++ = VAR_5;

            VAR_5 = VAR_3;

        }



        if (VAR_6++ == 7) {

            VAR_6 = 0;

            VAR_7 = *VAR_4++;

        }

    }



    return 0;

}

static int FUNC_0(unsigned char *VAR_0, unsigned char *VAR_1)
{ unsigned char VAR_2 = *VAR_1++; unsigned char VAR_3 = VAR_2 + 0x16; unsigned char * VAR_4 = VAR_1 + VAR_2*2; unsigned char VAR_5 = VAR_3; int VAR_6 = 0; unsigned char VAR_7 = *VAR_4++; while ( VAR_5 != 0x16 ) { if ( (1 << VAR_6) & VAR_7 )
VAR_5 = VAR_1[VAR_2 + VAR_5 - 0x17]; else
VAR_5 = VAR_1[VAR_5 - 0x17]; if ( VAR_5 < 0x16 ) { *VAR_0++ = VAR_5; VAR_5 = VAR_3; } if (VAR_6++ == 7) { VAR_6 = 0; VAR_7 = *VAR_4++; } } return 0; }