void qemu_coroutine_enter(Coroutine *co, void *opaque)

{

    Coroutine *self = qemu_coroutine_self();

    CoroutineAction ret;



    trace_qemu_coroutine_enter(self, co, opaque);



    if (co->caller) {

        fprintf(stderr, "Co-routine re-entered recursively\n");

        abort();

    }



    co->caller = self;

    co->entry_arg = opaque;

    ret = qemu_coroutine_switch(self, co, COROUTINE_ENTER);



    qemu_co_queue_run_restart(co);



    switch (ret) {

    case COROUTINE_YIELD:

        return;

    case COROUTINE_TERMINATE:

        trace_qemu_coroutine_terminate(co);

        coroutine_delete(co);

        return;

    default:

        abort();

    }

}

void qemu_coroutine_enter(Coroutine *co, void *opaque)

{

    Coroutine *self = qemu_coroutine_self();

    CoroutineAction ret;



    trace_qemu_coroutine_enter(self, co, opaque);



    if (co->caller) {

        fprintf(stderr, "Co-routine re-entered recursively\n");

        abort();

    }



    co->caller = self;

    co->entry_arg = opaque;

    ret = qemu_coroutine_switch(self, co, COROUTINE_ENTER);



    qemu_co_queue_run_restart(co);



    switch (ret) {

    case COROUTINE_YIELD:

        return;

    case COROUTINE_TERMINATE:

        trace_qemu_coroutine_terminate(co);

        coroutine_delete(co);

        return;

    default:

        abort();

    }

}

void qemu_coroutine_enter(Coroutine *co, void *opaque)     trace_qemu_coroutine_enter(self, co, opaque);     co->entry_arg = opaque;
void FUNC_0(Coroutine *VAR_0, void *VAR_1)

{

    Coroutine *self = qemu_coroutine_self();

    CoroutineAction ret;



    trace_qemu_coroutine_enter(self, VAR_0, VAR_1);



    if (VAR_0->caller) {

        fprintf(stderr, "Co-routine re-entered recursively\n");

        abort();

    }



    VAR_0->caller = self;

    VAR_0->entry_arg = VAR_1;

    ret = qemu_coroutine_switch(self, VAR_0, COROUTINE_ENTER);



    qemu_co_queue_run_restart(VAR_0);



    switch (ret) {

    case COROUTINE_YIELD:

        return;

    case COROUTINE_TERMINATE:

        trace_qemu_coroutine_terminate(VAR_0);

        coroutine_delete(VAR_0);

        return;

    default:

        abort();

    }

}

void FUNC_0(Coroutine *VAR_0, void *VAR_1)
{ Coroutine *self = qemu_coroutine_self(); CoroutineAction ret; trace_qemu_coroutine_enter(self, VAR_0, VAR_1); if (VAR_0->caller) { fprintf(stderr, "Co-routine re-entered recursively\n"); abort(); } VAR_0->caller = self; VAR_0->entry_arg = VAR_1; ret = qemu_coroutine_switch(self, VAR_0, COROUTINE_ENTER); qemu_co_queue_run_restart(VAR_0); switch (ret) { case COROUTINE_YIELD:
return; case COROUTINE_TERMINATE:
trace_qemu_coroutine_terminate(VAR_0); coroutine_delete(VAR_0); return; default:
abort(); } }