The properties of TCmdLoc & TCmdParam1 appears shifted:

Possibly something to do with the struct packing?
Since it's again alignment on stack, adding __declspec(align(1)) fixes both and in this case it could also be written before struct definition which probably makes more sense than writing it for locals. However confusing part is that it is done only for several structs and not for all of them, doing it for some of the others breaks binary exactness for some other functions.
Also packing is orthogonal to alignment, so packing e.g. for TCmdParam1 is still needed.
Interesting, I've noticed this only seems to be a problem when the data in question is exactly 3 bytes and the compiler aligns it to 4. Where as instances of 5-7 don't seem to have this problem. I wonder if they had some kind of pragma or compiler setting that only aligns data >= 4 bytes.
Most helpful comment
Interesting, I've noticed this only seems to be a problem when the data in question is exactly
3bytes and the compiler aligns it to4. Where as instances of5-7don't seem to have this problem. I wonder if they had some kind of pragma or compiler setting that only aligns data >= 4 bytes.