https://bugs.winehq.org/show_bug.cgi?id=47918
--- Comment #3 from Felix Hädicke felixhaedicke@web.de --- This function uses memcpy(). But behaviour of memcpy() is undefinied, if memory areas overlap. And this rule is violated (to check this, I added an assertion to check this, and did run the msvcrt printf tests).
Replacing memcpy() with memmove() makes it work with Ryzen optimisations.
There is another function: puts_clbk_str_c99_a(), implemented in wcs.c, which looks very similar.