Home | History | Annotate | Line # | Download | only in cast128
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