I'm not aware of anything that will easily pre-process a set of masks and do intersection / difference / etc.. And in this case, even if there were, depending on how much you had previously exhausted, it might produce quite a few more-specific masks. And there's a little autotuning overhead for each mask, so it might not even be worth the trade-off (faster to re-run the entire attack). You'd basically have to do the math and benchmark both options to see if it's worth the trade-off.
You could write something that would expand all possible ?l vs ?d variants, and then simply remove the ones you'd already exhausted.
You could write something that would expand all possible ?l vs ?d variants, and then simply remove the ones you'd already exhausted.
~