]> git.cryptolib.org Git - arm-crypto-lib.git/blob - jh/jh_tables.c
switching to dedicated endian switching function
[arm-crypto-lib.git] / jh / jh_tables.c
1 /* jh_tables.c */
2 /*
3     This file is part of the ARM-Crypto-Lib.
4     Copyright (C) 2006-2010 Daniel Otte (daniel.otte@rub.de)
5
6     This program is free software: you can redistribute it and/or modify
7     it under the terms of the GNU General Public License as published by
8     the Free Software Foundation, either version 3 of the License, or
9     (at your option) any later version.
10
11     This program is distributed in the hope that it will be useful,
12     but WITHOUT ANY WARRANTY; without even the implied warranty of
13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14     GNU General Public License for more details.
15
16     You should have received a copy of the GNU General Public License
17     along with this program.  If not, see <http://www.gnu.org/licenses/>.
18 */
19
20 #include <stdint.h>
21
22 const
23 uint8_t jh_permutation_table[] = {
24         0x00, 0x03, 0x04, 0x07, 0x08, 0x0B, 0x0C, 0x0F, 0x10, 0x13, 0x14, 0x17, 0x18, 0x1B, 0x1C, 0x1F,
25         0x20, 0x23, 0x24, 0x27, 0x28, 0x2B, 0x2C, 0x2F, 0x30, 0x33, 0x34, 0x37, 0x38, 0x3B, 0x3C, 0x3F,
26         0x40, 0x43, 0x44, 0x47, 0x48, 0x4B, 0x4C, 0x4F, 0x50, 0x53, 0x54, 0x57, 0x58, 0x5B, 0x5C, 0x5F,
27         0x60, 0x63, 0x64, 0x67, 0x68, 0x6B, 0x6C, 0x6F, 0x70, 0x73, 0x74, 0x77, 0x78, 0x7B, 0x7C, 0x7F,
28         0x80, 0x83, 0x84, 0x87, 0x88, 0x8B, 0x8C, 0x8F, 0x90, 0x93, 0x94, 0x97, 0x98, 0x9B, 0x9C, 0x9F,
29         0xA0, 0xA3, 0xA4, 0xA7, 0xA8, 0xAB, 0xAC, 0xAF, 0xB0, 0xB3, 0xB4, 0xB7, 0xB8, 0xBB, 0xBC, 0xBF,
30         0xC0, 0xC3, 0xC4, 0xC7, 0xC8, 0xCB, 0xCC, 0xCF, 0xD0, 0xD3, 0xD4, 0xD7, 0xD8, 0xDB, 0xDC, 0xDF,
31         0xE0, 0xE3, 0xE4, 0xE7, 0xE8, 0xEB, 0xEC, 0xEF, 0xF0, 0xF3, 0xF4, 0xF7, 0xF8, 0xFB, 0xFC, 0xFF,
32         0x02, 0x01, 0x06, 0x05, 0x0A, 0x09, 0x0E, 0x0D, 0x12, 0x11, 0x16, 0x15, 0x1A, 0x19, 0x1E, 0x1D,
33         0x22, 0x21, 0x26, 0x25, 0x2A, 0x29, 0x2E, 0x2D, 0x32, 0x31, 0x36, 0x35, 0x3A, 0x39, 0x3E, 0x3D,
34         0x42, 0x41, 0x46, 0x45, 0x4A, 0x49, 0x4E, 0x4D, 0x52, 0x51, 0x56, 0x55, 0x5A, 0x59, 0x5E, 0x5D,
35         0x62, 0x61, 0x66, 0x65, 0x6A, 0x69, 0x6E, 0x6D, 0x72, 0x71, 0x76, 0x75, 0x7A, 0x79, 0x7E, 0x7D,
36         0x82, 0x81, 0x86, 0x85, 0x8A, 0x89, 0x8E, 0x8D, 0x92, 0x91, 0x96, 0x95, 0x9A, 0x99, 0x9E, 0x9D,
37         0xA2, 0xA1, 0xA6, 0xA5, 0xAA, 0xA9, 0xAE, 0xAD, 0xB2, 0xB1, 0xB6, 0xB5, 0xBA, 0xB9, 0xBE, 0xBD,
38         0xC2, 0xC1, 0xC6, 0xC5, 0xCA, 0xC9, 0xCE, 0xCD, 0xD2, 0xD1, 0xD6, 0xD5, 0xDA, 0xD9, 0xDE, 0xDD,
39         0xE2, 0xE1, 0xE6, 0xE5, 0xEA, 0xE9, 0xEE, 0xED, 0xF2, 0xF1, 0xF6, 0xF5, 0xFA, 0xF9, 0xFE, 0xFD
40 };
41
42 const
43 uint8_t jh_lutbox[] = {
44         0xA8, 0xB1, 0x35, 0xEA, 0x2C, 0x0D, 0xD2, 0x6E, 0x90, 0xCB, 0xF3, 0x77, 0x56, 0x14, 0x89, 0x4F,
45         0x19, 0x00, 0x84, 0x5B, 0x9D, 0xBC, 0x63, 0xDF, 0x21, 0x7A, 0x42, 0xC6, 0xE7, 0xA5, 0x38, 0xFE,
46         0x61, 0x78, 0xFC, 0x23, 0xE5, 0xC4, 0x1B, 0xA7, 0x59, 0x02, 0x3A, 0xBE, 0x9F, 0xDD, 0x40, 0x86,
47         0x0C, 0x15, 0x91, 0x4E, 0x88, 0xA9, 0x76, 0xCA, 0x34, 0x6F, 0x57, 0xD3, 0xF2, 0xB0, 0x2D, 0xEB,
48         0xD0, 0xC9, 0x4D, 0x92, 0x54, 0x75, 0xAA, 0x16, 0xE8, 0xB3, 0x8B, 0x0F, 0x2E, 0x6C, 0xF1, 0x37,
49         0x82, 0x9B, 0x1F, 0xC0, 0x06, 0x27, 0xF8, 0x44, 0xBA, 0xE1, 0xD9, 0x5D, 0x7C, 0x3E, 0xA3, 0x65,
50         0xEF, 0xF6, 0x72, 0xAD, 0x6B, 0x4A, 0x95, 0x29, 0xD7, 0x8C, 0xB4, 0x30, 0x11, 0x53, 0xCE, 0x08,
51         0x74, 0x6D, 0xE9, 0x36, 0xF0, 0xD1, 0x0E, 0xB2, 0x4C, 0x17, 0x2F, 0xAB, 0x8A, 0xC8, 0x55, 0x93,
52         0x4B, 0x52, 0xD6, 0x09, 0xCF, 0xEE, 0x31, 0x8D, 0x73, 0x28, 0x10, 0x94, 0xB5, 0xF7, 0x6A, 0xAC,
53         0x5E, 0x47, 0xC3, 0x1C, 0xDA, 0xFB, 0x24, 0x98, 0x66, 0x3D, 0x05, 0x81, 0xA0, 0xE2, 0x7F, 0xB9,
54         0xBD, 0xA4, 0x20, 0xFF, 0x39, 0x18, 0xC7, 0x7B, 0x85, 0xDE, 0xE6, 0x62, 0x43, 0x01, 0x9C, 0x5A,
55         0xC5, 0xDC, 0x58, 0x87, 0x41, 0x60, 0xBF, 0x03, 0xFD, 0xA6, 0x9E, 0x1A, 0x3B, 0x79, 0xE4, 0x22,
56         0x97, 0x8E, 0x0A, 0xD5, 0x13, 0x32, 0xED, 0x51, 0xAF, 0xF4, 0xCC, 0x48, 0x69, 0x2B, 0xB6, 0x70,
57         0x33, 0x2A, 0xAE, 0x71, 0xB7, 0x96, 0x49, 0xF5, 0x0B, 0x50, 0x68, 0xEC, 0xCD, 0x8F, 0x12, 0xD4,
58         0xFA, 0xE3, 0x67, 0xB8, 0x7E, 0x5F, 0x80, 0x3C, 0xC2, 0x99, 0xA1, 0x25, 0x04, 0x46, 0xDB, 0x1D,
59         0x26, 0x3F, 0xBB, 0x64, 0xA2, 0x83, 0x5C, 0xE0, 0x1E, 0x45, 0x7D, 0xF9, 0xD8, 0x9A, 0x07, 0xC1,
60
61 /* SBOX1: */
62         0xD2, 0x0D, 0x77, 0x2C, 0x14, 0x56, 0x90, 0xA8, 0x6E, 0xF3, 0xB1, 0x35, 0xEA, 0xCB, 0x4F, 0x89,
63         0x63, 0xBC, 0xC6, 0x9D, 0xA5, 0xE7, 0x21, 0x19, 0xDF, 0x42, 0x00, 0x84, 0x5B, 0x7A, 0xFE, 0x38,
64         0x1B, 0xC4, 0xBE, 0xE5, 0xDD, 0x9F, 0x59, 0x61, 0xA7, 0x3A, 0x78, 0xFC, 0x23, 0x02, 0x86, 0x40,
65         0x76, 0xA9, 0xD3, 0x88, 0xB0, 0xF2, 0x34, 0x0C, 0xCA, 0x57, 0x15, 0x91, 0x4E, 0x6F, 0xEB, 0x2D,
66         0xAA, 0x75, 0x0F, 0x54, 0x6C, 0x2E, 0xE8, 0xD0, 0x16, 0x8B, 0xC9, 0x4D, 0x92, 0xB3, 0x37, 0xF1,
67         0xF8, 0x27, 0x5D, 0x06, 0x3E, 0x7C, 0xBA, 0x82, 0x44, 0xD9, 0x9B, 0x1F, 0xC0, 0xE1, 0x65, 0xA3,
68         0x95, 0x4A, 0x30, 0x6B, 0x53, 0x11, 0xD7, 0xEF, 0x29, 0xB4, 0xF6, 0x72, 0xAD, 0x8C, 0x08, 0xCE,
69         0x0E, 0xD1, 0xAB, 0xF0, 0xC8, 0x8A, 0x4C, 0x74, 0xB2, 0x2F, 0x6D, 0xE9, 0x36, 0x17, 0x93, 0x55,
70         0x31, 0xEE, 0x94, 0xCF, 0xF7, 0xB5, 0x73, 0x4B, 0x8D, 0x10, 0x52, 0xD6, 0x09, 0x28, 0xAC, 0x6A,
71         0x24, 0xFB, 0x81, 0xDA, 0xE2, 0xA0, 0x66, 0x5E, 0x98, 0x05, 0x47, 0xC3, 0x1C, 0x3D, 0xB9, 0x7F,
72         0xC7, 0x18, 0x62, 0x39, 0x01, 0x43, 0x85, 0xBD, 0x7B, 0xE6, 0xA4, 0x20, 0xFF, 0xDE, 0x5A, 0x9C,
73         0xBF, 0x60, 0x1A, 0x41, 0x79, 0x3B, 0xFD, 0xC5, 0x03, 0x9E, 0xDC, 0x58, 0x87, 0xA6, 0x22, 0xE4,
74         0xED, 0x32, 0x48, 0x13, 0x2B, 0x69, 0xAF, 0x97, 0x51, 0xCC, 0x8E, 0x0A, 0xD5, 0xF4, 0x70, 0xB6,
75         0x49, 0x96, 0xEC, 0xB7, 0x8F, 0xCD, 0x0B, 0x33, 0xF5, 0x68, 0x2A, 0xAE, 0x71, 0x50, 0xD4, 0x12,
76         0x80, 0x5F, 0x25, 0x7E, 0x46, 0x04, 0xC2, 0xFA, 0x3C, 0xA1, 0xE3, 0x67, 0xB8, 0x99, 0x1D, 0xDB,
77         0x5C, 0x83, 0xF9, 0xA2, 0x9A, 0xD8, 0x1E, 0x26, 0xE0, 0x7D, 0x3F, 0xBB, 0x64, 0x45, 0xC1, 0x07,
78
79 /* SBOX2: */
80         0xEF, 0xF6, 0x72, 0xAD, 0x6B, 0x4A, 0x95, 0x29, 0xD7, 0x8C, 0xB4, 0x30, 0x11, 0x53, 0xCE, 0x08,
81         0x82, 0x9B, 0x1F, 0xC0, 0x06, 0x27, 0xF8, 0x44, 0xBA, 0xE1, 0xD9, 0x5D, 0x7C, 0x3E, 0xA3, 0x65,
82         0xC5, 0xDC, 0x58, 0x87, 0x41, 0x60, 0xBF, 0x03, 0xFD, 0xA6, 0x9E, 0x1A, 0x3B, 0x79, 0xE4, 0x22,
83         0xD0, 0xC9, 0x4D, 0x92, 0x54, 0x75, 0xAA, 0x16, 0xE8, 0xB3, 0x8B, 0x0F, 0x2E, 0x6C, 0xF1, 0x37,
84         0x33, 0x2A, 0xAE, 0x71, 0xB7, 0x96, 0x49, 0xF5, 0x0B, 0x50, 0x68, 0xEC, 0xCD, 0x8F, 0x12, 0xD4,
85         0x97, 0x8E, 0x0A, 0xD5, 0x13, 0x32, 0xED, 0x51, 0xAF, 0xF4, 0xCC, 0x48, 0x69, 0x2B, 0xB6, 0x70,
86         0x4B, 0x52, 0xD6, 0x09, 0xCF, 0xEE, 0x31, 0x8D, 0x73, 0x28, 0x10, 0x94, 0xB5, 0xF7, 0x6A, 0xAC,
87         0xA8, 0xB1, 0x35, 0xEA, 0x2C, 0x0D, 0xD2, 0x6E, 0x90, 0xCB, 0xF3, 0x77, 0x56, 0x14, 0x89, 0x4F,
88         0x74, 0x6D, 0xE9, 0x36, 0xF0, 0xD1, 0x0E, 0xB2, 0x4C, 0x17, 0x2F, 0xAB, 0x8A, 0xC8, 0x55, 0x93,
89         0xBD, 0xA4, 0x20, 0xFF, 0x39, 0x18, 0xC7, 0x7B, 0x85, 0xDE, 0xE6, 0x62, 0x43, 0x01, 0x9C, 0x5A,
90         0x19, 0x00, 0x84, 0x5B, 0x9D, 0xBC, 0x63, 0xDF, 0x21, 0x7A, 0x42, 0xC6, 0xE7, 0xA5, 0x38, 0xFE,
91         0x61, 0x78, 0xFC, 0x23, 0xE5, 0xC4, 0x1B, 0xA7, 0x59, 0x02, 0x3A, 0xBE, 0x9F, 0xDD, 0x40, 0x86,
92         0x0C, 0x15, 0x91, 0x4E, 0x88, 0xA9, 0x76, 0xCA, 0x34, 0x6F, 0x57, 0xD3, 0xF2, 0xB0, 0x2D, 0xEB,
93         0x5E, 0x47, 0xC3, 0x1C, 0xDA, 0xFB, 0x24, 0x98, 0x66, 0x3D, 0x05, 0x81, 0xA0, 0xE2, 0x7F, 0xB9,
94         0x26, 0x3F, 0xBB, 0x64, 0xA2, 0x83, 0x5C, 0xE0, 0x1E, 0x45, 0x7D, 0xF9, 0xD8, 0x9A, 0x07, 0xC1,
95         0xFA, 0xE3, 0x67, 0xB8, 0x7E, 0x5F, 0x80, 0x3C, 0xC2, 0x99, 0xA1, 0x25, 0x04, 0x46, 0xDB, 0x1D,
96
97 /* SBOX3: */
98         0x95, 0x4A, 0x30, 0x6B, 0x53, 0x11, 0xD7, 0xEF, 0x29, 0xB4, 0xF6, 0x72, 0xAD, 0x8C, 0x08, 0xCE,
99         0xF8, 0x27, 0x5D, 0x06, 0x3E, 0x7C, 0xBA, 0x82, 0x44, 0xD9, 0x9B, 0x1F, 0xC0, 0xE1, 0x65, 0xA3,
100         0xBF, 0x60, 0x1A, 0x41, 0x79, 0x3B, 0xFD, 0xC5, 0x03, 0x9E, 0xDC, 0x58, 0x87, 0xA6, 0x22, 0xE4,
101         0xAA, 0x75, 0x0F, 0x54, 0x6C, 0x2E, 0xE8, 0xD0, 0x16, 0x8B, 0xC9, 0x4D, 0x92, 0xB3, 0x37, 0xF1,
102         0x49, 0x96, 0xEC, 0xB7, 0x8F, 0xCD, 0x0B, 0x33, 0xF5, 0x68, 0x2A, 0xAE, 0x71, 0x50, 0xD4, 0x12,
103         0xED, 0x32, 0x48, 0x13, 0x2B, 0x69, 0xAF, 0x97, 0x51, 0xCC, 0x8E, 0x0A, 0xD5, 0xF4, 0x70, 0xB6,
104         0x31, 0xEE, 0x94, 0xCF, 0xF7, 0xB5, 0x73, 0x4B, 0x8D, 0x10, 0x52, 0xD6, 0x09, 0x28, 0xAC, 0x6A,
105         0xD2, 0x0D, 0x77, 0x2C, 0x14, 0x56, 0x90, 0xA8, 0x6E, 0xF3, 0xB1, 0x35, 0xEA, 0xCB, 0x4F, 0x89,
106         0x0E, 0xD1, 0xAB, 0xF0, 0xC8, 0x8A, 0x4C, 0x74, 0xB2, 0x2F, 0x6D, 0xE9, 0x36, 0x17, 0x93, 0x55,
107         0xC7, 0x18, 0x62, 0x39, 0x01, 0x43, 0x85, 0xBD, 0x7B, 0xE6, 0xA4, 0x20, 0xFF, 0xDE, 0x5A, 0x9C,
108         0x63, 0xBC, 0xC6, 0x9D, 0xA5, 0xE7, 0x21, 0x19, 0xDF, 0x42, 0x00, 0x84, 0x5B, 0x7A, 0xFE, 0x38,
109         0x1B, 0xC4, 0xBE, 0xE5, 0xDD, 0x9F, 0x59, 0x61, 0xA7, 0x3A, 0x78, 0xFC, 0x23, 0x02, 0x86, 0x40,
110         0x76, 0xA9, 0xD3, 0x88, 0xB0, 0xF2, 0x34, 0x0C, 0xCA, 0x57, 0x15, 0x91, 0x4E, 0x6F, 0xEB, 0x2D,
111         0x24, 0xFB, 0x81, 0xDA, 0xE2, 0xA0, 0x66, 0x5E, 0x98, 0x05, 0x47, 0xC3, 0x1C, 0x3D, 0xB9, 0x7F,
112         0x5C, 0x83, 0xF9, 0xA2, 0x9A, 0xD8, 0x1E, 0x26, 0xE0, 0x7D, 0x3F, 0xBB, 0x64, 0x45, 0xC1, 0x07,
113         0x80, 0x5F, 0x25, 0x7E, 0x46, 0x04, 0xC2, 0xFA, 0x3C, 0xA1, 0xE3, 0x67, 0xB8, 0x99, 0x1D, 0xDB
114 };
115
116 const
117 uint8_t jh_round_const[] = {
118   /* C_00: */
119         0x6a, 0x09, 0xe6, 0x67, 0xf3, 0xbc, 0xc9, 0x08,
120         0xb2, 0xfb, 0x13, 0x66, 0xea, 0x95, 0x7d, 0x3e,
121         0x3a, 0xde, 0xc1, 0x75, 0x12, 0x77, 0x50, 0x99,
122         0xda, 0x2f, 0x59, 0x0b, 0x06, 0x67, 0x32, 0x2a,
123   /* C_01: */
124         0xbb, 0x89, 0x6b, 0xf0, 0x59, 0x55, 0xab, 0xcd,
125         0x52, 0x81, 0x82, 0x8d, 0x66, 0xe7, 0xd9, 0x9a,
126         0xc4, 0x20, 0x34, 0x94, 0xf8, 0x9b, 0xf1, 0x28,
127         0x17, 0xde, 0xb4, 0x32, 0x88, 0x71, 0x22, 0x31,
128   /* C_02: */
129         0x18, 0x36, 0xe7, 0x6b, 0x12, 0xd7, 0x9c, 0x55,
130         0x11, 0x8a, 0x11, 0x39, 0xd2, 0x41, 0x7d, 0xf5,
131         0x2a, 0x20, 0x21, 0x22, 0x5f, 0xf6, 0x35, 0x00,
132         0x63, 0xd8, 0x8e, 0x5f, 0x1f, 0x91, 0x63, 0x1c,
133   /* C_03: */
134         0x26, 0x30, 0x85, 0xa7, 0x00, 0x0f, 0xa9, 0xc3,
135         0x31, 0x7c, 0x6c, 0xa8, 0xab, 0x65, 0xf7, 0xa7,
136         0x71, 0x3c, 0xf4, 0x20, 0x10, 0x60, 0xce, 0x88,
137         0x6a, 0xf8, 0x55, 0xa9, 0x0d, 0x6a, 0x4e, 0xed,
138   /* C_04: */
139         0x1c, 0xeb, 0xaf, 0xd5, 0x1a, 0x15, 0x6a, 0xeb,
140         0x62, 0xa1, 0x1f, 0xb3, 0xbe, 0x2e, 0x14, 0xf6,
141         0x0b, 0x7e, 0x48, 0xde, 0x85, 0x81, 0x42, 0x70,
142         0xfd, 0x62, 0xe9, 0x76, 0x14, 0xd7, 0xb4, 0x41,
143   /* C_05: */
144         0xe5, 0x56, 0x4c, 0xb5, 0x74, 0xf7, 0xe0, 0x9c,
145         0x75, 0xe2, 0xe2, 0x44, 0x92, 0x9e, 0x95, 0x49,
146         0x27, 0x9a, 0xb2, 0x24, 0xa2, 0x8e, 0x44, 0x5d,
147         0x57, 0x18, 0x5e, 0x7d, 0x7a, 0x09, 0xfd, 0xc1,
148   /* C_06: */
149         0x58, 0x20, 0xf0, 0xf0, 0xd7, 0x64, 0xcf, 0xf3,
150         0xa5, 0x55, 0x2a, 0x5e, 0x41, 0xa8, 0x2b, 0x9e,
151         0xff, 0x6e, 0xe0, 0xaa, 0x61, 0x57, 0x73, 0xbb,
152         0x07, 0xe8, 0x60, 0x34, 0x24, 0xc3, 0xcf, 0x8a,
153   /* C_07: */
154         0xb1, 0x26, 0xfb, 0x74, 0x17, 0x33, 0xc5, 0xbf,
155         0xce, 0xf6, 0xf4, 0x3a, 0x62, 0xe8, 0xe5, 0x70,
156         0x6a, 0x26, 0x65, 0x60, 0x28, 0xaa, 0x89, 0x7e,
157         0xc1, 0xea, 0x46, 0x16, 0xce, 0x8f, 0xd5, 0x10,
158   /* C_08: */
159         0xdb, 0xf0, 0xde, 0x32, 0xbc, 0xa7, 0x72, 0x54,
160         0xbb, 0x4f, 0x56, 0x25, 0x81, 0xa3, 0xbc, 0x99,
161         0x1c, 0xf9, 0x4f, 0x22, 0x56, 0x52, 0xc2, 0x7f,
162         0x14, 0xea, 0xe9, 0x58, 0xae, 0x6a, 0xa6, 0x16,
163   /* C_09: */
164         0xe6, 0x11, 0x3b, 0xe6, 0x17, 0xf4, 0x5f, 0x3d,
165         0xe5, 0x3c, 0xff, 0x03, 0x91, 0x9a, 0x94, 0xc3,
166         0x2c, 0x92, 0x7b, 0x09, 0x3a, 0xc8, 0xf2, 0x3b,
167         0x47, 0xf7, 0x18, 0x9a, 0xad, 0xb9, 0xbc, 0x67,
168   /* C_10: */
169         0x80, 0xd0, 0xd2, 0x60, 0x52, 0xca, 0x45, 0xd5,
170         0x93, 0xab, 0x5f, 0xb3, 0x10, 0x25, 0x06, 0x39,
171         0x00, 0x83, 0xaf, 0xb5, 0xff, 0xe1, 0x07, 0xda,
172         0xcf, 0xcb, 0xa7, 0xdb, 0xe6, 0x01, 0xa1, 0x2b,
173   /* C_11: */
174         0x43, 0xaf, 0x1c, 0x76, 0x12, 0x67, 0x14, 0xdf,
175         0xa9, 0x50, 0xc3, 0x68, 0x78, 0x7c, 0x81, 0xae,
176         0x3b, 0xee, 0xcf, 0x95, 0x6c, 0x85, 0xc9, 0x62,
177         0x08, 0x6a, 0xe1, 0x6e, 0x40, 0xeb, 0xb0, 0xb4,
178   /* C_12: */
179         0x9a, 0xee, 0x89, 0x94, 0xd2, 0xd7, 0x4a, 0x5c,
180         0xdb, 0x7b, 0x1e, 0xf2, 0x94, 0xee, 0xd5, 0xc1,
181         0x52, 0x07, 0x24, 0xdd, 0x8e, 0xd5, 0x8c, 0x92,
182         0xd3, 0xf0, 0xe1, 0x74, 0xb0, 0xc3, 0x20, 0x45,
183   /* C_13: */
184         0x0b, 0x2a, 0xa5, 0x8c, 0xeb, 0x3b, 0xdb, 0x9e,
185         0x1e, 0xef, 0x66, 0xb3, 0x76, 0xe0, 0xc5, 0x65,
186         0xd5, 0xd8, 0xfe, 0x7b, 0xac, 0xb8, 0xda, 0x86,
187         0x6f, 0x85, 0x9a, 0xc5, 0x21, 0xf3, 0xd5, 0x71,
188   /* C_14: */
189         0x7a, 0x15, 0x23, 0xef, 0x3d, 0x97, 0x0a, 0x3a,
190         0x9b, 0x0b, 0x4d, 0x61, 0x0e, 0x02, 0x74, 0x9d,
191         0x37, 0xb8, 0xd5, 0x7c, 0x18, 0x85, 0xfe, 0x42,
192         0x06, 0xa7, 0xf3, 0x38, 0xe8, 0x35, 0x68, 0x66,
193   /* C_15: */
194         0x2c, 0x2d, 0xb8, 0xf7, 0x87, 0x66, 0x85, 0xf2,
195         0xcd, 0x9a, 0x2e, 0x0d, 0xdb, 0x64, 0xc9, 0xd5,
196         0xbf, 0x13, 0x90, 0x53, 0x71, 0xfc, 0x39, 0xe0,
197         0xfa, 0x86, 0xe1, 0x47, 0x72, 0x34, 0xa2, 0x97,
198   /* C_16: */
199         0x9d, 0xf0, 0x85, 0xeb, 0x25, 0x44, 0xeb, 0xf6,
200         0x2b, 0x50, 0x68, 0x6a, 0x71, 0xe6, 0xe8, 0x28,
201         0xdf, 0xed, 0x9d, 0xbe, 0x0b, 0x10, 0x6c, 0x94,
202         0x52, 0xce, 0xdd, 0xff, 0x3d, 0x13, 0x89, 0x90,
203   /* C_17: */
204         0xe6, 0xe5, 0xc4, 0x2c, 0xb2, 0xd4, 0x60, 0xc9,
205         0xd6, 0xe4, 0x79, 0x1a, 0x16, 0x81, 0xbb, 0x2e,
206         0x22, 0x2e, 0x54, 0x55, 0x8e, 0xb7, 0x8d, 0x52,
207         0x44, 0xe2, 0x17, 0xd1, 0xbf, 0xcf, 0x50, 0x58,
208   /* C_18: */
209         0x8f, 0x1f, 0x57, 0xe4, 0x4e, 0x12, 0x62, 0x10,
210         0xf0, 0x07, 0x63, 0xff, 0x57, 0xda, 0x20, 0x8a,
211         0x50, 0x93, 0xb8, 0xff, 0x79, 0x47, 0x53, 0x4a,
212         0x4c, 0x26, 0x0a, 0x17, 0x64, 0x2f, 0x72, 0xb2,
213   /* C_19: */
214         0xae, 0x4e, 0xf4, 0x79, 0x2e, 0xa1, 0x48, 0x60,
215         0x8c, 0xf1, 0x16, 0xcb, 0x2b, 0xff, 0x66, 0xe8,
216         0xfc, 0x74, 0x81, 0x12, 0x66, 0xcd, 0x64, 0x11,
217         0x12, 0xcd, 0x17, 0x80, 0x1e, 0xd3, 0x8b, 0x59,
218   /* C_20: */
219         0x91, 0xa7, 0x44, 0xef, 0xbf, 0x68, 0xb1, 0x92,
220         0xd0, 0x54, 0x9b, 0x60, 0x8b, 0xdb, 0x31, 0x91,
221         0xfc, 0x12, 0xa0, 0xe8, 0x35, 0x43, 0xce, 0xc5,
222         0xf8, 0x82, 0x25, 0x0b, 0x24, 0x4f, 0x78, 0xe4,
223   /* C_21: */
224         0x4b, 0x5d, 0x27, 0xd3, 0x36, 0x8f, 0x9c, 0x17,
225         0xd4, 0xb2, 0xa2, 0xb2, 0x16, 0xc7, 0xe7, 0x4e,
226         0x77, 0x14, 0xd2, 0xcc, 0x03, 0xe1, 0xe4, 0x45,
227         0x88, 0xcd, 0x99, 0x36, 0xde, 0x74, 0x35, 0x7c,
228   /* C_22: */
229         0x0e, 0xa1, 0x7c, 0xaf, 0xb8, 0x28, 0x61, 0x31,
230         0xbd, 0xa9, 0xe3, 0x75, 0x7b, 0x36, 0x10, 0xaa,
231         0x3f, 0x77, 0xa6, 0xd0, 0x57, 0x50, 0x53, 0xfc,
232         0x92, 0x6e, 0xea, 0x7e, 0x23, 0x7d, 0xf2, 0x89,
233   /* C_23: */
234         0x84, 0x8a, 0xf9, 0xf5, 0x7e, 0xb1, 0xa6, 0x16,
235         0xe2, 0xc3, 0x42, 0xc8, 0xce, 0xa5, 0x28, 0xb8,
236         0xa9, 0x5a, 0x5d, 0x16, 0xd9, 0xd8, 0x7b, 0xe9,
237         0xbb, 0x37, 0x84, 0xd0, 0xc3, 0x51, 0xc3, 0x2b,
238   /* C_24: */
239         0xc0, 0x43, 0x5c, 0xc3, 0x65, 0x4f, 0xb8, 0x5d,
240         0xd9, 0x33, 0x5b, 0xa9, 0x1a, 0xc3, 0xdb, 0xde,
241         0x1f, 0x85, 0xd5, 0x67, 0xd7, 0xad, 0x16, 0xf9,
242         0xde, 0x6e, 0x00, 0x9b, 0xca, 0x3f, 0x95, 0xb5,
243   /* C_25: */
244         0x92, 0x75, 0x47, 0xfe, 0x5e, 0x5e, 0x45, 0xe2,
245         0xfe, 0x99, 0xf1, 0x65, 0x1e, 0xa1, 0xcb, 0xf0,
246         0x97, 0xdc, 0x3a, 0x3d, 0x40, 0xdd, 0xd2, 0x1c,
247         0xee, 0x26, 0x05, 0x43, 0xc2, 0x88, 0xec, 0x6b,
248   /* C_26: */
249         0xc1, 0x17, 0xa3, 0x77, 0x0d, 0x3a, 0x34, 0x46,
250         0x9d, 0x50, 0xdf, 0xa7, 0xdb, 0x02, 0x03, 0x00,
251         0xd3, 0x06, 0xa3, 0x65, 0x37, 0x4f, 0xa8, 0x28,
252         0xc8, 0xb7, 0x80, 0xee, 0x1b, 0x9d, 0x7a, 0x34,
253   /* C_27: */
254         0x8f, 0xf2, 0x17, 0x8a, 0xe2, 0xdb, 0xe5, 0xe8,
255         0x72, 0xfa, 0xc7, 0x89, 0xa3, 0x4b, 0xc2, 0x28,
256         0xde, 0xbf, 0x54, 0xa8, 0x82, 0x74, 0x3c, 0xaa,
257         0xd1, 0x4f, 0x3a, 0x55, 0x0f, 0xdb, 0xe6, 0x8f,
258   /* C_28: */
259         0xab, 0xd0, 0x6c, 0x52, 0xed, 0x58, 0xff, 0x09,
260         0x12, 0x05, 0xd0, 0xf6, 0x27, 0x57, 0x4c, 0x8c,
261         0xbc, 0x1f, 0xe7, 0xcf, 0x79, 0x21, 0x0f, 0x5a,
262         0x22, 0x86, 0xf6, 0xe2, 0x3a, 0x27, 0xef, 0xa0,
263   /* C_29: */
264         0x63, 0x1f, 0x4a, 0xcb, 0x8d, 0x3c, 0xa4, 0x25,
265         0x3e, 0x30, 0x18, 0x49, 0xf1, 0x57, 0x57, 0x1d,
266         0x32, 0x11, 0xb6, 0xc1, 0x04, 0x53, 0x47, 0xbe,
267         0xfb, 0x7c, 0x77, 0xdf, 0x3c, 0x6c, 0xa7, 0xbd,
268   /* C_30: */
269         0xae, 0x88, 0xf2, 0x34, 0x2c, 0x23, 0x34, 0x45,
270         0x90, 0xbe, 0x20, 0x14, 0xfa, 0xb4, 0xf1, 0x79,
271         0xfd, 0x4b, 0xf7, 0xc9, 0x0d, 0xb1, 0x4f, 0xa4,
272         0x01, 0x8f, 0xcc, 0xe6, 0x89, 0xd2, 0x12, 0x7b,
273   /* C_31: */
274         0x93, 0xb8, 0x93, 0x85, 0x54, 0x6d, 0x71, 0x37,
275         0x9f, 0xe4, 0x1c, 0x39, 0xbc, 0x60, 0x2e, 0x8b,
276         0x7c, 0x8b, 0x2f, 0x78, 0xee, 0x91, 0x4d, 0x1f,
277         0x0a, 0xf0, 0xd4, 0x37, 0xa1, 0x89, 0xa8, 0xa4,
278   /* C_32: */
279         0x1d, 0x1e, 0x03, 0x6a, 0xbe, 0xef, 0x3f, 0x44,
280         0x84, 0x8c, 0xd7, 0x6e, 0xf6, 0xba, 0xa8, 0x89,
281         0xfc, 0xec, 0x56, 0xcd, 0x79, 0x67, 0xeb, 0x90,
282         0x9a, 0x46, 0x4b, 0xfc, 0x23, 0xc7, 0x24, 0x35,
283   /* C_33: */
284         0xa8, 0xe4, 0xed, 0xe4, 0xc5, 0xfe, 0x5e, 0x88,
285         0xd4, 0xfb, 0x19, 0x2e, 0x0a, 0x08, 0x21, 0xe9,
286         0x35, 0xba, 0x14, 0x5b, 0xbf, 0xc5, 0x9c, 0x25,
287         0x08, 0x28, 0x27, 0x55, 0xa5, 0xdf, 0x53, 0xa5,
288   /* C_34: */
289         0x8e, 0x4e, 0x37, 0xa3, 0xb9, 0x70, 0xf0, 0x79,
290         0xae, 0x9d, 0x22, 0xa4, 0x99, 0xa7, 0x14, 0xc8,
291         0x75, 0x76, 0x02, 0x73, 0xf7, 0x4a, 0x93, 0x98,
292         0x99, 0x5d, 0x32, 0xc0, 0x50, 0x27, 0xd8, 0x10,
293   /* C_35: */
294         0x61, 0xcf, 0xa4, 0x27, 0x92, 0xf9, 0x3b, 0x9f,
295         0xde, 0x36, 0xeb, 0x16, 0x3e, 0x97, 0x87, 0x09,
296         0xfa, 0xfa, 0x76, 0x16, 0xec, 0x3c, 0x7d, 0xad,
297         0x01, 0x35, 0x80, 0x6c, 0x3d, 0x91, 0xa2, 0x1b,
298   /* C_36: */
299         0xf0, 0x37, 0xc5, 0xd9, 0x16, 0x23, 0x28, 0x8b,
300         0x7d, 0x03, 0x02, 0xc1, 0xb9, 0x41, 0xb7, 0x26,
301         0x76, 0xa9, 0x43, 0xb3, 0x72, 0x65, 0x9d, 0xcd,
302         0x7d, 0x6e, 0xf4, 0x08, 0xa1, 0x1b, 0x40, 0xc0,
303   /* C_37: */
304         0x2a, 0x30, 0x63, 0x54, 0xca, 0x3e, 0xa9, 0x0b,
305         0x0e, 0x97, 0xea, 0xeb, 0xce, 0xa0, 0xa6, 0xd7,
306         0xc6, 0x52, 0x23, 0x99, 0xe8, 0x85, 0xc6, 0x13,
307         0xde, 0x82, 0x49, 0x22, 0xc8, 0x92, 0xc4, 0x90,
308   /* C_38: */
309         0x3c, 0xa6, 0xcd, 0xd7, 0x88, 0xa5, 0xbd, 0xc5,
310         0xef, 0x2d, 0xce, 0xeb, 0x16, 0xbc, 0xa3, 0x1e,
311         0x0a, 0x0d, 0x2c, 0x7e, 0x99, 0x21, 0xb6, 0xf7,
312         0x1d, 0x33, 0xe2, 0x5d, 0xd2, 0xf3, 0xcf, 0x53,
313   /* C_39: */
314         0xf7, 0x25, 0x78, 0x72, 0x1d, 0xb5, 0x6b, 0xf8,
315         0xf4, 0x95, 0x38, 0xb0, 0xae, 0x6e, 0xa4, 0x70,
316         0xc2, 0xfb, 0x13, 0x39, 0xdd, 0x26, 0x33, 0x3f,
317         0x13, 0x5f, 0x7d, 0xef, 0x45, 0x37, 0x6e, 0xc0,
318   /* C_40: */
319         0xe4, 0x49, 0xa0, 0x3e, 0xab, 0x35, 0x9e, 0x34,
320         0x09, 0x5f, 0x8b, 0x4b, 0x55, 0xcd, 0x7a, 0xc7,
321         0xc0, 0xec, 0x65, 0x10, 0xf2, 0xc4, 0xcc, 0x79,
322         0xfa, 0x6b, 0x1f, 0xee, 0x6b, 0x18, 0xc5, 0x9e,
323   /* C_41: */
324         0x73, 0xbd, 0x69, 0x78, 0xc5, 0x9f, 0x2b, 0x21,
325         0x94, 0x49, 0xb3, 0x67, 0x70, 0xfb, 0x31, 0x3f,
326         0xbe, 0x2d, 0xa2, 0x8f, 0x6b, 0x04, 0x27, 0x5f,
327         0x07, 0x1a, 0x1b, 0x19, 0x3d, 0xde, 0x20, 0x72
328 };