1 typedef unsigned char uchar;
2 typedef unsigned short ushort;
3 typedef unsigned int uint;
4 typedef unsigned long ulong;
5 
6 static unsigned long S[1][1]={0x00820200};
7 
body(out0,out1,ks,Eswap0,Eswap1)8 static int body(out0,out1,ks,Eswap0,Eswap1)
9 ulong *out0,*out1;
10 int *ks;
11 ulong 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