static inline int usb_bt_fifo_dequeue(struct usb_hci_in_fifo_s *fifo,

                USBPacket *p)

{

    int len;



    if (likely(!fifo->len))

        return USB_RET_STALL;



    len = MIN(p->len, fifo->fifo[fifo->start].len);

    memcpy(p->data, fifo->fifo[fifo->start].data, len);

    if (len == p->len) {

        fifo->fifo[fifo->start].len -= len;

        fifo->fifo[fifo->start].data += len;

    } else {

        fifo->start ++;

        fifo->start &= CFIFO_LEN_MASK;

        fifo->len --;

    }



    fifo->dstart += len;

    fifo->dlen -= len;

    if (fifo->dstart >= fifo->dsize) {

        fifo->dstart = 0;

        fifo->dsize = DFIFO_LEN_MASK + 1;

    }



    return len;

}

static inline int usb_bt_fifo_dequeue(struct usb_hci_in_fifo_s *fifo,

                USBPacket *p)

{

    int len;



    if (likely(!fifo->len))

        return USB_RET_STALL;



    len = MIN(p->len, fifo->fifo[fifo->start].len);

    memcpy(p->data, fifo->fifo[fifo->start].data, len);

    if (len == p->len) {

        fifo->fifo[fifo->start].len -= len;

        fifo->fifo[fifo->start].data += len;

    } else {

        fifo->start ++;

        fifo->start &= CFIFO_LEN_MASK;

        fifo->len --;

    }



    fifo->dstart += len;

    fifo->dlen -= len;

    if (fifo->dstart >= fifo->dsize) {

        fifo->dstart = 0;

        fifo->dsize = DFIFO_LEN_MASK + 1;

    }



    return len;

}

    len = MIN(p->len, fifo->fifo[fifo->start].len);     memcpy(p->data, fifo->fifo[fifo->start].data, len);     if (len == p->len) {     int len;
static inline int FUNC_0(struct usb_hci_in_fifo_s *VAR_0,

                USBPacket *VAR_1)

{

    int VAR_2;



    if (likely(!VAR_0->VAR_2))

        return USB_RET_STALL;



    VAR_2 = MIN(VAR_1->VAR_2, VAR_0->VAR_0[VAR_0->start].VAR_2);

    memcpy(VAR_1->data, VAR_0->VAR_0[VAR_0->start].data, VAR_2);

    if (VAR_2 == VAR_1->VAR_2) {

        VAR_0->VAR_0[VAR_0->start].VAR_2 -= VAR_2;

        VAR_0->VAR_0[VAR_0->start].data += VAR_2;

    } else {

        VAR_0->start ++;

        VAR_0->start &= CFIFO_LEN_MASK;

        VAR_0->VAR_2 --;

    }



    VAR_0->dstart += VAR_2;

    VAR_0->dlen -= VAR_2;

    if (VAR_0->dstart >= VAR_0->dsize) {

        VAR_0->dstart = 0;

        VAR_0->dsize = DFIFO_LEN_MASK + 1;

    }



    return VAR_2;

}

static inline int FUNC_0(struct usb_hci_in_fifo_s *VAR_0,
USBPacket *VAR_1)
{ int VAR_2; if (likely(!VAR_0->VAR_2))
return USB_RET_STALL; VAR_2 = MIN(VAR_1->VAR_2, VAR_0->VAR_0[VAR_0->start].VAR_2); memcpy(VAR_1->data, VAR_0->VAR_0[VAR_0->start].data, VAR_2); if (VAR_2 == VAR_1->VAR_2) { VAR_0->VAR_0[VAR_0->start].VAR_2 -= VAR_2; VAR_0->VAR_0[VAR_0->start].data += VAR_2; } else { VAR_0->start ++; VAR_0->start &= CFIFO_LEN_MASK; VAR_0->VAR_2 --; } VAR_0->dstart += VAR_2; VAR_0->dlen -= VAR_2; if (VAR_0->dstart >= VAR_0->dsize) { VAR_0->dstart = 0; VAR_0->dsize = DFIFO_LEN_MASK + 1; } return VAR_2; }