static int http_read(URLContext *h, uint8_t *buf, int size)

{

    HTTPContext *s = h->priv_data;

    int size1, len;



    size1 = size;

    while (size > 0) {

        /* read bytes from input buffer first */

        len = s->buf_end - s->buf_ptr;

        if (len > 0) {

            if (len > size)

                len = size;

            memcpy(buf, s->buf_ptr, len);

            s->buf_ptr += len;

        } else {

            len = url_read (s->hd, buf, size);

            if (len < 0) {

                return len;

            } else if (len == 0) {

                break;

            }

        }

        size -= len;

        buf += len;

    }

    return size1 - size;

}

static int http_read(URLContext *h, uint8_t *buf, int size)

{

    HTTPContext *s = h->priv_data;

    int size1, len;



    size1 = size;

    while (size > 0) {

        

        len = s->buf_end - s->buf_ptr;

        if (len > 0) {

            if (len > size)

                len = size;

            memcpy(buf, s->buf_ptr, len);

            s->buf_ptr += len;

        } else {

            len = url_read (s->hd, buf, size);

            if (len < 0) {

                return len;

            } else if (len == 0) {

                break;

            }

        }

        size -= len;

        buf += len;

    }

    return size1 - size;

}

static int FUNC_0(URLContext *VAR_0, uint8_t *VAR_1, int VAR_2)

{

    HTTPContext *s = VAR_0->priv_data;

    int VAR_3, VAR_4;



    VAR_3 = VAR_2;

    while (VAR_2 > 0) {

        

        VAR_4 = s->buf_end - s->buf_ptr;

        if (VAR_4 > 0) {

            if (VAR_4 > VAR_2)

                VAR_4 = VAR_2;

            memcpy(VAR_1, s->buf_ptr, VAR_4);

            s->buf_ptr += VAR_4;

        } else {

            VAR_4 = url_read (s->hd, VAR_1, VAR_2);

            if (VAR_4 < 0) {

                return VAR_4;

            } else if (VAR_4 == 0) {

                break;

            }

        }

        VAR_2 -= VAR_4;

        VAR_1 += VAR_4;

    }

    return VAR_3 - VAR_2;

}

static int FUNC_0(URLContext *VAR_0, uint8_t *VAR_1, int VAR_2)
{ HTTPContext *s = VAR_0->priv_data; int VAR_3, VAR_4; VAR_3 = VAR_2; while (VAR_2 > 0) { VAR_4 = s->buf_end - s->buf_ptr; if (VAR_4 > 0) { if (VAR_4 > VAR_2)
VAR_4 = VAR_2; memcpy(VAR_1, s->buf_ptr, VAR_4); s->buf_ptr += VAR_4; } else { VAR_4 = url_read (s->hd, VAR_1, VAR_2); if (VAR_4 < 0) { return VAR_4; } else if (VAR_4 == 0) { break; } } VAR_2 -= VAR_4; VAR_1 += VAR_4; } return VAR_3 - VAR_2; }