static void tcg_out_setcond2(TCGContext *s, TCGCond cond, TCGReg ret,

                             TCGReg al, TCGReg ah, TCGReg bl, TCGReg bh)

{

    TCGReg tmp0 = TCG_TMP0;

    TCGReg tmp1 = ret;



    assert(ret != TCG_TMP0);

    if (ret == ah || ret == bh) {

        assert(ret != TCG_TMP1);

        tmp1 = TCG_TMP1;

    }



    switch (cond) {

    case TCG_COND_EQ:

    case TCG_COND_NE:

        tmp1 = tcg_out_reduce_eq2(s, tmp0, tmp1, al, ah, bl, bh);

        tcg_out_setcond(s, cond, ret, tmp1, TCG_REG_ZERO);

        break;



    default:

        tcg_out_setcond(s, TCG_COND_EQ, tmp0, ah, bh);

        tcg_out_setcond(s, tcg_unsigned_cond(cond), tmp1, al, bl);

        tcg_out_opc_reg(s, OPC_AND, tmp1, tmp1, tmp0);

        tcg_out_setcond(s, tcg_high_cond(cond), tmp0, ah, bh);

        tcg_out_opc_reg(s, OPC_OR, ret, tmp1, tmp0);

        break;

    }

}

static void tcg_out_setcond2(TCGContext *s, TCGCond cond, TCGReg ret,

                             TCGReg al, TCGReg ah, TCGReg bl, TCGReg bh)

{

    TCGReg tmp0 = TCG_TMP0;

    TCGReg tmp1 = ret;



    assert(ret != TCG_TMP0);

    if (ret == ah || ret == bh) {

        assert(ret != TCG_TMP1);

        tmp1 = TCG_TMP1;

    }



    switch (cond) {

    case TCG_COND_EQ:

    case TCG_COND_NE:

        tmp1 = tcg_out_reduce_eq2(s, tmp0, tmp1, al, ah, bl, bh);

        tcg_out_setcond(s, cond, ret, tmp1, TCG_REG_ZERO);

        break;



    default:

        tcg_out_setcond(s, TCG_COND_EQ, tmp0, ah, bh);

        tcg_out_setcond(s, tcg_unsigned_cond(cond), tmp1, al, bl);

        tcg_out_opc_reg(s, OPC_AND, tmp1, tmp1, tmp0);

        tcg_out_setcond(s, tcg_high_cond(cond), tmp0, ah, bh);

        tcg_out_opc_reg(s, OPC_OR, ret, tmp1, tmp0);

        break;

    }

}

static void FUNC_0(TCGContext *VAR_0, TCGCond VAR_1, TCGReg VAR_2,

                             TCGReg VAR_3, TCGReg VAR_4, TCGReg VAR_5, TCGReg VAR_6)

{

    TCGReg tmp0 = TCG_TMP0;

    TCGReg tmp1 = VAR_2;



    assert(VAR_2 != TCG_TMP0);

    if (VAR_2 == VAR_4 || VAR_2 == VAR_6) {

        assert(VAR_2 != TCG_TMP1);

        tmp1 = TCG_TMP1;

    }



    switch (VAR_1) {

    case TCG_COND_EQ:

    case TCG_COND_NE:

        tmp1 = tcg_out_reduce_eq2(VAR_0, tmp0, tmp1, VAR_3, VAR_4, VAR_5, VAR_6);

        tcg_out_setcond(VAR_0, VAR_1, VAR_2, tmp1, TCG_REG_ZERO);

        break;



    default:

        tcg_out_setcond(VAR_0, TCG_COND_EQ, tmp0, VAR_4, VAR_6);

        tcg_out_setcond(VAR_0, tcg_unsigned_cond(VAR_1), tmp1, VAR_3, VAR_5);

        tcg_out_opc_reg(VAR_0, OPC_AND, tmp1, tmp1, tmp0);

        tcg_out_setcond(VAR_0, tcg_high_cond(VAR_1), tmp0, VAR_4, VAR_6);

        tcg_out_opc_reg(VAR_0, OPC_OR, VAR_2, tmp1, tmp0);

        break;

    }

}

static void FUNC_0(TCGContext *VAR_0, TCGCond VAR_1, TCGReg VAR_2,
TCGReg VAR_3, TCGReg VAR_4, TCGReg VAR_5, TCGReg VAR_6)
{ TCGReg tmp0 = TCG_TMP0; TCGReg tmp1 = VAR_2; assert(VAR_2 != TCG_TMP0); if (VAR_2 == VAR_4 || VAR_2 == VAR_6) { assert(VAR_2 != TCG_TMP1); tmp1 = TCG_TMP1; } switch (VAR_1) { case TCG_COND_EQ:
case TCG_COND_NE:
tmp1 = tcg_out_reduce_eq2(VAR_0, tmp0, tmp1, VAR_3, VAR_4, VAR_5, VAR_6); tcg_out_setcond(VAR_0, VAR_1, VAR_2, tmp1, TCG_REG_ZERO); break; default:
tcg_out_setcond(VAR_0, TCG_COND_EQ, tmp0, VAR_4, VAR_6); tcg_out_setcond(VAR_0, tcg_unsigned_cond(VAR_1), tmp1, VAR_3, VAR_5); tcg_out_opc_reg(VAR_0, OPC_AND, tmp1, tmp1, tmp0); tcg_out_setcond(VAR_0, tcg_high_cond(VAR_1), tmp0, VAR_4, VAR_6); tcg_out_opc_reg(VAR_0, OPC_OR, VAR_2, tmp1, tmp0); break; } }