static void ir2_decode_plane(Ir2Context *ctx, int width, int height, uint8_t *dst, int stride,

                             const uint8_t *table)

{

    int i;

    int j;

    int out = 0;

    int c;

    int t;

    

    /* first line contain absolute values, other lines contain deltas */

    while (out < width){

        c = ir2_get_code(&ctx->gb);

        if(c > 0x80) { /* we have a run */

            c -= 0x80;

            for (i = 0; i < c * 2; i++)

                dst[out++] = 0x80;

        } else { /* copy two values from table */

            dst[out++] = table[c * 2];

            dst[out++] = table[(c * 2) + 1];

        }

    }

    dst += stride;

    

    for (j = 1; j < height; j++){

        out = 0;

        while (out < width){

            c = ir2_get_code(&ctx->gb);

            if(c > 0x80) { /* we have a skip */

                c -= 0x80;

                for (i = 0; i < c * 2; i++) {

                    dst[out] = dst[out - stride];

                    out++;

                }

            } else { /* add two deltas from table */

                t = dst[out - stride] + (table[c * 2] - 128);

                CLAMP_TO_BYTE(t);

                dst[out] = t;

                out++;

                t = dst[out - stride] + (table[(c * 2) + 1] - 128);

                CLAMP_TO_BYTE(t);

                dst[out] = t;

                out++;

            }

        }

        dst += stride;

    }

}

static void ir2_decode_plane(Ir2Context *ctx, int width, int height, uint8_t *dst, int stride,

                             const uint8_t *table)

{

    int i;

    int j;

    int out = 0;

    int c;

    int t;

    

    

    while (out < width){

        c = ir2_get_code(&ctx->gb);

        if(c > 0x80) { 

            c -= 0x80;

            for (i = 0; i < c * 2; i++)

                dst[out++] = 0x80;

        } else { 

            dst[out++] = table[c * 2];

            dst[out++] = table[(c * 2) + 1];

        }

    }

    dst += stride;

    

    for (j = 1; j < height; j++){

        out = 0;

        while (out < width){

            c = ir2_get_code(&ctx->gb);

            if(c > 0x80) { 

                c -= 0x80;

                for (i = 0; i < c * 2; i++) {

                    dst[out] = dst[out - stride];

                    out++;

                }

            } else { 

                t = dst[out - stride] + (table[c * 2] - 128);

                CLAMP_TO_BYTE(t);

                dst[out] = t;

                out++;

                t = dst[out - stride] + (table[(c * 2) + 1] - 128);

                CLAMP_TO_BYTE(t);

                dst[out] = t;

                out++;

            }

        }

        dst += stride;

    }

}

static void ir2_decode_plane(Ir2Context *ctx, int width, int height, uint8_t *dst, int stride,
static void FUNC_0(Ir2Context *VAR_0, int VAR_1, int VAR_2, uint8_t *VAR_3, int VAR_4,

                             const uint8_t *VAR_5)

{

    int VAR_6;

    int VAR_7;

    int VAR_8 = 0;

    int VAR_9;

    int VAR_10;

    

    

    while (VAR_8 < VAR_1){

        VAR_9 = ir2_get_code(&VAR_0->gb);

        if(VAR_9 > 0x80) { 

            VAR_9 -= 0x80;

            for (VAR_6 = 0; VAR_6 < VAR_9 * 2; VAR_6++)

                VAR_3[VAR_8++] = 0x80;

        } else { 

            VAR_3[VAR_8++] = VAR_5[VAR_9 * 2];

            VAR_3[VAR_8++] = VAR_5[(VAR_9 * 2) + 1];

        }

    }

    VAR_3 += VAR_4;

    

    for (VAR_7 = 1; VAR_7 < VAR_2; VAR_7++){

        VAR_8 = 0;

        while (VAR_8 < VAR_1){

            VAR_9 = ir2_get_code(&VAR_0->gb);

            if(VAR_9 > 0x80) { 

                VAR_9 -= 0x80;

                for (VAR_6 = 0; VAR_6 < VAR_9 * 2; VAR_6++) {

                    VAR_3[VAR_8] = VAR_3[VAR_8 - VAR_4];

                    VAR_8++;

                }

            } else { 

                VAR_10 = VAR_3[VAR_8 - VAR_4] + (VAR_5[VAR_9 * 2] - 128);

                CLAMP_TO_BYTE(VAR_10);

                VAR_3[VAR_8] = VAR_10;

                VAR_8++;

                VAR_10 = VAR_3[VAR_8 - VAR_4] + (VAR_5[(VAR_9 * 2) + 1] - 128);

                CLAMP_TO_BYTE(VAR_10);

                VAR_3[VAR_8] = VAR_10;

                VAR_8++;

            }

        }

        VAR_3 += VAR_4;

    }

}

static void FUNC_0(Ir2Context *VAR_0, int VAR_1, int VAR_2, uint8_t *VAR_3, int VAR_4,
const uint8_t *VAR_5)
{ int VAR_6; int VAR_7; int VAR_8 = 0; int VAR_9; int VAR_10; while (VAR_8 < VAR_1){ VAR_9 = ir2_get_code(&VAR_0->gb); if(VAR_9 > 0x80) { VAR_9 -= 0x80; for (VAR_6 = 0; VAR_6 < VAR_9 * 2; VAR_6++) VAR_3[VAR_8++] = 0x80; } else { VAR_3[VAR_8++] = VAR_5[VAR_9 * 2]; VAR_3[VAR_8++] = VAR_5[(VAR_9 * 2) + 1]; } } VAR_3 += VAR_4; for (VAR_7 = 1; VAR_7 < VAR_2; VAR_7++){ VAR_8 = 0; while (VAR_8 < VAR_1){ VAR_9 = ir2_get_code(&VAR_0->gb); if(VAR_9 > 0x80) { VAR_9 -= 0x80; for (VAR_6 = 0; VAR_6 < VAR_9 * 2; VAR_6++) { VAR_3[VAR_8] = VAR_3[VAR_8 - VAR_4]; VAR_8++; } } else { VAR_10 = VAR_3[VAR_8 - VAR_4] + (VAR_5[VAR_9 * 2] - 128); CLAMP_TO_BYTE(VAR_10); VAR_3[VAR_8] = VAR_10; VAR_8++; VAR_10 = VAR_3[VAR_8 - VAR_4] + (VAR_5[(VAR_9 * 2) + 1] - 128); CLAMP_TO_BYTE(VAR_10); VAR_3[VAR_8] = VAR_10; VAR_8++; } } VAR_3 += VAR_4; } }