static void kempf_restore_buf(const uint8_t *src, int len,

                              uint8_t *dst, int stride,

                              const uint8_t *jpeg_tile, int tile_stride,

                              int width, int height,

                              const uint8_t *pal, int npal, int tidx)

{

    GetBitContext gb;

    int i, j, nb, col;



    init_get_bits8(&gb, src, len);



    if (npal <= 2)       nb = 1;

    else if (npal <= 4)  nb = 2;

    else if (npal <= 16) nb = 4;

    else                 nb = 8;



    for (j = 0; j < height; j++, dst += stride, jpeg_tile += tile_stride) {

        if (get_bits(&gb, 8))

            continue;

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

            col = get_bits(&gb, nb);

            if (col != tidx)

                memcpy(dst + i * 3, pal + col * 3, 3);

            else

                memcpy(dst + i * 3, jpeg_tile + i * 3, 3);

        }

    }

}

static void kempf_restore_buf(const uint8_t *src, int len,

                              uint8_t *dst, int stride,

                              const uint8_t *jpeg_tile, int tile_stride,

                              int width, int height,

                              const uint8_t *pal, int npal, int tidx)

{

    GetBitContext gb;

    int i, j, nb, col;



    init_get_bits8(&gb, src, len);



    if (npal <= 2)       nb = 1;

    else if (npal <= 4)  nb = 2;

    else if (npal <= 16) nb = 4;

    else                 nb = 8;



    for (j = 0; j < height; j++, dst += stride, jpeg_tile += tile_stride) {

        if (get_bits(&gb, 8))

            continue;

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

            col = get_bits(&gb, nb);

            if (col != tidx)

                memcpy(dst + i * 3, pal + col * 3, 3);

            else

                memcpy(dst + i * 3, jpeg_tile + i * 3, 3);

        }

    }

}

static void FUNC_0(const uint8_t *VAR_0, int VAR_1,

                              uint8_t *VAR_2, int VAR_3,

                              const uint8_t *VAR_4, int VAR_5,

                              int VAR_6, int VAR_7,

                              const uint8_t *VAR_8, int VAR_9, int VAR_10)

{

    GetBitContext gb;

    int VAR_11, VAR_12, VAR_13, VAR_14;



    init_get_bits8(&gb, VAR_0, VAR_1);



    if (VAR_9 <= 2)       VAR_13 = 1;

    else if (VAR_9 <= 4)  VAR_13 = 2;

    else if (VAR_9 <= 16) VAR_13 = 4;

    else                 VAR_13 = 8;



    for (VAR_12 = 0; VAR_12 < VAR_7; VAR_12++, VAR_2 += VAR_3, VAR_4 += VAR_5) {

        if (get_bits(&gb, 8))

            continue;

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

            VAR_14 = get_bits(&gb, VAR_13);

            if (VAR_14 != VAR_10)

                memcpy(VAR_2 + VAR_11 * 3, VAR_8 + VAR_14 * 3, 3);

            else

                memcpy(VAR_2 + VAR_11 * 3, VAR_4 + VAR_11 * 3, 3);

        }

    }

}

static void FUNC_0(const uint8_t *VAR_0, int VAR_1,
uint8_t *VAR_2, int VAR_3,
const uint8_t *VAR_4, int VAR_5,
int VAR_6, int VAR_7,
const uint8_t *VAR_8, int VAR_9, int VAR_10)
{ GetBitContext gb; int VAR_11, VAR_12, VAR_13, VAR_14; init_get_bits8(&gb, VAR_0, VAR_1); if (VAR_9 <= 2)       VAR_13 = 1; else if (VAR_9 <= 4)  VAR_13 = 2; else if (VAR_9 <= 16) VAR_13 = 4; else                 VAR_13 = 8; for (VAR_12 = 0; VAR_12 < VAR_7; VAR_12++, VAR_2 += VAR_3, VAR_4 += VAR_5) { if (get_bits(&gb, 8))
continue; for (VAR_11 = 0; VAR_11 < VAR_6; VAR_11++) { VAR_14 = get_bits(&gb, VAR_13); if (VAR_14 != VAR_10)
memcpy(VAR_2 + VAR_11 * 3, VAR_8 + VAR_14 * 3, 3); else
memcpy(VAR_2 + VAR_11 * 3, VAR_4 + VAR_11 * 3, 3); } } }