using 3.2.2 I don't see the same.
The call order here is:
0,4,1,2 of the xmm? regs.
and 0 is moved to 3 before the call.
and RCX is being loaded with a stack address, not sure about that, maybe that is to be used as the return address?
EDIT:
as for the RECORD issue, you are correct, the compiler simply passes the addresses of the records via a standard Register.
however, on return, the Xmmx registers are being used to set a record return type.
strange, maybe this should be reported?