Encryption and hashing functions are usually written to intentionally overflow.
It is easy to see that this function will overflow also, the C1 and C2 constants are so high that Key-variable will overflow on first iteration.
So you should allow overflow around this function.
This can be done by using {$Q+} and {$Q-} like this:

Code:
{$Q-}
FUNCTION Decrypt(Const S: String; Key: Word): String; 
...
end;
{$Q+}