md5_update
md5_update (key, keylen);
md5_update (salt, saltlen);
md5_update (key, keylen);
md5_update (key, keylen);
md5_update (crypted, 3 + saltlen); /* include the $1$ header */
md5_update (alt_result, 16);
md5_update (alt_result, i);
md5_update (key + ((i & 1) ? keylen : 0), 1);
md5_update (key, keylen);
md5_update (alt_result, 16);
md5_update (salt, saltlen);
md5_update (key, keylen);
md5_update (alt_result, 16);
md5_update (key, keylen);
md5_update (input, strlen (input));