forked from Princeton-Cabernet/p4-projects
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLUT.h
16 lines (10 loc) · 23.2 KB
/
LUT.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/*
Match-action table entries for Lookup Table-based AES encryption.
Copyright (C) 2019 Xiaoqi Chen, Princeton University
Use of this source code is governed by GNU AGPLv3 license that can be found in the LICENSE file.
*/
#define GEN_LUT0(FN) {0:FN(0xc66363a5); 1:FN(0xf87c7c84); 2:FN(0xee777799); 3:FN(0xf67b7b8d); 4:FN(0xfff2f20d); 5:FN(0xd66b6bbd); 6:FN(0xde6f6fb1); 7:FN(0x91c5c554); 8:FN(0x60303050); 9:FN(0x2010103); 10:FN(0xce6767a9); 11:FN(0x562b2b7d); 12:FN(0xe7fefe19); 13:FN(0xb5d7d762); 14:FN(0x4dababe6); 15:FN(0xec76769a); 16:FN(0x8fcaca45); 17:FN(0x1f82829d); 18:FN(0x89c9c940); 19:FN(0xfa7d7d87); 20:FN(0xeffafa15); 21:FN(0xb25959eb); 22:FN(0x8e4747c9); 23:FN(0xfbf0f00b); 24:FN(0x41adadec); 25:FN(0xb3d4d467); 26:FN(0x5fa2a2fd); 27:FN(0x45afafea); 28:FN(0x239c9cbf); 29:FN(0x53a4a4f7); 30:FN(0xe4727296); 31:FN(0x9bc0c05b); 32:FN(0x75b7b7c2); 33:FN(0xe1fdfd1c); 34:FN(0x3d9393ae); 35:FN(0x4c26266a); 36:FN(0x6c36365a); 37:FN(0x7e3f3f41); 38:FN(0xf5f7f702); 39:FN(0x83cccc4f); 40:FN(0x6834345c); 41:FN(0x51a5a5f4); 42:FN(0xd1e5e534); 43:FN(0xf9f1f108); 44:FN(0xe2717193); 45:FN(0xabd8d873); 46:FN(0x62313153); 47:FN(0x2a15153f); 48:FN(0x804040c); 49:FN(0x95c7c752); 50:FN(0x46232365); 51:FN(0x9dc3c35e); 52:FN(0x30181828); 53:FN(0x379696a1); 54:FN(0xa05050f); 55:FN(0x2f9a9ab5); 56:FN(0xe070709); 57:FN(0x24121236); 58:FN(0x1b80809b); 59:FN(0xdfe2e23d); 60:FN(0xcdebeb26); 61:FN(0x4e272769); 62:FN(0x7fb2b2cd); 63:FN(0xea75759f); 64:FN(0x1209091b); 65:FN(0x1d83839e); 66:FN(0x582c2c74); 67:FN(0x341a1a2e); 68:FN(0x361b1b2d); 69:FN(0xdc6e6eb2); 70:FN(0xb45a5aee); 71:FN(0x5ba0a0fb); 72:FN(0xa45252f6); 73:FN(0x763b3b4d); 74:FN(0xb7d6d661); 75:FN(0x7db3b3ce); 76:FN(0x5229297b); 77:FN(0xdde3e33e); 78:FN(0x5e2f2f71); 79:FN(0x13848497); 80:FN(0xa65353f5); 81:FN(0xb9d1d168); 82:FN(0x0); 83:FN(0xc1eded2c); 84:FN(0x40202060); 85:FN(0xe3fcfc1f); 86:FN(0x79b1b1c8); 87:FN(0xb65b5bed); 88:FN(0xd46a6abe); 89:FN(0x8dcbcb46); 90:FN(0x67bebed9); 91:FN(0x7239394b); 92:FN(0x944a4ade); 93:FN(0x984c4cd4); 94:FN(0xb05858e8); 95:FN(0x85cfcf4a); 96:FN(0xbbd0d06b); 97:FN(0xc5efef2a); 98:FN(0x4faaaae5); 99:FN(0xedfbfb16); 100:FN(0x864343c5); 101:FN(0x9a4d4dd7); 102:FN(0x66333355); 103:FN(0x11858594); 104:FN(0x8a4545cf); 105:FN(0xe9f9f910); 106:FN(0x4020206); 107:FN(0xfe7f7f81); 108:FN(0xa05050f0); 109:FN(0x783c3c44); 110:FN(0x259f9fba); 111:FN(0x4ba8a8e3); 112:FN(0xa25151f3); 113:FN(0x5da3a3fe); 114:FN(0x804040c0); 115:FN(0x58f8f8a); 116:FN(0x3f9292ad); 117:FN(0x219d9dbc); 118:FN(0x70383848); 119:FN(0xf1f5f504); 120:FN(0x63bcbcdf); 121:FN(0x77b6b6c1); 122:FN(0xafdada75); 123:FN(0x42212163); 124:FN(0x20101030); 125:FN(0xe5ffff1a); 126:FN(0xfdf3f30e); 127:FN(0xbfd2d26d); 128:FN(0x81cdcd4c); 129:FN(0x180c0c14); 130:FN(0x26131335); 131:FN(0xc3ecec2f); 132:FN(0xbe5f5fe1); 133:FN(0x359797a2); 134:FN(0x884444cc); 135:FN(0x2e171739); 136:FN(0x93c4c457); 137:FN(0x55a7a7f2); 138:FN(0xfc7e7e82); 139:FN(0x7a3d3d47); 140:FN(0xc86464ac); 141:FN(0xba5d5de7); 142:FN(0x3219192b); 143:FN(0xe6737395); 144:FN(0xc06060a0); 145:FN(0x19818198); 146:FN(0x9e4f4fd1); 147:FN(0xa3dcdc7f); 148:FN(0x44222266); 149:FN(0x542a2a7e); 150:FN(0x3b9090ab); 151:FN(0xb888883); 152:FN(0x8c4646ca); 153:FN(0xc7eeee29); 154:FN(0x6bb8b8d3); 155:FN(0x2814143c); 156:FN(0xa7dede79); 157:FN(0xbc5e5ee2); 158:FN(0x160b0b1d); 159:FN(0xaddbdb76); 160:FN(0xdbe0e03b); 161:FN(0x64323256); 162:FN(0x743a3a4e); 163:FN(0x140a0a1e); 164:FN(0x924949db); 165:FN(0xc06060a); 166:FN(0x4824246c); 167:FN(0xb85c5ce4); 168:FN(0x9fc2c25d); 169:FN(0xbdd3d36e); 170:FN(0x43acacef); 171:FN(0xc46262a6); 172:FN(0x399191a8); 173:FN(0x319595a4); 174:FN(0xd3e4e437); 175:FN(0xf279798b); 176:FN(0xd5e7e732); 177:FN(0x8bc8c843); 178:FN(0x6e373759); 179:FN(0xda6d6db7); 180:FN(0x18d8d8c); 181:FN(0xb1d5d564); 182:FN(0x9c4e4ed2); 183:FN(0x49a9a9e0); 184:FN(0xd86c6cb4); 185:FN(0xac5656fa); 186:FN(0xf3f4f407); 187:FN(0xcfeaea25); 188:FN(0xca6565af); 189:FN(0xf47a7a8e); 190:FN(0x47aeaee9); 191:FN(0x10080818); 192:FN(0x6fbabad5); 193:FN(0xf0787888); 194:FN(0x4a25256f); 195:FN(0x5c2e2e72); 196:FN(0x381c1c24); 197:FN(0x57a6a6f1); 198:FN(0x73b4b4c7); 199:FN(0x97c6c651); 200:FN(0xcbe8e823); 201:FN(0xa1dddd7c); 202:FN(0xe874749c); 203:FN(0x3e1f1f21); 204:FN(0x964b4bdd); 205:FN(0x61bdbddc); 206:FN(0xd8b8b86); 207:FN(0xf8a8a85); 208:FN(0xe0707090); 209:FN(0x7c3e3e42); 210:FN(0x71b5b5c4); 211:FN(0xcc6666aa); 212:FN(0x904848d8); 213:FN(0x6030305); 214:FN(0xf7f6f601); 215:FN(0x1c0e0e12); 216:FN(0xc26161a3); 217:FN(0x6a35355f); 218:FN(0xae5757f9); 219:FN(0x69b9b9d0); 220:FN(0x17868691); 221:FN(0x99c1c158); 222:FN(0x3a1d1d27); 223:FN(0x279e9eb9); 224:FN(0xd9e1e138); 225:FN(0xebf8f813); 226:FN(0x2b9898b3); 227:FN(0x22111133); 228:FN(0xd26969bb); 229:FN(0xa9d9d970); 230:FN(0x78e8e89); 231:FN(0x339494a7); 232:FN(0x2d9b9bb6); 233:FN(0x3c1e1e22); 234:FN(0x15878792); 235:FN(0xc9e9e920); 236:FN(0x87cece49); 237:FN(0xaa5555ff); 238:FN(0x50282878); 239:FN(0xa5dfdf7a); 240:FN(0x38c8c8f); 241:FN(0x59a1a1f8); 242:FN(0x9898980); 243:FN(0x1a0d0d17); 244:FN(0x65bfbfda); 245:FN(0xd7e6e631); 246:FN(0x844242c6); 247:FN(0xd06868b8); 248:FN(0x824141c3); 249:FN(0x299999b0); 250:FN(0x5a2d2d77); 251:FN(0x1e0f0f11); 252:FN(0x7bb0b0cb); 253:FN(0xa85454fc); 254:FN(0x6dbbbbd6); 255:FN(0x2c16163a); }
#define GEN_LUT1(FN) {0:FN(0xa5c66363); 1:FN(0x84f87c7c); 2:FN(0x99ee7777); 3:FN(0x8df67b7b); 4:FN(0xdfff2f2); 5:FN(0xbdd66b6b); 6:FN(0xb1de6f6f); 7:FN(0x5491c5c5); 8:FN(0x50603030); 9:FN(0x3020101); 10:FN(0xa9ce6767); 11:FN(0x7d562b2b); 12:FN(0x19e7fefe); 13:FN(0x62b5d7d7); 14:FN(0xe64dabab); 15:FN(0x9aec7676); 16:FN(0x458fcaca); 17:FN(0x9d1f8282); 18:FN(0x4089c9c9); 19:FN(0x87fa7d7d); 20:FN(0x15effafa); 21:FN(0xebb25959); 22:FN(0xc98e4747); 23:FN(0xbfbf0f0); 24:FN(0xec41adad); 25:FN(0x67b3d4d4); 26:FN(0xfd5fa2a2); 27:FN(0xea45afaf); 28:FN(0xbf239c9c); 29:FN(0xf753a4a4); 30:FN(0x96e47272); 31:FN(0x5b9bc0c0); 32:FN(0xc275b7b7); 33:FN(0x1ce1fdfd); 34:FN(0xae3d9393); 35:FN(0x6a4c2626); 36:FN(0x5a6c3636); 37:FN(0x417e3f3f); 38:FN(0x2f5f7f7); 39:FN(0x4f83cccc); 40:FN(0x5c683434); 41:FN(0xf451a5a5); 42:FN(0x34d1e5e5); 43:FN(0x8f9f1f1); 44:FN(0x93e27171); 45:FN(0x73abd8d8); 46:FN(0x53623131); 47:FN(0x3f2a1515); 48:FN(0xc080404); 49:FN(0x5295c7c7); 50:FN(0x65462323); 51:FN(0x5e9dc3c3); 52:FN(0x28301818); 53:FN(0xa1379696); 54:FN(0xf0a0505); 55:FN(0xb52f9a9a); 56:FN(0x90e0707); 57:FN(0x36241212); 58:FN(0x9b1b8080); 59:FN(0x3ddfe2e2); 60:FN(0x26cdebeb); 61:FN(0x694e2727); 62:FN(0xcd7fb2b2); 63:FN(0x9fea7575); 64:FN(0x1b120909); 65:FN(0x9e1d8383); 66:FN(0x74582c2c); 67:FN(0x2e341a1a); 68:FN(0x2d361b1b); 69:FN(0xb2dc6e6e); 70:FN(0xeeb45a5a); 71:FN(0xfb5ba0a0); 72:FN(0xf6a45252); 73:FN(0x4d763b3b); 74:FN(0x61b7d6d6); 75:FN(0xce7db3b3); 76:FN(0x7b522929); 77:FN(0x3edde3e3); 78:FN(0x715e2f2f); 79:FN(0x97138484); 80:FN(0xf5a65353); 81:FN(0x68b9d1d1); 82:FN(0x0); 83:FN(0x2cc1eded); 84:FN(0x60402020); 85:FN(0x1fe3fcfc); 86:FN(0xc879b1b1); 87:FN(0xedb65b5b); 88:FN(0xbed46a6a); 89:FN(0x468dcbcb); 90:FN(0xd967bebe); 91:FN(0x4b723939); 92:FN(0xde944a4a); 93:FN(0xd4984c4c); 94:FN(0xe8b05858); 95:FN(0x4a85cfcf); 96:FN(0x6bbbd0d0); 97:FN(0x2ac5efef); 98:FN(0xe54faaaa); 99:FN(0x16edfbfb); 100:FN(0xc5864343); 101:FN(0xd79a4d4d); 102:FN(0x55663333); 103:FN(0x94118585); 104:FN(0xcf8a4545); 105:FN(0x10e9f9f9); 106:FN(0x6040202); 107:FN(0x81fe7f7f); 108:FN(0xf0a05050); 109:FN(0x44783c3c); 110:FN(0xba259f9f); 111:FN(0xe34ba8a8); 112:FN(0xf3a25151); 113:FN(0xfe5da3a3); 114:FN(0xc0804040); 115:FN(0x8a058f8f); 116:FN(0xad3f9292); 117:FN(0xbc219d9d); 118:FN(0x48703838); 119:FN(0x4f1f5f5); 120:FN(0xdf63bcbc); 121:FN(0xc177b6b6); 122:FN(0x75afdada); 123:FN(0x63422121); 124:FN(0x30201010); 125:FN(0x1ae5ffff); 126:FN(0xefdf3f3); 127:FN(0x6dbfd2d2); 128:FN(0x4c81cdcd); 129:FN(0x14180c0c); 130:FN(0x35261313); 131:FN(0x2fc3ecec); 132:FN(0xe1be5f5f); 133:FN(0xa2359797); 134:FN(0xcc884444); 135:FN(0x392e1717); 136:FN(0x5793c4c4); 137:FN(0xf255a7a7); 138:FN(0x82fc7e7e); 139:FN(0x477a3d3d); 140:FN(0xacc86464); 141:FN(0xe7ba5d5d); 142:FN(0x2b321919); 143:FN(0x95e67373); 144:FN(0xa0c06060); 145:FN(0x98198181); 146:FN(0xd19e4f4f); 147:FN(0x7fa3dcdc); 148:FN(0x66442222); 149:FN(0x7e542a2a); 150:FN(0xab3b9090); 151:FN(0x830b8888); 152:FN(0xca8c4646); 153:FN(0x29c7eeee); 154:FN(0xd36bb8b8); 155:FN(0x3c281414); 156:FN(0x79a7dede); 157:FN(0xe2bc5e5e); 158:FN(0x1d160b0b); 159:FN(0x76addbdb); 160:FN(0x3bdbe0e0); 161:FN(0x56643232); 162:FN(0x4e743a3a); 163:FN(0x1e140a0a); 164:FN(0xdb924949); 165:FN(0xa0c0606); 166:FN(0x6c482424); 167:FN(0xe4b85c5c); 168:FN(0x5d9fc2c2); 169:FN(0x6ebdd3d3); 170:FN(0xef43acac); 171:FN(0xa6c46262); 172:FN(0xa8399191); 173:FN(0xa4319595); 174:FN(0x37d3e4e4); 175:FN(0x8bf27979); 176:FN(0x32d5e7e7); 177:FN(0x438bc8c8); 178:FN(0x596e3737); 179:FN(0xb7da6d6d); 180:FN(0x8c018d8d); 181:FN(0x64b1d5d5); 182:FN(0xd29c4e4e); 183:FN(0xe049a9a9); 184:FN(0xb4d86c6c); 185:FN(0xfaac5656); 186:FN(0x7f3f4f4); 187:FN(0x25cfeaea); 188:FN(0xafca6565); 189:FN(0x8ef47a7a); 190:FN(0xe947aeae); 191:FN(0x18100808); 192:FN(0xd56fbaba); 193:FN(0x88f07878); 194:FN(0x6f4a2525); 195:FN(0x725c2e2e); 196:FN(0x24381c1c); 197:FN(0xf157a6a6); 198:FN(0xc773b4b4); 199:FN(0x5197c6c6); 200:FN(0x23cbe8e8); 201:FN(0x7ca1dddd); 202:FN(0x9ce87474); 203:FN(0x213e1f1f); 204:FN(0xdd964b4b); 205:FN(0xdc61bdbd); 206:FN(0x860d8b8b); 207:FN(0x850f8a8a); 208:FN(0x90e07070); 209:FN(0x427c3e3e); 210:FN(0xc471b5b5); 211:FN(0xaacc6666); 212:FN(0xd8904848); 213:FN(0x5060303); 214:FN(0x1f7f6f6); 215:FN(0x121c0e0e); 216:FN(0xa3c26161); 217:FN(0x5f6a3535); 218:FN(0xf9ae5757); 219:FN(0xd069b9b9); 220:FN(0x91178686); 221:FN(0x5899c1c1); 222:FN(0x273a1d1d); 223:FN(0xb9279e9e); 224:FN(0x38d9e1e1); 225:FN(0x13ebf8f8); 226:FN(0xb32b9898); 227:FN(0x33221111); 228:FN(0xbbd26969); 229:FN(0x70a9d9d9); 230:FN(0x89078e8e); 231:FN(0xa7339494); 232:FN(0xb62d9b9b); 233:FN(0x223c1e1e); 234:FN(0x92158787); 235:FN(0x20c9e9e9); 236:FN(0x4987cece); 237:FN(0xffaa5555); 238:FN(0x78502828); 239:FN(0x7aa5dfdf); 240:FN(0x8f038c8c); 241:FN(0xf859a1a1); 242:FN(0x80098989); 243:FN(0x171a0d0d); 244:FN(0xda65bfbf); 245:FN(0x31d7e6e6); 246:FN(0xc6844242); 247:FN(0xb8d06868); 248:FN(0xc3824141); 249:FN(0xb0299999); 250:FN(0x775a2d2d); 251:FN(0x111e0f0f); 252:FN(0xcb7bb0b0); 253:FN(0xfca85454); 254:FN(0xd66dbbbb); 255:FN(0x3a2c1616); }
#define GEN_LUT2(FN) {0:FN(0x63a5c663); 1:FN(0x7c84f87c); 2:FN(0x7799ee77); 3:FN(0x7b8df67b); 4:FN(0xf20dfff2); 5:FN(0x6bbdd66b); 6:FN(0x6fb1de6f); 7:FN(0xc55491c5); 8:FN(0x30506030); 9:FN(0x1030201); 10:FN(0x67a9ce67); 11:FN(0x2b7d562b); 12:FN(0xfe19e7fe); 13:FN(0xd762b5d7); 14:FN(0xabe64dab); 15:FN(0x769aec76); 16:FN(0xca458fca); 17:FN(0x829d1f82); 18:FN(0xc94089c9); 19:FN(0x7d87fa7d); 20:FN(0xfa15effa); 21:FN(0x59ebb259); 22:FN(0x47c98e47); 23:FN(0xf00bfbf0); 24:FN(0xadec41ad); 25:FN(0xd467b3d4); 26:FN(0xa2fd5fa2); 27:FN(0xafea45af); 28:FN(0x9cbf239c); 29:FN(0xa4f753a4); 30:FN(0x7296e472); 31:FN(0xc05b9bc0); 32:FN(0xb7c275b7); 33:FN(0xfd1ce1fd); 34:FN(0x93ae3d93); 35:FN(0x266a4c26); 36:FN(0x365a6c36); 37:FN(0x3f417e3f); 38:FN(0xf702f5f7); 39:FN(0xcc4f83cc); 40:FN(0x345c6834); 41:FN(0xa5f451a5); 42:FN(0xe534d1e5); 43:FN(0xf108f9f1); 44:FN(0x7193e271); 45:FN(0xd873abd8); 46:FN(0x31536231); 47:FN(0x153f2a15); 48:FN(0x40c0804); 49:FN(0xc75295c7); 50:FN(0x23654623); 51:FN(0xc35e9dc3); 52:FN(0x18283018); 53:FN(0x96a13796); 54:FN(0x50f0a05); 55:FN(0x9ab52f9a); 56:FN(0x7090e07); 57:FN(0x12362412); 58:FN(0x809b1b80); 59:FN(0xe23ddfe2); 60:FN(0xeb26cdeb); 61:FN(0x27694e27); 62:FN(0xb2cd7fb2); 63:FN(0x759fea75); 64:FN(0x91b1209); 65:FN(0x839e1d83); 66:FN(0x2c74582c); 67:FN(0x1a2e341a); 68:FN(0x1b2d361b); 69:FN(0x6eb2dc6e); 70:FN(0x5aeeb45a); 71:FN(0xa0fb5ba0); 72:FN(0x52f6a452); 73:FN(0x3b4d763b); 74:FN(0xd661b7d6); 75:FN(0xb3ce7db3); 76:FN(0x297b5229); 77:FN(0xe33edde3); 78:FN(0x2f715e2f); 79:FN(0x84971384); 80:FN(0x53f5a653); 81:FN(0xd168b9d1); 82:FN(0x0); 83:FN(0xed2cc1ed); 84:FN(0x20604020); 85:FN(0xfc1fe3fc); 86:FN(0xb1c879b1); 87:FN(0x5bedb65b); 88:FN(0x6abed46a); 89:FN(0xcb468dcb); 90:FN(0xbed967be); 91:FN(0x394b7239); 92:FN(0x4ade944a); 93:FN(0x4cd4984c); 94:FN(0x58e8b058); 95:FN(0xcf4a85cf); 96:FN(0xd06bbbd0); 97:FN(0xef2ac5ef); 98:FN(0xaae54faa); 99:FN(0xfb16edfb); 100:FN(0x43c58643); 101:FN(0x4dd79a4d); 102:FN(0x33556633); 103:FN(0x85941185); 104:FN(0x45cf8a45); 105:FN(0xf910e9f9); 106:FN(0x2060402); 107:FN(0x7f81fe7f); 108:FN(0x50f0a050); 109:FN(0x3c44783c); 110:FN(0x9fba259f); 111:FN(0xa8e34ba8); 112:FN(0x51f3a251); 113:FN(0xa3fe5da3); 114:FN(0x40c08040); 115:FN(0x8f8a058f); 116:FN(0x92ad3f92); 117:FN(0x9dbc219d); 118:FN(0x38487038); 119:FN(0xf504f1f5); 120:FN(0xbcdf63bc); 121:FN(0xb6c177b6); 122:FN(0xda75afda); 123:FN(0x21634221); 124:FN(0x10302010); 125:FN(0xff1ae5ff); 126:FN(0xf30efdf3); 127:FN(0xd26dbfd2); 128:FN(0xcd4c81cd); 129:FN(0xc14180c); 130:FN(0x13352613); 131:FN(0xec2fc3ec); 132:FN(0x5fe1be5f); 133:FN(0x97a23597); 134:FN(0x44cc8844); 135:FN(0x17392e17); 136:FN(0xc45793c4); 137:FN(0xa7f255a7); 138:FN(0x7e82fc7e); 139:FN(0x3d477a3d); 140:FN(0x64acc864); 141:FN(0x5de7ba5d); 142:FN(0x192b3219); 143:FN(0x7395e673); 144:FN(0x60a0c060); 145:FN(0x81981981); 146:FN(0x4fd19e4f); 147:FN(0xdc7fa3dc); 148:FN(0x22664422); 149:FN(0x2a7e542a); 150:FN(0x90ab3b90); 151:FN(0x88830b88); 152:FN(0x46ca8c46); 153:FN(0xee29c7ee); 154:FN(0xb8d36bb8); 155:FN(0x143c2814); 156:FN(0xde79a7de); 157:FN(0x5ee2bc5e); 158:FN(0xb1d160b); 159:FN(0xdb76addb); 160:FN(0xe03bdbe0); 161:FN(0x32566432); 162:FN(0x3a4e743a); 163:FN(0xa1e140a); 164:FN(0x49db9249); 165:FN(0x60a0c06); 166:FN(0x246c4824); 167:FN(0x5ce4b85c); 168:FN(0xc25d9fc2); 169:FN(0xd36ebdd3); 170:FN(0xacef43ac); 171:FN(0x62a6c462); 172:FN(0x91a83991); 173:FN(0x95a43195); 174:FN(0xe437d3e4); 175:FN(0x798bf279); 176:FN(0xe732d5e7); 177:FN(0xc8438bc8); 178:FN(0x37596e37); 179:FN(0x6db7da6d); 180:FN(0x8d8c018d); 181:FN(0xd564b1d5); 182:FN(0x4ed29c4e); 183:FN(0xa9e049a9); 184:FN(0x6cb4d86c); 185:FN(0x56faac56); 186:FN(0xf407f3f4); 187:FN(0xea25cfea); 188:FN(0x65afca65); 189:FN(0x7a8ef47a); 190:FN(0xaee947ae); 191:FN(0x8181008); 192:FN(0xbad56fba); 193:FN(0x7888f078); 194:FN(0x256f4a25); 195:FN(0x2e725c2e); 196:FN(0x1c24381c); 197:FN(0xa6f157a6); 198:FN(0xb4c773b4); 199:FN(0xc65197c6); 200:FN(0xe823cbe8); 201:FN(0xdd7ca1dd); 202:FN(0x749ce874); 203:FN(0x1f213e1f); 204:FN(0x4bdd964b); 205:FN(0xbddc61bd); 206:FN(0x8b860d8b); 207:FN(0x8a850f8a); 208:FN(0x7090e070); 209:FN(0x3e427c3e); 210:FN(0xb5c471b5); 211:FN(0x66aacc66); 212:FN(0x48d89048); 213:FN(0x3050603); 214:FN(0xf601f7f6); 215:FN(0xe121c0e); 216:FN(0x61a3c261); 217:FN(0x355f6a35); 218:FN(0x57f9ae57); 219:FN(0xb9d069b9); 220:FN(0x86911786); 221:FN(0xc15899c1); 222:FN(0x1d273a1d); 223:FN(0x9eb9279e); 224:FN(0xe138d9e1); 225:FN(0xf813ebf8); 226:FN(0x98b32b98); 227:FN(0x11332211); 228:FN(0x69bbd269); 229:FN(0xd970a9d9); 230:FN(0x8e89078e); 231:FN(0x94a73394); 232:FN(0x9bb62d9b); 233:FN(0x1e223c1e); 234:FN(0x87921587); 235:FN(0xe920c9e9); 236:FN(0xce4987ce); 237:FN(0x55ffaa55); 238:FN(0x28785028); 239:FN(0xdf7aa5df); 240:FN(0x8c8f038c); 241:FN(0xa1f859a1); 242:FN(0x89800989); 243:FN(0xd171a0d); 244:FN(0xbfda65bf); 245:FN(0xe631d7e6); 246:FN(0x42c68442); 247:FN(0x68b8d068); 248:FN(0x41c38241); 249:FN(0x99b02999); 250:FN(0x2d775a2d); 251:FN(0xf111e0f); 252:FN(0xb0cb7bb0); 253:FN(0x54fca854); 254:FN(0xbbd66dbb); 255:FN(0x163a2c16); }
#define GEN_LUT3(FN) {0:FN(0x6363a5c6); 1:FN(0x7c7c84f8); 2:FN(0x777799ee); 3:FN(0x7b7b8df6); 4:FN(0xf2f20dff); 5:FN(0x6b6bbdd6); 6:FN(0x6f6fb1de); 7:FN(0xc5c55491); 8:FN(0x30305060); 9:FN(0x1010302); 10:FN(0x6767a9ce); 11:FN(0x2b2b7d56); 12:FN(0xfefe19e7); 13:FN(0xd7d762b5); 14:FN(0xababe64d); 15:FN(0x76769aec); 16:FN(0xcaca458f); 17:FN(0x82829d1f); 18:FN(0xc9c94089); 19:FN(0x7d7d87fa); 20:FN(0xfafa15ef); 21:FN(0x5959ebb2); 22:FN(0x4747c98e); 23:FN(0xf0f00bfb); 24:FN(0xadadec41); 25:FN(0xd4d467b3); 26:FN(0xa2a2fd5f); 27:FN(0xafafea45); 28:FN(0x9c9cbf23); 29:FN(0xa4a4f753); 30:FN(0x727296e4); 31:FN(0xc0c05b9b); 32:FN(0xb7b7c275); 33:FN(0xfdfd1ce1); 34:FN(0x9393ae3d); 35:FN(0x26266a4c); 36:FN(0x36365a6c); 37:FN(0x3f3f417e); 38:FN(0xf7f702f5); 39:FN(0xcccc4f83); 40:FN(0x34345c68); 41:FN(0xa5a5f451); 42:FN(0xe5e534d1); 43:FN(0xf1f108f9); 44:FN(0x717193e2); 45:FN(0xd8d873ab); 46:FN(0x31315362); 47:FN(0x15153f2a); 48:FN(0x4040c08); 49:FN(0xc7c75295); 50:FN(0x23236546); 51:FN(0xc3c35e9d); 52:FN(0x18182830); 53:FN(0x9696a137); 54:FN(0x5050f0a); 55:FN(0x9a9ab52f); 56:FN(0x707090e); 57:FN(0x12123624); 58:FN(0x80809b1b); 59:FN(0xe2e23ddf); 60:FN(0xebeb26cd); 61:FN(0x2727694e); 62:FN(0xb2b2cd7f); 63:FN(0x75759fea); 64:FN(0x9091b12); 65:FN(0x83839e1d); 66:FN(0x2c2c7458); 67:FN(0x1a1a2e34); 68:FN(0x1b1b2d36); 69:FN(0x6e6eb2dc); 70:FN(0x5a5aeeb4); 71:FN(0xa0a0fb5b); 72:FN(0x5252f6a4); 73:FN(0x3b3b4d76); 74:FN(0xd6d661b7); 75:FN(0xb3b3ce7d); 76:FN(0x29297b52); 77:FN(0xe3e33edd); 78:FN(0x2f2f715e); 79:FN(0x84849713); 80:FN(0x5353f5a6); 81:FN(0xd1d168b9); 82:FN(0x0); 83:FN(0xeded2cc1); 84:FN(0x20206040); 85:FN(0xfcfc1fe3); 86:FN(0xb1b1c879); 87:FN(0x5b5bedb6); 88:FN(0x6a6abed4); 89:FN(0xcbcb468d); 90:FN(0xbebed967); 91:FN(0x39394b72); 92:FN(0x4a4ade94); 93:FN(0x4c4cd498); 94:FN(0x5858e8b0); 95:FN(0xcfcf4a85); 96:FN(0xd0d06bbb); 97:FN(0xefef2ac5); 98:FN(0xaaaae54f); 99:FN(0xfbfb16ed); 100:FN(0x4343c586); 101:FN(0x4d4dd79a); 102:FN(0x33335566); 103:FN(0x85859411); 104:FN(0x4545cf8a); 105:FN(0xf9f910e9); 106:FN(0x2020604); 107:FN(0x7f7f81fe); 108:FN(0x5050f0a0); 109:FN(0x3c3c4478); 110:FN(0x9f9fba25); 111:FN(0xa8a8e34b); 112:FN(0x5151f3a2); 113:FN(0xa3a3fe5d); 114:FN(0x4040c080); 115:FN(0x8f8f8a05); 116:FN(0x9292ad3f); 117:FN(0x9d9dbc21); 118:FN(0x38384870); 119:FN(0xf5f504f1); 120:FN(0xbcbcdf63); 121:FN(0xb6b6c177); 122:FN(0xdada75af); 123:FN(0x21216342); 124:FN(0x10103020); 125:FN(0xffff1ae5); 126:FN(0xf3f30efd); 127:FN(0xd2d26dbf); 128:FN(0xcdcd4c81); 129:FN(0xc0c1418); 130:FN(0x13133526); 131:FN(0xecec2fc3); 132:FN(0x5f5fe1be); 133:FN(0x9797a235); 134:FN(0x4444cc88); 135:FN(0x1717392e); 136:FN(0xc4c45793); 137:FN(0xa7a7f255); 138:FN(0x7e7e82fc); 139:FN(0x3d3d477a); 140:FN(0x6464acc8); 141:FN(0x5d5de7ba); 142:FN(0x19192b32); 143:FN(0x737395e6); 144:FN(0x6060a0c0); 145:FN(0x81819819); 146:FN(0x4f4fd19e); 147:FN(0xdcdc7fa3); 148:FN(0x22226644); 149:FN(0x2a2a7e54); 150:FN(0x9090ab3b); 151:FN(0x8888830b); 152:FN(0x4646ca8c); 153:FN(0xeeee29c7); 154:FN(0xb8b8d36b); 155:FN(0x14143c28); 156:FN(0xdede79a7); 157:FN(0x5e5ee2bc); 158:FN(0xb0b1d16); 159:FN(0xdbdb76ad); 160:FN(0xe0e03bdb); 161:FN(0x32325664); 162:FN(0x3a3a4e74); 163:FN(0xa0a1e14); 164:FN(0x4949db92); 165:FN(0x6060a0c); 166:FN(0x24246c48); 167:FN(0x5c5ce4b8); 168:FN(0xc2c25d9f); 169:FN(0xd3d36ebd); 170:FN(0xacacef43); 171:FN(0x6262a6c4); 172:FN(0x9191a839); 173:FN(0x9595a431); 174:FN(0xe4e437d3); 175:FN(0x79798bf2); 176:FN(0xe7e732d5); 177:FN(0xc8c8438b); 178:FN(0x3737596e); 179:FN(0x6d6db7da); 180:FN(0x8d8d8c01); 181:FN(0xd5d564b1); 182:FN(0x4e4ed29c); 183:FN(0xa9a9e049); 184:FN(0x6c6cb4d8); 185:FN(0x5656faac); 186:FN(0xf4f407f3); 187:FN(0xeaea25cf); 188:FN(0x6565afca); 189:FN(0x7a7a8ef4); 190:FN(0xaeaee947); 191:FN(0x8081810); 192:FN(0xbabad56f); 193:FN(0x787888f0); 194:FN(0x25256f4a); 195:FN(0x2e2e725c); 196:FN(0x1c1c2438); 197:FN(0xa6a6f157); 198:FN(0xb4b4c773); 199:FN(0xc6c65197); 200:FN(0xe8e823cb); 201:FN(0xdddd7ca1); 202:FN(0x74749ce8); 203:FN(0x1f1f213e); 204:FN(0x4b4bdd96); 205:FN(0xbdbddc61); 206:FN(0x8b8b860d); 207:FN(0x8a8a850f); 208:FN(0x707090e0); 209:FN(0x3e3e427c); 210:FN(0xb5b5c471); 211:FN(0x6666aacc); 212:FN(0x4848d890); 213:FN(0x3030506); 214:FN(0xf6f601f7); 215:FN(0xe0e121c); 216:FN(0x6161a3c2); 217:FN(0x35355f6a); 218:FN(0x5757f9ae); 219:FN(0xb9b9d069); 220:FN(0x86869117); 221:FN(0xc1c15899); 222:FN(0x1d1d273a); 223:FN(0x9e9eb927); 224:FN(0xe1e138d9); 225:FN(0xf8f813eb); 226:FN(0x9898b32b); 227:FN(0x11113322); 228:FN(0x6969bbd2); 229:FN(0xd9d970a9); 230:FN(0x8e8e8907); 231:FN(0x9494a733); 232:FN(0x9b9bb62d); 233:FN(0x1e1e223c); 234:FN(0x87879215); 235:FN(0xe9e920c9); 236:FN(0xcece4987); 237:FN(0x5555ffaa); 238:FN(0x28287850); 239:FN(0xdfdf7aa5); 240:FN(0x8c8c8f03); 241:FN(0xa1a1f859); 242:FN(0x89898009); 243:FN(0xd0d171a); 244:FN(0xbfbfda65); 245:FN(0xe6e631d7); 246:FN(0x4242c684); 247:FN(0x6868b8d0); 248:FN(0x4141c382); 249:FN(0x9999b029); 250:FN(0x2d2d775a); 251:FN(0xf0f111e); 252:FN(0xb0b0cb7b); 253:FN(0x5454fca8); 254:FN(0xbbbbd66d); 255:FN(0x16163a2c); }
#define GEN_LUT_SBOX(FN) {0:FN(0x63); 1:FN(0x7c); 2:FN(0x77); 3:FN(0x7b); 4:FN(0xf2); 5:FN(0x6b); 6:FN(0x6f); 7:FN(0xc5); 8:FN(0x30); 9:FN(0x1); 10:FN(0x67); 11:FN(0x2b); 12:FN(0xfe); 13:FN(0xd7); 14:FN(0xab); 15:FN(0x76); 16:FN(0xca); 17:FN(0x82); 18:FN(0xc9); 19:FN(0x7d); 20:FN(0xfa); 21:FN(0x59); 22:FN(0x47); 23:FN(0xf0); 24:FN(0xad); 25:FN(0xd4); 26:FN(0xa2); 27:FN(0xaf); 28:FN(0x9c); 29:FN(0xa4); 30:FN(0x72); 31:FN(0xc0); 32:FN(0xb7); 33:FN(0xfd); 34:FN(0x93); 35:FN(0x26); 36:FN(0x36); 37:FN(0x3f); 38:FN(0xf7); 39:FN(0xcc); 40:FN(0x34); 41:FN(0xa5); 42:FN(0xe5); 43:FN(0xf1); 44:FN(0x71); 45:FN(0xd8); 46:FN(0x31); 47:FN(0x15); 48:FN(0x4); 49:FN(0xc7); 50:FN(0x23); 51:FN(0xc3); 52:FN(0x18); 53:FN(0x96); 54:FN(0x5); 55:FN(0x9a); 56:FN(0x7); 57:FN(0x12); 58:FN(0x80); 59:FN(0xe2); 60:FN(0xeb); 61:FN(0x27); 62:FN(0xb2); 63:FN(0x75); 64:FN(0x9); 65:FN(0x83); 66:FN(0x2c); 67:FN(0x1a); 68:FN(0x1b); 69:FN(0x6e); 70:FN(0x5a); 71:FN(0xa0); 72:FN(0x52); 73:FN(0x3b); 74:FN(0xd6); 75:FN(0xb3); 76:FN(0x29); 77:FN(0xe3); 78:FN(0x2f); 79:FN(0x84); 80:FN(0x53); 81:FN(0xd1); 82:FN(0x0); 83:FN(0xed); 84:FN(0x20); 85:FN(0xfc); 86:FN(0xb1); 87:FN(0x5b); 88:FN(0x6a); 89:FN(0xcb); 90:FN(0xbe); 91:FN(0x39); 92:FN(0x4a); 93:FN(0x4c); 94:FN(0x58); 95:FN(0xcf); 96:FN(0xd0); 97:FN(0xef); 98:FN(0xaa); 99:FN(0xfb); 100:FN(0x43); 101:FN(0x4d); 102:FN(0x33); 103:FN(0x85); 104:FN(0x45); 105:FN(0xf9); 106:FN(0x2); 107:FN(0x7f); 108:FN(0x50); 109:FN(0x3c); 110:FN(0x9f); 111:FN(0xa8); 112:FN(0x51); 113:FN(0xa3); 114:FN(0x40); 115:FN(0x8f); 116:FN(0x92); 117:FN(0x9d); 118:FN(0x38); 119:FN(0xf5); 120:FN(0xbc); 121:FN(0xb6); 122:FN(0xda); 123:FN(0x21); 124:FN(0x10); 125:FN(0xff); 126:FN(0xf3); 127:FN(0xd2); 128:FN(0xcd); 129:FN(0xc); 130:FN(0x13); 131:FN(0xec); 132:FN(0x5f); 133:FN(0x97); 134:FN(0x44); 135:FN(0x17); 136:FN(0xc4); 137:FN(0xa7); 138:FN(0x7e); 139:FN(0x3d); 140:FN(0x64); 141:FN(0x5d); 142:FN(0x19); 143:FN(0x73); 144:FN(0x60); 145:FN(0x81); 146:FN(0x4f); 147:FN(0xdc); 148:FN(0x22); 149:FN(0x2a); 150:FN(0x90); 151:FN(0x88); 152:FN(0x46); 153:FN(0xee); 154:FN(0xb8); 155:FN(0x14); 156:FN(0xde); 157:FN(0x5e); 158:FN(0xb); 159:FN(0xdb); 160:FN(0xe0); 161:FN(0x32); 162:FN(0x3a); 163:FN(0xa); 164:FN(0x49); 165:FN(0x6); 166:FN(0x24); 167:FN(0x5c); 168:FN(0xc2); 169:FN(0xd3); 170:FN(0xac); 171:FN(0x62); 172:FN(0x91); 173:FN(0x95); 174:FN(0xe4); 175:FN(0x79); 176:FN(0xe7); 177:FN(0xc8); 178:FN(0x37); 179:FN(0x6d); 180:FN(0x8d); 181:FN(0xd5); 182:FN(0x4e); 183:FN(0xa9); 184:FN(0x6c); 185:FN(0x56); 186:FN(0xf4); 187:FN(0xea); 188:FN(0x65); 189:FN(0x7a); 190:FN(0xae); 191:FN(0x8); 192:FN(0xba); 193:FN(0x78); 194:FN(0x25); 195:FN(0x2e); 196:FN(0x1c); 197:FN(0xa6); 198:FN(0xb4); 199:FN(0xc6); 200:FN(0xe8); 201:FN(0xdd); 202:FN(0x74); 203:FN(0x1f); 204:FN(0x4b); 205:FN(0xbd); 206:FN(0x8b); 207:FN(0x8a); 208:FN(0x70); 209:FN(0x3e); 210:FN(0xb5); 211:FN(0x66); 212:FN(0x48); 213:FN(0x3); 214:FN(0xf6); 215:FN(0xe); 216:FN(0x61); 217:FN(0x35); 218:FN(0x57); 219:FN(0xb9); 220:FN(0x86); 221:FN(0xc1); 222:FN(0x1d); 223:FN(0x9e); 224:FN(0xe1); 225:FN(0xf8); 226:FN(0x98); 227:FN(0x11); 228:FN(0x69); 229:FN(0xd9); 230:FN(0x8e); 231:FN(0x94); 232:FN(0x9b); 233:FN(0x1e); 234:FN(0x87); 235:FN(0xe9); 236:FN(0xce); 237:FN(0x55); 238:FN(0x28); 239:FN(0xdf); 240:FN(0x8c); 241:FN(0xa1); 242:FN(0x89); 243:FN(0xd); 244:FN(0xbf); 245:FN(0xe6); 246:FN(0x42); 247:FN(0x68); 248:FN(0x41); 249:FN(0x99); 250:FN(0x2d); 251:FN(0xf); 252:FN(0xb0); 253:FN(0x54); 254:FN(0xbb); 255:FN(0x16); }