int MD2_Update(MD2_CTX *c, const unsigned char *data, unsigned long len)
	{
	register UCHAR *p;
	if (len == 0) return 1;
	p=c->data;
	if (c->num != 0)
		{
		if ((c->num+len) >= MD2_BLOCK)
			{
			memcpy(&(p[c->num]),data,MD2_BLOCK-c->num);
			md2_block(c,c->data);
			data+=(MD2_BLOCK - c->num);
			len-=(MD2_BLOCK - c->num);
			c->num=0;
			}
		else
			{
			memcpy(&(p[c->num]),data,(int)len);
			c->num+=(int)len;
			return 1;
			}
		}
	while (len >= MD2_BLOCK)
		{
		md2_block(c,data);
		data+=MD2_BLOCK;
		len-=MD2_BLOCK;
		}
	memcpy(p,data,(int)len);
	c->num=(int)len;
	return 1;
	}
['int MD2_Update(MD2_CTX *c, const unsigned char *data, unsigned long len)\n\t{\n\tregister UCHAR *p;\n\tif (len == 0) return 1;\n\tp=c->data;\n\tif (c->num != 0)\n\t\t{\n\t\tif ((c->num+len) >= MD2_BLOCK)\n\t\t\t{\n\t\t\tmemcpy(&(p[c->num]),data,MD2_BLOCK-c->num);\n\t\t\tmd2_block(c,c->data);\n\t\t\tdata+=(MD2_BLOCK - c->num);\n\t\t\tlen-=(MD2_BLOCK - c->num);\n\t\t\tc->num=0;\n\t\t\t}\n\t\telse\n\t\t\t{\n\t\t\tmemcpy(&(p[c->num]),data,(int)len);\n\t\t\tc->num+=(int)len;\n\t\t\treturn 1;\n\t\t\t}\n\t\t}\n\twhile (len >= MD2_BLOCK)\n\t\t{\n\t\tmd2_block(c,data);\n\t\tdata+=MD2_BLOCK;\n\t\tlen-=MD2_BLOCK;\n\t\t}\n\tmemcpy(p,data,(int)len);\n\tc->num=(int)len;\n\treturn 1;\n\t}']