void av_read_image_line(uint16_t *dst, const uint8_t *data[4], const int linesize[4],

                        const AVPixFmtDescriptor *desc, int x, int y, int c, int w, int read_pal_component)

{

    AVComponentDescriptor comp= desc->comp[c];

    int plane= comp.plane;

    int depth= comp.depth_minus1+1;

    int mask = (1<<depth)-1;

    int shift= comp.shift;

    int step = comp.step_minus1+1;

    int flags= desc->flags;



    if (flags & PIX_FMT_BITSTREAM){

        int skip = x*step + comp.offset_plus1-1;

        const uint8_t *p = data[plane] + y*linesize[plane] + (skip>>3);

        int shift = 8 - depth - (skip&7);



        while(w--){

            int val = (*p >> shift) & mask;

            if(read_pal_component)

                val= data[1][4*val + c];

            shift -= step;

            p -= shift>>3;

            shift &= 7;

            *dst++= val;

        }

    } else {

        const uint8_t *p = data[plane]+ y*linesize[plane] + x*step + comp.offset_plus1-1;



        while(w--){

            int val = flags & PIX_FMT_BE ? AV_RB16(p) : AV_RL16(p);

            val = (val>>shift) & mask;

            if(read_pal_component)

                val= data[1][4*val + c];

            p+= step;

            *dst++= val;

        }

    }

}

void av_read_image_line(uint16_t *dst, const uint8_t *data[4], const int linesize[4],

                        const AVPixFmtDescriptor *desc, int x, int y, int c, int w, int read_pal_component)

{

    AVComponentDescriptor comp= desc->comp[c];

    int plane= comp.plane;

    int depth= comp.depth_minus1+1;

    int mask = (1<<depth)-1;

    int shift= comp.shift;

    int step = comp.step_minus1+1;

    int flags= desc->flags;



    if (flags & PIX_FMT_BITSTREAM){

        int skip = x*step + comp.offset_plus1-1;

        const uint8_t *p = data[plane] + y*linesize[plane] + (skip>>3);

        int shift = 8 - depth - (skip&7);



        while(w--){

            int val = (*p >> shift) & mask;

            if(read_pal_component)

                val= data[1][4*val + c];

            shift -= step;

            p -= shift>>3;

            shift &= 7;

            *dst++= val;

        }

    } else {

        const uint8_t *p = data[plane]+ y*linesize[plane] + x*step + comp.offset_plus1-1;



        while(w--){

            int val = flags & PIX_FMT_BE ? AV_RB16(p) : AV_RL16(p);

            val = (val>>shift) & mask;

            if(read_pal_component)

                val= data[1][4*val + c];

            p+= step;

            *dst++= val;

        }

    }

}

            int val = flags & PIX_FMT_BE ? AV_RB16(p) : AV_RL16(p);
void FUNC_0(uint16_t *VAR_0, const uint8_t *VAR_1[4], const int VAR_2[4],

                        const AVPixFmtDescriptor *VAR_3, int VAR_4, int VAR_5, int VAR_6, int VAR_7, int VAR_8)

{

    AVComponentDescriptor comp= VAR_3->comp[VAR_6];

    int VAR_9= comp.VAR_9;

    int VAR_10= comp.depth_minus1+1;

    int VAR_11 = (1<<VAR_10)-1;

    int VAR_17= comp.VAR_17;

    int VAR_13 = comp.step_minus1+1;

    int VAR_14= VAR_3->VAR_14;



    if (VAR_14 & PIX_FMT_BITSTREAM){

        int VAR_15 = VAR_4*VAR_13 + comp.offset_plus1-1;

        const uint8_t *VAR_18 = VAR_1[VAR_9] + VAR_5*VAR_2[VAR_9] + (VAR_15>>3);

        int VAR_17 = 8 - VAR_10 - (VAR_15&7);



        while(VAR_7--){

            int VAR_18 = (*VAR_18 >> VAR_17) & VAR_11;

            if(VAR_8)

                VAR_18= VAR_1[1][4*VAR_18 + VAR_6];

            VAR_17 -= VAR_13;

            VAR_18 -= VAR_17>>3;

            VAR_17 &= 7;

            *VAR_0++= VAR_18;

        }

    } else {

        const uint8_t *VAR_18 = VAR_1[VAR_9]+ VAR_5*VAR_2[VAR_9] + VAR_4*VAR_13 + comp.offset_plus1-1;



        while(VAR_7--){

            int VAR_18 = VAR_14 & PIX_FMT_BE ? AV_RB16(VAR_18) : AV_RL16(VAR_18);

            VAR_18 = (VAR_18>>VAR_17) & VAR_11;

            if(VAR_8)

                VAR_18= VAR_1[1][4*VAR_18 + VAR_6];

            VAR_18+= VAR_13;

            *VAR_0++= VAR_18;

        }

    }

}

void FUNC_0(uint16_t *VAR_0, const uint8_t *VAR_1[4], const int VAR_2[4],
const AVPixFmtDescriptor *VAR_3, int VAR_4, int VAR_5, int VAR_6, int VAR_7, int VAR_8)
{ AVComponentDescriptor comp= VAR_3->comp[VAR_6]; int VAR_9= comp.VAR_9; int VAR_10= comp.depth_minus1+1; int VAR_11 = (1<<VAR_10)-1; int VAR_17= comp.VAR_17; int VAR_13 = comp.step_minus1+1; int VAR_14= VAR_3->VAR_14; if (VAR_14 & PIX_FMT_BITSTREAM){ int VAR_15 = VAR_4*VAR_13 + comp.offset_plus1-1; const uint8_t *VAR_18 = VAR_1[VAR_9] + VAR_5*VAR_2[VAR_9] + (VAR_15>>3); int VAR_17 = 8 - VAR_10 - (VAR_15&7); while(VAR_7--){ int VAR_18 = (*VAR_18 >> VAR_17) & VAR_11; if(VAR_8)
VAR_18= VAR_1[1][4*VAR_18 + VAR_6]; VAR_17 -= VAR_13; VAR_18 -= VAR_17>>3; VAR_17 &= 7; *VAR_0++= VAR_18; } } else { const uint8_t *VAR_18 = VAR_1[VAR_9]+ VAR_5*VAR_2[VAR_9] + VAR_4*VAR_13 + comp.offset_plus1-1; while(VAR_7--){ int VAR_18 = VAR_14 & PIX_FMT_BE ? AV_RB16(VAR_18) : AV_RL16(VAR_18); VAR_18 = (VAR_18>>VAR_17) & VAR_11; if(VAR_8)
VAR_18= VAR_1[1][4*VAR_18 + VAR_6]; VAR_18+= VAR_13; *VAR_0++= VAR_18; } } }