filter_by_sm
filter_by_sm(sm->left, op, true_stack, false_stack, useful);
filter_by_sm(sm->right, op, true_stack, false_stack, useful);
filter_by_sm(sm, op, true_stack, false_stack, &useful);
filter_by_sm(sm, &tmp_true, &tmp_false);
filter_by_sm(sm->left, true_stack, false_stack);
filter_by_sm(sm->right, true_stack, false_stack);
filter_by_sm(sm->left, true_stack, false_stack, recurse_cnt);
filter_by_sm(sm->right, true_stack, false_stack, recurse_cnt);
filter_by_sm(sm, &tmp_true, &tmp_false, &recurse_cnt);