md5 now use memmove and memset instead of for loops