static inline void usb_bt_fifo_out_enqueue(struct USBBtState *s,

                struct usb_hci_out_fifo_s *fifo,

                void (*send)(struct HCIInfo *, const uint8_t *, int),

                int (*complete)(const uint8_t *, int),

                const uint8_t *data, int len)

{

    if (fifo->len) {

        memcpy(fifo->data + fifo->len, data, len);

        fifo->len += len;

        if (complete(fifo->data, fifo->len)) {

            send(s->hci, fifo->data, fifo->len);

            fifo->len = 0;

        }

    } else if (complete(data, len))

        send(s->hci, data, len);

    else {

        memcpy(fifo->data, data, len);

        fifo->len = len;

    }



    /* TODO: do we need to loop? */

}

static inline void usb_bt_fifo_out_enqueue(struct USBBtState *s,

                struct usb_hci_out_fifo_s *fifo,

                void (*send)(struct HCIInfo *, const uint8_t *, int),

                int (*complete)(const uint8_t *, int),

                const uint8_t *data, int len)

{

    if (fifo->len) {

        memcpy(fifo->data + fifo->len, data, len);

        fifo->len += len;

        if (complete(fifo->data, fifo->len)) {

            send(s->hci, fifo->data, fifo->len);

            fifo->len = 0;

        }

    } else if (complete(data, len))

        send(s->hci, data, len);

    else {

        memcpy(fifo->data, data, len);

        fifo->len = len;

    }



    

}

                const uint8_t *data, int len)     if (fifo->len) {         memcpy(fifo->data + fifo->len, data, len);         fifo->len += len;         if (complete(fifo->data, fifo->len)) {             send(s->hci, fifo->data, fifo->len);             fifo->len = 0;     } else if (complete(data, len))         send(s->hci, data, len);     else {         memcpy(fifo->data, data, len);         fifo->len = len;
VAR_5staticVAR_5 VAR_5inlineVAR_5 VAR_5voidVAR_5 VAR_5usb_bt_fifo_out_enqueueVAR_5(VAR_5structVAR_5 VAR_5USBBtStateVAR_5 *VAR_5VAR_0VAR_5,

                VAR_5structVAR_5 VAR_5usb_hci_out_fifo_sVAR_5 *VAR_5VAR_1VAR_5,

                VAR_5voidVAR_5 (*VAR_5VAR_2VAR_5)(VAR_5structVAR_5 VAR_5HCIInfoVAR_5 *, VAR_5constVAR_5 VAR_5uint8_tVAR_5 *, VAR_5intVAR_5),

                VAR_5intVAR_5 (*VAR_5completeVAR_5)(VAR_5constVAR_5 VAR_5uint8_tVAR_5 *, VAR_5intVAR_5),

                VAR_5constVAR_5 VAR_5uint8_tVAR_5 *VAR_5dataVAR_5, VAR_5intVAR_5 VAR_5lenVAR_5)

{

    VAR_5ifVAR_5 (VAR_5VAR_1VAR_5->VAR_5lenVAR_5) {

        VAR_5memcpyVAR_5(VAR_5VAR_1VAR_5->VAR_5dataVAR_5 + VAR_5VAR_1VAR_5->VAR_5lenVAR_5, VAR_5dataVAR_5, VAR_5lenVAR_5);

        VAR_5VAR_1VAR_5->VAR_5lenVAR_5 += VAR_5lenVAR_5;

        VAR_5ifVAR_5 (VAR_5completeVAR_5(VAR_5VAR_1VAR_5->VAR_5dataVAR_5, VAR_5VAR_1VAR_5->VAR_5lenVAR_5)) {

            VAR_5VAR_2VAR_5(VAR_5VAR_0VAR_5->VAR_5hciVAR_5, VAR_5VAR_1VAR_5->VAR_5dataVAR_5, VAR_5VAR_1VAR_5->VAR_5lenVAR_5);

            VAR_5VAR_1VAR_5->VAR_5lenVAR_5 = VAR_50VAR_5;

        }

    } VAR_5elseVAR_5 VAR_5ifVAR_5 (VAR_5completeVAR_5(VAR_5dataVAR_5, VAR_5lenVAR_5))

        VAR_5VAR_2VAR_5(VAR_5VAR_0VAR_5->VAR_5hciVAR_5, VAR_5dataVAR_5, VAR_5lenVAR_5);

    VAR_5elseVAR_5 {

        VAR_5memcpyVAR_5(VAR_5VAR_1VAR_5->VAR_5dataVAR_5, VAR_5dataVAR_5, VAR_5lenVAR_5);

        VAR_5VAR_1VAR_5->VAR_5lenVAR_5 = VAR_5lenVAR_5;

    }



    

}

VAR_5staticVAR_5 VAR_5inlineVAR_5 VAR_5voidVAR_5 VAR_5usb_bt_fifo_out_enqueueVAR_5(VAR_5structVAR_5 VAR_5USBBtStateVAR_5 *VAR_5VAR_0VAR_5,
VAR_5structVAR_5 VAR_5usb_hci_out_fifo_sVAR_5 *VAR_5VAR_1VAR_5,
VAR_5voidVAR_5 (*VAR_5VAR_2VAR_5)(VAR_5structVAR_5 VAR_5HCIInfoVAR_5 *, VAR_5constVAR_5 VAR_5uint8_tVAR_5 *, VAR_5intVAR_5),
VAR_5intVAR_5 (*VAR_5completeVAR_5)(VAR_5constVAR_5 VAR_5uint8_tVAR_5 *, VAR_5intVAR_5),
VAR_5constVAR_5 VAR_5uint8_tVAR_5 *VAR_5dataVAR_5, VAR_5intVAR_5 VAR_5lenVAR_5)
{ VAR_5ifVAR_5 (VAR_5VAR_1VAR_5->VAR_5lenVAR_5) { VAR_5memcpyVAR_5(VAR_5VAR_1VAR_5->VAR_5dataVAR_5 + VAR_5VAR_1VAR_5->VAR_5lenVAR_5, VAR_5dataVAR_5, VAR_5lenVAR_5); VAR_5VAR_1VAR_5->VAR_5lenVAR_5 += VAR_5lenVAR_5; VAR_5ifVAR_5 (VAR_5completeVAR_5(VAR_5VAR_1VAR_5->VAR_5dataVAR_5, VAR_5VAR_1VAR_5->VAR_5lenVAR_5)) { VAR_5VAR_2VAR_5(VAR_5VAR_0VAR_5->VAR_5hciVAR_5, VAR_5VAR_1VAR_5->VAR_5dataVAR_5, VAR_5VAR_1VAR_5->VAR_5lenVAR_5); VAR_5VAR_1VAR_5->VAR_5lenVAR_5 = VAR_50VAR_5; } } VAR_5elseVAR_5 VAR_5ifVAR_5 (VAR_5completeVAR_5(VAR_5dataVAR_5, VAR_5lenVAR_5)) VAR_5VAR_2VAR_5(VAR_5VAR_0VAR_5->VAR_5hciVAR_5, VAR_5dataVAR_5, VAR_5lenVAR_5); VAR_5elseVAR_5 { VAR_5memcpyVAR_5(VAR_5VAR_1VAR_5->VAR_5dataVAR_5, VAR_5dataVAR_5, VAR_5lenVAR_5); VAR_5VAR_1VAR_5->VAR_5lenVAR_5 = VAR_5lenVAR_5; } }