1 /* 1 /* 2 * Cryptographic API. 2 * Cryptographic API. 3 * 3 * 4 * AES Cipher Algorithm. 4 * AES Cipher Algorithm. 5 * 5 * 6 * Based on Brian Gladman's code. 6 * Based on Brian Gladman's code. 7 * 7 * 8 * Linux developers: 8 * Linux developers: 9 * Alexander Kjeldaas <astor@fast.no> 9 * Alexander Kjeldaas <astor@fast.no> 10 * Herbert Valerio Riedel <hvr@hvrlab.org> 10 * Herbert Valerio Riedel <hvr@hvrlab.org> 11 * Kyle McMartin <kyle@debian.org> 11 * Kyle McMartin <kyle@debian.org> 12 * Adam J. Richter <adam@yggdrasil.com> (conv 12 * Adam J. Richter <adam@yggdrasil.com> (conversion to 2.5 API). 13 * 13 * 14 * This program is free software; you can redi 14 * This program is free software; you can redistribute it and/or modify 15 * it under the terms of the GNU General Publi 15 * it under the terms of the GNU General Public License as published by 16 * the Free Software Foundation; either versio 16 * the Free Software Foundation; either version 2 of the License, or 17 * (at your option) any later version. 17 * (at your option) any later version. 18 * 18 * 19 * ------------------------------------------- 19 * --------------------------------------------------------------------------- 20 * Copyright (c) 2002, Dr Brian Gladman <brg@g 20 * Copyright (c) 2002, Dr Brian Gladman <brg@gladman.me.uk>, Worcester, UK. 21 * All rights reserved. 21 * All rights reserved. 22 * 22 * 23 * LICENSE TERMS 23 * LICENSE TERMS 24 * 24 * 25 * The free distribution and use of this softw 25 * The free distribution and use of this software in both source and binary 26 * form is allowed (with or without changes) p 26 * form is allowed (with or without changes) provided that: 27 * 27 * 28 * 1. distributions of this source code incl 28 * 1. distributions of this source code include the above copyright 29 * notice, this list of conditions and th 29 * notice, this list of conditions and the following disclaimer; 30 * 30 * 31 * 2. distributions in binary form include t 31 * 2. distributions in binary form include the above copyright 32 * notice, this list of conditions and th 32 * notice, this list of conditions and the following disclaimer 33 * in the documentation and/or other asso 33 * in the documentation and/or other associated materials; 34 * 34 * 35 * 3. the copyright holder's name is not use 35 * 3. the copyright holder's name is not used to endorse products 36 * built using this software without spec 36 * built using this software without specific written permission. 37 * 37 * 38 * ALTERNATIVELY, provided that this notice is 38 * ALTERNATIVELY, provided that this notice is retained in full, this product 39 * may be distributed under the terms of the G 39 * may be distributed under the terms of the GNU General Public License (GPL), 40 * in which case the provisions of the GPL app 40 * in which case the provisions of the GPL apply INSTEAD OF those given above. 41 * 41 * 42 * DISCLAIMER 42 * DISCLAIMER 43 * 43 * 44 * This software is provided 'as is' with no e 44 * This software is provided 'as is' with no explicit or implied warranties 45 * in respect of its properties, including, bu 45 * in respect of its properties, including, but not limited to, correctness 46 * and/or fitness for purpose. 46 * and/or fitness for purpose. 47 * ------------------------------------------- 47 * --------------------------------------------------------------------------- 48 */ 48 */ 49 49 50 #include <crypto/aes.h> 50 #include <crypto/aes.h> 51 #include <crypto/algapi.h> << 52 #include <linux/module.h> 51 #include <linux/module.h> 53 #include <linux/init.h> 52 #include <linux/init.h> 54 #include <linux/types.h> 53 #include <linux/types.h> 55 #include <linux/errno.h> 54 #include <linux/errno.h> >> 55 #include <linux/crypto.h> 56 #include <asm/byteorder.h> 56 #include <asm/byteorder.h> 57 #include <asm/unaligned.h> 57 #include <asm/unaligned.h> 58 58 59 static inline u8 byte(const u32 x, const unsig 59 static inline u8 byte(const u32 x, const unsigned n) 60 { 60 { 61 return x >> (n << 3); 61 return x >> (n << 3); 62 } 62 } 63 63 >> 64 static const u32 rco_tab[10] = { 1, 2, 4, 8, 16, 32, 64, 128, 27, 54 }; >> 65 64 /* cacheline-aligned to facilitate prefetching 66 /* cacheline-aligned to facilitate prefetching into cache */ 65 __visible const u32 crypto_ft_tab[4][256] ____ !! 67 __visible const u32 crypto_ft_tab[4][256] __cacheline_aligned = { 66 { 68 { 67 0xa56363c6, 0x847c7cf8, 0x9977 69 0xa56363c6, 0x847c7cf8, 0x997777ee, 0x8d7b7bf6, 68 0x0df2f2ff, 0xbd6b6bd6, 0xb16f 70 0x0df2f2ff, 0xbd6b6bd6, 0xb16f6fde, 0x54c5c591, 69 0x50303060, 0x03010102, 0xa967 71 0x50303060, 0x03010102, 0xa96767ce, 0x7d2b2b56, 70 0x19fefee7, 0x62d7d7b5, 0xe6ab 72 0x19fefee7, 0x62d7d7b5, 0xe6abab4d, 0x9a7676ec, 71 0x45caca8f, 0x9d82821f, 0x40c9 73 0x45caca8f, 0x9d82821f, 0x40c9c989, 0x877d7dfa, 72 0x15fafaef, 0xeb5959b2, 0xc947 74 0x15fafaef, 0xeb5959b2, 0xc947478e, 0x0bf0f0fb, 73 0xecadad41, 0x67d4d4b3, 0xfda2 75 0xecadad41, 0x67d4d4b3, 0xfda2a25f, 0xeaafaf45, 74 0xbf9c9c23, 0xf7a4a453, 0x9672 76 0xbf9c9c23, 0xf7a4a453, 0x967272e4, 0x5bc0c09b, 75 0xc2b7b775, 0x1cfdfde1, 0xae93 77 0xc2b7b775, 0x1cfdfde1, 0xae93933d, 0x6a26264c, 76 0x5a36366c, 0x413f3f7e, 0x02f7 78 0x5a36366c, 0x413f3f7e, 0x02f7f7f5, 0x4fcccc83, 77 0x5c343468, 0xf4a5a551, 0x34e5 79 0x5c343468, 0xf4a5a551, 0x34e5e5d1, 0x08f1f1f9, 78 0x937171e2, 0x73d8d8ab, 0x5331 80 0x937171e2, 0x73d8d8ab, 0x53313162, 0x3f15152a, 79 0x0c040408, 0x52c7c795, 0x6523 81 0x0c040408, 0x52c7c795, 0x65232346, 0x5ec3c39d, 80 0x28181830, 0xa1969637, 0x0f05 82 0x28181830, 0xa1969637, 0x0f05050a, 0xb59a9a2f, 81 0x0907070e, 0x36121224, 0x9b80 83 0x0907070e, 0x36121224, 0x9b80801b, 0x3de2e2df, 82 0x26ebebcd, 0x6927274e, 0xcdb2 84 0x26ebebcd, 0x6927274e, 0xcdb2b27f, 0x9f7575ea, 83 0x1b090912, 0x9e83831d, 0x742c 85 0x1b090912, 0x9e83831d, 0x742c2c58, 0x2e1a1a34, 84 0x2d1b1b36, 0xb26e6edc, 0xee5a 86 0x2d1b1b36, 0xb26e6edc, 0xee5a5ab4, 0xfba0a05b, 85 0xf65252a4, 0x4d3b3b76, 0x61d6 87 0xf65252a4, 0x4d3b3b76, 0x61d6d6b7, 0xceb3b37d, 86 0x7b292952, 0x3ee3e3dd, 0x712f 88 0x7b292952, 0x3ee3e3dd, 0x712f2f5e, 0x97848413, 87 0xf55353a6, 0x68d1d1b9, 0x0000 89 0xf55353a6, 0x68d1d1b9, 0x00000000, 0x2cededc1, 88 0x60202040, 0x1ffcfce3, 0xc8b1 90 0x60202040, 0x1ffcfce3, 0xc8b1b179, 0xed5b5bb6, 89 0xbe6a6ad4, 0x46cbcb8d, 0xd9be 91 0xbe6a6ad4, 0x46cbcb8d, 0xd9bebe67, 0x4b393972, 90 0xde4a4a94, 0xd44c4c98, 0xe858 92 0xde4a4a94, 0xd44c4c98, 0xe85858b0, 0x4acfcf85, 91 0x6bd0d0bb, 0x2aefefc5, 0xe5aa 93 0x6bd0d0bb, 0x2aefefc5, 0xe5aaaa4f, 0x16fbfbed, 92 0xc5434386, 0xd74d4d9a, 0x5533 94 0xc5434386, 0xd74d4d9a, 0x55333366, 0x94858511, 93 0xcf45458a, 0x10f9f9e9, 0x0602 95 0xcf45458a, 0x10f9f9e9, 0x06020204, 0x817f7ffe, 94 0xf05050a0, 0x443c3c78, 0xba9f 96 0xf05050a0, 0x443c3c78, 0xba9f9f25, 0xe3a8a84b, 95 0xf35151a2, 0xfea3a35d, 0xc040 97 0xf35151a2, 0xfea3a35d, 0xc0404080, 0x8a8f8f05, 96 0xad92923f, 0xbc9d9d21, 0x4838 98 0xad92923f, 0xbc9d9d21, 0x48383870, 0x04f5f5f1, 97 0xdfbcbc63, 0xc1b6b677, 0x75da 99 0xdfbcbc63, 0xc1b6b677, 0x75dadaaf, 0x63212142, 98 0x30101020, 0x1affffe5, 0x0ef3 100 0x30101020, 0x1affffe5, 0x0ef3f3fd, 0x6dd2d2bf, 99 0x4ccdcd81, 0x140c0c18, 0x3513 101 0x4ccdcd81, 0x140c0c18, 0x35131326, 0x2fececc3, 100 0xe15f5fbe, 0xa2979735, 0xcc44 102 0xe15f5fbe, 0xa2979735, 0xcc444488, 0x3917172e, 101 0x57c4c493, 0xf2a7a755, 0x827e 103 0x57c4c493, 0xf2a7a755, 0x827e7efc, 0x473d3d7a, 102 0xac6464c8, 0xe75d5dba, 0x2b19 104 0xac6464c8, 0xe75d5dba, 0x2b191932, 0x957373e6, 103 0xa06060c0, 0x98818119, 0xd14f 105 0xa06060c0, 0x98818119, 0xd14f4f9e, 0x7fdcdca3, 104 0x66222244, 0x7e2a2a54, 0xab90 106 0x66222244, 0x7e2a2a54, 0xab90903b, 0x8388880b, 105 0xca46468c, 0x29eeeec7, 0xd3b8 107 0xca46468c, 0x29eeeec7, 0xd3b8b86b, 0x3c141428, 106 0x79dedea7, 0xe25e5ebc, 0x1d0b 108 0x79dedea7, 0xe25e5ebc, 0x1d0b0b16, 0x76dbdbad, 107 0x3be0e0db, 0x56323264, 0x4e3a 109 0x3be0e0db, 0x56323264, 0x4e3a3a74, 0x1e0a0a14, 108 0xdb494992, 0x0a06060c, 0x6c24 110 0xdb494992, 0x0a06060c, 0x6c242448, 0xe45c5cb8, 109 0x5dc2c29f, 0x6ed3d3bd, 0xefac 111 0x5dc2c29f, 0x6ed3d3bd, 0xefacac43, 0xa66262c4, 110 0xa8919139, 0xa4959531, 0x37e4 112 0xa8919139, 0xa4959531, 0x37e4e4d3, 0x8b7979f2, 111 0x32e7e7d5, 0x43c8c88b, 0x5937 113 0x32e7e7d5, 0x43c8c88b, 0x5937376e, 0xb76d6dda, 112 0x8c8d8d01, 0x64d5d5b1, 0xd24e 114 0x8c8d8d01, 0x64d5d5b1, 0xd24e4e9c, 0xe0a9a949, 113 0xb46c6cd8, 0xfa5656ac, 0x07f4 115 0xb46c6cd8, 0xfa5656ac, 0x07f4f4f3, 0x25eaeacf, 114 0xaf6565ca, 0x8e7a7af4, 0xe9ae 116 0xaf6565ca, 0x8e7a7af4, 0xe9aeae47, 0x18080810, 115 0xd5baba6f, 0x887878f0, 0x6f25 117 0xd5baba6f, 0x887878f0, 0x6f25254a, 0x722e2e5c, 116 0x241c1c38, 0xf1a6a657, 0xc7b4 118 0x241c1c38, 0xf1a6a657, 0xc7b4b473, 0x51c6c697, 117 0x23e8e8cb, 0x7cdddda1, 0x9c74 119 0x23e8e8cb, 0x7cdddda1, 0x9c7474e8, 0x211f1f3e, 118 0xdd4b4b96, 0xdcbdbd61, 0x868b 120 0xdd4b4b96, 0xdcbdbd61, 0x868b8b0d, 0x858a8a0f, 119 0x907070e0, 0x423e3e7c, 0xc4b5 121 0x907070e0, 0x423e3e7c, 0xc4b5b571, 0xaa6666cc, 120 0xd8484890, 0x05030306, 0x01f6 122 0xd8484890, 0x05030306, 0x01f6f6f7, 0x120e0e1c, 121 0xa36161c2, 0x5f35356a, 0xf957 123 0xa36161c2, 0x5f35356a, 0xf95757ae, 0xd0b9b969, 122 0x91868617, 0x58c1c199, 0x271d 124 0x91868617, 0x58c1c199, 0x271d1d3a, 0xb99e9e27, 123 0x38e1e1d9, 0x13f8f8eb, 0xb398 125 0x38e1e1d9, 0x13f8f8eb, 0xb398982b, 0x33111122, 124 0xbb6969d2, 0x70d9d9a9, 0x898e 126 0xbb6969d2, 0x70d9d9a9, 0x898e8e07, 0xa7949433, 125 0xb69b9b2d, 0x221e1e3c, 0x9287 127 0xb69b9b2d, 0x221e1e3c, 0x92878715, 0x20e9e9c9, 126 0x49cece87, 0xff5555aa, 0x7828 128 0x49cece87, 0xff5555aa, 0x78282850, 0x7adfdfa5, 127 0x8f8c8c03, 0xf8a1a159, 0x8089 129 0x8f8c8c03, 0xf8a1a159, 0x80898909, 0x170d0d1a, 128 0xdabfbf65, 0x31e6e6d7, 0xc642 130 0xdabfbf65, 0x31e6e6d7, 0xc6424284, 0xb86868d0, 129 0xc3414182, 0xb0999929, 0x772d 131 0xc3414182, 0xb0999929, 0x772d2d5a, 0x110f0f1e, 130 0xcbb0b07b, 0xfc5454a8, 0xd6bb 132 0xcbb0b07b, 0xfc5454a8, 0xd6bbbb6d, 0x3a16162c, 131 }, { 133 }, { 132 0x6363c6a5, 0x7c7cf884, 0x7777 134 0x6363c6a5, 0x7c7cf884, 0x7777ee99, 0x7b7bf68d, 133 0xf2f2ff0d, 0x6b6bd6bd, 0x6f6f 135 0xf2f2ff0d, 0x6b6bd6bd, 0x6f6fdeb1, 0xc5c59154, 134 0x30306050, 0x01010203, 0x6767 136 0x30306050, 0x01010203, 0x6767cea9, 0x2b2b567d, 135 0xfefee719, 0xd7d7b562, 0xabab 137 0xfefee719, 0xd7d7b562, 0xabab4de6, 0x7676ec9a, 136 0xcaca8f45, 0x82821f9d, 0xc9c9 138 0xcaca8f45, 0x82821f9d, 0xc9c98940, 0x7d7dfa87, 137 0xfafaef15, 0x5959b2eb, 0x4747 139 0xfafaef15, 0x5959b2eb, 0x47478ec9, 0xf0f0fb0b, 138 0xadad41ec, 0xd4d4b367, 0xa2a2 140 0xadad41ec, 0xd4d4b367, 0xa2a25ffd, 0xafaf45ea, 139 0x9c9c23bf, 0xa4a453f7, 0x7272 141 0x9c9c23bf, 0xa4a453f7, 0x7272e496, 0xc0c09b5b, 140 0xb7b775c2, 0xfdfde11c, 0x9393 142 0xb7b775c2, 0xfdfde11c, 0x93933dae, 0x26264c6a, 141 0x36366c5a, 0x3f3f7e41, 0xf7f7 143 0x36366c5a, 0x3f3f7e41, 0xf7f7f502, 0xcccc834f, 142 0x3434685c, 0xa5a551f4, 0xe5e5 144 0x3434685c, 0xa5a551f4, 0xe5e5d134, 0xf1f1f908, 143 0x7171e293, 0xd8d8ab73, 0x3131 145 0x7171e293, 0xd8d8ab73, 0x31316253, 0x15152a3f, 144 0x0404080c, 0xc7c79552, 0x2323 146 0x0404080c, 0xc7c79552, 0x23234665, 0xc3c39d5e, 145 0x18183028, 0x969637a1, 0x0505 147 0x18183028, 0x969637a1, 0x05050a0f, 0x9a9a2fb5, 146 0x07070e09, 0x12122436, 0x8080 148 0x07070e09, 0x12122436, 0x80801b9b, 0xe2e2df3d, 147 0xebebcd26, 0x27274e69, 0xb2b2 149 0xebebcd26, 0x27274e69, 0xb2b27fcd, 0x7575ea9f, 148 0x0909121b, 0x83831d9e, 0x2c2c 150 0x0909121b, 0x83831d9e, 0x2c2c5874, 0x1a1a342e, 149 0x1b1b362d, 0x6e6edcb2, 0x5a5a 151 0x1b1b362d, 0x6e6edcb2, 0x5a5ab4ee, 0xa0a05bfb, 150 0x5252a4f6, 0x3b3b764d, 0xd6d6 152 0x5252a4f6, 0x3b3b764d, 0xd6d6b761, 0xb3b37dce, 151 0x2929527b, 0xe3e3dd3e, 0x2f2f 153 0x2929527b, 0xe3e3dd3e, 0x2f2f5e71, 0x84841397, 152 0x5353a6f5, 0xd1d1b968, 0x0000 154 0x5353a6f5, 0xd1d1b968, 0x00000000, 0xededc12c, 153 0x20204060, 0xfcfce31f, 0xb1b1 155 0x20204060, 0xfcfce31f, 0xb1b179c8, 0x5b5bb6ed, 154 0x6a6ad4be, 0xcbcb8d46, 0xbebe 156 0x6a6ad4be, 0xcbcb8d46, 0xbebe67d9, 0x3939724b, 155 0x4a4a94de, 0x4c4c98d4, 0x5858 157 0x4a4a94de, 0x4c4c98d4, 0x5858b0e8, 0xcfcf854a, 156 0xd0d0bb6b, 0xefefc52a, 0xaaaa 158 0xd0d0bb6b, 0xefefc52a, 0xaaaa4fe5, 0xfbfbed16, 157 0x434386c5, 0x4d4d9ad7, 0x3333 159 0x434386c5, 0x4d4d9ad7, 0x33336655, 0x85851194, 158 0x45458acf, 0xf9f9e910, 0x0202 160 0x45458acf, 0xf9f9e910, 0x02020406, 0x7f7ffe81, 159 0x5050a0f0, 0x3c3c7844, 0x9f9f 161 0x5050a0f0, 0x3c3c7844, 0x9f9f25ba, 0xa8a84be3, 160 0x5151a2f3, 0xa3a35dfe, 0x4040 162 0x5151a2f3, 0xa3a35dfe, 0x404080c0, 0x8f8f058a, 161 0x92923fad, 0x9d9d21bc, 0x3838 163 0x92923fad, 0x9d9d21bc, 0x38387048, 0xf5f5f104, 162 0xbcbc63df, 0xb6b677c1, 0xdada 164 0xbcbc63df, 0xb6b677c1, 0xdadaaf75, 0x21214263, 163 0x10102030, 0xffffe51a, 0xf3f3 165 0x10102030, 0xffffe51a, 0xf3f3fd0e, 0xd2d2bf6d, 164 0xcdcd814c, 0x0c0c1814, 0x1313 166 0xcdcd814c, 0x0c0c1814, 0x13132635, 0xececc32f, 165 0x5f5fbee1, 0x979735a2, 0x4444 167 0x5f5fbee1, 0x979735a2, 0x444488cc, 0x17172e39, 166 0xc4c49357, 0xa7a755f2, 0x7e7e 168 0xc4c49357, 0xa7a755f2, 0x7e7efc82, 0x3d3d7a47, 167 0x6464c8ac, 0x5d5dbae7, 0x1919 169 0x6464c8ac, 0x5d5dbae7, 0x1919322b, 0x7373e695, 168 0x6060c0a0, 0x81811998, 0x4f4f 170 0x6060c0a0, 0x81811998, 0x4f4f9ed1, 0xdcdca37f, 169 0x22224466, 0x2a2a547e, 0x9090 171 0x22224466, 0x2a2a547e, 0x90903bab, 0x88880b83, 170 0x46468cca, 0xeeeec729, 0xb8b8 172 0x46468cca, 0xeeeec729, 0xb8b86bd3, 0x1414283c, 171 0xdedea779, 0x5e5ebce2, 0x0b0b 173 0xdedea779, 0x5e5ebce2, 0x0b0b161d, 0xdbdbad76, 172 0xe0e0db3b, 0x32326456, 0x3a3a 174 0xe0e0db3b, 0x32326456, 0x3a3a744e, 0x0a0a141e, 173 0x494992db, 0x06060c0a, 0x2424 175 0x494992db, 0x06060c0a, 0x2424486c, 0x5c5cb8e4, 174 0xc2c29f5d, 0xd3d3bd6e, 0xacac 176 0xc2c29f5d, 0xd3d3bd6e, 0xacac43ef, 0x6262c4a6, 175 0x919139a8, 0x959531a4, 0xe4e4 177 0x919139a8, 0x959531a4, 0xe4e4d337, 0x7979f28b, 176 0xe7e7d532, 0xc8c88b43, 0x3737 178 0xe7e7d532, 0xc8c88b43, 0x37376e59, 0x6d6ddab7, 177 0x8d8d018c, 0xd5d5b164, 0x4e4e 179 0x8d8d018c, 0xd5d5b164, 0x4e4e9cd2, 0xa9a949e0, 178 0x6c6cd8b4, 0x5656acfa, 0xf4f4 180 0x6c6cd8b4, 0x5656acfa, 0xf4f4f307, 0xeaeacf25, 179 0x6565caaf, 0x7a7af48e, 0xaeae 181 0x6565caaf, 0x7a7af48e, 0xaeae47e9, 0x08081018, 180 0xbaba6fd5, 0x7878f088, 0x2525 182 0xbaba6fd5, 0x7878f088, 0x25254a6f, 0x2e2e5c72, 181 0x1c1c3824, 0xa6a657f1, 0xb4b4 183 0x1c1c3824, 0xa6a657f1, 0xb4b473c7, 0xc6c69751, 182 0xe8e8cb23, 0xdddda17c, 0x7474 184 0xe8e8cb23, 0xdddda17c, 0x7474e89c, 0x1f1f3e21, 183 0x4b4b96dd, 0xbdbd61dc, 0x8b8b 185 0x4b4b96dd, 0xbdbd61dc, 0x8b8b0d86, 0x8a8a0f85, 184 0x7070e090, 0x3e3e7c42, 0xb5b5 186 0x7070e090, 0x3e3e7c42, 0xb5b571c4, 0x6666ccaa, 185 0x484890d8, 0x03030605, 0xf6f6 187 0x484890d8, 0x03030605, 0xf6f6f701, 0x0e0e1c12, 186 0x6161c2a3, 0x35356a5f, 0x5757 188 0x6161c2a3, 0x35356a5f, 0x5757aef9, 0xb9b969d0, 187 0x86861791, 0xc1c19958, 0x1d1d 189 0x86861791, 0xc1c19958, 0x1d1d3a27, 0x9e9e27b9, 188 0xe1e1d938, 0xf8f8eb13, 0x9898 190 0xe1e1d938, 0xf8f8eb13, 0x98982bb3, 0x11112233, 189 0x6969d2bb, 0xd9d9a970, 0x8e8e 191 0x6969d2bb, 0xd9d9a970, 0x8e8e0789, 0x949433a7, 190 0x9b9b2db6, 0x1e1e3c22, 0x8787 192 0x9b9b2db6, 0x1e1e3c22, 0x87871592, 0xe9e9c920, 191 0xcece8749, 0x5555aaff, 0x2828 193 0xcece8749, 0x5555aaff, 0x28285078, 0xdfdfa57a, 192 0x8c8c038f, 0xa1a159f8, 0x8989 194 0x8c8c038f, 0xa1a159f8, 0x89890980, 0x0d0d1a17, 193 0xbfbf65da, 0xe6e6d731, 0x4242 195 0xbfbf65da, 0xe6e6d731, 0x424284c6, 0x6868d0b8, 194 0x414182c3, 0x999929b0, 0x2d2d 196 0x414182c3, 0x999929b0, 0x2d2d5a77, 0x0f0f1e11, 195 0xb0b07bcb, 0x5454a8fc, 0xbbbb 197 0xb0b07bcb, 0x5454a8fc, 0xbbbb6dd6, 0x16162c3a, 196 }, { 198 }, { 197 0x63c6a563, 0x7cf8847c, 0x77ee 199 0x63c6a563, 0x7cf8847c, 0x77ee9977, 0x7bf68d7b, 198 0xf2ff0df2, 0x6bd6bd6b, 0x6fde 200 0xf2ff0df2, 0x6bd6bd6b, 0x6fdeb16f, 0xc59154c5, 199 0x30605030, 0x01020301, 0x67ce 201 0x30605030, 0x01020301, 0x67cea967, 0x2b567d2b, 200 0xfee719fe, 0xd7b562d7, 0xab4d 202 0xfee719fe, 0xd7b562d7, 0xab4de6ab, 0x76ec9a76, 201 0xca8f45ca, 0x821f9d82, 0xc989 203 0xca8f45ca, 0x821f9d82, 0xc98940c9, 0x7dfa877d, 202 0xfaef15fa, 0x59b2eb59, 0x478e 204 0xfaef15fa, 0x59b2eb59, 0x478ec947, 0xf0fb0bf0, 203 0xad41ecad, 0xd4b367d4, 0xa25f 205 0xad41ecad, 0xd4b367d4, 0xa25ffda2, 0xaf45eaaf, 204 0x9c23bf9c, 0xa453f7a4, 0x72e4 206 0x9c23bf9c, 0xa453f7a4, 0x72e49672, 0xc09b5bc0, 205 0xb775c2b7, 0xfde11cfd, 0x933d 207 0xb775c2b7, 0xfde11cfd, 0x933dae93, 0x264c6a26, 206 0x366c5a36, 0x3f7e413f, 0xf7f5 208 0x366c5a36, 0x3f7e413f, 0xf7f502f7, 0xcc834fcc, 207 0x34685c34, 0xa551f4a5, 0xe5d1 209 0x34685c34, 0xa551f4a5, 0xe5d134e5, 0xf1f908f1, 208 0x71e29371, 0xd8ab73d8, 0x3162 210 0x71e29371, 0xd8ab73d8, 0x31625331, 0x152a3f15, 209 0x04080c04, 0xc79552c7, 0x2346 211 0x04080c04, 0xc79552c7, 0x23466523, 0xc39d5ec3, 210 0x18302818, 0x9637a196, 0x050a 212 0x18302818, 0x9637a196, 0x050a0f05, 0x9a2fb59a, 211 0x070e0907, 0x12243612, 0x801b 213 0x070e0907, 0x12243612, 0x801b9b80, 0xe2df3de2, 212 0xebcd26eb, 0x274e6927, 0xb27f 214 0xebcd26eb, 0x274e6927, 0xb27fcdb2, 0x75ea9f75, 213 0x09121b09, 0x831d9e83, 0x2c58 215 0x09121b09, 0x831d9e83, 0x2c58742c, 0x1a342e1a, 214 0x1b362d1b, 0x6edcb26e, 0x5ab4 216 0x1b362d1b, 0x6edcb26e, 0x5ab4ee5a, 0xa05bfba0, 215 0x52a4f652, 0x3b764d3b, 0xd6b7 217 0x52a4f652, 0x3b764d3b, 0xd6b761d6, 0xb37dceb3, 216 0x29527b29, 0xe3dd3ee3, 0x2f5e 218 0x29527b29, 0xe3dd3ee3, 0x2f5e712f, 0x84139784, 217 0x53a6f553, 0xd1b968d1, 0x0000 219 0x53a6f553, 0xd1b968d1, 0x00000000, 0xedc12ced, 218 0x20406020, 0xfce31ffc, 0xb179 220 0x20406020, 0xfce31ffc, 0xb179c8b1, 0x5bb6ed5b, 219 0x6ad4be6a, 0xcb8d46cb, 0xbe67 221 0x6ad4be6a, 0xcb8d46cb, 0xbe67d9be, 0x39724b39, 220 0x4a94de4a, 0x4c98d44c, 0x58b0 222 0x4a94de4a, 0x4c98d44c, 0x58b0e858, 0xcf854acf, 221 0xd0bb6bd0, 0xefc52aef, 0xaa4f 223 0xd0bb6bd0, 0xefc52aef, 0xaa4fe5aa, 0xfbed16fb, 222 0x4386c543, 0x4d9ad74d, 0x3366 224 0x4386c543, 0x4d9ad74d, 0x33665533, 0x85119485, 223 0x458acf45, 0xf9e910f9, 0x0204 225 0x458acf45, 0xf9e910f9, 0x02040602, 0x7ffe817f, 224 0x50a0f050, 0x3c78443c, 0x9f25 226 0x50a0f050, 0x3c78443c, 0x9f25ba9f, 0xa84be3a8, 225 0x51a2f351, 0xa35dfea3, 0x4080 227 0x51a2f351, 0xa35dfea3, 0x4080c040, 0x8f058a8f, 226 0x923fad92, 0x9d21bc9d, 0x3870 228 0x923fad92, 0x9d21bc9d, 0x38704838, 0xf5f104f5, 227 0xbc63dfbc, 0xb677c1b6, 0xdaaf 229 0xbc63dfbc, 0xb677c1b6, 0xdaaf75da, 0x21426321, 228 0x10203010, 0xffe51aff, 0xf3fd 230 0x10203010, 0xffe51aff, 0xf3fd0ef3, 0xd2bf6dd2, 229 0xcd814ccd, 0x0c18140c, 0x1326 231 0xcd814ccd, 0x0c18140c, 0x13263513, 0xecc32fec, 230 0x5fbee15f, 0x9735a297, 0x4488 232 0x5fbee15f, 0x9735a297, 0x4488cc44, 0x172e3917, 231 0xc49357c4, 0xa755f2a7, 0x7efc 233 0xc49357c4, 0xa755f2a7, 0x7efc827e, 0x3d7a473d, 232 0x64c8ac64, 0x5dbae75d, 0x1932 234 0x64c8ac64, 0x5dbae75d, 0x19322b19, 0x73e69573, 233 0x60c0a060, 0x81199881, 0x4f9e 235 0x60c0a060, 0x81199881, 0x4f9ed14f, 0xdca37fdc, 234 0x22446622, 0x2a547e2a, 0x903b 236 0x22446622, 0x2a547e2a, 0x903bab90, 0x880b8388, 235 0x468cca46, 0xeec729ee, 0xb86b 237 0x468cca46, 0xeec729ee, 0xb86bd3b8, 0x14283c14, 236 0xdea779de, 0x5ebce25e, 0x0b16 238 0xdea779de, 0x5ebce25e, 0x0b161d0b, 0xdbad76db, 237 0xe0db3be0, 0x32645632, 0x3a74 239 0xe0db3be0, 0x32645632, 0x3a744e3a, 0x0a141e0a, 238 0x4992db49, 0x060c0a06, 0x2448 240 0x4992db49, 0x060c0a06, 0x24486c24, 0x5cb8e45c, 239 0xc29f5dc2, 0xd3bd6ed3, 0xac43 241 0xc29f5dc2, 0xd3bd6ed3, 0xac43efac, 0x62c4a662, 240 0x9139a891, 0x9531a495, 0xe4d3 242 0x9139a891, 0x9531a495, 0xe4d337e4, 0x79f28b79, 241 0xe7d532e7, 0xc88b43c8, 0x376e 243 0xe7d532e7, 0xc88b43c8, 0x376e5937, 0x6ddab76d, 242 0x8d018c8d, 0xd5b164d5, 0x4e9c 244 0x8d018c8d, 0xd5b164d5, 0x4e9cd24e, 0xa949e0a9, 243 0x6cd8b46c, 0x56acfa56, 0xf4f3 245 0x6cd8b46c, 0x56acfa56, 0xf4f307f4, 0xeacf25ea, 244 0x65caaf65, 0x7af48e7a, 0xae47 246 0x65caaf65, 0x7af48e7a, 0xae47e9ae, 0x08101808, 245 0xba6fd5ba, 0x78f08878, 0x254a 247 0xba6fd5ba, 0x78f08878, 0x254a6f25, 0x2e5c722e, 246 0x1c38241c, 0xa657f1a6, 0xb473 248 0x1c38241c, 0xa657f1a6, 0xb473c7b4, 0xc69751c6, 247 0xe8cb23e8, 0xdda17cdd, 0x74e8 249 0xe8cb23e8, 0xdda17cdd, 0x74e89c74, 0x1f3e211f, 248 0x4b96dd4b, 0xbd61dcbd, 0x8b0d 250 0x4b96dd4b, 0xbd61dcbd, 0x8b0d868b, 0x8a0f858a, 249 0x70e09070, 0x3e7c423e, 0xb571 251 0x70e09070, 0x3e7c423e, 0xb571c4b5, 0x66ccaa66, 250 0x4890d848, 0x03060503, 0xf6f7 252 0x4890d848, 0x03060503, 0xf6f701f6, 0x0e1c120e, 251 0x61c2a361, 0x356a5f35, 0x57ae 253 0x61c2a361, 0x356a5f35, 0x57aef957, 0xb969d0b9, 252 0x86179186, 0xc19958c1, 0x1d3a 254 0x86179186, 0xc19958c1, 0x1d3a271d, 0x9e27b99e, 253 0xe1d938e1, 0xf8eb13f8, 0x982b 255 0xe1d938e1, 0xf8eb13f8, 0x982bb398, 0x11223311, 254 0x69d2bb69, 0xd9a970d9, 0x8e07 256 0x69d2bb69, 0xd9a970d9, 0x8e07898e, 0x9433a794, 255 0x9b2db69b, 0x1e3c221e, 0x8715 257 0x9b2db69b, 0x1e3c221e, 0x87159287, 0xe9c920e9, 256 0xce8749ce, 0x55aaff55, 0x2850 258 0xce8749ce, 0x55aaff55, 0x28507828, 0xdfa57adf, 257 0x8c038f8c, 0xa159f8a1, 0x8909 259 0x8c038f8c, 0xa159f8a1, 0x89098089, 0x0d1a170d, 258 0xbf65dabf, 0xe6d731e6, 0x4284 260 0xbf65dabf, 0xe6d731e6, 0x4284c642, 0x68d0b868, 259 0x4182c341, 0x9929b099, 0x2d5a 261 0x4182c341, 0x9929b099, 0x2d5a772d, 0x0f1e110f, 260 0xb07bcbb0, 0x54a8fc54, 0xbb6d 262 0xb07bcbb0, 0x54a8fc54, 0xbb6dd6bb, 0x162c3a16, 261 }, { 263 }, { 262 0xc6a56363, 0xf8847c7c, 0xee99 264 0xc6a56363, 0xf8847c7c, 0xee997777, 0xf68d7b7b, 263 0xff0df2f2, 0xd6bd6b6b, 0xdeb1 265 0xff0df2f2, 0xd6bd6b6b, 0xdeb16f6f, 0x9154c5c5, 264 0x60503030, 0x02030101, 0xcea9 266 0x60503030, 0x02030101, 0xcea96767, 0x567d2b2b, 265 0xe719fefe, 0xb562d7d7, 0x4de6 267 0xe719fefe, 0xb562d7d7, 0x4de6abab, 0xec9a7676, 266 0x8f45caca, 0x1f9d8282, 0x8940 268 0x8f45caca, 0x1f9d8282, 0x8940c9c9, 0xfa877d7d, 267 0xef15fafa, 0xb2eb5959, 0x8ec9 269 0xef15fafa, 0xb2eb5959, 0x8ec94747, 0xfb0bf0f0, 268 0x41ecadad, 0xb367d4d4, 0x5ffd 270 0x41ecadad, 0xb367d4d4, 0x5ffda2a2, 0x45eaafaf, 269 0x23bf9c9c, 0x53f7a4a4, 0xe496 271 0x23bf9c9c, 0x53f7a4a4, 0xe4967272, 0x9b5bc0c0, 270 0x75c2b7b7, 0xe11cfdfd, 0x3dae 272 0x75c2b7b7, 0xe11cfdfd, 0x3dae9393, 0x4c6a2626, 271 0x6c5a3636, 0x7e413f3f, 0xf502 273 0x6c5a3636, 0x7e413f3f, 0xf502f7f7, 0x834fcccc, 272 0x685c3434, 0x51f4a5a5, 0xd134 274 0x685c3434, 0x51f4a5a5, 0xd134e5e5, 0xf908f1f1, 273 0xe2937171, 0xab73d8d8, 0x6253 275 0xe2937171, 0xab73d8d8, 0x62533131, 0x2a3f1515, 274 0x080c0404, 0x9552c7c7, 0x4665 276 0x080c0404, 0x9552c7c7, 0x46652323, 0x9d5ec3c3, 275 0x30281818, 0x37a19696, 0x0a0f 277 0x30281818, 0x37a19696, 0x0a0f0505, 0x2fb59a9a, 276 0x0e090707, 0x24361212, 0x1b9b 278 0x0e090707, 0x24361212, 0x1b9b8080, 0xdf3de2e2, 277 0xcd26ebeb, 0x4e692727, 0x7fcd 279 0xcd26ebeb, 0x4e692727, 0x7fcdb2b2, 0xea9f7575, 278 0x121b0909, 0x1d9e8383, 0x5874 280 0x121b0909, 0x1d9e8383, 0x58742c2c, 0x342e1a1a, 279 0x362d1b1b, 0xdcb26e6e, 0xb4ee 281 0x362d1b1b, 0xdcb26e6e, 0xb4ee5a5a, 0x5bfba0a0, 280 0xa4f65252, 0x764d3b3b, 0xb761 282 0xa4f65252, 0x764d3b3b, 0xb761d6d6, 0x7dceb3b3, 281 0x527b2929, 0xdd3ee3e3, 0x5e71 283 0x527b2929, 0xdd3ee3e3, 0x5e712f2f, 0x13978484, 282 0xa6f55353, 0xb968d1d1, 0x0000 284 0xa6f55353, 0xb968d1d1, 0x00000000, 0xc12ceded, 283 0x40602020, 0xe31ffcfc, 0x79c8 285 0x40602020, 0xe31ffcfc, 0x79c8b1b1, 0xb6ed5b5b, 284 0xd4be6a6a, 0x8d46cbcb, 0x67d9 286 0xd4be6a6a, 0x8d46cbcb, 0x67d9bebe, 0x724b3939, 285 0x94de4a4a, 0x98d44c4c, 0xb0e8 287 0x94de4a4a, 0x98d44c4c, 0xb0e85858, 0x854acfcf, 286 0xbb6bd0d0, 0xc52aefef, 0x4fe5 288 0xbb6bd0d0, 0xc52aefef, 0x4fe5aaaa, 0xed16fbfb, 287 0x86c54343, 0x9ad74d4d, 0x6655 289 0x86c54343, 0x9ad74d4d, 0x66553333, 0x11948585, 288 0x8acf4545, 0xe910f9f9, 0x0406 290 0x8acf4545, 0xe910f9f9, 0x04060202, 0xfe817f7f, 289 0xa0f05050, 0x78443c3c, 0x25ba 291 0xa0f05050, 0x78443c3c, 0x25ba9f9f, 0x4be3a8a8, 290 0xa2f35151, 0x5dfea3a3, 0x80c0 292 0xa2f35151, 0x5dfea3a3, 0x80c04040, 0x058a8f8f, 291 0x3fad9292, 0x21bc9d9d, 0x7048 293 0x3fad9292, 0x21bc9d9d, 0x70483838, 0xf104f5f5, 292 0x63dfbcbc, 0x77c1b6b6, 0xaf75 294 0x63dfbcbc, 0x77c1b6b6, 0xaf75dada, 0x42632121, 293 0x20301010, 0xe51affff, 0xfd0e 295 0x20301010, 0xe51affff, 0xfd0ef3f3, 0xbf6dd2d2, 294 0x814ccdcd, 0x18140c0c, 0x2635 296 0x814ccdcd, 0x18140c0c, 0x26351313, 0xc32fecec, 295 0xbee15f5f, 0x35a29797, 0x88cc 297 0xbee15f5f, 0x35a29797, 0x88cc4444, 0x2e391717, 296 0x9357c4c4, 0x55f2a7a7, 0xfc82 298 0x9357c4c4, 0x55f2a7a7, 0xfc827e7e, 0x7a473d3d, 297 0xc8ac6464, 0xbae75d5d, 0x322b 299 0xc8ac6464, 0xbae75d5d, 0x322b1919, 0xe6957373, 298 0xc0a06060, 0x19988181, 0x9ed1 300 0xc0a06060, 0x19988181, 0x9ed14f4f, 0xa37fdcdc, 299 0x44662222, 0x547e2a2a, 0x3bab 301 0x44662222, 0x547e2a2a, 0x3bab9090, 0x0b838888, 300 0x8cca4646, 0xc729eeee, 0x6bd3 302 0x8cca4646, 0xc729eeee, 0x6bd3b8b8, 0x283c1414, 301 0xa779dede, 0xbce25e5e, 0x161d 303 0xa779dede, 0xbce25e5e, 0x161d0b0b, 0xad76dbdb, 302 0xdb3be0e0, 0x64563232, 0x744e 304 0xdb3be0e0, 0x64563232, 0x744e3a3a, 0x141e0a0a, 303 0x92db4949, 0x0c0a0606, 0x486c 305 0x92db4949, 0x0c0a0606, 0x486c2424, 0xb8e45c5c, 304 0x9f5dc2c2, 0xbd6ed3d3, 0x43ef 306 0x9f5dc2c2, 0xbd6ed3d3, 0x43efacac, 0xc4a66262, 305 0x39a89191, 0x31a49595, 0xd337 307 0x39a89191, 0x31a49595, 0xd337e4e4, 0xf28b7979, 306 0xd532e7e7, 0x8b43c8c8, 0x6e59 308 0xd532e7e7, 0x8b43c8c8, 0x6e593737, 0xdab76d6d, 307 0x018c8d8d, 0xb164d5d5, 0x9cd2 309 0x018c8d8d, 0xb164d5d5, 0x9cd24e4e, 0x49e0a9a9, 308 0xd8b46c6c, 0xacfa5656, 0xf307 310 0xd8b46c6c, 0xacfa5656, 0xf307f4f4, 0xcf25eaea, 309 0xcaaf6565, 0xf48e7a7a, 0x47e9 311 0xcaaf6565, 0xf48e7a7a, 0x47e9aeae, 0x10180808, 310 0x6fd5baba, 0xf0887878, 0x4a6f 312 0x6fd5baba, 0xf0887878, 0x4a6f2525, 0x5c722e2e, 311 0x38241c1c, 0x57f1a6a6, 0x73c7 313 0x38241c1c, 0x57f1a6a6, 0x73c7b4b4, 0x9751c6c6, 312 0xcb23e8e8, 0xa17cdddd, 0xe89c 314 0xcb23e8e8, 0xa17cdddd, 0xe89c7474, 0x3e211f1f, 313 0x96dd4b4b, 0x61dcbdbd, 0x0d86 315 0x96dd4b4b, 0x61dcbdbd, 0x0d868b8b, 0x0f858a8a, 314 0xe0907070, 0x7c423e3e, 0x71c4 316 0xe0907070, 0x7c423e3e, 0x71c4b5b5, 0xccaa6666, 315 0x90d84848, 0x06050303, 0xf701 317 0x90d84848, 0x06050303, 0xf701f6f6, 0x1c120e0e, 316 0xc2a36161, 0x6a5f3535, 0xaef9 318 0xc2a36161, 0x6a5f3535, 0xaef95757, 0x69d0b9b9, 317 0x17918686, 0x9958c1c1, 0x3a27 319 0x17918686, 0x9958c1c1, 0x3a271d1d, 0x27b99e9e, 318 0xd938e1e1, 0xeb13f8f8, 0x2bb3 320 0xd938e1e1, 0xeb13f8f8, 0x2bb39898, 0x22331111, 319 0xd2bb6969, 0xa970d9d9, 0x0789 321 0xd2bb6969, 0xa970d9d9, 0x07898e8e, 0x33a79494, 320 0x2db69b9b, 0x3c221e1e, 0x1592 322 0x2db69b9b, 0x3c221e1e, 0x15928787, 0xc920e9e9, 321 0x8749cece, 0xaaff5555, 0x5078 323 0x8749cece, 0xaaff5555, 0x50782828, 0xa57adfdf, 322 0x038f8c8c, 0x59f8a1a1, 0x0980 324 0x038f8c8c, 0x59f8a1a1, 0x09808989, 0x1a170d0d, 323 0x65dabfbf, 0xd731e6e6, 0x84c6 325 0x65dabfbf, 0xd731e6e6, 0x84c64242, 0xd0b86868, 324 0x82c34141, 0x29b09999, 0x5a77 326 0x82c34141, 0x29b09999, 0x5a772d2d, 0x1e110f0f, 325 0x7bcbb0b0, 0xa8fc5454, 0x6dd6 327 0x7bcbb0b0, 0xa8fc5454, 0x6dd6bbbb, 0x2c3a1616, 326 } 328 } 327 }; 329 }; 328 330 329 static const u32 crypto_fl_tab[4][256] ____cac !! 331 __visible const u32 crypto_fl_tab[4][256] __cacheline_aligned = { 330 { 332 { 331 0x00000063, 0x0000007c, 0x0000 333 0x00000063, 0x0000007c, 0x00000077, 0x0000007b, 332 0x000000f2, 0x0000006b, 0x0000 334 0x000000f2, 0x0000006b, 0x0000006f, 0x000000c5, 333 0x00000030, 0x00000001, 0x0000 335 0x00000030, 0x00000001, 0x00000067, 0x0000002b, 334 0x000000fe, 0x000000d7, 0x0000 336 0x000000fe, 0x000000d7, 0x000000ab, 0x00000076, 335 0x000000ca, 0x00000082, 0x0000 337 0x000000ca, 0x00000082, 0x000000c9, 0x0000007d, 336 0x000000fa, 0x00000059, 0x0000 338 0x000000fa, 0x00000059, 0x00000047, 0x000000f0, 337 0x000000ad, 0x000000d4, 0x0000 339 0x000000ad, 0x000000d4, 0x000000a2, 0x000000af, 338 0x0000009c, 0x000000a4, 0x0000 340 0x0000009c, 0x000000a4, 0x00000072, 0x000000c0, 339 0x000000b7, 0x000000fd, 0x0000 341 0x000000b7, 0x000000fd, 0x00000093, 0x00000026, 340 0x00000036, 0x0000003f, 0x0000 342 0x00000036, 0x0000003f, 0x000000f7, 0x000000cc, 341 0x00000034, 0x000000a5, 0x0000 343 0x00000034, 0x000000a5, 0x000000e5, 0x000000f1, 342 0x00000071, 0x000000d8, 0x0000 344 0x00000071, 0x000000d8, 0x00000031, 0x00000015, 343 0x00000004, 0x000000c7, 0x0000 345 0x00000004, 0x000000c7, 0x00000023, 0x000000c3, 344 0x00000018, 0x00000096, 0x0000 346 0x00000018, 0x00000096, 0x00000005, 0x0000009a, 345 0x00000007, 0x00000012, 0x0000 347 0x00000007, 0x00000012, 0x00000080, 0x000000e2, 346 0x000000eb, 0x00000027, 0x0000 348 0x000000eb, 0x00000027, 0x000000b2, 0x00000075, 347 0x00000009, 0x00000083, 0x0000 349 0x00000009, 0x00000083, 0x0000002c, 0x0000001a, 348 0x0000001b, 0x0000006e, 0x0000 350 0x0000001b, 0x0000006e, 0x0000005a, 0x000000a0, 349 0x00000052, 0x0000003b, 0x0000 351 0x00000052, 0x0000003b, 0x000000d6, 0x000000b3, 350 0x00000029, 0x000000e3, 0x0000 352 0x00000029, 0x000000e3, 0x0000002f, 0x00000084, 351 0x00000053, 0x000000d1, 0x0000 353 0x00000053, 0x000000d1, 0x00000000, 0x000000ed, 352 0x00000020, 0x000000fc, 0x0000 354 0x00000020, 0x000000fc, 0x000000b1, 0x0000005b, 353 0x0000006a, 0x000000cb, 0x0000 355 0x0000006a, 0x000000cb, 0x000000be, 0x00000039, 354 0x0000004a, 0x0000004c, 0x0000 356 0x0000004a, 0x0000004c, 0x00000058, 0x000000cf, 355 0x000000d0, 0x000000ef, 0x0000 357 0x000000d0, 0x000000ef, 0x000000aa, 0x000000fb, 356 0x00000043, 0x0000004d, 0x0000 358 0x00000043, 0x0000004d, 0x00000033, 0x00000085, 357 0x00000045, 0x000000f9, 0x0000 359 0x00000045, 0x000000f9, 0x00000002, 0x0000007f, 358 0x00000050, 0x0000003c, 0x0000 360 0x00000050, 0x0000003c, 0x0000009f, 0x000000a8, 359 0x00000051, 0x000000a3, 0x0000 361 0x00000051, 0x000000a3, 0x00000040, 0x0000008f, 360 0x00000092, 0x0000009d, 0x0000 362 0x00000092, 0x0000009d, 0x00000038, 0x000000f5, 361 0x000000bc, 0x000000b6, 0x0000 363 0x000000bc, 0x000000b6, 0x000000da, 0x00000021, 362 0x00000010, 0x000000ff, 0x0000 364 0x00000010, 0x000000ff, 0x000000f3, 0x000000d2, 363 0x000000cd, 0x0000000c, 0x0000 365 0x000000cd, 0x0000000c, 0x00000013, 0x000000ec, 364 0x0000005f, 0x00000097, 0x0000 366 0x0000005f, 0x00000097, 0x00000044, 0x00000017, 365 0x000000c4, 0x000000a7, 0x0000 367 0x000000c4, 0x000000a7, 0x0000007e, 0x0000003d, 366 0x00000064, 0x0000005d, 0x0000 368 0x00000064, 0x0000005d, 0x00000019, 0x00000073, 367 0x00000060, 0x00000081, 0x0000 369 0x00000060, 0x00000081, 0x0000004f, 0x000000dc, 368 0x00000022, 0x0000002a, 0x0000 370 0x00000022, 0x0000002a, 0x00000090, 0x00000088, 369 0x00000046, 0x000000ee, 0x0000 371 0x00000046, 0x000000ee, 0x000000b8, 0x00000014, 370 0x000000de, 0x0000005e, 0x0000 372 0x000000de, 0x0000005e, 0x0000000b, 0x000000db, 371 0x000000e0, 0x00000032, 0x0000 373 0x000000e0, 0x00000032, 0x0000003a, 0x0000000a, 372 0x00000049, 0x00000006, 0x0000 374 0x00000049, 0x00000006, 0x00000024, 0x0000005c, 373 0x000000c2, 0x000000d3, 0x0000 375 0x000000c2, 0x000000d3, 0x000000ac, 0x00000062, 374 0x00000091, 0x00000095, 0x0000 376 0x00000091, 0x00000095, 0x000000e4, 0x00000079, 375 0x000000e7, 0x000000c8, 0x0000 377 0x000000e7, 0x000000c8, 0x00000037, 0x0000006d, 376 0x0000008d, 0x000000d5, 0x0000 378 0x0000008d, 0x000000d5, 0x0000004e, 0x000000a9, 377 0x0000006c, 0x00000056, 0x0000 379 0x0000006c, 0x00000056, 0x000000f4, 0x000000ea, 378 0x00000065, 0x0000007a, 0x0000 380 0x00000065, 0x0000007a, 0x000000ae, 0x00000008, 379 0x000000ba, 0x00000078, 0x0000 381 0x000000ba, 0x00000078, 0x00000025, 0x0000002e, 380 0x0000001c, 0x000000a6, 0x0000 382 0x0000001c, 0x000000a6, 0x000000b4, 0x000000c6, 381 0x000000e8, 0x000000dd, 0x0000 383 0x000000e8, 0x000000dd, 0x00000074, 0x0000001f, 382 0x0000004b, 0x000000bd, 0x0000 384 0x0000004b, 0x000000bd, 0x0000008b, 0x0000008a, 383 0x00000070, 0x0000003e, 0x0000 385 0x00000070, 0x0000003e, 0x000000b5, 0x00000066, 384 0x00000048, 0x00000003, 0x0000 386 0x00000048, 0x00000003, 0x000000f6, 0x0000000e, 385 0x00000061, 0x00000035, 0x0000 387 0x00000061, 0x00000035, 0x00000057, 0x000000b9, 386 0x00000086, 0x000000c1, 0x0000 388 0x00000086, 0x000000c1, 0x0000001d, 0x0000009e, 387 0x000000e1, 0x000000f8, 0x0000 389 0x000000e1, 0x000000f8, 0x00000098, 0x00000011, 388 0x00000069, 0x000000d9, 0x0000 390 0x00000069, 0x000000d9, 0x0000008e, 0x00000094, 389 0x0000009b, 0x0000001e, 0x0000 391 0x0000009b, 0x0000001e, 0x00000087, 0x000000e9, 390 0x000000ce, 0x00000055, 0x0000 392 0x000000ce, 0x00000055, 0x00000028, 0x000000df, 391 0x0000008c, 0x000000a1, 0x0000 393 0x0000008c, 0x000000a1, 0x00000089, 0x0000000d, 392 0x000000bf, 0x000000e6, 0x0000 394 0x000000bf, 0x000000e6, 0x00000042, 0x00000068, 393 0x00000041, 0x00000099, 0x0000 395 0x00000041, 0x00000099, 0x0000002d, 0x0000000f, 394 0x000000b0, 0x00000054, 0x0000 396 0x000000b0, 0x00000054, 0x000000bb, 0x00000016, 395 }, { 397 }, { 396 0x00006300, 0x00007c00, 0x0000 398 0x00006300, 0x00007c00, 0x00007700, 0x00007b00, 397 0x0000f200, 0x00006b00, 0x0000 399 0x0000f200, 0x00006b00, 0x00006f00, 0x0000c500, 398 0x00003000, 0x00000100, 0x0000 400 0x00003000, 0x00000100, 0x00006700, 0x00002b00, 399 0x0000fe00, 0x0000d700, 0x0000 401 0x0000fe00, 0x0000d700, 0x0000ab00, 0x00007600, 400 0x0000ca00, 0x00008200, 0x0000 402 0x0000ca00, 0x00008200, 0x0000c900, 0x00007d00, 401 0x0000fa00, 0x00005900, 0x0000 403 0x0000fa00, 0x00005900, 0x00004700, 0x0000f000, 402 0x0000ad00, 0x0000d400, 0x0000 404 0x0000ad00, 0x0000d400, 0x0000a200, 0x0000af00, 403 0x00009c00, 0x0000a400, 0x0000 405 0x00009c00, 0x0000a400, 0x00007200, 0x0000c000, 404 0x0000b700, 0x0000fd00, 0x0000 406 0x0000b700, 0x0000fd00, 0x00009300, 0x00002600, 405 0x00003600, 0x00003f00, 0x0000 407 0x00003600, 0x00003f00, 0x0000f700, 0x0000cc00, 406 0x00003400, 0x0000a500, 0x0000 408 0x00003400, 0x0000a500, 0x0000e500, 0x0000f100, 407 0x00007100, 0x0000d800, 0x0000 409 0x00007100, 0x0000d800, 0x00003100, 0x00001500, 408 0x00000400, 0x0000c700, 0x0000 410 0x00000400, 0x0000c700, 0x00002300, 0x0000c300, 409 0x00001800, 0x00009600, 0x0000 411 0x00001800, 0x00009600, 0x00000500, 0x00009a00, 410 0x00000700, 0x00001200, 0x0000 412 0x00000700, 0x00001200, 0x00008000, 0x0000e200, 411 0x0000eb00, 0x00002700, 0x0000 413 0x0000eb00, 0x00002700, 0x0000b200, 0x00007500, 412 0x00000900, 0x00008300, 0x0000 414 0x00000900, 0x00008300, 0x00002c00, 0x00001a00, 413 0x00001b00, 0x00006e00, 0x0000 415 0x00001b00, 0x00006e00, 0x00005a00, 0x0000a000, 414 0x00005200, 0x00003b00, 0x0000 416 0x00005200, 0x00003b00, 0x0000d600, 0x0000b300, 415 0x00002900, 0x0000e300, 0x0000 417 0x00002900, 0x0000e300, 0x00002f00, 0x00008400, 416 0x00005300, 0x0000d100, 0x0000 418 0x00005300, 0x0000d100, 0x00000000, 0x0000ed00, 417 0x00002000, 0x0000fc00, 0x0000 419 0x00002000, 0x0000fc00, 0x0000b100, 0x00005b00, 418 0x00006a00, 0x0000cb00, 0x0000 420 0x00006a00, 0x0000cb00, 0x0000be00, 0x00003900, 419 0x00004a00, 0x00004c00, 0x0000 421 0x00004a00, 0x00004c00, 0x00005800, 0x0000cf00, 420 0x0000d000, 0x0000ef00, 0x0000 422 0x0000d000, 0x0000ef00, 0x0000aa00, 0x0000fb00, 421 0x00004300, 0x00004d00, 0x0000 423 0x00004300, 0x00004d00, 0x00003300, 0x00008500, 422 0x00004500, 0x0000f900, 0x0000 424 0x00004500, 0x0000f900, 0x00000200, 0x00007f00, 423 0x00005000, 0x00003c00, 0x0000 425 0x00005000, 0x00003c00, 0x00009f00, 0x0000a800, 424 0x00005100, 0x0000a300, 0x0000 426 0x00005100, 0x0000a300, 0x00004000, 0x00008f00, 425 0x00009200, 0x00009d00, 0x0000 427 0x00009200, 0x00009d00, 0x00003800, 0x0000f500, 426 0x0000bc00, 0x0000b600, 0x0000 428 0x0000bc00, 0x0000b600, 0x0000da00, 0x00002100, 427 0x00001000, 0x0000ff00, 0x0000 429 0x00001000, 0x0000ff00, 0x0000f300, 0x0000d200, 428 0x0000cd00, 0x00000c00, 0x0000 430 0x0000cd00, 0x00000c00, 0x00001300, 0x0000ec00, 429 0x00005f00, 0x00009700, 0x0000 431 0x00005f00, 0x00009700, 0x00004400, 0x00001700, 430 0x0000c400, 0x0000a700, 0x0000 432 0x0000c400, 0x0000a700, 0x00007e00, 0x00003d00, 431 0x00006400, 0x00005d00, 0x0000 433 0x00006400, 0x00005d00, 0x00001900, 0x00007300, 432 0x00006000, 0x00008100, 0x0000 434 0x00006000, 0x00008100, 0x00004f00, 0x0000dc00, 433 0x00002200, 0x00002a00, 0x0000 435 0x00002200, 0x00002a00, 0x00009000, 0x00008800, 434 0x00004600, 0x0000ee00, 0x0000 436 0x00004600, 0x0000ee00, 0x0000b800, 0x00001400, 435 0x0000de00, 0x00005e00, 0x0000 437 0x0000de00, 0x00005e00, 0x00000b00, 0x0000db00, 436 0x0000e000, 0x00003200, 0x0000 438 0x0000e000, 0x00003200, 0x00003a00, 0x00000a00, 437 0x00004900, 0x00000600, 0x0000 439 0x00004900, 0x00000600, 0x00002400, 0x00005c00, 438 0x0000c200, 0x0000d300, 0x0000 440 0x0000c200, 0x0000d300, 0x0000ac00, 0x00006200, 439 0x00009100, 0x00009500, 0x0000 441 0x00009100, 0x00009500, 0x0000e400, 0x00007900, 440 0x0000e700, 0x0000c800, 0x0000 442 0x0000e700, 0x0000c800, 0x00003700, 0x00006d00, 441 0x00008d00, 0x0000d500, 0x0000 443 0x00008d00, 0x0000d500, 0x00004e00, 0x0000a900, 442 0x00006c00, 0x00005600, 0x0000 444 0x00006c00, 0x00005600, 0x0000f400, 0x0000ea00, 443 0x00006500, 0x00007a00, 0x0000 445 0x00006500, 0x00007a00, 0x0000ae00, 0x00000800, 444 0x0000ba00, 0x00007800, 0x0000 446 0x0000ba00, 0x00007800, 0x00002500, 0x00002e00, 445 0x00001c00, 0x0000a600, 0x0000 447 0x00001c00, 0x0000a600, 0x0000b400, 0x0000c600, 446 0x0000e800, 0x0000dd00, 0x0000 448 0x0000e800, 0x0000dd00, 0x00007400, 0x00001f00, 447 0x00004b00, 0x0000bd00, 0x0000 449 0x00004b00, 0x0000bd00, 0x00008b00, 0x00008a00, 448 0x00007000, 0x00003e00, 0x0000 450 0x00007000, 0x00003e00, 0x0000b500, 0x00006600, 449 0x00004800, 0x00000300, 0x0000 451 0x00004800, 0x00000300, 0x0000f600, 0x00000e00, 450 0x00006100, 0x00003500, 0x0000 452 0x00006100, 0x00003500, 0x00005700, 0x0000b900, 451 0x00008600, 0x0000c100, 0x0000 453 0x00008600, 0x0000c100, 0x00001d00, 0x00009e00, 452 0x0000e100, 0x0000f800, 0x0000 454 0x0000e100, 0x0000f800, 0x00009800, 0x00001100, 453 0x00006900, 0x0000d900, 0x0000 455 0x00006900, 0x0000d900, 0x00008e00, 0x00009400, 454 0x00009b00, 0x00001e00, 0x0000 456 0x00009b00, 0x00001e00, 0x00008700, 0x0000e900, 455 0x0000ce00, 0x00005500, 0x0000 457 0x0000ce00, 0x00005500, 0x00002800, 0x0000df00, 456 0x00008c00, 0x0000a100, 0x0000 458 0x00008c00, 0x0000a100, 0x00008900, 0x00000d00, 457 0x0000bf00, 0x0000e600, 0x0000 459 0x0000bf00, 0x0000e600, 0x00004200, 0x00006800, 458 0x00004100, 0x00009900, 0x0000 460 0x00004100, 0x00009900, 0x00002d00, 0x00000f00, 459 0x0000b000, 0x00005400, 0x0000 461 0x0000b000, 0x00005400, 0x0000bb00, 0x00001600, 460 }, { 462 }, { 461 0x00630000, 0x007c0000, 0x0077 463 0x00630000, 0x007c0000, 0x00770000, 0x007b0000, 462 0x00f20000, 0x006b0000, 0x006f 464 0x00f20000, 0x006b0000, 0x006f0000, 0x00c50000, 463 0x00300000, 0x00010000, 0x0067 465 0x00300000, 0x00010000, 0x00670000, 0x002b0000, 464 0x00fe0000, 0x00d70000, 0x00ab 466 0x00fe0000, 0x00d70000, 0x00ab0000, 0x00760000, 465 0x00ca0000, 0x00820000, 0x00c9 467 0x00ca0000, 0x00820000, 0x00c90000, 0x007d0000, 466 0x00fa0000, 0x00590000, 0x0047 468 0x00fa0000, 0x00590000, 0x00470000, 0x00f00000, 467 0x00ad0000, 0x00d40000, 0x00a2 469 0x00ad0000, 0x00d40000, 0x00a20000, 0x00af0000, 468 0x009c0000, 0x00a40000, 0x0072 470 0x009c0000, 0x00a40000, 0x00720000, 0x00c00000, 469 0x00b70000, 0x00fd0000, 0x0093 471 0x00b70000, 0x00fd0000, 0x00930000, 0x00260000, 470 0x00360000, 0x003f0000, 0x00f7 472 0x00360000, 0x003f0000, 0x00f70000, 0x00cc0000, 471 0x00340000, 0x00a50000, 0x00e5 473 0x00340000, 0x00a50000, 0x00e50000, 0x00f10000, 472 0x00710000, 0x00d80000, 0x0031 474 0x00710000, 0x00d80000, 0x00310000, 0x00150000, 473 0x00040000, 0x00c70000, 0x0023 475 0x00040000, 0x00c70000, 0x00230000, 0x00c30000, 474 0x00180000, 0x00960000, 0x0005 476 0x00180000, 0x00960000, 0x00050000, 0x009a0000, 475 0x00070000, 0x00120000, 0x0080 477 0x00070000, 0x00120000, 0x00800000, 0x00e20000, 476 0x00eb0000, 0x00270000, 0x00b2 478 0x00eb0000, 0x00270000, 0x00b20000, 0x00750000, 477 0x00090000, 0x00830000, 0x002c 479 0x00090000, 0x00830000, 0x002c0000, 0x001a0000, 478 0x001b0000, 0x006e0000, 0x005a 480 0x001b0000, 0x006e0000, 0x005a0000, 0x00a00000, 479 0x00520000, 0x003b0000, 0x00d6 481 0x00520000, 0x003b0000, 0x00d60000, 0x00b30000, 480 0x00290000, 0x00e30000, 0x002f 482 0x00290000, 0x00e30000, 0x002f0000, 0x00840000, 481 0x00530000, 0x00d10000, 0x0000 483 0x00530000, 0x00d10000, 0x00000000, 0x00ed0000, 482 0x00200000, 0x00fc0000, 0x00b1 484 0x00200000, 0x00fc0000, 0x00b10000, 0x005b0000, 483 0x006a0000, 0x00cb0000, 0x00be 485 0x006a0000, 0x00cb0000, 0x00be0000, 0x00390000, 484 0x004a0000, 0x004c0000, 0x0058 486 0x004a0000, 0x004c0000, 0x00580000, 0x00cf0000, 485 0x00d00000, 0x00ef0000, 0x00aa 487 0x00d00000, 0x00ef0000, 0x00aa0000, 0x00fb0000, 486 0x00430000, 0x004d0000, 0x0033 488 0x00430000, 0x004d0000, 0x00330000, 0x00850000, 487 0x00450000, 0x00f90000, 0x0002 489 0x00450000, 0x00f90000, 0x00020000, 0x007f0000, 488 0x00500000, 0x003c0000, 0x009f 490 0x00500000, 0x003c0000, 0x009f0000, 0x00a80000, 489 0x00510000, 0x00a30000, 0x0040 491 0x00510000, 0x00a30000, 0x00400000, 0x008f0000, 490 0x00920000, 0x009d0000, 0x0038 492 0x00920000, 0x009d0000, 0x00380000, 0x00f50000, 491 0x00bc0000, 0x00b60000, 0x00da 493 0x00bc0000, 0x00b60000, 0x00da0000, 0x00210000, 492 0x00100000, 0x00ff0000, 0x00f3 494 0x00100000, 0x00ff0000, 0x00f30000, 0x00d20000, 493 0x00cd0000, 0x000c0000, 0x0013 495 0x00cd0000, 0x000c0000, 0x00130000, 0x00ec0000, 494 0x005f0000, 0x00970000, 0x0044 496 0x005f0000, 0x00970000, 0x00440000, 0x00170000, 495 0x00c40000, 0x00a70000, 0x007e 497 0x00c40000, 0x00a70000, 0x007e0000, 0x003d0000, 496 0x00640000, 0x005d0000, 0x0019 498 0x00640000, 0x005d0000, 0x00190000, 0x00730000, 497 0x00600000, 0x00810000, 0x004f 499 0x00600000, 0x00810000, 0x004f0000, 0x00dc0000, 498 0x00220000, 0x002a0000, 0x0090 500 0x00220000, 0x002a0000, 0x00900000, 0x00880000, 499 0x00460000, 0x00ee0000, 0x00b8 501 0x00460000, 0x00ee0000, 0x00b80000, 0x00140000, 500 0x00de0000, 0x005e0000, 0x000b 502 0x00de0000, 0x005e0000, 0x000b0000, 0x00db0000, 501 0x00e00000, 0x00320000, 0x003a 503 0x00e00000, 0x00320000, 0x003a0000, 0x000a0000, 502 0x00490000, 0x00060000, 0x0024 504 0x00490000, 0x00060000, 0x00240000, 0x005c0000, 503 0x00c20000, 0x00d30000, 0x00ac 505 0x00c20000, 0x00d30000, 0x00ac0000, 0x00620000, 504 0x00910000, 0x00950000, 0x00e4 506 0x00910000, 0x00950000, 0x00e40000, 0x00790000, 505 0x00e70000, 0x00c80000, 0x0037 507 0x00e70000, 0x00c80000, 0x00370000, 0x006d0000, 506 0x008d0000, 0x00d50000, 0x004e 508 0x008d0000, 0x00d50000, 0x004e0000, 0x00a90000, 507 0x006c0000, 0x00560000, 0x00f4 509 0x006c0000, 0x00560000, 0x00f40000, 0x00ea0000, 508 0x00650000, 0x007a0000, 0x00ae 510 0x00650000, 0x007a0000, 0x00ae0000, 0x00080000, 509 0x00ba0000, 0x00780000, 0x0025 511 0x00ba0000, 0x00780000, 0x00250000, 0x002e0000, 510 0x001c0000, 0x00a60000, 0x00b4 512 0x001c0000, 0x00a60000, 0x00b40000, 0x00c60000, 511 0x00e80000, 0x00dd0000, 0x0074 513 0x00e80000, 0x00dd0000, 0x00740000, 0x001f0000, 512 0x004b0000, 0x00bd0000, 0x008b 514 0x004b0000, 0x00bd0000, 0x008b0000, 0x008a0000, 513 0x00700000, 0x003e0000, 0x00b5 515 0x00700000, 0x003e0000, 0x00b50000, 0x00660000, 514 0x00480000, 0x00030000, 0x00f6 516 0x00480000, 0x00030000, 0x00f60000, 0x000e0000, 515 0x00610000, 0x00350000, 0x0057 517 0x00610000, 0x00350000, 0x00570000, 0x00b90000, 516 0x00860000, 0x00c10000, 0x001d 518 0x00860000, 0x00c10000, 0x001d0000, 0x009e0000, 517 0x00e10000, 0x00f80000, 0x0098 519 0x00e10000, 0x00f80000, 0x00980000, 0x00110000, 518 0x00690000, 0x00d90000, 0x008e 520 0x00690000, 0x00d90000, 0x008e0000, 0x00940000, 519 0x009b0000, 0x001e0000, 0x0087 521 0x009b0000, 0x001e0000, 0x00870000, 0x00e90000, 520 0x00ce0000, 0x00550000, 0x0028 522 0x00ce0000, 0x00550000, 0x00280000, 0x00df0000, 521 0x008c0000, 0x00a10000, 0x0089 523 0x008c0000, 0x00a10000, 0x00890000, 0x000d0000, 522 0x00bf0000, 0x00e60000, 0x0042 524 0x00bf0000, 0x00e60000, 0x00420000, 0x00680000, 523 0x00410000, 0x00990000, 0x002d 525 0x00410000, 0x00990000, 0x002d0000, 0x000f0000, 524 0x00b00000, 0x00540000, 0x00bb 526 0x00b00000, 0x00540000, 0x00bb0000, 0x00160000, 525 }, { 527 }, { 526 0x63000000, 0x7c000000, 0x7700 528 0x63000000, 0x7c000000, 0x77000000, 0x7b000000, 527 0xf2000000, 0x6b000000, 0x6f00 529 0xf2000000, 0x6b000000, 0x6f000000, 0xc5000000, 528 0x30000000, 0x01000000, 0x6700 530 0x30000000, 0x01000000, 0x67000000, 0x2b000000, 529 0xfe000000, 0xd7000000, 0xab00 531 0xfe000000, 0xd7000000, 0xab000000, 0x76000000, 530 0xca000000, 0x82000000, 0xc900 532 0xca000000, 0x82000000, 0xc9000000, 0x7d000000, 531 0xfa000000, 0x59000000, 0x4700 533 0xfa000000, 0x59000000, 0x47000000, 0xf0000000, 532 0xad000000, 0xd4000000, 0xa200 534 0xad000000, 0xd4000000, 0xa2000000, 0xaf000000, 533 0x9c000000, 0xa4000000, 0x7200 535 0x9c000000, 0xa4000000, 0x72000000, 0xc0000000, 534 0xb7000000, 0xfd000000, 0x9300 536 0xb7000000, 0xfd000000, 0x93000000, 0x26000000, 535 0x36000000, 0x3f000000, 0xf700 537 0x36000000, 0x3f000000, 0xf7000000, 0xcc000000, 536 0x34000000, 0xa5000000, 0xe500 538 0x34000000, 0xa5000000, 0xe5000000, 0xf1000000, 537 0x71000000, 0xd8000000, 0x3100 539 0x71000000, 0xd8000000, 0x31000000, 0x15000000, 538 0x04000000, 0xc7000000, 0x2300 540 0x04000000, 0xc7000000, 0x23000000, 0xc3000000, 539 0x18000000, 0x96000000, 0x0500 541 0x18000000, 0x96000000, 0x05000000, 0x9a000000, 540 0x07000000, 0x12000000, 0x8000 542 0x07000000, 0x12000000, 0x80000000, 0xe2000000, 541 0xeb000000, 0x27000000, 0xb200 543 0xeb000000, 0x27000000, 0xb2000000, 0x75000000, 542 0x09000000, 0x83000000, 0x2c00 544 0x09000000, 0x83000000, 0x2c000000, 0x1a000000, 543 0x1b000000, 0x6e000000, 0x5a00 545 0x1b000000, 0x6e000000, 0x5a000000, 0xa0000000, 544 0x52000000, 0x3b000000, 0xd600 546 0x52000000, 0x3b000000, 0xd6000000, 0xb3000000, 545 0x29000000, 0xe3000000, 0x2f00 547 0x29000000, 0xe3000000, 0x2f000000, 0x84000000, 546 0x53000000, 0xd1000000, 0x0000 548 0x53000000, 0xd1000000, 0x00000000, 0xed000000, 547 0x20000000, 0xfc000000, 0xb100 549 0x20000000, 0xfc000000, 0xb1000000, 0x5b000000, 548 0x6a000000, 0xcb000000, 0xbe00 550 0x6a000000, 0xcb000000, 0xbe000000, 0x39000000, 549 0x4a000000, 0x4c000000, 0x5800 551 0x4a000000, 0x4c000000, 0x58000000, 0xcf000000, 550 0xd0000000, 0xef000000, 0xaa00 552 0xd0000000, 0xef000000, 0xaa000000, 0xfb000000, 551 0x43000000, 0x4d000000, 0x3300 553 0x43000000, 0x4d000000, 0x33000000, 0x85000000, 552 0x45000000, 0xf9000000, 0x0200 554 0x45000000, 0xf9000000, 0x02000000, 0x7f000000, 553 0x50000000, 0x3c000000, 0x9f00 555 0x50000000, 0x3c000000, 0x9f000000, 0xa8000000, 554 0x51000000, 0xa3000000, 0x4000 556 0x51000000, 0xa3000000, 0x40000000, 0x8f000000, 555 0x92000000, 0x9d000000, 0x3800 557 0x92000000, 0x9d000000, 0x38000000, 0xf5000000, 556 0xbc000000, 0xb6000000, 0xda00 558 0xbc000000, 0xb6000000, 0xda000000, 0x21000000, 557 0x10000000, 0xff000000, 0xf300 559 0x10000000, 0xff000000, 0xf3000000, 0xd2000000, 558 0xcd000000, 0x0c000000, 0x1300 560 0xcd000000, 0x0c000000, 0x13000000, 0xec000000, 559 0x5f000000, 0x97000000, 0x4400 561 0x5f000000, 0x97000000, 0x44000000, 0x17000000, 560 0xc4000000, 0xa7000000, 0x7e00 562 0xc4000000, 0xa7000000, 0x7e000000, 0x3d000000, 561 0x64000000, 0x5d000000, 0x1900 563 0x64000000, 0x5d000000, 0x19000000, 0x73000000, 562 0x60000000, 0x81000000, 0x4f00 564 0x60000000, 0x81000000, 0x4f000000, 0xdc000000, 563 0x22000000, 0x2a000000, 0x9000 565 0x22000000, 0x2a000000, 0x90000000, 0x88000000, 564 0x46000000, 0xee000000, 0xb800 566 0x46000000, 0xee000000, 0xb8000000, 0x14000000, 565 0xde000000, 0x5e000000, 0x0b00 567 0xde000000, 0x5e000000, 0x0b000000, 0xdb000000, 566 0xe0000000, 0x32000000, 0x3a00 568 0xe0000000, 0x32000000, 0x3a000000, 0x0a000000, 567 0x49000000, 0x06000000, 0x2400 569 0x49000000, 0x06000000, 0x24000000, 0x5c000000, 568 0xc2000000, 0xd3000000, 0xac00 570 0xc2000000, 0xd3000000, 0xac000000, 0x62000000, 569 0x91000000, 0x95000000, 0xe400 571 0x91000000, 0x95000000, 0xe4000000, 0x79000000, 570 0xe7000000, 0xc8000000, 0x3700 572 0xe7000000, 0xc8000000, 0x37000000, 0x6d000000, 571 0x8d000000, 0xd5000000, 0x4e00 573 0x8d000000, 0xd5000000, 0x4e000000, 0xa9000000, 572 0x6c000000, 0x56000000, 0xf400 574 0x6c000000, 0x56000000, 0xf4000000, 0xea000000, 573 0x65000000, 0x7a000000, 0xae00 575 0x65000000, 0x7a000000, 0xae000000, 0x08000000, 574 0xba000000, 0x78000000, 0x2500 576 0xba000000, 0x78000000, 0x25000000, 0x2e000000, 575 0x1c000000, 0xa6000000, 0xb400 577 0x1c000000, 0xa6000000, 0xb4000000, 0xc6000000, 576 0xe8000000, 0xdd000000, 0x7400 578 0xe8000000, 0xdd000000, 0x74000000, 0x1f000000, 577 0x4b000000, 0xbd000000, 0x8b00 579 0x4b000000, 0xbd000000, 0x8b000000, 0x8a000000, 578 0x70000000, 0x3e000000, 0xb500 580 0x70000000, 0x3e000000, 0xb5000000, 0x66000000, 579 0x48000000, 0x03000000, 0xf600 581 0x48000000, 0x03000000, 0xf6000000, 0x0e000000, 580 0x61000000, 0x35000000, 0x5700 582 0x61000000, 0x35000000, 0x57000000, 0xb9000000, 581 0x86000000, 0xc1000000, 0x1d00 583 0x86000000, 0xc1000000, 0x1d000000, 0x9e000000, 582 0xe1000000, 0xf8000000, 0x9800 584 0xe1000000, 0xf8000000, 0x98000000, 0x11000000, 583 0x69000000, 0xd9000000, 0x8e00 585 0x69000000, 0xd9000000, 0x8e000000, 0x94000000, 584 0x9b000000, 0x1e000000, 0x8700 586 0x9b000000, 0x1e000000, 0x87000000, 0xe9000000, 585 0xce000000, 0x55000000, 0x2800 587 0xce000000, 0x55000000, 0x28000000, 0xdf000000, 586 0x8c000000, 0xa1000000, 0x8900 588 0x8c000000, 0xa1000000, 0x89000000, 0x0d000000, 587 0xbf000000, 0xe6000000, 0x4200 589 0xbf000000, 0xe6000000, 0x42000000, 0x68000000, 588 0x41000000, 0x99000000, 0x2d00 590 0x41000000, 0x99000000, 0x2d000000, 0x0f000000, 589 0xb0000000, 0x54000000, 0xbb00 591 0xb0000000, 0x54000000, 0xbb000000, 0x16000000, 590 } 592 } 591 }; 593 }; 592 594 593 __visible const u32 crypto_it_tab[4][256] ____ !! 595 __visible const u32 crypto_it_tab[4][256] __cacheline_aligned = { 594 { 596 { 595 0x50a7f451, 0x5365417e, 0xc3a4 597 0x50a7f451, 0x5365417e, 0xc3a4171a, 0x965e273a, 596 0xcb6bab3b, 0xf1459d1f, 0xab58 598 0xcb6bab3b, 0xf1459d1f, 0xab58faac, 0x9303e34b, 597 0x55fa3020, 0xf66d76ad, 0x9176 599 0x55fa3020, 0xf66d76ad, 0x9176cc88, 0x254c02f5, 598 0xfcd7e54f, 0xd7cb2ac5, 0x8044 600 0xfcd7e54f, 0xd7cb2ac5, 0x80443526, 0x8fa362b5, 599 0x495ab1de, 0x671bba25, 0x980e 601 0x495ab1de, 0x671bba25, 0x980eea45, 0xe1c0fe5d, 600 0x02752fc3, 0x12f04c81, 0xa397 602 0x02752fc3, 0x12f04c81, 0xa397468d, 0xc6f9d36b, 601 0xe75f8f03, 0x959c9215, 0xeb7a 603 0xe75f8f03, 0x959c9215, 0xeb7a6dbf, 0xda595295, 602 0x2d83bed4, 0xd3217458, 0x2969 604 0x2d83bed4, 0xd3217458, 0x2969e049, 0x44c8c98e, 603 0x6a89c275, 0x78798ef4, 0x6b3e 605 0x6a89c275, 0x78798ef4, 0x6b3e5899, 0xdd71b927, 604 0xb64fe1be, 0x17ad88f0, 0x66ac 606 0xb64fe1be, 0x17ad88f0, 0x66ac20c9, 0xb43ace7d, 605 0x184adf63, 0x82311ae5, 0x6033 607 0x184adf63, 0x82311ae5, 0x60335197, 0x457f5362, 606 0xe07764b1, 0x84ae6bbb, 0x1ca0 608 0xe07764b1, 0x84ae6bbb, 0x1ca081fe, 0x942b08f9, 607 0x58684870, 0x19fd458f, 0x876c 609 0x58684870, 0x19fd458f, 0x876cde94, 0xb7f87b52, 608 0x23d373ab, 0xe2024b72, 0x578f 610 0x23d373ab, 0xe2024b72, 0x578f1fe3, 0x2aab5566, 609 0x0728ebb2, 0x03c2b52f, 0x9a7b 611 0x0728ebb2, 0x03c2b52f, 0x9a7bc586, 0xa50837d3, 610 0xf2872830, 0xb2a5bf23, 0xba6a 612 0xf2872830, 0xb2a5bf23, 0xba6a0302, 0x5c8216ed, 611 0x2b1ccf8a, 0x92b479a7, 0xf0f2 613 0x2b1ccf8a, 0x92b479a7, 0xf0f207f3, 0xa1e2694e, 612 0xcdf4da65, 0xd5be0506, 0x1f62 614 0xcdf4da65, 0xd5be0506, 0x1f6234d1, 0x8afea6c4, 613 0x9d532e34, 0xa055f3a2, 0x32e1 615 0x9d532e34, 0xa055f3a2, 0x32e18a05, 0x75ebf6a4, 614 0x39ec830b, 0xaaef6040, 0x069f 616 0x39ec830b, 0xaaef6040, 0x069f715e, 0x51106ebd, 615 0xf98a213e, 0x3d06dd96, 0xae05 617 0xf98a213e, 0x3d06dd96, 0xae053edd, 0x46bde64d, 616 0xb58d5491, 0x055dc471, 0x6fd4 618 0xb58d5491, 0x055dc471, 0x6fd40604, 0xff155060, 617 0x24fb9819, 0x97e9bdd6, 0xcc43 619 0x24fb9819, 0x97e9bdd6, 0xcc434089, 0x779ed967, 618 0xbd42e8b0, 0x888b8907, 0x385b 620 0xbd42e8b0, 0x888b8907, 0x385b19e7, 0xdbeec879, 619 0x470a7ca1, 0xe90f427c, 0xc91e 621 0x470a7ca1, 0xe90f427c, 0xc91e84f8, 0x00000000, 620 0x83868009, 0x48ed2b32, 0xac70 622 0x83868009, 0x48ed2b32, 0xac70111e, 0x4e725a6c, 621 0xfbff0efd, 0x5638850f, 0x1ed5 623 0xfbff0efd, 0x5638850f, 0x1ed5ae3d, 0x27392d36, 622 0x64d90f0a, 0x21a65c68, 0xd154 624 0x64d90f0a, 0x21a65c68, 0xd1545b9b, 0x3a2e3624, 623 0xb1670a0c, 0x0fe75793, 0xd296 625 0xb1670a0c, 0x0fe75793, 0xd296eeb4, 0x9e919b1b, 624 0x4fc5c080, 0xa220dc61, 0x694b 626 0x4fc5c080, 0xa220dc61, 0x694b775a, 0x161a121c, 625 0x0aba93e2, 0xe52aa0c0, 0x43e0 627 0x0aba93e2, 0xe52aa0c0, 0x43e0223c, 0x1d171b12, 626 0x0b0d090e, 0xadc78bf2, 0xb9a8 628 0x0b0d090e, 0xadc78bf2, 0xb9a8b62d, 0xc8a91e14, 627 0x8519f157, 0x4c0775af, 0xbbdd 629 0x8519f157, 0x4c0775af, 0xbbdd99ee, 0xfd607fa3, 628 0x9f2601f7, 0xbcf5725c, 0xc53b 630 0x9f2601f7, 0xbcf5725c, 0xc53b6644, 0x347efb5b, 629 0x7629438b, 0xdcc623cb, 0x68fc 631 0x7629438b, 0xdcc623cb, 0x68fcedb6, 0x63f1e4b8, 630 0xcadc31d7, 0x10856342, 0x4022 632 0xcadc31d7, 0x10856342, 0x40229713, 0x2011c684, 631 0x7d244a85, 0xf83dbbd2, 0x1132 633 0x7d244a85, 0xf83dbbd2, 0x1132f9ae, 0x6da129c7, 632 0x4b2f9e1d, 0xf330b2dc, 0xec52 634 0x4b2f9e1d, 0xf330b2dc, 0xec52860d, 0xd0e3c177, 633 0x6c16b32b, 0x99b970a9, 0xfa48 635 0x6c16b32b, 0x99b970a9, 0xfa489411, 0x2264e947, 634 0xc48cfca8, 0x1a3ff0a0, 0xd82c 636 0xc48cfca8, 0x1a3ff0a0, 0xd82c7d56, 0xef903322, 635 0xc74e4987, 0xc1d138d9, 0xfea2 637 0xc74e4987, 0xc1d138d9, 0xfea2ca8c, 0x360bd498, 636 0xcf81f5a6, 0x28de7aa5, 0x268e 638 0xcf81f5a6, 0x28de7aa5, 0x268eb7da, 0xa4bfad3f, 637 0xe49d3a2c, 0x0d927850, 0x9bcc 639 0xe49d3a2c, 0x0d927850, 0x9bcc5f6a, 0x62467e54, 638 0xc2138df6, 0xe8b8d890, 0x5ef7 640 0xc2138df6, 0xe8b8d890, 0x5ef7392e, 0xf5afc382, 639 0xbe805d9f, 0x7c93d069, 0xa92d 641 0xbe805d9f, 0x7c93d069, 0xa92dd56f, 0xb31225cf, 640 0x3b99acc8, 0xa77d1810, 0x6e63 642 0x3b99acc8, 0xa77d1810, 0x6e639ce8, 0x7bbb3bdb, 641 0x097826cd, 0xf418596e, 0x01b7 643 0x097826cd, 0xf418596e, 0x01b79aec, 0xa89a4f83, 642 0x656e95e6, 0x7ee6ffaa, 0x08cf 644 0x656e95e6, 0x7ee6ffaa, 0x08cfbc21, 0xe6e815ef, 643 0xd99be7ba, 0xce366f4a, 0xd409 645 0xd99be7ba, 0xce366f4a, 0xd4099fea, 0xd67cb029, 644 0xafb2a431, 0x31233f2a, 0x3094 646 0xafb2a431, 0x31233f2a, 0x3094a5c6, 0xc066a235, 645 0x37bc4e74, 0xa6ca82fc, 0xb0d0 647 0x37bc4e74, 0xa6ca82fc, 0xb0d090e0, 0x15d8a733, 646 0x4a9804f1, 0xf7daec41, 0x0e50 648 0x4a9804f1, 0xf7daec41, 0x0e50cd7f, 0x2ff69117, 647 0x8dd64d76, 0x4db0ef43, 0x544d 649 0x8dd64d76, 0x4db0ef43, 0x544daacc, 0xdf0496e4, 648 0xe3b5d19e, 0x1b886a4c, 0xb81f 650 0xe3b5d19e, 0x1b886a4c, 0xb81f2cc1, 0x7f516546, 649 0x04ea5e9d, 0x5d358c01, 0x7374 651 0x04ea5e9d, 0x5d358c01, 0x737487fa, 0x2e410bfb, 650 0x5a1d67b3, 0x52d2db92, 0x3356 652 0x5a1d67b3, 0x52d2db92, 0x335610e9, 0x1347d66d, 651 0x8c61d79a, 0x7a0ca137, 0x8e14 653 0x8c61d79a, 0x7a0ca137, 0x8e14f859, 0x893c13eb, 652 0xee27a9ce, 0x35c961b7, 0xede5 654 0xee27a9ce, 0x35c961b7, 0xede51ce1, 0x3cb1477a, 653 0x59dfd29c, 0x3f73f255, 0x79ce 655 0x59dfd29c, 0x3f73f255, 0x79ce1418, 0xbf37c773, 654 0xeacdf753, 0x5baafd5f, 0x146f 656 0xeacdf753, 0x5baafd5f, 0x146f3ddf, 0x86db4478, 655 0x81f3afca, 0x3ec468b9, 0x2c34 657 0x81f3afca, 0x3ec468b9, 0x2c342438, 0x5f40a3c2, 656 0x72c31d16, 0x0c25e2bc, 0x8b49 658 0x72c31d16, 0x0c25e2bc, 0x8b493c28, 0x41950dff, 657 0x7101a839, 0xdeb30c08, 0x9ce4 659 0x7101a839, 0xdeb30c08, 0x9ce4b4d8, 0x90c15664, 658 0x6184cb7b, 0x70b632d5, 0x745c 660 0x6184cb7b, 0x70b632d5, 0x745c6c48, 0x4257b8d0, 659 }, { 661 }, { 660 0xa7f45150, 0x65417e53, 0xa417 662 0xa7f45150, 0x65417e53, 0xa4171ac3, 0x5e273a96, 661 0x6bab3bcb, 0x459d1ff1, 0x58fa 663 0x6bab3bcb, 0x459d1ff1, 0x58faacab, 0x03e34b93, 662 0xfa302055, 0x6d76adf6, 0x76cc 664 0xfa302055, 0x6d76adf6, 0x76cc8891, 0x4c02f525, 663 0xd7e54ffc, 0xcb2ac5d7, 0x4435 665 0xd7e54ffc, 0xcb2ac5d7, 0x44352680, 0xa362b58f, 664 0x5ab1de49, 0x1bba2567, 0x0eea 666 0x5ab1de49, 0x1bba2567, 0x0eea4598, 0xc0fe5de1, 665 0x752fc302, 0xf04c8112, 0x9746 667 0x752fc302, 0xf04c8112, 0x97468da3, 0xf9d36bc6, 666 0x5f8f03e7, 0x9c921595, 0x7a6d 668 0x5f8f03e7, 0x9c921595, 0x7a6dbfeb, 0x595295da, 667 0x83bed42d, 0x217458d3, 0x69e0 669 0x83bed42d, 0x217458d3, 0x69e04929, 0xc8c98e44, 668 0x89c2756a, 0x798ef478, 0x3e58 670 0x89c2756a, 0x798ef478, 0x3e58996b, 0x71b927dd, 669 0x4fe1beb6, 0xad88f017, 0xac20 671 0x4fe1beb6, 0xad88f017, 0xac20c966, 0x3ace7db4, 670 0x4adf6318, 0x311ae582, 0x3351 672 0x4adf6318, 0x311ae582, 0x33519760, 0x7f536245, 671 0x7764b1e0, 0xae6bbb84, 0xa081 673 0x7764b1e0, 0xae6bbb84, 0xa081fe1c, 0x2b08f994, 672 0x68487058, 0xfd458f19, 0x6cde 674 0x68487058, 0xfd458f19, 0x6cde9487, 0xf87b52b7, 673 0xd373ab23, 0x024b72e2, 0x8f1f 675 0xd373ab23, 0x024b72e2, 0x8f1fe357, 0xab55662a, 674 0x28ebb207, 0xc2b52f03, 0x7bc5 676 0x28ebb207, 0xc2b52f03, 0x7bc5869a, 0x0837d3a5, 675 0x872830f2, 0xa5bf23b2, 0x6a03 677 0x872830f2, 0xa5bf23b2, 0x6a0302ba, 0x8216ed5c, 676 0x1ccf8a2b, 0xb479a792, 0xf207 678 0x1ccf8a2b, 0xb479a792, 0xf207f3f0, 0xe2694ea1, 677 0xf4da65cd, 0xbe0506d5, 0x6234 679 0xf4da65cd, 0xbe0506d5, 0x6234d11f, 0xfea6c48a, 678 0x532e349d, 0x55f3a2a0, 0xe18a 680 0x532e349d, 0x55f3a2a0, 0xe18a0532, 0xebf6a475, 679 0xec830b39, 0xef6040aa, 0x9f71 681 0xec830b39, 0xef6040aa, 0x9f715e06, 0x106ebd51, 680 0x8a213ef9, 0x06dd963d, 0x053e 682 0x8a213ef9, 0x06dd963d, 0x053eddae, 0xbde64d46, 681 0x8d5491b5, 0x5dc47105, 0xd406 683 0x8d5491b5, 0x5dc47105, 0xd406046f, 0x155060ff, 682 0xfb981924, 0xe9bdd697, 0x4340 684 0xfb981924, 0xe9bdd697, 0x434089cc, 0x9ed96777, 683 0x42e8b0bd, 0x8b890788, 0x5b19 685 0x42e8b0bd, 0x8b890788, 0x5b19e738, 0xeec879db, 684 0x0a7ca147, 0x0f427ce9, 0x1e84 686 0x0a7ca147, 0x0f427ce9, 0x1e84f8c9, 0x00000000, 685 0x86800983, 0xed2b3248, 0x7011 687 0x86800983, 0xed2b3248, 0x70111eac, 0x725a6c4e, 686 0xff0efdfb, 0x38850f56, 0xd5ae 688 0xff0efdfb, 0x38850f56, 0xd5ae3d1e, 0x392d3627, 687 0xd90f0a64, 0xa65c6821, 0x545b 689 0xd90f0a64, 0xa65c6821, 0x545b9bd1, 0x2e36243a, 688 0x670a0cb1, 0xe757930f, 0x96ee 690 0x670a0cb1, 0xe757930f, 0x96eeb4d2, 0x919b1b9e, 689 0xc5c0804f, 0x20dc61a2, 0x4b77 691 0xc5c0804f, 0x20dc61a2, 0x4b775a69, 0x1a121c16, 690 0xba93e20a, 0x2aa0c0e5, 0xe022 692 0xba93e20a, 0x2aa0c0e5, 0xe0223c43, 0x171b121d, 691 0x0d090e0b, 0xc78bf2ad, 0xa8b6 693 0x0d090e0b, 0xc78bf2ad, 0xa8b62db9, 0xa91e14c8, 692 0x19f15785, 0x0775af4c, 0xdd99 694 0x19f15785, 0x0775af4c, 0xdd99eebb, 0x607fa3fd, 693 0x2601f79f, 0xf5725cbc, 0x3b66 695 0x2601f79f, 0xf5725cbc, 0x3b6644c5, 0x7efb5b34, 694 0x29438b76, 0xc623cbdc, 0xfced 696 0x29438b76, 0xc623cbdc, 0xfcedb668, 0xf1e4b863, 695 0xdc31d7ca, 0x85634210, 0x2297 697 0xdc31d7ca, 0x85634210, 0x22971340, 0x11c68420, 696 0x244a857d, 0x3dbbd2f8, 0x32f9 698 0x244a857d, 0x3dbbd2f8, 0x32f9ae11, 0xa129c76d, 697 0x2f9e1d4b, 0x30b2dcf3, 0x5286 699 0x2f9e1d4b, 0x30b2dcf3, 0x52860dec, 0xe3c177d0, 698 0x16b32b6c, 0xb970a999, 0x4894 700 0x16b32b6c, 0xb970a999, 0x489411fa, 0x64e94722, 699 0x8cfca8c4, 0x3ff0a01a, 0x2c7d 701 0x8cfca8c4, 0x3ff0a01a, 0x2c7d56d8, 0x903322ef, 700 0x4e4987c7, 0xd138d9c1, 0xa2ca 702 0x4e4987c7, 0xd138d9c1, 0xa2ca8cfe, 0x0bd49836, 701 0x81f5a6cf, 0xde7aa528, 0x8eb7 703 0x81f5a6cf, 0xde7aa528, 0x8eb7da26, 0xbfad3fa4, 702 0x9d3a2ce4, 0x9278500d, 0xcc5f 704 0x9d3a2ce4, 0x9278500d, 0xcc5f6a9b, 0x467e5462, 703 0x138df6c2, 0xb8d890e8, 0xf739 705 0x138df6c2, 0xb8d890e8, 0xf7392e5e, 0xafc382f5, 704 0x805d9fbe, 0x93d0697c, 0x2dd5 706 0x805d9fbe, 0x93d0697c, 0x2dd56fa9, 0x1225cfb3, 705 0x99acc83b, 0x7d1810a7, 0x639c 707 0x99acc83b, 0x7d1810a7, 0x639ce86e, 0xbb3bdb7b, 706 0x7826cd09, 0x18596ef4, 0xb79a 708 0x7826cd09, 0x18596ef4, 0xb79aec01, 0x9a4f83a8, 707 0x6e95e665, 0xe6ffaa7e, 0xcfbc 709 0x6e95e665, 0xe6ffaa7e, 0xcfbc2108, 0xe815efe6, 708 0x9be7bad9, 0x366f4ace, 0x099f 710 0x9be7bad9, 0x366f4ace, 0x099fead4, 0x7cb029d6, 709 0xb2a431af, 0x233f2a31, 0x94a5 711 0xb2a431af, 0x233f2a31, 0x94a5c630, 0x66a235c0, 710 0xbc4e7437, 0xca82fca6, 0xd090 712 0xbc4e7437, 0xca82fca6, 0xd090e0b0, 0xd8a73315, 711 0x9804f14a, 0xdaec41f7, 0x50cd 713 0x9804f14a, 0xdaec41f7, 0x50cd7f0e, 0xf691172f, 712 0xd64d768d, 0xb0ef434d, 0x4daa 714 0xd64d768d, 0xb0ef434d, 0x4daacc54, 0x0496e4df, 713 0xb5d19ee3, 0x886a4c1b, 0x1f2c 715 0xb5d19ee3, 0x886a4c1b, 0x1f2cc1b8, 0x5165467f, 714 0xea5e9d04, 0x358c015d, 0x7487 716 0xea5e9d04, 0x358c015d, 0x7487fa73, 0x410bfb2e, 715 0x1d67b35a, 0xd2db9252, 0x5610 717 0x1d67b35a, 0xd2db9252, 0x5610e933, 0x47d66d13, 716 0x61d79a8c, 0x0ca1377a, 0x14f8 718 0x61d79a8c, 0x0ca1377a, 0x14f8598e, 0x3c13eb89, 717 0x27a9ceee, 0xc961b735, 0xe51c 719 0x27a9ceee, 0xc961b735, 0xe51ce1ed, 0xb1477a3c, 718 0xdfd29c59, 0x73f2553f, 0xce14 720 0xdfd29c59, 0x73f2553f, 0xce141879, 0x37c773bf, 719 0xcdf753ea, 0xaafd5f5b, 0x6f3d 721 0xcdf753ea, 0xaafd5f5b, 0x6f3ddf14, 0xdb447886, 720 0xf3afca81, 0xc468b93e, 0x3424 722 0xf3afca81, 0xc468b93e, 0x3424382c, 0x40a3c25f, 721 0xc31d1672, 0x25e2bc0c, 0x493c 723 0xc31d1672, 0x25e2bc0c, 0x493c288b, 0x950dff41, 722 0x01a83971, 0xb30c08de, 0xe4b4 724 0x01a83971, 0xb30c08de, 0xe4b4d89c, 0xc1566490, 723 0x84cb7b61, 0xb632d570, 0x5c6c 725 0x84cb7b61, 0xb632d570, 0x5c6c4874, 0x57b8d042, 724 }, { 726 }, { 725 0xf45150a7, 0x417e5365, 0x171a 727 0xf45150a7, 0x417e5365, 0x171ac3a4, 0x273a965e, 726 0xab3bcb6b, 0x9d1ff145, 0xfaac 728 0xab3bcb6b, 0x9d1ff145, 0xfaacab58, 0xe34b9303, 727 0x302055fa, 0x76adf66d, 0xcc88 729 0x302055fa, 0x76adf66d, 0xcc889176, 0x02f5254c, 728 0xe54ffcd7, 0x2ac5d7cb, 0x3526 730 0xe54ffcd7, 0x2ac5d7cb, 0x35268044, 0x62b58fa3, 729 0xb1de495a, 0xba25671b, 0xea45 731 0xb1de495a, 0xba25671b, 0xea45980e, 0xfe5de1c0, 730 0x2fc30275, 0x4c8112f0, 0x468d 732 0x2fc30275, 0x4c8112f0, 0x468da397, 0xd36bc6f9, 731 0x8f03e75f, 0x9215959c, 0x6dbf 733 0x8f03e75f, 0x9215959c, 0x6dbfeb7a, 0x5295da59, 732 0xbed42d83, 0x7458d321, 0xe049 734 0xbed42d83, 0x7458d321, 0xe0492969, 0xc98e44c8, 733 0xc2756a89, 0x8ef47879, 0x5899 735 0xc2756a89, 0x8ef47879, 0x58996b3e, 0xb927dd71, 734 0xe1beb64f, 0x88f017ad, 0x20c9 736 0xe1beb64f, 0x88f017ad, 0x20c966ac, 0xce7db43a, 735 0xdf63184a, 0x1ae58231, 0x5197 737 0xdf63184a, 0x1ae58231, 0x51976033, 0x5362457f, 736 0x64b1e077, 0x6bbb84ae, 0x81fe 738 0x64b1e077, 0x6bbb84ae, 0x81fe1ca0, 0x08f9942b, 737 0x48705868, 0x458f19fd, 0xde94 739 0x48705868, 0x458f19fd, 0xde94876c, 0x7b52b7f8, 738 0x73ab23d3, 0x4b72e202, 0x1fe3 740 0x73ab23d3, 0x4b72e202, 0x1fe3578f, 0x55662aab, 739 0xebb20728, 0xb52f03c2, 0xc586 741 0xebb20728, 0xb52f03c2, 0xc5869a7b, 0x37d3a508, 740 0x2830f287, 0xbf23b2a5, 0x0302 742 0x2830f287, 0xbf23b2a5, 0x0302ba6a, 0x16ed5c82, 741 0xcf8a2b1c, 0x79a792b4, 0x07f3 743 0xcf8a2b1c, 0x79a792b4, 0x07f3f0f2, 0x694ea1e2, 742 0xda65cdf4, 0x0506d5be, 0x34d1 744 0xda65cdf4, 0x0506d5be, 0x34d11f62, 0xa6c48afe, 743 0x2e349d53, 0xf3a2a055, 0x8a05 745 0x2e349d53, 0xf3a2a055, 0x8a0532e1, 0xf6a475eb, 744 0x830b39ec, 0x6040aaef, 0x715e 746 0x830b39ec, 0x6040aaef, 0x715e069f, 0x6ebd5110, 745 0x213ef98a, 0xdd963d06, 0x3edd 747 0x213ef98a, 0xdd963d06, 0x3eddae05, 0xe64d46bd, 746 0x5491b58d, 0xc471055d, 0x0604 748 0x5491b58d, 0xc471055d, 0x06046fd4, 0x5060ff15, 747 0x981924fb, 0xbdd697e9, 0x4089 749 0x981924fb, 0xbdd697e9, 0x4089cc43, 0xd967779e, 748 0xe8b0bd42, 0x8907888b, 0x19e7 750 0xe8b0bd42, 0x8907888b, 0x19e7385b, 0xc879dbee, 749 0x7ca1470a, 0x427ce90f, 0x84f8 751 0x7ca1470a, 0x427ce90f, 0x84f8c91e, 0x00000000, 750 0x80098386, 0x2b3248ed, 0x111e 752 0x80098386, 0x2b3248ed, 0x111eac70, 0x5a6c4e72, 751 0x0efdfbff, 0x850f5638, 0xae3d 753 0x0efdfbff, 0x850f5638, 0xae3d1ed5, 0x2d362739, 752 0x0f0a64d9, 0x5c6821a6, 0x5b9b 754 0x0f0a64d9, 0x5c6821a6, 0x5b9bd154, 0x36243a2e, 753 0x0a0cb167, 0x57930fe7, 0xeeb4 755 0x0a0cb167, 0x57930fe7, 0xeeb4d296, 0x9b1b9e91, 754 0xc0804fc5, 0xdc61a220, 0x775a 756 0xc0804fc5, 0xdc61a220, 0x775a694b, 0x121c161a, 755 0x93e20aba, 0xa0c0e52a, 0x223c 757 0x93e20aba, 0xa0c0e52a, 0x223c43e0, 0x1b121d17, 756 0x090e0b0d, 0x8bf2adc7, 0xb62d 758 0x090e0b0d, 0x8bf2adc7, 0xb62db9a8, 0x1e14c8a9, 757 0xf1578519, 0x75af4c07, 0x99ee 759 0xf1578519, 0x75af4c07, 0x99eebbdd, 0x7fa3fd60, 758 0x01f79f26, 0x725cbcf5, 0x6644 760 0x01f79f26, 0x725cbcf5, 0x6644c53b, 0xfb5b347e, 759 0x438b7629, 0x23cbdcc6, 0xedb6 761 0x438b7629, 0x23cbdcc6, 0xedb668fc, 0xe4b863f1, 760 0x31d7cadc, 0x63421085, 0x9713 762 0x31d7cadc, 0x63421085, 0x97134022, 0xc6842011, 761 0x4a857d24, 0xbbd2f83d, 0xf9ae 763 0x4a857d24, 0xbbd2f83d, 0xf9ae1132, 0x29c76da1, 762 0x9e1d4b2f, 0xb2dcf330, 0x860d 764 0x9e1d4b2f, 0xb2dcf330, 0x860dec52, 0xc177d0e3, 763 0xb32b6c16, 0x70a999b9, 0x9411 765 0xb32b6c16, 0x70a999b9, 0x9411fa48, 0xe9472264, 764 0xfca8c48c, 0xf0a01a3f, 0x7d56 766 0xfca8c48c, 0xf0a01a3f, 0x7d56d82c, 0x3322ef90, 765 0x4987c74e, 0x38d9c1d1, 0xca8c 767 0x4987c74e, 0x38d9c1d1, 0xca8cfea2, 0xd498360b, 766 0xf5a6cf81, 0x7aa528de, 0xb7da 768 0xf5a6cf81, 0x7aa528de, 0xb7da268e, 0xad3fa4bf, 767 0x3a2ce49d, 0x78500d92, 0x5f6a 769 0x3a2ce49d, 0x78500d92, 0x5f6a9bcc, 0x7e546246, 768 0x8df6c213, 0xd890e8b8, 0x392e 770 0x8df6c213, 0xd890e8b8, 0x392e5ef7, 0xc382f5af, 769 0x5d9fbe80, 0xd0697c93, 0xd56f 771 0x5d9fbe80, 0xd0697c93, 0xd56fa92d, 0x25cfb312, 770 0xacc83b99, 0x1810a77d, 0x9ce8 772 0xacc83b99, 0x1810a77d, 0x9ce86e63, 0x3bdb7bbb, 771 0x26cd0978, 0x596ef418, 0x9aec 773 0x26cd0978, 0x596ef418, 0x9aec01b7, 0x4f83a89a, 772 0x95e6656e, 0xffaa7ee6, 0xbc21 774 0x95e6656e, 0xffaa7ee6, 0xbc2108cf, 0x15efe6e8, 773 0xe7bad99b, 0x6f4ace36, 0x9fea 775 0xe7bad99b, 0x6f4ace36, 0x9fead409, 0xb029d67c, 774 0xa431afb2, 0x3f2a3123, 0xa5c6 776 0xa431afb2, 0x3f2a3123, 0xa5c63094, 0xa235c066, 775 0x4e7437bc, 0x82fca6ca, 0x90e0 777 0x4e7437bc, 0x82fca6ca, 0x90e0b0d0, 0xa73315d8, 776 0x04f14a98, 0xec41f7da, 0xcd7f 778 0x04f14a98, 0xec41f7da, 0xcd7f0e50, 0x91172ff6, 777 0x4d768dd6, 0xef434db0, 0xaacc 779 0x4d768dd6, 0xef434db0, 0xaacc544d, 0x96e4df04, 778 0xd19ee3b5, 0x6a4c1b88, 0x2cc1 780 0xd19ee3b5, 0x6a4c1b88, 0x2cc1b81f, 0x65467f51, 779 0x5e9d04ea, 0x8c015d35, 0x87fa 781 0x5e9d04ea, 0x8c015d35, 0x87fa7374, 0x0bfb2e41, 780 0x67b35a1d, 0xdb9252d2, 0x10e9 782 0x67b35a1d, 0xdb9252d2, 0x10e93356, 0xd66d1347, 781 0xd79a8c61, 0xa1377a0c, 0xf859 783 0xd79a8c61, 0xa1377a0c, 0xf8598e14, 0x13eb893c, 782 0xa9ceee27, 0x61b735c9, 0x1ce1 784 0xa9ceee27, 0x61b735c9, 0x1ce1ede5, 0x477a3cb1, 783 0xd29c59df, 0xf2553f73, 0x1418 785 0xd29c59df, 0xf2553f73, 0x141879ce, 0xc773bf37, 784 0xf753eacd, 0xfd5f5baa, 0x3ddf 786 0xf753eacd, 0xfd5f5baa, 0x3ddf146f, 0x447886db, 785 0xafca81f3, 0x68b93ec4, 0x2438 787 0xafca81f3, 0x68b93ec4, 0x24382c34, 0xa3c25f40, 786 0x1d1672c3, 0xe2bc0c25, 0x3c28 788 0x1d1672c3, 0xe2bc0c25, 0x3c288b49, 0x0dff4195, 787 0xa8397101, 0x0c08deb3, 0xb4d8 789 0xa8397101, 0x0c08deb3, 0xb4d89ce4, 0x566490c1, 788 0xcb7b6184, 0x32d570b6, 0x6c48 790 0xcb7b6184, 0x32d570b6, 0x6c48745c, 0xb8d04257, 789 }, { 791 }, { 790 0x5150a7f4, 0x7e536541, 0x1ac3 792 0x5150a7f4, 0x7e536541, 0x1ac3a417, 0x3a965e27, 791 0x3bcb6bab, 0x1ff1459d, 0xacab 793 0x3bcb6bab, 0x1ff1459d, 0xacab58fa, 0x4b9303e3, 792 0x2055fa30, 0xadf66d76, 0x8891 794 0x2055fa30, 0xadf66d76, 0x889176cc, 0xf5254c02, 793 0x4ffcd7e5, 0xc5d7cb2a, 0x2680 795 0x4ffcd7e5, 0xc5d7cb2a, 0x26804435, 0xb58fa362, 794 0xde495ab1, 0x25671bba, 0x4598 796 0xde495ab1, 0x25671bba, 0x45980eea, 0x5de1c0fe, 795 0xc302752f, 0x8112f04c, 0x8da3 797 0xc302752f, 0x8112f04c, 0x8da39746, 0x6bc6f9d3, 796 0x03e75f8f, 0x15959c92, 0xbfeb 798 0x03e75f8f, 0x15959c92, 0xbfeb7a6d, 0x95da5952, 797 0xd42d83be, 0x58d32174, 0x4929 799 0xd42d83be, 0x58d32174, 0x492969e0, 0x8e44c8c9, 798 0x756a89c2, 0xf478798e, 0x996b 800 0x756a89c2, 0xf478798e, 0x996b3e58, 0x27dd71b9, 799 0xbeb64fe1, 0xf017ad88, 0xc966 801 0xbeb64fe1, 0xf017ad88, 0xc966ac20, 0x7db43ace, 800 0x63184adf, 0xe582311a, 0x9760 802 0x63184adf, 0xe582311a, 0x97603351, 0x62457f53, 801 0xb1e07764, 0xbb84ae6b, 0xfe1c 803 0xb1e07764, 0xbb84ae6b, 0xfe1ca081, 0xf9942b08, 802 0x70586848, 0x8f19fd45, 0x9487 804 0x70586848, 0x8f19fd45, 0x94876cde, 0x52b7f87b, 803 0xab23d373, 0x72e2024b, 0xe357 805 0xab23d373, 0x72e2024b, 0xe3578f1f, 0x662aab55, 804 0xb20728eb, 0x2f03c2b5, 0x869a 806 0xb20728eb, 0x2f03c2b5, 0x869a7bc5, 0xd3a50837, 805 0x30f28728, 0x23b2a5bf, 0x02ba 807 0x30f28728, 0x23b2a5bf, 0x02ba6a03, 0xed5c8216, 806 0x8a2b1ccf, 0xa792b479, 0xf3f0 808 0x8a2b1ccf, 0xa792b479, 0xf3f0f207, 0x4ea1e269, 807 0x65cdf4da, 0x06d5be05, 0xd11f 809 0x65cdf4da, 0x06d5be05, 0xd11f6234, 0xc48afea6, 808 0x349d532e, 0xa2a055f3, 0x0532 810 0x349d532e, 0xa2a055f3, 0x0532e18a, 0xa475ebf6, 809 0x0b39ec83, 0x40aaef60, 0x5e06 811 0x0b39ec83, 0x40aaef60, 0x5e069f71, 0xbd51106e, 810 0x3ef98a21, 0x963d06dd, 0xddae 812 0x3ef98a21, 0x963d06dd, 0xddae053e, 0x4d46bde6, 811 0x91b58d54, 0x71055dc4, 0x046f 813 0x91b58d54, 0x71055dc4, 0x046fd406, 0x60ff1550, 812 0x1924fb98, 0xd697e9bd, 0x89cc 814 0x1924fb98, 0xd697e9bd, 0x89cc4340, 0x67779ed9, 813 0xb0bd42e8, 0x07888b89, 0xe738 815 0xb0bd42e8, 0x07888b89, 0xe7385b19, 0x79dbeec8, 814 0xa1470a7c, 0x7ce90f42, 0xf8c9 816 0xa1470a7c, 0x7ce90f42, 0xf8c91e84, 0x00000000, 815 0x09838680, 0x3248ed2b, 0x1eac 817 0x09838680, 0x3248ed2b, 0x1eac7011, 0x6c4e725a, 816 0xfdfbff0e, 0x0f563885, 0x3d1e 818 0xfdfbff0e, 0x0f563885, 0x3d1ed5ae, 0x3627392d, 817 0x0a64d90f, 0x6821a65c, 0x9bd1 819 0x0a64d90f, 0x6821a65c, 0x9bd1545b, 0x243a2e36, 818 0x0cb1670a, 0x930fe757, 0xb4d2 820 0x0cb1670a, 0x930fe757, 0xb4d296ee, 0x1b9e919b, 819 0x804fc5c0, 0x61a220dc, 0x5a69 821 0x804fc5c0, 0x61a220dc, 0x5a694b77, 0x1c161a12, 820 0xe20aba93, 0xc0e52aa0, 0x3c43 822 0xe20aba93, 0xc0e52aa0, 0x3c43e022, 0x121d171b, 821 0x0e0b0d09, 0xf2adc78b, 0x2db9 823 0x0e0b0d09, 0xf2adc78b, 0x2db9a8b6, 0x14c8a91e, 822 0x578519f1, 0xaf4c0775, 0xeebb 824 0x578519f1, 0xaf4c0775, 0xeebbdd99, 0xa3fd607f, 823 0xf79f2601, 0x5cbcf572, 0x44c5 825 0xf79f2601, 0x5cbcf572, 0x44c53b66, 0x5b347efb, 824 0x8b762943, 0xcbdcc623, 0xb668 826 0x8b762943, 0xcbdcc623, 0xb668fced, 0xb863f1e4, 825 0xd7cadc31, 0x42108563, 0x1340 827 0xd7cadc31, 0x42108563, 0x13402297, 0x842011c6, 826 0x857d244a, 0xd2f83dbb, 0xae11 828 0x857d244a, 0xd2f83dbb, 0xae1132f9, 0xc76da129, 827 0x1d4b2f9e, 0xdcf330b2, 0x0dec 829 0x1d4b2f9e, 0xdcf330b2, 0x0dec5286, 0x77d0e3c1, 828 0x2b6c16b3, 0xa999b970, 0x11fa 830 0x2b6c16b3, 0xa999b970, 0x11fa4894, 0x472264e9, 829 0xa8c48cfc, 0xa01a3ff0, 0x56d8 831 0xa8c48cfc, 0xa01a3ff0, 0x56d82c7d, 0x22ef9033, 830 0x87c74e49, 0xd9c1d138, 0x8cfe 832 0x87c74e49, 0xd9c1d138, 0x8cfea2ca, 0x98360bd4, 831 0xa6cf81f5, 0xa528de7a, 0xda26 833 0xa6cf81f5, 0xa528de7a, 0xda268eb7, 0x3fa4bfad, 832 0x2ce49d3a, 0x500d9278, 0x6a9b 834 0x2ce49d3a, 0x500d9278, 0x6a9bcc5f, 0x5462467e, 833 0xf6c2138d, 0x90e8b8d8, 0x2e5e 835 0xf6c2138d, 0x90e8b8d8, 0x2e5ef739, 0x82f5afc3, 834 0x9fbe805d, 0x697c93d0, 0x6fa9 836 0x9fbe805d, 0x697c93d0, 0x6fa92dd5, 0xcfb31225, 835 0xc83b99ac, 0x10a77d18, 0xe86e 837 0xc83b99ac, 0x10a77d18, 0xe86e639c, 0xdb7bbb3b, 836 0xcd097826, 0x6ef41859, 0xec01 838 0xcd097826, 0x6ef41859, 0xec01b79a, 0x83a89a4f, 837 0xe6656e95, 0xaa7ee6ff, 0x2108 839 0xe6656e95, 0xaa7ee6ff, 0x2108cfbc, 0xefe6e815, 838 0xbad99be7, 0x4ace366f, 0xead4 840 0xbad99be7, 0x4ace366f, 0xead4099f, 0x29d67cb0, 839 0x31afb2a4, 0x2a31233f, 0xc630 841 0x31afb2a4, 0x2a31233f, 0xc63094a5, 0x35c066a2, 840 0x7437bc4e, 0xfca6ca82, 0xe0b0 842 0x7437bc4e, 0xfca6ca82, 0xe0b0d090, 0x3315d8a7, 841 0xf14a9804, 0x41f7daec, 0x7f0e 843 0xf14a9804, 0x41f7daec, 0x7f0e50cd, 0x172ff691, 842 0x768dd64d, 0x434db0ef, 0xcc54 844 0x768dd64d, 0x434db0ef, 0xcc544daa, 0xe4df0496, 843 0x9ee3b5d1, 0x4c1b886a, 0xc1b8 845 0x9ee3b5d1, 0x4c1b886a, 0xc1b81f2c, 0x467f5165, 844 0x9d04ea5e, 0x015d358c, 0xfa73 846 0x9d04ea5e, 0x015d358c, 0xfa737487, 0xfb2e410b, 845 0xb35a1d67, 0x9252d2db, 0xe933 847 0xb35a1d67, 0x9252d2db, 0xe9335610, 0x6d1347d6, 846 0x9a8c61d7, 0x377a0ca1, 0x598e 848 0x9a8c61d7, 0x377a0ca1, 0x598e14f8, 0xeb893c13, 847 0xceee27a9, 0xb735c961, 0xe1ed 849 0xceee27a9, 0xb735c961, 0xe1ede51c, 0x7a3cb147, 848 0x9c59dfd2, 0x553f73f2, 0x1879 850 0x9c59dfd2, 0x553f73f2, 0x1879ce14, 0x73bf37c7, 849 0x53eacdf7, 0x5f5baafd, 0xdf14 851 0x53eacdf7, 0x5f5baafd, 0xdf146f3d, 0x7886db44, 850 0xca81f3af, 0xb93ec468, 0x382c 852 0xca81f3af, 0xb93ec468, 0x382c3424, 0xc25f40a3, 851 0x1672c31d, 0xbc0c25e2, 0x288b 853 0x1672c31d, 0xbc0c25e2, 0x288b493c, 0xff41950d, 852 0x397101a8, 0x08deb30c, 0xd89c 854 0x397101a8, 0x08deb30c, 0xd89ce4b4, 0x6490c156, 853 0x7b6184cb, 0xd570b632, 0x4874 855 0x7b6184cb, 0xd570b632, 0x48745c6c, 0xd04257b8, 854 } 856 } 855 }; 857 }; 856 858 857 static const u32 crypto_il_tab[4][256] ____cac !! 859 __visible const u32 crypto_il_tab[4][256] __cacheline_aligned = { 858 { 860 { 859 0x00000052, 0x00000009, 0x0000 861 0x00000052, 0x00000009, 0x0000006a, 0x000000d5, 860 0x00000030, 0x00000036, 0x0000 862 0x00000030, 0x00000036, 0x000000a5, 0x00000038, 861 0x000000bf, 0x00000040, 0x0000 863 0x000000bf, 0x00000040, 0x000000a3, 0x0000009e, 862 0x00000081, 0x000000f3, 0x0000 864 0x00000081, 0x000000f3, 0x000000d7, 0x000000fb, 863 0x0000007c, 0x000000e3, 0x0000 865 0x0000007c, 0x000000e3, 0x00000039, 0x00000082, 864 0x0000009b, 0x0000002f, 0x0000 866 0x0000009b, 0x0000002f, 0x000000ff, 0x00000087, 865 0x00000034, 0x0000008e, 0x0000 867 0x00000034, 0x0000008e, 0x00000043, 0x00000044, 866 0x000000c4, 0x000000de, 0x0000 868 0x000000c4, 0x000000de, 0x000000e9, 0x000000cb, 867 0x00000054, 0x0000007b, 0x0000 869 0x00000054, 0x0000007b, 0x00000094, 0x00000032, 868 0x000000a6, 0x000000c2, 0x0000 870 0x000000a6, 0x000000c2, 0x00000023, 0x0000003d, 869 0x000000ee, 0x0000004c, 0x0000 871 0x000000ee, 0x0000004c, 0x00000095, 0x0000000b, 870 0x00000042, 0x000000fa, 0x0000 872 0x00000042, 0x000000fa, 0x000000c3, 0x0000004e, 871 0x00000008, 0x0000002e, 0x0000 873 0x00000008, 0x0000002e, 0x000000a1, 0x00000066, 872 0x00000028, 0x000000d9, 0x0000 874 0x00000028, 0x000000d9, 0x00000024, 0x000000b2, 873 0x00000076, 0x0000005b, 0x0000 875 0x00000076, 0x0000005b, 0x000000a2, 0x00000049, 874 0x0000006d, 0x0000008b, 0x0000 876 0x0000006d, 0x0000008b, 0x000000d1, 0x00000025, 875 0x00000072, 0x000000f8, 0x0000 877 0x00000072, 0x000000f8, 0x000000f6, 0x00000064, 876 0x00000086, 0x00000068, 0x0000 878 0x00000086, 0x00000068, 0x00000098, 0x00000016, 877 0x000000d4, 0x000000a4, 0x0000 879 0x000000d4, 0x000000a4, 0x0000005c, 0x000000cc, 878 0x0000005d, 0x00000065, 0x0000 880 0x0000005d, 0x00000065, 0x000000b6, 0x00000092, 879 0x0000006c, 0x00000070, 0x0000 881 0x0000006c, 0x00000070, 0x00000048, 0x00000050, 880 0x000000fd, 0x000000ed, 0x0000 882 0x000000fd, 0x000000ed, 0x000000b9, 0x000000da, 881 0x0000005e, 0x00000015, 0x0000 883 0x0000005e, 0x00000015, 0x00000046, 0x00000057, 882 0x000000a7, 0x0000008d, 0x0000 884 0x000000a7, 0x0000008d, 0x0000009d, 0x00000084, 883 0x00000090, 0x000000d8, 0x0000 885 0x00000090, 0x000000d8, 0x000000ab, 0x00000000, 884 0x0000008c, 0x000000bc, 0x0000 886 0x0000008c, 0x000000bc, 0x000000d3, 0x0000000a, 885 0x000000f7, 0x000000e4, 0x0000 887 0x000000f7, 0x000000e4, 0x00000058, 0x00000005, 886 0x000000b8, 0x000000b3, 0x0000 888 0x000000b8, 0x000000b3, 0x00000045, 0x00000006, 887 0x000000d0, 0x0000002c, 0x0000 889 0x000000d0, 0x0000002c, 0x0000001e, 0x0000008f, 888 0x000000ca, 0x0000003f, 0x0000 890 0x000000ca, 0x0000003f, 0x0000000f, 0x00000002, 889 0x000000c1, 0x000000af, 0x0000 891 0x000000c1, 0x000000af, 0x000000bd, 0x00000003, 890 0x00000001, 0x00000013, 0x0000 892 0x00000001, 0x00000013, 0x0000008a, 0x0000006b, 891 0x0000003a, 0x00000091, 0x0000 893 0x0000003a, 0x00000091, 0x00000011, 0x00000041, 892 0x0000004f, 0x00000067, 0x0000 894 0x0000004f, 0x00000067, 0x000000dc, 0x000000ea, 893 0x00000097, 0x000000f2, 0x0000 895 0x00000097, 0x000000f2, 0x000000cf, 0x000000ce, 894 0x000000f0, 0x000000b4, 0x0000 896 0x000000f0, 0x000000b4, 0x000000e6, 0x00000073, 895 0x00000096, 0x000000ac, 0x0000 897 0x00000096, 0x000000ac, 0x00000074, 0x00000022, 896 0x000000e7, 0x000000ad, 0x0000 898 0x000000e7, 0x000000ad, 0x00000035, 0x00000085, 897 0x000000e2, 0x000000f9, 0x0000 899 0x000000e2, 0x000000f9, 0x00000037, 0x000000e8, 898 0x0000001c, 0x00000075, 0x0000 900 0x0000001c, 0x00000075, 0x000000df, 0x0000006e, 899 0x00000047, 0x000000f1, 0x0000 901 0x00000047, 0x000000f1, 0x0000001a, 0x00000071, 900 0x0000001d, 0x00000029, 0x0000 902 0x0000001d, 0x00000029, 0x000000c5, 0x00000089, 901 0x0000006f, 0x000000b7, 0x0000 903 0x0000006f, 0x000000b7, 0x00000062, 0x0000000e, 902 0x000000aa, 0x00000018, 0x0000 904 0x000000aa, 0x00000018, 0x000000be, 0x0000001b, 903 0x000000fc, 0x00000056, 0x0000 905 0x000000fc, 0x00000056, 0x0000003e, 0x0000004b, 904 0x000000c6, 0x000000d2, 0x0000 906 0x000000c6, 0x000000d2, 0x00000079, 0x00000020, 905 0x0000009a, 0x000000db, 0x0000 907 0x0000009a, 0x000000db, 0x000000c0, 0x000000fe, 906 0x00000078, 0x000000cd, 0x0000 908 0x00000078, 0x000000cd, 0x0000005a, 0x000000f4, 907 0x0000001f, 0x000000dd, 0x0000 909 0x0000001f, 0x000000dd, 0x000000a8, 0x00000033, 908 0x00000088, 0x00000007, 0x0000 910 0x00000088, 0x00000007, 0x000000c7, 0x00000031, 909 0x000000b1, 0x00000012, 0x0000 911 0x000000b1, 0x00000012, 0x00000010, 0x00000059, 910 0x00000027, 0x00000080, 0x0000 912 0x00000027, 0x00000080, 0x000000ec, 0x0000005f, 911 0x00000060, 0x00000051, 0x0000 913 0x00000060, 0x00000051, 0x0000007f, 0x000000a9, 912 0x00000019, 0x000000b5, 0x0000 914 0x00000019, 0x000000b5, 0x0000004a, 0x0000000d, 913 0x0000002d, 0x000000e5, 0x0000 915 0x0000002d, 0x000000e5, 0x0000007a, 0x0000009f, 914 0x00000093, 0x000000c9, 0x0000 916 0x00000093, 0x000000c9, 0x0000009c, 0x000000ef, 915 0x000000a0, 0x000000e0, 0x0000 917 0x000000a0, 0x000000e0, 0x0000003b, 0x0000004d, 916 0x000000ae, 0x0000002a, 0x0000 918 0x000000ae, 0x0000002a, 0x000000f5, 0x000000b0, 917 0x000000c8, 0x000000eb, 0x0000 919 0x000000c8, 0x000000eb, 0x000000bb, 0x0000003c, 918 0x00000083, 0x00000053, 0x0000 920 0x00000083, 0x00000053, 0x00000099, 0x00000061, 919 0x00000017, 0x0000002b, 0x0000 921 0x00000017, 0x0000002b, 0x00000004, 0x0000007e, 920 0x000000ba, 0x00000077, 0x0000 922 0x000000ba, 0x00000077, 0x000000d6, 0x00000026, 921 0x000000e1, 0x00000069, 0x0000 923 0x000000e1, 0x00000069, 0x00000014, 0x00000063, 922 0x00000055, 0x00000021, 0x0000 924 0x00000055, 0x00000021, 0x0000000c, 0x0000007d, 923 }, { 925 }, { 924 0x00005200, 0x00000900, 0x0000 926 0x00005200, 0x00000900, 0x00006a00, 0x0000d500, 925 0x00003000, 0x00003600, 0x0000 927 0x00003000, 0x00003600, 0x0000a500, 0x00003800, 926 0x0000bf00, 0x00004000, 0x0000 928 0x0000bf00, 0x00004000, 0x0000a300, 0x00009e00, 927 0x00008100, 0x0000f300, 0x0000 929 0x00008100, 0x0000f300, 0x0000d700, 0x0000fb00, 928 0x00007c00, 0x0000e300, 0x0000 930 0x00007c00, 0x0000e300, 0x00003900, 0x00008200, 929 0x00009b00, 0x00002f00, 0x0000 931 0x00009b00, 0x00002f00, 0x0000ff00, 0x00008700, 930 0x00003400, 0x00008e00, 0x0000 932 0x00003400, 0x00008e00, 0x00004300, 0x00004400, 931 0x0000c400, 0x0000de00, 0x0000 933 0x0000c400, 0x0000de00, 0x0000e900, 0x0000cb00, 932 0x00005400, 0x00007b00, 0x0000 934 0x00005400, 0x00007b00, 0x00009400, 0x00003200, 933 0x0000a600, 0x0000c200, 0x0000 935 0x0000a600, 0x0000c200, 0x00002300, 0x00003d00, 934 0x0000ee00, 0x00004c00, 0x0000 936 0x0000ee00, 0x00004c00, 0x00009500, 0x00000b00, 935 0x00004200, 0x0000fa00, 0x0000 937 0x00004200, 0x0000fa00, 0x0000c300, 0x00004e00, 936 0x00000800, 0x00002e00, 0x0000 938 0x00000800, 0x00002e00, 0x0000a100, 0x00006600, 937 0x00002800, 0x0000d900, 0x0000 939 0x00002800, 0x0000d900, 0x00002400, 0x0000b200, 938 0x00007600, 0x00005b00, 0x0000 940 0x00007600, 0x00005b00, 0x0000a200, 0x00004900, 939 0x00006d00, 0x00008b00, 0x0000 941 0x00006d00, 0x00008b00, 0x0000d100, 0x00002500, 940 0x00007200, 0x0000f800, 0x0000 942 0x00007200, 0x0000f800, 0x0000f600, 0x00006400, 941 0x00008600, 0x00006800, 0x0000 943 0x00008600, 0x00006800, 0x00009800, 0x00001600, 942 0x0000d400, 0x0000a400, 0x0000 944 0x0000d400, 0x0000a400, 0x00005c00, 0x0000cc00, 943 0x00005d00, 0x00006500, 0x0000 945 0x00005d00, 0x00006500, 0x0000b600, 0x00009200, 944 0x00006c00, 0x00007000, 0x0000 946 0x00006c00, 0x00007000, 0x00004800, 0x00005000, 945 0x0000fd00, 0x0000ed00, 0x0000 947 0x0000fd00, 0x0000ed00, 0x0000b900, 0x0000da00, 946 0x00005e00, 0x00001500, 0x0000 948 0x00005e00, 0x00001500, 0x00004600, 0x00005700, 947 0x0000a700, 0x00008d00, 0x0000 949 0x0000a700, 0x00008d00, 0x00009d00, 0x00008400, 948 0x00009000, 0x0000d800, 0x0000 950 0x00009000, 0x0000d800, 0x0000ab00, 0x00000000, 949 0x00008c00, 0x0000bc00, 0x0000 951 0x00008c00, 0x0000bc00, 0x0000d300, 0x00000a00, 950 0x0000f700, 0x0000e400, 0x0000 952 0x0000f700, 0x0000e400, 0x00005800, 0x00000500, 951 0x0000b800, 0x0000b300, 0x0000 953 0x0000b800, 0x0000b300, 0x00004500, 0x00000600, 952 0x0000d000, 0x00002c00, 0x0000 954 0x0000d000, 0x00002c00, 0x00001e00, 0x00008f00, 953 0x0000ca00, 0x00003f00, 0x0000 955 0x0000ca00, 0x00003f00, 0x00000f00, 0x00000200, 954 0x0000c100, 0x0000af00, 0x0000 956 0x0000c100, 0x0000af00, 0x0000bd00, 0x00000300, 955 0x00000100, 0x00001300, 0x0000 957 0x00000100, 0x00001300, 0x00008a00, 0x00006b00, 956 0x00003a00, 0x00009100, 0x0000 958 0x00003a00, 0x00009100, 0x00001100, 0x00004100, 957 0x00004f00, 0x00006700, 0x0000 959 0x00004f00, 0x00006700, 0x0000dc00, 0x0000ea00, 958 0x00009700, 0x0000f200, 0x0000 960 0x00009700, 0x0000f200, 0x0000cf00, 0x0000ce00, 959 0x0000f000, 0x0000b400, 0x0000 961 0x0000f000, 0x0000b400, 0x0000e600, 0x00007300, 960 0x00009600, 0x0000ac00, 0x0000 962 0x00009600, 0x0000ac00, 0x00007400, 0x00002200, 961 0x0000e700, 0x0000ad00, 0x0000 963 0x0000e700, 0x0000ad00, 0x00003500, 0x00008500, 962 0x0000e200, 0x0000f900, 0x0000 964 0x0000e200, 0x0000f900, 0x00003700, 0x0000e800, 963 0x00001c00, 0x00007500, 0x0000 965 0x00001c00, 0x00007500, 0x0000df00, 0x00006e00, 964 0x00004700, 0x0000f100, 0x0000 966 0x00004700, 0x0000f100, 0x00001a00, 0x00007100, 965 0x00001d00, 0x00002900, 0x0000 967 0x00001d00, 0x00002900, 0x0000c500, 0x00008900, 966 0x00006f00, 0x0000b700, 0x0000 968 0x00006f00, 0x0000b700, 0x00006200, 0x00000e00, 967 0x0000aa00, 0x00001800, 0x0000 969 0x0000aa00, 0x00001800, 0x0000be00, 0x00001b00, 968 0x0000fc00, 0x00005600, 0x0000 970 0x0000fc00, 0x00005600, 0x00003e00, 0x00004b00, 969 0x0000c600, 0x0000d200, 0x0000 971 0x0000c600, 0x0000d200, 0x00007900, 0x00002000, 970 0x00009a00, 0x0000db00, 0x0000 972 0x00009a00, 0x0000db00, 0x0000c000, 0x0000fe00, 971 0x00007800, 0x0000cd00, 0x0000 973 0x00007800, 0x0000cd00, 0x00005a00, 0x0000f400, 972 0x00001f00, 0x0000dd00, 0x0000 974 0x00001f00, 0x0000dd00, 0x0000a800, 0x00003300, 973 0x00008800, 0x00000700, 0x0000 975 0x00008800, 0x00000700, 0x0000c700, 0x00003100, 974 0x0000b100, 0x00001200, 0x0000 976 0x0000b100, 0x00001200, 0x00001000, 0x00005900, 975 0x00002700, 0x00008000, 0x0000 977 0x00002700, 0x00008000, 0x0000ec00, 0x00005f00, 976 0x00006000, 0x00005100, 0x0000 978 0x00006000, 0x00005100, 0x00007f00, 0x0000a900, 977 0x00001900, 0x0000b500, 0x0000 979 0x00001900, 0x0000b500, 0x00004a00, 0x00000d00, 978 0x00002d00, 0x0000e500, 0x0000 980 0x00002d00, 0x0000e500, 0x00007a00, 0x00009f00, 979 0x00009300, 0x0000c900, 0x0000 981 0x00009300, 0x0000c900, 0x00009c00, 0x0000ef00, 980 0x0000a000, 0x0000e000, 0x0000 982 0x0000a000, 0x0000e000, 0x00003b00, 0x00004d00, 981 0x0000ae00, 0x00002a00, 0x0000 983 0x0000ae00, 0x00002a00, 0x0000f500, 0x0000b000, 982 0x0000c800, 0x0000eb00, 0x0000 984 0x0000c800, 0x0000eb00, 0x0000bb00, 0x00003c00, 983 0x00008300, 0x00005300, 0x0000 985 0x00008300, 0x00005300, 0x00009900, 0x00006100, 984 0x00001700, 0x00002b00, 0x0000 986 0x00001700, 0x00002b00, 0x00000400, 0x00007e00, 985 0x0000ba00, 0x00007700, 0x0000 987 0x0000ba00, 0x00007700, 0x0000d600, 0x00002600, 986 0x0000e100, 0x00006900, 0x0000 988 0x0000e100, 0x00006900, 0x00001400, 0x00006300, 987 0x00005500, 0x00002100, 0x0000 989 0x00005500, 0x00002100, 0x00000c00, 0x00007d00, 988 }, { 990 }, { 989 0x00520000, 0x00090000, 0x006a 991 0x00520000, 0x00090000, 0x006a0000, 0x00d50000, 990 0x00300000, 0x00360000, 0x00a5 992 0x00300000, 0x00360000, 0x00a50000, 0x00380000, 991 0x00bf0000, 0x00400000, 0x00a3 993 0x00bf0000, 0x00400000, 0x00a30000, 0x009e0000, 992 0x00810000, 0x00f30000, 0x00d7 994 0x00810000, 0x00f30000, 0x00d70000, 0x00fb0000, 993 0x007c0000, 0x00e30000, 0x0039 995 0x007c0000, 0x00e30000, 0x00390000, 0x00820000, 994 0x009b0000, 0x002f0000, 0x00ff 996 0x009b0000, 0x002f0000, 0x00ff0000, 0x00870000, 995 0x00340000, 0x008e0000, 0x0043 997 0x00340000, 0x008e0000, 0x00430000, 0x00440000, 996 0x00c40000, 0x00de0000, 0x00e9 998 0x00c40000, 0x00de0000, 0x00e90000, 0x00cb0000, 997 0x00540000, 0x007b0000, 0x0094 999 0x00540000, 0x007b0000, 0x00940000, 0x00320000, 998 0x00a60000, 0x00c20000, 0x0023 1000 0x00a60000, 0x00c20000, 0x00230000, 0x003d0000, 999 0x00ee0000, 0x004c0000, 0x0095 1001 0x00ee0000, 0x004c0000, 0x00950000, 0x000b0000, 1000 0x00420000, 0x00fa0000, 0x00c 1002 0x00420000, 0x00fa0000, 0x00c30000, 0x004e0000, 1001 0x00080000, 0x002e0000, 0x00a 1003 0x00080000, 0x002e0000, 0x00a10000, 0x00660000, 1002 0x00280000, 0x00d90000, 0x002 1004 0x00280000, 0x00d90000, 0x00240000, 0x00b20000, 1003 0x00760000, 0x005b0000, 0x00a 1005 0x00760000, 0x005b0000, 0x00a20000, 0x00490000, 1004 0x006d0000, 0x008b0000, 0x00d 1006 0x006d0000, 0x008b0000, 0x00d10000, 0x00250000, 1005 0x00720000, 0x00f80000, 0x00f 1007 0x00720000, 0x00f80000, 0x00f60000, 0x00640000, 1006 0x00860000, 0x00680000, 0x009 1008 0x00860000, 0x00680000, 0x00980000, 0x00160000, 1007 0x00d40000, 0x00a40000, 0x005 1009 0x00d40000, 0x00a40000, 0x005c0000, 0x00cc0000, 1008 0x005d0000, 0x00650000, 0x00b 1010 0x005d0000, 0x00650000, 0x00b60000, 0x00920000, 1009 0x006c0000, 0x00700000, 0x004 1011 0x006c0000, 0x00700000, 0x00480000, 0x00500000, 1010 0x00fd0000, 0x00ed0000, 0x00b 1012 0x00fd0000, 0x00ed0000, 0x00b90000, 0x00da0000, 1011 0x005e0000, 0x00150000, 0x004 1013 0x005e0000, 0x00150000, 0x00460000, 0x00570000, 1012 0x00a70000, 0x008d0000, 0x009 1014 0x00a70000, 0x008d0000, 0x009d0000, 0x00840000, 1013 0x00900000, 0x00d80000, 0x00a 1015 0x00900000, 0x00d80000, 0x00ab0000, 0x00000000, 1014 0x008c0000, 0x00bc0000, 0x00d 1016 0x008c0000, 0x00bc0000, 0x00d30000, 0x000a0000, 1015 0x00f70000, 0x00e40000, 0x005 1017 0x00f70000, 0x00e40000, 0x00580000, 0x00050000, 1016 0x00b80000, 0x00b30000, 0x004 1018 0x00b80000, 0x00b30000, 0x00450000, 0x00060000, 1017 0x00d00000, 0x002c0000, 0x001 1019 0x00d00000, 0x002c0000, 0x001e0000, 0x008f0000, 1018 0x00ca0000, 0x003f0000, 0x000 1020 0x00ca0000, 0x003f0000, 0x000f0000, 0x00020000, 1019 0x00c10000, 0x00af0000, 0x00b 1021 0x00c10000, 0x00af0000, 0x00bd0000, 0x00030000, 1020 0x00010000, 0x00130000, 0x008 1022 0x00010000, 0x00130000, 0x008a0000, 0x006b0000, 1021 0x003a0000, 0x00910000, 0x001 1023 0x003a0000, 0x00910000, 0x00110000, 0x00410000, 1022 0x004f0000, 0x00670000, 0x00d 1024 0x004f0000, 0x00670000, 0x00dc0000, 0x00ea0000, 1023 0x00970000, 0x00f20000, 0x00c 1025 0x00970000, 0x00f20000, 0x00cf0000, 0x00ce0000, 1024 0x00f00000, 0x00b40000, 0x00e 1026 0x00f00000, 0x00b40000, 0x00e60000, 0x00730000, 1025 0x00960000, 0x00ac0000, 0x007 1027 0x00960000, 0x00ac0000, 0x00740000, 0x00220000, 1026 0x00e70000, 0x00ad0000, 0x003 1028 0x00e70000, 0x00ad0000, 0x00350000, 0x00850000, 1027 0x00e20000, 0x00f90000, 0x003 1029 0x00e20000, 0x00f90000, 0x00370000, 0x00e80000, 1028 0x001c0000, 0x00750000, 0x00d 1030 0x001c0000, 0x00750000, 0x00df0000, 0x006e0000, 1029 0x00470000, 0x00f10000, 0x001 1031 0x00470000, 0x00f10000, 0x001a0000, 0x00710000, 1030 0x001d0000, 0x00290000, 0x00c 1032 0x001d0000, 0x00290000, 0x00c50000, 0x00890000, 1031 0x006f0000, 0x00b70000, 0x006 1033 0x006f0000, 0x00b70000, 0x00620000, 0x000e0000, 1032 0x00aa0000, 0x00180000, 0x00b 1034 0x00aa0000, 0x00180000, 0x00be0000, 0x001b0000, 1033 0x00fc0000, 0x00560000, 0x003 1035 0x00fc0000, 0x00560000, 0x003e0000, 0x004b0000, 1034 0x00c60000, 0x00d20000, 0x007 1036 0x00c60000, 0x00d20000, 0x00790000, 0x00200000, 1035 0x009a0000, 0x00db0000, 0x00c 1037 0x009a0000, 0x00db0000, 0x00c00000, 0x00fe0000, 1036 0x00780000, 0x00cd0000, 0x005 1038 0x00780000, 0x00cd0000, 0x005a0000, 0x00f40000, 1037 0x001f0000, 0x00dd0000, 0x00a 1039 0x001f0000, 0x00dd0000, 0x00a80000, 0x00330000, 1038 0x00880000, 0x00070000, 0x00c 1040 0x00880000, 0x00070000, 0x00c70000, 0x00310000, 1039 0x00b10000, 0x00120000, 0x001 1041 0x00b10000, 0x00120000, 0x00100000, 0x00590000, 1040 0x00270000, 0x00800000, 0x00e 1042 0x00270000, 0x00800000, 0x00ec0000, 0x005f0000, 1041 0x00600000, 0x00510000, 0x007 1043 0x00600000, 0x00510000, 0x007f0000, 0x00a90000, 1042 0x00190000, 0x00b50000, 0x004 1044 0x00190000, 0x00b50000, 0x004a0000, 0x000d0000, 1043 0x002d0000, 0x00e50000, 0x007 1045 0x002d0000, 0x00e50000, 0x007a0000, 0x009f0000, 1044 0x00930000, 0x00c90000, 0x009 1046 0x00930000, 0x00c90000, 0x009c0000, 0x00ef0000, 1045 0x00a00000, 0x00e00000, 0x003 1047 0x00a00000, 0x00e00000, 0x003b0000, 0x004d0000, 1046 0x00ae0000, 0x002a0000, 0x00f 1048 0x00ae0000, 0x002a0000, 0x00f50000, 0x00b00000, 1047 0x00c80000, 0x00eb0000, 0x00b 1049 0x00c80000, 0x00eb0000, 0x00bb0000, 0x003c0000, 1048 0x00830000, 0x00530000, 0x009 1050 0x00830000, 0x00530000, 0x00990000, 0x00610000, 1049 0x00170000, 0x002b0000, 0x000 1051 0x00170000, 0x002b0000, 0x00040000, 0x007e0000, 1050 0x00ba0000, 0x00770000, 0x00d 1052 0x00ba0000, 0x00770000, 0x00d60000, 0x00260000, 1051 0x00e10000, 0x00690000, 0x001 1053 0x00e10000, 0x00690000, 0x00140000, 0x00630000, 1052 0x00550000, 0x00210000, 0x000 1054 0x00550000, 0x00210000, 0x000c0000, 0x007d0000, 1053 }, { 1055 }, { 1054 0x52000000, 0x09000000, 0x6a0 1056 0x52000000, 0x09000000, 0x6a000000, 0xd5000000, 1055 0x30000000, 0x36000000, 0xa50 1057 0x30000000, 0x36000000, 0xa5000000, 0x38000000, 1056 0xbf000000, 0x40000000, 0xa30 1058 0xbf000000, 0x40000000, 0xa3000000, 0x9e000000, 1057 0x81000000, 0xf3000000, 0xd70 1059 0x81000000, 0xf3000000, 0xd7000000, 0xfb000000, 1058 0x7c000000, 0xe3000000, 0x390 1060 0x7c000000, 0xe3000000, 0x39000000, 0x82000000, 1059 0x9b000000, 0x2f000000, 0xff0 1061 0x9b000000, 0x2f000000, 0xff000000, 0x87000000, 1060 0x34000000, 0x8e000000, 0x430 1062 0x34000000, 0x8e000000, 0x43000000, 0x44000000, 1061 0xc4000000, 0xde000000, 0xe90 1063 0xc4000000, 0xde000000, 0xe9000000, 0xcb000000, 1062 0x54000000, 0x7b000000, 0x940 1064 0x54000000, 0x7b000000, 0x94000000, 0x32000000, 1063 0xa6000000, 0xc2000000, 0x230 1065 0xa6000000, 0xc2000000, 0x23000000, 0x3d000000, 1064 0xee000000, 0x4c000000, 0x950 1066 0xee000000, 0x4c000000, 0x95000000, 0x0b000000, 1065 0x42000000, 0xfa000000, 0xc30 1067 0x42000000, 0xfa000000, 0xc3000000, 0x4e000000, 1066 0x08000000, 0x2e000000, 0xa10 1068 0x08000000, 0x2e000000, 0xa1000000, 0x66000000, 1067 0x28000000, 0xd9000000, 0x240 1069 0x28000000, 0xd9000000, 0x24000000, 0xb2000000, 1068 0x76000000, 0x5b000000, 0xa20 1070 0x76000000, 0x5b000000, 0xa2000000, 0x49000000, 1069 0x6d000000, 0x8b000000, 0xd10 1071 0x6d000000, 0x8b000000, 0xd1000000, 0x25000000, 1070 0x72000000, 0xf8000000, 0xf60 1072 0x72000000, 0xf8000000, 0xf6000000, 0x64000000, 1071 0x86000000, 0x68000000, 0x980 1073 0x86000000, 0x68000000, 0x98000000, 0x16000000, 1072 0xd4000000, 0xa4000000, 0x5c0 1074 0xd4000000, 0xa4000000, 0x5c000000, 0xcc000000, 1073 0x5d000000, 0x65000000, 0xb60 1075 0x5d000000, 0x65000000, 0xb6000000, 0x92000000, 1074 0x6c000000, 0x70000000, 0x480 1076 0x6c000000, 0x70000000, 0x48000000, 0x50000000, 1075 0xfd000000, 0xed000000, 0xb90 1077 0xfd000000, 0xed000000, 0xb9000000, 0xda000000, 1076 0x5e000000, 0x15000000, 0x460 1078 0x5e000000, 0x15000000, 0x46000000, 0x57000000, 1077 0xa7000000, 0x8d000000, 0x9d0 1079 0xa7000000, 0x8d000000, 0x9d000000, 0x84000000, 1078 0x90000000, 0xd8000000, 0xab0 1080 0x90000000, 0xd8000000, 0xab000000, 0x00000000, 1079 0x8c000000, 0xbc000000, 0xd30 1081 0x8c000000, 0xbc000000, 0xd3000000, 0x0a000000, 1080 0xf7000000, 0xe4000000, 0x580 1082 0xf7000000, 0xe4000000, 0x58000000, 0x05000000, 1081 0xb8000000, 0xb3000000, 0x450 1083 0xb8000000, 0xb3000000, 0x45000000, 0x06000000, 1082 0xd0000000, 0x2c000000, 0x1e0 1084 0xd0000000, 0x2c000000, 0x1e000000, 0x8f000000, 1083 0xca000000, 0x3f000000, 0x0f0 1085 0xca000000, 0x3f000000, 0x0f000000, 0x02000000, 1084 0xc1000000, 0xaf000000, 0xbd0 1086 0xc1000000, 0xaf000000, 0xbd000000, 0x03000000, 1085 0x01000000, 0x13000000, 0x8a0 1087 0x01000000, 0x13000000, 0x8a000000, 0x6b000000, 1086 0x3a000000, 0x91000000, 0x110 1088 0x3a000000, 0x91000000, 0x11000000, 0x41000000, 1087 0x4f000000, 0x67000000, 0xdc0 1089 0x4f000000, 0x67000000, 0xdc000000, 0xea000000, 1088 0x97000000, 0xf2000000, 0xcf0 1090 0x97000000, 0xf2000000, 0xcf000000, 0xce000000, 1089 0xf0000000, 0xb4000000, 0xe60 1091 0xf0000000, 0xb4000000, 0xe6000000, 0x73000000, 1090 0x96000000, 0xac000000, 0x740 1092 0x96000000, 0xac000000, 0x74000000, 0x22000000, 1091 0xe7000000, 0xad000000, 0x350 1093 0xe7000000, 0xad000000, 0x35000000, 0x85000000, 1092 0xe2000000, 0xf9000000, 0x370 1094 0xe2000000, 0xf9000000, 0x37000000, 0xe8000000, 1093 0x1c000000, 0x75000000, 0xdf0 1095 0x1c000000, 0x75000000, 0xdf000000, 0x6e000000, 1094 0x47000000, 0xf1000000, 0x1a0 1096 0x47000000, 0xf1000000, 0x1a000000, 0x71000000, 1095 0x1d000000, 0x29000000, 0xc50 1097 0x1d000000, 0x29000000, 0xc5000000, 0x89000000, 1096 0x6f000000, 0xb7000000, 0x620 1098 0x6f000000, 0xb7000000, 0x62000000, 0x0e000000, 1097 0xaa000000, 0x18000000, 0xbe0 1099 0xaa000000, 0x18000000, 0xbe000000, 0x1b000000, 1098 0xfc000000, 0x56000000, 0x3e0 1100 0xfc000000, 0x56000000, 0x3e000000, 0x4b000000, 1099 0xc6000000, 0xd2000000, 0x790 1101 0xc6000000, 0xd2000000, 0x79000000, 0x20000000, 1100 0x9a000000, 0xdb000000, 0xc00 1102 0x9a000000, 0xdb000000, 0xc0000000, 0xfe000000, 1101 0x78000000, 0xcd000000, 0x5a0 1103 0x78000000, 0xcd000000, 0x5a000000, 0xf4000000, 1102 0x1f000000, 0xdd000000, 0xa80 1104 0x1f000000, 0xdd000000, 0xa8000000, 0x33000000, 1103 0x88000000, 0x07000000, 0xc70 1105 0x88000000, 0x07000000, 0xc7000000, 0x31000000, 1104 0xb1000000, 0x12000000, 0x100 1106 0xb1000000, 0x12000000, 0x10000000, 0x59000000, 1105 0x27000000, 0x80000000, 0xec0 1107 0x27000000, 0x80000000, 0xec000000, 0x5f000000, 1106 0x60000000, 0x51000000, 0x7f0 1108 0x60000000, 0x51000000, 0x7f000000, 0xa9000000, 1107 0x19000000, 0xb5000000, 0x4a0 1109 0x19000000, 0xb5000000, 0x4a000000, 0x0d000000, 1108 0x2d000000, 0xe5000000, 0x7a0 1110 0x2d000000, 0xe5000000, 0x7a000000, 0x9f000000, 1109 0x93000000, 0xc9000000, 0x9c0 1111 0x93000000, 0xc9000000, 0x9c000000, 0xef000000, 1110 0xa0000000, 0xe0000000, 0x3b0 1112 0xa0000000, 0xe0000000, 0x3b000000, 0x4d000000, 1111 0xae000000, 0x2a000000, 0xf50 1113 0xae000000, 0x2a000000, 0xf5000000, 0xb0000000, 1112 0xc8000000, 0xeb000000, 0xbb0 1114 0xc8000000, 0xeb000000, 0xbb000000, 0x3c000000, 1113 0x83000000, 0x53000000, 0x990 1115 0x83000000, 0x53000000, 0x99000000, 0x61000000, 1114 0x17000000, 0x2b000000, 0x040 1116 0x17000000, 0x2b000000, 0x04000000, 0x7e000000, 1115 0xba000000, 0x77000000, 0xd60 1117 0xba000000, 0x77000000, 0xd6000000, 0x26000000, 1116 0xe1000000, 0x69000000, 0x140 1118 0xe1000000, 0x69000000, 0x14000000, 0x63000000, 1117 0x55000000, 0x21000000, 0x0c0 1119 0x55000000, 0x21000000, 0x0c000000, 0x7d000000, 1118 } 1120 } 1119 }; 1121 }; 1120 1122 1121 EXPORT_SYMBOL_GPL(crypto_ft_tab); 1123 EXPORT_SYMBOL_GPL(crypto_ft_tab); >> 1124 EXPORT_SYMBOL_GPL(crypto_fl_tab); 1122 EXPORT_SYMBOL_GPL(crypto_it_tab); 1125 EXPORT_SYMBOL_GPL(crypto_it_tab); >> 1126 EXPORT_SYMBOL_GPL(crypto_il_tab); >> 1127 >> 1128 /* initialise the key schedule from the user supplied key */ >> 1129 >> 1130 #define star_x(x) (((x) & 0x7f7f7f7f) << 1) ^ ((((x) & 0x80808080) >> 7) * 0x1b) >> 1131 >> 1132 #define imix_col(y, x) do { \ >> 1133 u = star_x(x); \ >> 1134 v = star_x(u); \ >> 1135 w = star_x(v); \ >> 1136 t = w ^ (x); \ >> 1137 (y) = u ^ v ^ w; \ >> 1138 (y) ^= ror32(u ^ t, 8) ^ \ >> 1139 ror32(v ^ t, 16) ^ \ >> 1140 ror32(t, 24); \ >> 1141 } while (0) >> 1142 >> 1143 #define ls_box(x) \ >> 1144 crypto_fl_tab[0][byte(x, 0)] ^ \ >> 1145 crypto_fl_tab[1][byte(x, 1)] ^ \ >> 1146 crypto_fl_tab[2][byte(x, 2)] ^ \ >> 1147 crypto_fl_tab[3][byte(x, 3)] >> 1148 >> 1149 #define loop4(i) do { \ >> 1150 t = ror32(t, 8); \ >> 1151 t = ls_box(t) ^ rco_tab[i]; \ >> 1152 t ^= ctx->key_enc[4 * i]; \ >> 1153 ctx->key_enc[4 * i + 4] = t; \ >> 1154 t ^= ctx->key_enc[4 * i + 1]; \ >> 1155 ctx->key_enc[4 * i + 5] = t; \ >> 1156 t ^= ctx->key_enc[4 * i + 2]; \ >> 1157 ctx->key_enc[4 * i + 6] = t; \ >> 1158 t ^= ctx->key_enc[4 * i + 3]; \ >> 1159 ctx->key_enc[4 * i + 7] = t; \ >> 1160 } while (0) >> 1161 >> 1162 #define loop6(i) do { \ >> 1163 t = ror32(t, 8); \ >> 1164 t = ls_box(t) ^ rco_tab[i]; \ >> 1165 t ^= ctx->key_enc[6 * i]; \ >> 1166 ctx->key_enc[6 * i + 6] = t; \ >> 1167 t ^= ctx->key_enc[6 * i + 1]; \ >> 1168 ctx->key_enc[6 * i + 7] = t; \ >> 1169 t ^= ctx->key_enc[6 * i + 2]; \ >> 1170 ctx->key_enc[6 * i + 8] = t; \ >> 1171 t ^= ctx->key_enc[6 * i + 3]; \ >> 1172 ctx->key_enc[6 * i + 9] = t; \ >> 1173 t ^= ctx->key_enc[6 * i + 4]; \ >> 1174 ctx->key_enc[6 * i + 10] = t; \ >> 1175 t ^= ctx->key_enc[6 * i + 5]; \ >> 1176 ctx->key_enc[6 * i + 11] = t; \ >> 1177 } while (0) >> 1178 >> 1179 #define loop8tophalf(i) do { \ >> 1180 t = ror32(t, 8); \ >> 1181 t = ls_box(t) ^ rco_tab[i]; \ >> 1182 t ^= ctx->key_enc[8 * i]; \ >> 1183 ctx->key_enc[8 * i + 8] = t; \ >> 1184 t ^= ctx->key_enc[8 * i + 1]; \ >> 1185 ctx->key_enc[8 * i + 9] = t; \ >> 1186 t ^= ctx->key_enc[8 * i + 2]; \ >> 1187 ctx->key_enc[8 * i + 10] = t; \ >> 1188 t ^= ctx->key_enc[8 * i + 3]; \ >> 1189 ctx->key_enc[8 * i + 11] = t; \ >> 1190 } while (0) >> 1191 >> 1192 #define loop8(i) do { \ >> 1193 loop8tophalf(i); \ >> 1194 t = ctx->key_enc[8 * i + 4] ^ ls_box(t); \ >> 1195 ctx->key_enc[8 * i + 12] = t; \ >> 1196 t ^= ctx->key_enc[8 * i + 5]; \ >> 1197 ctx->key_enc[8 * i + 13] = t; \ >> 1198 t ^= ctx->key_enc[8 * i + 6]; \ >> 1199 ctx->key_enc[8 * i + 14] = t; \ >> 1200 t ^= ctx->key_enc[8 * i + 7]; \ >> 1201 ctx->key_enc[8 * i + 15] = t; \ >> 1202 } while (0) >> 1203 >> 1204 /** >> 1205 * crypto_aes_expand_key - Expands the AES key as described in FIPS-197 >> 1206 * @ctx: The location where the computed key will be stored. >> 1207 * @in_key: The supplied key. >> 1208 * @key_len: The length of the supplied key. >> 1209 * >> 1210 * Returns 0 on success. The function fails only if an invalid key size (or >> 1211 * pointer) is supplied. >> 1212 * The expanded key size is 240 bytes (max of 14 rounds with a unique 16 bytes >> 1213 * key schedule plus a 16 bytes key which is used before the first round). >> 1214 * The decryption key is prepared for the "Equivalent Inverse Cipher" as >> 1215 * described in FIPS-197. The first slot (16 bytes) of each key (enc or dec) is >> 1216 * for the initial combination, the second slot for the first round and so on. >> 1217 */ >> 1218 int crypto_aes_expand_key(struct crypto_aes_ctx *ctx, const u8 *in_key, >> 1219 unsigned int key_len) >> 1220 { >> 1221 u32 i, t, u, v, w, j; >> 1222 >> 1223 if (key_len != AES_KEYSIZE_128 && key_len != AES_KEYSIZE_192 && >> 1224 key_len != AES_KEYSIZE_256) >> 1225 return -EINVAL; >> 1226 >> 1227 ctx->key_length = key_len; >> 1228 >> 1229 ctx->key_enc[0] = get_unaligned_le32(in_key); >> 1230 ctx->key_enc[1] = get_unaligned_le32(in_key + 4); >> 1231 ctx->key_enc[2] = get_unaligned_le32(in_key + 8); >> 1232 ctx->key_enc[3] = get_unaligned_le32(in_key + 12); >> 1233 >> 1234 ctx->key_dec[key_len + 24] = ctx->key_enc[0]; >> 1235 ctx->key_dec[key_len + 25] = ctx->key_enc[1]; >> 1236 ctx->key_dec[key_len + 26] = ctx->key_enc[2]; >> 1237 ctx->key_dec[key_len + 27] = ctx->key_enc[3]; >> 1238 >> 1239 switch (key_len) { >> 1240 case AES_KEYSIZE_128: >> 1241 t = ctx->key_enc[3]; >> 1242 for (i = 0; i < 10; ++i) >> 1243 loop4(i); >> 1244 break; >> 1245 >> 1246 case AES_KEYSIZE_192: >> 1247 ctx->key_enc[4] = get_unaligned_le32(in_key + 16); >> 1248 t = ctx->key_enc[5] = get_unaligned_le32(in_key + 20); >> 1249 for (i = 0; i < 8; ++i) >> 1250 loop6(i); >> 1251 break; >> 1252 >> 1253 case AES_KEYSIZE_256: >> 1254 ctx->key_enc[4] = get_unaligned_le32(in_key + 16); >> 1255 ctx->key_enc[5] = get_unaligned_le32(in_key + 20); >> 1256 ctx->key_enc[6] = get_unaligned_le32(in_key + 24); >> 1257 t = ctx->key_enc[7] = get_unaligned_le32(in_key + 28); >> 1258 for (i = 0; i < 6; ++i) >> 1259 loop8(i); >> 1260 loop8tophalf(i); >> 1261 break; >> 1262 } >> 1263 >> 1264 ctx->key_dec[0] = ctx->key_enc[key_len + 24]; >> 1265 ctx->key_dec[1] = ctx->key_enc[key_len + 25]; >> 1266 ctx->key_dec[2] = ctx->key_enc[key_len + 26]; >> 1267 ctx->key_dec[3] = ctx->key_enc[key_len + 27]; >> 1268 >> 1269 for (i = 4; i < key_len + 24; ++i) { >> 1270 j = key_len + 24 - (i & ~3) + (i & 3); >> 1271 imix_col(ctx->key_dec[j], ctx->key_enc[i]); >> 1272 } >> 1273 return 0; >> 1274 } >> 1275 EXPORT_SYMBOL_GPL(crypto_aes_expand_key); 1123 1276 1124 /** 1277 /** 1125 * crypto_aes_set_key - Set the AES key. 1278 * crypto_aes_set_key - Set the AES key. 1126 * @tfm: The %crypto_tfm that is used 1279 * @tfm: The %crypto_tfm that is used in the context. 1127 * @in_key: The input key. 1280 * @in_key: The input key. 1128 * @key_len: The size of the key. 1281 * @key_len: The size of the key. 1129 * 1282 * 1130 * This function uses aes_expand_key() to exp !! 1283 * Returns 0 on success, on failure the %CRYPTO_TFM_RES_BAD_KEY_LEN flag in tfm 1131 * _must_ be the private data embedded in @tf !! 1284 * is set. The function uses crypto_aes_expand_key() to expand the key. 1132 * crypto_tfm_ctx(). !! 1285 * &crypto_aes_ctx _must_ be the private data embedded in @tfm which is 1133 * !! 1286 * retrieved with crypto_tfm_ctx(). 1134 * Return: 0 on success; -EINVAL on failure ( << 1135 */ 1287 */ 1136 int crypto_aes_set_key(struct crypto_tfm *tfm 1288 int crypto_aes_set_key(struct crypto_tfm *tfm, const u8 *in_key, 1137 unsigned int key_len) 1289 unsigned int key_len) 1138 { 1290 { 1139 struct crypto_aes_ctx *ctx = crypto_t 1291 struct crypto_aes_ctx *ctx = crypto_tfm_ctx(tfm); >> 1292 u32 *flags = &tfm->crt_flags; >> 1293 int ret; >> 1294 >> 1295 ret = crypto_aes_expand_key(ctx, in_key, key_len); >> 1296 if (!ret) >> 1297 return 0; 1140 1298 1141 return aes_expandkey(ctx, in_key, key !! 1299 *flags |= CRYPTO_TFM_RES_BAD_KEY_LEN; >> 1300 return -EINVAL; 1142 } 1301 } 1143 EXPORT_SYMBOL_GPL(crypto_aes_set_key); 1302 EXPORT_SYMBOL_GPL(crypto_aes_set_key); 1144 1303 1145 /* encrypt a block of text */ 1304 /* encrypt a block of text */ 1146 1305 1147 #define f_rn(bo, bi, n, k) do { 1306 #define f_rn(bo, bi, n, k) do { \ 1148 bo[n] = crypto_ft_tab[0][byte(bi[n], 1307 bo[n] = crypto_ft_tab[0][byte(bi[n], 0)] ^ \ 1149 crypto_ft_tab[1][byte(bi[(n + 1308 crypto_ft_tab[1][byte(bi[(n + 1) & 3], 1)] ^ \ 1150 crypto_ft_tab[2][byte(bi[(n + 1309 crypto_ft_tab[2][byte(bi[(n + 2) & 3], 2)] ^ \ 1151 crypto_ft_tab[3][byte(bi[(n + 1310 crypto_ft_tab[3][byte(bi[(n + 3) & 3], 3)] ^ *(k + n); \ 1152 } while (0) 1311 } while (0) 1153 1312 1154 #define f_nround(bo, bi, k) do {\ 1313 #define f_nround(bo, bi, k) do {\ 1155 f_rn(bo, bi, 0, k); \ 1314 f_rn(bo, bi, 0, k); \ 1156 f_rn(bo, bi, 1, k); \ 1315 f_rn(bo, bi, 1, k); \ 1157 f_rn(bo, bi, 2, k); \ 1316 f_rn(bo, bi, 2, k); \ 1158 f_rn(bo, bi, 3, k); \ 1317 f_rn(bo, bi, 3, k); \ 1159 k += 4; \ 1318 k += 4; \ 1160 } while (0) 1319 } while (0) 1161 1320 1162 #define f_rl(bo, bi, n, k) do { 1321 #define f_rl(bo, bi, n, k) do { \ 1163 bo[n] = crypto_fl_tab[0][byte(bi[n], 1322 bo[n] = crypto_fl_tab[0][byte(bi[n], 0)] ^ \ 1164 crypto_fl_tab[1][byte(bi[(n + 1323 crypto_fl_tab[1][byte(bi[(n + 1) & 3], 1)] ^ \ 1165 crypto_fl_tab[2][byte(bi[(n + 1324 crypto_fl_tab[2][byte(bi[(n + 2) & 3], 2)] ^ \ 1166 crypto_fl_tab[3][byte(bi[(n + 1325 crypto_fl_tab[3][byte(bi[(n + 3) & 3], 3)] ^ *(k + n); \ 1167 } while (0) 1326 } while (0) 1168 1327 1169 #define f_lround(bo, bi, k) do {\ 1328 #define f_lround(bo, bi, k) do {\ 1170 f_rl(bo, bi, 0, k); \ 1329 f_rl(bo, bi, 0, k); \ 1171 f_rl(bo, bi, 1, k); \ 1330 f_rl(bo, bi, 1, k); \ 1172 f_rl(bo, bi, 2, k); \ 1331 f_rl(bo, bi, 2, k); \ 1173 f_rl(bo, bi, 3, k); \ 1332 f_rl(bo, bi, 3, k); \ 1174 } while (0) 1333 } while (0) 1175 1334 1176 static void crypto_aes_encrypt(struct crypto_ !! 1335 static void aes_encrypt(struct crypto_tfm *tfm, u8 *out, const u8 *in) 1177 { 1336 { 1178 const struct crypto_aes_ctx *ctx = cr 1337 const struct crypto_aes_ctx *ctx = crypto_tfm_ctx(tfm); 1179 u32 b0[4], b1[4]; 1338 u32 b0[4], b1[4]; 1180 const u32 *kp = ctx->key_enc + 4; 1339 const u32 *kp = ctx->key_enc + 4; 1181 const int key_len = ctx->key_length; 1340 const int key_len = ctx->key_length; 1182 1341 1183 b0[0] = ctx->key_enc[0] ^ get_unalign 1342 b0[0] = ctx->key_enc[0] ^ get_unaligned_le32(in); 1184 b0[1] = ctx->key_enc[1] ^ get_unalign 1343 b0[1] = ctx->key_enc[1] ^ get_unaligned_le32(in + 4); 1185 b0[2] = ctx->key_enc[2] ^ get_unalign 1344 b0[2] = ctx->key_enc[2] ^ get_unaligned_le32(in + 8); 1186 b0[3] = ctx->key_enc[3] ^ get_unalign 1345 b0[3] = ctx->key_enc[3] ^ get_unaligned_le32(in + 12); 1187 1346 1188 if (key_len > 24) { 1347 if (key_len > 24) { 1189 f_nround(b1, b0, kp); 1348 f_nround(b1, b0, kp); 1190 f_nround(b0, b1, kp); 1349 f_nround(b0, b1, kp); 1191 } 1350 } 1192 1351 1193 if (key_len > 16) { 1352 if (key_len > 16) { 1194 f_nround(b1, b0, kp); 1353 f_nround(b1, b0, kp); 1195 f_nround(b0, b1, kp); 1354 f_nround(b0, b1, kp); 1196 } 1355 } 1197 1356 1198 f_nround(b1, b0, kp); 1357 f_nround(b1, b0, kp); 1199 f_nround(b0, b1, kp); 1358 f_nround(b0, b1, kp); 1200 f_nround(b1, b0, kp); 1359 f_nround(b1, b0, kp); 1201 f_nround(b0, b1, kp); 1360 f_nround(b0, b1, kp); 1202 f_nround(b1, b0, kp); 1361 f_nround(b1, b0, kp); 1203 f_nround(b0, b1, kp); 1362 f_nround(b0, b1, kp); 1204 f_nround(b1, b0, kp); 1363 f_nround(b1, b0, kp); 1205 f_nround(b0, b1, kp); 1364 f_nround(b0, b1, kp); 1206 f_nround(b1, b0, kp); 1365 f_nround(b1, b0, kp); 1207 f_lround(b0, b1, kp); 1366 f_lround(b0, b1, kp); 1208 1367 1209 put_unaligned_le32(b0[0], out); 1368 put_unaligned_le32(b0[0], out); 1210 put_unaligned_le32(b0[1], out + 4); 1369 put_unaligned_le32(b0[1], out + 4); 1211 put_unaligned_le32(b0[2], out + 8); 1370 put_unaligned_le32(b0[2], out + 8); 1212 put_unaligned_le32(b0[3], out + 12); 1371 put_unaligned_le32(b0[3], out + 12); 1213 } 1372 } 1214 1373 1215 /* decrypt a block of text */ 1374 /* decrypt a block of text */ 1216 1375 1217 #define i_rn(bo, bi, n, k) do { 1376 #define i_rn(bo, bi, n, k) do { \ 1218 bo[n] = crypto_it_tab[0][byte(bi[n], 1377 bo[n] = crypto_it_tab[0][byte(bi[n], 0)] ^ \ 1219 crypto_it_tab[1][byte(bi[(n + 1378 crypto_it_tab[1][byte(bi[(n + 3) & 3], 1)] ^ \ 1220 crypto_it_tab[2][byte(bi[(n + 1379 crypto_it_tab[2][byte(bi[(n + 2) & 3], 2)] ^ \ 1221 crypto_it_tab[3][byte(bi[(n + 1380 crypto_it_tab[3][byte(bi[(n + 1) & 3], 3)] ^ *(k + n); \ 1222 } while (0) 1381 } while (0) 1223 1382 1224 #define i_nround(bo, bi, k) do {\ 1383 #define i_nround(bo, bi, k) do {\ 1225 i_rn(bo, bi, 0, k); \ 1384 i_rn(bo, bi, 0, k); \ 1226 i_rn(bo, bi, 1, k); \ 1385 i_rn(bo, bi, 1, k); \ 1227 i_rn(bo, bi, 2, k); \ 1386 i_rn(bo, bi, 2, k); \ 1228 i_rn(bo, bi, 3, k); \ 1387 i_rn(bo, bi, 3, k); \ 1229 k += 4; \ 1388 k += 4; \ 1230 } while (0) 1389 } while (0) 1231 1390 1232 #define i_rl(bo, bi, n, k) do { 1391 #define i_rl(bo, bi, n, k) do { \ 1233 bo[n] = crypto_il_tab[0][byte(bi[n], 1392 bo[n] = crypto_il_tab[0][byte(bi[n], 0)] ^ \ 1234 crypto_il_tab[1][byte(bi[(n + 3) & 3] 1393 crypto_il_tab[1][byte(bi[(n + 3) & 3], 1)] ^ \ 1235 crypto_il_tab[2][byte(bi[(n + 2) & 3] 1394 crypto_il_tab[2][byte(bi[(n + 2) & 3], 2)] ^ \ 1236 crypto_il_tab[3][byte(bi[(n + 1) & 3] 1395 crypto_il_tab[3][byte(bi[(n + 1) & 3], 3)] ^ *(k + n); \ 1237 } while (0) 1396 } while (0) 1238 1397 1239 #define i_lround(bo, bi, k) do {\ 1398 #define i_lround(bo, bi, k) do {\ 1240 i_rl(bo, bi, 0, k); \ 1399 i_rl(bo, bi, 0, k); \ 1241 i_rl(bo, bi, 1, k); \ 1400 i_rl(bo, bi, 1, k); \ 1242 i_rl(bo, bi, 2, k); \ 1401 i_rl(bo, bi, 2, k); \ 1243 i_rl(bo, bi, 3, k); \ 1402 i_rl(bo, bi, 3, k); \ 1244 } while (0) 1403 } while (0) 1245 1404 1246 static void crypto_aes_decrypt(struct crypto_ !! 1405 static void aes_decrypt(struct crypto_tfm *tfm, u8 *out, const u8 *in) 1247 { 1406 { 1248 const struct crypto_aes_ctx *ctx = cr 1407 const struct crypto_aes_ctx *ctx = crypto_tfm_ctx(tfm); 1249 u32 b0[4], b1[4]; 1408 u32 b0[4], b1[4]; 1250 const int key_len = ctx->key_length; 1409 const int key_len = ctx->key_length; 1251 const u32 *kp = ctx->key_dec + 4; 1410 const u32 *kp = ctx->key_dec + 4; 1252 1411 1253 b0[0] = ctx->key_dec[0] ^ get_unalign 1412 b0[0] = ctx->key_dec[0] ^ get_unaligned_le32(in); 1254 b0[1] = ctx->key_dec[1] ^ get_unalign 1413 b0[1] = ctx->key_dec[1] ^ get_unaligned_le32(in + 4); 1255 b0[2] = ctx->key_dec[2] ^ get_unalign 1414 b0[2] = ctx->key_dec[2] ^ get_unaligned_le32(in + 8); 1256 b0[3] = ctx->key_dec[3] ^ get_unalign 1415 b0[3] = ctx->key_dec[3] ^ get_unaligned_le32(in + 12); 1257 1416 1258 if (key_len > 24) { 1417 if (key_len > 24) { 1259 i_nround(b1, b0, kp); 1418 i_nround(b1, b0, kp); 1260 i_nround(b0, b1, kp); 1419 i_nround(b0, b1, kp); 1261 } 1420 } 1262 1421 1263 if (key_len > 16) { 1422 if (key_len > 16) { 1264 i_nround(b1, b0, kp); 1423 i_nround(b1, b0, kp); 1265 i_nround(b0, b1, kp); 1424 i_nround(b0, b1, kp); 1266 } 1425 } 1267 1426 1268 i_nround(b1, b0, kp); 1427 i_nround(b1, b0, kp); 1269 i_nround(b0, b1, kp); 1428 i_nround(b0, b1, kp); 1270 i_nround(b1, b0, kp); 1429 i_nround(b1, b0, kp); 1271 i_nround(b0, b1, kp); 1430 i_nround(b0, b1, kp); 1272 i_nround(b1, b0, kp); 1431 i_nround(b1, b0, kp); 1273 i_nround(b0, b1, kp); 1432 i_nround(b0, b1, kp); 1274 i_nround(b1, b0, kp); 1433 i_nround(b1, b0, kp); 1275 i_nround(b0, b1, kp); 1434 i_nround(b0, b1, kp); 1276 i_nround(b1, b0, kp); 1435 i_nround(b1, b0, kp); 1277 i_lround(b0, b1, kp); 1436 i_lround(b0, b1, kp); 1278 1437 1279 put_unaligned_le32(b0[0], out); 1438 put_unaligned_le32(b0[0], out); 1280 put_unaligned_le32(b0[1], out + 4); 1439 put_unaligned_le32(b0[1], out + 4); 1281 put_unaligned_le32(b0[2], out + 8); 1440 put_unaligned_le32(b0[2], out + 8); 1282 put_unaligned_le32(b0[3], out + 12); 1441 put_unaligned_le32(b0[3], out + 12); 1283 } 1442 } 1284 1443 1285 static struct crypto_alg aes_alg = { 1444 static struct crypto_alg aes_alg = { 1286 .cra_name = "aes" 1445 .cra_name = "aes", 1287 .cra_driver_name = "aes- 1446 .cra_driver_name = "aes-generic", 1288 .cra_priority = 100, 1447 .cra_priority = 100, 1289 .cra_flags = CRYPT 1448 .cra_flags = CRYPTO_ALG_TYPE_CIPHER, 1290 .cra_blocksize = AES_B 1449 .cra_blocksize = AES_BLOCK_SIZE, 1291 .cra_ctxsize = sizeo 1450 .cra_ctxsize = sizeof(struct crypto_aes_ctx), 1292 .cra_module = THIS_ 1451 .cra_module = THIS_MODULE, 1293 .cra_u = { 1452 .cra_u = { 1294 .cipher = { 1453 .cipher = { 1295 .cia_min_keysize 1454 .cia_min_keysize = AES_MIN_KEY_SIZE, 1296 .cia_max_keysize 1455 .cia_max_keysize = AES_MAX_KEY_SIZE, 1297 .cia_setkey 1456 .cia_setkey = crypto_aes_set_key, 1298 .cia_encrypt !! 1457 .cia_encrypt = aes_encrypt, 1299 .cia_decrypt !! 1458 .cia_decrypt = aes_decrypt 1300 } 1459 } 1301 } 1460 } 1302 }; 1461 }; 1303 1462 1304 static int __init aes_init(void) 1463 static int __init aes_init(void) 1305 { 1464 { 1306 return crypto_register_alg(&aes_alg); 1465 return crypto_register_alg(&aes_alg); 1307 } 1466 } 1308 1467 1309 static void __exit aes_fini(void) 1468 static void __exit aes_fini(void) 1310 { 1469 { 1311 crypto_unregister_alg(&aes_alg); 1470 crypto_unregister_alg(&aes_alg); 1312 } 1471 } 1313 1472 1314 subsys_initcall(aes_init); !! 1473 module_init(aes_init); 1315 module_exit(aes_fini); 1474 module_exit(aes_fini); 1316 1475 1317 MODULE_DESCRIPTION("Rijndael (AES) Cipher Alg 1476 MODULE_DESCRIPTION("Rijndael (AES) Cipher Algorithm"); 1318 MODULE_LICENSE("Dual BSD/GPL"); 1477 MODULE_LICENSE("Dual BSD/GPL"); 1319 MODULE_ALIAS_CRYPTO("aes"); 1478 MODULE_ALIAS_CRYPTO("aes"); 1320 MODULE_ALIAS_CRYPTO("aes-generic"); 1479 MODULE_ALIAS_CRYPTO("aes-generic"); 1321 1480
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.