void qemu_iovec_concat(QEMUIOVector *dst,

                       QEMUIOVector *src, size_t soffset, size_t sbytes)

{

    int i;

    size_t done;

    struct iovec *siov = src->iov;

    assert(dst->nalloc != -1);

    assert(src->size >= soffset);

    for (i = 0, done = 0; done < sbytes && i < src->niov; i++) {

        if (soffset < siov[i].iov_len) {

            size_t len = MIN(siov[i].iov_len - soffset, sbytes - done);

            qemu_iovec_add(dst, siov[i].iov_base + soffset, len);

            done += len;

            soffset = 0;

        } else {

            soffset -= siov[i].iov_len;

        }

    }

    /* return done; */

}

void qemu_iovec_concat(QEMUIOVector *dst,

                       QEMUIOVector *src, size_t soffset, size_t sbytes)

{

    int i;

    size_t done;

    struct iovec *siov = src->iov;

    assert(dst->nalloc != -1);

    assert(src->size >= soffset);

    for (i = 0, done = 0; done < sbytes && i < src->niov; i++) {

        if (soffset < siov[i].iov_len) {

            size_t len = MIN(siov[i].iov_len - soffset, sbytes - done);

            qemu_iovec_add(dst, siov[i].iov_base + soffset, len);

            done += len;

            soffset = 0;

        } else {

            soffset -= siov[i].iov_len;

        }

    }

    

}

void FUNC_0(QEMUIOVector *VAR_0,

                       QEMUIOVector *VAR_1, size_t VAR_2, size_t VAR_3)

{

    int VAR_4;

    size_t done;

    struct iovec *VAR_5 = VAR_1->iov;

    assert(VAR_0->nalloc != -1);

    assert(VAR_1->size >= VAR_2);

    for (VAR_4 = 0, done = 0; done < VAR_3 && VAR_4 < VAR_1->niov; VAR_4++) {

        if (VAR_2 < VAR_5[VAR_4].iov_len) {

            size_t len = MIN(VAR_5[VAR_4].iov_len - VAR_2, VAR_3 - done);

            qemu_iovec_add(VAR_0, VAR_5[VAR_4].iov_base + VAR_2, len);

            done += len;

            VAR_2 = 0;

        } else {

            VAR_2 -= VAR_5[VAR_4].iov_len;

        }

    }

    

}

void FUNC_0(QEMUIOVector *VAR_0,
QEMUIOVector *VAR_1, size_t VAR_2, size_t VAR_3)
{ int VAR_4; size_t done; struct iovec *VAR_5 = VAR_1->iov; assert(VAR_0->nalloc != -1); assert(VAR_1->size >= VAR_2); for (VAR_4 = 0, done = 0; done < VAR_3 && VAR_4 < VAR_1->niov; VAR_4++) { if (VAR_2 < VAR_5[VAR_4].iov_len) { size_t len = MIN(VAR_5[VAR_4].iov_len - VAR_2, VAR_3 - done); qemu_iovec_add(VAR_0, VAR_5[VAR_4].iov_base + VAR_2, len); done += len; VAR_2 = 0; } else { VAR_2 -= VAR_5[VAR_4].iov_len; } } }