364c356
<     register int words, lwords;
---
>     register int words;
371,372d362
<     lwords = words >> 2;
<     ++lwords;
375,381c365,367
< 	while (--lwords) 
< 	  {
< 	    *shortdst++ = *eidata0;*shortdst++ = *eidata0;
< 	    *shortdst++ = *eidata0;*shortdst++ = *eidata0;
< 	  }
<  	if( words & 2 ) {*shortdst++ = *eidata0;*shortdst++ = *eidata0;}
< 	if( words & 1 ) *shortdst++ = *eidata0;
---
> 	while (words--) 
> 	    *shortdst++ = *eidata0;
> 	dst = (unsigned char *) shortdst;
385c371
< 	while (--lwords)
---
> 	while (words--)
390,398d375
< 	    buffer = *eidata0;
< 	    *dst++ = (unsigned char)(buffer>>8);
< 	    *dst++ = (unsigned char)(buffer);
< 	    buffer = *eidata0;
< 	    *dst++ = (unsigned char)(buffer>>8);
< 	    *dst++ = (unsigned char)(buffer);
< 	    buffer = *eidata0;
< 	    *dst++ = (unsigned char)(buffer>>8);
< 	    *dst++ = (unsigned char)(buffer);
400,414d376
< 	if( words & 2 )
< 	  {
< 	    buffer = *eidata0;
< 	    *dst++ = (unsigned char)(buffer>>8);
< 	    *dst++ = (unsigned char)(buffer);
< 	    buffer = *eidata0;
< 	    *dst++ = (unsigned char)(buffer>>8);
< 	    *dst++ = (unsigned char)(buffer);
< 	  }
< 	if( words & 1 )
< 	  {
< 	    buffer = *eidata0;
< 	    *dst++ = (unsigned char)(buffer>>8);
< 	    *dst++ = (unsigned char)(buffer);
< 	  }
418,424c380
< 	if( ((unsigned)dst & 1) != 0 )
< 	    *dst = (unsigned char) (*eidata0>>8);
< 	else
< 	  {
< 	    dst = (unsigned char *) shortdst;
< 	    *dst = (unsigned char) (*eidata0>>8);
< 	  }
---
> 	*dst = (unsigned char) (*eidata0>>8);
433c389
<     register int words, lwords;
---
>     register int words;
438,449c394,396
<     words = (bytes>>1) + (bytes&1);
<     lwords = words>>2;
<     ++lwords;
<     while (--lwords) 
<       {
< 	status = *eidata0;status = *eidata0;
< 	status = *eidata0;status = *eidata0;
<       }
<     if( words & 2 ) {status = *eidata0;status = *eidata0;}
<     if( words & 1 ) status = *eidata0;
< 
<     status = *eidata0;
---
>     words = (bytes+3) >> 1;	/* round up, plus 1 extra wd to get cksum */
>     while (words--) 
> 	status = *eidata0;
