Am 06.02.2018 um 11:26 schrieb Huw Davies huw@codeweavers.com:
When delay loading a symbol, Delphi saves rcx, rdx, r8 and r9 to the stack. It then calls GetProcAddress(), pops the saved registers and calls the function. This works fine if all of the parameters are ints. However, since it does not save xmm0 - 3, it relies on GetProcAddress() preserving these registers if the function takes floating point parameters.
This is mostly for me trying to understand things: What would make changes to those registers inside GetProcAddress? Afaics this function shouldn’t do anything floating point related.