00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 typedef struct
00021 {
00022 #if defined(OPTIMIZE_MMX) && (defined(OPTIMIZE_I586) || defined(OPTIMIZE_I686))
00023 const uint64_t t0[256];
00024 const uint64_t t1[256];
00025 const uint64_t t2[256];
00026 const uint64_t t3[256];
00027 #else
00028 const uint32_t t0[256];
00029 const uint32_t t1[256];
00030 const uint32_t t2[256];
00031 const uint32_t t3[256];
00032 #endif
00033 const uint32_t t4[256];
00034 } _table;
00035
00036 const _table _aes_enc = {
00037 { 0xa56363c6, 0x847c7cf8, 0x997777ee, 0x8d7b7bf6,
00038 0x0df2f2ff, 0xbd6b6bd6, 0xb16f6fde, 0x54c5c591,
00039 0x50303060, 0x03010102, 0xa96767ce, 0x7d2b2b56,
00040 0x19fefee7, 0x62d7d7b5, 0xe6abab4d, 0x9a7676ec,
00041 0x45caca8f, 0x9d82821f, 0x40c9c989, 0x877d7dfa,
00042 0x15fafaef, 0xeb5959b2, 0xc947478e, 0x0bf0f0fb,
00043 0xecadad41, 0x67d4d4b3, 0xfda2a25f, 0xeaafaf45,
00044 0xbf9c9c23, 0xf7a4a453, 0x967272e4, 0x5bc0c09b,
00045 0xc2b7b775, 0x1cfdfde1, 0xae93933d, 0x6a26264c,
00046 0x5a36366c, 0x413f3f7e, 0x02f7f7f5, 0x4fcccc83,
00047 0x5c343468, 0xf4a5a551, 0x34e5e5d1, 0x08f1f1f9,
00048 0x937171e2, 0x73d8d8ab, 0x53313162, 0x3f15152a,
00049 0x0c040408, 0x52c7c795, 0x65232346, 0x5ec3c39d,
00050 0x28181830, 0xa1969637, 0x0f05050a, 0xb59a9a2f,
00051 0x0907070e, 0x36121224, 0x9b80801b, 0x3de2e2df,
00052 0x26ebebcd, 0x6927274e, 0xcdb2b27f, 0x9f7575ea,
00053 0x1b090912, 0x9e83831d, 0x742c2c58, 0x2e1a1a34,
00054 0x2d1b1b36, 0xb26e6edc, 0xee5a5ab4, 0xfba0a05b,
00055 0xf65252a4, 0x4d3b3b76, 0x61d6d6b7, 0xceb3b37d,
00056 0x7b292952, 0x3ee3e3dd, 0x712f2f5e, 0x97848413,
00057 0xf55353a6, 0x68d1d1b9, 0x00000000, 0x2cededc1,
00058 0x60202040, 0x1ffcfce3, 0xc8b1b179, 0xed5b5bb6,
00059 0xbe6a6ad4, 0x46cbcb8d, 0xd9bebe67, 0x4b393972,
00060 0xde4a4a94, 0xd44c4c98, 0xe85858b0, 0x4acfcf85,
00061 0x6bd0d0bb, 0x2aefefc5, 0xe5aaaa4f, 0x16fbfbed,
00062 0xc5434386, 0xd74d4d9a, 0x55333366, 0x94858511,
00063 0xcf45458a, 0x10f9f9e9, 0x06020204, 0x817f7ffe,
00064 0xf05050a0, 0x443c3c78, 0xba9f9f25, 0xe3a8a84b,
00065 0xf35151a2, 0xfea3a35d, 0xc0404080, 0x8a8f8f05,
00066 0xad92923f, 0xbc9d9d21, 0x48383870, 0x04f5f5f1,
00067 0xdfbcbc63, 0xc1b6b677, 0x75dadaaf, 0x63212142,
00068 0x30101020, 0x1affffe5, 0x0ef3f3fd, 0x6dd2d2bf,
00069 0x4ccdcd81, 0x140c0c18, 0x35131326, 0x2fececc3,
00070 0xe15f5fbe, 0xa2979735, 0xcc444488, 0x3917172e,
00071 0x57c4c493, 0xf2a7a755, 0x827e7efc, 0x473d3d7a,
00072 0xac6464c8, 0xe75d5dba, 0x2b191932, 0x957373e6,
00073 0xa06060c0, 0x98818119, 0xd14f4f9e, 0x7fdcdca3,
00074 0x66222244, 0x7e2a2a54, 0xab90903b, 0x8388880b,
00075 0xca46468c, 0x29eeeec7, 0xd3b8b86b, 0x3c141428,
00076 0x79dedea7, 0xe25e5ebc, 0x1d0b0b16, 0x76dbdbad,
00077 0x3be0e0db, 0x56323264, 0x4e3a3a74, 0x1e0a0a14,
00078 0xdb494992, 0x0a06060c, 0x6c242448, 0xe45c5cb8,
00079 0x5dc2c29f, 0x6ed3d3bd, 0xefacac43, 0xa66262c4,
00080 0xa8919139, 0xa4959531, 0x37e4e4d3, 0x8b7979f2,
00081 0x32e7e7d5, 0x43c8c88b, 0x5937376e, 0xb76d6dda,
00082 0x8c8d8d01, 0x64d5d5b1, 0xd24e4e9c, 0xe0a9a949,
00083 0xb46c6cd8, 0xfa5656ac, 0x07f4f4f3, 0x25eaeacf,
00084 0xaf6565ca, 0x8e7a7af4, 0xe9aeae47, 0x18080810,
00085 0xd5baba6f, 0x887878f0, 0x6f25254a, 0x722e2e5c,
00086 0x241c1c38, 0xf1a6a657, 0xc7b4b473, 0x51c6c697,
00087 0x23e8e8cb, 0x7cdddda1, 0x9c7474e8, 0x211f1f3e,
00088 0xdd4b4b96, 0xdcbdbd61, 0x868b8b0d, 0x858a8a0f,
00089 0x907070e0, 0x423e3e7c, 0xc4b5b571, 0xaa6666cc,
00090 0xd8484890, 0x05030306, 0x01f6f6f7, 0x120e0e1c,
00091 0xa36161c2, 0x5f35356a, 0xf95757ae, 0xd0b9b969,
00092 0x91868617, 0x58c1c199, 0x271d1d3a, 0xb99e9e27,
00093 0x38e1e1d9, 0x13f8f8eb, 0xb398982b, 0x33111122,
00094 0xbb6969d2, 0x70d9d9a9, 0x898e8e07, 0xa7949433,
00095 0xb69b9b2d, 0x221e1e3c, 0x92878715, 0x20e9e9c9,
00096 0x49cece87, 0xff5555aa, 0x78282850, 0x7adfdfa5,
00097 0x8f8c8c03, 0xf8a1a159, 0x80898909, 0x170d0d1a,
00098 0xdabfbf65, 0x31e6e6d7, 0xc6424284, 0xb86868d0,
00099 0xc3414182, 0xb0999929, 0x772d2d5a, 0x110f0f1e,
00100 0xcbb0b07b, 0xfc5454a8, 0xd6bbbb6d, 0x3a16162c },
00101 { 0x6363c6a5, 0x7c7cf884, 0x7777ee99, 0x7b7bf68d,
00102 0xf2f2ff0d, 0x6b6bd6bd, 0x6f6fdeb1, 0xc5c59154,
00103 0x30306050, 0x01010203, 0x6767cea9, 0x2b2b567d,
00104 0xfefee719, 0xd7d7b562, 0xabab4de6, 0x7676ec9a,
00105 0xcaca8f45, 0x82821f9d, 0xc9c98940, 0x7d7dfa87,
00106 0xfafaef15, 0x5959b2eb, 0x47478ec9, 0xf0f0fb0b,
00107 0xadad41ec, 0xd4d4b367, 0xa2a25ffd, 0xafaf45ea,
00108 0x9c9c23bf, 0xa4a453f7, 0x7272e496, 0xc0c09b5b,
00109 0xb7b775c2, 0xfdfde11c, 0x93933dae, 0x26264c6a,
00110 0x36366c5a, 0x3f3f7e41, 0xf7f7f502, 0xcccc834f,
00111 0x3434685c, 0xa5a551f4, 0xe5e5d134, 0xf1f1f908,
00112 0x7171e293, 0xd8d8ab73, 0x31316253, 0x15152a3f,
00113 0x0404080c, 0xc7c79552, 0x23234665, 0xc3c39d5e,
00114 0x18183028, 0x969637a1, 0x05050a0f, 0x9a9a2fb5,
00115 0x07070e09, 0x12122436, 0x80801b9b, 0xe2e2df3d,
00116 0xebebcd26, 0x27274e69, 0xb2b27fcd, 0x7575ea9f,
00117 0x0909121b, 0x83831d9e, 0x2c2c5874, 0x1a1a342e,
00118 0x1b1b362d, 0x6e6edcb2, 0x5a5ab4ee, 0xa0a05bfb,
00119 0x5252a4f6, 0x3b3b764d, 0xd6d6b761, 0xb3b37dce,
00120 0x2929527b, 0xe3e3dd3e, 0x2f2f5e71, 0x84841397,
00121 0x5353a6f5, 0xd1d1b968, 0x00000000, 0xededc12c,
00122 0x20204060, 0xfcfce31f, 0xb1b179c8, 0x5b5bb6ed,
00123 0x6a6ad4be, 0xcbcb8d46, 0xbebe67d9, 0x3939724b,
00124 0x4a4a94de, 0x4c4c98d4, 0x5858b0e8, 0xcfcf854a,
00125 0xd0d0bb6b, 0xefefc52a, 0xaaaa4fe5, 0xfbfbed16,
00126 0x434386c5, 0x4d4d9ad7, 0x33336655, 0x85851194,
00127 0x45458acf, 0xf9f9e910, 0x02020406, 0x7f7ffe81,
00128 0x5050a0f0, 0x3c3c7844, 0x9f9f25ba, 0xa8a84be3,
00129 0x5151a2f3, 0xa3a35dfe, 0x404080c0, 0x8f8f058a,
00130 0x92923fad, 0x9d9d21bc, 0x38387048, 0xf5f5f104,
00131 0xbcbc63df, 0xb6b677c1, 0xdadaaf75, 0x21214263,
00132 0x10102030, 0xffffe51a, 0xf3f3fd0e, 0xd2d2bf6d,
00133 0xcdcd814c, 0x0c0c1814, 0x13132635, 0xececc32f,
00134 0x5f5fbee1, 0x979735a2, 0x444488cc, 0x17172e39,
00135 0xc4c49357, 0xa7a755f2, 0x7e7efc82, 0x3d3d7a47,
00136 0x6464c8ac, 0x5d5dbae7, 0x1919322b, 0x7373e695,
00137 0x6060c0a0, 0x81811998, 0x4f4f9ed1, 0xdcdca37f,
00138 0x22224466, 0x2a2a547e, 0x90903bab, 0x88880b83,
00139 0x46468cca, 0xeeeec729, 0xb8b86bd3, 0x1414283c,
00140 0xdedea779, 0x5e5ebce2, 0x0b0b161d, 0xdbdbad76,
00141 0xe0e0db3b, 0x32326456, 0x3a3a744e, 0x0a0a141e,
00142 0x494992db, 0x06060c0a, 0x2424486c, 0x5c5cb8e4,
00143 0xc2c29f5d, 0xd3d3bd6e, 0xacac43ef, 0x6262c4a6,
00144 0x919139a8, 0x959531a4, 0xe4e4d337, 0x7979f28b,
00145 0xe7e7d532, 0xc8c88b43, 0x37376e59, 0x6d6ddab7,
00146 0x8d8d018c, 0xd5d5b164, 0x4e4e9cd2, 0xa9a949e0,
00147 0x6c6cd8b4, 0x5656acfa, 0xf4f4f307, 0xeaeacf25,
00148 0x6565caaf, 0x7a7af48e, 0xaeae47e9, 0x08081018,
00149 0xbaba6fd5, 0x7878f088, 0x25254a6f, 0x2e2e5c72,
00150 0x1c1c3824, 0xa6a657f1, 0xb4b473c7, 0xc6c69751,
00151 0xe8e8cb23, 0xdddda17c, 0x7474e89c, 0x1f1f3e21,
00152 0x4b4b96dd, 0xbdbd61dc, 0x8b8b0d86, 0x8a8a0f85,
00153 0x7070e090, 0x3e3e7c42, 0xb5b571c4, 0x6666ccaa,
00154 0x484890d8, 0x03030605, 0xf6f6f701, 0x0e0e1c12,
00155 0x6161c2a3, 0x35356a5f, 0x5757aef9, 0xb9b969d0,
00156 0x86861791, 0xc1c19958, 0x1d1d3a27, 0x9e9e27b9,
00157 0xe1e1d938, 0xf8f8eb13, 0x98982bb3, 0x11112233,
00158 0x6969d2bb, 0xd9d9a970, 0x8e8e0789, 0x949433a7,
00159 0x9b9b2db6, 0x1e1e3c22, 0x87871592, 0xe9e9c920,
00160 0xcece8749, 0x5555aaff, 0x28285078, 0xdfdfa57a,
00161 0x8c8c038f, 0xa1a159f8, 0x89890980, 0x0d0d1a17,
00162 0xbfbf65da, 0xe6e6d731, 0x424284c6, 0x6868d0b8,
00163 0x414182c3, 0x999929b0, 0x2d2d5a77, 0x0f0f1e11,
00164 0xb0b07bcb, 0x5454a8fc, 0xbbbb6dd6, 0x16162c3a },
00165 { 0x63c6a563, 0x7cf8847c, 0x77ee9977, 0x7bf68d7b,
00166 0xf2ff0df2, 0x6bd6bd6b, 0x6fdeb16f, 0xc59154c5,
00167 0x30605030, 0x01020301, 0x67cea967, 0x2b567d2b,
00168 0xfee719fe, 0xd7b562d7, 0xab4de6ab, 0x76ec9a76,
00169 0xca8f45ca, 0x821f9d82, 0xc98940c9, 0x7dfa877d,
00170 0xfaef15fa, 0x59b2eb59, 0x478ec947, 0xf0fb0bf0,
00171 0xad41ecad, 0xd4b367d4, 0xa25ffda2, 0xaf45eaaf,
00172 0x9c23bf9c, 0xa453f7a4, 0x72e49672, 0xc09b5bc0,
00173 0xb775c2b7, 0xfde11cfd, 0x933dae93, 0x264c6a26,
00174 0x366c5a36, 0x3f7e413f, 0xf7f502f7, 0xcc834fcc,
00175 0x34685c34, 0xa551f4a5, 0xe5d134e5, 0xf1f908f1,
00176 0x71e29371, 0xd8ab73d8, 0x31625331, 0x152a3f15,
00177 0x04080c04, 0xc79552c7, 0x23466523, 0xc39d5ec3,
00178 0x18302818, 0x9637a196, 0x050a0f05, 0x9a2fb59a,
00179 0x070e0907, 0x12243612, 0x801b9b80, 0xe2df3de2,
00180 0xebcd26eb, 0x274e6927, 0xb27fcdb2, 0x75ea9f75,
00181 0x09121b09, 0x831d9e83, 0x2c58742c, 0x1a342e1a,
00182 0x1b362d1b, 0x6edcb26e, 0x5ab4ee5a, 0xa05bfba0,
00183 0x52a4f652, 0x3b764d3b, 0xd6b761d6, 0xb37dceb3,
00184 0x29527b29, 0xe3dd3ee3, 0x2f5e712f, 0x84139784,
00185 0x53a6f553, 0xd1b968d1, 0x00000000, 0xedc12ced,
00186 0x20406020, 0xfce31ffc, 0xb179c8b1, 0x5bb6ed5b,
00187 0x6ad4be6a, 0xcb8d46cb, 0xbe67d9be, 0x39724b39,
00188 0x4a94de4a, 0x4c98d44c, 0x58b0e858, 0xcf854acf,
00189 0xd0bb6bd0, 0xefc52aef, 0xaa4fe5aa, 0xfbed16fb,
00190 0x4386c543, 0x4d9ad74d, 0x33665533, 0x85119485,
00191 0x458acf45, 0xf9e910f9, 0x02040602, 0x7ffe817f,
00192 0x50a0f050, 0x3c78443c, 0x9f25ba9f, 0xa84be3a8,
00193 0x51a2f351, 0xa35dfea3, 0x4080c040, 0x8f058a8f,
00194 0x923fad92, 0x9d21bc9d, 0x38704838, 0xf5f104f5,
00195 0xbc63dfbc, 0xb677c1b6, 0xdaaf75da, 0x21426321,
00196 0x10203010, 0xffe51aff, 0xf3fd0ef3, 0xd2bf6dd2,
00197 0xcd814ccd, 0x0c18140c, 0x13263513, 0xecc32fec,
00198 0x5fbee15f, 0x9735a297, 0x4488cc44, 0x172e3917,
00199 0xc49357c4, 0xa755f2a7, 0x7efc827e, 0x3d7a473d,
00200 0x64c8ac64, 0x5dbae75d, 0x19322b19, 0x73e69573,
00201 0x60c0a060, 0x81199881, 0x4f9ed14f, 0xdca37fdc,
00202 0x22446622, 0x2a547e2a, 0x903bab90, 0x880b8388,
00203 0x468cca46, 0xeec729ee, 0xb86bd3b8, 0x14283c14,
00204 0xdea779de, 0x5ebce25e, 0x0b161d0b, 0xdbad76db,
00205 0xe0db3be0, 0x32645632, 0x3a744e3a, 0x0a141e0a,
00206 0x4992db49, 0x060c0a06, 0x24486c24, 0x5cb8e45c,
00207 0xc29f5dc2, 0xd3bd6ed3, 0xac43efac, 0x62c4a662,
00208 0x9139a891, 0x9531a495, 0xe4d337e4, 0x79f28b79,
00209 0xe7d532e7, 0xc88b43c8, 0x376e5937, 0x6ddab76d,
00210 0x8d018c8d, 0xd5b164d5, 0x4e9cd24e, 0xa949e0a9,
00211 0x6cd8b46c, 0x56acfa56, 0xf4f307f4, 0xeacf25ea,
00212 0x65caaf65, 0x7af48e7a, 0xae47e9ae, 0x08101808,
00213 0xba6fd5ba, 0x78f08878, 0x254a6f25, 0x2e5c722e,
00214 0x1c38241c, 0xa657f1a6, 0xb473c7b4, 0xc69751c6,
00215 0xe8cb23e8, 0xdda17cdd, 0x74e89c74, 0x1f3e211f,
00216 0x4b96dd4b, 0xbd61dcbd, 0x8b0d868b, 0x8a0f858a,
00217 0x70e09070, 0x3e7c423e, 0xb571c4b5, 0x66ccaa66,
00218 0x4890d848, 0x03060503, 0xf6f701f6, 0x0e1c120e,
00219 0x61c2a361, 0x356a5f35, 0x57aef957, 0xb969d0b9,
00220 0x86179186, 0xc19958c1, 0x1d3a271d, 0x9e27b99e,
00221 0xe1d938e1, 0xf8eb13f8, 0x982bb398, 0x11223311,
00222 0x69d2bb69, 0xd9a970d9, 0x8e07898e, 0x9433a794,
00223 0x9b2db69b, 0x1e3c221e, 0x87159287, 0xe9c920e9,
00224 0xce8749ce, 0x55aaff55, 0x28507828, 0xdfa57adf,
00225 0x8c038f8c, 0xa159f8a1, 0x89098089, 0x0d1a170d,
00226 0xbf65dabf, 0xe6d731e6, 0x4284c642, 0x68d0b868,
00227 0x4182c341, 0x9929b099, 0x2d5a772d, 0x0f1e110f,
00228 0xb07bcbb0, 0x54a8fc54, 0xbb6dd6bb, 0x162c3a16 },
00229 { 0xc6a56363, 0xf8847c7c, 0xee997777, 0xf68d7b7b,
00230 0xff0df2f2, 0xd6bd6b6b, 0xdeb16f6f, 0x9154c5c5,
00231 0x60503030, 0x02030101, 0xcea96767, 0x567d2b2b,
00232 0xe719fefe, 0xb562d7d7, 0x4de6abab, 0xec9a7676,
00233 0x8f45caca, 0x1f9d8282, 0x8940c9c9, 0xfa877d7d,
00234 0xef15fafa, 0xb2eb5959, 0x8ec94747, 0xfb0bf0f0,
00235 0x41ecadad, 0xb367d4d4, 0x5ffda2a2, 0x45eaafaf,
00236 0x23bf9c9c, 0x53f7a4a4, 0xe4967272, 0x9b5bc0c0,
00237 0x75c2b7b7, 0xe11cfdfd, 0x3dae9393, 0x4c6a2626,
00238 0x6c5a3636, 0x7e413f3f, 0xf502f7f7, 0x834fcccc,
00239 0x685c3434, 0x51f4a5a5, 0xd134e5e5, 0xf908f1f1,
00240 0xe2937171, 0xab73d8d8, 0x62533131, 0x2a3f1515,
00241 0x080c0404, 0x9552c7c7, 0x46652323, 0x9d5ec3c3,
00242 0x30281818, 0x37a19696, 0x0a0f0505, 0x2fb59a9a,
00243 0x0e090707, 0x24361212, 0x1b9b8080, 0xdf3de2e2,
00244 0xcd26ebeb, 0x4e692727, 0x7fcdb2b2, 0xea9f7575,
00245 0x121b0909, 0x1d9e8383, 0x58742c2c, 0x342e1a1a,
00246 0x362d1b1b, 0xdcb26e6e, 0xb4ee5a5a, 0x5bfba0a0,
00247 0xa4f65252, 0x764d3b3b, 0xb761d6d6, 0x7dceb3b3,
00248 0x527b2929, 0xdd3ee3e3, 0x5e712f2f, 0x13978484,
00249 0xa6f55353, 0xb968d1d1, 0x00000000, 0xc12ceded,
00250 0x40602020, 0xe31ffcfc, 0x79c8b1b1, 0xb6ed5b5b,
00251 0xd4be6a6a, 0x8d46cbcb, 0x67d9bebe, 0x724b3939,
00252 0x94de4a4a, 0x98d44c4c, 0xb0e85858, 0x854acfcf,
00253 0xbb6bd0d0, 0xc52aefef, 0x4fe5aaaa, 0xed16fbfb,
00254 0x86c54343, 0x9ad74d4d, 0x66553333, 0x11948585,
00255 0x8acf4545, 0xe910f9f9, 0x04060202, 0xfe817f7f,
00256 0xa0f05050, 0x78443c3c, 0x25ba9f9f, 0x4be3a8a8,
00257 0xa2f35151, 0x5dfea3a3, 0x80c04040, 0x058a8f8f,
00258 0x3fad9292, 0x21bc9d9d, 0x70483838, 0xf104f5f5,
00259 0x63dfbcbc, 0x77c1b6b6, 0xaf75dada, 0x42632121,
00260 0x20301010, 0xe51affff, 0xfd0ef3f3, 0xbf6dd2d2,
00261 0x814ccdcd, 0x18140c0c, 0x26351313, 0xc32fecec,
00262 0xbee15f5f, 0x35a29797, 0x88cc4444, 0x2e391717,
00263 0x9357c4c4, 0x55f2a7a7, 0xfc827e7e, 0x7a473d3d,
00264 0xc8ac6464, 0xbae75d5d, 0x322b1919, 0xe6957373,
00265 0xc0a06060, 0x19988181, 0x9ed14f4f, 0xa37fdcdc,
00266 0x44662222, 0x547e2a2a, 0x3bab9090, 0x0b838888,
00267 0x8cca4646, 0xc729eeee, 0x6bd3b8b8, 0x283c1414,
00268 0xa779dede, 0xbce25e5e, 0x161d0b0b, 0xad76dbdb,
00269 0xdb3be0e0, 0x64563232, 0x744e3a3a, 0x141e0a0a,
00270 0x92db4949, 0x0c0a0606, 0x486c2424, 0xb8e45c5c,
00271 0x9f5dc2c2, 0xbd6ed3d3, 0x43efacac, 0xc4a66262,
00272 0x39a89191, 0x31a49595, 0xd337e4e4, 0xf28b7979,
00273 0xd532e7e7, 0x8b43c8c8, 0x6e593737, 0xdab76d6d,
00274 0x018c8d8d, 0xb164d5d5, 0x9cd24e4e, 0x49e0a9a9,
00275 0xd8b46c6c, 0xacfa5656, 0xf307f4f4, 0xcf25eaea,
00276 0xcaaf6565, 0xf48e7a7a, 0x47e9aeae, 0x10180808,
00277 0x6fd5baba, 0xf0887878, 0x4a6f2525, 0x5c722e2e,
00278 0x38241c1c, 0x57f1a6a6, 0x73c7b4b4, 0x9751c6c6,
00279 0xcb23e8e8, 0xa17cdddd, 0xe89c7474, 0x3e211f1f,
00280 0x96dd4b4b, 0x61dcbdbd, 0x0d868b8b, 0x0f858a8a,
00281 0xe0907070, 0x7c423e3e, 0x71c4b5b5, 0xccaa6666,
00282 0x90d84848, 0x06050303, 0xf701f6f6, 0x1c120e0e,
00283 0xc2a36161, 0x6a5f3535, 0xaef95757, 0x69d0b9b9,
00284 0x17918686, 0x9958c1c1, 0x3a271d1d, 0x27b99e9e,
00285 0xd938e1e1, 0xeb13f8f8, 0x2bb39898, 0x22331111,
00286 0xd2bb6969, 0xa970d9d9, 0x07898e8e, 0x33a79494,
00287 0x2db69b9b, 0x3c221e1e, 0x15928787, 0xc920e9e9,
00288 0x8749cece, 0xaaff5555, 0x50782828, 0xa57adfdf,
00289 0x038f8c8c, 0x59f8a1a1, 0x09808989, 0x1a170d0d,
00290 0x65dabfbf, 0xd731e6e6, 0x84c64242, 0xd0b86868,
00291 0x82c34141, 0x29b09999, 0x5a772d2d, 0x1e110f0f,
00292 0x7bcbb0b0, 0xa8fc5454, 0x6dd6bbbb, 0x2c3a1616 },
00293 { 0x63636363, 0x7c7c7c7c, 0x77777777, 0x7b7b7b7b,
00294 0xf2f2f2f2, 0x6b6b6b6b, 0x6f6f6f6f, 0xc5c5c5c5,
00295 0x30303030, 0x01010101, 0x67676767, 0x2b2b2b2b,
00296 0xfefefefe, 0xd7d7d7d7, 0xabababab, 0x76767676,
00297 0xcacacaca, 0x82828282, 0xc9c9c9c9, 0x7d7d7d7d,
00298 0xfafafafa, 0x59595959, 0x47474747, 0xf0f0f0f0,
00299 0xadadadad, 0xd4d4d4d4, 0xa2a2a2a2, 0xafafafaf,
00300 0x9c9c9c9c, 0xa4a4a4a4, 0x72727272, 0xc0c0c0c0,
00301 0xb7b7b7b7, 0xfdfdfdfd, 0x93939393, 0x26262626,
00302 0x36363636, 0x3f3f3f3f, 0xf7f7f7f7, 0xcccccccc,
00303 0x34343434, 0xa5a5a5a5, 0xe5e5e5e5, 0xf1f1f1f1,
00304 0x71717171, 0xd8d8d8d8, 0x31313131, 0x15151515,
00305 0x04040404, 0xc7c7c7c7, 0x23232323, 0xc3c3c3c3,
00306 0x18181818, 0x96969696, 0x05050505, 0x9a9a9a9a,
00307 0x07070707, 0x12121212, 0x80808080, 0xe2e2e2e2,
00308 0xebebebeb, 0x27272727, 0xb2b2b2b2, 0x75757575,
00309 0x09090909, 0x83838383, 0x2c2c2c2c, 0x1a1a1a1a,
00310 0x1b1b1b1b, 0x6e6e6e6e, 0x5a5a5a5a, 0xa0a0a0a0,
00311 0x52525252, 0x3b3b3b3b, 0xd6d6d6d6, 0xb3b3b3b3,
00312 0x29292929, 0xe3e3e3e3, 0x2f2f2f2f, 0x84848484,
00313 0x53535353, 0xd1d1d1d1, 0x00000000, 0xedededed,
00314 0x20202020, 0xfcfcfcfc, 0xb1b1b1b1, 0x5b5b5b5b,
00315 0x6a6a6a6a, 0xcbcbcbcb, 0xbebebebe, 0x39393939,
00316 0x4a4a4a4a, 0x4c4c4c4c, 0x58585858, 0xcfcfcfcf,
00317 0xd0d0d0d0, 0xefefefef, 0xaaaaaaaa, 0xfbfbfbfb,
00318 0x43434343, 0x4d4d4d4d, 0x33333333, 0x85858585,
00319 0x45454545, 0xf9f9f9f9, 0x02020202, 0x7f7f7f7f,
00320 0x50505050, 0x3c3c3c3c, 0x9f9f9f9f, 0xa8a8a8a8,
00321 0x51515151, 0xa3a3a3a3, 0x40404040, 0x8f8f8f8f,
00322 0x92929292, 0x9d9d9d9d, 0x38383838, 0xf5f5f5f5,
00323 0xbcbcbcbc, 0xb6b6b6b6, 0xdadadada, 0x21212121,
00324 0x10101010, 0xffffffff, 0xf3f3f3f3, 0xd2d2d2d2,
00325 0xcdcdcdcd, 0x0c0c0c0c, 0x13131313, 0xecececec,
00326 0x5f5f5f5f, 0x97979797, 0x44444444, 0x17171717,
00327 0xc4c4c4c4, 0xa7a7a7a7, 0x7e7e7e7e, 0x3d3d3d3d,
00328 0x64646464, 0x5d5d5d5d, 0x19191919, 0x73737373,
00329 0x60606060, 0x81818181, 0x4f4f4f4f, 0xdcdcdcdc,
00330 0x22222222, 0x2a2a2a2a, 0x90909090, 0x88888888,
00331 0x46464646, 0xeeeeeeee, 0xb8b8b8b8, 0x14141414,
00332 0xdededede, 0x5e5e5e5e, 0x0b0b0b0b, 0xdbdbdbdb,
00333 0xe0e0e0e0, 0x32323232, 0x3a3a3a3a, 0x0a0a0a0a,
00334 0x49494949, 0x06060606, 0x24242424, 0x5c5c5c5c,
00335 0xc2c2c2c2, 0xd3d3d3d3, 0xacacacac, 0x62626262,
00336 0x91919191, 0x95959595, 0xe4e4e4e4, 0x79797979,
00337 0xe7e7e7e7, 0xc8c8c8c8, 0x37373737, 0x6d6d6d6d,
00338 0x8d8d8d8d, 0xd5d5d5d5, 0x4e4e4e4e, 0xa9a9a9a9,
00339 0x6c6c6c6c, 0x56565656, 0xf4f4f4f4, 0xeaeaeaea,
00340 0x65656565, 0x7a7a7a7a, 0xaeaeaeae, 0x08080808,
00341 0xbabababa, 0x78787878, 0x25252525, 0x2e2e2e2e,
00342 0x1c1c1c1c, 0xa6a6a6a6, 0xb4b4b4b4, 0xc6c6c6c6,
00343 0xe8e8e8e8, 0xdddddddd, 0x74747474, 0x1f1f1f1f,
00344 0x4b4b4b4b, 0xbdbdbdbd, 0x8b8b8b8b, 0x8a8a8a8a,
00345 0x70707070, 0x3e3e3e3e, 0xb5b5b5b5, 0x66666666,
00346 0x48484848, 0x03030303, 0xf6f6f6f6, 0x0e0e0e0e,
00347 0x61616161, 0x35353535, 0x57575757, 0xb9b9b9b9,
00348 0x86868686, 0xc1c1c1c1, 0x1d1d1d1d, 0x9e9e9e9e,
00349 0xe1e1e1e1, 0xf8f8f8f8, 0x98989898, 0x11111111,
00350 0x69696969, 0xd9d9d9d9, 0x8e8e8e8e, 0x94949494,
00351 0x9b9b9b9b, 0x1e1e1e1e, 0x87878787, 0xe9e9e9e9,
00352 0xcececece, 0x55555555, 0x28282828, 0xdfdfdfdf,
00353 0x8c8c8c8c, 0xa1a1a1a1, 0x89898989, 0x0d0d0d0d,
00354 0xbfbfbfbf, 0xe6e6e6e6, 0x42424242, 0x68686868,
00355 0x41414141, 0x99999999, 0x2d2d2d2d, 0x0f0f0f0f,
00356 0xb0b0b0b0, 0x54545454, 0xbbbbbbbb, 0x16161616 }
00357 };
00358
00359 #define _ae0 _aes_enc.t0
00360 #define _ae1 _aes_enc.t1
00361 #define _ae2 _aes_enc.t2
00362 #define _ae3 _aes_enc.t3
00363 #define _ae4 _aes_enc.t4
00364
00365 const _table _aes_dec = {
00366 { 0x50a7f451, 0x5365417e, 0xc3a4171a, 0x965e273a,
00367 0xcb6bab3b, 0xf1459d1f, 0xab58faac, 0x9303e34b,
00368 0x55fa3020, 0xf66d76ad, 0x9176cc88, 0x254c02f5,
00369 0xfcd7e54f, 0xd7cb2ac5, 0x80443526, 0x8fa362b5,
00370 0x495ab1de, 0x671bba25, 0x980eea45, 0xe1c0fe5d,
00371 0x02752fc3, 0x12f04c81, 0xa397468d, 0xc6f9d36b,
00372 0xe75f8f03, 0x959c9215, 0xeb7a6dbf, 0xda595295,
00373 0x2d83bed4, 0xd3217458, 0x2969e049, 0x44c8c98e,
00374 0x6a89c275, 0x78798ef4, 0x6b3e5899, 0xdd71b927,
00375 0xb64fe1be, 0x17ad88f0, 0x66ac20c9, 0xb43ace7d,
00376 0x184adf63, 0x82311ae5, 0x60335197, 0x457f5362,
00377 0xe07764b1, 0x84ae6bbb, 0x1ca081fe, 0x942b08f9,
00378 0x58684870, 0x19fd458f, 0x876cde94, 0xb7f87b52,
00379 0x23d373ab, 0xe2024b72, 0x578f1fe3, 0x2aab5566,
00380 0x0728ebb2, 0x03c2b52f, 0x9a7bc586, 0xa50837d3,
00381 0xf2872830, 0xb2a5bf23, 0xba6a0302, 0x5c8216ed,
00382 0x2b1ccf8a, 0x92b479a7, 0xf0f207f3, 0xa1e2694e,
00383 0xcdf4da65, 0xd5be0506, 0x1f6234d1, 0x8afea6c4,
00384 0x9d532e34, 0xa055f3a2, 0x32e18a05, 0x75ebf6a4,
00385 0x39ec830b, 0xaaef6040, 0x069f715e, 0x51106ebd,
00386 0xf98a213e, 0x3d06dd96, 0xae053edd, 0x46bde64d,
00387 0xb58d5491, 0x055dc471, 0x6fd40604, 0xff155060,
00388 0x24fb9819, 0x97e9bdd6, 0xcc434089, 0x779ed967,
00389 0xbd42e8b0, 0x888b8907, 0x385b19e7, 0xdbeec879,
00390 0x470a7ca1, 0xe90f427c, 0xc91e84f8, 0x00000000,
00391 0x83868009, 0x48ed2b32, 0xac70111e, 0x4e725a6c,
00392 0xfbff0efd, 0x5638850f, 0x1ed5ae3d, 0x27392d36,
00393 0x64d90f0a, 0x21a65c68, 0xd1545b9b, 0x3a2e3624,
00394 0xb1670a0c, 0x0fe75793, 0xd296eeb4, 0x9e919b1b,
00395 0x4fc5c080, 0xa220dc61, 0x694b775a, 0x161a121c,
00396 0x0aba93e2, 0xe52aa0c0, 0x43e0223c, 0x1d171b12,
00397 0x0b0d090e, 0xadc78bf2, 0xb9a8b62d, 0xc8a91e14,
00398 0x8519f157, 0x4c0775af, 0xbbdd99ee, 0xfd607fa3,
00399 0x9f2601f7, 0xbcf5725c, 0xc53b6644, 0x347efb5b,
00400 0x7629438b, 0xdcc623cb, 0x68fcedb6, 0x63f1e4b8,
00401 0xcadc31d7, 0x10856342, 0x40229713, 0x2011c684,
00402 0x7d244a85, 0xf83dbbd2, 0x1132f9ae, 0x6da129c7,
00403 0x4b2f9e1d, 0xf330b2dc, 0xec52860d, 0xd0e3c177,
00404 0x6c16b32b, 0x99b970a9, 0xfa489411, 0x2264e947,
00405 0xc48cfca8, 0x1a3ff0a0, 0xd82c7d56, 0xef903322,
00406 0xc74e4987, 0xc1d138d9, 0xfea2ca8c, 0x360bd498,
00407 0xcf81f5a6, 0x28de7aa5, 0x268eb7da, 0xa4bfad3f,
00408 0xe49d3a2c, 0x0d927850, 0x9bcc5f6a, 0x62467e54,
00409 0xc2138df6, 0xe8b8d890, 0x5ef7392e, 0xf5afc382,
00410 0xbe805d9f, 0x7c93d069, 0xa92dd56f, 0xb31225cf,
00411 0x3b99acc8, 0xa77d1810, 0x6e639ce8, 0x7bbb3bdb,
00412 0x097826cd, 0xf418596e, 0x01b79aec, 0xa89a4f83,
00413 0x656e95e6, 0x7ee6ffaa, 0x08cfbc21, 0xe6e815ef,
00414 0xd99be7ba, 0xce366f4a, 0xd4099fea, 0xd67cb029,
00415 0xafb2a431, 0x31233f2a, 0x3094a5c6, 0xc066a235,
00416 0x37bc4e74, 0xa6ca82fc, 0xb0d090e0, 0x15d8a733,
00417 0x4a9804f1, 0xf7daec41, 0x0e50cd7f, 0x2ff69117,
00418 0x8dd64d76, 0x4db0ef43, 0x544daacc, 0xdf0496e4,
00419 0xe3b5d19e, 0x1b886a4c, 0xb81f2cc1, 0x7f516546,
00420 0x04ea5e9d, 0x5d358c01, 0x737487fa, 0x2e410bfb,
00421 0x5a1d67b3, 0x52d2db92, 0x335610e9, 0x1347d66d,
00422 0x8c61d79a, 0x7a0ca137, 0x8e14f859, 0x893c13eb,
00423 0xee27a9ce, 0x35c961b7, 0xede51ce1, 0x3cb1477a,
00424 0x59dfd29c, 0x3f73f255, 0x79ce1418, 0xbf37c773,
00425 0xeacdf753, 0x5baafd5f, 0x146f3ddf, 0x86db4478,
00426 0x81f3afca, 0x3ec468b9, 0x2c342438, 0x5f40a3c2,
00427 0x72c31d16, 0x0c25e2bc, 0x8b493c28, 0x41950dff,
00428 0x7101a839, 0xdeb30c08, 0x9ce4b4d8, 0x90c15664,
00429 0x6184cb7b, 0x70b632d5, 0x745c6c48, 0x4257b8d0 },
00430 { 0xa7f45150, 0x65417e53, 0xa4171ac3, 0x5e273a96,
00431 0x6bab3bcb, 0x459d1ff1, 0x58faacab, 0x03e34b93,
00432 0xfa302055, 0x6d76adf6, 0x76cc8891, 0x4c02f525,
00433 0xd7e54ffc, 0xcb2ac5d7, 0x44352680, 0xa362b58f,
00434 0x5ab1de49, 0x1bba2567, 0x0eea4598, 0xc0fe5de1,
00435 0x752fc302, 0xf04c8112, 0x97468da3, 0xf9d36bc6,
00436 0x5f8f03e7, 0x9c921595, 0x7a6dbfeb, 0x595295da,
00437 0x83bed42d, 0x217458d3, 0x69e04929, 0xc8c98e44,
00438 0x89c2756a, 0x798ef478, 0x3e58996b, 0x71b927dd,
00439 0x4fe1beb6, 0xad88f017, 0xac20c966, 0x3ace7db4,
00440 0x4adf6318, 0x311ae582, 0x33519760, 0x7f536245,
00441 0x7764b1e0, 0xae6bbb84, 0xa081fe1c, 0x2b08f994,
00442 0x68487058, 0xfd458f19, 0x6cde9487, 0xf87b52b7,
00443 0xd373ab23, 0x024b72e2, 0x8f1fe357, 0xab55662a,
00444 0x28ebb207, 0xc2b52f03, 0x7bc5869a, 0x0837d3a5,
00445 0x872830f2, 0xa5bf23b2, 0x6a0302ba, 0x8216ed5c,
00446 0x1ccf8a2b, 0xb479a792, 0xf207f3f0, 0xe2694ea1,
00447 0xf4da65cd, 0xbe0506d5, 0x6234d11f, 0xfea6c48a,
00448 0x532e349d, 0x55f3a2a0, 0xe18a0532, 0xebf6a475,
00449 0xec830b39, 0xef6040aa, 0x9f715e06, 0x106ebd51,
00450 0x8a213ef9, 0x06dd963d, 0x053eddae, 0xbde64d46,
00451 0x8d5491b5, 0x5dc47105, 0xd406046f, 0x155060ff,
00452 0xfb981924, 0xe9bdd697, 0x434089cc, 0x9ed96777,
00453 0x42e8b0bd, 0x8b890788, 0x5b19e738, 0xeec879db,
00454 0x0a7ca147, 0x0f427ce9, 0x1e84f8c9, 0x00000000,
00455 0x86800983, 0xed2b3248, 0x70111eac, 0x725a6c4e,
00456 0xff0efdfb, 0x38850f56, 0xd5ae3d1e, 0x392d3627,
00457 0xd90f0a64, 0xa65c6821, 0x545b9bd1, 0x2e36243a,
00458 0x670a0cb1, 0xe757930f, 0x96eeb4d2, 0x919b1b9e,
00459 0xc5c0804f, 0x20dc61a2, 0x4b775a69, 0x1a121c16,
00460 0xba93e20a, 0x2aa0c0e5, 0xe0223c43, 0x171b121d,
00461 0x0d090e0b, 0xc78bf2ad, 0xa8b62db9, 0xa91e14c8,
00462 0x19f15785, 0x0775af4c, 0xdd99eebb, 0x607fa3fd,
00463 0x2601f79f, 0xf5725cbc, 0x3b6644c5, 0x7efb5b34,
00464 0x29438b76, 0xc623cbdc, 0xfcedb668, 0xf1e4b863,
00465 0xdc31d7ca, 0x85634210, 0x22971340, 0x11c68420,
00466 0x244a857d, 0x3dbbd2f8, 0x32f9ae11, 0xa129c76d,
00467 0x2f9e1d4b, 0x30b2dcf3, 0x52860dec, 0xe3c177d0,
00468 0x16b32b6c, 0xb970a999, 0x489411fa, 0x64e94722,
00469 0x8cfca8c4, 0x3ff0a01a, 0x2c7d56d8, 0x903322ef,
00470 0x4e4987c7, 0xd138d9c1, 0xa2ca8cfe, 0x0bd49836,
00471 0x81f5a6cf, 0xde7aa528, 0x8eb7da26, 0xbfad3fa4,
00472 0x9d3a2ce4, 0x9278500d, 0xcc5f6a9b, 0x467e5462,
00473 0x138df6c2, 0xb8d890e8, 0xf7392e5e, 0xafc382f5,
00474 0x805d9fbe, 0x93d0697c, 0x2dd56fa9, 0x1225cfb3,
00475 0x99acc83b, 0x7d1810a7, 0x639ce86e, 0xbb3bdb7b,
00476 0x7826cd09, 0x18596ef4, 0xb79aec01, 0x9a4f83a8,
00477 0x6e95e665, 0xe6ffaa7e, 0xcfbc2108, 0xe815efe6,
00478 0x9be7bad9, 0x366f4ace, 0x099fead4, 0x7cb029d6,
00479 0xb2a431af, 0x233f2a31, 0x94a5c630, 0x66a235c0,
00480 0xbc4e7437, 0xca82fca6, 0xd090e0b0, 0xd8a73315,
00481 0x9804f14a, 0xdaec41f7, 0x50cd7f0e, 0xf691172f,
00482 0xd64d768d, 0xb0ef434d, 0x4daacc54, 0x0496e4df,
00483 0xb5d19ee3, 0x886a4c1b, 0x1f2cc1b8, 0x5165467f,
00484 0xea5e9d04, 0x358c015d, 0x7487fa73, 0x410bfb2e,
00485 0x1d67b35a, 0xd2db9252, 0x5610e933, 0x47d66d13,
00486 0x61d79a8c, 0x0ca1377a, 0x14f8598e, 0x3c13eb89,
00487 0x27a9ceee, 0xc961b735, 0xe51ce1ed, 0xb1477a3c,
00488 0xdfd29c59, 0x73f2553f, 0xce141879, 0x37c773bf,
00489 0xcdf753ea, 0xaafd5f5b, 0x6f3ddf14, 0xdb447886,
00490 0xf3afca81, 0xc468b93e, 0x3424382c, 0x40a3c25f,
00491 0xc31d1672, 0x25e2bc0c, 0x493c288b, 0x950dff41,
00492 0x01a83971, 0xb30c08de, 0xe4b4d89c, 0xc1566490,
00493 0x84cb7b61, 0xb632d570, 0x5c6c4874, 0x57b8d042 },
00494 { 0xf45150a7, 0x417e5365, 0x171ac3a4, 0x273a965e,
00495 0xab3bcb6b, 0x9d1ff145, 0xfaacab58, 0xe34b9303,
00496 0x302055fa, 0x76adf66d, 0xcc889176, 0x02f5254c,
00497 0xe54ffcd7, 0x2ac5d7cb, 0x35268044, 0x62b58fa3,
00498 0xb1de495a, 0xba25671b, 0xea45980e, 0xfe5de1c0,
00499 0x2fc30275, 0x4c8112f0, 0x468da397, 0xd36bc6f9,
00500 0x8f03e75f, 0x9215959c, 0x6dbfeb7a, 0x5295da59,
00501 0xbed42d83, 0x7458d321, 0xe0492969, 0xc98e44c8,
00502 0xc2756a89, 0x8ef47879, 0x58996b3e, 0xb927dd71,
00503 0xe1beb64f, 0x88f017ad, 0x20c966ac, 0xce7db43a,
00504 0xdf63184a, 0x1ae58231, 0x51976033, 0x5362457f,
00505 0x64b1e077, 0x6bbb84ae, 0x81fe1ca0, 0x08f9942b,
00506 0x48705868, 0x458f19fd, 0xde94876c, 0x7b52b7f8,
00507 0x73ab23d3, 0x4b72e202, 0x1fe3578f, 0x55662aab,
00508 0xebb20728, 0xb52f03c2, 0xc5869a7b, 0x37d3a508,
00509 0x2830f287, 0xbf23b2a5, 0x0302ba6a, 0x16ed5c82,
00510 0xcf8a2b1c, 0x79a792b4, 0x07f3f0f2, 0x694ea1e2,
00511 0xda65cdf4, 0x0506d5be, 0x34d11f62, 0xa6c48afe,
00512 0x2e349d53, 0xf3a2a055, 0x8a0532e1, 0xf6a475eb,
00513 0x830b39ec, 0x6040aaef, 0x715e069f, 0x6ebd5110,
00514 0x213ef98a, 0xdd963d06, 0x3eddae05, 0xe64d46bd,
00515 0x5491b58d, 0xc471055d, 0x06046fd4, 0x5060ff15,
00516 0x981924fb, 0xbdd697e9, 0x4089cc43, 0xd967779e,
00517 0xe8b0bd42, 0x8907888b, 0x19e7385b, 0xc879dbee,
00518 0x7ca1470a, 0x427ce90f, 0x84f8c91e, 0x00000000,
00519 0x80098386, 0x2b3248ed, 0x111eac70, 0x5a6c4e72,
00520 0x0efdfbff, 0x850f5638, 0xae3d1ed5, 0x2d362739,
00521 0x0f0a64d9, 0x5c6821a6, 0x5b9bd154, 0x36243a2e,
00522 0x0a0cb167, 0x57930fe7, 0xeeb4d296, 0x9b1b9e91,
00523 0xc0804fc5, 0xdc61a220, 0x775a694b, 0x121c161a,
00524 0x93e20aba, 0xa0c0e52a, 0x223c43e0, 0x1b121d17,
00525 0x090e0b0d, 0x8bf2adc7, 0xb62db9a8, 0x1e14c8a9,
00526 0xf1578519, 0x75af4c07, 0x99eebbdd, 0x7fa3fd60,
00527 0x01f79f26, 0x725cbcf5, 0x6644c53b, 0xfb5b347e,
00528 0x438b7629, 0x23cbdcc6, 0xedb668fc, 0xe4b863f1,
00529 0x31d7cadc, 0x63421085, 0x97134022, 0xc6842011,
00530 0x4a857d24, 0xbbd2f83d, 0xf9ae1132, 0x29c76da1,
00531 0x9e1d4b2f, 0xb2dcf330, 0x860dec52, 0xc177d0e3,
00532 0xb32b6c16, 0x70a999b9, 0x9411fa48, 0xe9472264,
00533 0xfca8c48c, 0xf0a01a3f, 0x7d56d82c, 0x3322ef90,
00534 0x4987c74e, 0x38d9c1d1, 0xca8cfea2, 0xd498360b,
00535 0xf5a6cf81, 0x7aa528de, 0xb7da268e, 0xad3fa4bf,
00536 0x3a2ce49d, 0x78500d92, 0x5f6a9bcc, 0x7e546246,
00537 0x8df6c213, 0xd890e8b8, 0x392e5ef7, 0xc382f5af,
00538 0x5d9fbe80, 0xd0697c93, 0xd56fa92d, 0x25cfb312,
00539 0xacc83b99, 0x1810a77d, 0x9ce86e63, 0x3bdb7bbb,
00540 0x26cd0978, 0x596ef418, 0x9aec01b7, 0x4f83a89a,
00541 0x95e6656e, 0xffaa7ee6, 0xbc2108cf, 0x15efe6e8,
00542 0xe7bad99b, 0x6f4ace36, 0x9fead409, 0xb029d67c,
00543 0xa431afb2, 0x3f2a3123, 0xa5c63094, 0xa235c066,
00544 0x4e7437bc, 0x82fca6ca, 0x90e0b0d0, 0xa73315d8,
00545 0x04f14a98, 0xec41f7da, 0xcd7f0e50, 0x91172ff6,
00546 0x4d768dd6, 0xef434db0, 0xaacc544d, 0x96e4df04,
00547 0xd19ee3b5, 0x6a4c1b88, 0x2cc1b81f, 0x65467f51,
00548 0x5e9d04ea, 0x8c015d35, 0x87fa7374, 0x0bfb2e41,
00549 0x67b35a1d, 0xdb9252d2, 0x10e93356, 0xd66d1347,
00550 0xd79a8c61, 0xa1377a0c, 0xf8598e14, 0x13eb893c,
00551 0xa9ceee27, 0x61b735c9, 0x1ce1ede5, 0x477a3cb1,
00552 0xd29c59df, 0xf2553f73, 0x141879ce, 0xc773bf37,
00553 0xf753eacd, 0xfd5f5baa, 0x3ddf146f, 0x447886db,
00554 0xafca81f3, 0x68b93ec4, 0x24382c34, 0xa3c25f40,
00555 0x1d1672c3, 0xe2bc0c25, 0x3c288b49, 0x0dff4195,
00556 0xa8397101, 0x0c08deb3, 0xb4d89ce4, 0x566490c1,
00557 0xcb7b6184, 0x32d570b6, 0x6c48745c, 0xb8d04257 },
00558 { 0x5150a7f4, 0x7e536541, 0x1ac3a417, 0x3a965e27,
00559 0x3bcb6bab, 0x1ff1459d, 0xacab58fa, 0x4b9303e3,
00560 0x2055fa30, 0xadf66d76, 0x889176cc, 0xf5254c02,
00561 0x4ffcd7e5, 0xc5d7cb2a, 0x26804435, 0xb58fa362,
00562 0xde495ab1, 0x25671bba, 0x45980eea, 0x5de1c0fe,
00563 0xc302752f, 0x8112f04c, 0x8da39746, 0x6bc6f9d3,
00564 0x03e75f8f, 0x15959c92, 0xbfeb7a6d, 0x95da5952,
00565 0xd42d83be, 0x58d32174, 0x492969e0, 0x8e44c8c9,
00566 0x756a89c2, 0xf478798e, 0x996b3e58, 0x27dd71b9,
00567 0xbeb64fe1, 0xf017ad88, 0xc966ac20, 0x7db43ace,
00568 0x63184adf, 0xe582311a, 0x97603351, 0x62457f53,
00569 0xb1e07764, 0xbb84ae6b, 0xfe1ca081, 0xf9942b08,
00570 0x70586848, 0x8f19fd45, 0x94876cde, 0x52b7f87b,
00571 0xab23d373, 0x72e2024b, 0xe3578f1f, 0x662aab55,
00572 0xb20728eb, 0x2f03c2b5, 0x869a7bc5, 0xd3a50837,
00573 0x30f28728, 0x23b2a5bf, 0x02ba6a03, 0xed5c8216,
00574 0x8a2b1ccf, 0xa792b479, 0xf3f0f207, 0x4ea1e269,
00575 0x65cdf4da, 0x06d5be05, 0xd11f6234, 0xc48afea6,
00576 0x349d532e, 0xa2a055f3, 0x0532e18a, 0xa475ebf6,
00577 0x0b39ec83, 0x40aaef60, 0x5e069f71, 0xbd51106e,
00578 0x3ef98a21, 0x963d06dd, 0xddae053e, 0x4d46bde6,
00579 0x91b58d54, 0x71055dc4, 0x046fd406, 0x60ff1550,
00580 0x1924fb98, 0xd697e9bd, 0x89cc4340, 0x67779ed9,
00581 0xb0bd42e8, 0x07888b89, 0xe7385b19, 0x79dbeec8,
00582 0xa1470a7c, 0x7ce90f42, 0xf8c91e84, 0x00000000,
00583 0x09838680, 0x3248ed2b, 0x1eac7011, 0x6c4e725a,
00584 0xfdfbff0e, 0x0f563885, 0x3d1ed5ae, 0x3627392d,
00585 0x0a64d90f, 0x6821a65c, 0x9bd1545b, 0x243a2e36,
00586 0x0cb1670a, 0x930fe757, 0xb4d296ee, 0x1b9e919b,
00587 0x804fc5c0, 0x61a220dc, 0x5a694b77, 0x1c161a12,
00588 0xe20aba93, 0xc0e52aa0, 0x3c43e022, 0x121d171b,
00589 0x0e0b0d09, 0xf2adc78b, 0x2db9a8b6, 0x14c8a91e,
00590 0x578519f1, 0xaf4c0775, 0xeebbdd99, 0xa3fd607f,
00591 0xf79f2601, 0x5cbcf572, 0x44c53b66, 0x5b347efb,
00592 0x8b762943, 0xcbdcc623, 0xb668fced, 0xb863f1e4,
00593 0xd7cadc31, 0x42108563, 0x13402297, 0x842011c6,
00594 0x857d244a, 0xd2f83dbb, 0xae1132f9, 0xc76da129,
00595 0x1d4b2f9e, 0xdcf330b2, 0x0dec5286, 0x77d0e3c1,
00596 0x2b6c16b3, 0xa999b970, 0x11fa4894, 0x472264e9,
00597 0xa8c48cfc, 0xa01a3ff0, 0x56d82c7d, 0x22ef9033,
00598 0x87c74e49, 0xd9c1d138, 0x8cfea2ca, 0x98360bd4,
00599 0xa6cf81f5, 0xa528de7a, 0xda268eb7, 0x3fa4bfad,
00600 0x2ce49d3a, 0x500d9278, 0x6a9bcc5f, 0x5462467e,
00601 0xf6c2138d, 0x90e8b8d8, 0x2e5ef739, 0x82f5afc3,
00602 0x9fbe805d, 0x697c93d0, 0x6fa92dd5, 0xcfb31225,
00603 0xc83b99ac, 0x10a77d18, 0xe86e639c, 0xdb7bbb3b,
00604 0xcd097826, 0x6ef41859, 0xec01b79a, 0x83a89a4f,
00605 0xe6656e95, 0xaa7ee6ff, 0x2108cfbc, 0xefe6e815,
00606 0xbad99be7, 0x4ace366f, 0xead4099f, 0x29d67cb0,
00607 0x31afb2a4, 0x2a31233f, 0xc63094a5, 0x35c066a2,
00608 0x7437bc4e, 0xfca6ca82, 0xe0b0d090, 0x3315d8a7,
00609 0xf14a9804, 0x41f7daec, 0x7f0e50cd, 0x172ff691,
00610 0x768dd64d, 0x434db0ef, 0xcc544daa, 0xe4df0496,
00611 0x9ee3b5d1, 0x4c1b886a, 0xc1b81f2c, 0x467f5165,
00612 0x9d04ea5e, 0x015d358c, 0xfa737487, 0xfb2e410b,
00613 0xb35a1d67, 0x9252d2db, 0xe9335610, 0x6d1347d6,
00614 0x9a8c61d7, 0x377a0ca1, 0x598e14f8, 0xeb893c13,
00615 0xceee27a9, 0xb735c961, 0xe1ede51c, 0x7a3cb147,
00616 0x9c59dfd2, 0x553f73f2, 0x1879ce14, 0x73bf37c7,
00617 0x53eacdf7, 0x5f5baafd, 0xdf146f3d, 0x7886db44,
00618 0xca81f3af, 0xb93ec468, 0x382c3424, 0xc25f40a3,
00619 0x1672c31d, 0xbc0c25e2, 0x288b493c, 0xff41950d,
00620 0x397101a8, 0x08deb30c, 0xd89ce4b4, 0x6490c156,
00621 0x7b6184cb, 0xd570b632, 0x48745c6c, 0xd04257b8 },
00622 { 0x52525252, 0x09090909, 0x6a6a6a6a, 0xd5d5d5d5,
00623 0x30303030, 0x36363636, 0xa5a5a5a5, 0x38383838,
00624 0xbfbfbfbf, 0x40404040, 0xa3a3a3a3, 0x9e9e9e9e,
00625 0x81818181, 0xf3f3f3f3, 0xd7d7d7d7, 0xfbfbfbfb,
00626 0x7c7c7c7c, 0xe3e3e3e3, 0x39393939, 0x82828282,
00627 0x9b9b9b9b, 0x2f2f2f2f, 0xffffffff, 0x87878787,
00628 0x34343434, 0x8e8e8e8e, 0x43434343, 0x44444444,
00629 0xc4c4c4c4, 0xdededede, 0xe9e9e9e9, 0xcbcbcbcb,
00630 0x54545454, 0x7b7b7b7b, 0x94949494, 0x32323232,
00631 0xa6a6a6a6, 0xc2c2c2c2, 0x23232323, 0x3d3d3d3d,
00632 0xeeeeeeee, 0x4c4c4c4c, 0x95959595, 0x0b0b0b0b,
00633 0x42424242, 0xfafafafa, 0xc3c3c3c3, 0x4e4e4e4e,
00634 0x08080808, 0x2e2e2e2e, 0xa1a1a1a1, 0x66666666,
00635 0x28282828, 0xd9d9d9d9, 0x24242424, 0xb2b2b2b2,
00636 0x76767676, 0x5b5b5b5b, 0xa2a2a2a2, 0x49494949,
00637 0x6d6d6d6d, 0x8b8b8b8b, 0xd1d1d1d1, 0x25252525,
00638 0x72727272, 0xf8f8f8f8, 0xf6f6f6f6, 0x64646464,
00639 0x86868686, 0x68686868, 0x98989898, 0x16161616,
00640 0xd4d4d4d4, 0xa4a4a4a4, 0x5c5c5c5c, 0xcccccccc,
00641 0x5d5d5d5d, 0x65656565, 0xb6b6b6b6, 0x92929292,
00642 0x6c6c6c6c, 0x70707070, 0x48484848, 0x50505050,
00643 0xfdfdfdfd, 0xedededed, 0xb9b9b9b9, 0xdadadada,
00644 0x5e5e5e5e, 0x15151515, 0x46464646, 0x57575757,
00645 0xa7a7a7a7, 0x8d8d8d8d, 0x9d9d9d9d, 0x84848484,
00646 0x90909090, 0xd8d8d8d8, 0xabababab, 0x00000000,
00647 0x8c8c8c8c, 0xbcbcbcbc, 0xd3d3d3d3, 0x0a0a0a0a,
00648 0xf7f7f7f7, 0xe4e4e4e4, 0x58585858, 0x05050505,
00649 0xb8b8b8b8, 0xb3b3b3b3, 0x45454545, 0x06060606,
00650 0xd0d0d0d0, 0x2c2c2c2c, 0x1e1e1e1e, 0x8f8f8f8f,
00651 0xcacacaca, 0x3f3f3f3f, 0x0f0f0f0f, 0x02020202,
00652 0xc1c1c1c1, 0xafafafaf, 0xbdbdbdbd, 0x03030303,
00653 0x01010101, 0x13131313, 0x8a8a8a8a, 0x6b6b6b6b,
00654 0x3a3a3a3a, 0x91919191, 0x11111111, 0x41414141,
00655 0x4f4f4f4f, 0x67676767, 0xdcdcdcdc, 0xeaeaeaea,
00656 0x97979797, 0xf2f2f2f2, 0xcfcfcfcf, 0xcececece,
00657 0xf0f0f0f0, 0xb4b4b4b4, 0xe6e6e6e6, 0x73737373,
00658 0x96969696, 0xacacacac, 0x74747474, 0x22222222,
00659 0xe7e7e7e7, 0xadadadad, 0x35353535, 0x85858585,
00660 0xe2e2e2e2, 0xf9f9f9f9, 0x37373737, 0xe8e8e8e8,
00661 0x1c1c1c1c, 0x75757575, 0xdfdfdfdf, 0x6e6e6e6e,
00662 0x47474747, 0xf1f1f1f1, 0x1a1a1a1a, 0x71717171,
00663 0x1d1d1d1d, 0x29292929, 0xc5c5c5c5, 0x89898989,
00664 0x6f6f6f6f, 0xb7b7b7b7, 0x62626262, 0x0e0e0e0e,
00665 0xaaaaaaaa, 0x18181818, 0xbebebebe, 0x1b1b1b1b,
00666 0xfcfcfcfc, 0x56565656, 0x3e3e3e3e, 0x4b4b4b4b,
00667 0xc6c6c6c6, 0xd2d2d2d2, 0x79797979, 0x20202020,
00668 0x9a9a9a9a, 0xdbdbdbdb, 0xc0c0c0c0, 0xfefefefe,
00669 0x78787878, 0xcdcdcdcd, 0x5a5a5a5a, 0xf4f4f4f4,
00670 0x1f1f1f1f, 0xdddddddd, 0xa8a8a8a8, 0x33333333,
00671 0x88888888, 0x07070707, 0xc7c7c7c7, 0x31313131,
00672 0xb1b1b1b1, 0x12121212, 0x10101010, 0x59595959,
00673 0x27272727, 0x80808080, 0xecececec, 0x5f5f5f5f,
00674 0x60606060, 0x51515151, 0x7f7f7f7f, 0xa9a9a9a9,
00675 0x19191919, 0xb5b5b5b5, 0x4a4a4a4a, 0x0d0d0d0d,
00676 0x2d2d2d2d, 0xe5e5e5e5, 0x7a7a7a7a, 0x9f9f9f9f,
00677 0x93939393, 0xc9c9c9c9, 0x9c9c9c9c, 0xefefefef,
00678 0xa0a0a0a0, 0xe0e0e0e0, 0x3b3b3b3b, 0x4d4d4d4d,
00679 0xaeaeaeae, 0x2a2a2a2a, 0xf5f5f5f5, 0xb0b0b0b0,
00680 0xc8c8c8c8, 0xebebebeb, 0xbbbbbbbb, 0x3c3c3c3c,
00681 0x83838383, 0x53535353, 0x99999999, 0x61616161,
00682 0x17171717, 0x2b2b2b2b, 0x04040404, 0x7e7e7e7e,
00683 0xbabababa, 0x77777777, 0xd6d6d6d6, 0x26262626,
00684 0xe1e1e1e1, 0x69696969, 0x14141414, 0x63636363,
00685 0x55555555, 0x21212121, 0x0c0c0c0c, 0x7d7d7d7d }
00686 };
00687
00688 #define _ad0 _aes_dec.t0
00689 #define _ad1 _aes_dec.t1
00690 #define _ad2 _aes_dec.t2
00691 #define _ad3 _aes_dec.t3
00692 #define _ad4 _aes_dec.t4
00693
00694 static const uint32_t _arc[] = {
00695 0x00000001, 0x00000002, 0x00000004, 0x00000008,
00696 0x00000010, 0x00000020, 0x00000040, 0x00000080,
00697 0x0000001b, 0x00000036
00698 };
00699
00700 #define etfs(i) \
00701 t0 = \
00702 _ae0[(s0 ) & 0xff] ^ \
00703 _ae1[(s1 >> 8) & 0xff] ^ \
00704 _ae2[(s2 >> 16) & 0xff] ^ \
00705 _ae3[(s3 >> 24) ] ^ \
00706 rk[i+0]; \
00707 t1 = \
00708 _ae0[(s1 ) & 0xff] ^ \
00709 _ae1[(s2 >> 8) & 0xff] ^ \
00710 _ae2[(s3 >> 16) & 0xff] ^ \
00711 _ae3[(s0 >> 24) ] ^ \
00712 rk[i+1]; \
00713 t2 = \
00714 _ae0[(s2 ) & 0xff] ^ \
00715 _ae1[(s3 >> 8) & 0xff] ^ \
00716 _ae2[(s0 >> 16) & 0xff] ^ \
00717 _ae3[(s1 >> 24) ] ^ \
00718 rk[i+2]; \
00719 t3 = \
00720 _ae0[(s3 ) & 0xff] ^ \
00721 _ae1[(s0 >> 8) & 0xff] ^ \
00722 _ae2[(s1 >> 16) & 0xff] ^ \
00723 _ae3[(s2 >> 24) ] ^ \
00724 rk[i+3];
00725
00726 #define esft(i) \
00727 s0 = \
00728 _ae0[(t0 ) & 0xff] ^ \
00729 _ae1[(t1 >> 8) & 0xff] ^ \
00730 _ae2[(t2 >> 16) & 0xff] ^ \
00731 _ae3[(t3 >> 24) ] ^ \
00732 rk[i+0]; \
00733 s1 = \
00734 _ae0[(t1 ) & 0xff] ^ \
00735 _ae1[(t2 >> 8) & 0xff] ^ \
00736 _ae2[(t3 >> 16) & 0xff] ^ \
00737 _ae3[(t0 >> 24) ] ^ \
00738 rk[i+1]; \
00739 s2 = \
00740 _ae0[(t2 ) & 0xff] ^ \
00741 _ae1[(t3 >> 8) & 0xff] ^ \
00742 _ae2[(t0 >> 16) & 0xff] ^ \
00743 _ae3[(t1 >> 24) ] ^ \
00744 rk[i+2]; \
00745 s3 = \
00746 _ae0[(t3 ) & 0xff] ^ \
00747 _ae1[(t0 >> 8) & 0xff] ^ \
00748 _ae2[(t1 >> 16) & 0xff] ^ \
00749 _ae3[(t2 >> 24) ] ^ \
00750 rk[i+3];
00751
00752 #define elr() \
00753 s0 = \
00754 (_ae4[(t0 ) & 0xff] & 0x000000ff) ^ \
00755 (_ae4[(t1 >> 8) & 0xff] & 0x0000ff00) ^ \
00756 (_ae4[(t2 >> 16) & 0xff] & 0x00ff0000) ^ \
00757 (_ae4[(t3 >> 24) ] & 0xff000000) ^ \
00758 rk[0]; \
00759 s1 = \
00760 (_ae4[(t1 ) & 0xff] & 0x000000ff) ^ \
00761 (_ae4[(t2 >> 8) & 0xff] & 0x0000ff00) ^ \
00762 (_ae4[(t3 >> 16) & 0xff] & 0x00ff0000) ^ \
00763 (_ae4[(t0 >> 24) ] & 0xff000000) ^ \
00764 rk[1]; \
00765 s2 = \
00766 (_ae4[(t2 ) & 0xff] & 0x000000ff) ^ \
00767 (_ae4[(t3 >> 8) & 0xff] & 0x0000ff00) ^ \
00768 (_ae4[(t0 >> 16) & 0xff] & 0x00ff0000) ^ \
00769 (_ae4[(t1 >> 24) ] & 0xff000000) ^ \
00770 rk[2]; \
00771 s3 = \
00772 (_ae4[(t3 ) & 0xff] & 0x000000ff) ^ \
00773 (_ae4[(t0 >> 8) & 0xff] & 0x0000ff00) ^ \
00774 (_ae4[(t1 >> 16) & 0xff] & 0x00ff0000) ^ \
00775 (_ae4[(t2 >> 24) ] & 0xff000000) ^ \
00776 rk[3];
00777
00778 #define dtfs(i) \
00779 t0 = \
00780 _ad0[(s0 ) & 0xff] ^ \
00781 _ad1[(s3 >> 8) & 0xff] ^ \
00782 _ad2[(s2 >> 16) & 0xff] ^ \
00783 _ad3[(s1 >> 24) ] ^ \
00784 rk[i+0]; \
00785 t1 = \
00786 _ad0[(s1 ) & 0xff] ^ \
00787 _ad1[(s0 >> 8) & 0xff] ^ \
00788 _ad2[(s3 >> 16) & 0xff] ^ \
00789 _ad3[(s2 >> 24) ] ^ \
00790 rk[i+1]; \
00791 t2 = \
00792 _ad0[(s2 ) & 0xff] ^ \
00793 _ad1[(s1 >> 8) & 0xff] ^ \
00794 _ad2[(s0 >> 16) & 0xff] ^ \
00795 _ad3[(s3 >> 24) ] ^ \
00796 rk[i+2]; \
00797 t3 = \
00798 _ad0[(s3 ) & 0xff] ^ \
00799 _ad1[(s2 >> 8) & 0xff] ^ \
00800 _ad2[(s1 >> 16) & 0xff] ^ \
00801 _ad3[(s0 >> 24) ] ^ \
00802 rk[i+3];
00803
00804 #define dsft(i) \
00805 s0 = \
00806 _ad0[(t0 ) & 0xff] ^ \
00807 _ad1[(t3 >> 8) & 0xff] ^ \
00808 _ad2[(t2 >> 16) & 0xff] ^ \
00809 _ad3[(t1 >> 24) ] ^ \
00810 rk[i+0]; \
00811 s1 = \
00812 _ad0[(t1 ) & 0xff] ^ \
00813 _ad1[(t0 >> 8) & 0xff] ^ \
00814 _ad2[(t3 >> 16) & 0xff] ^ \
00815 _ad3[(t2 >> 24) ] ^ \
00816 rk[i+1]; \
00817 s2 = \
00818 _ad0[(t2 ) & 0xff] ^ \
00819 _ad1[(t1 >> 8) & 0xff] ^ \
00820 _ad2[(t0 >> 16) & 0xff] ^ \
00821 _ad3[(t3 >> 24) ] ^ \
00822 rk[i+2]; \
00823 s3 = \
00824 _ad0[(t3 ) & 0xff] ^ \
00825 _ad1[(t2 >> 8) & 0xff] ^ \
00826 _ad2[(t1 >> 16) & 0xff] ^ \
00827 _ad3[(t0 >> 24) ] ^ \
00828 rk[i+3];
00829
00830 #define dlr() \
00831 s0 = \
00832 (_ad4[(t0 ) & 0xff] & 0x000000ff) ^ \
00833 (_ad4[(t3 >> 8) & 0xff] & 0x0000ff00) ^ \
00834 (_ad4[(t2 >> 16) & 0xff] & 0x00ff0000) ^ \
00835 (_ad4[(t1 >> 24) ] & 0xff000000) ^ \
00836 rk[0]; \
00837 s1 = \
00838 (_ad4[(t1 ) & 0xff] & 0x000000ff) ^ \
00839 (_ad4[(t0 >> 8) & 0xff] & 0x0000ff00) ^ \
00840 (_ad4[(t3 >> 16) & 0xff] & 0x00ff0000) ^ \
00841 (_ad4[(t2 >> 24) ] & 0xff000000) ^ \
00842 rk[1]; \
00843 s2 = \
00844 (_ad4[(t2 ) & 0xff] & 0x000000ff) ^ \
00845 (_ad4[(t1 >> 8) & 0xff] & 0x0000ff00) ^ \
00846 (_ad4[(t0 >> 16) & 0xff] & 0x00ff0000) ^ \
00847 (_ad4[(t3 >> 24) ] & 0xff000000) ^ \
00848 rk[2]; \
00849 s3 = \
00850 (_ad4[(t3 ) & 0xff] & 0x000000ff) ^ \
00851 (_ad4[(t2 >> 8) & 0xff] & 0x0000ff00) ^ \
00852 (_ad4[(t1 >> 16) & 0xff] & 0x00ff0000) ^ \
00853 (_ad4[(t0 >> 24) ] & 0xff000000) ^ \
00854 rk[3];