Main Page | Modules | Data Structures | File List | Data Fields | Globals | Related Pages

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

Generated on Wed Mar 24 13:56:53 2004 for BeeCrypt by doxygen 1.3.6