static int usb_net_handle_datain(USBNetState *s, USBPacket *p)

{

    int ret = USB_RET_NAK;



    if (s->in_ptr > s->in_len) {

        s->in_ptr = s->in_len = 0;

        ret = USB_RET_NAK;

        return ret;

    }

    if (!s->in_len) {

        ret = USB_RET_NAK;

        return ret;

    }

    ret = s->in_len - s->in_ptr;

    if (ret > p->len)

        ret = p->len;

    memcpy(p->data, &s->in_buf[s->in_ptr], ret);

    s->in_ptr += ret;

    if (s->in_ptr >= s->in_len &&

                    (is_rndis(s) || (s->in_len & (64 - 1)) || !ret)) {

        /* no short packet necessary */

        s->in_ptr = s->in_len = 0;

    }



#ifdef TRAFFIC_DEBUG

    fprintf(stderr, "usbnet: data in len %u return %d", p->len, ret);

    {

        int i;

        fprintf(stderr, ":");

        for (i = 0; i < ret; i++) {

            if (!(i & 15))

                fprintf(stderr, "\n%04x:", i);

            fprintf(stderr, " %02x", p->data[i]);

        }

        fprintf(stderr, "\n\n");

    }

#endif



    return ret;

}

static int usb_net_handle_datain(USBNetState *s, USBPacket *p)

{

    int ret = USB_RET_NAK;



    if (s->in_ptr > s->in_len) {

        s->in_ptr = s->in_len = 0;

        ret = USB_RET_NAK;

        return ret;

    }

    if (!s->in_len) {

        ret = USB_RET_NAK;

        return ret;

    }

    ret = s->in_len - s->in_ptr;

    if (ret > p->len)

        ret = p->len;

    memcpy(p->data, &s->in_buf[s->in_ptr], ret);

    s->in_ptr += ret;

    if (s->in_ptr >= s->in_len &&

                    (is_rndis(s) || (s->in_len & (64 - 1)) || !ret)) {

        

        s->in_ptr = s->in_len = 0;

    }



#ifdef TRAFFIC_DEBUG

    fprintf(stderr, "usbnet: data in len %u return %d", p->len, ret);

    {

        int i;

        fprintf(stderr, ":");

        for (i = 0; i < ret; i++) {

            if (!(i & 15))

                fprintf(stderr, "\n%04x:", i);

            fprintf(stderr, " %02x", p->data[i]);

        }

        fprintf(stderr, "\n\n");

    }

#endif



    return ret;

}

        int i;         fprintf(stderr, ":");         for (i = 0; i < ret; i++) {             if (!(i & 15))                 fprintf(stderr, "\n%04x:", i);             fprintf(stderr, " %02x", p->data[i]);         fprintf(stderr, "\n\n");     if (ret > p->len)         ret = p->len;     memcpy(p->data, &s->in_buf[s->in_ptr], ret);     fprintf(stderr, "usbnet: data in len %u return %d", p->len, ret);         int i;         fprintf(stderr, ":");         for (i = 0; i < ret; i++) {             if (!(i & 15))                 fprintf(stderr, "\n%04x:", i);             fprintf(stderr, " %02x", p->data[i]);         fprintf(stderr, "\n\n");         int i;         fprintf(stderr, ":");             if (!(i & 15))                 fprintf(stderr, "\n%04x:", i);             fprintf(stderr, " %02x", p->data[i]);         fprintf(stderr, "\n\n");
static int FUNC_0(USBNetState *VAR_0, USBPacket *VAR_1)

{

    int VAR_2 = USB_RET_NAK;



    if (VAR_0->in_ptr > VAR_0->in_len) {

        VAR_0->in_ptr = VAR_0->in_len = 0;

        VAR_2 = USB_RET_NAK;

        return VAR_2;

    }

    if (!VAR_0->in_len) {

        VAR_2 = USB_RET_NAK;

        return VAR_2;

    }

    VAR_2 = VAR_0->in_len - VAR_0->in_ptr;

    if (VAR_2 > VAR_1->len)

        VAR_2 = VAR_1->len;

    memcpy(VAR_1->data, &VAR_0->in_buf[VAR_0->in_ptr], VAR_2);

    VAR_0->in_ptr += VAR_2;

    if (VAR_0->in_ptr >= VAR_0->in_len &&

                    (is_rndis(VAR_0) || (VAR_0->in_len & (64 - 1)) || !VAR_2)) {

        

        VAR_0->in_ptr = VAR_0->in_len = 0;

    }



#ifdef TRAFFIC_DEBUG

    fprintf(stderr, "usbnet: data in len %u return %d", VAR_1->len, VAR_2);

    {

        int i;

        fprintf(stderr, ":");

        for (i = 0; i < VAR_2; i++) {

            if (!(i & 15))

                fprintf(stderr, "\n%04x:", i);

            fprintf(stderr, " %02x", VAR_1->data[i]);

        }

        fprintf(stderr, "\n\n");

    }

#endif



    return VAR_2;

}

static int FUNC_0(USBNetState *VAR_0, USBPacket *VAR_1)
{ int VAR_2 = USB_RET_NAK; if (VAR_0->in_ptr > VAR_0->in_len) { VAR_0->in_ptr = VAR_0->in_len = 0; VAR_2 = USB_RET_NAK; return VAR_2; } if (!VAR_0->in_len) { VAR_2 = USB_RET_NAK; return VAR_2; } VAR_2 = VAR_0->in_len - VAR_0->in_ptr; if (VAR_2 > VAR_1->len)
VAR_2 = VAR_1->len; memcpy(VAR_1->data, &VAR_0->in_buf[VAR_0->in_ptr], VAR_2); VAR_0->in_ptr += VAR_2; if (VAR_0->in_ptr >= VAR_0->in_len &&
(is_rndis(VAR_0) || (VAR_0->in_len & (64 - 1)) || !VAR_2)) { VAR_0->in_ptr = VAR_0->in_len = 0; } #ifdef TRAFFIC_DEBUG
fprintf(stderr, "usbnet: data in len %u return %d", VAR_1->len, VAR_2); { int i; fprintf(stderr, ":"); for (i = 0; i < VAR_2; i++) { if (!(i & 15))
fprintf(stderr, "\n%04x:", i); fprintf(stderr, " %02x", VAR_1->data[i]); } fprintf(stderr, "\n\n"); } #endif
return VAR_2; }