static void cuda_receive_packet(CUDAState *s,

                                const uint8_t *data, int len)

{

    uint8_t obuf[16] = { CUDA_PACKET, 0, data[0] };

    int autopoll;

    uint32_t ti;



    switch(data[0]) {

    case CUDA_AUTOPOLL:

        autopoll = (data[1] != 0);

        if (autopoll != s->autopoll) {

            s->autopoll = autopoll;

            if (autopoll) {

                timer_mod(s->adb_poll_timer,

                               qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) +

                               (get_ticks_per_sec() / CUDA_ADB_POLL_FREQ));

            } else {

                timer_del(s->adb_poll_timer);

            }

        }

        cuda_send_packet_to_host(s, obuf, 3);

        break;

    case CUDA_GET_6805_ADDR:

        cuda_send_packet_to_host(s, obuf, 3);

        break;

    case CUDA_SET_TIME:

        ti = (((uint32_t)data[1]) << 24) + (((uint32_t)data[2]) << 16) + (((uint32_t)data[3]) << 8) + data[4];

        s->tick_offset = ti - (qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) / get_ticks_per_sec());

        cuda_send_packet_to_host(s, obuf, 3);

        break;

    case CUDA_GET_TIME:

        ti = s->tick_offset + (qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) / get_ticks_per_sec());

        obuf[3] = ti >> 24;

        obuf[4] = ti >> 16;

        obuf[5] = ti >> 8;

        obuf[6] = ti;

        cuda_send_packet_to_host(s, obuf, 7);

        break;

    case CUDA_FILE_SERVER_FLAG:

    case CUDA_SET_DEVICE_LIST:

    case CUDA_SET_AUTO_RATE:

    case CUDA_SET_POWER_MESSAGES:

        cuda_send_packet_to_host(s, obuf, 3);

        break;

    case CUDA_POWERDOWN:

        cuda_send_packet_to_host(s, obuf, 3);

        qemu_system_shutdown_request();

        break;

    case CUDA_RESET_SYSTEM:

        cuda_send_packet_to_host(s, obuf, 3);

        qemu_system_reset_request();

        break;

    case CUDA_COMBINED_FORMAT_IIC:


        obuf[1] = 0x5;




        break;

    case CUDA_GET_SET_IIC:

        if (len == 4) {

            cuda_send_packet_to_host(s, obuf, 3);

        } else {






        }

        break;

    default:






        break;

    }

}
static void cuda_receive_packet(CUDAState *s,

                                const uint8_t *data, int len)

{

    uint8_t obuf[16] = { CUDA_PACKET, 0, data[0] };

    int autopoll;

    uint32_t ti;



    switch(data[0]) {

    case CUDA_AUTOPOLL:

        autopoll = (data[1] != 0);

        if (autopoll != s->autopoll) {

            s->autopoll = autopoll;

            if (autopoll) {

                timer_mod(s->adb_poll_timer,

                               qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) +

                               (get_ticks_per_sec() / CUDA_ADB_POLL_FREQ));

            } else {

                timer_del(s->adb_poll_timer);

            }

        }

        cuda_send_packet_to_host(s, obuf, 3);

        break;

    case CUDA_GET_6805_ADDR:

        cuda_send_packet_to_host(s, obuf, 3);

        break;

    case CUDA_SET_TIME:

        ti = (((uint32_t)data[1]) << 24) + (((uint32_t)data[2]) << 16) + (((uint32_t)data[3]) << 8) + data[4];

        s->tick_offset = ti - (qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) / get_ticks_per_sec());

        cuda_send_packet_to_host(s, obuf, 3);

        break;

    case CUDA_GET_TIME:

        ti = s->tick_offset + (qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) / get_ticks_per_sec());

        obuf[3] = ti >> 24;

        obuf[4] = ti >> 16;

        obuf[5] = ti >> 8;

        obuf[6] = ti;

        cuda_send_packet_to_host(s, obuf, 7);

        break;

    case CUDA_FILE_SERVER_FLAG:

    case CUDA_SET_DEVICE_LIST:

    case CUDA_SET_AUTO_RATE:

    case CUDA_SET_POWER_MESSAGES:

        cuda_send_packet_to_host(s, obuf, 3);

        break;

    case CUDA_POWERDOWN:

        cuda_send_packet_to_host(s, obuf, 3);

        qemu_system_shutdown_request();

        break;

    case CUDA_RESET_SYSTEM:

        cuda_send_packet_to_host(s, obuf, 3);

        qemu_system_reset_request();

        break;

    case CUDA_COMBINED_FORMAT_IIC:


        obuf[1] = 0x5;




        break;

    case CUDA_GET_SET_IIC:

        if (len == 4) {

            cuda_send_packet_to_host(s, obuf, 3);

        } else {






        }

        break;

    default:






        break;

    }

}
static void FUNC_0(CUDAState *VAR_0,

                                const uint8_t *VAR_1, int VAR_2)

{

    uint8_t obuf[16] = { CUDA_PACKET, 0, VAR_1[0] };

    int VAR_3;

    uint32_t ti;



    switch(VAR_1[0]) {

    case CUDA_AUTOPOLL:

        VAR_3 = (VAR_1[1] != 0);

        if (VAR_3 != VAR_0->VAR_3) {

            VAR_0->VAR_3 = VAR_3;

            if (VAR_3) {

                timer_mod(VAR_0->adb_poll_timer,

                               qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) +

                               (get_ticks_per_sec() / CUDA_ADB_POLL_FREQ));

            } else {

                timer_del(VAR_0->adb_poll_timer);

            }

        }

        cuda_send_packet_to_host(VAR_0, obuf, 3);

        break;

    case CUDA_GET_6805_ADDR:

        cuda_send_packet_to_host(VAR_0, obuf, 3);

        break;

    case CUDA_SET_TIME:

        ti = (((uint32_t)VAR_1[1]) << 24) + (((uint32_t)VAR_1[2]) << 16) + (((uint32_t)VAR_1[3]) << 8) + VAR_1[4];

        VAR_0->tick_offset = ti - (qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) / get_ticks_per_sec());

        cuda_send_packet_to_host(VAR_0, obuf, 3);

        break;

    case CUDA_GET_TIME:

        ti = VAR_0->tick_offset + (qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) / get_ticks_per_sec());

        obuf[3] = ti >> 24;

        obuf[4] = ti >> 16;

        obuf[5] = ti >> 8;

        obuf[6] = ti;

        cuda_send_packet_to_host(VAR_0, obuf, 7);

        break;

    case CUDA_FILE_SERVER_FLAG:

    case CUDA_SET_DEVICE_LIST:

    case CUDA_SET_AUTO_RATE:

    case CUDA_SET_POWER_MESSAGES:

        cuda_send_packet_to_host(VAR_0, obuf, 3);

        break;

    case CUDA_POWERDOWN:

        cuda_send_packet_to_host(VAR_0, obuf, 3);

        qemu_system_shutdown_request();

        break;

    case CUDA_RESET_SYSTEM:

        cuda_send_packet_to_host(VAR_0, obuf, 3);

        qemu_system_reset_request();

        break;

    case CUDA_COMBINED_FORMAT_IIC:


        obuf[1] = 0x5;




        break;

    case CUDA_GET_SET_IIC:

        if (VAR_2 == 4) {

            cuda_send_packet_to_host(VAR_0, obuf, 3);

        } else {






        }

        break;

    default:






        break;

    }

}
static void FUNC_0(CUDAState *VAR_0,
const uint8_t *VAR_1, int VAR_2)
{ uint8_t obuf[16] = { CUDA_PACKET, 0, VAR_1[0] }; int VAR_3; uint32_t ti; switch(VAR_1[0]) { case CUDA_AUTOPOLL:
VAR_3 = (VAR_1[1] != 0); if (VAR_3 != VAR_0->VAR_3) { VAR_0->VAR_3 = VAR_3; if (VAR_3) { timer_mod(VAR_0->adb_poll_timer,
qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) +
(get_ticks_per_sec() / CUDA_ADB_POLL_FREQ)); } else { timer_del(VAR_0->adb_poll_timer); } } cuda_send_packet_to_host(VAR_0, obuf, 3); break; case CUDA_GET_6805_ADDR:
cuda_send_packet_to_host(VAR_0, obuf, 3); break; case CUDA_SET_TIME:
ti = (((uint32_t)VAR_1[1]) << 24) + (((uint32_t)VAR_1[2]) << 16) + (((uint32_t)VAR_1[3]) << 8) + VAR_1[4]; VAR_0->tick_offset = ti - (qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) / get_ticks_per_sec()); cuda_send_packet_to_host(VAR_0, obuf, 3); break; case CUDA_GET_TIME:
ti = VAR_0->tick_offset + (qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) / get_ticks_per_sec()); obuf[3] = ti >> 24; obuf[4] = ti >> 16; obuf[5] = ti >> 8; obuf[6] = ti; cuda_send_packet_to_host(VAR_0, obuf, 7); break; case CUDA_FILE_SERVER_FLAG:
case CUDA_SET_DEVICE_LIST:
case CUDA_SET_AUTO_RATE:
case CUDA_SET_POWER_MESSAGES:
cuda_send_packet_to_host(VAR_0, obuf, 3); break; case CUDA_POWERDOWN:
cuda_send_packet_to_host(VAR_0, obuf, 3); qemu_system_shutdown_request(); break; case CUDA_RESET_SYSTEM:
cuda_send_packet_to_host(VAR_0, obuf, 3); qemu_system_reset_request(); break; case CUDA_COMBINED_FORMAT_IIC:
obuf[1] = 0x5; break; case CUDA_GET_SET_IIC:
if (VAR_2 == 4) { cuda_send_packet_to_host(VAR_0, obuf, 3); } else { } break; default:
break; } }