rl_truncate_cast
left_true = rl_truncate_cast(get_type(strip_expr(left)), left_true);
left_false = rl_truncate_cast(get_type(strip_expr(left)), left_false);
right_true = rl_truncate_cast(get_type(strip_expr(right)), right_true);
right_false = rl_truncate_cast(get_type(strip_expr(right)), right_false);
tmp_true = rl_truncate_cast(get_type(strip_expr(left)), tmp_true);
tmp_false = rl_truncate_cast(get_type(strip_expr(left)), tmp_false);
tmp_true = rl_truncate_cast(get_type(strip_expr(right)), tmp_true);
tmp_false = rl_truncate_cast(get_type(strip_expr(right)), tmp_false);
struct range_list *rl_truncate_cast(struct symbol *type, struct range_list *rl);
true_rl = rl_truncate_cast(estate_type(sm->state), true_rl);
false_rl = rl_truncate_cast(estate_type(sm->state), false_rl);