I went over the article a couple of times, but I cannot quite tell what the actual memmove bug is. Does this assert(ptr == array + 1) imply that the buggy memmove returns the wrong pointer?
I am not sure if this exception is the cause. And even if you could examine the assembler code, you will not be able to fix it: the affected devices have reach end-of-life years ago, and vendors will not fix the bug :-( The only chance for a fix is that app developers implement a workaround.