]>
git.saurik.com Git - apple/xnu.git/blob - osfmk/corecrypto/ccaes/src/aes_tab.c
5 * Created on 12/12/2010
7 * Copyright (c) 2010,2015 Apple Inc. All rights reserved.
10 * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
12 * This file contains Original Code and/or Modifications of Original Code
13 * as defined in and that are subject to the Apple Public Source License
14 * Version 2.0 (the 'License'). You may not use this file except in
15 * compliance with the License. The rights granted to you under the License
16 * may not be used to create, or enable the creation or redistribution of,
17 * unlawful or unlicensed copies of an Apple operating system, or to
18 * circumvent, violate, or enable the circumvention or violation of, any
19 * terms of an Apple operating system software license agreement.
21 * Please obtain a copy of the License at
22 * http://www.opensource.apple.com/apsl/ and read it before using this file.
24 * The Original Code and all software distributed under the License are
25 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
26 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
27 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
28 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
29 * Please see the License for the specific language governing rights and
30 * limitations under the License.
32 * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
35 /* LibTomCrypt, modular cryptographic library -- Tom St Denis
37 * LibTomCrypt is a library that provides various cryptographic
38 * algorithms in a highly modular and flexible manner.
40 * The library is free for all purposes without any express
43 * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
46 /* The precomputed tables for AES */
48 Te0[x] = S [x].[02, 01, 01, 03];
49 Te1[x] = S [x].[03, 02, 01, 01];
50 Te2[x] = S [x].[01, 03, 02, 01];
51 Te3[x] = S [x].[01, 01, 03, 02];
52 Te4[x] = S [x].[01, 01, 01, 01];
54 Td0[x] = Si[x].[0e, 09, 0d, 0b];
55 Td1[x] = Si[x].[0b, 0e, 09, 0d];
56 Td2[x] = Si[x].[0d, 0b, 0e, 09];
57 Td3[x] = Si[x].[09, 0d, 0b, 0e];
58 Td4[x] = Si[x].[01, 01, 01, 01];
67 static const uint32_t TE0
[256] = {
68 0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d,
69 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554,
70 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d,
71 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a,
72 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87,
73 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b,
74 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea,
75 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b,
76 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a,
77 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f,
78 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108,
79 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f,
80 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e,
81 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5,
82 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d,
83 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f,
84 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e,
85 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb,
86 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce,
87 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497,
88 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c,
89 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed,
90 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b,
91 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a,
92 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16,
93 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594,
94 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81,
95 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3,
96 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a,
97 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504,
98 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163,
99 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d,
100 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f,
101 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739,
102 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47,
103 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395,
104 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f,
105 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883,
106 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c,
107 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76,
108 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e,
109 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4,
110 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6,
111 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b,
112 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7,
113 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0,
114 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25,
115 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818,
116 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72,
117 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651,
118 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21,
119 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85,
120 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa,
121 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12,
122 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0,
123 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9,
124 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133,
125 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7,
126 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920,
127 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a,
128 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17,
129 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8,
130 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11,
131 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a,
135 static const uint32_t Te4
[256] = {
136 0x63636363, 0x7c7c7c7c, 0x77777777, 0x7b7b7b7b,
137 0xf2f2f2f2, 0x6b6b6b6b, 0x6f6f6f6f, 0xc5c5c5c5,
138 0x30303030, 0x01010101, 0x67676767, 0x2b2b2b2b,
139 0xfefefefe, 0xd7d7d7d7, 0xabababab, 0x76767676,
140 0xcacacaca, 0x82828282, 0xc9c9c9c9, 0x7d7d7d7d,
141 0xfafafafa, 0x59595959, 0x47474747, 0xf0f0f0f0,
142 0xadadadad, 0xd4d4d4d4, 0xa2a2a2a2, 0xafafafaf,
143 0x9c9c9c9c, 0xa4a4a4a4, 0x72727272, 0xc0c0c0c0,
144 0xb7b7b7b7, 0xfdfdfdfd, 0x93939393, 0x26262626,
145 0x36363636, 0x3f3f3f3f, 0xf7f7f7f7, 0xcccccccc,
146 0x34343434, 0xa5a5a5a5, 0xe5e5e5e5, 0xf1f1f1f1,
147 0x71717171, 0xd8d8d8d8, 0x31313131, 0x15151515,
148 0x04040404, 0xc7c7c7c7, 0x23232323, 0xc3c3c3c3,
149 0x18181818, 0x96969696, 0x05050505, 0x9a9a9a9a,
150 0x07070707, 0x12121212, 0x80808080, 0xe2e2e2e2,
151 0xebebebeb, 0x27272727, 0xb2b2b2b2, 0x75757575,
152 0x09090909, 0x83838383, 0x2c2c2c2c, 0x1a1a1a1a,
153 0x1b1b1b1b, 0x6e6e6e6e, 0x5a5a5a5a, 0xa0a0a0a0,
154 0x52525252, 0x3b3b3b3b, 0xd6d6d6d6, 0xb3b3b3b3,
155 0x29292929, 0xe3e3e3e3, 0x2f2f2f2f, 0x84848484,
156 0x53535353, 0xd1d1d1d1, 0x00000000, 0xedededed,
157 0x20202020, 0xfcfcfcfc, 0xb1b1b1b1, 0x5b5b5b5b,
158 0x6a6a6a6a, 0xcbcbcbcb, 0xbebebebe, 0x39393939,
159 0x4a4a4a4a, 0x4c4c4c4c, 0x58585858, 0xcfcfcfcf,
160 0xd0d0d0d0, 0xefefefef, 0xaaaaaaaa, 0xfbfbfbfb,
161 0x43434343, 0x4d4d4d4d, 0x33333333, 0x85858585,
162 0x45454545, 0xf9f9f9f9, 0x02020202, 0x7f7f7f7f,
163 0x50505050, 0x3c3c3c3c, 0x9f9f9f9f, 0xa8a8a8a8,
164 0x51515151, 0xa3a3a3a3, 0x40404040, 0x8f8f8f8f,
165 0x92929292, 0x9d9d9d9d, 0x38383838, 0xf5f5f5f5,
166 0xbcbcbcbc, 0xb6b6b6b6, 0xdadadada, 0x21212121,
167 0x10101010, 0xffffffff, 0xf3f3f3f3, 0xd2d2d2d2,
168 0xcdcdcdcd, 0x0c0c0c0c, 0x13131313, 0xecececec,
169 0x5f5f5f5f, 0x97979797, 0x44444444, 0x17171717,
170 0xc4c4c4c4, 0xa7a7a7a7, 0x7e7e7e7e, 0x3d3d3d3d,
171 0x64646464, 0x5d5d5d5d, 0x19191919, 0x73737373,
172 0x60606060, 0x81818181, 0x4f4f4f4f, 0xdcdcdcdc,
173 0x22222222, 0x2a2a2a2a, 0x90909090, 0x88888888,
174 0x46464646, 0xeeeeeeee, 0xb8b8b8b8, 0x14141414,
175 0xdededede, 0x5e5e5e5e, 0x0b0b0b0b, 0xdbdbdbdb,
176 0xe0e0e0e0, 0x32323232, 0x3a3a3a3a, 0x0a0a0a0a,
177 0x49494949, 0x06060606, 0x24242424, 0x5c5c5c5c,
178 0xc2c2c2c2, 0xd3d3d3d3, 0xacacacac, 0x62626262,
179 0x91919191, 0x95959595, 0xe4e4e4e4, 0x79797979,
180 0xe7e7e7e7, 0xc8c8c8c8, 0x37373737, 0x6d6d6d6d,
181 0x8d8d8d8d, 0xd5d5d5d5, 0x4e4e4e4e, 0xa9a9a9a9,
182 0x6c6c6c6c, 0x56565656, 0xf4f4f4f4, 0xeaeaeaea,
183 0x65656565, 0x7a7a7a7a, 0xaeaeaeae, 0x08080808,
184 0xbabababa, 0x78787878, 0x25252525, 0x2e2e2e2e,
185 0x1c1c1c1c, 0xa6a6a6a6, 0xb4b4b4b4, 0xc6c6c6c6,
186 0xe8e8e8e8, 0xdddddddd, 0x74747474, 0x1f1f1f1f,
187 0x4b4b4b4b, 0xbdbdbdbd, 0x8b8b8b8b, 0x8a8a8a8a,
188 0x70707070, 0x3e3e3e3e, 0xb5b5b5b5, 0x66666666,
189 0x48484848, 0x03030303, 0xf6f6f6f6, 0x0e0e0e0e,
190 0x61616161, 0x35353535, 0x57575757, 0xb9b9b9b9,
191 0x86868686, 0xc1c1c1c1, 0x1d1d1d1d, 0x9e9e9e9e,
192 0xe1e1e1e1, 0xf8f8f8f8, 0x98989898, 0x11111111,
193 0x69696969, 0xd9d9d9d9, 0x8e8e8e8e, 0x94949494,
194 0x9b9b9b9b, 0x1e1e1e1e, 0x87878787, 0xe9e9e9e9,
195 0xcececece, 0x55555555, 0x28282828, 0xdfdfdfdf,
196 0x8c8c8c8c, 0xa1a1a1a1, 0x89898989, 0x0d0d0d0d,
197 0xbfbfbfbf, 0xe6e6e6e6, 0x42424242, 0x68686868,
198 0x41414141, 0x99999999, 0x2d2d2d2d, 0x0f0f0f0f,
199 0xb0b0b0b0, 0x54545454, 0xbbbbbbbb, 0x16161616,
205 static const uint32_t TD0
[256] = {
206 0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96,
207 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393,
208 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25,
209 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f,
210 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1,
211 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6,
212 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da,
213 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844,
214 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd,
215 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4,
216 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45,
217 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94,
218 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7,
219 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a,
220 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5,
221 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c,
222 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1,
223 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a,
224 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75,
225 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051,
226 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46,
227 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff,
228 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77,
229 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb,
230 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000,
231 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e,
232 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927,
233 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a,
234 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e,
235 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16,
236 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d,
237 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8,
238 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd,
239 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34,
240 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163,
241 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120,
242 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d,
243 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0,
244 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422,
245 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef,
246 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36,
247 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4,
248 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662,
249 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5,
250 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3,
251 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b,
252 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8,
253 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6,
254 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6,
255 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0,
256 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815,
257 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f,
258 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df,
259 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f,
260 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e,
261 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713,
262 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89,
263 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c,
264 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf,
265 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86,
266 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f,
267 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541,
268 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190,
269 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742,
272 static const uint32_t Td4
[256] = {
273 0x52525252, 0x09090909, 0x6a6a6a6a, 0xd5d5d5d5,
274 0x30303030, 0x36363636, 0xa5a5a5a5, 0x38383838,
275 0xbfbfbfbf, 0x40404040, 0xa3a3a3a3, 0x9e9e9e9e,
276 0x81818181, 0xf3f3f3f3, 0xd7d7d7d7, 0xfbfbfbfb,
277 0x7c7c7c7c, 0xe3e3e3e3, 0x39393939, 0x82828282,
278 0x9b9b9b9b, 0x2f2f2f2f, 0xffffffff, 0x87878787,
279 0x34343434, 0x8e8e8e8e, 0x43434343, 0x44444444,
280 0xc4c4c4c4, 0xdededede, 0xe9e9e9e9, 0xcbcbcbcb,
281 0x54545454, 0x7b7b7b7b, 0x94949494, 0x32323232,
282 0xa6a6a6a6, 0xc2c2c2c2, 0x23232323, 0x3d3d3d3d,
283 0xeeeeeeee, 0x4c4c4c4c, 0x95959595, 0x0b0b0b0b,
284 0x42424242, 0xfafafafa, 0xc3c3c3c3, 0x4e4e4e4e,
285 0x08080808, 0x2e2e2e2e, 0xa1a1a1a1, 0x66666666,
286 0x28282828, 0xd9d9d9d9, 0x24242424, 0xb2b2b2b2,
287 0x76767676, 0x5b5b5b5b, 0xa2a2a2a2, 0x49494949,
288 0x6d6d6d6d, 0x8b8b8b8b, 0xd1d1d1d1, 0x25252525,
289 0x72727272, 0xf8f8f8f8, 0xf6f6f6f6, 0x64646464,
290 0x86868686, 0x68686868, 0x98989898, 0x16161616,
291 0xd4d4d4d4, 0xa4a4a4a4, 0x5c5c5c5c, 0xcccccccc,
292 0x5d5d5d5d, 0x65656565, 0xb6b6b6b6, 0x92929292,
293 0x6c6c6c6c, 0x70707070, 0x48484848, 0x50505050,
294 0xfdfdfdfd, 0xedededed, 0xb9b9b9b9, 0xdadadada,
295 0x5e5e5e5e, 0x15151515, 0x46464646, 0x57575757,
296 0xa7a7a7a7, 0x8d8d8d8d, 0x9d9d9d9d, 0x84848484,
297 0x90909090, 0xd8d8d8d8, 0xabababab, 0x00000000,
298 0x8c8c8c8c, 0xbcbcbcbc, 0xd3d3d3d3, 0x0a0a0a0a,
299 0xf7f7f7f7, 0xe4e4e4e4, 0x58585858, 0x05050505,
300 0xb8b8b8b8, 0xb3b3b3b3, 0x45454545, 0x06060606,
301 0xd0d0d0d0, 0x2c2c2c2c, 0x1e1e1e1e, 0x8f8f8f8f,
302 0xcacacaca, 0x3f3f3f3f, 0x0f0f0f0f, 0x02020202,
303 0xc1c1c1c1, 0xafafafaf, 0xbdbdbdbd, 0x03030303,
304 0x01010101, 0x13131313, 0x8a8a8a8a, 0x6b6b6b6b,
305 0x3a3a3a3a, 0x91919191, 0x11111111, 0x41414141,
306 0x4f4f4f4f, 0x67676767, 0xdcdcdcdc, 0xeaeaeaea,
307 0x97979797, 0xf2f2f2f2, 0xcfcfcfcf, 0xcececece,
308 0xf0f0f0f0, 0xb4b4b4b4, 0xe6e6e6e6, 0x73737373,
309 0x96969696, 0xacacacac, 0x74747474, 0x22222222,
310 0xe7e7e7e7, 0xadadadad, 0x35353535, 0x85858585,
311 0xe2e2e2e2, 0xf9f9f9f9, 0x37373737, 0xe8e8e8e8,
312 0x1c1c1c1c, 0x75757575, 0xdfdfdfdf, 0x6e6e6e6e,
313 0x47474747, 0xf1f1f1f1, 0x1a1a1a1a, 0x71717171,
314 0x1d1d1d1d, 0x29292929, 0xc5c5c5c5, 0x89898989,
315 0x6f6f6f6f, 0xb7b7b7b7, 0x62626262, 0x0e0e0e0e,
316 0xaaaaaaaa, 0x18181818, 0xbebebebe, 0x1b1b1b1b,
317 0xfcfcfcfc, 0x56565656, 0x3e3e3e3e, 0x4b4b4b4b,
318 0xc6c6c6c6, 0xd2d2d2d2, 0x79797979, 0x20202020,
319 0x9a9a9a9a, 0xdbdbdbdb, 0xc0c0c0c0, 0xfefefefe,
320 0x78787878, 0xcdcdcdcd, 0x5a5a5a5a, 0xf4f4f4f4,
321 0x1f1f1f1f, 0xdddddddd, 0xa8a8a8a8, 0x33333333,
322 0x88888888, 0x07070707, 0xc7c7c7c7, 0x31313131,
323 0xb1b1b1b1, 0x12121212, 0x10101010, 0x59595959,
324 0x27272727, 0x80808080, 0xecececec, 0x5f5f5f5f,
325 0x60606060, 0x51515151, 0x7f7f7f7f, 0xa9a9a9a9,
326 0x19191919, 0xb5b5b5b5, 0x4a4a4a4a, 0x0d0d0d0d,
327 0x2d2d2d2d, 0xe5e5e5e5, 0x7a7a7a7a, 0x9f9f9f9f,
328 0x93939393, 0xc9c9c9c9, 0x9c9c9c9c, 0xefefefef,
329 0xa0a0a0a0, 0xe0e0e0e0, 0x3b3b3b3b, 0x4d4d4d4d,
330 0xaeaeaeae, 0x2a2a2a2a, 0xf5f5f5f5, 0xb0b0b0b0,
331 0xc8c8c8c8, 0xebebebeb, 0xbbbbbbbb, 0x3c3c3c3c,
332 0x83838383, 0x53535353, 0x99999999, 0x61616161,
333 0x17171717, 0x2b2b2b2b, 0x04040404, 0x7e7e7e7e,
334 0xbabababa, 0x77777777, 0xd6d6d6d6, 0x26262626,
335 0xe1e1e1e1, 0x69696969, 0x14141414, 0x63636363,
336 0x55555555, 0x21212121, 0x0c0c0c0c, 0x7d7d7d7d,
339 #endif /* ENCRYPT_ONLY */
341 #ifdef LTC_SMALL_CODE
343 #define Te0(x) TE0[x]
344 #define Te1(x) RORc(TE0[x], 8)
345 #define Te2(x) RORc(TE0[x], 16)
346 #define Te3(x) RORc(TE0[x], 24)
348 #define Td0(x) TD0[x]
349 #define Td1(x) RORc(TD0[x], 8)
350 #define Td2(x) RORc(TD0[x], 16)
351 #define Td3(x) RORc(TD0[x], 24)
353 #define Te4_0 0x000000FF & Te4
354 #define Te4_1 0x0000FF00 & Te4
355 #define Te4_2 0x00FF0000 & Te4
356 #define Te4_3 0xFF000000 & Te4
360 #define Te0(x) TE0[x]
361 #define Te1(x) TE1[x]
362 #define Te2(x) TE2[x]
363 #define Te3(x) TE3[x]
365 #define Td0(x) TD0[x]
366 #define Td1(x) TD1[x]
367 #define Td2(x) TD2[x]
368 #define Td3(x) TD3[x]
370 static const uint32_t TE1
[256] = {
371 0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b,
372 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5,
373 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b,
374 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676,
375 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d,
376 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0,
377 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf,
378 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0,
379 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626,
380 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc,
381 0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1,
382 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515,
383 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3,
384 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a,
385 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2,
386 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575,
387 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a,
388 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0,
389 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3,
390 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484,
391 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded,
392 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b,
393 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939,
394 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf,
395 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb,
396 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585,
397 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f,
398 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8,
399 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f,
400 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5,
401 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121,
402 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2,
403 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec,
404 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717,
405 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d,
406 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373,
407 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc,
408 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888,
409 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414,
410 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb,
411 0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a,
412 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c,
413 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262,
414 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979,
415 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d,
416 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9,
417 0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea,
418 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808,
419 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e,
420 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6,
421 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f,
422 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a,
423 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666,
424 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e,
425 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9,
426 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e,
427 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111,
428 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494,
429 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9,
430 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf,
431 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d,
432 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868,
433 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f,
434 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616,
436 static const uint32_t TE2
[256] = {
437 0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b,
438 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5,
439 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b,
440 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76,
441 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d,
442 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0,
443 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af,
444 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0,
445 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26,
446 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc,
447 0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1,
448 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15,
449 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3,
450 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a,
451 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2,
452 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75,
453 0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a,
454 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0,
455 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3,
456 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384,
457 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed,
458 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b,
459 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239,
460 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf,
461 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb,
462 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185,
463 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f,
464 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8,
465 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f,
466 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5,
467 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221,
468 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2,
469 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec,
470 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17,
471 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d,
472 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673,
473 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc,
474 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88,
475 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814,
476 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb,
477 0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a,
478 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c,
479 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462,
480 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279,
481 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d,
482 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9,
483 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea,
484 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008,
485 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e,
486 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6,
487 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f,
488 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a,
489 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66,
490 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e,
491 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9,
492 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e,
493 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211,
494 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394,
495 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9,
496 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df,
497 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d,
498 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068,
499 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f,
500 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16,
502 static const uint32_t TE3
[256] = {
504 0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6,
505 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491,
506 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56,
507 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec,
508 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa,
509 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb,
510 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45,
511 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b,
512 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c,
513 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83,
514 0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9,
515 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a,
516 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d,
517 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f,
518 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf,
519 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea,
520 0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34,
521 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b,
522 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d,
523 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713,
524 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1,
525 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6,
526 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72,
527 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85,
528 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed,
529 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411,
530 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe,
531 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b,
532 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05,
533 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1,
534 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342,
535 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf,
536 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3,
537 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e,
538 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a,
539 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6,
540 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3,
541 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b,
542 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28,
543 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad,
544 0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14,
545 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8,
546 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4,
547 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2,
548 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da,
549 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049,
550 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf,
551 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810,
552 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c,
553 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197,
554 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e,
555 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f,
556 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc,
557 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c,
558 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069,
559 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927,
560 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322,
561 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733,
562 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9,
563 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5,
564 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a,
565 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0,
566 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e,
567 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c,
571 static const uint32_t Te4_0
[] = {
572 0x00000063, 0x0000007c, 0x00000077, 0x0000007b, 0x000000f2, 0x0000006b, 0x0000006f, 0x000000c5,
573 0x00000030, 0x00000001, 0x00000067, 0x0000002b, 0x000000fe, 0x000000d7, 0x000000ab, 0x00000076,
574 0x000000ca, 0x00000082, 0x000000c9, 0x0000007d, 0x000000fa, 0x00000059, 0x00000047, 0x000000f0,
575 0x000000ad, 0x000000d4, 0x000000a2, 0x000000af, 0x0000009c, 0x000000a4, 0x00000072, 0x000000c0,
576 0x000000b7, 0x000000fd, 0x00000093, 0x00000026, 0x00000036, 0x0000003f, 0x000000f7, 0x000000cc,
577 0x00000034, 0x000000a5, 0x000000e5, 0x000000f1, 0x00000071, 0x000000d8, 0x00000031, 0x00000015,
578 0x00000004, 0x000000c7, 0x00000023, 0x000000c3, 0x00000018, 0x00000096, 0x00000005, 0x0000009a,
579 0x00000007, 0x00000012, 0x00000080, 0x000000e2, 0x000000eb, 0x00000027, 0x000000b2, 0x00000075,
580 0x00000009, 0x00000083, 0x0000002c, 0x0000001a, 0x0000001b, 0x0000006e, 0x0000005a, 0x000000a0,
581 0x00000052, 0x0000003b, 0x000000d6, 0x000000b3, 0x00000029, 0x000000e3, 0x0000002f, 0x00000084,
582 0x00000053, 0x000000d1, 0x00000000, 0x000000ed, 0x00000020, 0x000000fc, 0x000000b1, 0x0000005b,
583 0x0000006a, 0x000000cb, 0x000000be, 0x00000039, 0x0000004a, 0x0000004c, 0x00000058, 0x000000cf,
584 0x000000d0, 0x000000ef, 0x000000aa, 0x000000fb, 0x00000043, 0x0000004d, 0x00000033, 0x00000085,
585 0x00000045, 0x000000f9, 0x00000002, 0x0000007f, 0x00000050, 0x0000003c, 0x0000009f, 0x000000a8,
586 0x00000051, 0x000000a3, 0x00000040, 0x0000008f, 0x00000092, 0x0000009d, 0x00000038, 0x000000f5,
587 0x000000bc, 0x000000b6, 0x000000da, 0x00000021, 0x00000010, 0x000000ff, 0x000000f3, 0x000000d2,
588 0x000000cd, 0x0000000c, 0x00000013, 0x000000ec, 0x0000005f, 0x00000097, 0x00000044, 0x00000017,
589 0x000000c4, 0x000000a7, 0x0000007e, 0x0000003d, 0x00000064, 0x0000005d, 0x00000019, 0x00000073,
590 0x00000060, 0x00000081, 0x0000004f, 0x000000dc, 0x00000022, 0x0000002a, 0x00000090, 0x00000088,
591 0x00000046, 0x000000ee, 0x000000b8, 0x00000014, 0x000000de, 0x0000005e, 0x0000000b, 0x000000db,
592 0x000000e0, 0x00000032, 0x0000003a, 0x0000000a, 0x00000049, 0x00000006, 0x00000024, 0x0000005c,
593 0x000000c2, 0x000000d3, 0x000000ac, 0x00000062, 0x00000091, 0x00000095, 0x000000e4, 0x00000079,
594 0x000000e7, 0x000000c8, 0x00000037, 0x0000006d, 0x0000008d, 0x000000d5, 0x0000004e, 0x000000a9,
595 0x0000006c, 0x00000056, 0x000000f4, 0x000000ea, 0x00000065, 0x0000007a, 0x000000ae, 0x00000008,
596 0x000000ba, 0x00000078, 0x00000025, 0x0000002e, 0x0000001c, 0x000000a6, 0x000000b4, 0x000000c6,
597 0x000000e8, 0x000000dd, 0x00000074, 0x0000001f, 0x0000004b, 0x000000bd, 0x0000008b, 0x0000008a,
598 0x00000070, 0x0000003e, 0x000000b5, 0x00000066, 0x00000048, 0x00000003, 0x000000f6, 0x0000000e,
599 0x00000061, 0x00000035, 0x00000057, 0x000000b9, 0x00000086, 0x000000c1, 0x0000001d, 0x0000009e,
600 0x000000e1, 0x000000f8, 0x00000098, 0x00000011, 0x00000069, 0x000000d9, 0x0000008e, 0x00000094,
601 0x0000009b, 0x0000001e, 0x00000087, 0x000000e9, 0x000000ce, 0x00000055, 0x00000028, 0x000000df,
602 0x0000008c, 0x000000a1, 0x00000089, 0x0000000d, 0x000000bf, 0x000000e6, 0x00000042, 0x00000068,
603 0x00000041, 0x00000099, 0x0000002d, 0x0000000f, 0x000000b0, 0x00000054, 0x000000bb, 0x00000016
606 static const uint32_t Te4_1
[] = {
607 0x00006300, 0x00007c00, 0x00007700, 0x00007b00, 0x0000f200, 0x00006b00, 0x00006f00, 0x0000c500,
608 0x00003000, 0x00000100, 0x00006700, 0x00002b00, 0x0000fe00, 0x0000d700, 0x0000ab00, 0x00007600,
609 0x0000ca00, 0x00008200, 0x0000c900, 0x00007d00, 0x0000fa00, 0x00005900, 0x00004700, 0x0000f000,
610 0x0000ad00, 0x0000d400, 0x0000a200, 0x0000af00, 0x00009c00, 0x0000a400, 0x00007200, 0x0000c000,
611 0x0000b700, 0x0000fd00, 0x00009300, 0x00002600, 0x00003600, 0x00003f00, 0x0000f700, 0x0000cc00,
612 0x00003400, 0x0000a500, 0x0000e500, 0x0000f100, 0x00007100, 0x0000d800, 0x00003100, 0x00001500,
613 0x00000400, 0x0000c700, 0x00002300, 0x0000c300, 0x00001800, 0x00009600, 0x00000500, 0x00009a00,
614 0x00000700, 0x00001200, 0x00008000, 0x0000e200, 0x0000eb00, 0x00002700, 0x0000b200, 0x00007500,
615 0x00000900, 0x00008300, 0x00002c00, 0x00001a00, 0x00001b00, 0x00006e00, 0x00005a00, 0x0000a000,
616 0x00005200, 0x00003b00, 0x0000d600, 0x0000b300, 0x00002900, 0x0000e300, 0x00002f00, 0x00008400,
617 0x00005300, 0x0000d100, 0x00000000, 0x0000ed00, 0x00002000, 0x0000fc00, 0x0000b100, 0x00005b00,
618 0x00006a00, 0x0000cb00, 0x0000be00, 0x00003900, 0x00004a00, 0x00004c00, 0x00005800, 0x0000cf00,
619 0x0000d000, 0x0000ef00, 0x0000aa00, 0x0000fb00, 0x00004300, 0x00004d00, 0x00003300, 0x00008500,
620 0x00004500, 0x0000f900, 0x00000200, 0x00007f00, 0x00005000, 0x00003c00, 0x00009f00, 0x0000a800,
621 0x00005100, 0x0000a300, 0x00004000, 0x00008f00, 0x00009200, 0x00009d00, 0x00003800, 0x0000f500,
622 0x0000bc00, 0x0000b600, 0x0000da00, 0x00002100, 0x00001000, 0x0000ff00, 0x0000f300, 0x0000d200,
623 0x0000cd00, 0x00000c00, 0x00001300, 0x0000ec00, 0x00005f00, 0x00009700, 0x00004400, 0x00001700,
624 0x0000c400, 0x0000a700, 0x00007e00, 0x00003d00, 0x00006400, 0x00005d00, 0x00001900, 0x00007300,
625 0x00006000, 0x00008100, 0x00004f00, 0x0000dc00, 0x00002200, 0x00002a00, 0x00009000, 0x00008800,
626 0x00004600, 0x0000ee00, 0x0000b800, 0x00001400, 0x0000de00, 0x00005e00, 0x00000b00, 0x0000db00,
627 0x0000e000, 0x00003200, 0x00003a00, 0x00000a00, 0x00004900, 0x00000600, 0x00002400, 0x00005c00,
628 0x0000c200, 0x0000d300, 0x0000ac00, 0x00006200, 0x00009100, 0x00009500, 0x0000e400, 0x00007900,
629 0x0000e700, 0x0000c800, 0x00003700, 0x00006d00, 0x00008d00, 0x0000d500, 0x00004e00, 0x0000a900,
630 0x00006c00, 0x00005600, 0x0000f400, 0x0000ea00, 0x00006500, 0x00007a00, 0x0000ae00, 0x00000800,
631 0x0000ba00, 0x00007800, 0x00002500, 0x00002e00, 0x00001c00, 0x0000a600, 0x0000b400, 0x0000c600,
632 0x0000e800, 0x0000dd00, 0x00007400, 0x00001f00, 0x00004b00, 0x0000bd00, 0x00008b00, 0x00008a00,
633 0x00007000, 0x00003e00, 0x0000b500, 0x00006600, 0x00004800, 0x00000300, 0x0000f600, 0x00000e00,
634 0x00006100, 0x00003500, 0x00005700, 0x0000b900, 0x00008600, 0x0000c100, 0x00001d00, 0x00009e00,
635 0x0000e100, 0x0000f800, 0x00009800, 0x00001100, 0x00006900, 0x0000d900, 0x00008e00, 0x00009400,
636 0x00009b00, 0x00001e00, 0x00008700, 0x0000e900, 0x0000ce00, 0x00005500, 0x00002800, 0x0000df00,
637 0x00008c00, 0x0000a100, 0x00008900, 0x00000d00, 0x0000bf00, 0x0000e600, 0x00004200, 0x00006800,
638 0x00004100, 0x00009900, 0x00002d00, 0x00000f00, 0x0000b000, 0x00005400, 0x0000bb00, 0x00001600
641 static const uint32_t Te4_2
[] = {
642 0x00630000, 0x007c0000, 0x00770000, 0x007b0000, 0x00f20000, 0x006b0000, 0x006f0000, 0x00c50000,
643 0x00300000, 0x00010000, 0x00670000, 0x002b0000, 0x00fe0000, 0x00d70000, 0x00ab0000, 0x00760000,
644 0x00ca0000, 0x00820000, 0x00c90000, 0x007d0000, 0x00fa0000, 0x00590000, 0x00470000, 0x00f00000,
645 0x00ad0000, 0x00d40000, 0x00a20000, 0x00af0000, 0x009c0000, 0x00a40000, 0x00720000, 0x00c00000,
646 0x00b70000, 0x00fd0000, 0x00930000, 0x00260000, 0x00360000, 0x003f0000, 0x00f70000, 0x00cc0000,
647 0x00340000, 0x00a50000, 0x00e50000, 0x00f10000, 0x00710000, 0x00d80000, 0x00310000, 0x00150000,
648 0x00040000, 0x00c70000, 0x00230000, 0x00c30000, 0x00180000, 0x00960000, 0x00050000, 0x009a0000,
649 0x00070000, 0x00120000, 0x00800000, 0x00e20000, 0x00eb0000, 0x00270000, 0x00b20000, 0x00750000,
650 0x00090000, 0x00830000, 0x002c0000, 0x001a0000, 0x001b0000, 0x006e0000, 0x005a0000, 0x00a00000,
651 0x00520000, 0x003b0000, 0x00d60000, 0x00b30000, 0x00290000, 0x00e30000, 0x002f0000, 0x00840000,
652 0x00530000, 0x00d10000, 0x00000000, 0x00ed0000, 0x00200000, 0x00fc0000, 0x00b10000, 0x005b0000,
653 0x006a0000, 0x00cb0000, 0x00be0000, 0x00390000, 0x004a0000, 0x004c0000, 0x00580000, 0x00cf0000,
654 0x00d00000, 0x00ef0000, 0x00aa0000, 0x00fb0000, 0x00430000, 0x004d0000, 0x00330000, 0x00850000,
655 0x00450000, 0x00f90000, 0x00020000, 0x007f0000, 0x00500000, 0x003c0000, 0x009f0000, 0x00a80000,
656 0x00510000, 0x00a30000, 0x00400000, 0x008f0000, 0x00920000, 0x009d0000, 0x00380000, 0x00f50000,
657 0x00bc0000, 0x00b60000, 0x00da0000, 0x00210000, 0x00100000, 0x00ff0000, 0x00f30000, 0x00d20000,
658 0x00cd0000, 0x000c0000, 0x00130000, 0x00ec0000, 0x005f0000, 0x00970000, 0x00440000, 0x00170000,
659 0x00c40000, 0x00a70000, 0x007e0000, 0x003d0000, 0x00640000, 0x005d0000, 0x00190000, 0x00730000,
660 0x00600000, 0x00810000, 0x004f0000, 0x00dc0000, 0x00220000, 0x002a0000, 0x00900000, 0x00880000,
661 0x00460000, 0x00ee0000, 0x00b80000, 0x00140000, 0x00de0000, 0x005e0000, 0x000b0000, 0x00db0000,
662 0x00e00000, 0x00320000, 0x003a0000, 0x000a0000, 0x00490000, 0x00060000, 0x00240000, 0x005c0000,
663 0x00c20000, 0x00d30000, 0x00ac0000, 0x00620000, 0x00910000, 0x00950000, 0x00e40000, 0x00790000,
664 0x00e70000, 0x00c80000, 0x00370000, 0x006d0000, 0x008d0000, 0x00d50000, 0x004e0000, 0x00a90000,
665 0x006c0000, 0x00560000, 0x00f40000, 0x00ea0000, 0x00650000, 0x007a0000, 0x00ae0000, 0x00080000,
666 0x00ba0000, 0x00780000, 0x00250000, 0x002e0000, 0x001c0000, 0x00a60000, 0x00b40000, 0x00c60000,
667 0x00e80000, 0x00dd0000, 0x00740000, 0x001f0000, 0x004b0000, 0x00bd0000, 0x008b0000, 0x008a0000,
668 0x00700000, 0x003e0000, 0x00b50000, 0x00660000, 0x00480000, 0x00030000, 0x00f60000, 0x000e0000,
669 0x00610000, 0x00350000, 0x00570000, 0x00b90000, 0x00860000, 0x00c10000, 0x001d0000, 0x009e0000,
670 0x00e10000, 0x00f80000, 0x00980000, 0x00110000, 0x00690000, 0x00d90000, 0x008e0000, 0x00940000,
671 0x009b0000, 0x001e0000, 0x00870000, 0x00e90000, 0x00ce0000, 0x00550000, 0x00280000, 0x00df0000,
672 0x008c0000, 0x00a10000, 0x00890000, 0x000d0000, 0x00bf0000, 0x00e60000, 0x00420000, 0x00680000,
673 0x00410000, 0x00990000, 0x002d0000, 0x000f0000, 0x00b00000, 0x00540000, 0x00bb0000, 0x00160000
676 static const uint32_t Te4_3
[] = {
677 0x63000000, 0x7c000000, 0x77000000, 0x7b000000, 0xf2000000, 0x6b000000, 0x6f000000, 0xc5000000,
678 0x30000000, 0x01000000, 0x67000000, 0x2b000000, 0xfe000000, 0xd7000000, 0xab000000, 0x76000000,
679 0xca000000, 0x82000000, 0xc9000000, 0x7d000000, 0xfa000000, 0x59000000, 0x47000000, 0xf0000000,
680 0xad000000, 0xd4000000, 0xa2000000, 0xaf000000, 0x9c000000, 0xa4000000, 0x72000000, 0xc0000000,
681 0xb7000000, 0xfd000000, 0x93000000, 0x26000000, 0x36000000, 0x3f000000, 0xf7000000, 0xcc000000,
682 0x34000000, 0xa5000000, 0xe5000000, 0xf1000000, 0x71000000, 0xd8000000, 0x31000000, 0x15000000,
683 0x04000000, 0xc7000000, 0x23000000, 0xc3000000, 0x18000000, 0x96000000, 0x05000000, 0x9a000000,
684 0x07000000, 0x12000000, 0x80000000, 0xe2000000, 0xeb000000, 0x27000000, 0xb2000000, 0x75000000,
685 0x09000000, 0x83000000, 0x2c000000, 0x1a000000, 0x1b000000, 0x6e000000, 0x5a000000, 0xa0000000,
686 0x52000000, 0x3b000000, 0xd6000000, 0xb3000000, 0x29000000, 0xe3000000, 0x2f000000, 0x84000000,
687 0x53000000, 0xd1000000, 0x00000000, 0xed000000, 0x20000000, 0xfc000000, 0xb1000000, 0x5b000000,
688 0x6a000000, 0xcb000000, 0xbe000000, 0x39000000, 0x4a000000, 0x4c000000, 0x58000000, 0xcf000000,
689 0xd0000000, 0xef000000, 0xaa000000, 0xfb000000, 0x43000000, 0x4d000000, 0x33000000, 0x85000000,
690 0x45000000, 0xf9000000, 0x02000000, 0x7f000000, 0x50000000, 0x3c000000, 0x9f000000, 0xa8000000,
691 0x51000000, 0xa3000000, 0x40000000, 0x8f000000, 0x92000000, 0x9d000000, 0x38000000, 0xf5000000,
692 0xbc000000, 0xb6000000, 0xda000000, 0x21000000, 0x10000000, 0xff000000, 0xf3000000, 0xd2000000,
693 0xcd000000, 0x0c000000, 0x13000000, 0xec000000, 0x5f000000, 0x97000000, 0x44000000, 0x17000000,
694 0xc4000000, 0xa7000000, 0x7e000000, 0x3d000000, 0x64000000, 0x5d000000, 0x19000000, 0x73000000,
695 0x60000000, 0x81000000, 0x4f000000, 0xdc000000, 0x22000000, 0x2a000000, 0x90000000, 0x88000000,
696 0x46000000, 0xee000000, 0xb8000000, 0x14000000, 0xde000000, 0x5e000000, 0x0b000000, 0xdb000000,
697 0xe0000000, 0x32000000, 0x3a000000, 0x0a000000, 0x49000000, 0x06000000, 0x24000000, 0x5c000000,
698 0xc2000000, 0xd3000000, 0xac000000, 0x62000000, 0x91000000, 0x95000000, 0xe4000000, 0x79000000,
699 0xe7000000, 0xc8000000, 0x37000000, 0x6d000000, 0x8d000000, 0xd5000000, 0x4e000000, 0xa9000000,
700 0x6c000000, 0x56000000, 0xf4000000, 0xea000000, 0x65000000, 0x7a000000, 0xae000000, 0x08000000,
701 0xba000000, 0x78000000, 0x25000000, 0x2e000000, 0x1c000000, 0xa6000000, 0xb4000000, 0xc6000000,
702 0xe8000000, 0xdd000000, 0x74000000, 0x1f000000, 0x4b000000, 0xbd000000, 0x8b000000, 0x8a000000,
703 0x70000000, 0x3e000000, 0xb5000000, 0x66000000, 0x48000000, 0x03000000, 0xf6000000, 0x0e000000,
704 0x61000000, 0x35000000, 0x57000000, 0xb9000000, 0x86000000, 0xc1000000, 0x1d000000, 0x9e000000,
705 0xe1000000, 0xf8000000, 0x98000000, 0x11000000, 0x69000000, 0xd9000000, 0x8e000000, 0x94000000,
706 0x9b000000, 0x1e000000, 0x87000000, 0xe9000000, 0xce000000, 0x55000000, 0x28000000, 0xdf000000,
707 0x8c000000, 0xa1000000, 0x89000000, 0x0d000000, 0xbf000000, 0xe6000000, 0x42000000, 0x68000000,
708 0x41000000, 0x99000000, 0x2d000000, 0x0f000000, 0xb0000000, 0x54000000, 0xbb000000, 0x16000000
714 static const uint32_t TD1
[256] = {
715 0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e,
716 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303,
717 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c,
718 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3,
719 0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0,
720 0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9,
721 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259,
722 0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8,
723 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971,
724 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a,
725 0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f,
726 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b,
727 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8,
728 0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab,
729 0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708,
730 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682,
731 0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2,
732 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe,
733 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb,
734 0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10,
735 0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd,
736 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015,
737 0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e,
738 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee,
739 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000,
740 0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72,
741 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39,
742 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e,
743 0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91,
744 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a,
745 0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17,
746 0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9,
747 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60,
748 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e,
749 0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1,
750 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611,
751 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1,
752 0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3,
753 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964,
754 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390,
755 0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b,
756 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf,
757 0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46,
758 0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af,
759 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512,
760 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb,
761 0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a,
762 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8,
763 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c,
764 0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266,
765 0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8,
766 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6,
767 0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604,
768 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551,
769 0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41,
770 0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647,
771 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c,
772 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1,
773 0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737,
774 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db,
775 0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340,
776 0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95,
777 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1,
778 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857,
780 static const uint32_t TD2
[256] = {
781 0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27,
782 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3,
783 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502,
784 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562,
785 0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe,
786 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3,
787 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552,
788 0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9,
789 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9,
790 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce,
791 0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253,
792 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908,
793 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b,
794 0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655,
795 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337,
796 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16,
797 0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69,
798 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6,
799 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6,
800 0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e,
801 0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6,
802 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050,
803 0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9,
804 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8,
805 0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000,
806 0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a,
807 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d,
808 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436,
809 0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b,
810 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12,
811 0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b,
812 0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e,
813 0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f,
814 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb,
815 0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4,
816 0xdccad731, 0x85104263, 0x22401397, 0x112084c6,
817 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729,
818 0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1,
819 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9,
820 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233,
821 0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4,
822 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad,
823 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e,
824 0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3,
825 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25,
826 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b,
827 0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f,
828 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15,
829 0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0,
830 0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2,
831 0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7,
832 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791,
833 0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496,
834 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665,
835 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b,
836 0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6,
837 0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13,
838 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47,
839 0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7,
840 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844,
841 0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3,
842 0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d,
843 0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456,
844 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8,
846 static const uint32_t TD3
[256] = {
847 0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a,
848 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b,
849 0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5,
850 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5,
851 0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d,
852 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b,
853 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95,
854 0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e,
855 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27,
856 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d,
857 0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562,
858 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9,
859 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752,
860 0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66,
861 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3,
862 0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced,
863 0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e,
864 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4,
865 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4,
866 0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd,
867 0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d,
868 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60,
869 0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767,
870 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79,
871 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000,
872 0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c,
873 0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736,
874 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24,
875 0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b,
876 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c,
877 0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12,
878 0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814,
879 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3,
880 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b,
881 0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8,
882 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084,
883 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7,
884 0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077,
885 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247,
886 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22,
887 0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698,
888 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f,
889 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254,
890 0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582,
891 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf,
892 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb,
893 0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883,
894 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef,
895 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629,
896 0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035,
897 0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533,
898 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17,
899 0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4,
900 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46,
901 0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb,
902 0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d,
903 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb,
904 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a,
905 0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73,
906 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678,
907 0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2,
908 0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff,
909 0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064,
910 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0,
913 static const uint32_t Tks0
[] = {
914 0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331,
915 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69,
916 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381,
917 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9,
918 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a,
919 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012,
920 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa,
921 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2,
922 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7,
923 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f,
924 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77,
925 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f,
926 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc,
927 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4,
928 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c,
929 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54,
930 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6,
931 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e,
932 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976,
933 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e,
934 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd,
935 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5,
936 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d,
937 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55,
938 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430,
939 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68,
940 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480,
941 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8,
942 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b,
943 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713,
944 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb,
945 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3
948 static const uint32_t Tks1
[] = {
949 0x00000000, 0x0b0e090d, 0x161c121a, 0x1d121b17, 0x2c382434, 0x27362d39, 0x3a24362e, 0x312a3f23,
950 0x58704868, 0x537e4165, 0x4e6c5a72, 0x4562537f, 0x74486c5c, 0x7f466551, 0x62547e46, 0x695a774b,
951 0xb0e090d0, 0xbbee99dd, 0xa6fc82ca, 0xadf28bc7, 0x9cd8b4e4, 0x97d6bde9, 0x8ac4a6fe, 0x81caaff3,
952 0xe890d8b8, 0xe39ed1b5, 0xfe8ccaa2, 0xf582c3af, 0xc4a8fc8c, 0xcfa6f581, 0xd2b4ee96, 0xd9bae79b,
953 0x7bdb3bbb, 0x70d532b6, 0x6dc729a1, 0x66c920ac, 0x57e31f8f, 0x5ced1682, 0x41ff0d95, 0x4af10498,
954 0x23ab73d3, 0x28a57ade, 0x35b761c9, 0x3eb968c4, 0x0f9357e7, 0x049d5eea, 0x198f45fd, 0x12814cf0,
955 0xcb3bab6b, 0xc035a266, 0xdd27b971, 0xd629b07c, 0xe7038f5f, 0xec0d8652, 0xf11f9d45, 0xfa119448,
956 0x934be303, 0x9845ea0e, 0x8557f119, 0x8e59f814, 0xbf73c737, 0xb47dce3a, 0xa96fd52d, 0xa261dc20,
957 0xf6ad766d, 0xfda37f60, 0xe0b16477, 0xebbf6d7a, 0xda955259, 0xd19b5b54, 0xcc894043, 0xc787494e,
958 0xaedd3e05, 0xa5d33708, 0xb8c12c1f, 0xb3cf2512, 0x82e51a31, 0x89eb133c, 0x94f9082b, 0x9ff70126,
959 0x464de6bd, 0x4d43efb0, 0x5051f4a7, 0x5b5ffdaa, 0x6a75c289, 0x617bcb84, 0x7c69d093, 0x7767d99e,
960 0x1e3daed5, 0x1533a7d8, 0x0821bccf, 0x032fb5c2, 0x32058ae1, 0x390b83ec, 0x241998fb, 0x2f1791f6,
961 0x8d764dd6, 0x867844db, 0x9b6a5fcc, 0x906456c1, 0xa14e69e2, 0xaa4060ef, 0xb7527bf8, 0xbc5c72f5,
962 0xd50605be, 0xde080cb3, 0xc31a17a4, 0xc8141ea9, 0xf93e218a, 0xf2302887, 0xef223390, 0xe42c3a9d,
963 0x3d96dd06, 0x3698d40b, 0x2b8acf1c, 0x2084c611, 0x11aef932, 0x1aa0f03f, 0x07b2eb28, 0x0cbce225,
964 0x65e6956e, 0x6ee89c63, 0x73fa8774, 0x78f48e79, 0x49deb15a, 0x42d0b857, 0x5fc2a340, 0x54ccaa4d,
965 0xf741ecda, 0xfc4fe5d7, 0xe15dfec0, 0xea53f7cd, 0xdb79c8ee, 0xd077c1e3, 0xcd65daf4, 0xc66bd3f9,
966 0xaf31a4b2, 0xa43fadbf, 0xb92db6a8, 0xb223bfa5, 0x83098086, 0x8807898b, 0x9515929c, 0x9e1b9b91,
967 0x47a17c0a, 0x4caf7507, 0x51bd6e10, 0x5ab3671d, 0x6b99583e, 0x60975133, 0x7d854a24, 0x768b4329,
968 0x1fd13462, 0x14df3d6f, 0x09cd2678, 0x02c32f75, 0x33e91056, 0x38e7195b, 0x25f5024c, 0x2efb0b41,
969 0x8c9ad761, 0x8794de6c, 0x9a86c57b, 0x9188cc76, 0xa0a2f355, 0xabacfa58, 0xb6bee14f, 0xbdb0e842,
970 0xd4ea9f09, 0xdfe49604, 0xc2f68d13, 0xc9f8841e, 0xf8d2bb3d, 0xf3dcb230, 0xeecea927, 0xe5c0a02a,
971 0x3c7a47b1, 0x37744ebc, 0x2a6655ab, 0x21685ca6, 0x10426385, 0x1b4c6a88, 0x065e719f, 0x0d507892,
972 0x640a0fd9, 0x6f0406d4, 0x72161dc3, 0x791814ce, 0x48322bed, 0x433c22e0, 0x5e2e39f7, 0x552030fa,
973 0x01ec9ab7, 0x0ae293ba, 0x17f088ad, 0x1cfe81a0, 0x2dd4be83, 0x26dab78e, 0x3bc8ac99, 0x30c6a594,
974 0x599cd2df, 0x5292dbd2, 0x4f80c0c5, 0x448ec9c8, 0x75a4f6eb, 0x7eaaffe6, 0x63b8e4f1, 0x68b6edfc,
975 0xb10c0a67, 0xba02036a, 0xa710187d, 0xac1e1170, 0x9d342e53, 0x963a275e, 0x8b283c49, 0x80263544,
976 0xe97c420f, 0xe2724b02, 0xff605015, 0xf46e5918, 0xc544663b, 0xce4a6f36, 0xd3587421, 0xd8567d2c,
977 0x7a37a10c, 0x7139a801, 0x6c2bb316, 0x6725ba1b, 0x560f8538, 0x5d018c35, 0x40139722, 0x4b1d9e2f,
978 0x2247e964, 0x2949e069, 0x345bfb7e, 0x3f55f273, 0x0e7fcd50, 0x0571c45d, 0x1863df4a, 0x136dd647,
979 0xcad731dc, 0xc1d938d1, 0xdccb23c6, 0xd7c52acb, 0xe6ef15e8, 0xede11ce5, 0xf0f307f2, 0xfbfd0eff,
980 0x92a779b4, 0x99a970b9, 0x84bb6bae, 0x8fb562a3, 0xbe9f5d80, 0xb591548d, 0xa8834f9a, 0xa38d4697
983 static const uint32_t Tks2
[] = {
984 0x00000000, 0x0d0b0e09, 0x1a161c12, 0x171d121b, 0x342c3824, 0x3927362d, 0x2e3a2436, 0x23312a3f,
985 0x68587048, 0x65537e41, 0x724e6c5a, 0x7f456253, 0x5c74486c, 0x517f4665, 0x4662547e, 0x4b695a77,
986 0xd0b0e090, 0xddbbee99, 0xcaa6fc82, 0xc7adf28b, 0xe49cd8b4, 0xe997d6bd, 0xfe8ac4a6, 0xf381caaf,
987 0xb8e890d8, 0xb5e39ed1, 0xa2fe8cca, 0xaff582c3, 0x8cc4a8fc, 0x81cfa6f5, 0x96d2b4ee, 0x9bd9bae7,
988 0xbb7bdb3b, 0xb670d532, 0xa16dc729, 0xac66c920, 0x8f57e31f, 0x825ced16, 0x9541ff0d, 0x984af104,
989 0xd323ab73, 0xde28a57a, 0xc935b761, 0xc43eb968, 0xe70f9357, 0xea049d5e, 0xfd198f45, 0xf012814c,
990 0x6bcb3bab, 0x66c035a2, 0x71dd27b9, 0x7cd629b0, 0x5fe7038f, 0x52ec0d86, 0x45f11f9d, 0x48fa1194,
991 0x03934be3, 0x0e9845ea, 0x198557f1, 0x148e59f8, 0x37bf73c7, 0x3ab47dce, 0x2da96fd5, 0x20a261dc,
992 0x6df6ad76, 0x60fda37f, 0x77e0b164, 0x7aebbf6d, 0x59da9552, 0x54d19b5b, 0x43cc8940, 0x4ec78749,
993 0x05aedd3e, 0x08a5d337, 0x1fb8c12c, 0x12b3cf25, 0x3182e51a, 0x3c89eb13, 0x2b94f908, 0x269ff701,
994 0xbd464de6, 0xb04d43ef, 0xa75051f4, 0xaa5b5ffd, 0x896a75c2, 0x84617bcb, 0x937c69d0, 0x9e7767d9,
995 0xd51e3dae, 0xd81533a7, 0xcf0821bc, 0xc2032fb5, 0xe132058a, 0xec390b83, 0xfb241998, 0xf62f1791,
996 0xd68d764d, 0xdb867844, 0xcc9b6a5f, 0xc1906456, 0xe2a14e69, 0xefaa4060, 0xf8b7527b, 0xf5bc5c72,
997 0xbed50605, 0xb3de080c, 0xa4c31a17, 0xa9c8141e, 0x8af93e21, 0x87f23028, 0x90ef2233, 0x9de42c3a,
998 0x063d96dd, 0x0b3698d4, 0x1c2b8acf, 0x112084c6, 0x3211aef9, 0x3f1aa0f0, 0x2807b2eb, 0x250cbce2,
999 0x6e65e695, 0x636ee89c, 0x7473fa87, 0x7978f48e, 0x5a49deb1, 0x5742d0b8, 0x405fc2a3, 0x4d54ccaa,
1000 0xdaf741ec, 0xd7fc4fe5, 0xc0e15dfe, 0xcdea53f7, 0xeedb79c8, 0xe3d077c1, 0xf4cd65da, 0xf9c66bd3,
1001 0xb2af31a4, 0xbfa43fad, 0xa8b92db6, 0xa5b223bf, 0x86830980, 0x8b880789, 0x9c951592, 0x919e1b9b,
1002 0x0a47a17c, 0x074caf75, 0x1051bd6e, 0x1d5ab367, 0x3e6b9958, 0x33609751, 0x247d854a, 0x29768b43,
1003 0x621fd134, 0x6f14df3d, 0x7809cd26, 0x7502c32f, 0x5633e910, 0x5b38e719, 0x4c25f502, 0x412efb0b,
1004 0x618c9ad7, 0x6c8794de, 0x7b9a86c5, 0x769188cc, 0x55a0a2f3, 0x58abacfa, 0x4fb6bee1, 0x42bdb0e8,
1005 0x09d4ea9f, 0x04dfe496, 0x13c2f68d, 0x1ec9f884, 0x3df8d2bb, 0x30f3dcb2, 0x27eecea9, 0x2ae5c0a0,
1006 0xb13c7a47, 0xbc37744e, 0xab2a6655, 0xa621685c, 0x85104263, 0x881b4c6a, 0x9f065e71, 0x920d5078,
1007 0xd9640a0f, 0xd46f0406, 0xc372161d, 0xce791814, 0xed48322b, 0xe0433c22, 0xf75e2e39, 0xfa552030,
1008 0xb701ec9a, 0xba0ae293, 0xad17f088, 0xa01cfe81, 0x832dd4be, 0x8e26dab7, 0x993bc8ac, 0x9430c6a5,
1009 0xdf599cd2, 0xd25292db, 0xc54f80c0, 0xc8448ec9, 0xeb75a4f6, 0xe67eaaff, 0xf163b8e4, 0xfc68b6ed,
1010 0x67b10c0a, 0x6aba0203, 0x7da71018, 0x70ac1e11, 0x539d342e, 0x5e963a27, 0x498b283c, 0x44802635,
1011 0x0fe97c42, 0x02e2724b, 0x15ff6050, 0x18f46e59, 0x3bc54466, 0x36ce4a6f, 0x21d35874, 0x2cd8567d,
1012 0x0c7a37a1, 0x017139a8, 0x166c2bb3, 0x1b6725ba, 0x38560f85, 0x355d018c, 0x22401397, 0x2f4b1d9e,
1013 0x642247e9, 0x692949e0, 0x7e345bfb, 0x733f55f2, 0x500e7fcd, 0x5d0571c4, 0x4a1863df, 0x47136dd6,
1014 0xdccad731, 0xd1c1d938, 0xc6dccb23, 0xcbd7c52a, 0xe8e6ef15, 0xe5ede11c, 0xf2f0f307, 0xfffbfd0e,
1015 0xb492a779, 0xb999a970, 0xae84bb6b, 0xa38fb562, 0x80be9f5d, 0x8db59154, 0x9aa8834f, 0x97a38d46
1018 static const uint32_t Tks3
[] = {
1019 0x00000000, 0x090d0b0e, 0x121a161c, 0x1b171d12, 0x24342c38, 0x2d392736, 0x362e3a24, 0x3f23312a,
1020 0x48685870, 0x4165537e, 0x5a724e6c, 0x537f4562, 0x6c5c7448, 0x65517f46, 0x7e466254, 0x774b695a,
1021 0x90d0b0e0, 0x99ddbbee, 0x82caa6fc, 0x8bc7adf2, 0xb4e49cd8, 0xbde997d6, 0xa6fe8ac4, 0xaff381ca,
1022 0xd8b8e890, 0xd1b5e39e, 0xcaa2fe8c, 0xc3aff582, 0xfc8cc4a8, 0xf581cfa6, 0xee96d2b4, 0xe79bd9ba,
1023 0x3bbb7bdb, 0x32b670d5, 0x29a16dc7, 0x20ac66c9, 0x1f8f57e3, 0x16825ced, 0x0d9541ff, 0x04984af1,
1024 0x73d323ab, 0x7ade28a5, 0x61c935b7, 0x68c43eb9, 0x57e70f93, 0x5eea049d, 0x45fd198f, 0x4cf01281,
1025 0xab6bcb3b, 0xa266c035, 0xb971dd27, 0xb07cd629, 0x8f5fe703, 0x8652ec0d, 0x9d45f11f, 0x9448fa11,
1026 0xe303934b, 0xea0e9845, 0xf1198557, 0xf8148e59, 0xc737bf73, 0xce3ab47d, 0xd52da96f, 0xdc20a261,
1027 0x766df6ad, 0x7f60fda3, 0x6477e0b1, 0x6d7aebbf, 0x5259da95, 0x5b54d19b, 0x4043cc89, 0x494ec787,
1028 0x3e05aedd, 0x3708a5d3, 0x2c1fb8c1, 0x2512b3cf, 0x1a3182e5, 0x133c89eb, 0x082b94f9, 0x01269ff7,
1029 0xe6bd464d, 0xefb04d43, 0xf4a75051, 0xfdaa5b5f, 0xc2896a75, 0xcb84617b, 0xd0937c69, 0xd99e7767,
1030 0xaed51e3d, 0xa7d81533, 0xbccf0821, 0xb5c2032f, 0x8ae13205, 0x83ec390b, 0x98fb2419, 0x91f62f17,
1031 0x4dd68d76, 0x44db8678, 0x5fcc9b6a, 0x56c19064, 0x69e2a14e, 0x60efaa40, 0x7bf8b752, 0x72f5bc5c,
1032 0x05bed506, 0x0cb3de08, 0x17a4c31a, 0x1ea9c814, 0x218af93e, 0x2887f230, 0x3390ef22, 0x3a9de42c,
1033 0xdd063d96, 0xd40b3698, 0xcf1c2b8a, 0xc6112084, 0xf93211ae, 0xf03f1aa0, 0xeb2807b2, 0xe2250cbc,
1034 0x956e65e6, 0x9c636ee8, 0x877473fa, 0x8e7978f4, 0xb15a49de, 0xb85742d0, 0xa3405fc2, 0xaa4d54cc,
1035 0xecdaf741, 0xe5d7fc4f, 0xfec0e15d, 0xf7cdea53, 0xc8eedb79, 0xc1e3d077, 0xdaf4cd65, 0xd3f9c66b,
1036 0xa4b2af31, 0xadbfa43f, 0xb6a8b92d, 0xbfa5b223, 0x80868309, 0x898b8807, 0x929c9515, 0x9b919e1b,
1037 0x7c0a47a1, 0x75074caf, 0x6e1051bd, 0x671d5ab3, 0x583e6b99, 0x51336097, 0x4a247d85, 0x4329768b,
1038 0x34621fd1, 0x3d6f14df, 0x267809cd, 0x2f7502c3, 0x105633e9, 0x195b38e7, 0x024c25f5, 0x0b412efb,
1039 0xd7618c9a, 0xde6c8794, 0xc57b9a86, 0xcc769188, 0xf355a0a2, 0xfa58abac, 0xe14fb6be, 0xe842bdb0,
1040 0x9f09d4ea, 0x9604dfe4, 0x8d13c2f6, 0x841ec9f8, 0xbb3df8d2, 0xb230f3dc, 0xa927eece, 0xa02ae5c0,
1041 0x47b13c7a, 0x4ebc3774, 0x55ab2a66, 0x5ca62168, 0x63851042, 0x6a881b4c, 0x719f065e, 0x78920d50,
1042 0x0fd9640a, 0x06d46f04, 0x1dc37216, 0x14ce7918, 0x2bed4832, 0x22e0433c, 0x39f75e2e, 0x30fa5520,
1043 0x9ab701ec, 0x93ba0ae2, 0x88ad17f0, 0x81a01cfe, 0xbe832dd4, 0xb78e26da, 0xac993bc8, 0xa59430c6,
1044 0xd2df599c, 0xdbd25292, 0xc0c54f80, 0xc9c8448e, 0xf6eb75a4, 0xffe67eaa, 0xe4f163b8, 0xedfc68b6,
1045 0x0a67b10c, 0x036aba02, 0x187da710, 0x1170ac1e, 0x2e539d34, 0x275e963a, 0x3c498b28, 0x35448026,
1046 0x420fe97c, 0x4b02e272, 0x5015ff60, 0x5918f46e, 0x663bc544, 0x6f36ce4a, 0x7421d358, 0x7d2cd856,
1047 0xa10c7a37, 0xa8017139, 0xb3166c2b, 0xba1b6725, 0x8538560f, 0x8c355d01, 0x97224013, 0x9e2f4b1d,
1048 0xe9642247, 0xe0692949, 0xfb7e345b, 0xf2733f55, 0xcd500e7f, 0xc45d0571, 0xdf4a1863, 0xd647136d,
1049 0x31dccad7, 0x38d1c1d9, 0x23c6dccb, 0x2acbd7c5, 0x15e8e6ef, 0x1ce5ede1, 0x07f2f0f3, 0x0efffbfd,
1050 0x79b492a7, 0x70b999a9, 0x6bae84bb, 0x62a38fb5, 0x5d80be9f, 0x548db591, 0x4f9aa883, 0x4697a38d
1053 #endif /* ENCRYPT_ONLY */
1055 #endif /* SMALL CODE */
1057 static const uint32_t rcon
[] = {
1058 0x01000000, 0x02000000, 0x04000000, 0x08000000,
1059 0x10000000, 0x20000000, 0x40000000, 0x80000000,
1060 0x1B000000, 0x36000000, /* for 128-bit blocks, Rijndael never uses more than 10 rcon values */