It's unusual and doesn't seem efficient to use a map here. Three xa_mod_vec_t variables should also do. Sure there's no
iterator over those three variables but that's only used 3 times.

At least use map<XaCompareFlags, xa_mod_vec_t> and specify XaCompareFlags to be uint_8, enum XaCompareFlags : uint_t {...
to make it type-safe.