75 register DES_LONG d0,d1,v0,v1;
76 register unsigned long l=
length;
77 register int num=numbits/8,n=(numbits+7)/8,i,rem=numbits%8;
81 unsigned char ovec[16];
84 unsigned char *ovec=(
unsigned char *)sh;
87 assert (
sizeof(sh[0])==4);
92 if (numbits<=0 || numbits > 64)
return;
98 while (l >= (
unsigned long)n)
114 else if (numbits == 64)
125 sh[0]=v0, sh[1]=v1, sh[2]=d0, sh[3]=d1;
128 memmove(ovec,ovec+num,8);
130 for(i=0 ; i < 8 ; ++i)
131 ovec[i]=ovec[i+num]<<rem |
132 ovec[i+num+1]>>(8-rem);
145 while (l >= (
unsigned long)n)
157 else if (numbits == 64)
168 sh[0]=v0, sh[1]=v1, sh[2]=d0, sh[3]=d1;
171 memmove(ovec,ovec+num,8);
173 for(i=0 ; i < 8 ; ++i)
174 ovec[i]=ovec[i+num]<<rem |
175 ovec[i+num+1]>>(8-rem);
193 v0=v1=d0=d1=ti[0]=ti[1]=0;