BeeCrypt 4.2.1

include/beecrypt/aes_be.h

Go to the documentation of this file.
00001 /*
00002  * Copyright (c) 2003 Bob Deblier
00003  *
00004  * This library is free software; you can redistribute it and/or
00005  * modify it under the terms of the GNU Lesser General Public
00006  * License as published by the Free Software Foundation; either
00007  * version 2.1 of the License, or (at your option) any later version.
00008  *
00009  * This library is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012  * Lesser General Public License for more details.
00013  *
00014  * You should have received a copy of the GNU Lesser General Public
00015  * License along with this library; if not, write to the Free Software
00016  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00017  *
00018  */
00019 
00020 typedef struct
00021 {
00022     const uint32_t t0[256];
00023     const uint32_t t1[256];
00024     const uint32_t t2[256];
00025     const uint32_t t3[256];
00026     const uint32_t t4[256];
00027 } _table;
00028 
00029 const _table _aes_enc = {
00030     {   0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d,
00031         0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554,
00032         0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d,
00033         0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a,
00034         0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87,
00035         0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b,
00036         0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea,
00037         0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b,
00038         0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a,
00039         0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f,
00040         0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108,
00041         0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f,
00042         0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e,
00043         0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5,
00044         0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d,
00045         0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f,
00046         0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e,
00047         0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb,
00048         0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce,
00049         0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497,
00050         0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c,
00051         0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed,
00052         0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b,
00053         0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a,
00054         0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16,
00055         0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594,
00056         0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81,
00057         0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3,
00058         0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a,
00059         0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504,
00060         0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163,
00061         0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d,
00062         0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f,
00063         0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739,
00064         0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47,
00065         0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395,
00066         0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f,
00067         0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883,
00068         0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c,
00069         0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76,
00070         0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e,
00071         0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4,
00072         0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6,
00073         0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b,
00074         0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7,
00075         0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0,
00076         0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25,
00077         0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818,
00078         0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72,
00079         0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651,
00080         0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21,
00081         0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85,
00082         0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa,
00083         0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12,
00084         0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0,
00085         0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9,
00086         0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133,
00087         0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7,
00088         0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920,
00089         0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a,
00090         0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17,
00091         0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8,
00092         0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11,
00093         0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a },
00094     {   0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b,
00095         0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5,
00096         0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b,
00097         0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676,
00098         0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d,
00099         0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0,
00100         0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf,
00101         0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0,
00102         0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626,
00103         0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc,
00104         0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1,
00105         0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515,
00106         0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3,
00107         0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a,
00108         0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2,
00109         0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575,
00110         0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a,
00111         0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0,
00112         0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3,
00113         0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484,
00114         0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded,
00115         0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b,
00116         0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939,
00117         0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf,
00118         0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb,
00119         0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585,
00120         0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f,
00121         0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8,
00122         0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f,
00123         0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5,
00124         0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121,
00125         0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2,
00126         0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec,
00127         0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717,
00128         0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d,
00129         0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373,
00130         0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc,
00131         0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888,
00132         0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414,
00133         0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb,
00134         0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a,
00135         0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c,
00136         0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262,
00137         0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979,
00138         0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d,
00139         0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9,
00140         0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea,
00141         0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808,
00142         0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e,
00143         0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6,
00144         0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f,
00145         0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a,
00146         0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666,
00147         0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e,
00148         0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9,
00149         0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e,
00150         0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111,
00151         0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494,
00152         0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9,
00153         0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf,
00154         0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d,
00155         0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868,
00156         0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f,
00157         0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616 },
00158     {   0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b,
00159         0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5,
00160         0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b,
00161         0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76,
00162         0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d,
00163         0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0,
00164         0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af,
00165         0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0,
00166         0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26,
00167         0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc,
00168         0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1,
00169         0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15,
00170         0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3,
00171         0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a,
00172         0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2,
00173         0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75,
00174         0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a,
00175         0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0,
00176         0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3,
00177         0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384,
00178         0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed,
00179         0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b,
00180         0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239,
00181         0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf,
00182         0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb,
00183         0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185,
00184         0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f,
00185         0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8,
00186         0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f,
00187         0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5,
00188         0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221,
00189         0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2,
00190         0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec,
00191         0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17,
00192         0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d,
00193         0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673,
00194         0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc,
00195         0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88,
00196         0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814,
00197         0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb,
00198         0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a,
00199         0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c,
00200         0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462,
00201         0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279,
00202         0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d,
00203         0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9,
00204         0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea,
00205         0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008,
00206         0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e,
00207         0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6,
00208         0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f,
00209         0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a,
00210         0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66,
00211         0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e,
00212         0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9,
00213         0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e,
00214         0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211,
00215         0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394,
00216         0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9,
00217         0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df,
00218         0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d,
00219         0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068,
00220         0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f,
00221         0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16 },
00222     {   0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6,
00223         0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491,
00224         0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56,
00225         0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec,
00226         0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa,
00227         0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb,
00228         0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45,
00229         0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b,
00230         0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c,
00231         0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83,
00232         0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9,
00233         0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a,
00234         0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d,
00235         0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f,
00236         0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf,
00237         0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea,
00238         0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34,
00239         0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b,
00240         0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d,
00241         0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713,
00242         0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1,
00243         0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6,
00244         0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72,
00245         0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85,
00246         0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed,
00247         0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411,
00248         0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe,
00249         0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b,
00250         0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05,
00251         0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1,
00252         0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342,
00253         0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf,
00254         0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3,
00255         0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e,
00256         0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a,
00257         0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6,
00258         0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3,
00259         0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b,
00260         0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28,
00261         0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad,
00262         0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14,
00263         0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8,
00264         0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4,
00265         0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2,
00266         0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da,
00267         0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049,
00268         0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf,
00269         0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810,
00270         0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c,
00271         0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197,
00272         0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e,
00273         0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f,
00274         0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc,
00275         0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c,
00276         0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069,
00277         0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927,
00278         0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322,
00279         0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733,
00280         0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9,
00281         0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5,
00282         0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a,
00283         0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0,
00284         0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e,
00285         0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c },
00286     {   0x63636363, 0x7c7c7c7c, 0x77777777, 0x7b7b7b7b,
00287         0xf2f2f2f2, 0x6b6b6b6b, 0x6f6f6f6f, 0xc5c5c5c5,
00288         0x30303030, 0x01010101, 0x67676767, 0x2b2b2b2b,
00289         0xfefefefe, 0xd7d7d7d7, 0xabababab, 0x76767676,
00290         0xcacacaca, 0x82828282, 0xc9c9c9c9, 0x7d7d7d7d,
00291         0xfafafafa, 0x59595959, 0x47474747, 0xf0f0f0f0,
00292         0xadadadad, 0xd4d4d4d4, 0xa2a2a2a2, 0xafafafaf,
00293         0x9c9c9c9c, 0xa4a4a4a4, 0x72727272, 0xc0c0c0c0,
00294         0xb7b7b7b7, 0xfdfdfdfd, 0x93939393, 0x26262626,
00295         0x36363636, 0x3f3f3f3f, 0xf7f7f7f7, 0xcccccccc,
00296         0x34343434, 0xa5a5a5a5, 0xe5e5e5e5, 0xf1f1f1f1,
00297         0x71717171, 0xd8d8d8d8, 0x31313131, 0x15151515,
00298         0x04040404, 0xc7c7c7c7, 0x23232323, 0xc3c3c3c3,
00299         0x18181818, 0x96969696, 0x05050505, 0x9a9a9a9a,
00300         0x07070707, 0x12121212, 0x80808080, 0xe2e2e2e2,
00301         0xebebebeb, 0x27272727, 0xb2b2b2b2, 0x75757575,
00302         0x09090909, 0x83838383, 0x2c2c2c2c, 0x1a1a1a1a,
00303         0x1b1b1b1b, 0x6e6e6e6e, 0x5a5a5a5a, 0xa0a0a0a0,
00304         0x52525252, 0x3b3b3b3b, 0xd6d6d6d6, 0xb3b3b3b3,
00305         0x29292929, 0xe3e3e3e3, 0x2f2f2f2f, 0x84848484,
00306         0x53535353, 0xd1d1d1d1, 0x00000000, 0xedededed,
00307         0x20202020, 0xfcfcfcfc, 0xb1b1b1b1, 0x5b5b5b5b,
00308         0x6a6a6a6a, 0xcbcbcbcb, 0xbebebebe, 0x39393939,
00309         0x4a4a4a4a, 0x4c4c4c4c, 0x58585858, 0xcfcfcfcf,
00310         0xd0d0d0d0, 0xefefefef, 0xaaaaaaaa, 0xfbfbfbfb,
00311         0x43434343, 0x4d4d4d4d, 0x33333333, 0x85858585,
00312         0x45454545, 0xf9f9f9f9, 0x02020202, 0x7f7f7f7f,
00313         0x50505050, 0x3c3c3c3c, 0x9f9f9f9f, 0xa8a8a8a8,
00314         0x51515151, 0xa3a3a3a3, 0x40404040, 0x8f8f8f8f,
00315         0x92929292, 0x9d9d9d9d, 0x38383838, 0xf5f5f5f5,
00316         0xbcbcbcbc, 0xb6b6b6b6, 0xdadadada, 0x21212121,
00317         0x10101010, 0xffffffff, 0xf3f3f3f3, 0xd2d2d2d2,
00318         0xcdcdcdcd, 0x0c0c0c0c, 0x13131313, 0xecececec,
00319         0x5f5f5f5f, 0x97979797, 0x44444444, 0x17171717,
00320         0xc4c4c4c4, 0xa7a7a7a7, 0x7e7e7e7e, 0x3d3d3d3d,
00321         0x64646464, 0x5d5d5d5d, 0x19191919, 0x73737373,
00322         0x60606060, 0x81818181, 0x4f4f4f4f, 0xdcdcdcdc,
00323         0x22222222, 0x2a2a2a2a, 0x90909090, 0x88888888,
00324         0x46464646, 0xeeeeeeee, 0xb8b8b8b8, 0x14141414,
00325         0xdededede, 0x5e5e5e5e, 0x0b0b0b0b, 0xdbdbdbdb,
00326         0xe0e0e0e0, 0x32323232, 0x3a3a3a3a, 0x0a0a0a0a,
00327         0x49494949, 0x06060606, 0x24242424, 0x5c5c5c5c,
00328         0xc2c2c2c2, 0xd3d3d3d3, 0xacacacac, 0x62626262,
00329         0x91919191, 0x95959595, 0xe4e4e4e4, 0x79797979,
00330         0xe7e7e7e7, 0xc8c8c8c8, 0x37373737, 0x6d6d6d6d,
00331         0x8d8d8d8d, 0xd5d5d5d5, 0x4e4e4e4e, 0xa9a9a9a9,
00332         0x6c6c6c6c, 0x56565656, 0xf4f4f4f4, 0xeaeaeaea,
00333         0x65656565, 0x7a7a7a7a, 0xaeaeaeae, 0x08080808,
00334         0xbabababa, 0x78787878, 0x25252525, 0x2e2e2e2e,
00335         0x1c1c1c1c, 0xa6a6a6a6, 0xb4b4b4b4, 0xc6c6c6c6,
00336         0xe8e8e8e8, 0xdddddddd, 0x74747474, 0x1f1f1f1f,
00337         0x4b4b4b4b, 0xbdbdbdbd, 0x8b8b8b8b, 0x8a8a8a8a,
00338         0x70707070, 0x3e3e3e3e, 0xb5b5b5b5, 0x66666666,
00339         0x48484848, 0x03030303, 0xf6f6f6f6, 0x0e0e0e0e,
00340         0x61616161, 0x35353535, 0x57575757, 0xb9b9b9b9,
00341         0x86868686, 0xc1c1c1c1, 0x1d1d1d1d, 0x9e9e9e9e,
00342         0xe1e1e1e1, 0xf8f8f8f8, 0x98989898, 0x11111111,
00343         0x69696969, 0xd9d9d9d9, 0x8e8e8e8e, 0x94949494,
00344         0x9b9b9b9b, 0x1e1e1e1e, 0x87878787, 0xe9e9e9e9,
00345         0xcececece, 0x55555555, 0x28282828, 0xdfdfdfdf,
00346         0x8c8c8c8c, 0xa1a1a1a1, 0x89898989, 0x0d0d0d0d,
00347         0xbfbfbfbf, 0xe6e6e6e6, 0x42424242, 0x68686868,
00348         0x41414141, 0x99999999, 0x2d2d2d2d, 0x0f0f0f0f,
00349         0xb0b0b0b0, 0x54545454, 0xbbbbbbbb, 0x16161616 }
00350 };
00351 
00352 #define _ae0 _aes_enc.t0
00353 #define _ae1 _aes_enc.t1
00354 #define _ae2 _aes_enc.t2
00355 #define _ae3 _aes_enc.t3
00356 #define _ae4 _aes_enc.t4
00357 
00358 const _table _aes_dec = {
00359     {   0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96,
00360         0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393,
00361         0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25,
00362         0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f,
00363         0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1,
00364         0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6,
00365         0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da,
00366         0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844,
00367         0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd,
00368         0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4,
00369         0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45,
00370         0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94,
00371         0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7,
00372         0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a,
00373         0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5,
00374         0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c,
00375         0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1,
00376         0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a,
00377         0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75,
00378         0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051,
00379         0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46,
00380         0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff,
00381         0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77,
00382         0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb,
00383         0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000,
00384         0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e,
00385         0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927,
00386         0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a,
00387         0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e,
00388         0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16,
00389         0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d,
00390         0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8,
00391         0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd,
00392         0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34,
00393         0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163,
00394         0xd731dcca, 0x42638510, 0x13972240, 0x84c61120,
00395         0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d,
00396         0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0,
00397         0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422,
00398         0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef,
00399         0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36,
00400         0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4,
00401         0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662,
00402         0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5,
00403         0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3,
00404         0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b,
00405         0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8,
00406         0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6,
00407         0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6,
00408         0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0,
00409         0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815,
00410         0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f,
00411         0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df,
00412         0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f,
00413         0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e,
00414         0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713,
00415         0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89,
00416         0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c,
00417         0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf,
00418         0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86,
00419         0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f,
00420         0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541,
00421         0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190,
00422         0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742 },
00423     {   0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e,
00424         0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303,
00425         0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c,
00426         0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3,
00427         0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0,
00428         0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9,
00429         0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259,
00430         0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8,
00431         0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971,
00432         0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a,
00433         0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f,
00434         0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b,
00435         0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8,
00436         0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab,
00437         0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708,
00438         0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682,
00439         0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2,
00440         0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe,
00441         0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb,
00442         0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10,
00443         0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd,
00444         0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015,
00445         0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e,
00446         0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee,
00447         0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000,
00448         0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72,
00449         0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39,
00450         0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e,
00451         0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91,
00452         0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a,
00453         0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17,
00454         0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9,
00455         0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60,
00456         0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e,
00457         0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1,
00458         0xcad731dc, 0x10426385, 0x40139722, 0x2084c611,
00459         0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1,
00460         0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3,
00461         0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964,
00462         0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390,
00463         0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b,
00464         0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf,
00465         0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46,
00466         0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af,
00467         0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512,
00468         0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb,
00469         0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a,
00470         0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8,
00471         0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c,
00472         0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266,
00473         0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8,
00474         0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6,
00475         0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604,
00476         0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551,
00477         0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41,
00478         0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647,
00479         0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c,
00480         0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1,
00481         0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737,
00482         0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db,
00483         0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340,
00484         0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95,
00485         0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1,
00486         0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857 },
00487     {   0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27,
00488         0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3,
00489         0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502,
00490         0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562,
00491         0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe,
00492         0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3,
00493         0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552,
00494         0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9,
00495         0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9,
00496         0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce,
00497         0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253,
00498         0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908,
00499         0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b,
00500         0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655,
00501         0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337,
00502         0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16,
00503         0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69,
00504         0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6,
00505         0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6,
00506         0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e,
00507         0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6,
00508         0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050,
00509         0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9,
00510         0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8,
00511         0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000,
00512         0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a,
00513         0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d,
00514         0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436,
00515         0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b,
00516         0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12,
00517         0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b,
00518         0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e,
00519         0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f,
00520         0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb,
00521         0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4,
00522         0xdccad731, 0x85104263, 0x22401397, 0x112084c6,
00523         0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729,
00524         0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1,
00525         0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9,
00526         0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233,
00527         0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4,
00528         0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad,
00529         0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e,
00530         0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3,
00531         0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25,
00532         0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b,
00533         0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f,
00534         0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15,
00535         0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0,
00536         0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2,
00537         0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7,
00538         0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791,
00539         0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496,
00540         0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665,
00541         0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b,
00542         0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6,
00543         0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13,
00544         0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47,
00545         0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7,
00546         0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844,
00547         0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3,
00548         0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d,
00549         0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456,
00550         0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8 },
00551     {   0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a,
00552         0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b,
00553         0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5,
00554         0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5,
00555         0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d,
00556         0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b,
00557         0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95,
00558         0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e,
00559         0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27,
00560         0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d,
00561         0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562,
00562         0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9,
00563         0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752,
00564         0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66,
00565         0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3,
00566         0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced,
00567         0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e,
00568         0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4,
00569         0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4,
00570         0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd,
00571         0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d,
00572         0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60,
00573         0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767,
00574         0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79,
00575         0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000,
00576         0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c,
00577         0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736,
00578         0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24,
00579         0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b,
00580         0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c,
00581         0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12,
00582         0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814,
00583         0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3,
00584         0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b,
00585         0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8,
00586         0x31dccad7, 0x63851042, 0x97224013, 0xc6112084,
00587         0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7,
00588         0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077,
00589         0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247,
00590         0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22,
00591         0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698,
00592         0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f,
00593         0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254,
00594         0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582,
00595         0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf,
00596         0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb,
00597         0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883,
00598         0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef,
00599         0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629,
00600         0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035,
00601         0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533,
00602         0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17,
00603         0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4,
00604         0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46,
00605         0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb,
00606         0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d,
00607         0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb,
00608         0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a,
00609         0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73,
00610         0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678,
00611         0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2,
00612         0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff,
00613         0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064,
00614         0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0 },
00615     {   0x52525252, 0x09090909, 0x6a6a6a6a, 0xd5d5d5d5,
00616         0x30303030, 0x36363636, 0xa5a5a5a5, 0x38383838,
00617         0xbfbfbfbf, 0x40404040, 0xa3a3a3a3, 0x9e9e9e9e,
00618         0x81818181, 0xf3f3f3f3, 0xd7d7d7d7, 0xfbfbfbfb,
00619         0x7c7c7c7c, 0xe3e3e3e3, 0x39393939, 0x82828282,
00620         0x9b9b9b9b, 0x2f2f2f2f, 0xffffffff, 0x87878787,
00621         0x34343434, 0x8e8e8e8e, 0x43434343, 0x44444444,
00622         0xc4c4c4c4, 0xdededede, 0xe9e9e9e9, 0xcbcbcbcb,
00623         0x54545454, 0x7b7b7b7b, 0x94949494, 0x32323232,
00624         0xa6a6a6a6, 0xc2c2c2c2, 0x23232323, 0x3d3d3d3d,
00625         0xeeeeeeee, 0x4c4c4c4c, 0x95959595, 0x0b0b0b0b,
00626         0x42424242, 0xfafafafa, 0xc3c3c3c3, 0x4e4e4e4e,
00627         0x08080808, 0x2e2e2e2e, 0xa1a1a1a1, 0x66666666,
00628         0x28282828, 0xd9d9d9d9, 0x24242424, 0xb2b2b2b2,
00629         0x76767676, 0x5b5b5b5b, 0xa2a2a2a2, 0x49494949,
00630         0x6d6d6d6d, 0x8b8b8b8b, 0xd1d1d1d1, 0x25252525,
00631         0x72727272, 0xf8f8f8f8, 0xf6f6f6f6, 0x64646464,
00632         0x86868686, 0x68686868, 0x98989898, 0x16161616,
00633         0xd4d4d4d4, 0xa4a4a4a4, 0x5c5c5c5c, 0xcccccccc,
00634         0x5d5d5d5d, 0x65656565, 0xb6b6b6b6, 0x92929292,
00635         0x6c6c6c6c, 0x70707070, 0x48484848, 0x50505050,
00636         0xfdfdfdfd, 0xedededed, 0xb9b9b9b9, 0xdadadada,
00637         0x5e5e5e5e, 0x15151515, 0x46464646, 0x57575757,
00638         0xa7a7a7a7, 0x8d8d8d8d, 0x9d9d9d9d, 0x84848484,
00639         0x90909090, 0xd8d8d8d8, 0xabababab, 0x00000000,
00640         0x8c8c8c8c, 0xbcbcbcbc, 0xd3d3d3d3, 0x0a0a0a0a,
00641         0xf7f7f7f7, 0xe4e4e4e4, 0x58585858, 0x05050505,
00642         0xb8b8b8b8, 0xb3b3b3b3, 0x45454545, 0x06060606,
00643         0xd0d0d0d0, 0x2c2c2c2c, 0x1e1e1e1e, 0x8f8f8f8f,
00644         0xcacacaca, 0x3f3f3f3f, 0x0f0f0f0f, 0x02020202,
00645         0xc1c1c1c1, 0xafafafaf, 0xbdbdbdbd, 0x03030303,
00646         0x01010101, 0x13131313, 0x8a8a8a8a, 0x6b6b6b6b,
00647         0x3a3a3a3a, 0x91919191, 0x11111111, 0x41414141,
00648         0x4f4f4f4f, 0x67676767, 0xdcdcdcdc, 0xeaeaeaea,
00649         0x97979797, 0xf2f2f2f2, 0xcfcfcfcf, 0xcececece,
00650         0xf0f0f0f0, 0xb4b4b4b4, 0xe6e6e6e6, 0x73737373,
00651         0x96969696, 0xacacacac, 0x74747474, 0x22222222,
00652         0xe7e7e7e7, 0xadadadad, 0x35353535, 0x85858585,
00653         0xe2e2e2e2, 0xf9f9f9f9, 0x37373737, 0xe8e8e8e8,
00654         0x1c1c1c1c, 0x75757575, 0xdfdfdfdf, 0x6e6e6e6e,
00655         0x47474747, 0xf1f1f1f1, 0x1a1a1a1a, 0x71717171,
00656         0x1d1d1d1d, 0x29292929, 0xc5c5c5c5, 0x89898989,
00657         0x6f6f6f6f, 0xb7b7b7b7, 0x62626262, 0x0e0e0e0e,
00658         0xaaaaaaaa, 0x18181818, 0xbebebebe, 0x1b1b1b1b,
00659         0xfcfcfcfc, 0x56565656, 0x3e3e3e3e, 0x4b4b4b4b,
00660         0xc6c6c6c6, 0xd2d2d2d2, 0x79797979, 0x20202020,
00661         0x9a9a9a9a, 0xdbdbdbdb, 0xc0c0c0c0, 0xfefefefe,
00662         0x78787878, 0xcdcdcdcd, 0x5a5a5a5a, 0xf4f4f4f4,
00663         0x1f1f1f1f, 0xdddddddd, 0xa8a8a8a8, 0x33333333,
00664         0x88888888, 0x07070707, 0xc7c7c7c7, 0x31313131,
00665         0xb1b1b1b1, 0x12121212, 0x10101010, 0x59595959,
00666         0x27272727, 0x80808080, 0xecececec, 0x5f5f5f5f,
00667         0x60606060, 0x51515151, 0x7f7f7f7f, 0xa9a9a9a9,
00668         0x19191919, 0xb5b5b5b5, 0x4a4a4a4a, 0x0d0d0d0d,
00669         0x2d2d2d2d, 0xe5e5e5e5, 0x7a7a7a7a, 0x9f9f9f9f,
00670         0x93939393, 0xc9c9c9c9, 0x9c9c9c9c, 0xefefefef,
00671         0xa0a0a0a0, 0xe0e0e0e0, 0x3b3b3b3b, 0x4d4d4d4d,
00672         0xaeaeaeae, 0x2a2a2a2a, 0xf5f5f5f5, 0xb0b0b0b0,
00673         0xc8c8c8c8, 0xebebebeb, 0xbbbbbbbb, 0x3c3c3c3c,
00674         0x83838383, 0x53535353, 0x99999999, 0x61616161,
00675         0x17171717, 0x2b2b2b2b, 0x04040404, 0x7e7e7e7e,
00676         0xbabababa, 0x77777777, 0xd6d6d6d6, 0x26262626,
00677         0xe1e1e1e1, 0x69696969, 0x14141414, 0x63636363,
00678         0x55555555, 0x21212121, 0x0c0c0c0c, 0x7d7d7d7d }
00679 };
00680 
00681 #define _ad0 _aes_dec.t0
00682 #define _ad1 _aes_dec.t1
00683 #define _ad2 _aes_dec.t2
00684 #define _ad3 _aes_dec.t3
00685 #define _ad4 _aes_dec.t4
00686 
00687 static const uint32_t _arc[] = {
00688     0x01000000, 0x02000000, 0x04000000, 0x08000000,
00689     0x10000000, 0x20000000, 0x40000000, 0x80000000,
00690     0x1b000000, 0x36000000
00691 };
00692 
00693 #define etfs(i) \
00694     t0 = \
00695         _ae0[(s0 >> 24)       ] ^ \
00696         _ae1[(s1 >> 16) & 0xff] ^ \
00697         _ae2[(s2 >>  8) & 0xff] ^ \
00698         _ae3[(s3      ) & 0xff] ^ \
00699         rk[i+0]; \
00700     t1 = \
00701         _ae0[(s1 >> 24)       ] ^ \
00702         _ae1[(s2 >> 16) & 0xff] ^ \
00703         _ae2[(s3 >>  8) & 0xff] ^ \
00704         _ae3[(s0      ) & 0xff] ^ \
00705         rk[i+1]; \
00706     t2 = \
00707         _ae0[(s2 >> 24)       ] ^ \
00708         _ae1[(s3 >> 16) & 0xff] ^ \
00709         _ae2[(s0 >>  8) & 0xff] ^ \
00710         _ae3[(s1      ) & 0xff] ^ \
00711         rk[i+2]; \
00712     t3 = \
00713         _ae0[(s3 >> 24)       ] ^ \
00714         _ae1[(s0 >> 16) & 0xff] ^ \
00715         _ae2[(s1 >>  8) & 0xff] ^ \
00716         _ae3[(s2      ) & 0xff] ^ \
00717         rk[i+3];
00718 
00719 #define esft(i) \
00720     s0 = \
00721         _ae0[(t0 >> 24)       ] ^ \
00722         _ae1[(t1 >> 16) & 0xff] ^ \
00723         _ae2[(t2 >>  8) & 0xff] ^ \
00724         _ae3[(t3      ) & 0xff] ^ \
00725         rk[i+0]; \
00726     s1 = \
00727         _ae0[(t1 >> 24)       ] ^ \
00728         _ae1[(t2 >> 16) & 0xff] ^ \
00729         _ae2[(t3 >>  8) & 0xff] ^ \
00730         _ae3[(t0      ) & 0xff] ^ \
00731         rk[i+1]; \
00732     s2 = \
00733         _ae0[(t2 >> 24)       ] ^ \
00734         _ae1[(t3 >> 16) & 0xff] ^ \
00735         _ae2[(t0 >>  8) & 0xff] ^ \
00736         _ae3[(t1      ) & 0xff] ^ \
00737         rk[i+2]; \
00738     s3 = \
00739         _ae0[(t3 >> 24)       ] ^ \
00740         _ae1[(t0 >> 16) & 0xff] ^ \
00741         _ae2[(t1 >>  8) & 0xff] ^ \
00742         _ae3[(t2      ) & 0xff] ^ \
00743         rk[i+3];
00744 
00745 #define elr() \
00746     s0 = \
00747         (_ae4[(t0 >> 24)       ] & 0xff000000) ^ \
00748         (_ae4[(t1 >> 16) & 0xff] & 0x00ff0000) ^ \
00749         (_ae4[(t2 >>  8) & 0xff] & 0x0000ff00) ^ \
00750         (_ae4[(t3      ) & 0xff] & 0x000000ff) ^ \
00751         rk[0]; \
00752     s1 = \
00753         (_ae4[(t1 >> 24)       ] & 0xff000000) ^ \
00754         (_ae4[(t2 >> 16) & 0xff] & 0x00ff0000) ^ \
00755         (_ae4[(t3 >>  8) & 0xff] & 0x0000ff00) ^ \
00756         (_ae4[(t0      ) & 0xff] & 0x000000ff) ^ \
00757         rk[1]; \
00758     s2 = \
00759         (_ae4[(t2 >> 24)       ] & 0xff000000) ^ \
00760         (_ae4[(t3 >> 16) & 0xff] & 0x00ff0000) ^ \
00761         (_ae4[(t0 >>  8) & 0xff] & 0x0000ff00) ^ \
00762         (_ae4[(t1      ) & 0xff] & 0x000000ff) ^ \
00763         rk[2]; \
00764     s3 = \
00765         (_ae4[(t3 >> 24)       ] & 0xff000000) ^ \
00766         (_ae4[(t0 >> 16) & 0xff] & 0x00ff0000) ^ \
00767         (_ae4[(t1 >>  8) & 0xff] & 0x0000ff00) ^ \
00768         (_ae4[(t2      ) & 0xff] & 0x000000ff) ^ \
00769         rk[3];
00770 
00771 #define dtfs(i) \
00772     t0 = \
00773         _ad0[(s0 >> 24)       ] ^ \
00774         _ad1[(s3 >> 16) & 0xff] ^ \
00775         _ad2[(s2 >>  8) & 0xff] ^ \
00776         _ad3[(s1      ) & 0xff] ^ \
00777         rk[i+0]; \
00778     t1 = \
00779         _ad0[(s1 >> 24)       ] ^ \
00780         _ad1[(s0 >> 16) & 0xff] ^ \
00781         _ad2[(s3 >>  8) & 0xff] ^ \
00782         _ad3[(s2      ) & 0xff] ^ \
00783         rk[i+1]; \
00784     t2 = \
00785         _ad0[(s2 >> 24)       ] ^ \
00786         _ad1[(s1 >> 16) & 0xff] ^ \
00787         _ad2[(s0 >>  8) & 0xff] ^ \
00788         _ad3[(s3      ) & 0xff] ^ \
00789         rk[i+2]; \
00790     t3 = \
00791         _ad0[(s3 >> 24)       ] ^ \
00792         _ad1[(s2 >> 16) & 0xff] ^ \
00793         _ad2[(s1 >>  8) & 0xff] ^ \
00794         _ad3[(s0      ) & 0xff] ^ \
00795         rk[i+3];
00796 
00797 #define dsft(i) \
00798     s0 = \
00799         _ad0[(t0 >> 24)       ] ^ \
00800         _ad1[(t3 >> 16) & 0xff] ^ \
00801         _ad2[(t2 >>  8) & 0xff] ^ \
00802         _ad3[(t1      ) & 0xff] ^ \
00803         rk[i+0]; \
00804     s1 = \
00805         _ad0[(t1 >> 24)       ] ^ \
00806         _ad1[(t0 >> 16) & 0xff] ^ \
00807         _ad2[(t3 >>  8) & 0xff] ^ \
00808         _ad3[(t2      ) & 0xff] ^ \
00809         rk[i+1]; \
00810     s2 = \
00811         _ad0[(t2 >> 24)       ] ^ \
00812         _ad1[(t1 >> 16) & 0xff] ^ \
00813         _ad2[(t0 >>  8) & 0xff] ^ \
00814         _ad3[(t3      ) & 0xff] ^ \
00815         rk[i+2]; \
00816     s3 = \
00817         _ad0[(t3 >> 24)       ] ^ \
00818         _ad1[(t2 >> 16) & 0xff] ^ \
00819         _ad2[(t1 >>  8) & 0xff] ^ \
00820         _ad3[(t0      ) & 0xff] ^ \
00821         rk[i+3];
00822 
00823 #define dlr() \
00824     s0 = \
00825         (_ad4[(t0 >> 24)       ] & 0xff000000) ^ \
00826         (_ad4[(t3 >> 16) & 0xff] & 0x00ff0000) ^ \
00827         (_ad4[(t2 >>  8) & 0xff] & 0x0000ff00) ^ \
00828         (_ad4[(t1      ) & 0xff] & 0x000000ff) ^ \
00829         rk[0]; \
00830     s1 = \
00831         (_ad4[(t1 >> 24)       ] & 0xff000000) ^ \
00832         (_ad4[(t0 >> 16) & 0xff] & 0x00ff0000) ^ \
00833         (_ad4[(t3 >>  8) & 0xff] & 0x0000ff00) ^ \
00834         (_ad4[(t2      ) & 0xff] & 0x000000ff) ^ \
00835         rk[1]; \
00836     s2 = \
00837         (_ad4[(t2 >> 24)       ] & 0xff000000) ^ \
00838         (_ad4[(t1 >> 16) & 0xff] & 0x00ff0000) ^ \
00839         (_ad4[(t0 >>  8) & 0xff] & 0x0000ff00) ^ \
00840         (_ad4[(t3      ) & 0xff] & 0x000000ff) ^ \
00841         rk[2]; \
00842     s3 = \
00843         (_ad4[(t3 >> 24)       ] & 0xff000000) ^ \
00844         (_ad4[(t2 >> 16) & 0xff] & 0x00ff0000) ^ \
00845         (_ad4[(t1 >>  8) & 0xff] & 0x0000ff00) ^ \
00846         (_ad4[(t0      ) & 0xff] & 0x000000ff) ^ \
00847         rk[3];