cast128.c revision 1.2.2.3 1 1.2.2.3 bouyer /* $NetBSD: cast128.c,v 1.2.2.3 2000/11/22 16:03:04 bouyer Exp $ */
2 1.2.2.3 bouyer /* $KAME: cast128.c,v 1.4 2000/11/06 13:58:08 itojun Exp $ */
3 1.2.2.2 bouyer
4 1.2.2.2 bouyer /*
5 1.2.2.2 bouyer * heavily modified by Tomomi Suzuki <suzuki (at) grelot.elec.ryukoku.ac.jp>
6 1.2.2.2 bouyer */
7 1.2.2.2 bouyer /*
8 1.2.2.2 bouyer * The CAST-128 Encryption Algorithm (RFC 2144)
9 1.2.2.2 bouyer *
10 1.2.2.2 bouyer * original implementation <Hideo "Sir MaNMOS" Morisita>
11 1.2.2.2 bouyer * 1997/08/21
12 1.2.2.2 bouyer */
13 1.2.2.2 bouyer /*
14 1.2.2.2 bouyer * Copyright (C) 1997 Hideo "Sir MANMOS" Morishita
15 1.2.2.2 bouyer * All rights reserved.
16 1.2.2.2 bouyer *
17 1.2.2.2 bouyer * Redistribution and use in source and binary forms, with or without
18 1.2.2.2 bouyer * modification, are permitted provided that the following conditions
19 1.2.2.2 bouyer * are met:
20 1.2.2.2 bouyer * 1. Redistributions of source code must retain the above copyright
21 1.2.2.2 bouyer * notice, this list of conditions and the following disclaimer.
22 1.2.2.2 bouyer * 2. Redistributions in binary form must reproduce the above copyright
23 1.2.2.2 bouyer * notice, this list of conditions and the following disclaimer in the
24 1.2.2.2 bouyer * documentation and/or other materials provided with the distribution.
25 1.2.2.2 bouyer *
26 1.2.2.2 bouyer * THIS SOFTWARE IS PROVIDED BY Hideo "Sir MaNMOS" Morishita ``AS IS'' AND
27 1.2.2.2 bouyer * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28 1.2.2.2 bouyer * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
29 1.2.2.2 bouyer * ARE DISCLAIMED. IN NO EVENT SHALL Hideo "Sir MaNMOS" Morishita BE LIABLE
30 1.2.2.2 bouyer * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
31 1.2.2.2 bouyer * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
32 1.2.2.2 bouyer * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33 1.2.2.2 bouyer * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34 1.2.2.2 bouyer * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
35 1.2.2.2 bouyer * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36 1.2.2.2 bouyer * SUCH DAMAGE.
37 1.2.2.2 bouyer */
38 1.2.2.2 bouyer
39 1.2.2.2 bouyer #include <sys/param.h>
40 1.2.2.3 bouyer #ifdef _KERNEL
41 1.2.2.2 bouyer #include <sys/systm.h>
42 1.2.2.3 bouyer #else
43 1.2.2.3 bouyer #include <string.h>
44 1.2.2.3 bouyer #endif
45 1.2.2.2 bouyer #include <crypto/cast128/cast128.h>
46 1.2.2.2 bouyer #include <crypto/cast128/cast128_subkey.h>
47 1.2.2.2 bouyer
48 1.2.2.2 bouyer
49 1.2.2.2 bouyer static u_int32_t S1[];
50 1.2.2.2 bouyer static u_int32_t S2[];
51 1.2.2.2 bouyer static u_int32_t S3[];
52 1.2.2.2 bouyer static u_int32_t S4[];
53 1.2.2.2 bouyer static u_int32_t S5[];
54 1.2.2.2 bouyer static u_int32_t S6[];
55 1.2.2.2 bouyer static u_int32_t S7[];
56 1.2.2.2 bouyer static u_int32_t S8[];
57 1.2.2.2 bouyer
58 1.2.2.2 bouyer
59 1.2.2.2 bouyer /*
60 1.2.2.2 bouyer * Step 1
61 1.2.2.2 bouyer */
62 1.2.2.2 bouyer void set_cast128_subkey(u_int32_t *subkey, u_int8_t *key)
63 1.2.2.2 bouyer {
64 1.2.2.2 bouyer u_int32_t buf[8]; /* for x0x1x2x3, x4x5x6x7 ..., z0z1z2z3, ... */
65 1.2.2.2 bouyer
66 1.2.2.2 bouyer buf[0] = (key[ 0] << 24) | (key[ 1] << 16) | (key[ 2] << 8)
67 1.2.2.2 bouyer | key[ 3];
68 1.2.2.2 bouyer buf[1] = (key[ 4] << 24) | (key[ 5] << 16) | (key[ 6] << 8)
69 1.2.2.2 bouyer | key[ 7];
70 1.2.2.2 bouyer buf[2] = (key[ 8] << 24) | (key[ 9] << 16) | (key[10] << 8)
71 1.2.2.2 bouyer | key[11];
72 1.2.2.2 bouyer buf[3] = (key[12] << 24) | (key[13] << 16) | (key[14] << 8)
73 1.2.2.2 bouyer | key[15];
74 1.2.2.2 bouyer
75 1.2.2.2 bouyer /* masking subkey */
76 1.2.2.2 bouyer z0z1z2z3 = x0x1x2x3 ^ S5[xD] ^ S6[xF] ^ S7[xC] ^ S8[xE] ^ S7[x8];
77 1.2.2.2 bouyer z4z5z6z7 = x8x9xAxB ^ S5[z0] ^ S6[z2] ^ S7[z1] ^ S8[z3] ^ S8[xA];
78 1.2.2.2 bouyer z8z9zAzB = xCxDxExF ^ S5[z7] ^ S6[z6] ^ S7[z5] ^ S8[z4] ^ S5[x9];
79 1.2.2.2 bouyer zCzDzEzF = x4x5x6x7 ^ S5[zA] ^ S6[z9] ^ S7[zB] ^ S8[z8] ^ S6[xB];
80 1.2.2.2 bouyer subkey[0] = S5[z8] ^ S6[z9] ^ S7[z7] ^ S8[z6] ^ S5[z2];
81 1.2.2.2 bouyer subkey[1] = S5[zA] ^ S6[zB] ^ S7[z5] ^ S8[z4] ^ S6[z6];
82 1.2.2.2 bouyer subkey[2] = S5[zC] ^ S6[zD] ^ S7[z3] ^ S8[z2] ^ S7[z9];
83 1.2.2.2 bouyer subkey[3] = S5[zE] ^ S6[zF] ^ S7[z1] ^ S8[z0] ^ S8[zC];
84 1.2.2.2 bouyer
85 1.2.2.2 bouyer x0x1x2x3 = z8z9zAzB ^ S5[z5] ^ S6[z7] ^ S7[z4] ^ S8[z6] ^ S7[z0];
86 1.2.2.2 bouyer x4x5x6x7 = z0z1z2z3 ^ S5[x0] ^ S6[x2] ^ S7[x1] ^ S8[x3] ^ S8[z2];
87 1.2.2.2 bouyer x8x9xAxB = z4z5z6z7 ^ S5[x7] ^ S6[x6] ^ S7[x5] ^ S8[x4] ^ S5[z1];
88 1.2.2.2 bouyer xCxDxExF = zCzDzEzF ^ S5[xA] ^ S6[x9] ^ S7[xB] ^ S8[x8] ^ S6[z3];
89 1.2.2.2 bouyer subkey[4] = S5[x3] ^ S6[x2] ^ S7[xC] ^ S8[xD] ^ S5[x8];
90 1.2.2.2 bouyer subkey[5] = S5[x1] ^ S6[x0] ^ S7[xE] ^ S8[xF] ^ S6[xD];
91 1.2.2.2 bouyer subkey[6] = S5[x7] ^ S6[x6] ^ S7[x8] ^ S8[x9] ^ S7[x3];
92 1.2.2.2 bouyer subkey[7] = S5[x5] ^ S6[x4] ^ S7[xA] ^ S8[xB] ^ S8[x7];
93 1.2.2.2 bouyer
94 1.2.2.2 bouyer z0z1z2z3 = x0x1x2x3 ^ S5[xD] ^ S6[xF] ^ S7[xC] ^ S8[xE] ^ S7[x8];
95 1.2.2.2 bouyer z4z5z6z7 = x8x9xAxB ^ S5[z0] ^ S6[z2] ^ S7[z1] ^ S8[z3] ^ S8[xA];
96 1.2.2.2 bouyer z8z9zAzB = xCxDxExF ^ S5[z7] ^ S6[z6] ^ S7[z5] ^ S8[z4] ^ S5[x9];
97 1.2.2.2 bouyer zCzDzEzF = x4x5x6x7 ^ S5[zA] ^ S6[z9] ^ S7[zB] ^ S8[z8] ^ S6[xB];
98 1.2.2.2 bouyer subkey[8] = S5[z3] ^ S6[z2] ^ S7[zC] ^ S8[zD] ^ S5[z9];
99 1.2.2.2 bouyer subkey[9] = S5[z1] ^ S6[z0] ^ S7[zE] ^ S8[zF] ^ S6[zC];
100 1.2.2.2 bouyer subkey[10] = S5[z7] ^ S6[z6] ^ S7[z8] ^ S8[z9] ^ S7[z2];
101 1.2.2.2 bouyer subkey[11] = S5[z5] ^ S6[z4] ^ S7[zA] ^ S8[zB] ^ S8[z6];
102 1.2.2.2 bouyer
103 1.2.2.2 bouyer x0x1x2x3 = z8z9zAzB ^ S5[z5] ^ S6[z7] ^ S7[z4] ^ S8[z6] ^ S7[z0];
104 1.2.2.2 bouyer x4x5x6x7 = z0z1z2z3 ^ S5[x0] ^ S6[x2] ^ S7[x1] ^ S8[x3] ^ S8[z2];
105 1.2.2.2 bouyer x8x9xAxB = z4z5z6z7 ^ S5[x7] ^ S6[x6] ^ S7[x5] ^ S8[x4] ^ S5[z1];
106 1.2.2.2 bouyer xCxDxExF = zCzDzEzF ^ S5[xA] ^ S6[x9] ^ S7[xB] ^ S8[x8] ^ S6[z3];
107 1.2.2.2 bouyer subkey[12] = S5[x8] ^ S6[x9] ^ S7[x7] ^ S8[x6] ^ S5[x3];
108 1.2.2.2 bouyer subkey[13] = S5[xA] ^ S6[xB] ^ S7[x5] ^ S8[x4] ^ S6[x7];
109 1.2.2.2 bouyer subkey[14] = S5[xC] ^ S6[xD] ^ S7[x3] ^ S8[x2] ^ S7[x8];
110 1.2.2.2 bouyer subkey[15] = S5[xE] ^ S6[xF] ^ S7[x1] ^ S8[x0] ^ S8[xD];
111 1.2.2.2 bouyer
112 1.2.2.2 bouyer /* rotate subkey (least significast 5 bits) */
113 1.2.2.2 bouyer z0z1z2z3 = x0x1x2x3 ^ S5[xD] ^ S6[xF] ^ S7[xC] ^ S8[xE] ^ S7[x8];
114 1.2.2.2 bouyer z4z5z6z7 = x8x9xAxB ^ S5[z0] ^ S6[z2] ^ S7[z1] ^ S8[z3] ^ S8[xA];
115 1.2.2.2 bouyer z8z9zAzB = xCxDxExF ^ S5[z7] ^ S6[z6] ^ S7[z5] ^ S8[z4] ^ S5[x9];
116 1.2.2.2 bouyer zCzDzEzF = x4x5x6x7 ^ S5[zA] ^ S6[z9] ^ S7[zB] ^ S8[z8] ^ S6[xB];
117 1.2.2.2 bouyer subkey[16] = (S5[z8] ^ S6[z9] ^ S7[z7] ^ S8[z6] ^ S5[z2]) & 0x1f;
118 1.2.2.2 bouyer subkey[17] = (S5[zA] ^ S6[zB] ^ S7[z5] ^ S8[z4] ^ S6[z6]) & 0x1f;
119 1.2.2.2 bouyer subkey[18] = (S5[zC] ^ S6[zD] ^ S7[z3] ^ S8[z2] ^ S7[z9]) & 0x1f;
120 1.2.2.2 bouyer subkey[19] = (S5[zE] ^ S6[zF] ^ S7[z1] ^ S8[z0] ^ S8[zC]) & 0x1f;
121 1.2.2.2 bouyer
122 1.2.2.2 bouyer x0x1x2x3 = z8z9zAzB ^ S5[z5] ^ S6[z7] ^ S7[z4] ^ S8[z6] ^ S7[z0];
123 1.2.2.2 bouyer x4x5x6x7 = z0z1z2z3 ^ S5[x0] ^ S6[x2] ^ S7[x1] ^ S8[x3] ^ S8[z2];
124 1.2.2.2 bouyer x8x9xAxB = z4z5z6z7 ^ S5[x7] ^ S6[x6] ^ S7[x5] ^ S8[x4] ^ S5[z1];
125 1.2.2.2 bouyer xCxDxExF = zCzDzEzF ^ S5[xA] ^ S6[x9] ^ S7[xB] ^ S8[x8] ^ S6[z3];
126 1.2.2.2 bouyer subkey[20] = (S5[x3] ^ S6[x2] ^ S7[xC] ^ S8[xD] ^ S5[x8]) & 0x1f;
127 1.2.2.2 bouyer subkey[21] = (S5[x1] ^ S6[x0] ^ S7[xE] ^ S8[xF] ^ S6[xD]) & 0x1f;
128 1.2.2.2 bouyer subkey[22] = (S5[x7] ^ S6[x6] ^ S7[x8] ^ S8[x9] ^ S7[x3]) & 0x1f;
129 1.2.2.2 bouyer subkey[23] = (S5[x5] ^ S6[x4] ^ S7[xA] ^ S8[xB] ^ S8[x7]) & 0x1f;
130 1.2.2.2 bouyer
131 1.2.2.2 bouyer z0z1z2z3 = x0x1x2x3 ^ S5[xD] ^ S6[xF] ^ S7[xC] ^ S8[xE] ^ S7[x8];
132 1.2.2.2 bouyer z4z5z6z7 = x8x9xAxB ^ S5[z0] ^ S6[z2] ^ S7[z1] ^ S8[z3] ^ S8[xA];
133 1.2.2.2 bouyer z8z9zAzB = xCxDxExF ^ S5[z7] ^ S6[z6] ^ S7[z5] ^ S8[z4] ^ S5[x9];
134 1.2.2.2 bouyer zCzDzEzF = x4x5x6x7 ^ S5[zA] ^ S6[z9] ^ S7[zB] ^ S8[z8] ^ S6[xB];
135 1.2.2.2 bouyer subkey[24] = (S5[z3] ^ S6[z2] ^ S7[zC] ^ S8[zD] ^ S5[z9]) & 0x1f;
136 1.2.2.2 bouyer subkey[25] = (S5[z1] ^ S6[z0] ^ S7[zE] ^ S8[zF] ^ S6[zC]) & 0x1f;
137 1.2.2.2 bouyer subkey[26] = (S5[z7] ^ S6[z6] ^ S7[z8] ^ S8[z9] ^ S7[z2]) & 0x1f;
138 1.2.2.2 bouyer subkey[27] = (S5[z5] ^ S6[z4] ^ S7[zA] ^ S8[zB] ^ S8[z6]) & 0x1f;
139 1.2.2.2 bouyer
140 1.2.2.2 bouyer x0x1x2x3 = z8z9zAzB ^ S5[z5] ^ S6[z7] ^ S7[z4] ^ S8[z6] ^ S7[z0];
141 1.2.2.2 bouyer x4x5x6x7 = z0z1z2z3 ^ S5[x0] ^ S6[x2] ^ S7[x1] ^ S8[x3] ^ S8[z2];
142 1.2.2.2 bouyer x8x9xAxB = z4z5z6z7 ^ S5[x7] ^ S6[x6] ^ S7[x5] ^ S8[x4] ^ S5[z1];
143 1.2.2.2 bouyer xCxDxExF = zCzDzEzF ^ S5[xA] ^ S6[x9] ^ S7[xB] ^ S8[x8] ^ S6[z3];
144 1.2.2.2 bouyer subkey[28] = (S5[x8] ^ S6[x9] ^ S7[x7] ^ S8[x6] ^ S5[x3]) & 0x1f;
145 1.2.2.2 bouyer subkey[29] = (S5[xA] ^ S6[xB] ^ S7[x5] ^ S8[x4] ^ S6[x7]) & 0x1f;
146 1.2.2.2 bouyer subkey[30] = (S5[xC] ^ S6[xD] ^ S7[x3] ^ S8[x2] ^ S7[x8]) & 0x1f;
147 1.2.2.2 bouyer subkey[31] = (S5[xE] ^ S6[xF] ^ S7[x1] ^ S8[x0] ^ S8[xD]) & 0x1f;
148 1.2.2.2 bouyer }
149 1.2.2.2 bouyer
150 1.2.2.2 bouyer
151 1.2.2.2 bouyer #define CAST128_TYPE1(rc, d, km, kr) { \
152 1.2.2.2 bouyer u_int32_t x = circular_leftshift(((km)+(d)), (kr)); \
153 1.2.2.2 bouyer (rc) = ((S1[byte0(x)] ^ S2[byte1(x)]) - S3[byte2(x)]) + S4[byte3(x)]; \
154 1.2.2.2 bouyer }
155 1.2.2.2 bouyer
156 1.2.2.2 bouyer #define CAST128_TYPE2(rc, d, km, kr) { \
157 1.2.2.2 bouyer u_int32_t x = circular_leftshift(((km)^(d)), (kr)); \
158 1.2.2.2 bouyer (rc) = ((S1[byte0(x)] - S2[byte1(x)]) + S3[byte2(x)]) ^ S4[byte3(x)]; \
159 1.2.2.2 bouyer }
160 1.2.2.2 bouyer
161 1.2.2.2 bouyer #define CAST128_TYPE3(rc, d, km, kr) { \
162 1.2.2.2 bouyer u_int32_t x = circular_leftshift(((km)-(d)), (kr)); \
163 1.2.2.2 bouyer (rc) = ((S1[byte0(x)] + S2[byte1(x)]) ^ S3[byte2(x)]) - S4[byte3(x)]; \
164 1.2.2.2 bouyer }
165 1.2.2.2 bouyer
166 1.2.2.2 bouyer
167 1.2.2.2 bouyer void cast128_encrypt_round16(u_int8_t *c, const u_int8_t *m,
168 1.2.2.2 bouyer u_int32_t *subkey)
169 1.2.2.2 bouyer {
170 1.2.2.2 bouyer u_int32_t l; /* left 32bit */
171 1.2.2.2 bouyer u_int32_t r; /* right 32bit */
172 1.2.2.2 bouyer u_int32_t br; /* backup right 32bit */
173 1.2.2.2 bouyer u_int32_t rc; /* result code of CAST128_TYPE?() */
174 1.2.2.2 bouyer u_int32_t *km, *kr;
175 1.2.2.2 bouyer
176 1.2.2.2 bouyer /* Step 2 */
177 1.2.2.2 bouyer l = (m[0] << 24) | (m[1] << 16) | (m[2] << 8) | m[3];
178 1.2.2.2 bouyer r = (m[4] << 24) | (m[5] << 16) | (m[6] << 8) | m[7];
179 1.2.2.2 bouyer
180 1.2.2.2 bouyer /* Step 3 */
181 1.2.2.2 bouyer km = subkey;
182 1.2.2.2 bouyer kr = subkey + 16;
183 1.2.2.2 bouyer
184 1.2.2.2 bouyer br = r; CAST128_TYPE1(rc, r, *km, *kr); r = l ^ rc; l = br; km++; kr++;
185 1.2.2.2 bouyer br = r; CAST128_TYPE2(rc, r, *km, *kr); r = l ^ rc; l = br; km++; kr++;
186 1.2.2.2 bouyer br = r; CAST128_TYPE3(rc, r, *km, *kr); r = l ^ rc; l = br; km++; kr++;
187 1.2.2.2 bouyer br = r; CAST128_TYPE1(rc, r, *km, *kr); r = l ^ rc; l = br; km++; kr++;
188 1.2.2.2 bouyer br = r; CAST128_TYPE2(rc, r, *km, *kr); r = l ^ rc; l = br; km++; kr++;
189 1.2.2.2 bouyer br = r; CAST128_TYPE3(rc, r, *km, *kr); r = l ^ rc; l = br; km++; kr++;
190 1.2.2.2 bouyer br = r; CAST128_TYPE1(rc, r, *km, *kr); r = l ^ rc; l = br; km++; kr++;
191 1.2.2.2 bouyer br = r; CAST128_TYPE2(rc, r, *km, *kr); r = l ^ rc; l = br; km++; kr++;
192 1.2.2.2 bouyer br = r; CAST128_TYPE3(rc, r, *km, *kr); r = l ^ rc; l = br; km++; kr++;
193 1.2.2.2 bouyer br = r; CAST128_TYPE1(rc, r, *km, *kr); r = l ^ rc; l = br; km++; kr++;
194 1.2.2.2 bouyer br = r; CAST128_TYPE2(rc, r, *km, *kr); r = l ^ rc; l = br; km++; kr++;
195 1.2.2.2 bouyer br = r; CAST128_TYPE3(rc, r, *km, *kr); r = l ^ rc; l = br; km++; kr++;
196 1.2.2.2 bouyer br = r; CAST128_TYPE1(rc, r, *km, *kr); r = l ^ rc; l = br; km++; kr++;
197 1.2.2.2 bouyer br = r; CAST128_TYPE2(rc, r, *km, *kr); r = l ^ rc; l = br; km++; kr++;
198 1.2.2.2 bouyer br = r; CAST128_TYPE3(rc, r, *km, *kr); r = l ^ rc; l = br; km++; kr++;
199 1.2.2.2 bouyer br = r; CAST128_TYPE1(rc, r, *km, *kr); r = l ^ rc; l = br;
200 1.2.2.2 bouyer
201 1.2.2.2 bouyer /* Step 4 */
202 1.2.2.2 bouyer c[0] = (r >> 24) & 0xff;
203 1.2.2.2 bouyer c[1] = (r >> 16) & 0xff;
204 1.2.2.2 bouyer c[2] = (r >> 8) & 0xff;
205 1.2.2.2 bouyer c[3] = r & 0xff;
206 1.2.2.2 bouyer c[4] = (l >> 24) & 0xff;
207 1.2.2.2 bouyer c[5] = (l >> 16) & 0xff;
208 1.2.2.2 bouyer c[6] = (l >> 8) & 0xff;
209 1.2.2.2 bouyer c[7] = l & 0xff;
210 1.2.2.2 bouyer }
211 1.2.2.2 bouyer
212 1.2.2.2 bouyer
213 1.2.2.2 bouyer void cast128_decrypt_round16(u_int8_t *m, const u_int8_t *c,
214 1.2.2.2 bouyer u_int32_t *subkey)
215 1.2.2.2 bouyer {
216 1.2.2.2 bouyer u_int32_t l; /* left 32bit */
217 1.2.2.2 bouyer u_int32_t r; /* right 32bit */
218 1.2.2.2 bouyer u_int32_t bl; /* backup left 32bit */
219 1.2.2.2 bouyer u_int32_t rc; /* result code of CAST128_TYPE?() */
220 1.2.2.2 bouyer u_int32_t *km, *kr;
221 1.2.2.2 bouyer
222 1.2.2.2 bouyer /* Step 2 */
223 1.2.2.2 bouyer r = (c[0] << 24) | (c[1] << 16) | (c[2] << 8) | c[3];
224 1.2.2.2 bouyer l = (c[4] << 24) | (c[5] << 16) | (c[6] << 8) | c[7];
225 1.2.2.2 bouyer
226 1.2.2.2 bouyer /* Step 3 */
227 1.2.2.2 bouyer km = subkey + 15;
228 1.2.2.2 bouyer kr = subkey + 31;
229 1.2.2.2 bouyer
230 1.2.2.2 bouyer bl = l; CAST128_TYPE1(rc, l, *km, *kr); l = r ^ rc; r = bl; km--; kr--;
231 1.2.2.2 bouyer bl = l; CAST128_TYPE3(rc, l, *km, *kr); l = r ^ rc; r = bl; km--; kr--;
232 1.2.2.2 bouyer bl = l; CAST128_TYPE2(rc, l, *km, *kr); l = r ^ rc; r = bl; km--; kr--;
233 1.2.2.2 bouyer bl = l; CAST128_TYPE1(rc, l, *km, *kr); l = r ^ rc; r = bl; km--; kr--;
234 1.2.2.2 bouyer bl = l; CAST128_TYPE3(rc, l, *km, *kr); l = r ^ rc; r = bl; km--; kr--;
235 1.2.2.2 bouyer bl = l; CAST128_TYPE2(rc, l, *km, *kr); l = r ^ rc; r = bl; km--; kr--;
236 1.2.2.2 bouyer bl = l; CAST128_TYPE1(rc, l, *km, *kr); l = r ^ rc; r = bl; km--; kr--;
237 1.2.2.2 bouyer bl = l; CAST128_TYPE3(rc, l, *km, *kr); l = r ^ rc; r = bl; km--; kr--;
238 1.2.2.2 bouyer bl = l; CAST128_TYPE2(rc, l, *km, *kr); l = r ^ rc; r = bl; km--; kr--;
239 1.2.2.2 bouyer bl = l; CAST128_TYPE1(rc, l, *km, *kr); l = r ^ rc; r = bl; km--; kr--;
240 1.2.2.2 bouyer bl = l; CAST128_TYPE3(rc, l, *km, *kr); l = r ^ rc; r = bl; km--; kr--;
241 1.2.2.2 bouyer bl = l; CAST128_TYPE2(rc, l, *km, *kr); l = r ^ rc; r = bl; km--; kr--;
242 1.2.2.2 bouyer bl = l; CAST128_TYPE1(rc, l, *km, *kr); l = r ^ rc; r = bl; km--; kr--;
243 1.2.2.2 bouyer bl = l; CAST128_TYPE3(rc, l, *km, *kr); l = r ^ rc; r = bl; km--; kr--;
244 1.2.2.2 bouyer bl = l; CAST128_TYPE2(rc, l, *km, *kr); l = r ^ rc; r = bl; km--; kr--;
245 1.2.2.2 bouyer bl = l; CAST128_TYPE1(rc, l, *km, *kr); l = r ^ rc; r = bl;
246 1.2.2.2 bouyer
247 1.2.2.2 bouyer /* Step 4 */
248 1.2.2.2 bouyer m[0] = (l >> 24) & 0xff;
249 1.2.2.2 bouyer m[1] = (l >> 16) & 0xff;
250 1.2.2.2 bouyer m[2] = (l >> 8) & 0xff;
251 1.2.2.2 bouyer m[3] = l & 0xff;
252 1.2.2.2 bouyer m[4] = (r >> 24) & 0xff;
253 1.2.2.2 bouyer m[5] = (r >> 16) & 0xff;
254 1.2.2.2 bouyer m[6] = (r >> 8) & 0xff;
255 1.2.2.2 bouyer m[7] = r & 0xff;
256 1.2.2.2 bouyer }
257 1.2.2.2 bouyer
258 1.2.2.2 bouyer
259 1.2.2.2 bouyer void cast128_encrypt_round12(u_int8_t *c, const u_int8_t *m,
260 1.2.2.2 bouyer u_int32_t *subkey)
261 1.2.2.2 bouyer {
262 1.2.2.2 bouyer u_int32_t l; /* left 32bit */
263 1.2.2.2 bouyer u_int32_t r; /* right 32bit */
264 1.2.2.2 bouyer u_int32_t br; /* backup right 32bit */
265 1.2.2.2 bouyer u_int32_t rc; /* result code of CAST128_TYPE?() */
266 1.2.2.2 bouyer u_int32_t *km, *kr;
267 1.2.2.2 bouyer
268 1.2.2.2 bouyer /* Step 2 */
269 1.2.2.2 bouyer l = (m[0] << 24) | (m[1] << 16) | (m[2] << 8) | m[3];
270 1.2.2.2 bouyer r = (m[4] << 24) | (m[5] << 16) | (m[6] << 8) | m[7];
271 1.2.2.2 bouyer
272 1.2.2.2 bouyer /* Step 3 */
273 1.2.2.2 bouyer km = subkey;
274 1.2.2.2 bouyer kr = subkey + 16;
275 1.2.2.2 bouyer
276 1.2.2.2 bouyer br = r; CAST128_TYPE1(rc, r, *km, *kr); r = l ^ rc; l = br; km++; kr++;
277 1.2.2.2 bouyer br = r; CAST128_TYPE2(rc, r, *km, *kr); r = l ^ rc; l = br; km++; kr++;
278 1.2.2.2 bouyer br = r; CAST128_TYPE3(rc, r, *km, *kr); r = l ^ rc; l = br; km++; kr++;
279 1.2.2.2 bouyer br = r; CAST128_TYPE1(rc, r, *km, *kr); r = l ^ rc; l = br; km++; kr++;
280 1.2.2.2 bouyer br = r; CAST128_TYPE2(rc, r, *km, *kr); r = l ^ rc; l = br; km++; kr++;
281 1.2.2.2 bouyer br = r; CAST128_TYPE3(rc, r, *km, *kr); r = l ^ rc; l = br; km++; kr++;
282 1.2.2.2 bouyer br = r; CAST128_TYPE1(rc, r, *km, *kr); r = l ^ rc; l = br; km++; kr++;
283 1.2.2.2 bouyer br = r; CAST128_TYPE2(rc, r, *km, *kr); r = l ^ rc; l = br; km++; kr++;
284 1.2.2.2 bouyer br = r; CAST128_TYPE3(rc, r, *km, *kr); r = l ^ rc; l = br; km++; kr++;
285 1.2.2.2 bouyer br = r; CAST128_TYPE1(rc, r, *km, *kr); r = l ^ rc; l = br; km++; kr++;
286 1.2.2.2 bouyer br = r; CAST128_TYPE2(rc, r, *km, *kr); r = l ^ rc; l = br; km++; kr++;
287 1.2.2.2 bouyer br = r; CAST128_TYPE3(rc, r, *km, *kr); r = l ^ rc; l = br;
288 1.2.2.2 bouyer
289 1.2.2.2 bouyer /* Step 4 */
290 1.2.2.2 bouyer c[0] = (r >> 24) & 0xff;
291 1.2.2.2 bouyer c[1] = (r >> 16) & 0xff;
292 1.2.2.2 bouyer c[2] = (r >> 8) & 0xff;
293 1.2.2.2 bouyer c[3] = r & 0xff;
294 1.2.2.2 bouyer c[4] = (l >> 24) & 0xff;
295 1.2.2.2 bouyer c[5] = (l >> 16) & 0xff;
296 1.2.2.2 bouyer c[6] = (l >> 8) & 0xff;
297 1.2.2.2 bouyer c[7] = l & 0xff;
298 1.2.2.2 bouyer }
299 1.2.2.2 bouyer
300 1.2.2.2 bouyer
301 1.2.2.2 bouyer void cast128_decrypt_round12(u_int8_t *m, const u_int8_t *c,
302 1.2.2.2 bouyer u_int32_t *subkey)
303 1.2.2.2 bouyer {
304 1.2.2.2 bouyer u_int32_t l; /* left 32bit */
305 1.2.2.2 bouyer u_int32_t r; /* right 32bit */
306 1.2.2.2 bouyer u_int32_t bl; /* backup left 32bit */
307 1.2.2.2 bouyer u_int32_t rc; /* result code of CAST128_TYPE?() */
308 1.2.2.2 bouyer u_int32_t *km, *kr;
309 1.2.2.2 bouyer
310 1.2.2.2 bouyer /* Step 2 */
311 1.2.2.2 bouyer r = (c[0] << 24) | (c[1] << 16) | (c[2] << 8) | c[3];
312 1.2.2.2 bouyer l = (c[4] << 24) | (c[5] << 16) | (c[6] << 8) | c[7];
313 1.2.2.2 bouyer
314 1.2.2.2 bouyer /* Step 3 */
315 1.2.2.2 bouyer km = subkey + 11;
316 1.2.2.2 bouyer kr = subkey + 27;
317 1.2.2.2 bouyer
318 1.2.2.2 bouyer bl = l; CAST128_TYPE3(rc, l, *km, *kr); l = r ^ rc; r = bl; km--; kr--;
319 1.2.2.2 bouyer bl = l; CAST128_TYPE2(rc, l, *km, *kr); l = r ^ rc; r = bl; km--; kr--;
320 1.2.2.2 bouyer bl = l; CAST128_TYPE1(rc, l, *km, *kr); l = r ^ rc; r = bl; km--; kr--;
321 1.2.2.2 bouyer bl = l; CAST128_TYPE3(rc, l, *km, *kr); l = r ^ rc; r = bl; km--; kr--;
322 1.2.2.2 bouyer bl = l; CAST128_TYPE2(rc, l, *km, *kr); l = r ^ rc; r = bl; km--; kr--;
323 1.2.2.2 bouyer bl = l; CAST128_TYPE1(rc, l, *km, *kr); l = r ^ rc; r = bl; km--; kr--;
324 1.2.2.2 bouyer bl = l; CAST128_TYPE3(rc, l, *km, *kr); l = r ^ rc; r = bl; km--; kr--;
325 1.2.2.2 bouyer bl = l; CAST128_TYPE2(rc, l, *km, *kr); l = r ^ rc; r = bl; km--; kr--;
326 1.2.2.2 bouyer bl = l; CAST128_TYPE1(rc, l, *km, *kr); l = r ^ rc; r = bl; km--; kr--;
327 1.2.2.2 bouyer bl = l; CAST128_TYPE3(rc, l, *km, *kr); l = r ^ rc; r = bl; km--; kr--;
328 1.2.2.2 bouyer bl = l; CAST128_TYPE2(rc, l, *km, *kr); l = r ^ rc; r = bl; km--; kr--;
329 1.2.2.2 bouyer bl = l; CAST128_TYPE1(rc, l, *km, *kr); l = r ^ rc; r = bl;
330 1.2.2.2 bouyer
331 1.2.2.2 bouyer /* Step 4 */
332 1.2.2.2 bouyer m[0] = (l >> 24) & 0xff;
333 1.2.2.2 bouyer m[1] = (l >> 16) & 0xff;
334 1.2.2.2 bouyer m[2] = (l >> 8) & 0xff;
335 1.2.2.2 bouyer m[3] = l & 0xff;
336 1.2.2.2 bouyer m[4] = (r >> 24) & 0xff;
337 1.2.2.2 bouyer m[5] = (r >> 16) & 0xff;
338 1.2.2.2 bouyer m[6] = (r >> 8) & 0xff;
339 1.2.2.2 bouyer m[7] = r & 0xff;
340 1.2.2.2 bouyer }
341 1.2.2.2 bouyer
342 1.2.2.2 bouyer
343 1.2.2.2 bouyer static u_int32_t S1[] = {
344 1.2.2.2 bouyer 0x30fb40d4, 0x9fa0ff0b, 0x6beccd2f, 0x3f258c7a,
345 1.2.2.2 bouyer 0x1e213f2f, 0x9c004dd3, 0x6003e540, 0xcf9fc949,
346 1.2.2.2 bouyer 0xbfd4af27, 0x88bbbdb5, 0xe2034090, 0x98d09675,
347 1.2.2.2 bouyer 0x6e63a0e0, 0x15c361d2, 0xc2e7661d, 0x22d4ff8e,
348 1.2.2.2 bouyer 0x28683b6f, 0xc07fd059, 0xff2379c8, 0x775f50e2,
349 1.2.2.2 bouyer 0x43c340d3, 0xdf2f8656, 0x887ca41a, 0xa2d2bd2d,
350 1.2.2.2 bouyer 0xa1c9e0d6, 0x346c4819, 0x61b76d87, 0x22540f2f,
351 1.2.2.2 bouyer 0x2abe32e1, 0xaa54166b, 0x22568e3a, 0xa2d341d0,
352 1.2.2.2 bouyer 0x66db40c8, 0xa784392f, 0x004dff2f, 0x2db9d2de,
353 1.2.2.2 bouyer 0x97943fac, 0x4a97c1d8, 0x527644b7, 0xb5f437a7,
354 1.2.2.2 bouyer 0xb82cbaef, 0xd751d159, 0x6ff7f0ed, 0x5a097a1f,
355 1.2.2.2 bouyer 0x827b68d0, 0x90ecf52e, 0x22b0c054, 0xbc8e5935,
356 1.2.2.2 bouyer 0x4b6d2f7f, 0x50bb64a2, 0xd2664910, 0xbee5812d,
357 1.2.2.2 bouyer 0xb7332290, 0xe93b159f, 0xb48ee411, 0x4bff345d,
358 1.2.2.2 bouyer 0xfd45c240, 0xad31973f, 0xc4f6d02e, 0x55fc8165,
359 1.2.2.2 bouyer 0xd5b1caad, 0xa1ac2dae, 0xa2d4b76d, 0xc19b0c50,
360 1.2.2.2 bouyer 0x882240f2, 0x0c6e4f38, 0xa4e4bfd7, 0x4f5ba272,
361 1.2.2.2 bouyer 0x564c1d2f, 0xc59c5319, 0xb949e354, 0xb04669fe,
362 1.2.2.2 bouyer 0xb1b6ab8a, 0xc71358dd, 0x6385c545, 0x110f935d,
363 1.2.2.2 bouyer 0x57538ad5, 0x6a390493, 0xe63d37e0, 0x2a54f6b3,
364 1.2.2.2 bouyer 0x3a787d5f, 0x6276a0b5, 0x19a6fcdf, 0x7a42206a,
365 1.2.2.2 bouyer 0x29f9d4d5, 0xf61b1891, 0xbb72275e, 0xaa508167,
366 1.2.2.2 bouyer 0x38901091, 0xc6b505eb, 0x84c7cb8c, 0x2ad75a0f,
367 1.2.2.2 bouyer 0x874a1427, 0xa2d1936b, 0x2ad286af, 0xaa56d291,
368 1.2.2.2 bouyer 0xd7894360, 0x425c750d, 0x93b39e26, 0x187184c9,
369 1.2.2.2 bouyer 0x6c00b32d, 0x73e2bb14, 0xa0bebc3c, 0x54623779,
370 1.2.2.2 bouyer 0x64459eab, 0x3f328b82, 0x7718cf82, 0x59a2cea6,
371 1.2.2.2 bouyer 0x04ee002e, 0x89fe78e6, 0x3fab0950, 0x325ff6c2,
372 1.2.2.2 bouyer 0x81383f05, 0x6963c5c8, 0x76cb5ad6, 0xd49974c9,
373 1.2.2.2 bouyer 0xca180dcf, 0x380782d5, 0xc7fa5cf6, 0x8ac31511,
374 1.2.2.2 bouyer 0x35e79e13, 0x47da91d0, 0xf40f9086, 0xa7e2419e,
375 1.2.2.2 bouyer 0x31366241, 0x051ef495, 0xaa573b04, 0x4a805d8d,
376 1.2.2.2 bouyer 0x548300d0, 0x00322a3c, 0xbf64cddf, 0xba57a68e,
377 1.2.2.2 bouyer 0x75c6372b, 0x50afd341, 0xa7c13275, 0x915a0bf5,
378 1.2.2.2 bouyer 0x6b54bfab, 0x2b0b1426, 0xab4cc9d7, 0x449ccd82,
379 1.2.2.2 bouyer 0xf7fbf265, 0xab85c5f3, 0x1b55db94, 0xaad4e324,
380 1.2.2.2 bouyer 0xcfa4bd3f, 0x2deaa3e2, 0x9e204d02, 0xc8bd25ac,
381 1.2.2.2 bouyer 0xeadf55b3, 0xd5bd9e98, 0xe31231b2, 0x2ad5ad6c,
382 1.2.2.2 bouyer 0x954329de, 0xadbe4528, 0xd8710f69, 0xaa51c90f,
383 1.2.2.2 bouyer 0xaa786bf6, 0x22513f1e, 0xaa51a79b, 0x2ad344cc,
384 1.2.2.2 bouyer 0x7b5a41f0, 0xd37cfbad, 0x1b069505, 0x41ece491,
385 1.2.2.2 bouyer 0xb4c332e6, 0x032268d4, 0xc9600acc, 0xce387e6d,
386 1.2.2.2 bouyer 0xbf6bb16c, 0x6a70fb78, 0x0d03d9c9, 0xd4df39de,
387 1.2.2.2 bouyer 0xe01063da, 0x4736f464, 0x5ad328d8, 0xb347cc96,
388 1.2.2.2 bouyer 0x75bb0fc3, 0x98511bfb, 0x4ffbcc35, 0xb58bcf6a,
389 1.2.2.2 bouyer 0xe11f0abc, 0xbfc5fe4a, 0xa70aec10, 0xac39570a,
390 1.2.2.2 bouyer 0x3f04442f, 0x6188b153, 0xe0397a2e, 0x5727cb79,
391 1.2.2.2 bouyer 0x9ceb418f, 0x1cacd68d, 0x2ad37c96, 0x0175cb9d,
392 1.2.2.2 bouyer 0xc69dff09, 0xc75b65f0, 0xd9db40d8, 0xec0e7779,
393 1.2.2.2 bouyer 0x4744ead4, 0xb11c3274, 0xdd24cb9e, 0x7e1c54bd,
394 1.2.2.2 bouyer 0xf01144f9, 0xd2240eb1, 0x9675b3fd, 0xa3ac3755,
395 1.2.2.2 bouyer 0xd47c27af, 0x51c85f4d, 0x56907596, 0xa5bb15e6,
396 1.2.2.2 bouyer 0x580304f0, 0xca042cf1, 0x011a37ea, 0x8dbfaadb,
397 1.2.2.2 bouyer 0x35ba3e4a, 0x3526ffa0, 0xc37b4d09, 0xbc306ed9,
398 1.2.2.2 bouyer 0x98a52666, 0x5648f725, 0xff5e569d, 0x0ced63d0,
399 1.2.2.2 bouyer 0x7c63b2cf, 0x700b45e1, 0xd5ea50f1, 0x85a92872,
400 1.2.2.2 bouyer 0xaf1fbda7, 0xd4234870, 0xa7870bf3, 0x2d3b4d79,
401 1.2.2.2 bouyer 0x42e04198, 0x0cd0ede7, 0x26470db8, 0xf881814c,
402 1.2.2.2 bouyer 0x474d6ad7, 0x7c0c5e5c, 0xd1231959, 0x381b7298,
403 1.2.2.2 bouyer 0xf5d2f4db, 0xab838653, 0x6e2f1e23, 0x83719c9e,
404 1.2.2.2 bouyer 0xbd91e046, 0x9a56456e, 0xdc39200c, 0x20c8c571,
405 1.2.2.2 bouyer 0x962bda1c, 0xe1e696ff, 0xb141ab08, 0x7cca89b9,
406 1.2.2.2 bouyer 0x1a69e783, 0x02cc4843, 0xa2f7c579, 0x429ef47d,
407 1.2.2.2 bouyer 0x427b169c, 0x5ac9f049, 0xdd8f0f00, 0x5c8165bf,
408 1.2.2.2 bouyer };
409 1.2.2.2 bouyer
410 1.2.2.2 bouyer static u_int32_t S2[] = {
411 1.2.2.2 bouyer 0x1f201094, 0xef0ba75b, 0x69e3cf7e, 0x393f4380,
412 1.2.2.2 bouyer 0xfe61cf7a, 0xeec5207a, 0x55889c94, 0x72fc0651,
413 1.2.2.2 bouyer 0xada7ef79, 0x4e1d7235, 0xd55a63ce, 0xde0436ba,
414 1.2.2.2 bouyer 0x99c430ef, 0x5f0c0794, 0x18dcdb7d, 0xa1d6eff3,
415 1.2.2.2 bouyer 0xa0b52f7b, 0x59e83605, 0xee15b094, 0xe9ffd909,
416 1.2.2.2 bouyer 0xdc440086, 0xef944459, 0xba83ccb3, 0xe0c3cdfb,
417 1.2.2.2 bouyer 0xd1da4181, 0x3b092ab1, 0xf997f1c1, 0xa5e6cf7b,
418 1.2.2.2 bouyer 0x01420ddb, 0xe4e7ef5b, 0x25a1ff41, 0xe180f806,
419 1.2.2.2 bouyer 0x1fc41080, 0x179bee7a, 0xd37ac6a9, 0xfe5830a4,
420 1.2.2.2 bouyer 0x98de8b7f, 0x77e83f4e, 0x79929269, 0x24fa9f7b,
421 1.2.2.2 bouyer 0xe113c85b, 0xacc40083, 0xd7503525, 0xf7ea615f,
422 1.2.2.2 bouyer 0x62143154, 0x0d554b63, 0x5d681121, 0xc866c359,
423 1.2.2.2 bouyer 0x3d63cf73, 0xcee234c0, 0xd4d87e87, 0x5c672b21,
424 1.2.2.2 bouyer 0x071f6181, 0x39f7627f, 0x361e3084, 0xe4eb573b,
425 1.2.2.2 bouyer 0x602f64a4, 0xd63acd9c, 0x1bbc4635, 0x9e81032d,
426 1.2.2.2 bouyer 0x2701f50c, 0x99847ab4, 0xa0e3df79, 0xba6cf38c,
427 1.2.2.2 bouyer 0x10843094, 0x2537a95e, 0xf46f6ffe, 0xa1ff3b1f,
428 1.2.2.2 bouyer 0x208cfb6a, 0x8f458c74, 0xd9e0a227, 0x4ec73a34,
429 1.2.2.2 bouyer 0xfc884f69, 0x3e4de8df, 0xef0e0088, 0x3559648d,
430 1.2.2.2 bouyer 0x8a45388c, 0x1d804366, 0x721d9bfd, 0xa58684bb,
431 1.2.2.2 bouyer 0xe8256333, 0x844e8212, 0x128d8098, 0xfed33fb4,
432 1.2.2.2 bouyer 0xce280ae1, 0x27e19ba5, 0xd5a6c252, 0xe49754bd,
433 1.2.2.2 bouyer 0xc5d655dd, 0xeb667064, 0x77840b4d, 0xa1b6a801,
434 1.2.2.2 bouyer 0x84db26a9, 0xe0b56714, 0x21f043b7, 0xe5d05860,
435 1.2.2.2 bouyer 0x54f03084, 0x066ff472, 0xa31aa153, 0xdadc4755,
436 1.2.2.2 bouyer 0xb5625dbf, 0x68561be6, 0x83ca6b94, 0x2d6ed23b,
437 1.2.2.2 bouyer 0xeccf01db, 0xa6d3d0ba, 0xb6803d5c, 0xaf77a709,
438 1.2.2.2 bouyer 0x33b4a34c, 0x397bc8d6, 0x5ee22b95, 0x5f0e5304,
439 1.2.2.2 bouyer 0x81ed6f61, 0x20e74364, 0xb45e1378, 0xde18639b,
440 1.2.2.2 bouyer 0x881ca122, 0xb96726d1, 0x8049a7e8, 0x22b7da7b,
441 1.2.2.2 bouyer 0x5e552d25, 0x5272d237, 0x79d2951c, 0xc60d894c,
442 1.2.2.2 bouyer 0x488cb402, 0x1ba4fe5b, 0xa4b09f6b, 0x1ca815cf,
443 1.2.2.2 bouyer 0xa20c3005, 0x8871df63, 0xb9de2fcb, 0x0cc6c9e9,
444 1.2.2.2 bouyer 0x0beeff53, 0xe3214517, 0xb4542835, 0x9f63293c,
445 1.2.2.2 bouyer 0xee41e729, 0x6e1d2d7c, 0x50045286, 0x1e6685f3,
446 1.2.2.2 bouyer 0xf33401c6, 0x30a22c95, 0x31a70850, 0x60930f13,
447 1.2.2.2 bouyer 0x73f98417, 0xa1269859, 0xec645c44, 0x52c877a9,
448 1.2.2.2 bouyer 0xcdff33a6, 0xa02b1741, 0x7cbad9a2, 0x2180036f,
449 1.2.2.2 bouyer 0x50d99c08, 0xcb3f4861, 0xc26bd765, 0x64a3f6ab,
450 1.2.2.2 bouyer 0x80342676, 0x25a75e7b, 0xe4e6d1fc, 0x20c710e6,
451 1.2.2.2 bouyer 0xcdf0b680, 0x17844d3b, 0x31eef84d, 0x7e0824e4,
452 1.2.2.2 bouyer 0x2ccb49eb, 0x846a3bae, 0x8ff77888, 0xee5d60f6,
453 1.2.2.2 bouyer 0x7af75673, 0x2fdd5cdb, 0xa11631c1, 0x30f66f43,
454 1.2.2.2 bouyer 0xb3faec54, 0x157fd7fa, 0xef8579cc, 0xd152de58,
455 1.2.2.2 bouyer 0xdb2ffd5e, 0x8f32ce19, 0x306af97a, 0x02f03ef8,
456 1.2.2.2 bouyer 0x99319ad5, 0xc242fa0f, 0xa7e3ebb0, 0xc68e4906,
457 1.2.2.2 bouyer 0xb8da230c, 0x80823028, 0xdcdef3c8, 0xd35fb171,
458 1.2.2.2 bouyer 0x088a1bc8, 0xbec0c560, 0x61a3c9e8, 0xbca8f54d,
459 1.2.2.2 bouyer 0xc72feffa, 0x22822e99, 0x82c570b4, 0xd8d94e89,
460 1.2.2.2 bouyer 0x8b1c34bc, 0x301e16e6, 0x273be979, 0xb0ffeaa6,
461 1.2.2.2 bouyer 0x61d9b8c6, 0x00b24869, 0xb7ffce3f, 0x08dc283b,
462 1.2.2.2 bouyer 0x43daf65a, 0xf7e19798, 0x7619b72f, 0x8f1c9ba4,
463 1.2.2.2 bouyer 0xdc8637a0, 0x16a7d3b1, 0x9fc393b7, 0xa7136eeb,
464 1.2.2.2 bouyer 0xc6bcc63e, 0x1a513742, 0xef6828bc, 0x520365d6,
465 1.2.2.2 bouyer 0x2d6a77ab, 0x3527ed4b, 0x821fd216, 0x095c6e2e,
466 1.2.2.2 bouyer 0xdb92f2fb, 0x5eea29cb, 0x145892f5, 0x91584f7f,
467 1.2.2.2 bouyer 0x5483697b, 0x2667a8cc, 0x85196048, 0x8c4bacea,
468 1.2.2.2 bouyer 0x833860d4, 0x0d23e0f9, 0x6c387e8a, 0x0ae6d249,
469 1.2.2.2 bouyer 0xb284600c, 0xd835731d, 0xdcb1c647, 0xac4c56ea,
470 1.2.2.2 bouyer 0x3ebd81b3, 0x230eabb0, 0x6438bc87, 0xf0b5b1fa,
471 1.2.2.2 bouyer 0x8f5ea2b3, 0xfc184642, 0x0a036b7a, 0x4fb089bd,
472 1.2.2.2 bouyer 0x649da589, 0xa345415e, 0x5c038323, 0x3e5d3bb9,
473 1.2.2.2 bouyer 0x43d79572, 0x7e6dd07c, 0x06dfdf1e, 0x6c6cc4ef,
474 1.2.2.2 bouyer 0x7160a539, 0x73bfbe70, 0x83877605, 0x4523ecf1,
475 1.2.2.2 bouyer };
476 1.2.2.2 bouyer
477 1.2.2.2 bouyer static u_int32_t S3[] = {
478 1.2.2.2 bouyer 0x8defc240, 0x25fa5d9f, 0xeb903dbf, 0xe810c907,
479 1.2.2.2 bouyer 0x47607fff, 0x369fe44b, 0x8c1fc644, 0xaececa90,
480 1.2.2.2 bouyer 0xbeb1f9bf, 0xeefbcaea, 0xe8cf1950, 0x51df07ae,
481 1.2.2.2 bouyer 0x920e8806, 0xf0ad0548, 0xe13c8d83, 0x927010d5,
482 1.2.2.2 bouyer 0x11107d9f, 0x07647db9, 0xb2e3e4d4, 0x3d4f285e,
483 1.2.2.2 bouyer 0xb9afa820, 0xfade82e0, 0xa067268b, 0x8272792e,
484 1.2.2.2 bouyer 0x553fb2c0, 0x489ae22b, 0xd4ef9794, 0x125e3fbc,
485 1.2.2.2 bouyer 0x21fffcee, 0x825b1bfd, 0x9255c5ed, 0x1257a240,
486 1.2.2.2 bouyer 0x4e1a8302, 0xbae07fff, 0x528246e7, 0x8e57140e,
487 1.2.2.2 bouyer 0x3373f7bf, 0x8c9f8188, 0xa6fc4ee8, 0xc982b5a5,
488 1.2.2.2 bouyer 0xa8c01db7, 0x579fc264, 0x67094f31, 0xf2bd3f5f,
489 1.2.2.2 bouyer 0x40fff7c1, 0x1fb78dfc, 0x8e6bd2c1, 0x437be59b,
490 1.2.2.2 bouyer 0x99b03dbf, 0xb5dbc64b, 0x638dc0e6, 0x55819d99,
491 1.2.2.2 bouyer 0xa197c81c, 0x4a012d6e, 0xc5884a28, 0xccc36f71,
492 1.2.2.2 bouyer 0xb843c213, 0x6c0743f1, 0x8309893c, 0x0feddd5f,
493 1.2.2.2 bouyer 0x2f7fe850, 0xd7c07f7e, 0x02507fbf, 0x5afb9a04,
494 1.2.2.2 bouyer 0xa747d2d0, 0x1651192e, 0xaf70bf3e, 0x58c31380,
495 1.2.2.2 bouyer 0x5f98302e, 0x727cc3c4, 0x0a0fb402, 0x0f7fef82,
496 1.2.2.2 bouyer 0x8c96fdad, 0x5d2c2aae, 0x8ee99a49, 0x50da88b8,
497 1.2.2.2 bouyer 0x8427f4a0, 0x1eac5790, 0x796fb449, 0x8252dc15,
498 1.2.2.2 bouyer 0xefbd7d9b, 0xa672597d, 0xada840d8, 0x45f54504,
499 1.2.2.2 bouyer 0xfa5d7403, 0xe83ec305, 0x4f91751a, 0x925669c2,
500 1.2.2.2 bouyer 0x23efe941, 0xa903f12e, 0x60270df2, 0x0276e4b6,
501 1.2.2.2 bouyer 0x94fd6574, 0x927985b2, 0x8276dbcb, 0x02778176,
502 1.2.2.2 bouyer 0xf8af918d, 0x4e48f79e, 0x8f616ddf, 0xe29d840e,
503 1.2.2.2 bouyer 0x842f7d83, 0x340ce5c8, 0x96bbb682, 0x93b4b148,
504 1.2.2.2 bouyer 0xef303cab, 0x984faf28, 0x779faf9b, 0x92dc560d,
505 1.2.2.2 bouyer 0x224d1e20, 0x8437aa88, 0x7d29dc96, 0x2756d3dc,
506 1.2.2.2 bouyer 0x8b907cee, 0xb51fd240, 0xe7c07ce3, 0xe566b4a1,
507 1.2.2.2 bouyer 0xc3e9615e, 0x3cf8209d, 0x6094d1e3, 0xcd9ca341,
508 1.2.2.2 bouyer 0x5c76460e, 0x00ea983b, 0xd4d67881, 0xfd47572c,
509 1.2.2.2 bouyer 0xf76cedd9, 0xbda8229c, 0x127dadaa, 0x438a074e,
510 1.2.2.2 bouyer 0x1f97c090, 0x081bdb8a, 0x93a07ebe, 0xb938ca15,
511 1.2.2.2 bouyer 0x97b03cff, 0x3dc2c0f8, 0x8d1ab2ec, 0x64380e51,
512 1.2.2.2 bouyer 0x68cc7bfb, 0xd90f2788, 0x12490181, 0x5de5ffd4,
513 1.2.2.2 bouyer 0xdd7ef86a, 0x76a2e214, 0xb9a40368, 0x925d958f,
514 1.2.2.2 bouyer 0x4b39fffa, 0xba39aee9, 0xa4ffd30b, 0xfaf7933b,
515 1.2.2.2 bouyer 0x6d498623, 0x193cbcfa, 0x27627545, 0x825cf47a,
516 1.2.2.2 bouyer 0x61bd8ba0, 0xd11e42d1, 0xcead04f4, 0x127ea392,
517 1.2.2.2 bouyer 0x10428db7, 0x8272a972, 0x9270c4a8, 0x127de50b,
518 1.2.2.2 bouyer 0x285ba1c8, 0x3c62f44f, 0x35c0eaa5, 0xe805d231,
519 1.2.2.2 bouyer 0x428929fb, 0xb4fcdf82, 0x4fb66a53, 0x0e7dc15b,
520 1.2.2.2 bouyer 0x1f081fab, 0x108618ae, 0xfcfd086d, 0xf9ff2889,
521 1.2.2.2 bouyer 0x694bcc11, 0x236a5cae, 0x12deca4d, 0x2c3f8cc5,
522 1.2.2.2 bouyer 0xd2d02dfe, 0xf8ef5896, 0xe4cf52da, 0x95155b67,
523 1.2.2.2 bouyer 0x494a488c, 0xb9b6a80c, 0x5c8f82bc, 0x89d36b45,
524 1.2.2.2 bouyer 0x3a609437, 0xec00c9a9, 0x44715253, 0x0a874b49,
525 1.2.2.2 bouyer 0xd773bc40, 0x7c34671c, 0x02717ef6, 0x4feb5536,
526 1.2.2.2 bouyer 0xa2d02fff, 0xd2bf60c4, 0xd43f03c0, 0x50b4ef6d,
527 1.2.2.2 bouyer 0x07478cd1, 0x006e1888, 0xa2e53f55, 0xb9e6d4bc,
528 1.2.2.2 bouyer 0xa2048016, 0x97573833, 0xd7207d67, 0xde0f8f3d,
529 1.2.2.2 bouyer 0x72f87b33, 0xabcc4f33, 0x7688c55d, 0x7b00a6b0,
530 1.2.2.2 bouyer 0x947b0001, 0x570075d2, 0xf9bb88f8, 0x8942019e,
531 1.2.2.2 bouyer 0x4264a5ff, 0x856302e0, 0x72dbd92b, 0xee971b69,
532 1.2.2.2 bouyer 0x6ea22fde, 0x5f08ae2b, 0xaf7a616d, 0xe5c98767,
533 1.2.2.2 bouyer 0xcf1febd2, 0x61efc8c2, 0xf1ac2571, 0xcc8239c2,
534 1.2.2.2 bouyer 0x67214cb8, 0xb1e583d1, 0xb7dc3e62, 0x7f10bdce,
535 1.2.2.2 bouyer 0xf90a5c38, 0x0ff0443d, 0x606e6dc6, 0x60543a49,
536 1.2.2.2 bouyer 0x5727c148, 0x2be98a1d, 0x8ab41738, 0x20e1be24,
537 1.2.2.2 bouyer 0xaf96da0f, 0x68458425, 0x99833be5, 0x600d457d,
538 1.2.2.2 bouyer 0x282f9350, 0x8334b362, 0xd91d1120, 0x2b6d8da0,
539 1.2.2.2 bouyer 0x642b1e31, 0x9c305a00, 0x52bce688, 0x1b03588a,
540 1.2.2.2 bouyer 0xf7baefd5, 0x4142ed9c, 0xa4315c11, 0x83323ec5,
541 1.2.2.2 bouyer 0xdfef4636, 0xa133c501, 0xe9d3531c, 0xee353783,
542 1.2.2.2 bouyer };
543 1.2.2.2 bouyer
544 1.2.2.2 bouyer static u_int32_t S4[] = {
545 1.2.2.2 bouyer 0x9db30420, 0x1fb6e9de, 0xa7be7bef, 0xd273a298,
546 1.2.2.2 bouyer 0x4a4f7bdb, 0x64ad8c57, 0x85510443, 0xfa020ed1,
547 1.2.2.2 bouyer 0x7e287aff, 0xe60fb663, 0x095f35a1, 0x79ebf120,
548 1.2.2.2 bouyer 0xfd059d43, 0x6497b7b1, 0xf3641f63, 0x241e4adf,
549 1.2.2.2 bouyer 0x28147f5f, 0x4fa2b8cd, 0xc9430040, 0x0cc32220,
550 1.2.2.2 bouyer 0xfdd30b30, 0xc0a5374f, 0x1d2d00d9, 0x24147b15,
551 1.2.2.2 bouyer 0xee4d111a, 0x0fca5167, 0x71ff904c, 0x2d195ffe,
552 1.2.2.2 bouyer 0x1a05645f, 0x0c13fefe, 0x081b08ca, 0x05170121,
553 1.2.2.2 bouyer 0x80530100, 0xe83e5efe, 0xac9af4f8, 0x7fe72701,
554 1.2.2.2 bouyer 0xd2b8ee5f, 0x06df4261, 0xbb9e9b8a, 0x7293ea25,
555 1.2.2.2 bouyer 0xce84ffdf, 0xf5718801, 0x3dd64b04, 0xa26f263b,
556 1.2.2.2 bouyer 0x7ed48400, 0x547eebe6, 0x446d4ca0, 0x6cf3d6f5,
557 1.2.2.2 bouyer 0x2649abdf, 0xaea0c7f5, 0x36338cc1, 0x503f7e93,
558 1.2.2.2 bouyer 0xd3772061, 0x11b638e1, 0x72500e03, 0xf80eb2bb,
559 1.2.2.2 bouyer 0xabe0502e, 0xec8d77de, 0x57971e81, 0xe14f6746,
560 1.2.2.2 bouyer 0xc9335400, 0x6920318f, 0x081dbb99, 0xffc304a5,
561 1.2.2.2 bouyer 0x4d351805, 0x7f3d5ce3, 0xa6c866c6, 0x5d5bcca9,
562 1.2.2.2 bouyer 0xdaec6fea, 0x9f926f91, 0x9f46222f, 0x3991467d,
563 1.2.2.2 bouyer 0xa5bf6d8e, 0x1143c44f, 0x43958302, 0xd0214eeb,
564 1.2.2.2 bouyer 0x022083b8, 0x3fb6180c, 0x18f8931e, 0x281658e6,
565 1.2.2.2 bouyer 0x26486e3e, 0x8bd78a70, 0x7477e4c1, 0xb506e07c,
566 1.2.2.2 bouyer 0xf32d0a25, 0x79098b02, 0xe4eabb81, 0x28123b23,
567 1.2.2.2 bouyer 0x69dead38, 0x1574ca16, 0xdf871b62, 0x211c40b7,
568 1.2.2.2 bouyer 0xa51a9ef9, 0x0014377b, 0x041e8ac8, 0x09114003,
569 1.2.2.2 bouyer 0xbd59e4d2, 0xe3d156d5, 0x4fe876d5, 0x2f91a340,
570 1.2.2.2 bouyer 0x557be8de, 0x00eae4a7, 0x0ce5c2ec, 0x4db4bba6,
571 1.2.2.2 bouyer 0xe756bdff, 0xdd3369ac, 0xec17b035, 0x06572327,
572 1.2.2.2 bouyer 0x99afc8b0, 0x56c8c391, 0x6b65811c, 0x5e146119,
573 1.2.2.2 bouyer 0x6e85cb75, 0xbe07c002, 0xc2325577, 0x893ff4ec,
574 1.2.2.2 bouyer 0x5bbfc92d, 0xd0ec3b25, 0xb7801ab7, 0x8d6d3b24,
575 1.2.2.2 bouyer 0x20c763ef, 0xc366a5fc, 0x9c382880, 0x0ace3205,
576 1.2.2.2 bouyer 0xaac9548a, 0xeca1d7c7, 0x041afa32, 0x1d16625a,
577 1.2.2.2 bouyer 0x6701902c, 0x9b757a54, 0x31d477f7, 0x9126b031,
578 1.2.2.2 bouyer 0x36cc6fdb, 0xc70b8b46, 0xd9e66a48, 0x56e55a79,
579 1.2.2.2 bouyer 0x026a4ceb, 0x52437eff, 0x2f8f76b4, 0x0df980a5,
580 1.2.2.2 bouyer 0x8674cde3, 0xedda04eb, 0x17a9be04, 0x2c18f4df,
581 1.2.2.2 bouyer 0xb7747f9d, 0xab2af7b4, 0xefc34d20, 0x2e096b7c,
582 1.2.2.2 bouyer 0x1741a254, 0xe5b6a035, 0x213d42f6, 0x2c1c7c26,
583 1.2.2.2 bouyer 0x61c2f50f, 0x6552daf9, 0xd2c231f8, 0x25130f69,
584 1.2.2.2 bouyer 0xd8167fa2, 0x0418f2c8, 0x001a96a6, 0x0d1526ab,
585 1.2.2.2 bouyer 0x63315c21, 0x5e0a72ec, 0x49bafefd, 0x187908d9,
586 1.2.2.2 bouyer 0x8d0dbd86, 0x311170a7, 0x3e9b640c, 0xcc3e10d7,
587 1.2.2.2 bouyer 0xd5cad3b6, 0x0caec388, 0xf73001e1, 0x6c728aff,
588 1.2.2.2 bouyer 0x71eae2a1, 0x1f9af36e, 0xcfcbd12f, 0xc1de8417,
589 1.2.2.2 bouyer 0xac07be6b, 0xcb44a1d8, 0x8b9b0f56, 0x013988c3,
590 1.2.2.2 bouyer 0xb1c52fca, 0xb4be31cd, 0xd8782806, 0x12a3a4e2,
591 1.2.2.2 bouyer 0x6f7de532, 0x58fd7eb6, 0xd01ee900, 0x24adffc2,
592 1.2.2.2 bouyer 0xf4990fc5, 0x9711aac5, 0x001d7b95, 0x82e5e7d2,
593 1.2.2.2 bouyer 0x109873f6, 0x00613096, 0xc32d9521, 0xada121ff,
594 1.2.2.2 bouyer 0x29908415, 0x7fbb977f, 0xaf9eb3db, 0x29c9ed2a,
595 1.2.2.2 bouyer 0x5ce2a465, 0xa730f32c, 0xd0aa3fe8, 0x8a5cc091,
596 1.2.2.2 bouyer 0xd49e2ce7, 0x0ce454a9, 0xd60acd86, 0x015f1919,
597 1.2.2.2 bouyer 0x77079103, 0xdea03af6, 0x78a8565e, 0xdee356df,
598 1.2.2.2 bouyer 0x21f05cbe, 0x8b75e387, 0xb3c50651, 0xb8a5c3ef,
599 1.2.2.2 bouyer 0xd8eeb6d2, 0xe523be77, 0xc2154529, 0x2f69efdf,
600 1.2.2.2 bouyer 0xafe67afb, 0xf470c4b2, 0xf3e0eb5b, 0xd6cc9876,
601 1.2.2.2 bouyer 0x39e4460c, 0x1fda8538, 0x1987832f, 0xca007367,
602 1.2.2.2 bouyer 0xa99144f8, 0x296b299e, 0x492fc295, 0x9266beab,
603 1.2.2.2 bouyer 0xb5676e69, 0x9bd3ddda, 0xdf7e052f, 0xdb25701c,
604 1.2.2.2 bouyer 0x1b5e51ee, 0xf65324e6, 0x6afce36c, 0x0316cc04,
605 1.2.2.2 bouyer 0x8644213e, 0xb7dc59d0, 0x7965291f, 0xccd6fd43,
606 1.2.2.2 bouyer 0x41823979, 0x932bcdf6, 0xb657c34d, 0x4edfd282,
607 1.2.2.2 bouyer 0x7ae5290c, 0x3cb9536b, 0x851e20fe, 0x9833557e,
608 1.2.2.2 bouyer 0x13ecf0b0, 0xd3ffb372, 0x3f85c5c1, 0x0aef7ed2,
609 1.2.2.2 bouyer };
610 1.2.2.2 bouyer
611 1.2.2.2 bouyer static u_int32_t S5[] = {
612 1.2.2.2 bouyer 0x7ec90c04, 0x2c6e74b9, 0x9b0e66df, 0xa6337911,
613 1.2.2.2 bouyer 0xb86a7fff, 0x1dd358f5, 0x44dd9d44, 0x1731167f,
614 1.2.2.2 bouyer 0x08fbf1fa, 0xe7f511cc, 0xd2051b00, 0x735aba00,
615 1.2.2.2 bouyer 0x2ab722d8, 0x386381cb, 0xacf6243a, 0x69befd7a,
616 1.2.2.2 bouyer 0xe6a2e77f, 0xf0c720cd, 0xc4494816, 0xccf5c180,
617 1.2.2.2 bouyer 0x38851640, 0x15b0a848, 0xe68b18cb, 0x4caadeff,
618 1.2.2.2 bouyer 0x5f480a01, 0x0412b2aa, 0x259814fc, 0x41d0efe2,
619 1.2.2.2 bouyer 0x4e40b48d, 0x248eb6fb, 0x8dba1cfe, 0x41a99b02,
620 1.2.2.2 bouyer 0x1a550a04, 0xba8f65cb, 0x7251f4e7, 0x95a51725,
621 1.2.2.2 bouyer 0xc106ecd7, 0x97a5980a, 0xc539b9aa, 0x4d79fe6a,
622 1.2.2.2 bouyer 0xf2f3f763, 0x68af8040, 0xed0c9e56, 0x11b4958b,
623 1.2.2.2 bouyer 0xe1eb5a88, 0x8709e6b0, 0xd7e07156, 0x4e29fea7,
624 1.2.2.2 bouyer 0x6366e52d, 0x02d1c000, 0xc4ac8e05, 0x9377f571,
625 1.2.2.2 bouyer 0x0c05372a, 0x578535f2, 0x2261be02, 0xd642a0c9,
626 1.2.2.2 bouyer 0xdf13a280, 0x74b55bd2, 0x682199c0, 0xd421e5ec,
627 1.2.2.2 bouyer 0x53fb3ce8, 0xc8adedb3, 0x28a87fc9, 0x3d959981,
628 1.2.2.2 bouyer 0x5c1ff900, 0xfe38d399, 0x0c4eff0b, 0x062407ea,
629 1.2.2.2 bouyer 0xaa2f4fb1, 0x4fb96976, 0x90c79505, 0xb0a8a774,
630 1.2.2.2 bouyer 0xef55a1ff, 0xe59ca2c2, 0xa6b62d27, 0xe66a4263,
631 1.2.2.2 bouyer 0xdf65001f, 0x0ec50966, 0xdfdd55bc, 0x29de0655,
632 1.2.2.2 bouyer 0x911e739a, 0x17af8975, 0x32c7911c, 0x89f89468,
633 1.2.2.2 bouyer 0x0d01e980, 0x524755f4, 0x03b63cc9, 0x0cc844b2,
634 1.2.2.2 bouyer 0xbcf3f0aa, 0x87ac36e9, 0xe53a7426, 0x01b3d82b,
635 1.2.2.2 bouyer 0x1a9e7449, 0x64ee2d7e, 0xcddbb1da, 0x01c94910,
636 1.2.2.2 bouyer 0xb868bf80, 0x0d26f3fd, 0x9342ede7, 0x04a5c284,
637 1.2.2.2 bouyer 0x636737b6, 0x50f5b616, 0xf24766e3, 0x8eca36c1,
638 1.2.2.2 bouyer 0x136e05db, 0xfef18391, 0xfb887a37, 0xd6e7f7d4,
639 1.2.2.2 bouyer 0xc7fb7dc9, 0x3063fcdf, 0xb6f589de, 0xec2941da,
640 1.2.2.2 bouyer 0x26e46695, 0xb7566419, 0xf654efc5, 0xd08d58b7,
641 1.2.2.2 bouyer 0x48925401, 0xc1bacb7f, 0xe5ff550f, 0xb6083049,
642 1.2.2.2 bouyer 0x5bb5d0e8, 0x87d72e5a, 0xab6a6ee1, 0x223a66ce,
643 1.2.2.2 bouyer 0xc62bf3cd, 0x9e0885f9, 0x68cb3e47, 0x086c010f,
644 1.2.2.2 bouyer 0xa21de820, 0xd18b69de, 0xf3f65777, 0xfa02c3f6,
645 1.2.2.2 bouyer 0x407edac3, 0xcbb3d550, 0x1793084d, 0xb0d70eba,
646 1.2.2.2 bouyer 0x0ab378d5, 0xd951fb0c, 0xded7da56, 0x4124bbe4,
647 1.2.2.2 bouyer 0x94ca0b56, 0x0f5755d1, 0xe0e1e56e, 0x6184b5be,
648 1.2.2.2 bouyer 0x580a249f, 0x94f74bc0, 0xe327888e, 0x9f7b5561,
649 1.2.2.2 bouyer 0xc3dc0280, 0x05687715, 0x646c6bd7, 0x44904db3,
650 1.2.2.2 bouyer 0x66b4f0a3, 0xc0f1648a, 0x697ed5af, 0x49e92ff6,
651 1.2.2.2 bouyer 0x309e374f, 0x2cb6356a, 0x85808573, 0x4991f840,
652 1.2.2.2 bouyer 0x76f0ae02, 0x083be84d, 0x28421c9a, 0x44489406,
653 1.2.2.2 bouyer 0x736e4cb8, 0xc1092910, 0x8bc95fc6, 0x7d869cf4,
654 1.2.2.2 bouyer 0x134f616f, 0x2e77118d, 0xb31b2be1, 0xaa90b472,
655 1.2.2.2 bouyer 0x3ca5d717, 0x7d161bba, 0x9cad9010, 0xaf462ba2,
656 1.2.2.2 bouyer 0x9fe459d2, 0x45d34559, 0xd9f2da13, 0xdbc65487,
657 1.2.2.2 bouyer 0xf3e4f94e, 0x176d486f, 0x097c13ea, 0x631da5c7,
658 1.2.2.2 bouyer 0x445f7382, 0x175683f4, 0xcdc66a97, 0x70be0288,
659 1.2.2.2 bouyer 0xb3cdcf72, 0x6e5dd2f3, 0x20936079, 0x459b80a5,
660 1.2.2.2 bouyer 0xbe60e2db, 0xa9c23101, 0xeba5315c, 0x224e42f2,
661 1.2.2.2 bouyer 0x1c5c1572, 0xf6721b2c, 0x1ad2fff3, 0x8c25404e,
662 1.2.2.2 bouyer 0x324ed72f, 0x4067b7fd, 0x0523138e, 0x5ca3bc78,
663 1.2.2.2 bouyer 0xdc0fd66e, 0x75922283, 0x784d6b17, 0x58ebb16e,
664 1.2.2.2 bouyer 0x44094f85, 0x3f481d87, 0xfcfeae7b, 0x77b5ff76,
665 1.2.2.2 bouyer 0x8c2302bf, 0xaaf47556, 0x5f46b02a, 0x2b092801,
666 1.2.2.2 bouyer 0x3d38f5f7, 0x0ca81f36, 0x52af4a8a, 0x66d5e7c0,
667 1.2.2.2 bouyer 0xdf3b0874, 0x95055110, 0x1b5ad7a8, 0xf61ed5ad,
668 1.2.2.2 bouyer 0x6cf6e479, 0x20758184, 0xd0cefa65, 0x88f7be58,
669 1.2.2.2 bouyer 0x4a046826, 0x0ff6f8f3, 0xa09c7f70, 0x5346aba0,
670 1.2.2.2 bouyer 0x5ce96c28, 0xe176eda3, 0x6bac307f, 0x376829d2,
671 1.2.2.2 bouyer 0x85360fa9, 0x17e3fe2a, 0x24b79767, 0xf5a96b20,
672 1.2.2.2 bouyer 0xd6cd2595, 0x68ff1ebf, 0x7555442c, 0xf19f06be,
673 1.2.2.2 bouyer 0xf9e0659a, 0xeeb9491d, 0x34010718, 0xbb30cab8,
674 1.2.2.2 bouyer 0xe822fe15, 0x88570983, 0x750e6249, 0xda627e55,
675 1.2.2.2 bouyer 0x5e76ffa8, 0xb1534546, 0x6d47de08, 0xefe9e7d4,
676 1.2.2.2 bouyer };
677 1.2.2.2 bouyer
678 1.2.2.2 bouyer static u_int32_t S6[] = {
679 1.2.2.2 bouyer 0xf6fa8f9d, 0x2cac6ce1, 0x4ca34867, 0xe2337f7c,
680 1.2.2.2 bouyer 0x95db08e7, 0x016843b4, 0xeced5cbc, 0x325553ac,
681 1.2.2.2 bouyer 0xbf9f0960, 0xdfa1e2ed, 0x83f0579d, 0x63ed86b9,
682 1.2.2.2 bouyer 0x1ab6a6b8, 0xde5ebe39, 0xf38ff732, 0x8989b138,
683 1.2.2.2 bouyer 0x33f14961, 0xc01937bd, 0xf506c6da, 0xe4625e7e,
684 1.2.2.2 bouyer 0xa308ea99, 0x4e23e33c, 0x79cbd7cc, 0x48a14367,
685 1.2.2.2 bouyer 0xa3149619, 0xfec94bd5, 0xa114174a, 0xeaa01866,
686 1.2.2.2 bouyer 0xa084db2d, 0x09a8486f, 0xa888614a, 0x2900af98,
687 1.2.2.2 bouyer 0x01665991, 0xe1992863, 0xc8f30c60, 0x2e78ef3c,
688 1.2.2.2 bouyer 0xd0d51932, 0xcf0fec14, 0xf7ca07d2, 0xd0a82072,
689 1.2.2.2 bouyer 0xfd41197e, 0x9305a6b0, 0xe86be3da, 0x74bed3cd,
690 1.2.2.2 bouyer 0x372da53c, 0x4c7f4448, 0xdab5d440, 0x6dba0ec3,
691 1.2.2.2 bouyer 0x083919a7, 0x9fbaeed9, 0x49dbcfb0, 0x4e670c53,
692 1.2.2.2 bouyer 0x5c3d9c01, 0x64bdb941, 0x2c0e636a, 0xba7dd9cd,
693 1.2.2.2 bouyer 0xea6f7388, 0xe70bc762, 0x35f29adb, 0x5c4cdd8d,
694 1.2.2.2 bouyer 0xf0d48d8c, 0xb88153e2, 0x08a19866, 0x1ae2eac8,
695 1.2.2.2 bouyer 0x284caf89, 0xaa928223, 0x9334be53, 0x3b3a21bf,
696 1.2.2.2 bouyer 0x16434be3, 0x9aea3906, 0xefe8c36e, 0xf890cdd9,
697 1.2.2.2 bouyer 0x80226dae, 0xc340a4a3, 0xdf7e9c09, 0xa694a807,
698 1.2.2.2 bouyer 0x5b7c5ecc, 0x221db3a6, 0x9a69a02f, 0x68818a54,
699 1.2.2.2 bouyer 0xceb2296f, 0x53c0843a, 0xfe893655, 0x25bfe68a,
700 1.2.2.2 bouyer 0xb4628abc, 0xcf222ebf, 0x25ac6f48, 0xa9a99387,
701 1.2.2.2 bouyer 0x53bddb65, 0xe76ffbe7, 0xe967fd78, 0x0ba93563,
702 1.2.2.2 bouyer 0x8e342bc1, 0xe8a11be9, 0x4980740d, 0xc8087dfc,
703 1.2.2.2 bouyer 0x8de4bf99, 0xa11101a0, 0x7fd37975, 0xda5a26c0,
704 1.2.2.2 bouyer 0xe81f994f, 0x9528cd89, 0xfd339fed, 0xb87834bf,
705 1.2.2.2 bouyer 0x5f04456d, 0x22258698, 0xc9c4c83b, 0x2dc156be,
706 1.2.2.2 bouyer 0x4f628daa, 0x57f55ec5, 0xe2220abe, 0xd2916ebf,
707 1.2.2.2 bouyer 0x4ec75b95, 0x24f2c3c0, 0x42d15d99, 0xcd0d7fa0,
708 1.2.2.2 bouyer 0x7b6e27ff, 0xa8dc8af0, 0x7345c106, 0xf41e232f,
709 1.2.2.2 bouyer 0x35162386, 0xe6ea8926, 0x3333b094, 0x157ec6f2,
710 1.2.2.2 bouyer 0x372b74af, 0x692573e4, 0xe9a9d848, 0xf3160289,
711 1.2.2.2 bouyer 0x3a62ef1d, 0xa787e238, 0xf3a5f676, 0x74364853,
712 1.2.2.2 bouyer 0x20951063, 0x4576698d, 0xb6fad407, 0x592af950,
713 1.2.2.2 bouyer 0x36f73523, 0x4cfb6e87, 0x7da4cec0, 0x6c152daa,
714 1.2.2.2 bouyer 0xcb0396a8, 0xc50dfe5d, 0xfcd707ab, 0x0921c42f,
715 1.2.2.2 bouyer 0x89dff0bb, 0x5fe2be78, 0x448f4f33, 0x754613c9,
716 1.2.2.2 bouyer 0x2b05d08d, 0x48b9d585, 0xdc049441, 0xc8098f9b,
717 1.2.2.2 bouyer 0x7dede786, 0xc39a3373, 0x42410005, 0x6a091751,
718 1.2.2.2 bouyer 0x0ef3c8a6, 0x890072d6, 0x28207682, 0xa9a9f7be,
719 1.2.2.2 bouyer 0xbf32679d, 0xd45b5b75, 0xb353fd00, 0xcbb0e358,
720 1.2.2.2 bouyer 0x830f220a, 0x1f8fb214, 0xd372cf08, 0xcc3c4a13,
721 1.2.2.2 bouyer 0x8cf63166, 0x061c87be, 0x88c98f88, 0x6062e397,
722 1.2.2.2 bouyer 0x47cf8e7a, 0xb6c85283, 0x3cc2acfb, 0x3fc06976,
723 1.2.2.2 bouyer 0x4e8f0252, 0x64d8314d, 0xda3870e3, 0x1e665459,
724 1.2.2.2 bouyer 0xc10908f0, 0x513021a5, 0x6c5b68b7, 0x822f8aa0,
725 1.2.2.2 bouyer 0x3007cd3e, 0x74719eef, 0xdc872681, 0x073340d4,
726 1.2.2.2 bouyer 0x7e432fd9, 0x0c5ec241, 0x8809286c, 0xf592d891,
727 1.2.2.2 bouyer 0x08a930f6, 0x957ef305, 0xb7fbffbd, 0xc266e96f,
728 1.2.2.2 bouyer 0x6fe4ac98, 0xb173ecc0, 0xbc60b42a, 0x953498da,
729 1.2.2.2 bouyer 0xfba1ae12, 0x2d4bd736, 0x0f25faab, 0xa4f3fceb,
730 1.2.2.2 bouyer 0xe2969123, 0x257f0c3d, 0x9348af49, 0x361400bc,
731 1.2.2.2 bouyer 0xe8816f4a, 0x3814f200, 0xa3f94043, 0x9c7a54c2,
732 1.2.2.2 bouyer 0xbc704f57, 0xda41e7f9, 0xc25ad33a, 0x54f4a084,
733 1.2.2.2 bouyer 0xb17f5505, 0x59357cbe, 0xedbd15c8, 0x7f97c5ab,
734 1.2.2.2 bouyer 0xba5ac7b5, 0xb6f6deaf, 0x3a479c3a, 0x5302da25,
735 1.2.2.2 bouyer 0x653d7e6a, 0x54268d49, 0x51a477ea, 0x5017d55b,
736 1.2.2.2 bouyer 0xd7d25d88, 0x44136c76, 0x0404a8c8, 0xb8e5a121,
737 1.2.2.2 bouyer 0xb81a928a, 0x60ed5869, 0x97c55b96, 0xeaec991b,
738 1.2.2.2 bouyer 0x29935913, 0x01fdb7f1, 0x088e8dfa, 0x9ab6f6f5,
739 1.2.2.2 bouyer 0x3b4cbf9f, 0x4a5de3ab, 0xe6051d35, 0xa0e1d855,
740 1.2.2.2 bouyer 0xd36b4cf1, 0xf544edeb, 0xb0e93524, 0xbebb8fbd,
741 1.2.2.2 bouyer 0xa2d762cf, 0x49c92f54, 0x38b5f331, 0x7128a454,
742 1.2.2.2 bouyer 0x48392905, 0xa65b1db8, 0x851c97bd, 0xd675cf2f,
743 1.2.2.2 bouyer };
744 1.2.2.2 bouyer
745 1.2.2.2 bouyer static u_int32_t S7[] = {
746 1.2.2.2 bouyer 0x85e04019, 0x332bf567, 0x662dbfff, 0xcfc65693,
747 1.2.2.2 bouyer 0x2a8d7f6f, 0xab9bc912, 0xde6008a1, 0x2028da1f,
748 1.2.2.2 bouyer 0x0227bce7, 0x4d642916, 0x18fac300, 0x50f18b82,
749 1.2.2.2 bouyer 0x2cb2cb11, 0xb232e75c, 0x4b3695f2, 0xb28707de,
750 1.2.2.2 bouyer 0xa05fbcf6, 0xcd4181e9, 0xe150210c, 0xe24ef1bd,
751 1.2.2.2 bouyer 0xb168c381, 0xfde4e789, 0x5c79b0d8, 0x1e8bfd43,
752 1.2.2.2 bouyer 0x4d495001, 0x38be4341, 0x913cee1d, 0x92a79c3f,
753 1.2.2.2 bouyer 0x089766be, 0xbaeeadf4, 0x1286becf, 0xb6eacb19,
754 1.2.2.2 bouyer 0x2660c200, 0x7565bde4, 0x64241f7a, 0x8248dca9,
755 1.2.2.2 bouyer 0xc3b3ad66, 0x28136086, 0x0bd8dfa8, 0x356d1cf2,
756 1.2.2.2 bouyer 0x107789be, 0xb3b2e9ce, 0x0502aa8f, 0x0bc0351e,
757 1.2.2.2 bouyer 0x166bf52a, 0xeb12ff82, 0xe3486911, 0xd34d7516,
758 1.2.2.2 bouyer 0x4e7b3aff, 0x5f43671b, 0x9cf6e037, 0x4981ac83,
759 1.2.2.2 bouyer 0x334266ce, 0x8c9341b7, 0xd0d854c0, 0xcb3a6c88,
760 1.2.2.2 bouyer 0x47bc2829, 0x4725ba37, 0xa66ad22b, 0x7ad61f1e,
761 1.2.2.2 bouyer 0x0c5cbafa, 0x4437f107, 0xb6e79962, 0x42d2d816,
762 1.2.2.2 bouyer 0x0a961288, 0xe1a5c06e, 0x13749e67, 0x72fc081a,
763 1.2.2.2 bouyer 0xb1d139f7, 0xf9583745, 0xcf19df58, 0xbec3f756,
764 1.2.2.2 bouyer 0xc06eba30, 0x07211b24, 0x45c28829, 0xc95e317f,
765 1.2.2.2 bouyer 0xbc8ec511, 0x38bc46e9, 0xc6e6fa14, 0xbae8584a,
766 1.2.2.2 bouyer 0xad4ebc46, 0x468f508b, 0x7829435f, 0xf124183b,
767 1.2.2.2 bouyer 0x821dba9f, 0xaff60ff4, 0xea2c4e6d, 0x16e39264,
768 1.2.2.2 bouyer 0x92544a8b, 0x009b4fc3, 0xaba68ced, 0x9ac96f78,
769 1.2.2.2 bouyer 0x06a5b79a, 0xb2856e6e, 0x1aec3ca9, 0xbe838688,
770 1.2.2.2 bouyer 0x0e0804e9, 0x55f1be56, 0xe7e5363b, 0xb3a1f25d,
771 1.2.2.2 bouyer 0xf7debb85, 0x61fe033c, 0x16746233, 0x3c034c28,
772 1.2.2.2 bouyer 0xda6d0c74, 0x79aac56c, 0x3ce4e1ad, 0x51f0c802,
773 1.2.2.2 bouyer 0x98f8f35a, 0x1626a49f, 0xeed82b29, 0x1d382fe3,
774 1.2.2.2 bouyer 0x0c4fb99a, 0xbb325778, 0x3ec6d97b, 0x6e77a6a9,
775 1.2.2.2 bouyer 0xcb658b5c, 0xd45230c7, 0x2bd1408b, 0x60c03eb7,
776 1.2.2.2 bouyer 0xb9068d78, 0xa33754f4, 0xf430c87d, 0xc8a71302,
777 1.2.2.2 bouyer 0xb96d8c32, 0xebd4e7be, 0xbe8b9d2d, 0x7979fb06,
778 1.2.2.2 bouyer 0xe7225308, 0x8b75cf77, 0x11ef8da4, 0xe083c858,
779 1.2.2.2 bouyer 0x8d6b786f, 0x5a6317a6, 0xfa5cf7a0, 0x5dda0033,
780 1.2.2.2 bouyer 0xf28ebfb0, 0xf5b9c310, 0xa0eac280, 0x08b9767a,
781 1.2.2.2 bouyer 0xa3d9d2b0, 0x79d34217, 0x021a718d, 0x9ac6336a,
782 1.2.2.2 bouyer 0x2711fd60, 0x438050e3, 0x069908a8, 0x3d7fedc4,
783 1.2.2.2 bouyer 0x826d2bef, 0x4eeb8476, 0x488dcf25, 0x36c9d566,
784 1.2.2.2 bouyer 0x28e74e41, 0xc2610aca, 0x3d49a9cf, 0xbae3b9df,
785 1.2.2.2 bouyer 0xb65f8de6, 0x92aeaf64, 0x3ac7d5e6, 0x9ea80509,
786 1.2.2.2 bouyer 0xf22b017d, 0xa4173f70, 0xdd1e16c3, 0x15e0d7f9,
787 1.2.2.2 bouyer 0x50b1b887, 0x2b9f4fd5, 0x625aba82, 0x6a017962,
788 1.2.2.2 bouyer 0x2ec01b9c, 0x15488aa9, 0xd716e740, 0x40055a2c,
789 1.2.2.2 bouyer 0x93d29a22, 0xe32dbf9a, 0x058745b9, 0x3453dc1e,
790 1.2.2.2 bouyer 0xd699296e, 0x496cff6f, 0x1c9f4986, 0xdfe2ed07,
791 1.2.2.2 bouyer 0xb87242d1, 0x19de7eae, 0x053e561a, 0x15ad6f8c,
792 1.2.2.2 bouyer 0x66626c1c, 0x7154c24c, 0xea082b2a, 0x93eb2939,
793 1.2.2.2 bouyer 0x17dcb0f0, 0x58d4f2ae, 0x9ea294fb, 0x52cf564c,
794 1.2.2.2 bouyer 0x9883fe66, 0x2ec40581, 0x763953c3, 0x01d6692e,
795 1.2.2.2 bouyer 0xd3a0c108, 0xa1e7160e, 0xe4f2dfa6, 0x693ed285,
796 1.2.2.2 bouyer 0x74904698, 0x4c2b0edd, 0x4f757656, 0x5d393378,
797 1.2.2.2 bouyer 0xa132234f, 0x3d321c5d, 0xc3f5e194, 0x4b269301,
798 1.2.2.2 bouyer 0xc79f022f, 0x3c997e7e, 0x5e4f9504, 0x3ffafbbd,
799 1.2.2.2 bouyer 0x76f7ad0e, 0x296693f4, 0x3d1fce6f, 0xc61e45be,
800 1.2.2.2 bouyer 0xd3b5ab34, 0xf72bf9b7, 0x1b0434c0, 0x4e72b567,
801 1.2.2.2 bouyer 0x5592a33d, 0xb5229301, 0xcfd2a87f, 0x60aeb767,
802 1.2.2.2 bouyer 0x1814386b, 0x30bcc33d, 0x38a0c07d, 0xfd1606f2,
803 1.2.2.2 bouyer 0xc363519b, 0x589dd390, 0x5479f8e6, 0x1cb8d647,
804 1.2.2.2 bouyer 0x97fd61a9, 0xea7759f4, 0x2d57539d, 0x569a58cf,
805 1.2.2.2 bouyer 0xe84e63ad, 0x462e1b78, 0x6580f87e, 0xf3817914,
806 1.2.2.2 bouyer 0x91da55f4, 0x40a230f3, 0xd1988f35, 0xb6e318d2,
807 1.2.2.2 bouyer 0x3ffa50bc, 0x3d40f021, 0xc3c0bdae, 0x4958c24c,
808 1.2.2.2 bouyer 0x518f36b2, 0x84b1d370, 0x0fedce83, 0x878ddada,
809 1.2.2.2 bouyer 0xf2a279c7, 0x94e01be8, 0x90716f4b, 0x954b8aa3,
810 1.2.2.2 bouyer };
811 1.2.2.2 bouyer
812 1.2.2.2 bouyer static u_int32_t S8[] = {
813 1.2.2.2 bouyer 0xe216300d, 0xbbddfffc, 0xa7ebdabd, 0x35648095,
814 1.2.2.2 bouyer 0x7789f8b7, 0xe6c1121b, 0x0e241600, 0x052ce8b5,
815 1.2.2.2 bouyer 0x11a9cfb0, 0xe5952f11, 0xece7990a, 0x9386d174,
816 1.2.2.2 bouyer 0x2a42931c, 0x76e38111, 0xb12def3a, 0x37ddddfc,
817 1.2.2.2 bouyer 0xde9adeb1, 0x0a0cc32c, 0xbe197029, 0x84a00940,
818 1.2.2.2 bouyer 0xbb243a0f, 0xb4d137cf, 0xb44e79f0, 0x049eedfd,
819 1.2.2.2 bouyer 0x0b15a15d, 0x480d3168, 0x8bbbde5a, 0x669ded42,
820 1.2.2.2 bouyer 0xc7ece831, 0x3f8f95e7, 0x72df191b, 0x7580330d,
821 1.2.2.2 bouyer 0x94074251, 0x5c7dcdfa, 0xabbe6d63, 0xaa402164,
822 1.2.2.2 bouyer 0xb301d40a, 0x02e7d1ca, 0x53571dae, 0x7a3182a2,
823 1.2.2.2 bouyer 0x12a8ddec, 0xfdaa335d, 0x176f43e8, 0x71fb46d4,
824 1.2.2.2 bouyer 0x38129022, 0xce949ad4, 0xb84769ad, 0x965bd862,
825 1.2.2.2 bouyer 0x82f3d055, 0x66fb9767, 0x15b80b4e, 0x1d5b47a0,
826 1.2.2.2 bouyer 0x4cfde06f, 0xc28ec4b8, 0x57e8726e, 0x647a78fc,
827 1.2.2.2 bouyer 0x99865d44, 0x608bd593, 0x6c200e03, 0x39dc5ff6,
828 1.2.2.2 bouyer 0x5d0b00a3, 0xae63aff2, 0x7e8bd632, 0x70108c0c,
829 1.2.2.2 bouyer 0xbbd35049, 0x2998df04, 0x980cf42a, 0x9b6df491,
830 1.2.2.2 bouyer 0x9e7edd53, 0x06918548, 0x58cb7e07, 0x3b74ef2e,
831 1.2.2.2 bouyer 0x522fffb1, 0xd24708cc, 0x1c7e27cd, 0xa4eb215b,
832 1.2.2.2 bouyer 0x3cf1d2e2, 0x19b47a38, 0x424f7618, 0x35856039,
833 1.2.2.2 bouyer 0x9d17dee7, 0x27eb35e6, 0xc9aff67b, 0x36baf5b8,
834 1.2.2.2 bouyer 0x09c467cd, 0xc18910b1, 0xe11dbf7b, 0x06cd1af8,
835 1.2.2.2 bouyer 0x7170c608, 0x2d5e3354, 0xd4de495a, 0x64c6d006,
836 1.2.2.2 bouyer 0xbcc0c62c, 0x3dd00db3, 0x708f8f34, 0x77d51b42,
837 1.2.2.2 bouyer 0x264f620f, 0x24b8d2bf, 0x15c1b79e, 0x46a52564,
838 1.2.2.2 bouyer 0xf8d7e54e, 0x3e378160, 0x7895cda5, 0x859c15a5,
839 1.2.2.2 bouyer 0xe6459788, 0xc37bc75f, 0xdb07ba0c, 0x0676a3ab,
840 1.2.2.2 bouyer 0x7f229b1e, 0x31842e7b, 0x24259fd7, 0xf8bef472,
841 1.2.2.2 bouyer 0x835ffcb8, 0x6df4c1f2, 0x96f5b195, 0xfd0af0fc,
842 1.2.2.2 bouyer 0xb0fe134c, 0xe2506d3d, 0x4f9b12ea, 0xf215f225,
843 1.2.2.2 bouyer 0xa223736f, 0x9fb4c428, 0x25d04979, 0x34c713f8,
844 1.2.2.2 bouyer 0xc4618187, 0xea7a6e98, 0x7cd16efc, 0x1436876c,
845 1.2.2.2 bouyer 0xf1544107, 0xbedeee14, 0x56e9af27, 0xa04aa441,
846 1.2.2.2 bouyer 0x3cf7c899, 0x92ecbae6, 0xdd67016d, 0x151682eb,
847 1.2.2.2 bouyer 0xa842eedf, 0xfdba60b4, 0xf1907b75, 0x20e3030f,
848 1.2.2.2 bouyer 0x24d8c29e, 0xe139673b, 0xefa63fb8, 0x71873054,
849 1.2.2.2 bouyer 0xb6f2cf3b, 0x9f326442, 0xcb15a4cc, 0xb01a4504,
850 1.2.2.2 bouyer 0xf1e47d8d, 0x844a1be5, 0xbae7dfdc, 0x42cbda70,
851 1.2.2.2 bouyer 0xcd7dae0a, 0x57e85b7a, 0xd53f5af6, 0x20cf4d8c,
852 1.2.2.2 bouyer 0xcea4d428, 0x79d130a4, 0x3486ebfb, 0x33d3cddc,
853 1.2.2.2 bouyer 0x77853b53, 0x37effcb5, 0xc5068778, 0xe580b3e6,
854 1.2.2.2 bouyer 0x4e68b8f4, 0xc5c8b37e, 0x0d809ea2, 0x398feb7c,
855 1.2.2.2 bouyer 0x132a4f94, 0x43b7950e, 0x2fee7d1c, 0x223613bd,
856 1.2.2.2 bouyer 0xdd06caa2, 0x37df932b, 0xc4248289, 0xacf3ebc3,
857 1.2.2.2 bouyer 0x5715f6b7, 0xef3478dd, 0xf267616f, 0xc148cbe4,
858 1.2.2.2 bouyer 0x9052815e, 0x5e410fab, 0xb48a2465, 0x2eda7fa4,
859 1.2.2.2 bouyer 0xe87b40e4, 0xe98ea084, 0x5889e9e1, 0xefd390fc,
860 1.2.2.2 bouyer 0xdd07d35b, 0xdb485694, 0x38d7e5b2, 0x57720101,
861 1.2.2.2 bouyer 0x730edebc, 0x5b643113, 0x94917e4f, 0x503c2fba,
862 1.2.2.2 bouyer 0x646f1282, 0x7523d24a, 0xe0779695, 0xf9c17a8f,
863 1.2.2.2 bouyer 0x7a5b2121, 0xd187b896, 0x29263a4d, 0xba510cdf,
864 1.2.2.2 bouyer 0x81f47c9f, 0xad1163ed, 0xea7b5965, 0x1a00726e,
865 1.2.2.2 bouyer 0x11403092, 0x00da6d77, 0x4a0cdd61, 0xad1f4603,
866 1.2.2.2 bouyer 0x605bdfb0, 0x9eedc364, 0x22ebe6a8, 0xcee7d28a,
867 1.2.2.2 bouyer 0xa0e736a0, 0x5564a6b9, 0x10853209, 0xc7eb8f37,
868 1.2.2.2 bouyer 0x2de705ca, 0x8951570f, 0xdf09822b, 0xbd691a6c,
869 1.2.2.2 bouyer 0xaa12e4f2, 0x87451c0f, 0xe0f6a27a, 0x3ada4819,
870 1.2.2.2 bouyer 0x4cf1764f, 0x0d771c2b, 0x67cdb156, 0x350d8384,
871 1.2.2.2 bouyer 0x5938fa0f, 0x42399ef3, 0x36997b07, 0x0e84093d,
872 1.2.2.2 bouyer 0x4aa93e61, 0x8360d87b, 0x1fa98b0c, 0x1149382c,
873 1.2.2.2 bouyer 0xe97625a5, 0x0614d1b7, 0x0e25244b, 0x0c768347,
874 1.2.2.2 bouyer 0x589e8d82, 0x0d2059d1, 0xa466bb1e, 0xf8da0a82,
875 1.2.2.2 bouyer 0x04f19130, 0xba6e4ec0, 0x99265164, 0x1ee7230d,
876 1.2.2.2 bouyer 0x50b2ad80, 0xeaee6801, 0x8db2a283, 0xea8bf59e,
877 1.2.2.2 bouyer };
878 1.2.2.2 bouyer
879