string-crypt 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,242 @@
1
+ /*
2
+ * Copyright (c) 1989, 1993
3
+ * The Regents of the University of California. All rights reserved.
4
+ *
5
+ * This code is derived from software contributed to Berkeley by
6
+ * Tom Truscott.
7
+ *
8
+ * Redistribution and use in source and binary forms, with or without
9
+ * modification, are permitted provided that the following conditions
10
+ * are met:
11
+ * 1. Redistributions of source code must retain the above copyright
12
+ * notice, this list of conditions and the following disclaimer.
13
+ * 2. Redistributions in binary form must reproduce the above copyright
14
+ * notice, this list of conditions and the following disclaimer in the
15
+ * documentation and/or other materials provided with the distribution.
16
+ * 3. Neither the name of the University nor the names of its contributors
17
+ * may be used to endorse or promote products derived from this software
18
+ * without specific prior written permission.
19
+ *
20
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30
+ * SUCH DAMAGE.
31
+ */
32
+
33
+ #ifndef CRYPT_H
34
+ #define CRYPT_H 1
35
+
36
+ /* ===== Configuration ==================== */
37
+
38
+ #ifdef CHAR_BITS
39
+ #if CHAR_BITS != 8
40
+ #error C_block structure assumes 8 bit characters
41
+ #endif
42
+ #endif
43
+
44
+ #ifndef LONG_LONG
45
+ # if SIZEOF_LONG_LONG > 0
46
+ # define LONG_LONG long long
47
+ # elif SIZEOF___INT64 > 0
48
+ # define HAVE_LONG_LONG 1
49
+ # define LONG_LONG __int64
50
+ # undef SIZEOF_LONG_LONG
51
+ # define SIZEOF_LONG_LONG SIZEOF___INT64
52
+ # endif
53
+ #endif
54
+
55
+ /*
56
+ * define "LONG_IS_32_BITS" only if sizeof(long)==4.
57
+ * This avoids use of bit fields (your compiler may be sloppy with them).
58
+ */
59
+ #if SIZEOF_LONG == 4
60
+ #define LONG_IS_32_BITS
61
+ #endif
62
+
63
+ /*
64
+ * define "B64" to be the declaration for a 64 bit integer.
65
+ * XXX this feature is currently unused, see "endian" comment below.
66
+ */
67
+ #if SIZEOF_LONG == 8
68
+ #define B64 long
69
+ #elif SIZEOF_LONG_LONG == 8
70
+ #define B64 LONG_LONG
71
+ #endif
72
+
73
+ /*
74
+ * define "LARGEDATA" to get faster permutations, by using about 72 kilobytes
75
+ * of lookup tables. This speeds up des_setkey() and des_cipher(), but has
76
+ * little effect on crypt().
77
+ */
78
+ #if defined(notdef)
79
+ #define LARGEDATA
80
+ #endif
81
+
82
+ /* compile with "-DSTATIC=int" when profiling */
83
+ #ifndef STATIC
84
+ #define STATIC static
85
+ #endif
86
+
87
+ /* ==================================== */
88
+
89
+ /*
90
+ * Cipher-block representation (Bob Baldwin):
91
+ *
92
+ * DES operates on groups of 64 bits, numbered 1..64 (sigh). One
93
+ * representation is to store one bit per byte in an array of bytes. Bit N of
94
+ * the NBS spec is stored as the LSB of the Nth byte (index N-1) in the array.
95
+ * Another representation stores the 64 bits in 8 bytes, with bits 1..8 in the
96
+ * first byte, 9..16 in the second, and so on. The DES spec apparently has
97
+ * bit 1 in the MSB of the first byte, but that is particularly noxious so we
98
+ * bit-reverse each byte so that bit 1 is the LSB of the first byte, bit 8 is
99
+ * the MSB of the first byte. Specifically, the 64-bit input data and key are
100
+ * converted to LSB format, and the output 64-bit block is converted back into
101
+ * MSB format.
102
+ *
103
+ * DES operates internally on groups of 32 bits which are expanded to 48 bits
104
+ * by permutation E and shrunk back to 32 bits by the S boxes. To speed up
105
+ * the computation, the expansion is applied only once, the expanded
106
+ * representation is maintained during the encryption, and a compression
107
+ * permutation is applied only at the end. To speed up the S-box lookups,
108
+ * the 48 bits are maintained as eight 6 bit groups, one per byte, which
109
+ * directly feed the eight S-boxes. Within each byte, the 6 bits are the
110
+ * most significant ones. The low two bits of each byte are zero. (Thus,
111
+ * bit 1 of the 48 bit E expansion is stored as the "4"-valued bit of the
112
+ * first byte in the eight byte representation, bit 2 of the 48 bit value is
113
+ * the "8"-valued bit, and so on.) In fact, a combined "SPE"-box lookup is
114
+ * used, in which the output is the 64 bit result of an S-box lookup which
115
+ * has been permuted by P and expanded by E, and is ready for use in the next
116
+ * iteration. Two 32-bit wide tables, SPE[0] and SPE[1], are used for this
117
+ * lookup. Since each byte in the 48 bit path is a multiple of four, indexed
118
+ * lookup of SPE[0] and SPE[1] is simple and fast. The key schedule and
119
+ * "salt" are also converted to this 8*(6+2) format. The SPE table size is
120
+ * 8*64*8 = 4K bytes.
121
+ *
122
+ * To speed up bit-parallel operations (such as XOR), the 8 byte
123
+ * representation is "union"ed with 32 bit values "i0" and "i1", and, on
124
+ * machines which support it, a 64 bit value "b64". This data structure,
125
+ * "C_block", has two problems. First, alignment restrictions must be
126
+ * honored. Second, the byte-order (e.g. little-endian or big-endian) of
127
+ * the architecture becomes visible.
128
+ *
129
+ * The byte-order problem is unfortunate, since on the one hand it is good
130
+ * to have a machine-independent C_block representation (bits 1..8 in the
131
+ * first byte, etc.), and on the other hand it is good for the LSB of the
132
+ * first byte to be the LSB of i0. We cannot have both these things, so we
133
+ * currently use the "little-endian" representation and avoid any multi-byte
134
+ * operations that depend on byte order. This largely precludes use of the
135
+ * 64-bit datatype since the relative order of i0 and i1 are unknown. It
136
+ * also inhibits grouping the SPE table to look up 12 bits at a time. (The
137
+ * 12 bits can be stored in a 16-bit field with 3 low-order zeroes and 1
138
+ * high-order zero, providing fast indexing into a 64-bit wide SPE.) On the
139
+ * other hand, 64-bit datatypes are currently rare, and a 12-bit SPE lookup
140
+ * requires a 128 kilobyte table, so perhaps this is not a big loss.
141
+ *
142
+ * Permutation representation (Jim Gillogly):
143
+ *
144
+ * A transformation is defined by its effect on each of the 8 bytes of the
145
+ * 64-bit input. For each byte we give a 64-bit output that has the bits in
146
+ * the input distributed appropriately. The transformation is then the OR
147
+ * of the 8 sets of 64-bits. This uses 8*256*8 = 16K bytes of storage for
148
+ * each transformation. Unless LARGEDATA is defined, however, a more compact
149
+ * table is used which looks up 16 4-bit "chunks" rather than 8 8-bit chunks.
150
+ * The smaller table uses 16*16*8 = 2K bytes for each transformation. This
151
+ * is slower but tolerable, particularly for password encryption in which
152
+ * the SPE transformation is iterated many times. The small tables total 9K
153
+ * bytes, the large tables total 72K bytes.
154
+ *
155
+ * The transformations used are:
156
+ * IE3264: MSB->LSB conversion, initial permutation, and expansion.
157
+ * This is done by collecting the 32 even-numbered bits and applying
158
+ * a 32->64 bit transformation, and then collecting the 32 odd-numbered
159
+ * bits and applying the same transformation. Since there are only
160
+ * 32 input bits, the IE3264 transformation table is half the size of
161
+ * the usual table.
162
+ * CF6464: Compression, final permutation, and LSB->MSB conversion.
163
+ * This is done by two trivial 48->32 bit compressions to obtain
164
+ * a 64-bit block (the bit numbering is given in the "CIFP" table)
165
+ * followed by a 64->64 bit "cleanup" transformation. (It would
166
+ * be possible to group the bits in the 64-bit block so that 2
167
+ * identical 32->32 bit transformations could be used instead,
168
+ * saving a factor of 4 in space and possibly 2 in time, but
169
+ * byte-ordering and other complications rear their ugly head.
170
+ * Similar opportunities/problems arise in the key schedule
171
+ * transforms.)
172
+ * PC1ROT: MSB->LSB, PC1 permutation, rotate, and PC2 permutation.
173
+ * This admittedly baroque 64->64 bit transformation is used to
174
+ * produce the first code (in 8*(6+2) format) of the key schedule.
175
+ * PC2ROT[0]: Inverse PC2 permutation, rotate, and PC2 permutation.
176
+ * It would be possible to define 15 more transformations, each
177
+ * with a different rotation, to generate the entire key schedule.
178
+ * To save space, however, we instead permute each code into the
179
+ * next by using a transformation that "undoes" the PC2 permutation,
180
+ * rotates the code, and then applies PC2. Unfortunately, PC2
181
+ * transforms 56 bits into 48 bits, dropping 8 bits, so PC2 is not
182
+ * invertible. We get around that problem by using a modified PC2
183
+ * which retains the 8 otherwise-lost bits in the unused low-order
184
+ * bits of each byte. The low-order bits are cleared when the
185
+ * codes are stored into the key schedule.
186
+ * PC2ROT[1]: Same as PC2ROT[0], but with two rotations.
187
+ * This is faster than applying PC2ROT[0] twice,
188
+ *
189
+ * The Bell Labs "salt" (Bob Baldwin):
190
+ *
191
+ * The salting is a simple permutation applied to the 48-bit result of E.
192
+ * Specifically, if bit i (1 <= i <= 24) of the salt is set then bits i and
193
+ * i+24 of the result are swapped. The salt is thus a 24 bit number, with
194
+ * 16777216 possible values. (The original salt was 12 bits and could not
195
+ * swap bits 13..24 with 36..48.)
196
+ *
197
+ * It is possible, but ugly, to warp the SPE table to account for the salt
198
+ * permutation. Fortunately, the conditional bit swapping requires only
199
+ * about four machine instructions and can be done on-the-fly with about an
200
+ * 8% performance penalty.
201
+ */
202
+
203
+ typedef union {
204
+ unsigned char b[8];
205
+ struct {
206
+ #if defined(LONG_IS_32_BITS)
207
+ /* long is often faster than a 32-bit bit field */
208
+ long i0;
209
+ long i1;
210
+ #else
211
+ long i0: 32;
212
+ long i1: 32;
213
+ #endif
214
+ } b32;
215
+ #if defined(B64)
216
+ B64 b64;
217
+ #endif
218
+ } C_block;
219
+
220
+ #if defined(LARGEDATA)
221
+ /* Waste memory like crazy. Also, do permutations in line */
222
+ #define LGCHUNKBITS 3
223
+ #define CHUNKBITS (1<<LGCHUNKBITS)
224
+ #else
225
+ /* "small data" */
226
+ #define LGCHUNKBITS 2
227
+ #define CHUNKBITS (1<<LGCHUNKBITS)
228
+ #endif
229
+
230
+ struct crypt_data {
231
+ /* The Key Schedule, filled in by des_setkey() or setkey(). */
232
+ #define KS_SIZE 16
233
+ C_block KS[KS_SIZE];
234
+
235
+ /* ==================================== */
236
+
237
+ char cryptresult[1+4+4+11+1]; /* encrypted result */
238
+ };
239
+
240
+ char *crypt_r(const char *key, const char *setting, struct crypt_data *data);
241
+
242
+ #endif /* CRYPT_H */
@@ -0,0 +1,1616 @@
1
+ #ifndef HAVE_DES_TABLES
2
+
3
+ /* Initial key schedule permutation */
4
+ static const C_block PC1ROT[64/CHUNKBITS][1<<CHUNKBITS] = {
5
+ {
6
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
7
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
8
+ {{ 0, 0, 1, 0, 0, 0, 0, 0,}},
9
+ {{ 0, 0, 1, 0, 0, 0, 0, 0,}},
10
+ {{ 0, 0, 0, 1, 0, 0, 0, 0,}},
11
+ {{ 0, 0, 0, 1, 0, 0, 0, 0,}},
12
+ {{ 0, 0, 1, 1, 0, 0, 0, 0,}},
13
+ {{ 0, 0, 1, 1, 0, 0, 0, 0,}},
14
+ {{ 0, 0, 0, 0, 0, 16, 0, 0,}},
15
+ {{ 0, 0, 0, 0, 0, 16, 0, 0,}},
16
+ {{ 0, 0, 1, 0, 0, 16, 0, 0,}},
17
+ {{ 0, 0, 1, 0, 0, 16, 0, 0,}},
18
+ {{ 0, 0, 0, 1, 0, 16, 0, 0,}},
19
+ {{ 0, 0, 0, 1, 0, 16, 0, 0,}},
20
+ {{ 0, 0, 1, 1, 0, 16, 0, 0,}},
21
+ {{ 0, 0, 1, 1, 0, 16, 0, 0,}},
22
+ },
23
+ {
24
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
25
+ {{ 0, 0, 0, 0,128, 0, 0, 0,}},
26
+ {{ 0, 0, 4, 0, 0, 0, 0, 0,}},
27
+ {{ 0, 0, 4, 0,128, 0, 0, 0,}},
28
+ {{ 0, 16, 0, 0, 0, 0, 0, 0,}},
29
+ {{ 0, 16, 0, 0,128, 0, 0, 0,}},
30
+ {{ 0, 16, 4, 0, 0, 0, 0, 0,}},
31
+ {{ 0, 16, 4, 0,128, 0, 0, 0,}},
32
+ {{ 0, 0, 0, 8, 0, 0, 0, 0,}},
33
+ {{ 0, 0, 0, 8,128, 0, 0, 0,}},
34
+ {{ 0, 0, 4, 8, 0, 0, 0, 0,}},
35
+ {{ 0, 0, 4, 8,128, 0, 0, 0,}},
36
+ {{ 0, 16, 0, 8, 0, 0, 0, 0,}},
37
+ {{ 0, 16, 0, 8,128, 0, 0, 0,}},
38
+ {{ 0, 16, 4, 8, 0, 0, 0, 0,}},
39
+ {{ 0, 16, 4, 8,128, 0, 0, 0,}},
40
+ },
41
+ {
42
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
43
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
44
+ {{ 0, 0, 0, 0, 0, 0, 64, 0,}},
45
+ {{ 0, 0, 0, 0, 0, 0, 64, 0,}},
46
+ {{ 0, 0, 0, 0, 0, 0, 0, 8,}},
47
+ {{ 0, 0, 0, 0, 0, 0, 0, 8,}},
48
+ {{ 0, 0, 0, 0, 0, 0, 64, 8,}},
49
+ {{ 0, 0, 0, 0, 0, 0, 64, 8,}},
50
+ {{ 0, 0, 0, 0, 0, 0, 0, 16,}},
51
+ {{ 0, 0, 0, 0, 0, 0, 0, 16,}},
52
+ {{ 0, 0, 0, 0, 0, 0, 64, 16,}},
53
+ {{ 0, 0, 0, 0, 0, 0, 64, 16,}},
54
+ {{ 0, 0, 0, 0, 0, 0, 0, 24,}},
55
+ {{ 0, 0, 0, 0, 0, 0, 0, 24,}},
56
+ {{ 0, 0, 0, 0, 0, 0, 64, 24,}},
57
+ {{ 0, 0, 0, 0, 0, 0, 64, 24,}},
58
+ },
59
+ {
60
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
61
+ {{ 0, 0, 0, 2, 0, 0, 0, 0,}},
62
+ {{ 0, 1, 0, 0, 0, 0, 0, 0,}},
63
+ {{ 0, 1, 0, 2, 0, 0, 0, 0,}},
64
+ {{ 4, 0, 0, 0, 0, 0, 0, 0,}},
65
+ {{ 4, 0, 0, 2, 0, 0, 0, 0,}},
66
+ {{ 4, 1, 0, 0, 0, 0, 0, 0,}},
67
+ {{ 4, 1, 0, 2, 0, 0, 0, 0,}},
68
+ {{ 0, 32, 0, 0, 0, 0, 0, 0,}},
69
+ {{ 0, 32, 0, 2, 0, 0, 0, 0,}},
70
+ {{ 0, 33, 0, 0, 0, 0, 0, 0,}},
71
+ {{ 0, 33, 0, 2, 0, 0, 0, 0,}},
72
+ {{ 4, 32, 0, 0, 0, 0, 0, 0,}},
73
+ {{ 4, 32, 0, 2, 0, 0, 0, 0,}},
74
+ {{ 4, 33, 0, 0, 0, 0, 0, 0,}},
75
+ {{ 4, 33, 0, 2, 0, 0, 0, 0,}},
76
+ },
77
+ {
78
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
79
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
80
+ {{ 0, 0, 0, 0, 0, 64, 0, 0,}},
81
+ {{ 0, 0, 0, 0, 0, 64, 0, 0,}},
82
+ {{ 0, 0, 0, 0, 4, 0, 0, 0,}},
83
+ {{ 0, 0, 0, 0, 4, 0, 0, 0,}},
84
+ {{ 0, 0, 0, 0, 4, 64, 0, 0,}},
85
+ {{ 0, 0, 0, 0, 4, 64, 0, 0,}},
86
+ {{ 0, 0, 0, 0, 0, 0, 8, 0,}},
87
+ {{ 0, 0, 0, 0, 0, 0, 8, 0,}},
88
+ {{ 0, 0, 0, 0, 0, 64, 8, 0,}},
89
+ {{ 0, 0, 0, 0, 0, 64, 8, 0,}},
90
+ {{ 0, 0, 0, 0, 4, 0, 8, 0,}},
91
+ {{ 0, 0, 0, 0, 4, 0, 8, 0,}},
92
+ {{ 0, 0, 0, 0, 4, 64, 8, 0,}},
93
+ {{ 0, 0, 0, 0, 4, 64, 8, 0,}},
94
+ },
95
+ {
96
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
97
+ {{ 0, 0, 0, 0, 0, 0,128, 0,}},
98
+ {{ 0, 64, 0, 0, 0, 0, 0, 0,}},
99
+ {{ 0, 64, 0, 0, 0, 0,128, 0,}},
100
+ {{ 0, 0, 0, 64, 0, 0, 0, 0,}},
101
+ {{ 0, 0, 0, 64, 0, 0,128, 0,}},
102
+ {{ 0, 64, 0, 64, 0, 0, 0, 0,}},
103
+ {{ 0, 64, 0, 64, 0, 0,128, 0,}},
104
+ {{128, 0, 0, 0, 0, 0, 0, 0,}},
105
+ {{128, 0, 0, 0, 0, 0,128, 0,}},
106
+ {{128, 64, 0, 0, 0, 0, 0, 0,}},
107
+ {{128, 64, 0, 0, 0, 0,128, 0,}},
108
+ {{128, 0, 0, 64, 0, 0, 0, 0,}},
109
+ {{128, 0, 0, 64, 0, 0,128, 0,}},
110
+ {{128, 64, 0, 64, 0, 0, 0, 0,}},
111
+ {{128, 64, 0, 64, 0, 0,128, 0,}},
112
+ },
113
+ {
114
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
115
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
116
+ {{ 0, 0, 0, 0, 0, 0, 0,128,}},
117
+ {{ 0, 0, 0, 0, 0, 0, 0,128,}},
118
+ {{ 0, 0, 0, 0, 0, 8, 0, 0,}},
119
+ {{ 0, 0, 0, 0, 0, 8, 0, 0,}},
120
+ {{ 0, 0, 0, 0, 0, 8, 0,128,}},
121
+ {{ 0, 0, 0, 0, 0, 8, 0,128,}},
122
+ {{ 0, 0, 0, 0, 0,128, 0, 0,}},
123
+ {{ 0, 0, 0, 0, 0,128, 0, 0,}},
124
+ {{ 0, 0, 0, 0, 0,128, 0,128,}},
125
+ {{ 0, 0, 0, 0, 0,128, 0,128,}},
126
+ {{ 0, 0, 0, 0, 0,136, 0, 0,}},
127
+ {{ 0, 0, 0, 0, 0,136, 0, 0,}},
128
+ {{ 0, 0, 0, 0, 0,136, 0,128,}},
129
+ {{ 0, 0, 0, 0, 0,136, 0,128,}},
130
+ },
131
+ {
132
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
133
+ {{ 0, 0, 0, 0, 8, 0, 0, 0,}},
134
+ {{ 0, 0, 0, 32, 0, 0, 0, 0,}},
135
+ {{ 0, 0, 0, 32, 8, 0, 0, 0,}},
136
+ {{ 0, 0, 16, 0, 0, 0, 0, 0,}},
137
+ {{ 0, 0, 16, 0, 8, 0, 0, 0,}},
138
+ {{ 0, 0, 16, 32, 0, 0, 0, 0,}},
139
+ {{ 0, 0, 16, 32, 8, 0, 0, 0,}},
140
+ {{ 0, 0, 32, 0, 0, 0, 0, 0,}},
141
+ {{ 0, 0, 32, 0, 8, 0, 0, 0,}},
142
+ {{ 0, 0, 32, 32, 0, 0, 0, 0,}},
143
+ {{ 0, 0, 32, 32, 8, 0, 0, 0,}},
144
+ {{ 0, 0, 48, 0, 0, 0, 0, 0,}},
145
+ {{ 0, 0, 48, 0, 8, 0, 0, 0,}},
146
+ {{ 0, 0, 48, 32, 0, 0, 0, 0,}},
147
+ {{ 0, 0, 48, 32, 8, 0, 0, 0,}},
148
+ },
149
+ {
150
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
151
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
152
+ {{ 0, 0, 0, 0, 16, 0, 0, 0,}},
153
+ {{ 0, 0, 0, 0, 16, 0, 0, 0,}},
154
+ {{ 0, 0, 0, 0, 0, 0, 16, 0,}},
155
+ {{ 0, 0, 0, 0, 0, 0, 16, 0,}},
156
+ {{ 0, 0, 0, 0, 16, 0, 16, 0,}},
157
+ {{ 0, 0, 0, 0, 16, 0, 16, 0,}},
158
+ {{ 0, 0, 0, 0, 64, 0, 0, 0,}},
159
+ {{ 0, 0, 0, 0, 64, 0, 0, 0,}},
160
+ {{ 0, 0, 0, 0, 80, 0, 0, 0,}},
161
+ {{ 0, 0, 0, 0, 80, 0, 0, 0,}},
162
+ {{ 0, 0, 0, 0, 64, 0, 16, 0,}},
163
+ {{ 0, 0, 0, 0, 64, 0, 16, 0,}},
164
+ {{ 0, 0, 0, 0, 80, 0, 16, 0,}},
165
+ {{ 0, 0, 0, 0, 80, 0, 16, 0,}},
166
+ },
167
+ {
168
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
169
+ {{ 0, 0, 0, 16, 0, 0, 0, 0,}},
170
+ {{ 0, 0, 8, 0, 0, 0, 0, 0,}},
171
+ {{ 0, 0, 8, 16, 0, 0, 0, 0,}},
172
+ {{ 16, 0, 0, 0, 0, 0, 0, 0,}},
173
+ {{ 16, 0, 0, 16, 0, 0, 0, 0,}},
174
+ {{ 16, 0, 8, 0, 0, 0, 0, 0,}},
175
+ {{ 16, 0, 8, 16, 0, 0, 0, 0,}},
176
+ {{ 0, 4, 0, 0, 0, 0, 0, 0,}},
177
+ {{ 0, 4, 0, 16, 0, 0, 0, 0,}},
178
+ {{ 0, 4, 8, 0, 0, 0, 0, 0,}},
179
+ {{ 0, 4, 8, 16, 0, 0, 0, 0,}},
180
+ {{ 16, 4, 0, 0, 0, 0, 0, 0,}},
181
+ {{ 16, 4, 0, 16, 0, 0, 0, 0,}},
182
+ {{ 16, 4, 8, 0, 0, 0, 0, 0,}},
183
+ {{ 16, 4, 8, 16, 0, 0, 0, 0,}},
184
+ },
185
+ {
186
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
187
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
188
+ {{ 0, 0, 0, 0, 0, 4, 0, 0,}},
189
+ {{ 0, 0, 0, 0, 0, 4, 0, 0,}},
190
+ {{ 0, 0, 2, 0, 0, 0, 0, 0,}},
191
+ {{ 0, 0, 2, 0, 0, 0, 0, 0,}},
192
+ {{ 0, 0, 2, 0, 0, 4, 0, 0,}},
193
+ {{ 0, 0, 2, 0, 0, 4, 0, 0,}},
194
+ {{ 0, 0, 0, 0, 0, 0, 0, 4,}},
195
+ {{ 0, 0, 0, 0, 0, 0, 0, 4,}},
196
+ {{ 0, 0, 0, 0, 0, 4, 0, 4,}},
197
+ {{ 0, 0, 0, 0, 0, 4, 0, 4,}},
198
+ {{ 0, 0, 2, 0, 0, 0, 0, 4,}},
199
+ {{ 0, 0, 2, 0, 0, 0, 0, 4,}},
200
+ {{ 0, 0, 2, 0, 0, 4, 0, 4,}},
201
+ {{ 0, 0, 2, 0, 0, 4, 0, 4,}},
202
+ },
203
+ {
204
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
205
+ {{ 0, 0, 64, 0, 0, 0, 0, 0,}},
206
+ {{ 2, 0, 0, 0, 0, 0, 0, 0,}},
207
+ {{ 2, 0, 64, 0, 0, 0, 0, 0,}},
208
+ {{ 0,128, 0, 0, 0, 0, 0, 0,}},
209
+ {{ 0,128, 64, 0, 0, 0, 0, 0,}},
210
+ {{ 2,128, 0, 0, 0, 0, 0, 0,}},
211
+ {{ 2,128, 64, 0, 0, 0, 0, 0,}},
212
+ {{ 0, 0, 0,128, 0, 0, 0, 0,}},
213
+ {{ 0, 0, 64,128, 0, 0, 0, 0,}},
214
+ {{ 2, 0, 0,128, 0, 0, 0, 0,}},
215
+ {{ 2, 0, 64,128, 0, 0, 0, 0,}},
216
+ {{ 0,128, 0,128, 0, 0, 0, 0,}},
217
+ {{ 0,128, 64,128, 0, 0, 0, 0,}},
218
+ {{ 2,128, 0,128, 0, 0, 0, 0,}},
219
+ {{ 2,128, 64,128, 0, 0, 0, 0,}},
220
+ },
221
+ {
222
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
223
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
224
+ {{ 0, 0, 0, 0, 0, 0, 0, 64,}},
225
+ {{ 0, 0, 0, 0, 0, 0, 0, 64,}},
226
+ {{ 0, 0, 0, 0, 32, 0, 0, 0,}},
227
+ {{ 0, 0, 0, 0, 32, 0, 0, 0,}},
228
+ {{ 0, 0, 0, 0, 32, 0, 0, 64,}},
229
+ {{ 0, 0, 0, 0, 32, 0, 0, 64,}},
230
+ {{ 0, 0, 0, 0, 0, 32, 0, 0,}},
231
+ {{ 0, 0, 0, 0, 0, 32, 0, 0,}},
232
+ {{ 0, 0, 0, 0, 0, 32, 0, 64,}},
233
+ {{ 0, 0, 0, 0, 0, 32, 0, 64,}},
234
+ {{ 0, 0, 0, 0, 32, 32, 0, 0,}},
235
+ {{ 0, 0, 0, 0, 32, 32, 0, 0,}},
236
+ {{ 0, 0, 0, 0, 32, 32, 0, 64,}},
237
+ {{ 0, 0, 0, 0, 32, 32, 0, 64,}},
238
+ },
239
+ {
240
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
241
+ {{ 0, 2, 0, 0, 0, 0, 0, 0,}},
242
+ {{ 8, 0, 0, 0, 0, 0, 0, 0,}},
243
+ {{ 8, 2, 0, 0, 0, 0, 0, 0,}},
244
+ {{ 1, 0, 0, 0, 0, 0, 0, 0,}},
245
+ {{ 1, 2, 0, 0, 0, 0, 0, 0,}},
246
+ {{ 9, 0, 0, 0, 0, 0, 0, 0,}},
247
+ {{ 9, 2, 0, 0, 0, 0, 0, 0,}},
248
+ {{ 64, 0, 0, 0, 0, 0, 0, 0,}},
249
+ {{ 64, 2, 0, 0, 0, 0, 0, 0,}},
250
+ {{ 72, 0, 0, 0, 0, 0, 0, 0,}},
251
+ {{ 72, 2, 0, 0, 0, 0, 0, 0,}},
252
+ {{ 65, 0, 0, 0, 0, 0, 0, 0,}},
253
+ {{ 65, 2, 0, 0, 0, 0, 0, 0,}},
254
+ {{ 73, 0, 0, 0, 0, 0, 0, 0,}},
255
+ {{ 73, 2, 0, 0, 0, 0, 0, 0,}},
256
+ },
257
+ {
258
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
259
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
260
+ {{ 0, 0, 0, 0, 0, 0, 32, 0,}},
261
+ {{ 0, 0, 0, 0, 0, 0, 32, 0,}},
262
+ {{ 0, 0, 0, 0, 0, 0, 0, 32,}},
263
+ {{ 0, 0, 0, 0, 0, 0, 0, 32,}},
264
+ {{ 0, 0, 0, 0, 0, 0, 32, 32,}},
265
+ {{ 0, 0, 0, 0, 0, 0, 32, 32,}},
266
+ {{ 0, 0, 0, 0, 0, 0, 4, 0,}},
267
+ {{ 0, 0, 0, 0, 0, 0, 4, 0,}},
268
+ {{ 0, 0, 0, 0, 0, 0, 36, 0,}},
269
+ {{ 0, 0, 0, 0, 0, 0, 36, 0,}},
270
+ {{ 0, 0, 0, 0, 0, 0, 4, 32,}},
271
+ {{ 0, 0, 0, 0, 0, 0, 4, 32,}},
272
+ {{ 0, 0, 0, 0, 0, 0, 36, 32,}},
273
+ {{ 0, 0, 0, 0, 0, 0, 36, 32,}},
274
+ },
275
+ {
276
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
277
+ {{ 32, 0, 0, 0, 0, 0, 0, 0,}},
278
+ {{ 0, 0, 0, 4, 0, 0, 0, 0,}},
279
+ {{ 32, 0, 0, 4, 0, 0, 0, 0,}},
280
+ {{ 0, 0,128, 0, 0, 0, 0, 0,}},
281
+ {{ 32, 0,128, 0, 0, 0, 0, 0,}},
282
+ {{ 0, 0,128, 4, 0, 0, 0, 0,}},
283
+ {{ 32, 0,128, 4, 0, 0, 0, 0,}},
284
+ {{ 0, 8, 0, 0, 0, 0, 0, 0,}},
285
+ {{ 32, 8, 0, 0, 0, 0, 0, 0,}},
286
+ {{ 0, 8, 0, 4, 0, 0, 0, 0,}},
287
+ {{ 32, 8, 0, 4, 0, 0, 0, 0,}},
288
+ {{ 0, 8,128, 0, 0, 0, 0, 0,}},
289
+ {{ 32, 8,128, 0, 0, 0, 0, 0,}},
290
+ {{ 0, 8,128, 4, 0, 0, 0, 0,}},
291
+ {{ 32, 8,128, 4, 0, 0, 0, 0,}},
292
+ },
293
+ };
294
+
295
+ /* Subsequent key schedule rotation permutations */
296
+ static const C_block PC2ROT[2][64/CHUNKBITS][1<<CHUNKBITS] = {
297
+ {
298
+ {
299
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
300
+ {{ 0, 0,128, 0, 0, 0, 0, 0,}},
301
+ {{ 8, 0, 0, 0, 0, 0, 0, 0,}},
302
+ {{ 8, 0,128, 0, 0, 0, 0, 0,}},
303
+ {{ 0, 0, 0, 64, 0, 0, 0, 0,}},
304
+ {{ 0, 0,128, 64, 0, 0, 0, 0,}},
305
+ {{ 8, 0, 0, 64, 0, 0, 0, 0,}},
306
+ {{ 8, 0,128, 64, 0, 0, 0, 0,}},
307
+ {{ 0, 0, 0, 4, 0, 0, 0, 0,}},
308
+ {{ 0, 0,128, 4, 0, 0, 0, 0,}},
309
+ {{ 8, 0, 0, 4, 0, 0, 0, 0,}},
310
+ {{ 8, 0,128, 4, 0, 0, 0, 0,}},
311
+ {{ 0, 0, 0, 68, 0, 0, 0, 0,}},
312
+ {{ 0, 0,128, 68, 0, 0, 0, 0,}},
313
+ {{ 8, 0, 0, 68, 0, 0, 0, 0,}},
314
+ {{ 8, 0,128, 68, 0, 0, 0, 0,}},
315
+ },
316
+ {
317
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
318
+ {{ 0,128, 0, 0, 0, 0, 0, 0,}},
319
+ {{ 0, 0, 4, 0, 0, 0, 0, 0,}},
320
+ {{ 0,128, 4, 0, 0, 0, 0, 0,}},
321
+ {{ 0, 8, 0, 0, 0, 0, 0, 0,}},
322
+ {{ 0,136, 0, 0, 0, 0, 0, 0,}},
323
+ {{ 0, 8, 4, 0, 0, 0, 0, 0,}},
324
+ {{ 0,136, 4, 0, 0, 0, 0, 0,}},
325
+ {{ 0, 0, 32, 0, 0, 0, 0, 0,}},
326
+ {{ 0,128, 32, 0, 0, 0, 0, 0,}},
327
+ {{ 0, 0, 36, 0, 0, 0, 0, 0,}},
328
+ {{ 0,128, 36, 0, 0, 0, 0, 0,}},
329
+ {{ 0, 8, 32, 0, 0, 0, 0, 0,}},
330
+ {{ 0,136, 32, 0, 0, 0, 0, 0,}},
331
+ {{ 0, 8, 36, 0, 0, 0, 0, 0,}},
332
+ {{ 0,136, 36, 0, 0, 0, 0, 0,}},
333
+ },
334
+ {
335
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
336
+ {{ 0, 64, 0, 0, 0, 0, 0, 0,}},
337
+ {{ 32, 0, 0, 0, 0, 0, 0, 0,}},
338
+ {{ 32, 64, 0, 0, 0, 0, 0, 0,}},
339
+ {{ 0, 0, 0,128, 0, 0, 0, 0,}},
340
+ {{ 0, 64, 0,128, 0, 0, 0, 0,}},
341
+ {{ 32, 0, 0,128, 0, 0, 0, 0,}},
342
+ {{ 32, 64, 0,128, 0, 0, 0, 0,}},
343
+ {{ 0, 0, 0, 16, 0, 0, 0, 0,}},
344
+ {{ 0, 64, 0, 16, 0, 0, 0, 0,}},
345
+ {{ 32, 0, 0, 16, 0, 0, 0, 0,}},
346
+ {{ 32, 64, 0, 16, 0, 0, 0, 0,}},
347
+ {{ 0, 0, 0,144, 0, 0, 0, 0,}},
348
+ {{ 0, 64, 0,144, 0, 0, 0, 0,}},
349
+ {{ 32, 0, 0,144, 0, 0, 0, 0,}},
350
+ {{ 32, 64, 0,144, 0, 0, 0, 0,}},
351
+ },
352
+ {
353
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
354
+ {{ 4, 0, 0, 0, 0, 0, 0, 0,}},
355
+ {{128, 0, 0, 0, 0, 0, 0, 0,}},
356
+ {{132, 0, 0, 0, 0, 0, 0, 0,}},
357
+ {{ 0, 0, 0, 32, 0, 0, 0, 0,}},
358
+ {{ 4, 0, 0, 32, 0, 0, 0, 0,}},
359
+ {{128, 0, 0, 32, 0, 0, 0, 0,}},
360
+ {{132, 0, 0, 32, 0, 0, 0, 0,}},
361
+ {{ 1, 0, 0, 0, 0, 0, 0, 0,}},
362
+ {{ 5, 0, 0, 0, 0, 0, 0, 0,}},
363
+ {{129, 0, 0, 0, 0, 0, 0, 0,}},
364
+ {{133, 0, 0, 0, 0, 0, 0, 0,}},
365
+ {{ 1, 0, 0, 32, 0, 0, 0, 0,}},
366
+ {{ 5, 0, 0, 32, 0, 0, 0, 0,}},
367
+ {{129, 0, 0, 32, 0, 0, 0, 0,}},
368
+ {{133, 0, 0, 32, 0, 0, 0, 0,}},
369
+ },
370
+ {
371
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
372
+ {{ 0, 0, 0, 0, 0, 0, 64, 0,}},
373
+ {{ 0, 0, 0, 0, 32, 0, 0, 0,}},
374
+ {{ 0, 0, 0, 0, 32, 0, 64, 0,}},
375
+ {{ 0, 1, 0, 0, 0, 0, 0, 0,}},
376
+ {{ 0, 1, 0, 0, 0, 0, 64, 0,}},
377
+ {{ 0, 1, 0, 0, 32, 0, 0, 0,}},
378
+ {{ 0, 1, 0, 0, 32, 0, 64, 0,}},
379
+ {{ 2, 0, 0, 0, 0, 0, 0, 0,}},
380
+ {{ 2, 0, 0, 0, 0, 0, 64, 0,}},
381
+ {{ 2, 0, 0, 0, 32, 0, 0, 0,}},
382
+ {{ 2, 0, 0, 0, 32, 0, 64, 0,}},
383
+ {{ 2, 1, 0, 0, 0, 0, 0, 0,}},
384
+ {{ 2, 1, 0, 0, 0, 0, 64, 0,}},
385
+ {{ 2, 1, 0, 0, 32, 0, 0, 0,}},
386
+ {{ 2, 1, 0, 0, 32, 0, 64, 0,}},
387
+ },
388
+ {
389
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
390
+ {{ 16, 0, 0, 0, 0, 0, 0, 0,}},
391
+ {{ 0, 4, 0, 0, 0, 0, 0, 0,}},
392
+ {{ 16, 4, 0, 0, 0, 0, 0, 0,}},
393
+ {{ 0, 2, 0, 0, 0, 0, 0, 0,}},
394
+ {{ 16, 2, 0, 0, 0, 0, 0, 0,}},
395
+ {{ 0, 6, 0, 0, 0, 0, 0, 0,}},
396
+ {{ 16, 6, 0, 0, 0, 0, 0, 0,}},
397
+ {{ 0, 0, 0, 8, 0, 0, 0, 0,}},
398
+ {{ 16, 0, 0, 8, 0, 0, 0, 0,}},
399
+ {{ 0, 4, 0, 8, 0, 0, 0, 0,}},
400
+ {{ 16, 4, 0, 8, 0, 0, 0, 0,}},
401
+ {{ 0, 2, 0, 8, 0, 0, 0, 0,}},
402
+ {{ 16, 2, 0, 8, 0, 0, 0, 0,}},
403
+ {{ 0, 6, 0, 8, 0, 0, 0, 0,}},
404
+ {{ 16, 6, 0, 8, 0, 0, 0, 0,}},
405
+ },
406
+ {
407
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
408
+ {{ 0, 0, 0, 0, 0, 0, 0, 8,}},
409
+ {{ 0, 0, 0, 0, 0, 0,128, 0,}},
410
+ {{ 0, 0, 0, 0, 0, 0,128, 8,}},
411
+ {{ 0, 16, 0, 0, 0, 0, 0, 0,}},
412
+ {{ 0, 16, 0, 0, 0, 0, 0, 8,}},
413
+ {{ 0, 16, 0, 0, 0, 0,128, 0,}},
414
+ {{ 0, 16, 0, 0, 0, 0,128, 8,}},
415
+ {{ 0, 32, 0, 0, 0, 0, 0, 0,}},
416
+ {{ 0, 32, 0, 0, 0, 0, 0, 8,}},
417
+ {{ 0, 32, 0, 0, 0, 0,128, 0,}},
418
+ {{ 0, 32, 0, 0, 0, 0,128, 8,}},
419
+ {{ 0, 48, 0, 0, 0, 0, 0, 0,}},
420
+ {{ 0, 48, 0, 0, 0, 0, 0, 8,}},
421
+ {{ 0, 48, 0, 0, 0, 0,128, 0,}},
422
+ {{ 0, 48, 0, 0, 0, 0,128, 8,}},
423
+ },
424
+ {
425
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
426
+ {{ 0, 0, 64, 0, 0, 0, 0, 0,}},
427
+ {{ 0, 0, 8, 0, 0, 0, 0, 0,}},
428
+ {{ 0, 0, 72, 0, 0, 0, 0, 0,}},
429
+ {{ 0, 0, 16, 0, 0, 0, 0, 0,}},
430
+ {{ 0, 0, 80, 0, 0, 0, 0, 0,}},
431
+ {{ 0, 0, 24, 0, 0, 0, 0, 0,}},
432
+ {{ 0, 0, 88, 0, 0, 0, 0, 0,}},
433
+ {{ 64, 0, 0, 0, 0, 0, 0, 0,}},
434
+ {{ 64, 0, 64, 0, 0, 0, 0, 0,}},
435
+ {{ 64, 0, 8, 0, 0, 0, 0, 0,}},
436
+ {{ 64, 0, 72, 0, 0, 0, 0, 0,}},
437
+ {{ 64, 0, 16, 0, 0, 0, 0, 0,}},
438
+ {{ 64, 0, 80, 0, 0, 0, 0, 0,}},
439
+ {{ 64, 0, 24, 0, 0, 0, 0, 0,}},
440
+ {{ 64, 0, 88, 0, 0, 0, 0, 0,}},
441
+ },
442
+ {
443
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
444
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
445
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
446
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
447
+ {{ 0, 0, 0, 0, 0, 8, 0, 0,}},
448
+ {{ 0, 0, 0, 0, 0, 8, 0, 0,}},
449
+ {{ 0, 0, 0, 0, 0, 8, 0, 0,}},
450
+ {{ 0, 0, 0, 0, 0, 8, 0, 0,}},
451
+ {{ 0, 0, 0, 0, 0, 16, 0, 0,}},
452
+ {{ 0, 0, 0, 0, 0, 16, 0, 0,}},
453
+ {{ 0, 0, 0, 0, 0, 16, 0, 0,}},
454
+ {{ 0, 0, 0, 0, 0, 16, 0, 0,}},
455
+ {{ 0, 0, 0, 0, 0, 24, 0, 0,}},
456
+ {{ 0, 0, 0, 0, 0, 24, 0, 0,}},
457
+ {{ 0, 0, 0, 0, 0, 24, 0, 0,}},
458
+ {{ 0, 0, 0, 0, 0, 24, 0, 0,}},
459
+ },
460
+ {
461
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
462
+ {{ 0, 0, 0, 0, 0, 4, 0, 0,}},
463
+ {{ 0, 0, 0, 0, 0, 0, 0, 32,}},
464
+ {{ 0, 0, 0, 0, 0, 4, 0, 32,}},
465
+ {{ 0, 0, 0, 0, 0, 0, 0, 4,}},
466
+ {{ 0, 0, 0, 0, 0, 4, 0, 4,}},
467
+ {{ 0, 0, 0, 0, 0, 0, 0, 36,}},
468
+ {{ 0, 0, 0, 0, 0, 4, 0, 36,}},
469
+ {{ 0, 0, 0, 2, 0, 0, 0, 0,}},
470
+ {{ 0, 0, 0, 2, 0, 4, 0, 0,}},
471
+ {{ 0, 0, 0, 2, 0, 0, 0, 32,}},
472
+ {{ 0, 0, 0, 2, 0, 4, 0, 32,}},
473
+ {{ 0, 0, 0, 2, 0, 0, 0, 4,}},
474
+ {{ 0, 0, 0, 2, 0, 4, 0, 4,}},
475
+ {{ 0, 0, 0, 2, 0, 0, 0, 36,}},
476
+ {{ 0, 0, 0, 2, 0, 4, 0, 36,}},
477
+ },
478
+ {
479
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
480
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
481
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
482
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
483
+ {{ 0, 0, 0, 0, 0, 0, 0, 64,}},
484
+ {{ 0, 0, 0, 0, 0, 0, 0, 64,}},
485
+ {{ 0, 0, 0, 0, 0, 0, 0, 64,}},
486
+ {{ 0, 0, 0, 0, 0, 0, 0, 64,}},
487
+ {{ 0, 0, 0, 0, 0, 0, 16, 0,}},
488
+ {{ 0, 0, 0, 0, 0, 0, 16, 0,}},
489
+ {{ 0, 0, 0, 0, 0, 0, 16, 0,}},
490
+ {{ 0, 0, 0, 0, 0, 0, 16, 0,}},
491
+ {{ 0, 0, 0, 0, 0, 0, 16, 64,}},
492
+ {{ 0, 0, 0, 0, 0, 0, 16, 64,}},
493
+ {{ 0, 0, 0, 0, 0, 0, 16, 64,}},
494
+ {{ 0, 0, 0, 0, 0, 0, 16, 64,}},
495
+ },
496
+ {
497
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
498
+ {{ 0, 0, 0, 0, 0, 0, 0, 16,}},
499
+ {{ 0, 0, 0, 0, 0, 0, 4, 0,}},
500
+ {{ 0, 0, 0, 0, 0, 0, 4, 16,}},
501
+ {{ 0, 0, 0, 0, 0, 0, 0,128,}},
502
+ {{ 0, 0, 0, 0, 0, 0, 0,144,}},
503
+ {{ 0, 0, 0, 0, 0, 0, 4,128,}},
504
+ {{ 0, 0, 0, 0, 0, 0, 4,144,}},
505
+ {{ 0, 0, 0, 0, 64, 0, 0, 0,}},
506
+ {{ 0, 0, 0, 0, 64, 0, 0, 16,}},
507
+ {{ 0, 0, 0, 0, 64, 0, 4, 0,}},
508
+ {{ 0, 0, 0, 0, 64, 0, 4, 16,}},
509
+ {{ 0, 0, 0, 0, 64, 0, 0,128,}},
510
+ {{ 0, 0, 0, 0, 64, 0, 0,144,}},
511
+ {{ 0, 0, 0, 0, 64, 0, 4,128,}},
512
+ {{ 0, 0, 0, 0, 64, 0, 4,144,}},
513
+ },
514
+ {
515
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
516
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
517
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
518
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
519
+ {{ 0, 0, 0, 1, 0, 0, 0, 0,}},
520
+ {{ 0, 0, 0, 1, 0, 0, 0, 0,}},
521
+ {{ 0, 0, 0, 1, 0, 0, 0, 0,}},
522
+ {{ 0, 0, 0, 1, 0, 0, 0, 0,}},
523
+ {{ 0, 0, 0, 0, 0,128, 0, 0,}},
524
+ {{ 0, 0, 0, 0, 0,128, 0, 0,}},
525
+ {{ 0, 0, 0, 0, 0,128, 0, 0,}},
526
+ {{ 0, 0, 0, 0, 0,128, 0, 0,}},
527
+ {{ 0, 0, 0, 1, 0,128, 0, 0,}},
528
+ {{ 0, 0, 0, 1, 0,128, 0, 0,}},
529
+ {{ 0, 0, 0, 1, 0,128, 0, 0,}},
530
+ {{ 0, 0, 0, 1, 0,128, 0, 0,}},
531
+ },
532
+ {
533
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
534
+ {{ 0, 0, 2, 0, 0, 0, 0, 0,}},
535
+ {{ 0, 0, 0, 0,128, 0, 0, 0,}},
536
+ {{ 0, 0, 2, 0,128, 0, 0, 0,}},
537
+ {{ 0, 0, 0, 0, 0, 64, 0, 0,}},
538
+ {{ 0, 0, 2, 0, 0, 64, 0, 0,}},
539
+ {{ 0, 0, 0, 0,128, 64, 0, 0,}},
540
+ {{ 0, 0, 2, 0,128, 64, 0, 0,}},
541
+ {{ 0, 0, 0, 0, 8, 0, 0, 0,}},
542
+ {{ 0, 0, 2, 0, 8, 0, 0, 0,}},
543
+ {{ 0, 0, 0, 0,136, 0, 0, 0,}},
544
+ {{ 0, 0, 2, 0,136, 0, 0, 0,}},
545
+ {{ 0, 0, 0, 0, 8, 64, 0, 0,}},
546
+ {{ 0, 0, 2, 0, 8, 64, 0, 0,}},
547
+ {{ 0, 0, 0, 0,136, 64, 0, 0,}},
548
+ {{ 0, 0, 2, 0,136, 64, 0, 0,}},
549
+ },
550
+ {
551
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
552
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
553
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
554
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
555
+ {{ 0, 0, 0, 0, 0, 32, 0, 0,}},
556
+ {{ 0, 0, 0, 0, 0, 32, 0, 0,}},
557
+ {{ 0, 0, 0, 0, 0, 32, 0, 0,}},
558
+ {{ 0, 0, 0, 0, 0, 32, 0, 0,}},
559
+ {{ 0, 0, 0, 0, 4, 0, 0, 0,}},
560
+ {{ 0, 0, 0, 0, 4, 0, 0, 0,}},
561
+ {{ 0, 0, 0, 0, 4, 0, 0, 0,}},
562
+ {{ 0, 0, 0, 0, 4, 0, 0, 0,}},
563
+ {{ 0, 0, 0, 0, 4, 32, 0, 0,}},
564
+ {{ 0, 0, 0, 0, 4, 32, 0, 0,}},
565
+ {{ 0, 0, 0, 0, 4, 32, 0, 0,}},
566
+ {{ 0, 0, 0, 0, 4, 32, 0, 0,}},
567
+ },
568
+ {
569
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
570
+ {{ 0, 0, 0, 0, 0, 0, 8, 0,}},
571
+ {{ 0, 0, 1, 0, 0, 0, 0, 0,}},
572
+ {{ 0, 0, 1, 0, 0, 0, 8, 0,}},
573
+ {{ 0, 0, 0, 0, 0, 0, 32, 0,}},
574
+ {{ 0, 0, 0, 0, 0, 0, 40, 0,}},
575
+ {{ 0, 0, 1, 0, 0, 0, 32, 0,}},
576
+ {{ 0, 0, 1, 0, 0, 0, 40, 0,}},
577
+ {{ 0, 0, 0, 0, 16, 0, 0, 0,}},
578
+ {{ 0, 0, 0, 0, 16, 0, 8, 0,}},
579
+ {{ 0, 0, 1, 0, 16, 0, 0, 0,}},
580
+ {{ 0, 0, 1, 0, 16, 0, 8, 0,}},
581
+ {{ 0, 0, 0, 0, 16, 0, 32, 0,}},
582
+ {{ 0, 0, 0, 0, 16, 0, 40, 0,}},
583
+ {{ 0, 0, 1, 0, 16, 0, 32, 0,}},
584
+ {{ 0, 0, 1, 0, 16, 0, 40, 0,}},
585
+ },
586
+ },
587
+ {
588
+ {
589
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
590
+ {{ 0, 0, 0, 8, 0, 0, 0, 0,}},
591
+ {{ 0, 0, 0, 4, 0, 0, 0, 0,}},
592
+ {{ 0, 0, 0, 12, 0, 0, 0, 0,}},
593
+ {{ 0, 0, 16, 0, 0, 0, 0, 0,}},
594
+ {{ 0, 0, 16, 8, 0, 0, 0, 0,}},
595
+ {{ 0, 0, 16, 4, 0, 0, 0, 0,}},
596
+ {{ 0, 0, 16, 12, 0, 0, 0, 0,}},
597
+ {{ 0, 16, 0, 0, 0, 0, 0, 0,}},
598
+ {{ 0, 16, 0, 8, 0, 0, 0, 0,}},
599
+ {{ 0, 16, 0, 4, 0, 0, 0, 0,}},
600
+ {{ 0, 16, 0, 12, 0, 0, 0, 0,}},
601
+ {{ 0, 16, 16, 0, 0, 0, 0, 0,}},
602
+ {{ 0, 16, 16, 8, 0, 0, 0, 0,}},
603
+ {{ 0, 16, 16, 4, 0, 0, 0, 0,}},
604
+ {{ 0, 16, 16, 12, 0, 0, 0, 0,}},
605
+ },
606
+ {
607
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
608
+ {{ 1, 0, 0, 0, 0, 0, 0, 0,}},
609
+ {{ 0, 1, 0, 0, 0, 0, 0, 0,}},
610
+ {{ 1, 1, 0, 0, 0, 0, 0, 0,}},
611
+ {{ 0, 0, 0, 16, 0, 0, 0, 0,}},
612
+ {{ 1, 0, 0, 16, 0, 0, 0, 0,}},
613
+ {{ 0, 1, 0, 16, 0, 0, 0, 0,}},
614
+ {{ 1, 1, 0, 16, 0, 0, 0, 0,}},
615
+ {{ 0, 4, 0, 0, 0, 0, 0, 0,}},
616
+ {{ 1, 4, 0, 0, 0, 0, 0, 0,}},
617
+ {{ 0, 5, 0, 0, 0, 0, 0, 0,}},
618
+ {{ 1, 5, 0, 0, 0, 0, 0, 0,}},
619
+ {{ 0, 4, 0, 16, 0, 0, 0, 0,}},
620
+ {{ 1, 4, 0, 16, 0, 0, 0, 0,}},
621
+ {{ 0, 5, 0, 16, 0, 0, 0, 0,}},
622
+ {{ 1, 5, 0, 16, 0, 0, 0, 0,}},
623
+ },
624
+ {
625
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
626
+ {{ 0, 0, 0, 32, 0, 0, 0, 0,}},
627
+ {{ 0, 0, 4, 0, 0, 0, 0, 0,}},
628
+ {{ 0, 0, 4, 32, 0, 0, 0, 0,}},
629
+ {{ 64, 0, 0, 0, 0, 0, 0, 0,}},
630
+ {{ 64, 0, 0, 32, 0, 0, 0, 0,}},
631
+ {{ 64, 0, 4, 0, 0, 0, 0, 0,}},
632
+ {{ 64, 0, 4, 32, 0, 0, 0, 0,}},
633
+ {{ 0, 0, 64, 0, 0, 0, 0, 0,}},
634
+ {{ 0, 0, 64, 32, 0, 0, 0, 0,}},
635
+ {{ 0, 0, 68, 0, 0, 0, 0, 0,}},
636
+ {{ 0, 0, 68, 32, 0, 0, 0, 0,}},
637
+ {{ 64, 0, 64, 0, 0, 0, 0, 0,}},
638
+ {{ 64, 0, 64, 32, 0, 0, 0, 0,}},
639
+ {{ 64, 0, 68, 0, 0, 0, 0, 0,}},
640
+ {{ 64, 0, 68, 32, 0, 0, 0, 0,}},
641
+ },
642
+ {
643
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
644
+ {{ 0, 0, 0, 64, 0, 0, 0, 0,}},
645
+ {{ 0, 0, 32, 0, 0, 0, 0, 0,}},
646
+ {{ 0, 0, 32, 64, 0, 0, 0, 0,}},
647
+ {{ 0, 0, 8, 0, 0, 0, 0, 0,}},
648
+ {{ 0, 0, 8, 64, 0, 0, 0, 0,}},
649
+ {{ 0, 0, 40, 0, 0, 0, 0, 0,}},
650
+ {{ 0, 0, 40, 64, 0, 0, 0, 0,}},
651
+ {{ 0, 0,128, 0, 0, 0, 0, 0,}},
652
+ {{ 0, 0,128, 64, 0, 0, 0, 0,}},
653
+ {{ 0, 0,160, 0, 0, 0, 0, 0,}},
654
+ {{ 0, 0,160, 64, 0, 0, 0, 0,}},
655
+ {{ 0, 0,136, 0, 0, 0, 0, 0,}},
656
+ {{ 0, 0,136, 64, 0, 0, 0, 0,}},
657
+ {{ 0, 0,168, 0, 0, 0, 0, 0,}},
658
+ {{ 0, 0,168, 64, 0, 0, 0, 0,}},
659
+ },
660
+ {
661
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
662
+ {{ 0, 0, 0, 0, 0, 64, 0, 0,}},
663
+ {{ 0, 0, 0, 0, 0, 0, 0, 32,}},
664
+ {{ 0, 0, 0, 0, 0, 64, 0, 32,}},
665
+ {{ 0, 64, 0, 0, 0, 0, 0, 0,}},
666
+ {{ 0, 64, 0, 0, 0, 64, 0, 0,}},
667
+ {{ 0, 64, 0, 0, 0, 0, 0, 32,}},
668
+ {{ 0, 64, 0, 0, 0, 64, 0, 32,}},
669
+ {{ 8, 0, 0, 0, 0, 0, 0, 0,}},
670
+ {{ 8, 0, 0, 0, 0, 64, 0, 0,}},
671
+ {{ 8, 0, 0, 0, 0, 0, 0, 32,}},
672
+ {{ 8, 0, 0, 0, 0, 64, 0, 32,}},
673
+ {{ 8, 64, 0, 0, 0, 0, 0, 0,}},
674
+ {{ 8, 64, 0, 0, 0, 64, 0, 0,}},
675
+ {{ 8, 64, 0, 0, 0, 0, 0, 32,}},
676
+ {{ 8, 64, 0, 0, 0, 64, 0, 32,}},
677
+ },
678
+ {
679
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
680
+ {{ 0,128, 0, 0, 0, 0, 0, 0,}},
681
+ {{ 0, 0, 0,128, 0, 0, 0, 0,}},
682
+ {{ 0,128, 0,128, 0, 0, 0, 0,}},
683
+ {{ 32, 0, 0, 0, 0, 0, 0, 0,}},
684
+ {{ 32,128, 0, 0, 0, 0, 0, 0,}},
685
+ {{ 32, 0, 0,128, 0, 0, 0, 0,}},
686
+ {{ 32,128, 0,128, 0, 0, 0, 0,}},
687
+ {{ 0, 32, 0, 0, 0, 0, 0, 0,}},
688
+ {{ 0,160, 0, 0, 0, 0, 0, 0,}},
689
+ {{ 0, 32, 0,128, 0, 0, 0, 0,}},
690
+ {{ 0,160, 0,128, 0, 0, 0, 0,}},
691
+ {{ 32, 32, 0, 0, 0, 0, 0, 0,}},
692
+ {{ 32,160, 0, 0, 0, 0, 0, 0,}},
693
+ {{ 32, 32, 0,128, 0, 0, 0, 0,}},
694
+ {{ 32,160, 0,128, 0, 0, 0, 0,}},
695
+ },
696
+ {
697
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
698
+ {{ 0, 0, 0, 0, 4, 0, 0, 0,}},
699
+ {{ 0, 0, 0, 0, 8, 0, 0, 0,}},
700
+ {{ 0, 0, 0, 0, 12, 0, 0, 0,}},
701
+ {{ 4, 0, 0, 0, 0, 0, 0, 0,}},
702
+ {{ 4, 0, 0, 0, 4, 0, 0, 0,}},
703
+ {{ 4, 0, 0, 0, 8, 0, 0, 0,}},
704
+ {{ 4, 0, 0, 0, 12, 0, 0, 0,}},
705
+ {{128, 0, 0, 0, 0, 0, 0, 0,}},
706
+ {{128, 0, 0, 0, 4, 0, 0, 0,}},
707
+ {{128, 0, 0, 0, 8, 0, 0, 0,}},
708
+ {{128, 0, 0, 0, 12, 0, 0, 0,}},
709
+ {{132, 0, 0, 0, 0, 0, 0, 0,}},
710
+ {{132, 0, 0, 0, 4, 0, 0, 0,}},
711
+ {{132, 0, 0, 0, 8, 0, 0, 0,}},
712
+ {{132, 0, 0, 0, 12, 0, 0, 0,}},
713
+ },
714
+ {
715
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
716
+ {{ 0, 2, 0, 0, 0, 0, 0, 0,}},
717
+ {{ 2, 0, 0, 0, 0, 0, 0, 0,}},
718
+ {{ 2, 2, 0, 0, 0, 0, 0, 0,}},
719
+ {{ 16, 0, 0, 0, 0, 0, 0, 0,}},
720
+ {{ 16, 2, 0, 0, 0, 0, 0, 0,}},
721
+ {{ 18, 0, 0, 0, 0, 0, 0, 0,}},
722
+ {{ 18, 2, 0, 0, 0, 0, 0, 0,}},
723
+ {{ 0, 8, 0, 0, 0, 0, 0, 0,}},
724
+ {{ 0, 10, 0, 0, 0, 0, 0, 0,}},
725
+ {{ 2, 8, 0, 0, 0, 0, 0, 0,}},
726
+ {{ 2, 10, 0, 0, 0, 0, 0, 0,}},
727
+ {{ 16, 8, 0, 0, 0, 0, 0, 0,}},
728
+ {{ 16, 10, 0, 0, 0, 0, 0, 0,}},
729
+ {{ 18, 8, 0, 0, 0, 0, 0, 0,}},
730
+ {{ 18, 10, 0, 0, 0, 0, 0, 0,}},
731
+ },
732
+ {
733
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
734
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
735
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
736
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
737
+ {{ 0, 0, 0, 0, 0, 0, 16, 0,}},
738
+ {{ 0, 0, 0, 0, 0, 0, 16, 0,}},
739
+ {{ 0, 0, 0, 0, 0, 0, 16, 0,}},
740
+ {{ 0, 0, 0, 0, 0, 0, 16, 0,}},
741
+ {{ 0, 0, 0, 0, 0, 0, 0, 16,}},
742
+ {{ 0, 0, 0, 0, 0, 0, 0, 16,}},
743
+ {{ 0, 0, 0, 0, 0, 0, 0, 16,}},
744
+ {{ 0, 0, 0, 0, 0, 0, 0, 16,}},
745
+ {{ 0, 0, 0, 0, 0, 0, 16, 16,}},
746
+ {{ 0, 0, 0, 0, 0, 0, 16, 16,}},
747
+ {{ 0, 0, 0, 0, 0, 0, 16, 16,}},
748
+ {{ 0, 0, 0, 0, 0, 0, 16, 16,}},
749
+ },
750
+ {
751
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
752
+ {{ 0, 0, 0, 0, 0, 0, 0, 64,}},
753
+ {{ 0, 0, 1, 0, 0, 0, 0, 0,}},
754
+ {{ 0, 0, 1, 0, 0, 0, 0, 64,}},
755
+ {{ 0, 0, 0, 0, 0, 32, 0, 0,}},
756
+ {{ 0, 0, 0, 0, 0, 32, 0, 64,}},
757
+ {{ 0, 0, 1, 0, 0, 32, 0, 0,}},
758
+ {{ 0, 0, 1, 0, 0, 32, 0, 64,}},
759
+ {{ 0, 0, 0, 0, 0, 0,128, 0,}},
760
+ {{ 0, 0, 0, 0, 0, 0,128, 64,}},
761
+ {{ 0, 0, 1, 0, 0, 0,128, 0,}},
762
+ {{ 0, 0, 1, 0, 0, 0,128, 64,}},
763
+ {{ 0, 0, 0, 0, 0, 32,128, 0,}},
764
+ {{ 0, 0, 0, 0, 0, 32,128, 64,}},
765
+ {{ 0, 0, 1, 0, 0, 32,128, 0,}},
766
+ {{ 0, 0, 1, 0, 0, 32,128, 64,}},
767
+ },
768
+ {
769
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
770
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
771
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
772
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
773
+ {{ 0, 0, 0, 0, 0, 0, 32, 0,}},
774
+ {{ 0, 0, 0, 0, 0, 0, 32, 0,}},
775
+ {{ 0, 0, 0, 0, 0, 0, 32, 0,}},
776
+ {{ 0, 0, 0, 0, 0, 0, 32, 0,}},
777
+ {{ 0, 0, 2, 0, 0, 0, 0, 0,}},
778
+ {{ 0, 0, 2, 0, 0, 0, 0, 0,}},
779
+ {{ 0, 0, 2, 0, 0, 0, 0, 0,}},
780
+ {{ 0, 0, 2, 0, 0, 0, 0, 0,}},
781
+ {{ 0, 0, 2, 0, 0, 0, 32, 0,}},
782
+ {{ 0, 0, 2, 0, 0, 0, 32, 0,}},
783
+ {{ 0, 0, 2, 0, 0, 0, 32, 0,}},
784
+ {{ 0, 0, 2, 0, 0, 0, 32, 0,}},
785
+ },
786
+ {
787
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
788
+ {{ 0, 0, 0, 0, 0, 0, 8, 0,}},
789
+ {{ 0, 0, 0, 1, 0, 0, 0, 0,}},
790
+ {{ 0, 0, 0, 1, 0, 0, 8, 0,}},
791
+ {{ 0, 0, 0, 0, 16, 0, 0, 0,}},
792
+ {{ 0, 0, 0, 0, 16, 0, 8, 0,}},
793
+ {{ 0, 0, 0, 1, 16, 0, 0, 0,}},
794
+ {{ 0, 0, 0, 1, 16, 0, 8, 0,}},
795
+ {{ 0, 0, 0, 0, 0, 0, 0, 4,}},
796
+ {{ 0, 0, 0, 0, 0, 0, 8, 4,}},
797
+ {{ 0, 0, 0, 1, 0, 0, 0, 4,}},
798
+ {{ 0, 0, 0, 1, 0, 0, 8, 4,}},
799
+ {{ 0, 0, 0, 0, 16, 0, 0, 4,}},
800
+ {{ 0, 0, 0, 0, 16, 0, 8, 4,}},
801
+ {{ 0, 0, 0, 1, 16, 0, 0, 4,}},
802
+ {{ 0, 0, 0, 1, 16, 0, 8, 4,}},
803
+ },
804
+ {
805
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
806
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
807
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
808
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
809
+ {{ 0, 0, 0, 0, 0, 0, 0, 8,}},
810
+ {{ 0, 0, 0, 0, 0, 0, 0, 8,}},
811
+ {{ 0, 0, 0, 0, 0, 0, 0, 8,}},
812
+ {{ 0, 0, 0, 0, 0, 0, 0, 8,}},
813
+ {{ 0, 0, 0, 0, 64, 0, 0, 0,}},
814
+ {{ 0, 0, 0, 0, 64, 0, 0, 0,}},
815
+ {{ 0, 0, 0, 0, 64, 0, 0, 0,}},
816
+ {{ 0, 0, 0, 0, 64, 0, 0, 0,}},
817
+ {{ 0, 0, 0, 0, 64, 0, 0, 8,}},
818
+ {{ 0, 0, 0, 0, 64, 0, 0, 8,}},
819
+ {{ 0, 0, 0, 0, 64, 0, 0, 8,}},
820
+ {{ 0, 0, 0, 0, 64, 0, 0, 8,}},
821
+ },
822
+ {
823
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
824
+ {{ 0, 0, 0, 0, 32, 0, 0, 0,}},
825
+ {{ 0, 0, 0, 2, 0, 0, 0, 0,}},
826
+ {{ 0, 0, 0, 2, 32, 0, 0, 0,}},
827
+ {{ 0, 0, 0, 0, 0, 0, 0,128,}},
828
+ {{ 0, 0, 0, 0, 32, 0, 0,128,}},
829
+ {{ 0, 0, 0, 2, 0, 0, 0,128,}},
830
+ {{ 0, 0, 0, 2, 32, 0, 0,128,}},
831
+ {{ 0, 0, 0, 0, 0, 16, 0, 0,}},
832
+ {{ 0, 0, 0, 0, 32, 16, 0, 0,}},
833
+ {{ 0, 0, 0, 2, 0, 16, 0, 0,}},
834
+ {{ 0, 0, 0, 2, 32, 16, 0, 0,}},
835
+ {{ 0, 0, 0, 0, 0, 16, 0,128,}},
836
+ {{ 0, 0, 0, 0, 32, 16, 0,128,}},
837
+ {{ 0, 0, 0, 2, 0, 16, 0,128,}},
838
+ {{ 0, 0, 0, 2, 32, 16, 0,128,}},
839
+ },
840
+ {
841
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
842
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
843
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
844
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
845
+ {{ 0, 0, 0, 0, 0, 0, 4, 0,}},
846
+ {{ 0, 0, 0, 0, 0, 0, 4, 0,}},
847
+ {{ 0, 0, 0, 0, 0, 0, 4, 0,}},
848
+ {{ 0, 0, 0, 0, 0, 0, 4, 0,}},
849
+ {{ 0, 0, 0, 0, 0, 8, 0, 0,}},
850
+ {{ 0, 0, 0, 0, 0, 8, 0, 0,}},
851
+ {{ 0, 0, 0, 0, 0, 8, 0, 0,}},
852
+ {{ 0, 0, 0, 0, 0, 8, 0, 0,}},
853
+ {{ 0, 0, 0, 0, 0, 8, 4, 0,}},
854
+ {{ 0, 0, 0, 0, 0, 8, 4, 0,}},
855
+ {{ 0, 0, 0, 0, 0, 8, 4, 0,}},
856
+ {{ 0, 0, 0, 0, 0, 8, 4, 0,}},
857
+ },
858
+ {
859
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
860
+ {{ 0, 0, 0, 0, 0,128, 0, 0,}},
861
+ {{ 0, 0, 0, 0, 0, 0, 64, 0,}},
862
+ {{ 0, 0, 0, 0, 0,128, 64, 0,}},
863
+ {{ 0, 0, 0, 0,128, 0, 0, 0,}},
864
+ {{ 0, 0, 0, 0,128,128, 0, 0,}},
865
+ {{ 0, 0, 0, 0,128, 0, 64, 0,}},
866
+ {{ 0, 0, 0, 0,128,128, 64, 0,}},
867
+ {{ 0, 0, 0, 0, 0, 4, 0, 0,}},
868
+ {{ 0, 0, 0, 0, 0,132, 0, 0,}},
869
+ {{ 0, 0, 0, 0, 0, 4, 64, 0,}},
870
+ {{ 0, 0, 0, 0, 0,132, 64, 0,}},
871
+ {{ 0, 0, 0, 0,128, 4, 0, 0,}},
872
+ {{ 0, 0, 0, 0,128,132, 0, 0,}},
873
+ {{ 0, 0, 0, 0,128, 4, 64, 0,}},
874
+ {{ 0, 0, 0, 0,128,132, 64, 0,}},
875
+ },
876
+ },
877
+ };
878
+
879
+ /* Initial permutation/expansion table */
880
+ static const C_block IE3264[32/CHUNKBITS][1<<CHUNKBITS] = {
881
+ {
882
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
883
+ {{ 0, 0, 0, 0, 0, 0, 64, 4,}},
884
+ {{ 4, 0, 0, 0, 0, 0, 0, 64,}},
885
+ {{ 4, 0, 0, 0, 0, 0, 64, 68,}},
886
+ {{ 0, 0, 0, 0, 64, 4, 0, 0,}},
887
+ {{ 0, 0, 0, 0, 64, 4, 64, 4,}},
888
+ {{ 4, 0, 0, 0, 64, 4, 0, 64,}},
889
+ {{ 4, 0, 0, 0, 64, 4, 64, 68,}},
890
+ {{ 0, 0, 0, 0, 0, 64, 4, 0,}},
891
+ {{ 0, 0, 0, 0, 0, 64, 68, 4,}},
892
+ {{ 4, 0, 0, 0, 0, 64, 4, 64,}},
893
+ {{ 4, 0, 0, 0, 0, 64, 68, 68,}},
894
+ {{ 0, 0, 0, 0, 64, 68, 4, 0,}},
895
+ {{ 0, 0, 0, 0, 64, 68, 68, 4,}},
896
+ {{ 4, 0, 0, 0, 64, 68, 4, 64,}},
897
+ {{ 4, 0, 0, 0, 64, 68, 68, 68,}},
898
+ },
899
+ {
900
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
901
+ {{ 0, 0, 64, 4, 0, 0, 0, 0,}},
902
+ {{ 0, 0, 0, 64, 4, 0, 0, 0,}},
903
+ {{ 0, 0, 64, 68, 4, 0, 0, 0,}},
904
+ {{ 64, 4, 0, 0, 0, 0, 0, 0,}},
905
+ {{ 64, 4, 64, 4, 0, 0, 0, 0,}},
906
+ {{ 64, 4, 0, 64, 4, 0, 0, 0,}},
907
+ {{ 64, 4, 64, 68, 4, 0, 0, 0,}},
908
+ {{ 0, 64, 4, 0, 0, 0, 0, 0,}},
909
+ {{ 0, 64, 68, 4, 0, 0, 0, 0,}},
910
+ {{ 0, 64, 4, 64, 4, 0, 0, 0,}},
911
+ {{ 0, 64, 68, 68, 4, 0, 0, 0,}},
912
+ {{ 64, 68, 4, 0, 0, 0, 0, 0,}},
913
+ {{ 64, 68, 68, 4, 0, 0, 0, 0,}},
914
+ {{ 64, 68, 4, 64, 4, 0, 0, 0,}},
915
+ {{ 64, 68, 68, 68, 4, 0, 0, 0,}},
916
+ },
917
+ {
918
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
919
+ {{ 0, 0, 0, 0, 0, 0, 32, 0,}},
920
+ {{ 0, 0, 0, 0, 0, 0, 0, 32,}},
921
+ {{ 0, 0, 0, 0, 0, 0, 32, 32,}},
922
+ {{ 0, 0, 0, 0, 32, 0, 0, 0,}},
923
+ {{ 0, 0, 0, 0, 32, 0, 32, 0,}},
924
+ {{ 0, 0, 0, 0, 32, 0, 0, 32,}},
925
+ {{ 0, 0, 0, 0, 32, 0, 32, 32,}},
926
+ {{ 0, 0, 0, 0, 0, 32, 0, 0,}},
927
+ {{ 0, 0, 0, 0, 0, 32, 32, 0,}},
928
+ {{ 0, 0, 0, 0, 0, 32, 0, 32,}},
929
+ {{ 0, 0, 0, 0, 0, 32, 32, 32,}},
930
+ {{ 0, 0, 0, 0, 32, 32, 0, 0,}},
931
+ {{ 0, 0, 0, 0, 32, 32, 32, 0,}},
932
+ {{ 0, 0, 0, 0, 32, 32, 0, 32,}},
933
+ {{ 0, 0, 0, 0, 32, 32, 32, 32,}},
934
+ },
935
+ {
936
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
937
+ {{ 0, 0, 32, 0, 0, 0, 0, 0,}},
938
+ {{ 0, 0, 0, 32, 0, 0, 0, 0,}},
939
+ {{ 0, 0, 32, 32, 0, 0, 0, 0,}},
940
+ {{ 32, 0, 0, 0, 0, 0, 0, 0,}},
941
+ {{ 32, 0, 32, 0, 0, 0, 0, 0,}},
942
+ {{ 32, 0, 0, 32, 0, 0, 0, 0,}},
943
+ {{ 32, 0, 32, 32, 0, 0, 0, 0,}},
944
+ {{ 0, 32, 0, 0, 0, 0, 0, 0,}},
945
+ {{ 0, 32, 32, 0, 0, 0, 0, 0,}},
946
+ {{ 0, 32, 0, 32, 0, 0, 0, 0,}},
947
+ {{ 0, 32, 32, 32, 0, 0, 0, 0,}},
948
+ {{ 32, 32, 0, 0, 0, 0, 0, 0,}},
949
+ {{ 32, 32, 32, 0, 0, 0, 0, 0,}},
950
+ {{ 32, 32, 0, 32, 0, 0, 0, 0,}},
951
+ {{ 32, 32, 32, 32, 0, 0, 0, 0,}},
952
+ },
953
+ {
954
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
955
+ {{ 0, 0, 0, 0, 0, 0, 16, 0,}},
956
+ {{ 0, 0, 0, 0, 0, 0, 0, 16,}},
957
+ {{ 0, 0, 0, 0, 0, 0, 16, 16,}},
958
+ {{ 0, 0, 0, 0, 16, 0, 0, 0,}},
959
+ {{ 0, 0, 0, 0, 16, 0, 16, 0,}},
960
+ {{ 0, 0, 0, 0, 16, 0, 0, 16,}},
961
+ {{ 0, 0, 0, 0, 16, 0, 16, 16,}},
962
+ {{ 0, 0, 0, 0, 0, 16, 0, 0,}},
963
+ {{ 0, 0, 0, 0, 0, 16, 16, 0,}},
964
+ {{ 0, 0, 0, 0, 0, 16, 0, 16,}},
965
+ {{ 0, 0, 0, 0, 0, 16, 16, 16,}},
966
+ {{ 0, 0, 0, 0, 16, 16, 0, 0,}},
967
+ {{ 0, 0, 0, 0, 16, 16, 16, 0,}},
968
+ {{ 0, 0, 0, 0, 16, 16, 0, 16,}},
969
+ {{ 0, 0, 0, 0, 16, 16, 16, 16,}},
970
+ },
971
+ {
972
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
973
+ {{ 0, 0, 16, 0, 0, 0, 0, 0,}},
974
+ {{ 0, 0, 0, 16, 0, 0, 0, 0,}},
975
+ {{ 0, 0, 16, 16, 0, 0, 0, 0,}},
976
+ {{ 16, 0, 0, 0, 0, 0, 0, 0,}},
977
+ {{ 16, 0, 16, 0, 0, 0, 0, 0,}},
978
+ {{ 16, 0, 0, 16, 0, 0, 0, 0,}},
979
+ {{ 16, 0, 16, 16, 0, 0, 0, 0,}},
980
+ {{ 0, 16, 0, 0, 0, 0, 0, 0,}},
981
+ {{ 0, 16, 16, 0, 0, 0, 0, 0,}},
982
+ {{ 0, 16, 0, 16, 0, 0, 0, 0,}},
983
+ {{ 0, 16, 16, 16, 0, 0, 0, 0,}},
984
+ {{ 16, 16, 0, 0, 0, 0, 0, 0,}},
985
+ {{ 16, 16, 16, 0, 0, 0, 0, 0,}},
986
+ {{ 16, 16, 0, 16, 0, 0, 0, 0,}},
987
+ {{ 16, 16, 16, 16, 0, 0, 0, 0,}},
988
+ },
989
+ {
990
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
991
+ {{ 0, 0, 0, 0, 0,128, 8, 0,}},
992
+ {{ 0, 0, 0, 0, 0, 0,128, 8,}},
993
+ {{ 0, 0, 0, 0, 0,128,136, 8,}},
994
+ {{ 0, 0, 0,128, 8, 0, 0, 0,}},
995
+ {{ 0, 0, 0,128, 8,128, 8, 0,}},
996
+ {{ 0, 0, 0,128, 8, 0,128, 8,}},
997
+ {{ 0, 0, 0,128, 8,128,136, 8,}},
998
+ {{ 0, 0, 0, 0,128, 8, 0, 0,}},
999
+ {{ 0, 0, 0, 0,128,136, 8, 0,}},
1000
+ {{ 0, 0, 0, 0,128, 8,128, 8,}},
1001
+ {{ 0, 0, 0, 0,128,136,136, 8,}},
1002
+ {{ 0, 0, 0,128,136, 8, 0, 0,}},
1003
+ {{ 0, 0, 0,128,136,136, 8, 0,}},
1004
+ {{ 0, 0, 0,128,136, 8,128, 8,}},
1005
+ {{ 0, 0, 0,128,136,136,136, 8,}},
1006
+ },
1007
+ {
1008
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
1009
+ {{ 0,128, 8, 0, 0, 0, 0, 0,}},
1010
+ {{ 0, 0,128, 8, 0, 0, 0, 0,}},
1011
+ {{ 0,128,136, 8, 0, 0, 0, 0,}},
1012
+ {{ 8, 0, 0, 0, 0, 0, 0,128,}},
1013
+ {{ 8,128, 8, 0, 0, 0, 0,128,}},
1014
+ {{ 8, 0,128, 8, 0, 0, 0,128,}},
1015
+ {{ 8,128,136, 8, 0, 0, 0,128,}},
1016
+ {{128, 8, 0, 0, 0, 0, 0, 0,}},
1017
+ {{128,136, 8, 0, 0, 0, 0, 0,}},
1018
+ {{128, 8,128, 8, 0, 0, 0, 0,}},
1019
+ {{128,136,136, 8, 0, 0, 0, 0,}},
1020
+ {{136, 8, 0, 0, 0, 0, 0,128,}},
1021
+ {{136,136, 8, 0, 0, 0, 0,128,}},
1022
+ {{136, 8,128, 8, 0, 0, 0,128,}},
1023
+ {{136,136,136, 8, 0, 0, 0,128,}},
1024
+ },
1025
+ };
1026
+
1027
+ /* Table that combines the S, P, and E operations. */
1028
+ static const unsigned long SPE[2][8][64] = {
1029
+ {
1030
+ {
1031
+ 0x80088000,0x80000000, 0,0x80088000,
1032
+ 0,0x80088000,0x80000000, 0,
1033
+ 0x80088000,0x80088000,0x80000000, 0x88000,
1034
+ 0x88000, 0, 0,0x80000000,
1035
+ 0x80000000, 0, 0x88000,0x80088000,
1036
+ 0x80088000,0x80000000, 0x88000, 0x88000,
1037
+ 0, 0x88000,0x80088000,0x80000000,
1038
+ 0x88000, 0x88000,0x80000000, 0,
1039
+ 0,0x80088000, 0x88000,0x80000000,
1040
+ 0x80088000,0x80000000, 0x88000, 0x88000,
1041
+ 0x80000000, 0x88000,0x80088000, 0,
1042
+ 0x80088000, 0, 0,0x80000000,
1043
+ 0x80088000,0x80088000,0x80000000, 0x88000,
1044
+ 0, 0x88000,0x80000000, 0,
1045
+ 0x80000000, 0, 0x88000,0x80088000,
1046
+ 0,0x80000000, 0x88000,0x80088000,
1047
+ },
1048
+ {
1049
+ 0x8800010, 0, 0x8800000, 0,
1050
+ 0x10, 0x8800010, 0x8800000, 0x8800000,
1051
+ 0x8800000, 0x10, 0x10, 0x8800000,
1052
+ 0x10, 0x8800000, 0, 0x10,
1053
+ 0, 0x8800010, 0x10, 0x8800000,
1054
+ 0x8800010, 0, 0, 0x10,
1055
+ 0x8800010, 0x8800010, 0x8800000, 0x10,
1056
+ 0, 0, 0x8800010, 0x8800010,
1057
+ 0x10, 0x8800000, 0x8800000, 0x8800010,
1058
+ 0x8800010, 0x10, 0x10, 0,
1059
+ 0, 0x8800010, 0, 0x10,
1060
+ 0x8800000, 0, 0x8800010, 0x8800010,
1061
+ 0x8800000, 0x8800000, 0, 0x10,
1062
+ 0x10, 0x8800010, 0x8800000, 0,
1063
+ 0x10, 0, 0x8800010, 0x8800000,
1064
+ 0x8800010, 0x10, 0, 0x8800000,
1065
+ },
1066
+ {
1067
+ 0,0x40001000, 0x1000, 0x1000,
1068
+ 0x40000000, 0, 0x1000,0x40001000,
1069
+ 0x1000,0x40000000,0x40000000, 0,
1070
+ 0x40001000, 0x1000, 0,0x40000000,
1071
+ 0,0x40000000,0x40001000, 0x1000,
1072
+ 0x1000,0x40001000,0x40000000, 0,
1073
+ 0x40000000, 0x1000,0x40001000,0x40000000,
1074
+ 0x40001000, 0, 0,0x40001000,
1075
+ 0x40001000, 0x1000, 0,0x40000000,
1076
+ 0x1000,0x40000000,0x40000000, 0x1000,
1077
+ 0,0x40001000,0x40001000,0x40000000,
1078
+ 0x40000000, 0,0x40001000, 0,
1079
+ 0x40001000, 0, 0,0x40001000,
1080
+ 0x40000000, 0x1000, 0x1000,0x40001000,
1081
+ 0x1000, 0,0x40000000, 0x1000,
1082
+ 0,0x40001000, 0x1000,0x40000000,
1083
+ },
1084
+ {
1085
+ 0x100008, 0x100000, 0x8, 0x100008,
1086
+ 0, 0, 0x100008, 0x8,
1087
+ 0x100000, 0x8, 0, 0x100008,
1088
+ 0x8, 0x100008, 0, 0,
1089
+ 0x8, 0x100000, 0x100000, 0x8,
1090
+ 0x100000, 0x100008, 0, 0x100000,
1091
+ 0x100008, 0, 0x8, 0x100000,
1092
+ 0x100000, 0x8, 0x100008, 0,
1093
+ 0x8, 0x100008, 0, 0x8,
1094
+ 0x100000, 0x100000, 0x8, 0,
1095
+ 0x100008, 0, 0x100000, 0x8,
1096
+ 0, 0x8, 0x100000, 0x100000,
1097
+ 0, 0x100008, 0x100008, 0,
1098
+ 0x100008, 0x8, 0x100000, 0x100008,
1099
+ 0x8, 0x100000, 0, 0x100008,
1100
+ 0x100008, 0, 0x8, 0x100000,
1101
+ },
1102
+ {
1103
+ 0,0x10000000, 0x44000,0x10044020,
1104
+ 0x10000020, 0x44000,0x10044020,0x10000000,
1105
+ 0x10000000, 0x20, 0x20,0x10044000,
1106
+ 0x44020,0x10000020,0x10044000, 0,
1107
+ 0x10044000, 0,0x10000020, 0x44020,
1108
+ 0x44000,0x10044020, 0, 0x20,
1109
+ 0x20, 0x44020,0x10044020,0x10000020,
1110
+ 0x10000000, 0x44000, 0x44020,0x10044000,
1111
+ 0x10044000, 0x44020,0x10000020,0x10000000,
1112
+ 0x10000000, 0x20, 0x20, 0x44000,
1113
+ 0,0x10044000,0x10044020, 0,
1114
+ 0x10044020, 0, 0x44000,0x10000020,
1115
+ 0x44020, 0x44000, 0,0x10044020,
1116
+ 0x10000020,0x10044000, 0x44020,0x10000000,
1117
+ 0x10044000,0x10000020, 0x44000, 0x44020,
1118
+ 0x20,0x10044020,0x10000000, 0x20,
1119
+ },
1120
+ {
1121
+ 0x440, 0x440, 0, 0x200000,
1122
+ 0x440, 0x200000, 0x200440, 0,
1123
+ 0x200440, 0x200440, 0x200000, 0,
1124
+ 0x200000, 0x440, 0, 0x200440,
1125
+ 0, 0x200440, 0x440, 0,
1126
+ 0x200000, 0x440, 0x200000, 0x440,
1127
+ 0x200440, 0, 0, 0x200440,
1128
+ 0x440, 0x200000, 0x200440, 0x200000,
1129
+ 0x200440, 0, 0x200000, 0x200440,
1130
+ 0x200000, 0x440, 0, 0x200000,
1131
+ 0, 0x200000, 0x440, 0,
1132
+ 0x440, 0x200440, 0x200000, 0x440,
1133
+ 0x200440, 0x200000, 0, 0x200440,
1134
+ 0x440, 0, 0x200440, 0,
1135
+ 0x200000, 0x440, 0x200440, 0x200000,
1136
+ 0, 0x200440, 0x440, 0x440,
1137
+ },
1138
+ {
1139
+ 0x4400000, 0x2000, 0x2000, 0x4,
1140
+ 0x4402004, 0x4400004, 0x4402000, 0,
1141
+ 0, 0x2004, 0x2004, 0x4400000,
1142
+ 0x4, 0x4402000, 0x4400000, 0x2004,
1143
+ 0x2004, 0x4400000, 0x4400004, 0x4402004,
1144
+ 0, 0x2000, 0x4, 0x4402000,
1145
+ 0x4400004, 0x4402004, 0x4402000, 0x4,
1146
+ 0x4402004, 0x4400004, 0x2000, 0,
1147
+ 0x4402004, 0x4400000, 0x4400004, 0x2004,
1148
+ 0x4400000, 0x2000, 0, 0x4400004,
1149
+ 0x2004, 0x4402004, 0x4402000, 0,
1150
+ 0x2000, 0x4, 0x4, 0x2000,
1151
+ 0, 0x2004, 0x2000, 0x4402000,
1152
+ 0x2004, 0x4400000, 0x4402004, 0,
1153
+ 0x4402000, 0x4, 0x4400004, 0x4402004,
1154
+ 0x4, 0x4402000, 0x4400000, 0x4400004,
1155
+ },
1156
+ {
1157
+ 0x880,0x20000000,0x20000880, 0,
1158
+ 0x20000000, 0x880, 0,0x20000880,
1159
+ 0x880, 0,0x20000000,0x20000880,
1160
+ 0x20000880,0x20000880, 0x880, 0,
1161
+ 0x20000000,0x20000880, 0x880,0x20000000,
1162
+ 0x20000880, 0x880, 0,0x20000000,
1163
+ 0, 0,0x20000880, 0x880,
1164
+ 0,0x20000000,0x20000000, 0x880,
1165
+ 0,0x20000000, 0x880,0x20000880,
1166
+ 0x20000880, 0, 0,0x20000000,
1167
+ 0x880,0x20000880,0x20000000, 0x880,
1168
+ 0x20000000, 0x880, 0x880,0x20000000,
1169
+ 0x20000880, 0, 0, 0x880,
1170
+ 0x20000000,0x20000880,0x20000880, 0,
1171
+ 0x880,0x20000000,0x20000880, 0,
1172
+ 0, 0x880,0x20000000,0x20000880,
1173
+ },
1174
+ },
1175
+ {
1176
+ {
1177
+ 0x2008, 0x8,0x20002000,0x20002008,
1178
+ 0x2000,0x20000008,0x20000008,0x20002000,
1179
+ 0x20000008, 0x2008, 0x2008,0x20000000,
1180
+ 0x20002000, 0x2000, 0,0x20000008,
1181
+ 0x8,0x20000000, 0x2000, 0x8,
1182
+ 0x20002008, 0x2008,0x20000000, 0x2000,
1183
+ 0x20000000, 0, 0x8,0x20002008,
1184
+ 0,0x20002000,0x20002008, 0,
1185
+ 0,0x20002008, 0x2000,0x20000008,
1186
+ 0x2008, 0x8,0x20000000, 0x2000,
1187
+ 0x20002008, 0, 0x8,0x20002000,
1188
+ 0x20000008,0x20000000,0x20002000, 0x2008,
1189
+ 0x20002008, 0x8, 0x2008,0x20002000,
1190
+ 0x2000,0x20000000,0x20000008, 0,
1191
+ 0x8, 0x2000,0x20002000, 0x2008,
1192
+ 0x20000000,0x20002008, 0,0x20000008,
1193
+ },
1194
+ {
1195
+ 0x4400010, 0, 0x10, 0x4400010,
1196
+ 0x4400000, 0, 0x4400000, 0x10,
1197
+ 0, 0x4400010, 0, 0x4400000,
1198
+ 0x10, 0x4400010, 0x4400010, 0,
1199
+ 0x10, 0x4400000, 0x4400010, 0,
1200
+ 0x10, 0x4400000, 0, 0x10,
1201
+ 0x4400000, 0x10, 0x4400010, 0x4400000,
1202
+ 0x4400000, 0x10, 0, 0x4400010,
1203
+ 0x10, 0x4400010, 0x4400000, 0x10,
1204
+ 0x4400010, 0x10, 0x4400000, 0,
1205
+ 0x4400000, 0, 0x10, 0x4400010,
1206
+ 0, 0x4400000, 0x10, 0x4400000,
1207
+ 0x4400010, 0, 0, 0x4400000,
1208
+ 0, 0x4400010, 0x10, 0x4400010,
1209
+ 0x4400010, 0x10, 0, 0x4400000,
1210
+ 0x4400000, 0, 0x4400010, 0x10,
1211
+ },
1212
+ {
1213
+ 0x10044000, 0x44004, 0,0x10044000,
1214
+ 0x10000004, 0x44000,0x10044000, 0x4,
1215
+ 0x44000, 0x4, 0x44004,0x10000000,
1216
+ 0x10044004,0x10000000,0x10000000,0x10044004,
1217
+ 0,0x10000004, 0x44004, 0,
1218
+ 0x10000000,0x10044004, 0x4,0x10044000,
1219
+ 0x10044004, 0x44000,0x10000004, 0x44004,
1220
+ 0x4, 0, 0x44000,0x10000004,
1221
+ 0x44004, 0,0x10000000, 0x4,
1222
+ 0x10000000,0x10000004, 0x44004,0x10044000,
1223
+ 0, 0x44004, 0x4,0x10044004,
1224
+ 0x10000004, 0x44000,0x10044004,0x10000000,
1225
+ 0x10000004,0x10044000, 0x44000,0x10044004,
1226
+ 0x4, 0x44000,0x10044000, 0x4,
1227
+ 0x44000, 0,0x10044004,0x10000000,
1228
+ 0x10044000,0x10000004, 0, 0x44004,
1229
+ },
1230
+ {
1231
+ 0x80000440, 0x100000,0x80000000,0x80100440,
1232
+ 0, 0x100440,0x80100000,0x80000440,
1233
+ 0x100440,0x80100000, 0x100000,0x80000000,
1234
+ 0x80100000,0x80000440, 0x440, 0x100000,
1235
+ 0x80100440, 0x440, 0,0x80000000,
1236
+ 0x440,0x80100000, 0x100440, 0,
1237
+ 0x80000000, 0,0x80000440, 0x100440,
1238
+ 0x100000,0x80100440,0x80100440, 0x440,
1239
+ 0x80100440,0x80000000, 0x440,0x80100000,
1240
+ 0x440, 0x100000,0x80000000, 0x100440,
1241
+ 0x80100000, 0, 0,0x80000440,
1242
+ 0,0x80100440, 0x100440, 0,
1243
+ 0x100000,0x80100440,0x80000440, 0x440,
1244
+ 0x80100440,0x80000000, 0x100000,0x80000440,
1245
+ 0x80000440, 0x440, 0x100440,0x80100000,
1246
+ 0x80000000, 0x100000,0x80100000, 0x100440,
1247
+ },
1248
+ {
1249
+ 0x88000, 0, 0, 0x88000,
1250
+ 0x88000, 0x88000, 0, 0x88000,
1251
+ 0, 0, 0x88000, 0,
1252
+ 0x88000, 0x88000, 0x88000, 0,
1253
+ 0, 0x88000, 0, 0,
1254
+ 0x88000, 0, 0, 0x88000,
1255
+ 0, 0x88000, 0x88000, 0,
1256
+ 0x88000, 0, 0, 0x88000,
1257
+ 0x88000, 0x88000, 0, 0x88000,
1258
+ 0, 0, 0x88000, 0x88000,
1259
+ 0x88000, 0, 0x88000, 0,
1260
+ 0, 0x88000, 0, 0,
1261
+ 0x88000, 0, 0, 0x88000,
1262
+ 0x88000, 0x88000, 0, 0,
1263
+ 0, 0x88000, 0x88000, 0,
1264
+ 0, 0, 0x88000, 0x88000,
1265
+ },
1266
+ {
1267
+ 0x8800000, 0x20, 0, 0x8800020,
1268
+ 0x20, 0, 0x8800000, 0x20,
1269
+ 0, 0x8800020, 0x20, 0x8800000,
1270
+ 0x8800000, 0x8800000, 0x8800020, 0x20,
1271
+ 0x20, 0x8800000, 0x8800020, 0,
1272
+ 0, 0, 0x8800020, 0x8800020,
1273
+ 0x8800020, 0x8800020, 0x8800000, 0,
1274
+ 0, 0x20, 0x20, 0x8800000,
1275
+ 0, 0x8800000, 0x8800000, 0x20,
1276
+ 0x8800020, 0x20, 0, 0x8800000,
1277
+ 0x8800000, 0, 0x8800020, 0x20,
1278
+ 0x20, 0x8800020, 0x20, 0,
1279
+ 0x8800020, 0x20, 0x20, 0x8800000,
1280
+ 0x8800000, 0x8800020, 0x20, 0,
1281
+ 0, 0x8800000, 0x8800000, 0x8800020,
1282
+ 0x8800020, 0, 0, 0x8800020,
1283
+ },
1284
+ {
1285
+ 0, 0, 0x1000,0x40001000,
1286
+ 0x40001000,0x40000000, 0, 0,
1287
+ 0x1000,0x40001000,0x40000000, 0x1000,
1288
+ 0x40000000, 0x1000, 0x1000,0x40000000,
1289
+ 0x40001000, 0,0x40000000,0x40001000,
1290
+ 0, 0x1000,0x40001000, 0,
1291
+ 0x40001000,0x40000000, 0x1000,0x40000000,
1292
+ 0x40000000,0x40001000, 0, 0x1000,
1293
+ 0x40000000, 0x1000,0x40001000,0x40000000,
1294
+ 0, 0, 0x1000,0x40001000,
1295
+ 0x40001000,0x40000000, 0, 0,
1296
+ 0,0x40001000,0x40000000, 0x1000,
1297
+ 0,0x40001000, 0x1000, 0,
1298
+ 0x40000000, 0,0x40001000, 0x1000,
1299
+ 0x1000,0x40000000,0x40000000,0x40001000,
1300
+ 0x40001000, 0x1000, 0x1000,0x40000000,
1301
+ },
1302
+ {
1303
+ 0x200880, 0x200880, 0, 0,
1304
+ 0x200000, 0x880, 0x200880, 0x200880,
1305
+ 0, 0x200000, 0x880, 0,
1306
+ 0x880, 0x200000, 0x200000, 0x200880,
1307
+ 0, 0x880, 0x880, 0x200000,
1308
+ 0x200880, 0x200000, 0, 0x880,
1309
+ 0x200000, 0x880, 0x200000, 0x200880,
1310
+ 0x880, 0, 0x200880, 0,
1311
+ 0x880, 0, 0x200000, 0x200880,
1312
+ 0, 0x200000, 0, 0x880,
1313
+ 0x200880, 0x200000, 0x200000, 0x880,
1314
+ 0x200880, 0, 0x880, 0x200000,
1315
+ 0x200880, 0x880, 0x200880, 0x200000,
1316
+ 0x880, 0, 0x200000, 0x200880,
1317
+ 0, 0x200880, 0x880, 0,
1318
+ 0x200000, 0x200880, 0, 0x880,
1319
+ },
1320
+ },
1321
+ };
1322
+
1323
+ /* compressed/interleaved => final permutation table */
1324
+ static const C_block CF6464[64/CHUNKBITS][1<<CHUNKBITS] = {
1325
+ {
1326
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
1327
+ {{ 0, 0, 0, 0, 0, 0, 0, 64,}},
1328
+ {{ 0, 0, 0, 0, 0, 0, 64, 0,}},
1329
+ {{ 0, 0, 0, 0, 0, 0, 64, 64,}},
1330
+ {{ 0, 0, 0, 0, 0, 64, 0, 0,}},
1331
+ {{ 0, 0, 0, 0, 0, 64, 0, 64,}},
1332
+ {{ 0, 0, 0, 0, 0, 64, 64, 0,}},
1333
+ {{ 0, 0, 0, 0, 0, 64, 64, 64,}},
1334
+ {{ 0, 0, 0, 0, 64, 0, 0, 0,}},
1335
+ {{ 0, 0, 0, 0, 64, 0, 0, 64,}},
1336
+ {{ 0, 0, 0, 0, 64, 0, 64, 0,}},
1337
+ {{ 0, 0, 0, 0, 64, 0, 64, 64,}},
1338
+ {{ 0, 0, 0, 0, 64, 64, 0, 0,}},
1339
+ {{ 0, 0, 0, 0, 64, 64, 0, 64,}},
1340
+ {{ 0, 0, 0, 0, 64, 64, 64, 0,}},
1341
+ {{ 0, 0, 0, 0, 64, 64, 64, 64,}},
1342
+ },
1343
+ {
1344
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
1345
+ {{ 0, 0, 0, 0, 0, 0, 0, 4,}},
1346
+ {{ 0, 0, 0, 0, 0, 0, 4, 0,}},
1347
+ {{ 0, 0, 0, 0, 0, 0, 4, 4,}},
1348
+ {{ 0, 0, 0, 0, 0, 4, 0, 0,}},
1349
+ {{ 0, 0, 0, 0, 0, 4, 0, 4,}},
1350
+ {{ 0, 0, 0, 0, 0, 4, 4, 0,}},
1351
+ {{ 0, 0, 0, 0, 0, 4, 4, 4,}},
1352
+ {{ 0, 0, 0, 0, 4, 0, 0, 0,}},
1353
+ {{ 0, 0, 0, 0, 4, 0, 0, 4,}},
1354
+ {{ 0, 0, 0, 0, 4, 0, 4, 0,}},
1355
+ {{ 0, 0, 0, 0, 4, 0, 4, 4,}},
1356
+ {{ 0, 0, 0, 0, 4, 4, 0, 0,}},
1357
+ {{ 0, 0, 0, 0, 4, 4, 0, 4,}},
1358
+ {{ 0, 0, 0, 0, 4, 4, 4, 0,}},
1359
+ {{ 0, 0, 0, 0, 4, 4, 4, 4,}},
1360
+ },
1361
+ {
1362
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
1363
+ {{ 0, 0, 0, 64, 0, 0, 0, 0,}},
1364
+ {{ 0, 0, 64, 0, 0, 0, 0, 0,}},
1365
+ {{ 0, 0, 64, 64, 0, 0, 0, 0,}},
1366
+ {{ 0, 64, 0, 0, 0, 0, 0, 0,}},
1367
+ {{ 0, 64, 0, 64, 0, 0, 0, 0,}},
1368
+ {{ 0, 64, 64, 0, 0, 0, 0, 0,}},
1369
+ {{ 0, 64, 64, 64, 0, 0, 0, 0,}},
1370
+ {{ 64, 0, 0, 0, 0, 0, 0, 0,}},
1371
+ {{ 64, 0, 0, 64, 0, 0, 0, 0,}},
1372
+ {{ 64, 0, 64, 0, 0, 0, 0, 0,}},
1373
+ {{ 64, 0, 64, 64, 0, 0, 0, 0,}},
1374
+ {{ 64, 64, 0, 0, 0, 0, 0, 0,}},
1375
+ {{ 64, 64, 0, 64, 0, 0, 0, 0,}},
1376
+ {{ 64, 64, 64, 0, 0, 0, 0, 0,}},
1377
+ {{ 64, 64, 64, 64, 0, 0, 0, 0,}},
1378
+ },
1379
+ {
1380
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
1381
+ {{ 0, 0, 0, 4, 0, 0, 0, 0,}},
1382
+ {{ 0, 0, 4, 0, 0, 0, 0, 0,}},
1383
+ {{ 0, 0, 4, 4, 0, 0, 0, 0,}},
1384
+ {{ 0, 4, 0, 0, 0, 0, 0, 0,}},
1385
+ {{ 0, 4, 0, 4, 0, 0, 0, 0,}},
1386
+ {{ 0, 4, 4, 0, 0, 0, 0, 0,}},
1387
+ {{ 0, 4, 4, 4, 0, 0, 0, 0,}},
1388
+ {{ 4, 0, 0, 0, 0, 0, 0, 0,}},
1389
+ {{ 4, 0, 0, 4, 0, 0, 0, 0,}},
1390
+ {{ 4, 0, 4, 0, 0, 0, 0, 0,}},
1391
+ {{ 4, 0, 4, 4, 0, 0, 0, 0,}},
1392
+ {{ 4, 4, 0, 0, 0, 0, 0, 0,}},
1393
+ {{ 4, 4, 0, 4, 0, 0, 0, 0,}},
1394
+ {{ 4, 4, 4, 0, 0, 0, 0, 0,}},
1395
+ {{ 4, 4, 4, 4, 0, 0, 0, 0,}},
1396
+ },
1397
+ {
1398
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
1399
+ {{ 0, 0, 0, 0, 0, 0, 0, 16,}},
1400
+ {{ 0, 0, 0, 0, 0, 0, 16, 0,}},
1401
+ {{ 0, 0, 0, 0, 0, 0, 16, 16,}},
1402
+ {{ 0, 0, 0, 0, 0, 16, 0, 0,}},
1403
+ {{ 0, 0, 0, 0, 0, 16, 0, 16,}},
1404
+ {{ 0, 0, 0, 0, 0, 16, 16, 0,}},
1405
+ {{ 0, 0, 0, 0, 0, 16, 16, 16,}},
1406
+ {{ 0, 0, 0, 0, 16, 0, 0, 0,}},
1407
+ {{ 0, 0, 0, 0, 16, 0, 0, 16,}},
1408
+ {{ 0, 0, 0, 0, 16, 0, 16, 0,}},
1409
+ {{ 0, 0, 0, 0, 16, 0, 16, 16,}},
1410
+ {{ 0, 0, 0, 0, 16, 16, 0, 0,}},
1411
+ {{ 0, 0, 0, 0, 16, 16, 0, 16,}},
1412
+ {{ 0, 0, 0, 0, 16, 16, 16, 0,}},
1413
+ {{ 0, 0, 0, 0, 16, 16, 16, 16,}},
1414
+ },
1415
+ {
1416
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
1417
+ {{ 0, 0, 0, 0, 0, 0, 0, 1,}},
1418
+ {{ 0, 0, 0, 0, 0, 0, 1, 0,}},
1419
+ {{ 0, 0, 0, 0, 0, 0, 1, 1,}},
1420
+ {{ 0, 0, 0, 0, 0, 1, 0, 0,}},
1421
+ {{ 0, 0, 0, 0, 0, 1, 0, 1,}},
1422
+ {{ 0, 0, 0, 0, 0, 1, 1, 0,}},
1423
+ {{ 0, 0, 0, 0, 0, 1, 1, 1,}},
1424
+ {{ 0, 0, 0, 0, 1, 0, 0, 0,}},
1425
+ {{ 0, 0, 0, 0, 1, 0, 0, 1,}},
1426
+ {{ 0, 0, 0, 0, 1, 0, 1, 0,}},
1427
+ {{ 0, 0, 0, 0, 1, 0, 1, 1,}},
1428
+ {{ 0, 0, 0, 0, 1, 1, 0, 0,}},
1429
+ {{ 0, 0, 0, 0, 1, 1, 0, 1,}},
1430
+ {{ 0, 0, 0, 0, 1, 1, 1, 0,}},
1431
+ {{ 0, 0, 0, 0, 1, 1, 1, 1,}},
1432
+ },
1433
+ {
1434
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
1435
+ {{ 0, 0, 0, 16, 0, 0, 0, 0,}},
1436
+ {{ 0, 0, 16, 0, 0, 0, 0, 0,}},
1437
+ {{ 0, 0, 16, 16, 0, 0, 0, 0,}},
1438
+ {{ 0, 16, 0, 0, 0, 0, 0, 0,}},
1439
+ {{ 0, 16, 0, 16, 0, 0, 0, 0,}},
1440
+ {{ 0, 16, 16, 0, 0, 0, 0, 0,}},
1441
+ {{ 0, 16, 16, 16, 0, 0, 0, 0,}},
1442
+ {{ 16, 0, 0, 0, 0, 0, 0, 0,}},
1443
+ {{ 16, 0, 0, 16, 0, 0, 0, 0,}},
1444
+ {{ 16, 0, 16, 0, 0, 0, 0, 0,}},
1445
+ {{ 16, 0, 16, 16, 0, 0, 0, 0,}},
1446
+ {{ 16, 16, 0, 0, 0, 0, 0, 0,}},
1447
+ {{ 16, 16, 0, 16, 0, 0, 0, 0,}},
1448
+ {{ 16, 16, 16, 0, 0, 0, 0, 0,}},
1449
+ {{ 16, 16, 16, 16, 0, 0, 0, 0,}},
1450
+ },
1451
+ {
1452
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
1453
+ {{ 0, 0, 0, 1, 0, 0, 0, 0,}},
1454
+ {{ 0, 0, 1, 0, 0, 0, 0, 0,}},
1455
+ {{ 0, 0, 1, 1, 0, 0, 0, 0,}},
1456
+ {{ 0, 1, 0, 0, 0, 0, 0, 0,}},
1457
+ {{ 0, 1, 0, 1, 0, 0, 0, 0,}},
1458
+ {{ 0, 1, 1, 0, 0, 0, 0, 0,}},
1459
+ {{ 0, 1, 1, 1, 0, 0, 0, 0,}},
1460
+ {{ 1, 0, 0, 0, 0, 0, 0, 0,}},
1461
+ {{ 1, 0, 0, 1, 0, 0, 0, 0,}},
1462
+ {{ 1, 0, 1, 0, 0, 0, 0, 0,}},
1463
+ {{ 1, 0, 1, 1, 0, 0, 0, 0,}},
1464
+ {{ 1, 1, 0, 0, 0, 0, 0, 0,}},
1465
+ {{ 1, 1, 0, 1, 0, 0, 0, 0,}},
1466
+ {{ 1, 1, 1, 0, 0, 0, 0, 0,}},
1467
+ {{ 1, 1, 1, 1, 0, 0, 0, 0,}},
1468
+ },
1469
+ {
1470
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
1471
+ {{ 0, 0, 0, 0, 0, 0, 0,128,}},
1472
+ {{ 0, 0, 0, 0, 0, 0,128, 0,}},
1473
+ {{ 0, 0, 0, 0, 0, 0,128,128,}},
1474
+ {{ 0, 0, 0, 0, 0,128, 0, 0,}},
1475
+ {{ 0, 0, 0, 0, 0,128, 0,128,}},
1476
+ {{ 0, 0, 0, 0, 0,128,128, 0,}},
1477
+ {{ 0, 0, 0, 0, 0,128,128,128,}},
1478
+ {{ 0, 0, 0, 0,128, 0, 0, 0,}},
1479
+ {{ 0, 0, 0, 0,128, 0, 0,128,}},
1480
+ {{ 0, 0, 0, 0,128, 0,128, 0,}},
1481
+ {{ 0, 0, 0, 0,128, 0,128,128,}},
1482
+ {{ 0, 0, 0, 0,128,128, 0, 0,}},
1483
+ {{ 0, 0, 0, 0,128,128, 0,128,}},
1484
+ {{ 0, 0, 0, 0,128,128,128, 0,}},
1485
+ {{ 0, 0, 0, 0,128,128,128,128,}},
1486
+ },
1487
+ {
1488
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
1489
+ {{ 0, 0, 0, 0, 0, 0, 0, 8,}},
1490
+ {{ 0, 0, 0, 0, 0, 0, 8, 0,}},
1491
+ {{ 0, 0, 0, 0, 0, 0, 8, 8,}},
1492
+ {{ 0, 0, 0, 0, 0, 8, 0, 0,}},
1493
+ {{ 0, 0, 0, 0, 0, 8, 0, 8,}},
1494
+ {{ 0, 0, 0, 0, 0, 8, 8, 0,}},
1495
+ {{ 0, 0, 0, 0, 0, 8, 8, 8,}},
1496
+ {{ 0, 0, 0, 0, 8, 0, 0, 0,}},
1497
+ {{ 0, 0, 0, 0, 8, 0, 0, 8,}},
1498
+ {{ 0, 0, 0, 0, 8, 0, 8, 0,}},
1499
+ {{ 0, 0, 0, 0, 8, 0, 8, 8,}},
1500
+ {{ 0, 0, 0, 0, 8, 8, 0, 0,}},
1501
+ {{ 0, 0, 0, 0, 8, 8, 0, 8,}},
1502
+ {{ 0, 0, 0, 0, 8, 8, 8, 0,}},
1503
+ {{ 0, 0, 0, 0, 8, 8, 8, 8,}},
1504
+ },
1505
+ {
1506
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
1507
+ {{ 0, 0, 0,128, 0, 0, 0, 0,}},
1508
+ {{ 0, 0,128, 0, 0, 0, 0, 0,}},
1509
+ {{ 0, 0,128,128, 0, 0, 0, 0,}},
1510
+ {{ 0,128, 0, 0, 0, 0, 0, 0,}},
1511
+ {{ 0,128, 0,128, 0, 0, 0, 0,}},
1512
+ {{ 0,128,128, 0, 0, 0, 0, 0,}},
1513
+ {{ 0,128,128,128, 0, 0, 0, 0,}},
1514
+ {{128, 0, 0, 0, 0, 0, 0, 0,}},
1515
+ {{128, 0, 0,128, 0, 0, 0, 0,}},
1516
+ {{128, 0,128, 0, 0, 0, 0, 0,}},
1517
+ {{128, 0,128,128, 0, 0, 0, 0,}},
1518
+ {{128,128, 0, 0, 0, 0, 0, 0,}},
1519
+ {{128,128, 0,128, 0, 0, 0, 0,}},
1520
+ {{128,128,128, 0, 0, 0, 0, 0,}},
1521
+ {{128,128,128,128, 0, 0, 0, 0,}},
1522
+ },
1523
+ {
1524
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
1525
+ {{ 0, 0, 0, 8, 0, 0, 0, 0,}},
1526
+ {{ 0, 0, 8, 0, 0, 0, 0, 0,}},
1527
+ {{ 0, 0, 8, 8, 0, 0, 0, 0,}},
1528
+ {{ 0, 8, 0, 0, 0, 0, 0, 0,}},
1529
+ {{ 0, 8, 0, 8, 0, 0, 0, 0,}},
1530
+ {{ 0, 8, 8, 0, 0, 0, 0, 0,}},
1531
+ {{ 0, 8, 8, 8, 0, 0, 0, 0,}},
1532
+ {{ 8, 0, 0, 0, 0, 0, 0, 0,}},
1533
+ {{ 8, 0, 0, 8, 0, 0, 0, 0,}},
1534
+ {{ 8, 0, 8, 0, 0, 0, 0, 0,}},
1535
+ {{ 8, 0, 8, 8, 0, 0, 0, 0,}},
1536
+ {{ 8, 8, 0, 0, 0, 0, 0, 0,}},
1537
+ {{ 8, 8, 0, 8, 0, 0, 0, 0,}},
1538
+ {{ 8, 8, 8, 0, 0, 0, 0, 0,}},
1539
+ {{ 8, 8, 8, 8, 0, 0, 0, 0,}},
1540
+ },
1541
+ {
1542
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
1543
+ {{ 0, 0, 0, 0, 0, 0, 0, 32,}},
1544
+ {{ 0, 0, 0, 0, 0, 0, 32, 0,}},
1545
+ {{ 0, 0, 0, 0, 0, 0, 32, 32,}},
1546
+ {{ 0, 0, 0, 0, 0, 32, 0, 0,}},
1547
+ {{ 0, 0, 0, 0, 0, 32, 0, 32,}},
1548
+ {{ 0, 0, 0, 0, 0, 32, 32, 0,}},
1549
+ {{ 0, 0, 0, 0, 0, 32, 32, 32,}},
1550
+ {{ 0, 0, 0, 0, 32, 0, 0, 0,}},
1551
+ {{ 0, 0, 0, 0, 32, 0, 0, 32,}},
1552
+ {{ 0, 0, 0, 0, 32, 0, 32, 0,}},
1553
+ {{ 0, 0, 0, 0, 32, 0, 32, 32,}},
1554
+ {{ 0, 0, 0, 0, 32, 32, 0, 0,}},
1555
+ {{ 0, 0, 0, 0, 32, 32, 0, 32,}},
1556
+ {{ 0, 0, 0, 0, 32, 32, 32, 0,}},
1557
+ {{ 0, 0, 0, 0, 32, 32, 32, 32,}},
1558
+ },
1559
+ {
1560
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
1561
+ {{ 0, 0, 0, 0, 0, 0, 0, 2,}},
1562
+ {{ 0, 0, 0, 0, 0, 0, 2, 0,}},
1563
+ {{ 0, 0, 0, 0, 0, 0, 2, 2,}},
1564
+ {{ 0, 0, 0, 0, 0, 2, 0, 0,}},
1565
+ {{ 0, 0, 0, 0, 0, 2, 0, 2,}},
1566
+ {{ 0, 0, 0, 0, 0, 2, 2, 0,}},
1567
+ {{ 0, 0, 0, 0, 0, 2, 2, 2,}},
1568
+ {{ 0, 0, 0, 0, 2, 0, 0, 0,}},
1569
+ {{ 0, 0, 0, 0, 2, 0, 0, 2,}},
1570
+ {{ 0, 0, 0, 0, 2, 0, 2, 0,}},
1571
+ {{ 0, 0, 0, 0, 2, 0, 2, 2,}},
1572
+ {{ 0, 0, 0, 0, 2, 2, 0, 0,}},
1573
+ {{ 0, 0, 0, 0, 2, 2, 0, 2,}},
1574
+ {{ 0, 0, 0, 0, 2, 2, 2, 0,}},
1575
+ {{ 0, 0, 0, 0, 2, 2, 2, 2,}},
1576
+ },
1577
+ {
1578
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
1579
+ {{ 0, 0, 0, 32, 0, 0, 0, 0,}},
1580
+ {{ 0, 0, 32, 0, 0, 0, 0, 0,}},
1581
+ {{ 0, 0, 32, 32, 0, 0, 0, 0,}},
1582
+ {{ 0, 32, 0, 0, 0, 0, 0, 0,}},
1583
+ {{ 0, 32, 0, 32, 0, 0, 0, 0,}},
1584
+ {{ 0, 32, 32, 0, 0, 0, 0, 0,}},
1585
+ {{ 0, 32, 32, 32, 0, 0, 0, 0,}},
1586
+ {{ 32, 0, 0, 0, 0, 0, 0, 0,}},
1587
+ {{ 32, 0, 0, 32, 0, 0, 0, 0,}},
1588
+ {{ 32, 0, 32, 0, 0, 0, 0, 0,}},
1589
+ {{ 32, 0, 32, 32, 0, 0, 0, 0,}},
1590
+ {{ 32, 32, 0, 0, 0, 0, 0, 0,}},
1591
+ {{ 32, 32, 0, 32, 0, 0, 0, 0,}},
1592
+ {{ 32, 32, 32, 0, 0, 0, 0, 0,}},
1593
+ {{ 32, 32, 32, 32, 0, 0, 0, 0,}},
1594
+ },
1595
+ {
1596
+ {{ 0, 0, 0, 0, 0, 0, 0, 0,}},
1597
+ {{ 0, 0, 0, 2, 0, 0, 0, 0,}},
1598
+ {{ 0, 0, 2, 0, 0, 0, 0, 0,}},
1599
+ {{ 0, 0, 2, 2, 0, 0, 0, 0,}},
1600
+ {{ 0, 2, 0, 0, 0, 0, 0, 0,}},
1601
+ {{ 0, 2, 0, 2, 0, 0, 0, 0,}},
1602
+ {{ 0, 2, 2, 0, 0, 0, 0, 0,}},
1603
+ {{ 0, 2, 2, 2, 0, 0, 0, 0,}},
1604
+ {{ 2, 0, 0, 0, 0, 0, 0, 0,}},
1605
+ {{ 2, 0, 0, 2, 0, 0, 0, 0,}},
1606
+ {{ 2, 0, 2, 0, 0, 0, 0, 0,}},
1607
+ {{ 2, 0, 2, 2, 0, 0, 0, 0,}},
1608
+ {{ 2, 2, 0, 0, 0, 0, 0, 0,}},
1609
+ {{ 2, 2, 0, 2, 0, 0, 0, 0,}},
1610
+ {{ 2, 2, 2, 0, 0, 0, 0, 0,}},
1611
+ {{ 2, 2, 2, 2, 0, 0, 0, 0,}},
1612
+ },
1613
+ };
1614
+
1615
+ #define HAVE_DES_TABLES 1
1616
+ #endif