static void qpeg_decode_intra(uint8_t *src, uint8_t *dst, int size,

			    int stride, int width, int height)

{

    int i;

    int code;

    int c0, c1;

    int run, copy;

    int filled = 0;

    

    height--;

    dst = dst + height * stride;

    

    while(size > 0) {

	code = *src++;

	size--;

	run = copy = 0;

	if(code == 0xFC) /* end-of-picture code */

	    break;

	if(code >= 0xF8) { /* very long run */

	    c0 = *src++;

	    c1 = *src++;

	    size -= 2;

	    run = ((code & 0x7) << 16) + (c0 << 8) + c1 + 2;

	} else if (code >= 0xF0) { /* long run */

	    c0 = *src++;

	    size--;

	    run = ((code & 0xF) << 8) + c0 + 2;

	} else if (code >= 0xE0) { /* short run */

	    run = (code & 0x1F) + 2;

	} else if (code >= 0xC0) { /* very long copy */

	    c0 = *src++;

	    c1 = *src++;

	    size -= 2;

	    copy = ((code & 0x3F) << 16) + (c0 << 8) + c1 + 1;

	} else if (code >= 0x80) { /* long copy */

	    c0 = *src++;

	    size--;

	    copy = ((code & 0x7F) << 8) + c0 + 1;

	} else { /* short copy */

	    copy = code + 1;

	}

	

	/* perform actual run or copy */

	if(run) {

	    int p;

	    

	    p = *src++;

	    size--;

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

		dst[filled++] = p;

		if (filled >= width) {

		    filled = 0;

		    dst -= stride;

		}

	    }

	} else {

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

		dst[filled++] = *src++;

		if (filled >= width) {

		    filled = 0;

		    dst -= stride;

		}

	    }

	    size -= copy;

	}

    }

}

static void qpeg_decode_intra(uint8_t *src, uint8_t *dst, int size,

			    int stride, int width, int height)

{

    int i;

    int code;

    int c0, c1;

    int run, copy;

    int filled = 0;

    

    height--;

    dst = dst + height * stride;

    

    while(size > 0) {

	code = *src++;

	size--;

	run = copy = 0;

	if(code == 0xFC) 

	    break;

	if(code >= 0xF8) { 

	    c0 = *src++;

	    c1 = *src++;

	    size -= 2;

	    run = ((code & 0x7) << 16) + (c0 << 8) + c1 + 2;

	} else if (code >= 0xF0) { 

	    c0 = *src++;

	    size--;

	    run = ((code & 0xF) << 8) + c0 + 2;

	} else if (code >= 0xE0) { 

	    run = (code & 0x1F) + 2;

	} else if (code >= 0xC0) { 

	    c0 = *src++;

	    c1 = *src++;

	    size -= 2;

	    copy = ((code & 0x3F) << 16) + (c0 << 8) + c1 + 1;

	} else if (code >= 0x80) { 

	    c0 = *src++;

	    size--;

	    copy = ((code & 0x7F) << 8) + c0 + 1;

	} else { 

	    copy = code + 1;

	}

	

	

	if(run) {

	    int p;

	    

	    p = *src++;

	    size--;

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

		dst[filled++] = p;

		if (filled >= width) {

		    filled = 0;

		    dst -= stride;

		}

	    }

	} else {

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

		dst[filled++] = *src++;

		if (filled >= width) {

		    filled = 0;

		    dst -= stride;

		}

	    }

	    size -= copy;

	}

    }

}

    while(size > 0) { 	    size -= copy;     while(size > 0) {
static void FUNC_0(uint8_t *VAR_0, uint8_t *VAR_1, int VAR_2,

			    int VAR_3, int VAR_4, int VAR_5)

{

    int VAR_6;

    int VAR_7;

    int VAR_8, VAR_9;

    int VAR_10, VAR_11;

    int VAR_12 = 0;

    

    VAR_5--;

    VAR_1 = VAR_1 + VAR_5 * VAR_3;

    

    while(VAR_2 > 0) {

	VAR_7 = *VAR_0++;

	VAR_2--;

	VAR_10 = VAR_11 = 0;

	if(VAR_7 == 0xFC) 

	    break;

	if(VAR_7 >= 0xF8) { 

	    VAR_8 = *VAR_0++;

	    VAR_9 = *VAR_0++;

	    VAR_2 -= 2;

	    VAR_10 = ((VAR_7 & 0x7) << 16) + (VAR_8 << 8) + VAR_9 + 2;

	} else if (VAR_7 >= 0xF0) { 

	    VAR_8 = *VAR_0++;

	    VAR_2--;

	    VAR_10 = ((VAR_7 & 0xF) << 8) + VAR_8 + 2;

	} else if (VAR_7 >= 0xE0) { 

	    VAR_10 = (VAR_7 & 0x1F) + 2;

	} else if (VAR_7 >= 0xC0) { 

	    VAR_8 = *VAR_0++;

	    VAR_9 = *VAR_0++;

	    VAR_2 -= 2;

	    VAR_11 = ((VAR_7 & 0x3F) << 16) + (VAR_8 << 8) + VAR_9 + 1;

	} else if (VAR_7 >= 0x80) { 

	    VAR_8 = *VAR_0++;

	    VAR_2--;

	    VAR_11 = ((VAR_7 & 0x7F) << 8) + VAR_8 + 1;

	} else { 

	    VAR_11 = VAR_7 + 1;

	}

	

	

	if(VAR_10) {

	    int VAR_13;

	    

	    VAR_13 = *VAR_0++;

	    VAR_2--;

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

		VAR_1[VAR_12++] = VAR_13;

		if (VAR_12 >= VAR_4) {

		    VAR_12 = 0;

		    VAR_1 -= VAR_3;

		}

	    }

	} else {

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

		VAR_1[VAR_12++] = *VAR_0++;

		if (VAR_12 >= VAR_4) {

		    VAR_12 = 0;

		    VAR_1 -= VAR_3;

		}

	    }

	    VAR_2 -= VAR_11;

	}

    }

}

static void FUNC_0(uint8_t *VAR_0, uint8_t *VAR_1, int VAR_2,
int VAR_3, int VAR_4, int VAR_5)
{ int VAR_6; int VAR_7; int VAR_8, VAR_9; int VAR_10, VAR_11; int VAR_12 = 0; VAR_5--; VAR_1 = VAR_1 + VAR_5 * VAR_3; while(VAR_2 > 0) { VAR_7 = *VAR_0++; VAR_2--; VAR_10 = VAR_11 = 0; if(VAR_7 == 0xFC)
break; if(VAR_7 >= 0xF8) { VAR_8 = *VAR_0++; VAR_9 = *VAR_0++; VAR_2 -= 2; VAR_10 = ((VAR_7 & 0x7) << 16) + (VAR_8 << 8) + VAR_9 + 2; } else if (VAR_7 >= 0xF0) { VAR_8 = *VAR_0++; VAR_2--; VAR_10 = ((VAR_7 & 0xF) << 8) + VAR_8 + 2; } else if (VAR_7 >= 0xE0) { VAR_10 = (VAR_7 & 0x1F) + 2; } else if (VAR_7 >= 0xC0) { VAR_8 = *VAR_0++; VAR_9 = *VAR_0++; VAR_2 -= 2; VAR_11 = ((VAR_7 & 0x3F) << 16) + (VAR_8 << 8) + VAR_9 + 1; } else if (VAR_7 >= 0x80) { VAR_8 = *VAR_0++; VAR_2--; VAR_11 = ((VAR_7 & 0x7F) << 8) + VAR_8 + 1; } else { VAR_11 = VAR_7 + 1; } if(VAR_10) { int VAR_13; VAR_13 = *VAR_0++; VAR_2--; for(VAR_6 = 0; VAR_6 < VAR_10; VAR_6++) { VAR_1[VAR_12++] = VAR_13; if (VAR_12 >= VAR_4) { VAR_12 = 0; VAR_1 -= VAR_3; } } } else { for(VAR_6 = 0; VAR_6 < VAR_11; VAR_6++) { VAR_1[VAR_12++] = *VAR_0++; if (VAR_12 >= VAR_4) { VAR_12 = 0; VAR_1 -= VAR_3; } } VAR_2 -= VAR_11; } } }