Ah, hier liegt eindeutig ein Alignment-Problem vor (ich kann allerdings nicht sagen, warum dass zu diesem seltsamen ShowMessage führt). Ich dachte, dass bei push word xyz automatisch auf ein DWord erweitert wird, anscheinend wird aber tatsächlich nur ein Word gepusht und ESP entsprechend nur um 2 verringert.
Ändere das mal so ab:
Delphi-Quellcode:
//statt
push word ptr [edx+$08]
//das verwenden:
movzx eax, word ptr [edx+$08]
push eax