Das ist der normale Delphi-Wahnsinn. Es ist normal, daß ein Überlauf statt findet. Ein Lösung
Hai!
Code:
{$R-,Q-}
function F(x, y, z: DWORD): DWORD;
begin
Result := (x and y) or ((not x) and z);
end;
...
// Hier falls nötig wieder einschalten.
// Initialize given Context
procedure MD5Init(var Context: MD5Context);
...
Ein andere (viel langsamere) wäre: alles mit UInt64 rechnen mod 2^32. Das ist nämlich genau die Arithmetik die, gefordert ist.
Crypto und CRC/Hash-Routinen verfragen in aller Regel kein $Q-.