Thanks for clarify, so from my understand nse5 --> Can compile because proc only changes locations that are reachable from its parameters (var s). OK
nse6 --> Cannot compile because use zeroMem, copyMem which modify memory. But this mean all MD5 function will never pure? (no side effect)