1typedef unsigned char uchar; 2typedef unsigned short ushort; 3typedef unsigned int uint; 4typedef unsigned long ulong; 5 6static unsigned long S[1][1]={0x00820200}; 7 8static int body(out0,out1,ks,Eswap0,Eswap1) 9ulong *out0,*out1; 10int *ks; 11ulong Eswap0,Eswap1; 12{ 13 register unsigned long l,r,t,u,v; 14 register unsigned long *s; 15 register int i,j; 16 register unsigned long E0,E1; 17 18 l=0; 19 r=0; 20 21 s=(ulong *)ks; 22 E0=Eswap0; 23 E1=Eswap1; 24 25 for (i=0; i<(16 *2); i+=4) 26 { 27 v=(r^(r>>16)); 28 u=(v&E0); 29 v=(v&E1); 30 u=(u^(u<<16))^r^s[ i ]; 31 t=(v^(v<<16))^r^s[ i+1]; 32 t=(t>>4)|(t<<28); 33 l^=S[1][(t)&0x3f]| S[3][(t>> 8)&0x3f]| S[5][(t>>16)&0x3f]| S[7][(t>>24)&0x3f]| S[0][(u)&0x3f]| S[2][(u>> 8)&0x3f]| S[4][(u>>16)&0x3f]| S[6][(u>>24)&0x3f]; 34 v=(l^(l>>16)); 35 u=(v&E0); 36 v=(v&E1); 37 u=(u^(u<<16))^l^s[ i+2 ]; 38 t=(v^(v<<16))^l^s[ i+2+1]; 39 t=(t>>4)|(t<<28); 40 r^= S[1][(t )&0x3f]; 41 } 42 t=l; 43 l=r; 44 r=t; 45 46 t=r; 47 r=(l>>1)|(l<<31); 48 l=(t>>1)|(t<<31); 49 50 *out0=l; 51 *out1=r; 52 return(0); 53} 54