static inline void vmsvga_update_rect(struct vmsvga_state_s *s,

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

{

    DisplaySurface *surface = qemu_console_surface(s->vga.con);

    int line;

    int bypl;

    int width;

    int start;

    uint8_t *src;

    uint8_t *dst;



    if (x < 0) {

        fprintf(stderr, "%s: update x was < 0 (%d)\n", __func__, x);

        w += x;

        x = 0;

    }

    if (w < 0) {

        fprintf(stderr, "%s: update w was < 0 (%d)\n", __func__, w);

        w = 0;

    }

    if (x + w > surface_width(surface)) {

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

                __func__, x, w);

        x = MIN(x, surface_width(surface));

        w = surface_width(surface) - x;

    }



    if (y < 0) {

        fprintf(stderr, "%s: update y was < 0 (%d)\n",  __func__, y);

        h += y;

        y = 0;

    }

    if (h < 0) {

        fprintf(stderr, "%s: update h was < 0 (%d)\n",  __func__, h);

        h = 0;

    }

    if (y + h > surface_height(surface)) {

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

                __func__, y, h);

        y = MIN(y, surface_height(surface));

        h = surface_height(surface) - y;

    }



    bypl = surface_stride(surface);

    width = surface_bytes_per_pixel(surface) * w;

    start = surface_bytes_per_pixel(surface) * x + bypl * y;

    src = s->vga.vram_ptr + start;

    dst = surface_data(surface) + start;



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

        memcpy(dst, src, width);

    }

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

}

static inline void vmsvga_update_rect(struct vmsvga_state_s *s,

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

{

    DisplaySurface *surface = qemu_console_surface(s->vga.con);

    int line;

    int bypl;

    int width;

    int start;

    uint8_t *src;

    uint8_t *dst;



    if (x < 0) {

        fprintf(stderr, "%s: update x was < 0 (%d)\n", __func__, x);

        w += x;

        x = 0;

    }

    if (w < 0) {

        fprintf(stderr, "%s: update w was < 0 (%d)\n", __func__, w);

        w = 0;

    }

    if (x + w > surface_width(surface)) {

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

                __func__, x, w);

        x = MIN(x, surface_width(surface));

        w = surface_width(surface) - x;

    }



    if (y < 0) {

        fprintf(stderr, "%s: update y was < 0 (%d)\n",  __func__, y);

        h += y;

        y = 0;

    }

    if (h < 0) {

        fprintf(stderr, "%s: update h was < 0 (%d)\n",  __func__, h);

        h = 0;

    }

    if (y + h > surface_height(surface)) {

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

                __func__, y, h);

        y = MIN(y, surface_height(surface));

        h = surface_height(surface) - y;

    }



    bypl = surface_stride(surface);

    width = surface_bytes_per_pixel(surface) * w;

    start = surface_bytes_per_pixel(surface) * x + bypl * y;

    src = s->vga.vram_ptr + start;

    dst = surface_data(surface) + start;



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

        memcpy(dst, src, width);

    }

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

}

    if (x < 0) {         fprintf(stderr, "%s: update x was < 0 (%d)\n", __func__, x);         w += x;     if (w < 0) {         fprintf(stderr, "%s: update w was < 0 (%d)\n", __func__, w);         w = 0;     if (x + w > surface_width(surface)) {         fprintf(stderr, "%s: update width too large x: %d, w: %d\n",                 __func__, x, w);         x = MIN(x, surface_width(surface));         w = surface_width(surface) - x;     if (y < 0) {         fprintf(stderr, "%s: update y was < 0 (%d)\n",  __func__, y);         h += y;     if (h < 0) {         fprintf(stderr, "%s: update h was < 0 (%d)\n",  __func__, h);         h = 0;     if (y + h > surface_height(surface)) {         fprintf(stderr, "%s: update height too large y: %d, h: %d\n",                 __func__, y, h);         y = MIN(y, surface_height(surface));         h = surface_height(surface) - y;
static inline void FUNC_0(struct vmsvga_state_s *VAR_0,

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

{

    DisplaySurface *surface = qemu_console_surface(VAR_0->vga.con);

    int VAR_5;

    int VAR_6;

    int VAR_7;

    int VAR_8;

    uint8_t *src;

    uint8_t *dst;



    if (VAR_1 < 0) {

        fprintf(stderr, "%VAR_0: update VAR_1 was < 0 (%d)\n", __func__, VAR_1);

        VAR_3 += VAR_1;

        VAR_1 = 0;

    }

    if (VAR_3 < 0) {

        fprintf(stderr, "%VAR_0: update VAR_3 was < 0 (%d)\n", __func__, VAR_3);

        VAR_3 = 0;

    }

    if (VAR_1 + VAR_3 > surface_width(surface)) {

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

                __func__, VAR_1, VAR_3);

        VAR_1 = MIN(VAR_1, surface_width(surface));

        VAR_3 = surface_width(surface) - VAR_1;

    }



    if (VAR_2 < 0) {

        fprintf(stderr, "%VAR_0: update VAR_2 was < 0 (%d)\n",  __func__, VAR_2);

        VAR_4 += VAR_2;

        VAR_2 = 0;

    }

    if (VAR_4 < 0) {

        fprintf(stderr, "%VAR_0: update VAR_4 was < 0 (%d)\n",  __func__, VAR_4);

        VAR_4 = 0;

    }

    if (VAR_2 + VAR_4 > surface_height(surface)) {

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

                __func__, VAR_2, VAR_4);

        VAR_2 = MIN(VAR_2, surface_height(surface));

        VAR_4 = surface_height(surface) - VAR_2;

    }



    VAR_6 = surface_stride(surface);

    VAR_7 = surface_bytes_per_pixel(surface) * VAR_3;

    VAR_8 = surface_bytes_per_pixel(surface) * VAR_1 + VAR_6 * VAR_2;

    src = VAR_0->vga.vram_ptr + VAR_8;

    dst = surface_data(surface) + VAR_8;



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

        memcpy(dst, src, VAR_7);

    }

    dpy_gfx_update(VAR_0->vga.con, 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)
{ DisplaySurface *surface = qemu_console_surface(VAR_0->vga.con); int VAR_5; int VAR_6; int VAR_7; int VAR_8; uint8_t *src; uint8_t *dst; if (VAR_1 < 0) { fprintf(stderr, "%VAR_0: update VAR_1 was < 0 (%d)\n", __func__, VAR_1); VAR_3 += VAR_1; VAR_1 = 0; } if (VAR_3 < 0) { fprintf(stderr, "%VAR_0: update VAR_3 was < 0 (%d)\n", __func__, VAR_3); VAR_3 = 0; } if (VAR_1 + VAR_3 > surface_width(surface)) { fprintf(stderr, "%VAR_0: update VAR_7 too large VAR_1: %d, VAR_3: %d\n",
__func__, VAR_1, VAR_3); VAR_1 = MIN(VAR_1, surface_width(surface)); VAR_3 = surface_width(surface) - VAR_1; } if (VAR_2 < 0) { fprintf(stderr, "%VAR_0: update VAR_2 was < 0 (%d)\n",  __func__, VAR_2); VAR_4 += VAR_2; VAR_2 = 0; } if (VAR_4 < 0) { fprintf(stderr, "%VAR_0: update VAR_4 was < 0 (%d)\n",  __func__, VAR_4); VAR_4 = 0; } if (VAR_2 + VAR_4 > surface_height(surface)) { fprintf(stderr, "%VAR_0: update height too large VAR_2: %d, VAR_4: %d\n",
__func__, VAR_2, VAR_4); VAR_2 = MIN(VAR_2, surface_height(surface)); VAR_4 = surface_height(surface) - VAR_2; } VAR_6 = surface_stride(surface); VAR_7 = surface_bytes_per_pixel(surface) * VAR_3; VAR_8 = surface_bytes_per_pixel(surface) * VAR_1 + VAR_6 * VAR_2; src = VAR_0->vga.vram_ptr + VAR_8; dst = surface_data(surface) + VAR_8; for (VAR_5 = VAR_4; VAR_5 > 0; VAR_5--, src += VAR_6, dst += VAR_6) { memcpy(dst, src, VAR_7); } dpy_gfx_update(VAR_0->vga.con, VAR_1, VAR_2, VAR_3, VAR_4); }