static void tcg_opt_gen_mov(TCGArg *gen_args, TCGArg dst, TCGArg src,

                            int nb_temps, int nb_globals)

{

        reset_temp(dst, nb_temps, nb_globals);

        assert(temps[src].state != TCG_TEMP_COPY);

        if (src >= nb_globals) {

            assert(temps[src].state != TCG_TEMP_CONST);

            if (temps[src].state != TCG_TEMP_HAS_COPY) {

                temps[src].state = TCG_TEMP_HAS_COPY;

                temps[src].next_copy = src;

                temps[src].prev_copy = src;

            }

            temps[dst].state = TCG_TEMP_COPY;

            temps[dst].val = src;

            temps[dst].next_copy = temps[src].next_copy;

            temps[dst].prev_copy = src;

            temps[temps[dst].next_copy].prev_copy = dst;

            temps[src].next_copy = dst;

        }

        gen_args[0] = dst;

        gen_args[1] = src;

}

static void tcg_opt_gen_mov(TCGArg *gen_args, TCGArg dst, TCGArg src,

                            int nb_temps, int nb_globals)

{

        reset_temp(dst, nb_temps, nb_globals);

        assert(temps[src].state != TCG_TEMP_COPY);

        if (src >= nb_globals) {

            assert(temps[src].state != TCG_TEMP_CONST);

            if (temps[src].state != TCG_TEMP_HAS_COPY) {

                temps[src].state = TCG_TEMP_HAS_COPY;

                temps[src].next_copy = src;

                temps[src].prev_copy = src;

            }

            temps[dst].state = TCG_TEMP_COPY;

            temps[dst].val = src;

            temps[dst].next_copy = temps[src].next_copy;

            temps[dst].prev_copy = src;

            temps[temps[dst].next_copy].prev_copy = dst;

            temps[src].next_copy = dst;

        }

        gen_args[0] = dst;

        gen_args[1] = src;

}

static void FUNC_0(TCGArg *VAR_0, TCGArg VAR_1, TCGArg VAR_2,

                            int VAR_3, int VAR_4)

{

        reset_temp(VAR_1, VAR_3, VAR_4);

        assert(temps[VAR_2].state != TCG_TEMP_COPY);

        if (VAR_2 >= VAR_4) {

            assert(temps[VAR_2].state != TCG_TEMP_CONST);

            if (temps[VAR_2].state != TCG_TEMP_HAS_COPY) {

                temps[VAR_2].state = TCG_TEMP_HAS_COPY;

                temps[VAR_2].next_copy = VAR_2;

                temps[VAR_2].prev_copy = VAR_2;

            }

            temps[VAR_1].state = TCG_TEMP_COPY;

            temps[VAR_1].val = VAR_2;

            temps[VAR_1].next_copy = temps[VAR_2].next_copy;

            temps[VAR_1].prev_copy = VAR_2;

            temps[temps[VAR_1].next_copy].prev_copy = VAR_1;

            temps[VAR_2].next_copy = VAR_1;

        }

        VAR_0[0] = VAR_1;

        VAR_0[1] = VAR_2;

}

static void FUNC_0(TCGArg *VAR_0, TCGArg VAR_1, TCGArg VAR_2,
int VAR_3, int VAR_4)
{ reset_temp(VAR_1, VAR_3, VAR_4); assert(temps[VAR_2].state != TCG_TEMP_COPY); if (VAR_2 >= VAR_4) { assert(temps[VAR_2].state != TCG_TEMP_CONST); if (temps[VAR_2].state != TCG_TEMP_HAS_COPY) { temps[VAR_2].state = TCG_TEMP_HAS_COPY; temps[VAR_2].next_copy = VAR_2; temps[VAR_2].prev_copy = VAR_2; } temps[VAR_1].state = TCG_TEMP_COPY; temps[VAR_1].val = VAR_2; temps[VAR_1].next_copy = temps[VAR_2].next_copy; temps[VAR_1].prev_copy = VAR_2; temps[temps[VAR_1].next_copy].prev_copy = VAR_1; temps[VAR_2].next_copy = VAR_1; } VAR_0[0] = VAR_1; VAR_0[1] = VAR_2; }