On side note:
Here a sample of the $48 prefixes on x64 mode
procedure Test;
asm
inc EDX
inc RDX
db $48, $FF, $C2
db $48, $48, $FF, $C2
db $48, $48, $48, $FF, $C2
db $48, $48, $48, $48, $FF, $C2
db $48, $48, $48, $48, $48, $FF, $C2
db $48, $48, $48, $48, $48, $48, $FF, $C2
db $48, $48, $48, $48, $48, $48, $48, $FF, $C2
db $48, $48, $48, $48, $48, $48, $48, $48, $FF, $C2
end;
begin
Writeln('Start');
Test;
Readln;
end.
Here how Delphi CPU handle wrongly disassemble them
The right disassembly
Why the same instruction executed without a fault in x86 build, most likely the CPU handled $48 as its own instruction which will touch eax the one being overwritten by following RDxxx.
just off-topic notes.