The Step 2d is needed for the else statement to be equivalent with 'tf,fhb->htb' (check this post).
While the Step 3 is just concatenating the rotated_vecs with the same but opposite sign values (see the same linked post).
In other words, the 2a, 2b, 2c and 2d steps are the implementation of the 'tf,fhb->htb' matrix multiplication and Step 3 concatenation on the “irrelevant” axis is logical and in no way in odds with the previous steps.
I hope that makes sense ![]()