static inline void vmsvga_update_rect(struct vmsvga_state_s *s,

                int x, int y, int w, int h)

{

    int line;

    int bypl;

    int width;

    int start;

    uint8_t *src;

    uint8_t *dst;



    if (x + w > s->width) {

        fprintf(stderr, "%s: update width too large x: %d, w: %d\n",

                        __FUNCTION__, x, w);

        x = MIN(x, s->width);

        w = s->width - x;

    }



    if (y + h > s->height) {

        fprintf(stderr, "%s: update height too large y: %d, h: %d\n",

                        __FUNCTION__, y, h);

        y = MIN(y, s->height);

        h = s->height - y;

    }



    line = h;

    bypl = s->bypp * s->width;

    width = s->bypp * w;

    start = s->bypp * x + bypl * y;

    src = s->vga.vram_ptr + start;

    dst = ds_get_data(s->vga.ds) + start;



    for (; line > 0; line --, src += bypl, dst += bypl)

        memcpy(dst, src, width);



    dpy_gfx_update(s->vga.ds, x, y, w, h);

}

static inline void vmsvga_update_rect(struct vmsvga_state_s *s,

                int x, int y, int w, int h)

{

    int line;

    int bypl;

    int width;

    int start;

    uint8_t *src;

    uint8_t *dst;



    if (x + w > s->width) {

        fprintf(stderr, "%s: update width too large x: %d, w: %d\n",

                        __FUNCTION__, x, w);

        x = MIN(x, s->width);

        w = s->width - x;

    }



    if (y + h > s->height) {

        fprintf(stderr, "%s: update height too large y: %d, h: %d\n",

                        __FUNCTION__, y, h);

        y = MIN(y, s->height);

        h = s->height - y;

    }



    line = h;

    bypl = s->bypp * s->width;

    width = s->bypp * w;

    start = s->bypp * x + bypl * y;

    src = s->vga.vram_ptr + start;

    dst = ds_get_data(s->vga.ds) + start;



    for (; line > 0; line --, src += bypl, dst += bypl)

        memcpy(dst, src, width);



    dpy_gfx_update(s->vga.ds, x, y, w, h);

}

static inline void FUNC_0(struct vmsvga_state_s *VAR_0,

                int VAR_1, int VAR_2, int VAR_3, int VAR_4)

{

    int VAR_5;

    int VAR_6;

    int VAR_7;

    int VAR_8;

    uint8_t *src;

    uint8_t *dst;



    if (VAR_1 + VAR_3 > VAR_0->VAR_7) {

        fprintf(stderr, "%VAR_0: update VAR_7 too large VAR_1: %d, VAR_3: %d\n",

                        __FUNCTION__, VAR_1, VAR_3);

        VAR_1 = MIN(VAR_1, VAR_0->VAR_7);

        VAR_3 = VAR_0->VAR_7 - VAR_1;

    }



    if (VAR_2 + VAR_4 > VAR_0->height) {

        fprintf(stderr, "%VAR_0: update height too large VAR_2: %d, VAR_4: %d\n",

                        __FUNCTION__, VAR_2, VAR_4);

        VAR_2 = MIN(VAR_2, VAR_0->height);

        VAR_4 = VAR_0->height - VAR_2;

    }



    VAR_5 = VAR_4;

    VAR_6 = VAR_0->bypp * VAR_0->VAR_7;

    VAR_7 = VAR_0->bypp * VAR_3;

    VAR_8 = VAR_0->bypp * VAR_1 + VAR_6 * VAR_2;

    src = VAR_0->vga.vram_ptr + VAR_8;

    dst = ds_get_data(VAR_0->vga.ds) + VAR_8;



    for (; VAR_5 > 0; VAR_5 --, src += VAR_6, dst += VAR_6)

        memcpy(dst, src, VAR_7);



    dpy_gfx_update(VAR_0->vga.ds, VAR_1, VAR_2, VAR_3, VAR_4);

}

static inline void FUNC_0(struct vmsvga_state_s *VAR_0,
int VAR_1, int VAR_2, int VAR_3, int VAR_4)
{ int VAR_5; int VAR_6; int VAR_7; int VAR_8; uint8_t *src; uint8_t *dst; if (VAR_1 + VAR_3 > VAR_0->VAR_7) { fprintf(stderr, "%VAR_0: update VAR_7 too large VAR_1: %d, VAR_3: %d\n",
__FUNCTION__, VAR_1, VAR_3); VAR_1 = MIN(VAR_1, VAR_0->VAR_7); VAR_3 = VAR_0->VAR_7 - VAR_1; } if (VAR_2 + VAR_4 > VAR_0->height) { fprintf(stderr, "%VAR_0: update height too large VAR_2: %d, VAR_4: %d\n",
__FUNCTION__, VAR_2, VAR_4); VAR_2 = MIN(VAR_2, VAR_0->height); VAR_4 = VAR_0->height - VAR_2; } VAR_5 = VAR_4; VAR_6 = VAR_0->bypp * VAR_0->VAR_7; VAR_7 = VAR_0->bypp * VAR_3; VAR_8 = VAR_0->bypp * VAR_1 + VAR_6 * VAR_2; src = VAR_0->vga.vram_ptr + VAR_8; dst = ds_get_data(VAR_0->vga.ds) + VAR_8; for (; VAR_5 > 0; VAR_5 --, src += VAR_6, dst += VAR_6) memcpy(dst, src, VAR_7); dpy_gfx_update(VAR_0->vga.ds, VAR_1, VAR_2, VAR_3, VAR_4); }