1 | //hash_tiger.c: |
---|
2 | |
---|
3 | /* |
---|
4 | * Copyright (C) Philipp 'ph3-der-loewe' Schafft - 2010-2012 |
---|
5 | * |
---|
6 | * This file is part of libroar a part of RoarAudio, |
---|
7 | * a cross-platform sound system for both, home and professional use. |
---|
8 | * See README for details. |
---|
9 | * |
---|
10 | * This file is free software; you can redistribute it and/or modify |
---|
11 | * it under the terms of the GNU General Public License version 3 |
---|
12 | * as published by the Free Software Foundation. |
---|
13 | * |
---|
14 | * libroar is distributed in the hope that it will be useful, |
---|
15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
---|
16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
---|
17 | * GNU General Public License for more details. |
---|
18 | * |
---|
19 | * You should have received a copy of the GNU General Public License |
---|
20 | * along with this software; see the file COPYING. If not, write to |
---|
21 | * the Free Software Foundation, 51 Franklin Street, Fifth Floor, |
---|
22 | * Boston, MA 02110-1301, USA. |
---|
23 | * |
---|
24 | * NOTE for everyone want's to change something and send patches: |
---|
25 | * read README and HACKING! There a addition information on |
---|
26 | * the license of this document you need to read before you send |
---|
27 | * any patches. |
---|
28 | * |
---|
29 | * NOTE for uses of non-GPL (LGPL,...) software using libesd, libartsc |
---|
30 | * or libpulse*: |
---|
31 | * The libs libroaresd, libroararts and libroarpulse link this lib |
---|
32 | * and are therefore GPL. Because of this it may be illigal to use |
---|
33 | * them with any software that uses libesd, libartsc or libpulse*. |
---|
34 | */ |
---|
35 | |
---|
36 | #include "libroar.h" |
---|
37 | |
---|
38 | #define STATE_LEN (3*8) |
---|
39 | #define PSTATE_LEN (4*8) |
---|
40 | #define DIGEST_LEN STATE_LEN |
---|
41 | #define BLOCK_LEN (64) |
---|
42 | |
---|
43 | static uint64_t table[4*256] = { |
---|
44 | 0x02AAB17CF7E90C5ELLU /* 0 */, 0xAC424B03E243A8ECLLU /* 1 */, |
---|
45 | 0x72CD5BE30DD5FCD3LLU /* 2 */, 0x6D019B93F6F97F3ALLU /* 3 */, |
---|
46 | 0xCD9978FFD21F9193LLU /* 4 */, 0x7573A1C9708029E2LLU /* 5 */, |
---|
47 | 0xB164326B922A83C3LLU /* 6 */, 0x46883EEE04915870LLU /* 7 */, |
---|
48 | 0xEAACE3057103ECE6LLU /* 8 */, 0xC54169B808A3535CLLU /* 9 */, |
---|
49 | 0x4CE754918DDEC47CLLU /* 10 */, 0x0AA2F4DFDC0DF40CLLU /* 11 */, |
---|
50 | 0x10B76F18A74DBEFALLU /* 12 */, 0xC6CCB6235AD1AB6ALLU /* 13 */, |
---|
51 | 0x13726121572FE2FFLLU /* 14 */, 0x1A488C6F199D921ELLU /* 15 */, |
---|
52 | 0x4BC9F9F4DA0007CALLU /* 16 */, 0x26F5E6F6E85241C7LLU /* 17 */, |
---|
53 | 0x859079DBEA5947B6LLU /* 18 */, 0x4F1885C5C99E8C92LLU /* 19 */, |
---|
54 | 0xD78E761EA96F864BLLU /* 20 */, 0x8E36428C52B5C17DLLU /* 21 */, |
---|
55 | 0x69CF6827373063C1LLU /* 22 */, 0xB607C93D9BB4C56ELLU /* 23 */, |
---|
56 | 0x7D820E760E76B5EALLU /* 24 */, 0x645C9CC6F07FDC42LLU /* 25 */, |
---|
57 | 0xBF38A078243342E0LLU /* 26 */, 0x5F6B343C9D2E7D04LLU /* 27 */, |
---|
58 | 0xF2C28AEB600B0EC6LLU /* 28 */, 0x6C0ED85F7254BCACLLU /* 29 */, |
---|
59 | 0x71592281A4DB4FE5LLU /* 30 */, 0x1967FA69CE0FED9FLLU /* 31 */, |
---|
60 | 0xFD5293F8B96545DBLLU /* 32 */, 0xC879E9D7F2A7600BLLU /* 33 */, |
---|
61 | 0x860248920193194ELLU /* 34 */, 0xA4F9533B2D9CC0B3LLU /* 35 */, |
---|
62 | 0x9053836C15957613LLU /* 36 */, 0xDB6DCF8AFC357BF1LLU /* 37 */, |
---|
63 | 0x18BEEA7A7A370F57LLU /* 38 */, 0x037117CA50B99066LLU /* 39 */, |
---|
64 | 0x6AB30A9774424A35LLU /* 40 */, 0xF4E92F02E325249BLLU /* 41 */, |
---|
65 | 0x7739DB07061CCAE1LLU /* 42 */, 0xD8F3B49CECA42A05LLU /* 43 */, |
---|
66 | 0xBD56BE3F51382F73LLU /* 44 */, 0x45FAED5843B0BB28LLU /* 45 */, |
---|
67 | 0x1C813D5C11BF1F83LLU /* 46 */, 0x8AF0E4B6D75FA169LLU /* 47 */, |
---|
68 | 0x33EE18A487AD9999LLU /* 48 */, 0x3C26E8EAB1C94410LLU /* 49 */, |
---|
69 | 0xB510102BC0A822F9LLU /* 50 */, 0x141EEF310CE6123BLLU /* 51 */, |
---|
70 | 0xFC65B90059DDB154LLU /* 52 */, 0xE0158640C5E0E607LLU /* 53 */, |
---|
71 | 0x884E079826C3A3CFLLU /* 54 */, 0x930D0D9523C535FDLLU /* 55 */, |
---|
72 | 0x35638D754E9A2B00LLU /* 56 */, 0x4085FCCF40469DD5LLU /* 57 */, |
---|
73 | 0xC4B17AD28BE23A4CLLU /* 58 */, 0xCAB2F0FC6A3E6A2ELLU /* 59 */, |
---|
74 | 0x2860971A6B943FCDLLU /* 60 */, 0x3DDE6EE212E30446LLU /* 61 */, |
---|
75 | 0x6222F32AE01765AELLU /* 62 */, 0x5D550BB5478308FELLU /* 63 */, |
---|
76 | 0xA9EFA98DA0EDA22ALLU /* 64 */, 0xC351A71686C40DA7LLU /* 65 */, |
---|
77 | 0x1105586D9C867C84LLU /* 66 */, 0xDCFFEE85FDA22853LLU /* 67 */, |
---|
78 | 0xCCFBD0262C5EEF76LLU /* 68 */, 0xBAF294CB8990D201LLU /* 69 */, |
---|
79 | 0xE69464F52AFAD975LLU /* 70 */, 0x94B013AFDF133E14LLU /* 71 */, |
---|
80 | 0x06A7D1A32823C958LLU /* 72 */, 0x6F95FE5130F61119LLU /* 73 */, |
---|
81 | 0xD92AB34E462C06C0LLU /* 74 */, 0xED7BDE33887C71D2LLU /* 75 */, |
---|
82 | 0x79746D6E6518393ELLU /* 76 */, 0x5BA419385D713329LLU /* 77 */, |
---|
83 | 0x7C1BA6B948A97564LLU /* 78 */, 0x31987C197BFDAC67LLU /* 79 */, |
---|
84 | 0xDE6C23C44B053D02LLU /* 80 */, 0x581C49FED002D64DLLU /* 81 */, |
---|
85 | 0xDD474D6338261571LLU /* 82 */, 0xAA4546C3E473D062LLU /* 83 */, |
---|
86 | 0x928FCE349455F860LLU /* 84 */, 0x48161BBACAAB94D9LLU /* 85 */, |
---|
87 | 0x63912430770E6F68LLU /* 86 */, 0x6EC8A5E602C6641CLLU /* 87 */, |
---|
88 | 0x87282515337DDD2BLLU /* 88 */, 0x2CDA6B42034B701BLLU /* 89 */, |
---|
89 | 0xB03D37C181CB096DLLU /* 90 */, 0xE108438266C71C6FLLU /* 91 */, |
---|
90 | 0x2B3180C7EB51B255LLU /* 92 */, 0xDF92B82F96C08BBCLLU /* 93 */, |
---|
91 | 0x5C68C8C0A632F3BALLU /* 94 */, 0x5504CC861C3D0556LLU /* 95 */, |
---|
92 | 0xABBFA4E55FB26B8FLLU /* 96 */, 0x41848B0AB3BACEB4LLU /* 97 */, |
---|
93 | 0xB334A273AA445D32LLU /* 98 */, 0xBCA696F0A85AD881LLU /* 99 */, |
---|
94 | 0x24F6EC65B528D56CLLU /* 100 */, 0x0CE1512E90F4524ALLU /* 101 */, |
---|
95 | 0x4E9DD79D5506D35ALLU /* 102 */, 0x258905FAC6CE9779LLU /* 103 */, |
---|
96 | 0x2019295B3E109B33LLU /* 104 */, 0xF8A9478B73A054CCLLU /* 105 */, |
---|
97 | 0x2924F2F934417EB0LLU /* 106 */, 0x3993357D536D1BC4LLU /* 107 */, |
---|
98 | 0x38A81AC21DB6FF8BLLU /* 108 */, 0x47C4FBF17D6016BFLLU /* 109 */, |
---|
99 | 0x1E0FAADD7667E3F5LLU /* 110 */, 0x7ABCFF62938BEB96LLU /* 111 */, |
---|
100 | 0xA78DAD948FC179C9LLU /* 112 */, 0x8F1F98B72911E50DLLU /* 113 */, |
---|
101 | 0x61E48EAE27121A91LLU /* 114 */, 0x4D62F7AD31859808LLU /* 115 */, |
---|
102 | 0xECEBA345EF5CEAEBLLU /* 116 */, 0xF5CEB25EBC9684CELLU /* 117 */, |
---|
103 | 0xF633E20CB7F76221LLU /* 118 */, 0xA32CDF06AB8293E4LLU /* 119 */, |
---|
104 | 0x985A202CA5EE2CA4LLU /* 120 */, 0xCF0B8447CC8A8FB1LLU /* 121 */, |
---|
105 | 0x9F765244979859A3LLU /* 122 */, 0xA8D516B1A1240017LLU /* 123 */, |
---|
106 | 0x0BD7BA3EBB5DC726LLU /* 124 */, 0xE54BCA55B86ADB39LLU /* 125 */, |
---|
107 | 0x1D7A3AFD6C478063LLU /* 126 */, 0x519EC608E7669EDDLLU /* 127 */, |
---|
108 | 0x0E5715A2D149AA23LLU /* 128 */, 0x177D4571848FF194LLU /* 129 */, |
---|
109 | 0xEEB55F3241014C22LLU /* 130 */, 0x0F5E5CA13A6E2EC2LLU /* 131 */, |
---|
110 | 0x8029927B75F5C361LLU /* 132 */, 0xAD139FABC3D6E436LLU /* 133 */, |
---|
111 | 0x0D5DF1A94CCF402FLLU /* 134 */, 0x3E8BD948BEA5DFC8LLU /* 135 */, |
---|
112 | 0xA5A0D357BD3FF77ELLU /* 136 */, 0xA2D12E251F74F645LLU /* 137 */, |
---|
113 | 0x66FD9E525E81A082LLU /* 138 */, 0x2E0C90CE7F687A49LLU /* 139 */, |
---|
114 | 0xC2E8BCBEBA973BC5LLU /* 140 */, 0x000001BCE509745FLLU /* 141 */, |
---|
115 | 0x423777BBE6DAB3D6LLU /* 142 */, 0xD1661C7EAEF06EB5LLU /* 143 */, |
---|
116 | 0xA1781F354DAACFD8LLU /* 144 */, 0x2D11284A2B16AFFCLLU /* 145 */, |
---|
117 | 0xF1FC4F67FA891D1FLLU /* 146 */, 0x73ECC25DCB920ADALLU /* 147 */, |
---|
118 | 0xAE610C22C2A12651LLU /* 148 */, 0x96E0A810D356B78ALLU /* 149 */, |
---|
119 | 0x5A9A381F2FE7870FLLU /* 150 */, 0xD5AD62EDE94E5530LLU /* 151 */, |
---|
120 | 0xD225E5E8368D1427LLU /* 152 */, 0x65977B70C7AF4631LLU /* 153 */, |
---|
121 | 0x99F889B2DE39D74FLLU /* 154 */, 0x233F30BF54E1D143LLU /* 155 */, |
---|
122 | 0x9A9675D3D9A63C97LLU /* 156 */, 0x5470554FF334F9A8LLU /* 157 */, |
---|
123 | 0x166ACB744A4F5688LLU /* 158 */, 0x70C74CAAB2E4AEADLLU /* 159 */, |
---|
124 | 0xF0D091646F294D12LLU /* 160 */, 0x57B82A89684031D1LLU /* 161 */, |
---|
125 | 0xEFD95A5A61BE0B6BLLU /* 162 */, 0x2FBD12E969F2F29ALLU /* 163 */, |
---|
126 | 0x9BD37013FEFF9FE8LLU /* 164 */, 0x3F9B0404D6085A06LLU /* 165 */, |
---|
127 | 0x4940C1F3166CFE15LLU /* 166 */, 0x09542C4DCDF3DEFBLLU /* 167 */, |
---|
128 | 0xB4C5218385CD5CE3LLU /* 168 */, 0xC935B7DC4462A641LLU /* 169 */, |
---|
129 | 0x3417F8A68ED3B63FLLU /* 170 */, 0xB80959295B215B40LLU /* 171 */, |
---|
130 | 0xF99CDAEF3B8C8572LLU /* 172 */, 0x018C0614F8FCB95DLLU /* 173 */, |
---|
131 | 0x1B14ACCD1A3ACDF3LLU /* 174 */, 0x84D471F200BB732DLLU /* 175 */, |
---|
132 | 0xC1A3110E95E8DA16LLU /* 176 */, 0x430A7220BF1A82B8LLU /* 177 */, |
---|
133 | 0xB77E090D39DF210ELLU /* 178 */, 0x5EF4BD9F3CD05E9DLLU /* 179 */, |
---|
134 | 0x9D4FF6DA7E57A444LLU /* 180 */, 0xDA1D60E183D4A5F8LLU /* 181 */, |
---|
135 | 0xB287C38417998E47LLU /* 182 */, 0xFE3EDC121BB31886LLU /* 183 */, |
---|
136 | 0xC7FE3CCC980CCBEFLLU /* 184 */, 0xE46FB590189BFD03LLU /* 185 */, |
---|
137 | 0x3732FD469A4C57DCLLU /* 186 */, 0x7EF700A07CF1AD65LLU /* 187 */, |
---|
138 | 0x59C64468A31D8859LLU /* 188 */, 0x762FB0B4D45B61F6LLU /* 189 */, |
---|
139 | 0x155BAED099047718LLU /* 190 */, 0x68755E4C3D50BAA6LLU /* 191 */, |
---|
140 | 0xE9214E7F22D8B4DFLLU /* 192 */, 0x2ADDBF532EAC95F4LLU /* 193 */, |
---|
141 | 0x32AE3909B4BD0109LLU /* 194 */, 0x834DF537B08E3450LLU /* 195 */, |
---|
142 | 0xFA209DA84220728DLLU /* 196 */, 0x9E691D9B9EFE23F7LLU /* 197 */, |
---|
143 | 0x0446D288C4AE8D7FLLU /* 198 */, 0x7B4CC524E169785BLLU /* 199 */, |
---|
144 | 0x21D87F0135CA1385LLU /* 200 */, 0xCEBB400F137B8AA5LLU /* 201 */, |
---|
145 | 0x272E2B66580796BELLU /* 202 */, 0x3612264125C2B0DELLU /* 203 */, |
---|
146 | 0x057702BDAD1EFBB2LLU /* 204 */, 0xD4BABB8EACF84BE9LLU /* 205 */, |
---|
147 | 0x91583139641BC67BLLU /* 206 */, 0x8BDC2DE08036E024LLU /* 207 */, |
---|
148 | 0x603C8156F49F68EDLLU /* 208 */, 0xF7D236F7DBEF5111LLU /* 209 */, |
---|
149 | 0x9727C4598AD21E80LLU /* 210 */, 0xA08A0896670A5FD7LLU /* 211 */, |
---|
150 | 0xCB4A8F4309EBA9CBLLU /* 212 */, 0x81AF564B0F7036A1LLU /* 213 */, |
---|
151 | 0xC0B99AA778199ABDLLU /* 214 */, 0x959F1EC83FC8E952LLU /* 215 */, |
---|
152 | 0x8C505077794A81B9LLU /* 216 */, 0x3ACAAF8F056338F0LLU /* 217 */, |
---|
153 | 0x07B43F50627A6778LLU /* 218 */, 0x4A44AB49F5ECCC77LLU /* 219 */, |
---|
154 | 0x3BC3D6E4B679EE98LLU /* 220 */, 0x9CC0D4D1CF14108CLLU /* 221 */, |
---|
155 | 0x4406C00B206BC8A0LLU /* 222 */, 0x82A18854C8D72D89LLU /* 223 */, |
---|
156 | 0x67E366B35C3C432CLLU /* 224 */, 0xB923DD61102B37F2LLU /* 225 */, |
---|
157 | 0x56AB2779D884271DLLU /* 226 */, 0xBE83E1B0FF1525AFLLU /* 227 */, |
---|
158 | 0xFB7C65D4217E49A9LLU /* 228 */, 0x6BDBE0E76D48E7D4LLU /* 229 */, |
---|
159 | 0x08DF828745D9179ELLU /* 230 */, 0x22EA6A9ADD53BD34LLU /* 231 */, |
---|
160 | 0xE36E141C5622200ALLU /* 232 */, 0x7F805D1B8CB750EELLU /* 233 */, |
---|
161 | 0xAFE5C7A59F58E837LLU /* 234 */, 0xE27F996A4FB1C23CLLU /* 235 */, |
---|
162 | 0xD3867DFB0775F0D0LLU /* 236 */, 0xD0E673DE6E88891ALLU /* 237 */, |
---|
163 | 0x123AEB9EAFB86C25LLU /* 238 */, 0x30F1D5D5C145B895LLU /* 239 */, |
---|
164 | 0xBB434A2DEE7269E7LLU /* 240 */, 0x78CB67ECF931FA38LLU /* 241 */, |
---|
165 | 0xF33B0372323BBF9CLLU /* 242 */, 0x52D66336FB279C74LLU /* 243 */, |
---|
166 | 0x505F33AC0AFB4EAALLU /* 244 */, 0xE8A5CD99A2CCE187LLU /* 245 */, |
---|
167 | 0x534974801E2D30BBLLU /* 246 */, 0x8D2D5711D5876D90LLU /* 247 */, |
---|
168 | 0x1F1A412891BC038ELLU /* 248 */, 0xD6E2E71D82E56648LLU /* 249 */, |
---|
169 | 0x74036C3A497732B7LLU /* 250 */, 0x89B67ED96361F5ABLLU /* 251 */, |
---|
170 | 0xFFED95D8F1EA02A2LLU /* 252 */, 0xE72B3BD61464D43DLLU /* 253 */, |
---|
171 | 0xA6300F170BDC4820LLU /* 254 */, 0xEBC18760ED78A77ALLU /* 255 */, |
---|
172 | 0xE6A6BE5A05A12138LLU /* 256 */, 0xB5A122A5B4F87C98LLU /* 257 */, |
---|
173 | 0x563C6089140B6990LLU /* 258 */, 0x4C46CB2E391F5DD5LLU /* 259 */, |
---|
174 | 0xD932ADDBC9B79434LLU /* 260 */, 0x08EA70E42015AFF5LLU /* 261 */, |
---|
175 | 0xD765A6673E478CF1LLU /* 262 */, 0xC4FB757EAB278D99LLU /* 263 */, |
---|
176 | 0xDF11C6862D6E0692LLU /* 264 */, 0xDDEB84F10D7F3B16LLU /* 265 */, |
---|
177 | 0x6F2EF604A665EA04LLU /* 266 */, 0x4A8E0F0FF0E0DFB3LLU /* 267 */, |
---|
178 | 0xA5EDEEF83DBCBA51LLU /* 268 */, 0xFC4F0A2A0EA4371ELLU /* 269 */, |
---|
179 | 0xE83E1DA85CB38429LLU /* 270 */, 0xDC8FF882BA1B1CE2LLU /* 271 */, |
---|
180 | 0xCD45505E8353E80DLLU /* 272 */, 0x18D19A00D4DB0717LLU /* 273 */, |
---|
181 | 0x34A0CFEDA5F38101LLU /* 274 */, 0x0BE77E518887CAF2LLU /* 275 */, |
---|
182 | 0x1E341438B3C45136LLU /* 276 */, 0xE05797F49089CCF9LLU /* 277 */, |
---|
183 | 0xFFD23F9DF2591D14LLU /* 278 */, 0x543DDA228595C5CDLLU /* 279 */, |
---|
184 | 0x661F81FD99052A33LLU /* 280 */, 0x8736E641DB0F7B76LLU /* 281 */, |
---|
185 | 0x15227725418E5307LLU /* 282 */, 0xE25F7F46162EB2FALLU /* 283 */, |
---|
186 | 0x48A8B2126C13D9FELLU /* 284 */, 0xAFDC541792E76EEALLU /* 285 */, |
---|
187 | 0x03D912BFC6D1898FLLU /* 286 */, 0x31B1AAFA1B83F51BLLU /* 287 */, |
---|
188 | 0xF1AC2796E42AB7D9LLU /* 288 */, 0x40A3A7D7FCD2EBACLLU /* 289 */, |
---|
189 | 0x1056136D0AFBBCC5LLU /* 290 */, 0x7889E1DD9A6D0C85LLU /* 291 */, |
---|
190 | 0xD33525782A7974AALLU /* 292 */, 0xA7E25D09078AC09BLLU /* 293 */, |
---|
191 | 0xBD4138B3EAC6EDD0LLU /* 294 */, 0x920ABFBE71EB9E70LLU /* 295 */, |
---|
192 | 0xA2A5D0F54FC2625CLLU /* 296 */, 0xC054E36B0B1290A3LLU /* 297 */, |
---|
193 | 0xF6DD59FF62FE932BLLU /* 298 */, 0x3537354511A8AC7DLLU /* 299 */, |
---|
194 | 0xCA845E9172FADCD4LLU /* 300 */, 0x84F82B60329D20DCLLU /* 301 */, |
---|
195 | 0x79C62CE1CD672F18LLU /* 302 */, 0x8B09A2ADD124642CLLU /* 303 */, |
---|
196 | 0xD0C1E96A19D9E726LLU /* 304 */, 0x5A786A9B4BA9500CLLU /* 305 */, |
---|
197 | 0x0E020336634C43F3LLU /* 306 */, 0xC17B474AEB66D822LLU /* 307 */, |
---|
198 | 0x6A731AE3EC9BAAC2LLU /* 308 */, 0x8226667AE0840258LLU /* 309 */, |
---|
199 | 0x67D4567691CAECA5LLU /* 310 */, 0x1D94155C4875ADB5LLU /* 311 */, |
---|
200 | 0x6D00FD985B813FDFLLU /* 312 */, 0x51286EFCB774CD06LLU /* 313 */, |
---|
201 | 0x5E8834471FA744AFLLU /* 314 */, 0xF72CA0AEE761AE2ELLU /* 315 */, |
---|
202 | 0xBE40E4CDAEE8E09ALLU /* 316 */, 0xE9970BBB5118F665LLU /* 317 */, |
---|
203 | 0x726E4BEB33DF1964LLU /* 318 */, 0x703B000729199762LLU /* 319 */, |
---|
204 | 0x4631D816F5EF30A7LLU /* 320 */, 0xB880B5B51504A6BELLU /* 321 */, |
---|
205 | 0x641793C37ED84B6CLLU /* 322 */, 0x7B21ED77F6E97D96LLU /* 323 */, |
---|
206 | 0x776306312EF96B73LLU /* 324 */, 0xAE528948E86FF3F4LLU /* 325 */, |
---|
207 | 0x53DBD7F286A3F8F8LLU /* 326 */, 0x16CADCE74CFC1063LLU /* 327 */, |
---|
208 | 0x005C19BDFA52C6DDLLU /* 328 */, 0x68868F5D64D46AD3LLU /* 329 */, |
---|
209 | 0x3A9D512CCF1E186ALLU /* 330 */, 0x367E62C2385660AELLU /* 331 */, |
---|
210 | 0xE359E7EA77DCB1D7LLU /* 332 */, 0x526C0773749ABE6ELLU /* 333 */, |
---|
211 | 0x735AE5F9D09F734BLLU /* 334 */, 0x493FC7CC8A558BA8LLU /* 335 */, |
---|
212 | 0xB0B9C1533041AB45LLU /* 336 */, 0x321958BA470A59BDLLU /* 337 */, |
---|
213 | 0x852DB00B5F46C393LLU /* 338 */, 0x91209B2BD336B0E5LLU /* 339 */, |
---|
214 | 0x6E604F7D659EF19FLLU /* 340 */, 0xB99A8AE2782CCB24LLU /* 341 */, |
---|
215 | 0xCCF52AB6C814C4C7LLU /* 342 */, 0x4727D9AFBE11727BLLU /* 343 */, |
---|
216 | 0x7E950D0C0121B34DLLU /* 344 */, 0x756F435670AD471FLLU /* 345 */, |
---|
217 | 0xF5ADD442615A6849LLU /* 346 */, 0x4E87E09980B9957ALLU /* 347 */, |
---|
218 | 0x2ACFA1DF50AEE355LLU /* 348 */, 0xD898263AFD2FD556LLU /* 349 */, |
---|
219 | 0xC8F4924DD80C8FD6LLU /* 350 */, 0xCF99CA3D754A173ALLU /* 351 */, |
---|
220 | 0xFE477BACAF91BF3CLLU /* 352 */, 0xED5371F6D690C12DLLU /* 353 */, |
---|
221 | 0x831A5C285E687094LLU /* 354 */, 0xC5D3C90A3708A0A4LLU /* 355 */, |
---|
222 | 0x0F7F903717D06580LLU /* 356 */, 0x19F9BB13B8FDF27FLLU /* 357 */, |
---|
223 | 0xB1BD6F1B4D502843LLU /* 358 */, 0x1C761BA38FFF4012LLU /* 359 */, |
---|
224 | 0x0D1530C4E2E21F3BLLU /* 360 */, 0x8943CE69A7372C8ALLU /* 361 */, |
---|
225 | 0xE5184E11FEB5CE66LLU /* 362 */, 0x618BDB80BD736621LLU /* 363 */, |
---|
226 | 0x7D29BAD68B574D0BLLU /* 364 */, 0x81BB613E25E6FE5BLLU /* 365 */, |
---|
227 | 0x071C9C10BC07913FLLU /* 366 */, 0xC7BEEB7909AC2D97LLU /* 367 */, |
---|
228 | 0xC3E58D353BC5D757LLU /* 368 */, 0xEB017892F38F61E8LLU /* 369 */, |
---|
229 | 0xD4EFFB9C9B1CC21ALLU /* 370 */, 0x99727D26F494F7ABLLU /* 371 */, |
---|
230 | 0xA3E063A2956B3E03LLU /* 372 */, 0x9D4A8B9A4AA09C30LLU /* 373 */, |
---|
231 | 0x3F6AB7D500090FB4LLU /* 374 */, 0x9CC0F2A057268AC0LLU /* 375 */, |
---|
232 | 0x3DEE9D2DEDBF42D1LLU /* 376 */, 0x330F49C87960A972LLU /* 377 */, |
---|
233 | 0xC6B2720287421B41LLU /* 378 */, 0x0AC59EC07C00369CLLU /* 379 */, |
---|
234 | 0xEF4EAC49CB353425LLU /* 380 */, 0xF450244EEF0129D8LLU /* 381 */, |
---|
235 | 0x8ACC46E5CAF4DEB6LLU /* 382 */, 0x2FFEAB63989263F7LLU /* 383 */, |
---|
236 | 0x8F7CB9FE5D7A4578LLU /* 384 */, 0x5BD8F7644E634635LLU /* 385 */, |
---|
237 | 0x427A7315BF2DC900LLU /* 386 */, 0x17D0C4AA2125261CLLU /* 387 */, |
---|
238 | 0x3992486C93518E50LLU /* 388 */, 0xB4CBFEE0A2D7D4C3LLU /* 389 */, |
---|
239 | 0x7C75D6202C5DDD8DLLU /* 390 */, 0xDBC295D8E35B6C61LLU /* 391 */, |
---|
240 | 0x60B369D302032B19LLU /* 392 */, 0xCE42685FDCE44132LLU /* 393 */, |
---|
241 | 0x06F3DDB9DDF65610LLU /* 394 */, 0x8EA4D21DB5E148F0LLU /* 395 */, |
---|
242 | 0x20B0FCE62FCD496FLLU /* 396 */, 0x2C1B912358B0EE31LLU /* 397 */, |
---|
243 | 0xB28317B818F5A308LLU /* 398 */, 0xA89C1E189CA6D2CFLLU /* 399 */, |
---|
244 | 0x0C6B18576AAADBC8LLU /* 400 */, 0xB65DEAA91299FAE3LLU /* 401 */, |
---|
245 | 0xFB2B794B7F1027E7LLU /* 402 */, 0x04E4317F443B5BEBLLU /* 403 */, |
---|
246 | 0x4B852D325939D0A6LLU /* 404 */, 0xD5AE6BEEFB207FFCLLU /* 405 */, |
---|
247 | 0x309682B281C7D374LLU /* 406 */, 0xBAE309A194C3B475LLU /* 407 */, |
---|
248 | 0x8CC3F97B13B49F05LLU /* 408 */, 0x98A9422FF8293967LLU /* 409 */, |
---|
249 | 0x244B16B01076FF7CLLU /* 410 */, 0xF8BF571C663D67EELLU /* 411 */, |
---|
250 | 0x1F0D6758EEE30DA1LLU /* 412 */, 0xC9B611D97ADEB9B7LLU /* 413 */, |
---|
251 | 0xB7AFD5887B6C57A2LLU /* 414 */, 0x6290AE846B984FE1LLU /* 415 */, |
---|
252 | 0x94DF4CDEACC1A5FDLLU /* 416 */, 0x058A5BD1C5483AFFLLU /* 417 */, |
---|
253 | 0x63166CC142BA3C37LLU /* 418 */, 0x8DB8526EB2F76F40LLU /* 419 */, |
---|
254 | 0xE10880036F0D6D4ELLU /* 420 */, 0x9E0523C9971D311DLLU /* 421 */, |
---|
255 | 0x45EC2824CC7CD691LLU /* 422 */, 0x575B8359E62382C9LLU /* 423 */, |
---|
256 | 0xFA9E400DC4889995LLU /* 424 */, 0xD1823ECB45721568LLU /* 425 */, |
---|
257 | 0xDAFD983B8206082FLLU /* 426 */, 0xAA7D29082386A8CBLLU /* 427 */, |
---|
258 | 0x269FCD4403B87588LLU /* 428 */, 0x1B91F5F728BDD1E0LLU /* 429 */, |
---|
259 | 0xE4669F39040201F6LLU /* 430 */, 0x7A1D7C218CF04ADELLU /* 431 */, |
---|
260 | 0x65623C29D79CE5CELLU /* 432 */, 0x2368449096C00BB1LLU /* 433 */, |
---|
261 | 0xAB9BF1879DA503BALLU /* 434 */, 0xBC23ECB1A458058ELLU /* 435 */, |
---|
262 | 0x9A58DF01BB401ECCLLU /* 436 */, 0xA070E868A85F143DLLU /* 437 */, |
---|
263 | 0x4FF188307DF2239ELLU /* 438 */, 0x14D565B41A641183LLU /* 439 */, |
---|
264 | 0xEE13337452701602LLU /* 440 */, 0x950E3DCF3F285E09LLU /* 441 */, |
---|
265 | 0x59930254B9C80953LLU /* 442 */, 0x3BF299408930DA6DLLU /* 443 */, |
---|
266 | 0xA955943F53691387LLU /* 444 */, 0xA15EDECAA9CB8784LLU /* 445 */, |
---|
267 | 0x29142127352BE9A0LLU /* 446 */, 0x76F0371FFF4E7AFBLLU /* 447 */, |
---|
268 | 0x0239F450274F2228LLU /* 448 */, 0xBB073AF01D5E868BLLU /* 449 */, |
---|
269 | 0xBFC80571C10E96C1LLU /* 450 */, 0xD267088568222E23LLU /* 451 */, |
---|
270 | 0x9671A3D48E80B5B0LLU /* 452 */, 0x55B5D38AE193BB81LLU /* 453 */, |
---|
271 | 0x693AE2D0A18B04B8LLU /* 454 */, 0x5C48B4ECADD5335FLLU /* 455 */, |
---|
272 | 0xFD743B194916A1CALLU /* 456 */, 0x2577018134BE98C4LLU /* 457 */, |
---|
273 | 0xE77987E83C54A4ADLLU /* 458 */, 0x28E11014DA33E1B9LLU /* 459 */, |
---|
274 | 0x270CC59E226AA213LLU /* 460 */, 0x71495F756D1A5F60LLU /* 461 */, |
---|
275 | 0x9BE853FB60AFEF77LLU /* 462 */, 0xADC786A7F7443DBFLLU /* 463 */, |
---|
276 | 0x0904456173B29A82LLU /* 464 */, 0x58BC7A66C232BD5ELLU /* 465 */, |
---|
277 | 0xF306558C673AC8B2LLU /* 466 */, 0x41F639C6B6C9772ALLU /* 467 */, |
---|
278 | 0x216DEFE99FDA35DALLU /* 468 */, 0x11640CC71C7BE615LLU /* 469 */, |
---|
279 | 0x93C43694565C5527LLU /* 470 */, 0xEA038E6246777839LLU /* 471 */, |
---|
280 | 0xF9ABF3CE5A3E2469LLU /* 472 */, 0x741E768D0FD312D2LLU /* 473 */, |
---|
281 | 0x0144B883CED652C6LLU /* 474 */, 0xC20B5A5BA33F8552LLU /* 475 */, |
---|
282 | 0x1AE69633C3435A9DLLU /* 476 */, 0x97A28CA4088CFDECLLU /* 477 */, |
---|
283 | 0x8824A43C1E96F420LLU /* 478 */, 0x37612FA66EEEA746LLU /* 479 */, |
---|
284 | 0x6B4CB165F9CF0E5ALLU /* 480 */, 0x43AA1C06A0ABFB4ALLU /* 481 */, |
---|
285 | 0x7F4DC26FF162796BLLU /* 482 */, 0x6CBACC8E54ED9B0FLLU /* 483 */, |
---|
286 | 0xA6B7FFEFD2BB253ELLU /* 484 */, 0x2E25BC95B0A29D4FLLU /* 485 */, |
---|
287 | 0x86D6A58BDEF1388CLLU /* 486 */, 0xDED74AC576B6F054LLU /* 487 */, |
---|
288 | 0x8030BDBC2B45805DLLU /* 488 */, 0x3C81AF70E94D9289LLU /* 489 */, |
---|
289 | 0x3EFF6DDA9E3100DBLLU /* 490 */, 0xB38DC39FDFCC8847LLU /* 491 */, |
---|
290 | 0x123885528D17B87ELLU /* 492 */, 0xF2DA0ED240B1B642LLU /* 493 */, |
---|
291 | 0x44CEFADCD54BF9A9LLU /* 494 */, 0x1312200E433C7EE6LLU /* 495 */, |
---|
292 | 0x9FFCC84F3A78C748LLU /* 496 */, 0xF0CD1F72248576BBLLU /* 497 */, |
---|
293 | 0xEC6974053638CFE4LLU /* 498 */, 0x2BA7B67C0CEC4E4CLLU /* 499 */, |
---|
294 | 0xAC2F4DF3E5CE32EDLLU /* 500 */, 0xCB33D14326EA4C11LLU /* 501 */, |
---|
295 | 0xA4E9044CC77E58BCLLU /* 502 */, 0x5F513293D934FCEFLLU /* 503 */, |
---|
296 | 0x5DC9645506E55444LLU /* 504 */, 0x50DE418F317DE40ALLU /* 505 */, |
---|
297 | 0x388CB31A69DDE259LLU /* 506 */, 0x2DB4A83455820A86LLU /* 507 */, |
---|
298 | 0x9010A91E84711AE9LLU /* 508 */, 0x4DF7F0B7B1498371LLU /* 509 */, |
---|
299 | 0xD62A2EABC0977179LLU /* 510 */, 0x22FAC097AA8D5C0ELLU /* 511 */, |
---|
300 | 0xF49FCC2FF1DAF39BLLU /* 512 */, 0x487FD5C66FF29281LLU /* 513 */, |
---|
301 | 0xE8A30667FCDCA83FLLU /* 514 */, 0x2C9B4BE3D2FCCE63LLU /* 515 */, |
---|
302 | 0xDA3FF74B93FBBBC2LLU /* 516 */, 0x2FA165D2FE70BA66LLU /* 517 */, |
---|
303 | 0xA103E279970E93D4LLU /* 518 */, 0xBECDEC77B0E45E71LLU /* 519 */, |
---|
304 | 0xCFB41E723985E497LLU /* 520 */, 0xB70AAA025EF75017LLU /* 521 */, |
---|
305 | 0xD42309F03840B8E0LLU /* 522 */, 0x8EFC1AD035898579LLU /* 523 */, |
---|
306 | 0x96C6920BE2B2ABC5LLU /* 524 */, 0x66AF4163375A9172LLU /* 525 */, |
---|
307 | 0x2174ABDCCA7127FBLLU /* 526 */, 0xB33CCEA64A72FF41LLU /* 527 */, |
---|
308 | 0xF04A4933083066A5LLU /* 528 */, 0x8D970ACDD7289AF5LLU /* 529 */, |
---|
309 | 0x8F96E8E031C8C25ELLU /* 530 */, 0xF3FEC02276875D47LLU /* 531 */, |
---|
310 | 0xEC7BF310056190DDLLU /* 532 */, 0xF5ADB0AEBB0F1491LLU /* 533 */, |
---|
311 | 0x9B50F8850FD58892LLU /* 534 */, 0x4975488358B74DE8LLU /* 535 */, |
---|
312 | 0xA3354FF691531C61LLU /* 536 */, 0x0702BBE481D2C6EELLU /* 537 */, |
---|
313 | 0x89FB24057DEDED98LLU /* 538 */, 0xAC3075138596E902LLU /* 539 */, |
---|
314 | 0x1D2D3580172772EDLLU /* 540 */, 0xEB738FC28E6BC30DLLU /* 541 */, |
---|
315 | 0x5854EF8F63044326LLU /* 542 */, 0x9E5C52325ADD3BBELLU /* 543 */, |
---|
316 | 0x90AA53CF325C4623LLU /* 544 */, 0xC1D24D51349DD067LLU /* 545 */, |
---|
317 | 0x2051CFEEA69EA624LLU /* 546 */, 0x13220F0A862E7E4FLLU /* 547 */, |
---|
318 | 0xCE39399404E04864LLU /* 548 */, 0xD9C42CA47086FCB7LLU /* 549 */, |
---|
319 | 0x685AD2238A03E7CCLLU /* 550 */, 0x066484B2AB2FF1DBLLU /* 551 */, |
---|
320 | 0xFE9D5D70EFBF79ECLLU /* 552 */, 0x5B13B9DD9C481854LLU /* 553 */, |
---|
321 | 0x15F0D475ED1509ADLLU /* 554 */, 0x0BEBCD060EC79851LLU /* 555 */, |
---|
322 | 0xD58C6791183AB7F8LLU /* 556 */, 0xD1187C5052F3EEE4LLU /* 557 */, |
---|
323 | 0xC95D1192E54E82FFLLU /* 558 */, 0x86EEA14CB9AC6CA2LLU /* 559 */, |
---|
324 | 0x3485BEB153677D5DLLU /* 560 */, 0xDD191D781F8C492ALLU /* 561 */, |
---|
325 | 0xF60866BAA784EBF9LLU /* 562 */, 0x518F643BA2D08C74LLU /* 563 */, |
---|
326 | 0x8852E956E1087C22LLU /* 564 */, 0xA768CB8DC410AE8DLLU /* 565 */, |
---|
327 | 0x38047726BFEC8E1ALLU /* 566 */, 0xA67738B4CD3B45AALLU /* 567 */, |
---|
328 | 0xAD16691CEC0DDE19LLU /* 568 */, 0xC6D4319380462E07LLU /* 569 */, |
---|
329 | 0xC5A5876D0BA61938LLU /* 570 */, 0x16B9FA1FA58FD840LLU /* 571 */, |
---|
330 | 0x188AB1173CA74F18LLU /* 572 */, 0xABDA2F98C99C021FLLU /* 573 */, |
---|
331 | 0x3E0580AB134AE816LLU /* 574 */, 0x5F3B05B773645ABBLLU /* 575 */, |
---|
332 | 0x2501A2BE5575F2F6LLU /* 576 */, 0x1B2F74004E7E8BA9LLU /* 577 */, |
---|
333 | 0x1CD7580371E8D953LLU /* 578 */, 0x7F6ED89562764E30LLU /* 579 */, |
---|
334 | 0xB15926FF596F003DLLU /* 580 */, 0x9F65293DA8C5D6B9LLU /* 581 */, |
---|
335 | 0x6ECEF04DD690F84CLLU /* 582 */, 0x4782275FFF33AF88LLU /* 583 */, |
---|
336 | 0xE41433083F820801LLU /* 584 */, 0xFD0DFE409A1AF9B5LLU /* 585 */, |
---|
337 | 0x4325A3342CDB396BLLU /* 586 */, 0x8AE77E62B301B252LLU /* 587 */, |
---|
338 | 0xC36F9E9F6655615ALLU /* 588 */, 0x85455A2D92D32C09LLU /* 589 */, |
---|
339 | 0xF2C7DEA949477485LLU /* 590 */, 0x63CFB4C133A39EBALLU /* 591 */, |
---|
340 | 0x83B040CC6EBC5462LLU /* 592 */, 0x3B9454C8FDB326B0LLU /* 593 */, |
---|
341 | 0x56F56A9E87FFD78CLLU /* 594 */, 0x2DC2940D99F42BC6LLU /* 595 */, |
---|
342 | 0x98F7DF096B096E2DLLU /* 596 */, 0x19A6E01E3AD852BFLLU /* 597 */, |
---|
343 | 0x42A99CCBDBD4B40BLLU /* 598 */, 0xA59998AF45E9C559LLU /* 599 */, |
---|
344 | 0x366295E807D93186LLU /* 600 */, 0x6B48181BFAA1F773LLU /* 601 */, |
---|
345 | 0x1FEC57E2157A0A1DLLU /* 602 */, 0x4667446AF6201AD5LLU /* 603 */, |
---|
346 | 0xE615EBCACFB0F075LLU /* 604 */, 0xB8F31F4F68290778LLU /* 605 */, |
---|
347 | 0x22713ED6CE22D11ELLU /* 606 */, 0x3057C1A72EC3C93BLLU /* 607 */, |
---|
348 | 0xCB46ACC37C3F1F2FLLU /* 608 */, 0xDBB893FD02AAF50ELLU /* 609 */, |
---|
349 | 0x331FD92E600B9FCFLLU /* 610 */, 0xA498F96148EA3AD6LLU /* 611 */, |
---|
350 | 0xA8D8426E8B6A83EALLU /* 612 */, 0xA089B274B7735CDCLLU /* 613 */, |
---|
351 | 0x87F6B3731E524A11LLU /* 614 */, 0x118808E5CBC96749LLU /* 615 */, |
---|
352 | 0x9906E4C7B19BD394LLU /* 616 */, 0xAFED7F7E9B24A20CLLU /* 617 */, |
---|
353 | 0x6509EADEEB3644A7LLU /* 618 */, 0x6C1EF1D3E8EF0EDELLU /* 619 */, |
---|
354 | 0xB9C97D43E9798FB4LLU /* 620 */, 0xA2F2D784740C28A3LLU /* 621 */, |
---|
355 | 0x7B8496476197566FLLU /* 622 */, 0x7A5BE3E6B65F069DLLU /* 623 */, |
---|
356 | 0xF96330ED78BE6F10LLU /* 624 */, 0xEEE60DE77A076A15LLU /* 625 */, |
---|
357 | 0x2B4BEE4AA08B9BD0LLU /* 626 */, 0x6A56A63EC7B8894ELLU /* 627 */, |
---|
358 | 0x02121359BA34FEF4LLU /* 628 */, 0x4CBF99F8283703FCLLU /* 629 */, |
---|
359 | 0x398071350CAF30C8LLU /* 630 */, 0xD0A77A89F017687ALLU /* 631 */, |
---|
360 | 0xF1C1A9EB9E423569LLU /* 632 */, 0x8C7976282DEE8199LLU /* 633 */, |
---|
361 | 0x5D1737A5DD1F7ABDLLU /* 634 */, 0x4F53433C09A9FA80LLU /* 635 */, |
---|
362 | 0xFA8B0C53DF7CA1D9LLU /* 636 */, 0x3FD9DCBC886CCB77LLU /* 637 */, |
---|
363 | 0xC040917CA91B4720LLU /* 638 */, 0x7DD00142F9D1DCDFLLU /* 639 */, |
---|
364 | 0x8476FC1D4F387B58LLU /* 640 */, 0x23F8E7C5F3316503LLU /* 641 */, |
---|
365 | 0x032A2244E7E37339LLU /* 642 */, 0x5C87A5D750F5A74BLLU /* 643 */, |
---|
366 | 0x082B4CC43698992ELLU /* 644 */, 0xDF917BECB858F63CLLU /* 645 */, |
---|
367 | 0x3270B8FC5BF86DDALLU /* 646 */, 0x10AE72BB29B5DD76LLU /* 647 */, |
---|
368 | 0x576AC94E7700362BLLU /* 648 */, 0x1AD112DAC61EFB8FLLU /* 649 */, |
---|
369 | 0x691BC30EC5FAA427LLU /* 650 */, 0xFF246311CC327143LLU /* 651 */, |
---|
370 | 0x3142368E30E53206LLU /* 652 */, 0x71380E31E02CA396LLU /* 653 */, |
---|
371 | 0x958D5C960AAD76F1LLU /* 654 */, 0xF8D6F430C16DA536LLU /* 655 */, |
---|
372 | 0xC8FFD13F1BE7E1D2LLU /* 656 */, 0x7578AE66004DDBE1LLU /* 657 */, |
---|
373 | 0x05833F01067BE646LLU /* 658 */, 0xBB34B5AD3BFE586DLLU /* 659 */, |
---|
374 | 0x095F34C9A12B97F0LLU /* 660 */, 0x247AB64525D60CA8LLU /* 661 */, |
---|
375 | 0xDCDBC6F3017477D1LLU /* 662 */, 0x4A2E14D4DECAD24DLLU /* 663 */, |
---|
376 | 0xBDB5E6D9BE0A1EEBLLU /* 664 */, 0x2A7E70F7794301ABLLU /* 665 */, |
---|
377 | 0xDEF42D8A270540FDLLU /* 666 */, 0x01078EC0A34C22C1LLU /* 667 */, |
---|
378 | 0xE5DE511AF4C16387LLU /* 668 */, 0x7EBB3A52BD9A330ALLU /* 669 */, |
---|
379 | 0x77697857AA7D6435LLU /* 670 */, 0x004E831603AE4C32LLU /* 671 */, |
---|
380 | 0xE7A21020AD78E312LLU /* 672 */, 0x9D41A70C6AB420F2LLU /* 673 */, |
---|
381 | 0x28E06C18EA1141E6LLU /* 674 */, 0xD2B28CBD984F6B28LLU /* 675 */, |
---|
382 | 0x26B75F6C446E9D83LLU /* 676 */, 0xBA47568C4D418D7FLLU /* 677 */, |
---|
383 | 0xD80BADBFE6183D8ELLU /* 678 */, 0x0E206D7F5F166044LLU /* 679 */, |
---|
384 | 0xE258A43911CBCA3ELLU /* 680 */, 0x723A1746B21DC0BCLLU /* 681 */, |
---|
385 | 0xC7CAA854F5D7CDD3LLU /* 682 */, 0x7CAC32883D261D9CLLU /* 683 */, |
---|
386 | 0x7690C26423BA942CLLU /* 684 */, 0x17E55524478042B8LLU /* 685 */, |
---|
387 | 0xE0BE477656A2389FLLU /* 686 */, 0x4D289B5E67AB2DA0LLU /* 687 */, |
---|
388 | 0x44862B9C8FBBFD31LLU /* 688 */, 0xB47CC8049D141365LLU /* 689 */, |
---|
389 | 0x822C1B362B91C793LLU /* 690 */, 0x4EB14655FB13DFD8LLU /* 691 */, |
---|
390 | 0x1ECBBA0714E2A97BLLU /* 692 */, 0x6143459D5CDE5F14LLU /* 693 */, |
---|
391 | 0x53A8FBF1D5F0AC89LLU /* 694 */, 0x97EA04D81C5E5B00LLU /* 695 */, |
---|
392 | 0x622181A8D4FDB3F3LLU /* 696 */, 0xE9BCD341572A1208LLU /* 697 */, |
---|
393 | 0x1411258643CCE58ALLU /* 698 */, 0x9144C5FEA4C6E0A4LLU /* 699 */, |
---|
394 | 0x0D33D06565CF620FLLU /* 700 */, 0x54A48D489F219CA1LLU /* 701 */, |
---|
395 | 0xC43E5EAC6D63C821LLU /* 702 */, 0xA9728B3A72770DAFLLU /* 703 */, |
---|
396 | 0xD7934E7B20DF87EFLLU /* 704 */, 0xE35503B61A3E86E5LLU /* 705 */, |
---|
397 | 0xCAE321FBC819D504LLU /* 706 */, 0x129A50B3AC60BFA6LLU /* 707 */, |
---|
398 | 0xCD5E68EA7E9FB6C3LLU /* 708 */, 0xB01C90199483B1C7LLU /* 709 */, |
---|
399 | 0x3DE93CD5C295376CLLU /* 710 */, 0xAED52EDF2AB9AD13LLU /* 711 */, |
---|
400 | 0x2E60F512C0A07884LLU /* 712 */, 0xBC3D86A3E36210C9LLU /* 713 */, |
---|
401 | 0x35269D9B163951CELLU /* 714 */, 0x0C7D6E2AD0CDB5FALLU /* 715 */, |
---|
402 | 0x59E86297D87F5733LLU /* 716 */, 0x298EF221898DB0E7LLU /* 717 */, |
---|
403 | 0x55000029D1A5AA7ELLU /* 718 */, 0x8BC08AE1B5061B45LLU /* 719 */, |
---|
404 | 0xC2C31C2B6C92703ALLU /* 720 */, 0x94CC596BAF25EF42LLU /* 721 */, |
---|
405 | 0x0A1D73DB22540456LLU /* 722 */, 0x04B6A0F9D9C4179ALLU /* 723 */, |
---|
406 | 0xEFFDAFA2AE3D3C60LLU /* 724 */, 0xF7C8075BB49496C4LLU /* 725 */, |
---|
407 | 0x9CC5C7141D1CD4E3LLU /* 726 */, 0x78BD1638218E5534LLU /* 727 */, |
---|
408 | 0xB2F11568F850246ALLU /* 728 */, 0xEDFABCFA9502BC29LLU /* 729 */, |
---|
409 | 0x796CE5F2DA23051BLLU /* 730 */, 0xAAE128B0DC93537CLLU /* 731 */, |
---|
410 | 0x3A493DA0EE4B29AELLU /* 732 */, 0xB5DF6B2C416895D7LLU /* 733 */, |
---|
411 | 0xFCABBD25122D7F37LLU /* 734 */, 0x70810B58105DC4B1LLU /* 735 */, |
---|
412 | 0xE10FDD37F7882A90LLU /* 736 */, 0x524DCAB5518A3F5CLLU /* 737 */, |
---|
413 | 0x3C9E85878451255BLLU /* 738 */, 0x4029828119BD34E2LLU /* 739 */, |
---|
414 | 0x74A05B6F5D3CECCBLLU /* 740 */, 0xB610021542E13ECALLU /* 741 */, |
---|
415 | 0x0FF979D12F59E2ACLLU /* 742 */, 0x6037DA27E4F9CC50LLU /* 743 */, |
---|
416 | 0x5E92975A0DF1847DLLU /* 744 */, 0xD66DE190D3E623FELLU /* 745 */, |
---|
417 | 0x5032D6B87B568048LLU /* 746 */, 0x9A36B7CE8235216ELLU /* 747 */, |
---|
418 | 0x80272A7A24F64B4ALLU /* 748 */, 0x93EFED8B8C6916F7LLU /* 749 */, |
---|
419 | 0x37DDBFF44CCE1555LLU /* 750 */, 0x4B95DB5D4B99BD25LLU /* 751 */, |
---|
420 | 0x92D3FDA169812FC0LLU /* 752 */, 0xFB1A4A9A90660BB6LLU /* 753 */, |
---|
421 | 0x730C196946A4B9B2LLU /* 754 */, 0x81E289AA7F49DA68LLU /* 755 */, |
---|
422 | 0x64669A0F83B1A05FLLU /* 756 */, 0x27B3FF7D9644F48BLLU /* 757 */, |
---|
423 | 0xCC6B615C8DB675B3LLU /* 758 */, 0x674F20B9BCEBBE95LLU /* 759 */, |
---|
424 | 0x6F31238275655982LLU /* 760 */, 0x5AE488713E45CF05LLU /* 761 */, |
---|
425 | 0xBF619F9954C21157LLU /* 762 */, 0xEABAC46040A8EAE9LLU /* 763 */, |
---|
426 | 0x454C6FE9F2C0C1CDLLU /* 764 */, 0x419CF6496412691CLLU /* 765 */, |
---|
427 | 0xD3DC3BEF265B0F70LLU /* 766 */, 0x6D0E60F5C3578A9ELLU /* 767 */, |
---|
428 | 0x5B0E608526323C55LLU /* 768 */, 0x1A46C1A9FA1B59F5LLU /* 769 */, |
---|
429 | 0xA9E245A17C4C8FFALLU /* 770 */, 0x65CA5159DB2955D7LLU /* 771 */, |
---|
430 | 0x05DB0A76CE35AFC2LLU /* 772 */, 0x81EAC77EA9113D45LLU /* 773 */, |
---|
431 | 0x528EF88AB6AC0A0DLLU /* 774 */, 0xA09EA253597BE3FFLLU /* 775 */, |
---|
432 | 0x430DDFB3AC48CD56LLU /* 776 */, 0xC4B3A67AF45CE46FLLU /* 777 */, |
---|
433 | 0x4ECECFD8FBE2D05ELLU /* 778 */, 0x3EF56F10B39935F0LLU /* 779 */, |
---|
434 | 0x0B22D6829CD619C6LLU /* 780 */, 0x17FD460A74DF2069LLU /* 781 */, |
---|
435 | 0x6CF8CC8E8510ED40LLU /* 782 */, 0xD6C824BF3A6ECAA7LLU /* 783 */, |
---|
436 | 0x61243D581A817049LLU /* 784 */, 0x048BACB6BBC163A2LLU /* 785 */, |
---|
437 | 0xD9A38AC27D44CC32LLU /* 786 */, 0x7FDDFF5BAAF410ABLLU /* 787 */, |
---|
438 | 0xAD6D495AA804824BLLU /* 788 */, 0xE1A6A74F2D8C9F94LLU /* 789 */, |
---|
439 | 0xD4F7851235DEE8E3LLU /* 790 */, 0xFD4B7F886540D893LLU /* 791 */, |
---|
440 | 0x247C20042AA4BFDALLU /* 792 */, 0x096EA1C517D1327CLLU /* 793 */, |
---|
441 | 0xD56966B4361A6685LLU /* 794 */, 0x277DA5C31221057DLLU /* 795 */, |
---|
442 | 0x94D59893A43ACFF7LLU /* 796 */, 0x64F0C51CCDC02281LLU /* 797 */, |
---|
443 | 0x3D33BCC4FF6189DBLLU /* 798 */, 0xE005CB184CE66AF1LLU /* 799 */, |
---|
444 | 0xFF5CCD1D1DB99BEALLU /* 800 */, 0xB0B854A7FE42980FLLU /* 801 */, |
---|
445 | 0x7BD46A6A718D4B9FLLU /* 802 */, 0xD10FA8CC22A5FD8CLLU /* 803 */, |
---|
446 | 0xD31484952BE4BD31LLU /* 804 */, 0xC7FA975FCB243847LLU /* 805 */, |
---|
447 | 0x4886ED1E5846C407LLU /* 806 */, 0x28CDDB791EB70B04LLU /* 807 */, |
---|
448 | 0xC2B00BE2F573417FLLU /* 808 */, 0x5C9590452180F877LLU /* 809 */, |
---|
449 | 0x7A6BDDFFF370EB00LLU /* 810 */, 0xCE509E38D6D9D6A4LLU /* 811 */, |
---|
450 | 0xEBEB0F00647FA702LLU /* 812 */, 0x1DCC06CF76606F06LLU /* 813 */, |
---|
451 | 0xE4D9F28BA286FF0ALLU /* 814 */, 0xD85A305DC918C262LLU /* 815 */, |
---|
452 | 0x475B1D8732225F54LLU /* 816 */, 0x2D4FB51668CCB5FELLU /* 817 */, |
---|
453 | 0xA679B9D9D72BBA20LLU /* 818 */, 0x53841C0D912D43A5LLU /* 819 */, |
---|
454 | 0x3B7EAA48BF12A4E8LLU /* 820 */, 0x781E0E47F22F1DDFLLU /* 821 */, |
---|
455 | 0xEFF20CE60AB50973LLU /* 822 */, 0x20D261D19DFFB742LLU /* 823 */, |
---|
456 | 0x16A12B03062A2E39LLU /* 824 */, 0x1960EB2239650495LLU /* 825 */, |
---|
457 | 0x251C16FED50EB8B8LLU /* 826 */, 0x9AC0C330F826016ELLU /* 827 */, |
---|
458 | 0xED152665953E7671LLU /* 828 */, 0x02D63194A6369570LLU /* 829 */, |
---|
459 | 0x5074F08394B1C987LLU /* 830 */, 0x70BA598C90B25CE1LLU /* 831 */, |
---|
460 | 0x794A15810B9742F6LLU /* 832 */, 0x0D5925E9FCAF8C6CLLU /* 833 */, |
---|
461 | 0x3067716CD868744ELLU /* 834 */, 0x910AB077E8D7731BLLU /* 835 */, |
---|
462 | 0x6A61BBDB5AC42F61LLU /* 836 */, 0x93513EFBF0851567LLU /* 837 */, |
---|
463 | 0xF494724B9E83E9D5LLU /* 838 */, 0xE887E1985C09648DLLU /* 839 */, |
---|
464 | 0x34B1D3C675370CFDLLU /* 840 */, 0xDC35E433BC0D255DLLU /* 841 */, |
---|
465 | 0xD0AAB84234131BE0LLU /* 842 */, 0x08042A50B48B7EAFLLU /* 843 */, |
---|
466 | 0x9997C4EE44A3AB35LLU /* 844 */, 0x829A7B49201799D0LLU /* 845 */, |
---|
467 | 0x263B8307B7C54441LLU /* 846 */, 0x752F95F4FD6A6CA6LLU /* 847 */, |
---|
468 | 0x927217402C08C6E5LLU /* 848 */, 0x2A8AB754A795D9EELLU /* 849 */, |
---|
469 | 0xA442F7552F72943DLLU /* 850 */, 0x2C31334E19781208LLU /* 851 */, |
---|
470 | 0x4FA98D7CEAEE6291LLU /* 852 */, 0x55C3862F665DB309LLU /* 853 */, |
---|
471 | 0xBD0610175D53B1F3LLU /* 854 */, 0x46FE6CB840413F27LLU /* 855 */, |
---|
472 | 0x3FE03792DF0CFA59LLU /* 856 */, 0xCFE700372EB85E8FLLU /* 857 */, |
---|
473 | 0xA7BE29E7ADBCE118LLU /* 858 */, 0xE544EE5CDE8431DDLLU /* 859 */, |
---|
474 | 0x8A781B1B41F1873ELLU /* 860 */, 0xA5C94C78A0D2F0E7LLU /* 861 */, |
---|
475 | 0x39412E2877B60728LLU /* 862 */, 0xA1265EF3AFC9A62CLLU /* 863 */, |
---|
476 | 0xBCC2770C6A2506C5LLU /* 864 */, 0x3AB66DD5DCE1CE12LLU /* 865 */, |
---|
477 | 0xE65499D04A675B37LLU /* 866 */, 0x7D8F523481BFD216LLU /* 867 */, |
---|
478 | 0x0F6F64FCEC15F389LLU /* 868 */, 0x74EFBE618B5B13C8LLU /* 869 */, |
---|
479 | 0xACDC82B714273E1DLLU /* 870 */, 0xDD40BFE003199D17LLU /* 871 */, |
---|
480 | 0x37E99257E7E061F8LLU /* 872 */, 0xFA52626904775AAALLU /* 873 */, |
---|
481 | 0x8BBBF63A463D56F9LLU /* 874 */, 0xF0013F1543A26E64LLU /* 875 */, |
---|
482 | 0xA8307E9F879EC898LLU /* 876 */, 0xCC4C27A4150177CCLLU /* 877 */, |
---|
483 | 0x1B432F2CCA1D3348LLU /* 878 */, 0xDE1D1F8F9F6FA013LLU /* 879 */, |
---|
484 | 0x606602A047A7DDD6LLU /* 880 */, 0xD237AB64CC1CB2C7LLU /* 881 */, |
---|
485 | 0x9B938E7225FCD1D3LLU /* 882 */, 0xEC4E03708E0FF476LLU /* 883 */, |
---|
486 | 0xFEB2FBDA3D03C12DLLU /* 884 */, 0xAE0BCED2EE43889ALLU /* 885 */, |
---|
487 | 0x22CB8923EBFB4F43LLU /* 886 */, 0x69360D013CF7396DLLU /* 887 */, |
---|
488 | 0x855E3602D2D4E022LLU /* 888 */, 0x073805BAD01F784CLLU /* 889 */, |
---|
489 | 0x33E17A133852F546LLU /* 890 */, 0xDF4874058AC7B638LLU /* 891 */, |
---|
490 | 0xBA92B29C678AA14ALLU /* 892 */, 0x0CE89FC76CFAADCDLLU /* 893 */, |
---|
491 | 0x5F9D4E0908339E34LLU /* 894 */, 0xF1AFE9291F5923B9LLU /* 895 */, |
---|
492 | 0x6E3480F60F4A265FLLU /* 896 */, 0xEEBF3A2AB29B841CLLU /* 897 */, |
---|
493 | 0xE21938A88F91B4ADLLU /* 898 */, 0x57DFEFF845C6D3C3LLU /* 899 */, |
---|
494 | 0x2F006B0BF62CAAF2LLU /* 900 */, 0x62F479EF6F75EE78LLU /* 901 */, |
---|
495 | 0x11A55AD41C8916A9LLU /* 902 */, 0xF229D29084FED453LLU /* 903 */, |
---|
496 | 0x42F1C27B16B000E6LLU /* 904 */, 0x2B1F76749823C074LLU /* 905 */, |
---|
497 | 0x4B76ECA3C2745360LLU /* 906 */, 0x8C98F463B91691BDLLU /* 907 */, |
---|
498 | 0x14BCC93CF1ADE66ALLU /* 908 */, 0x8885213E6D458397LLU /* 909 */, |
---|
499 | 0x8E177DF0274D4711LLU /* 910 */, 0xB49B73B5503F2951LLU /* 911 */, |
---|
500 | 0x10168168C3F96B6BLLU /* 912 */, 0x0E3D963B63CAB0AELLU /* 913 */, |
---|
501 | 0x8DFC4B5655A1DB14LLU /* 914 */, 0xF789F1356E14DE5CLLU /* 915 */, |
---|
502 | 0x683E68AF4E51DAC1LLU /* 916 */, 0xC9A84F9D8D4B0FD9LLU /* 917 */, |
---|
503 | 0x3691E03F52A0F9D1LLU /* 918 */, 0x5ED86E46E1878E80LLU /* 919 */, |
---|
504 | 0x3C711A0E99D07150LLU /* 920 */, 0x5A0865B20C4E9310LLU /* 921 */, |
---|
505 | 0x56FBFC1FE4F0682ELLU /* 922 */, 0xEA8D5DE3105EDF9BLLU /* 923 */, |
---|
506 | 0x71ABFDB12379187ALLU /* 924 */, 0x2EB99DE1BEE77B9CLLU /* 925 */, |
---|
507 | 0x21ECC0EA33CF4523LLU /* 926 */, 0x59A4D7521805C7A1LLU /* 927 */, |
---|
508 | 0x3896F5EB56AE7C72LLU /* 928 */, 0xAA638F3DB18F75DCLLU /* 929 */, |
---|
509 | 0x9F39358DABE9808ELLU /* 930 */, 0xB7DEFA91C00B72ACLLU /* 931 */, |
---|
510 | 0x6B5541FD62492D92LLU /* 932 */, 0x6DC6DEE8F92E4D5BLLU /* 933 */, |
---|
511 | 0x353F57ABC4BEEA7ELLU /* 934 */, 0x735769D6DA5690CELLU /* 935 */, |
---|
512 | 0x0A234AA642391484LLU /* 936 */, 0xF6F9508028F80D9DLLU /* 937 */, |
---|
513 | 0xB8E319A27AB3F215LLU /* 938 */, 0x31AD9C1151341A4DLLU /* 939 */, |
---|
514 | 0x773C22A57BEF5805LLU /* 940 */, 0x45C7561A07968633LLU /* 941 */, |
---|
515 | 0xF913DA9E249DBE36LLU /* 942 */, 0xDA652D9B78A64C68LLU /* 943 */, |
---|
516 | 0x4C27A97F3BC334EFLLU /* 944 */, 0x76621220E66B17F4LLU /* 945 */, |
---|
517 | 0x967743899ACD7D0BLLU /* 946 */, 0xF3EE5BCAE0ED6782LLU /* 947 */, |
---|
518 | 0x409F753600C879FCLLU /* 948 */, 0x06D09A39B5926DB6LLU /* 949 */, |
---|
519 | 0x6F83AEB0317AC588LLU /* 950 */, 0x01E6CA4A86381F21LLU /* 951 */, |
---|
520 | 0x66FF3462D19F3025LLU /* 952 */, 0x72207C24DDFD3BFBLLU /* 953 */, |
---|
521 | 0x4AF6B6D3E2ECE2EBLLU /* 954 */, 0x9C994DBEC7EA08DELLU /* 955 */, |
---|
522 | 0x49ACE597B09A8BC4LLU /* 956 */, 0xB38C4766CF0797BALLU /* 957 */, |
---|
523 | 0x131B9373C57C2A75LLU /* 958 */, 0xB1822CCE61931E58LLU /* 959 */, |
---|
524 | 0x9D7555B909BA1C0CLLU /* 960 */, 0x127FAFDD937D11D2LLU /* 961 */, |
---|
525 | 0x29DA3BADC66D92E4LLU /* 962 */, 0xA2C1D57154C2ECBCLLU /* 963 */, |
---|
526 | 0x58C5134D82F6FE24LLU /* 964 */, 0x1C3AE3515B62274FLLU /* 965 */, |
---|
527 | 0xE907C82E01CB8126LLU /* 966 */, 0xF8ED091913E37FCBLLU /* 967 */, |
---|
528 | 0x3249D8F9C80046C9LLU /* 968 */, 0x80CF9BEDE388FB63LLU /* 969 */, |
---|
529 | 0x1881539A116CF19ELLU /* 970 */, 0x5103F3F76BD52457LLU /* 971 */, |
---|
530 | 0x15B7E6F5AE47F7A8LLU /* 972 */, 0xDBD7C6DED47E9CCFLLU /* 973 */, |
---|
531 | 0x44E55C410228BB1ALLU /* 974 */, 0xB647D4255EDB4E99LLU /* 975 */, |
---|
532 | 0x5D11882BB8AAFC30LLU /* 976 */, 0xF5098BBB29D3212ALLU /* 977 */, |
---|
533 | 0x8FB5EA14E90296B3LLU /* 978 */, 0x677B942157DD025ALLU /* 979 */, |
---|
534 | 0xFB58E7C0A390ACB5LLU /* 980 */, 0x89D3674C83BD4A01LLU /* 981 */, |
---|
535 | 0x9E2DA4DF4BF3B93BLLU /* 982 */, 0xFCC41E328CAB4829LLU /* 983 */, |
---|
536 | 0x03F38C96BA582C52LLU /* 984 */, 0xCAD1BDBD7FD85DB2LLU /* 985 */, |
---|
537 | 0xBBB442C16082AE83LLU /* 986 */, 0xB95FE86BA5DA9AB0LLU /* 987 */, |
---|
538 | 0xB22E04673771A93FLLU /* 988 */, 0x845358C9493152D8LLU /* 989 */, |
---|
539 | 0xBE2A488697B4541ELLU /* 990 */, 0x95A2DC2DD38E6966LLU /* 991 */, |
---|
540 | 0xC02C11AC923C852BLLU /* 992 */, 0x2388B1990DF2A87BLLU /* 993 */, |
---|
541 | 0x7C8008FA1B4F37BELLU /* 994 */, 0x1F70D0C84D54E503LLU /* 995 */, |
---|
542 | 0x5490ADEC7ECE57D4LLU /* 996 */, 0x002B3C27D9063A3ALLU /* 997 */, |
---|
543 | 0x7EAEA3848030A2BFLLU /* 998 */, 0xC602326DED2003C0LLU /* 999 */, |
---|
544 | 0x83A7287D69A94086LLU /* 1000 */, 0xC57A5FCB30F57A8ALLU /* 1001 */, |
---|
545 | 0xB56844E479EBE779LLU /* 1002 */, 0xA373B40F05DCBCE9LLU /* 1003 */, |
---|
546 | 0xD71A786E88570EE2LLU /* 1004 */, 0x879CBACDBDE8F6A0LLU /* 1005 */, |
---|
547 | 0x976AD1BCC164A32FLLU /* 1006 */, 0xAB21E25E9666D78BLLU /* 1007 */, |
---|
548 | 0x901063AAE5E5C33CLLU /* 1008 */, 0x9818B34448698D90LLU /* 1009 */, |
---|
549 | 0xE36487AE3E1E8ABBLLU /* 1010 */, 0xAFBDF931893BDCB4LLU /* 1011 */, |
---|
550 | 0x6345A0DC5FBBD519LLU /* 1012 */, 0x8628FE269B9465CALLU /* 1013 */, |
---|
551 | 0x1E5D01603F9C51ECLLU /* 1014 */, 0x4DE44006A15049B7LLU /* 1015 */, |
---|
552 | 0xBF6C70E5F776CBB1LLU /* 1016 */, 0x411218F2EF552BEDLLU /* 1017 */, |
---|
553 | 0xCB0C0708705A36A3LLU /* 1018 */, 0xE74D14754F986044LLU /* 1019 */, |
---|
554 | 0xCD56D9430EA8280ELLU /* 1020 */, 0xC12591D7535F5065LLU /* 1021 */, |
---|
555 | 0xC83223F1720AEF96LLU /* 1022 */, 0xC3A0396F7363A51FLLU /* 1023 */ |
---|
556 | }; |
---|
557 | |
---|
558 | #define sbox1 (table+256*0) |
---|
559 | #define sbox2 (table+256*1) |
---|
560 | #define sbox3 (table+256*2) |
---|
561 | #define sbox4 (table+256*3) |
---|
562 | |
---|
563 | int roar_hash_tiger_init(struct roar_hash_tiger * state) { |
---|
564 | if ( state == NULL ) |
---|
565 | return -1; |
---|
566 | |
---|
567 | memset(state, 0, sizeof(struct roar_hash_tiger)); |
---|
568 | |
---|
569 | state->a = 0x0123456789ABCDEFLLU; |
---|
570 | state->b = 0xFEDCBA9876543210LLU; |
---|
571 | state->c = 0xF096A5B4C3B2E187LLU; |
---|
572 | |
---|
573 | state->inlen = 0; |
---|
574 | state->blocks = 0; |
---|
575 | |
---|
576 | state->is_final = 0; |
---|
577 | |
---|
578 | return 0; |
---|
579 | } |
---|
580 | |
---|
581 | int roar_hash_tiger_uninit(struct roar_hash_tiger * state) { |
---|
582 | (void)state; |
---|
583 | return 0; |
---|
584 | } |
---|
585 | |
---|
586 | int roar_hash_tiger_init_from_pstate(struct roar_hash_tiger * state, void * oldstate) { |
---|
587 | uint64_t blocks; |
---|
588 | unsigned char * p = oldstate; |
---|
589 | |
---|
590 | if ( state == NULL || oldstate == NULL ) |
---|
591 | return -1; |
---|
592 | |
---|
593 | if ( roar_hash_tiger_init(state) == -1 ) |
---|
594 | return -1; |
---|
595 | |
---|
596 | #if BYTE_ORDER == BIG_ENDIAN && !defined(ROAR_TARGET_WIN32) |
---|
597 | #define _in(m) do { m = *(uint64_t*)p; p += 8; } while(0) |
---|
598 | #elif BYTE_ORDER == LITTLE_ENDIAN |
---|
599 | #define _S(x, n) (((uint64_t)(p[(n)])) << (uint64_t)(x)) |
---|
600 | #define _in(m) do { m = (uint64_t)(_S(56, 0) | _S(48, 1) | _S(40, 2) | _S(32, 3) | \ |
---|
601 | _S(24, 4) | _S(16, 5) | _S( 8, 6) | _S( 0, 7) \ |
---|
602 | ); p += 8; } while (0) |
---|
603 | #else |
---|
604 | ROAR_ERR("roar_hash_tiger_init_from_pstate(state=%p, ...): Tiger not implemented for non little or big endian systems!", state); |
---|
605 | return -1; |
---|
606 | #define _in |
---|
607 | #endif |
---|
608 | _in(state->a); |
---|
609 | _in(state->b); |
---|
610 | _in(state->c); |
---|
611 | _in(blocks); |
---|
612 | |
---|
613 | state->blocks = blocks; |
---|
614 | #undef _in |
---|
615 | |
---|
616 | return 0; |
---|
617 | } |
---|
618 | |
---|
619 | static int roar_hash_tiger_export(struct roar_hash_tiger * state, void * newstate, size_t * len, int is_pstate) { |
---|
620 | unsigned char * p = newstate; |
---|
621 | size_t needlen; |
---|
622 | uint64_t blocks; |
---|
623 | |
---|
624 | if ( is_pstate ) { |
---|
625 | needlen = PSTATE_LEN; |
---|
626 | } else { |
---|
627 | needlen = STATE_LEN; |
---|
628 | } |
---|
629 | |
---|
630 | if ( state == NULL || newstate == NULL || len == NULL ) |
---|
631 | return -1; |
---|
632 | |
---|
633 | if ( state->inlen != 0 ) |
---|
634 | return -1; |
---|
635 | |
---|
636 | if ( *len < needlen ) |
---|
637 | return -1; |
---|
638 | |
---|
639 | *len = needlen; |
---|
640 | |
---|
641 | #if BYTE_ORDER == BIG_ENDIAN && !defined(ROAR_TARGET_WIN32) |
---|
642 | #define _out(m) do { *(uint64_t*)p = m ; p += 8; } while(0) |
---|
643 | #elif BYTE_ORDER == LITTLE_ENDIAN |
---|
644 | #define _out(m) do { *p++ = m >> 56; *p++ = m >> 48; \ |
---|
645 | *p++ = m >> 40; *p++ = m >> 32; \ |
---|
646 | *p++ = m >> 24; *p++ = m >> 16; \ |
---|
647 | *p++ = m >> 8; *p++ = m; } while(0) |
---|
648 | #else |
---|
649 | ROAR_ERR("roar_hash_tiger_export(state=%p, ...): Tiger not implemented for non little or big endian systems!", state); |
---|
650 | return -1; |
---|
651 | #define _out |
---|
652 | #endif |
---|
653 | _out(state->a); |
---|
654 | _out(state->b); |
---|
655 | _out(state->c); |
---|
656 | if ( is_pstate ) { |
---|
657 | blocks = state->blocks; |
---|
658 | _out(blocks); |
---|
659 | } |
---|
660 | #undef _out |
---|
661 | |
---|
662 | return 0; |
---|
663 | } |
---|
664 | |
---|
665 | int roar_hash_tiger_to_pstate(struct roar_hash_tiger * state, void * newstate, size_t * len) { |
---|
666 | return roar_hash_tiger_export(state, newstate, len, 1); |
---|
667 | } |
---|
668 | |
---|
669 | ssize_t roar_hash_tiger_statelen(struct roar_hash_tiger * state) { |
---|
670 | (void)state; |
---|
671 | return PSTATE_LEN; |
---|
672 | } |
---|
673 | |
---|
674 | int roar_hash_tiger_finalize(struct roar_hash_tiger * state) { |
---|
675 | uint64_t len; |
---|
676 | |
---|
677 | if ( state == NULL ) |
---|
678 | return -1; |
---|
679 | |
---|
680 | if ( state->is_final ) |
---|
681 | return 0; |
---|
682 | |
---|
683 | len = state->blocks * BLOCK_LEN + state->inlen; |
---|
684 | len *= 8; // byte -> bit |
---|
685 | |
---|
686 | if ( state->inlen < 56 ) { /* enough room */ |
---|
687 | state->inbuf[state->inlen++] = 0x01; /* pad */ |
---|
688 | while ( state->inlen < 56 ) |
---|
689 | state->inbuf[state->inlen++] = 0; /* pad */ |
---|
690 | } else { /* need one extra block */ |
---|
691 | state->inbuf[state->inlen++] = 0x01; /* pad character */ |
---|
692 | while( state->inlen < 64 ) |
---|
693 | state->inbuf[state->inlen++] = 0; |
---|
694 | |
---|
695 | roar_hash_tiger_proc_block(state, state->inbuf); |
---|
696 | memset(state->inbuf, 0, 56); /* fill next block with zeroes */ |
---|
697 | } |
---|
698 | |
---|
699 | state->inbuf[56] = (len >> 0) & 0xFF; |
---|
700 | state->inbuf[57] = (len >> 8) & 0xFF; |
---|
701 | state->inbuf[58] = (len >> 16) & 0xFF; |
---|
702 | state->inbuf[59] = (len >> 24) & 0xFF; |
---|
703 | state->inbuf[60] = (len >> 32) & 0xFF; |
---|
704 | state->inbuf[61] = (len >> 40) & 0xFF; |
---|
705 | state->inbuf[62] = (len >> 48) & 0xFF; |
---|
706 | state->inbuf[63] = (len >> 56) & 0xFF; |
---|
707 | |
---|
708 | roar_hash_tiger_proc_block(state, state->inbuf); |
---|
709 | |
---|
710 | state->inlen = 0; |
---|
711 | state->is_final = 1; |
---|
712 | |
---|
713 | return 0; |
---|
714 | } |
---|
715 | |
---|
716 | int roar_hash_tiger_get_digest(struct roar_hash_tiger * state, void * digest, size_t * len) { |
---|
717 | if ( state == NULL || digest == NULL ) |
---|
718 | return -1; |
---|
719 | |
---|
720 | if ( roar_hash_tiger_finalize(state) == -1 ) |
---|
721 | return -1; |
---|
722 | |
---|
723 | return roar_hash_tiger_export(state, digest, len, 0); |
---|
724 | } |
---|
725 | |
---|
726 | static void tiger_round( uint64_t * ra, uint64_t * rb, uint64_t * rc, uint64_t x, uint64_t mul) { |
---|
727 | uint64_t a = *ra; |
---|
728 | uint64_t b = *rb; |
---|
729 | uint64_t c = *rc; |
---|
730 | |
---|
731 | c ^= x; |
---|
732 | a -= ( sbox1[ c & 0xff ] ^ sbox2[ (c >> 16) & 0xff ] |
---|
733 | ^ sbox3[ (c >> 32) & 0xff ] ^ sbox4[ (c >> 48) & 0xff ]); |
---|
734 | b += ( sbox4[ (c >> 8) & 0xff ] ^ sbox3[ (c >> 24) & 0xff ] |
---|
735 | ^ sbox2[ (c >> 40) & 0xff ] ^ sbox1[ (c >> 56) & 0xff ]); |
---|
736 | b *= mul; |
---|
737 | |
---|
738 | *ra = a; |
---|
739 | *rb = b; |
---|
740 | *rc = c; |
---|
741 | } |
---|
742 | |
---|
743 | static void pass(uint64_t * ra, uint64_t * rb, uint64_t * rc, uint64_t * x, uint64_t mul) { |
---|
744 | tiger_round(ra, rb, rc, x[0], mul); |
---|
745 | tiger_round(rb, rc, ra, x[1], mul); |
---|
746 | tiger_round(rc, ra, rb, x[2], mul); |
---|
747 | tiger_round(ra, rb, rc, x[3], mul); |
---|
748 | tiger_round(rb, rc, ra, x[4], mul); |
---|
749 | tiger_round(rc, ra, rb, x[5], mul); |
---|
750 | tiger_round(ra, rb, rc, x[6], mul); |
---|
751 | tiger_round(rb, rc, ra, x[7], mul); |
---|
752 | } |
---|
753 | |
---|
754 | static void key_schedule(uint64_t * x) { |
---|
755 | x[0] -= x[7] ^ 0xa5a5a5a5a5a5a5a5LL; |
---|
756 | x[1] ^= x[0]; |
---|
757 | x[2] += x[1]; |
---|
758 | x[3] -= x[2] ^ ((~x[1]) << 19 ); |
---|
759 | x[4] ^= x[3]; |
---|
760 | x[5] += x[4]; |
---|
761 | x[6] -= x[5] ^ ((~x[4]) >> 23 ); |
---|
762 | x[7] ^= x[6]; |
---|
763 | x[0] += x[7]; |
---|
764 | x[1] -= x[0] ^ ((~x[7]) << 19 ); |
---|
765 | x[2] ^= x[1]; |
---|
766 | x[3] += x[2]; |
---|
767 | x[4] -= x[3] ^ ((~x[2]) >> 23 ); |
---|
768 | x[5] ^= x[4]; |
---|
769 | x[6] += x[5]; |
---|
770 | x[7] -= x[6] ^ 0x0123456789abcdefLL; |
---|
771 | } |
---|
772 | |
---|
773 | int roar_hash_tiger_proc_block(struct roar_hash_tiger * state, void * block) { |
---|
774 | #if BYTE_ORDER == BIG_ENDIAN && !defined(ROAR_TARGET_WIN32) |
---|
775 | uint64_t * block64 = block; |
---|
776 | #endif |
---|
777 | uint64_t a, b, c, aa, bb, cc; |
---|
778 | uint64_t x[8]; |
---|
779 | |
---|
780 | ROAR_DBG("roar_hash_tiger_proc_block(state=%p, block=%p) = ?", state, block); |
---|
781 | |
---|
782 | if ( state == NULL || block == NULL ) |
---|
783 | return -1; |
---|
784 | |
---|
785 | #if BYTE_ORDER == BIG_ENDIAN && !defined(ROAR_TARGET_WIN32) |
---|
786 | #define MKWORD(d,n) \ |
---|
787 | ( ((uint64_t)(d)[8*(n)+7]) << 56 | ((uint64_t)(d)[8*(n)+6]) << 48 \ |
---|
788 | | ((uint64_t)(d)[8*(n)+5]) << 40 | ((uint64_t)(d)[8*(n)+4]) << 32 \ |
---|
789 | | ((uint64_t)(d)[8*(n)+3]) << 24 | ((uint64_t)(d)[8*(n)+2]) << 16 \ |
---|
790 | | ((uint64_t)(d)[8*(n)+1]) << 8 | ((uint64_t)(d)[8*(n) ]) ) |
---|
791 | x[0] = MKWORD(block64, 0); |
---|
792 | x[1] = MKWORD(block64, 1); |
---|
793 | x[2] = MKWORD(block64, 2); |
---|
794 | x[3] = MKWORD(block64, 3); |
---|
795 | x[4] = MKWORD(block64, 4); |
---|
796 | x[5] = MKWORD(block64, 5); |
---|
797 | x[6] = MKWORD(block64, 6); |
---|
798 | x[7] = MKWORD(block64, 7); |
---|
799 | #undef MKWORD |
---|
800 | #elif BYTE_ORDER == LITTLE_ENDIAN |
---|
801 | memcpy(x, block, 64); |
---|
802 | #else |
---|
803 | ROAR_ERR("roar_hash_tiger_proc_block(state=%p, block=%p): Tiger not implemented for non little or big endian systems!", state, block); |
---|
804 | return -1; |
---|
805 | #endif |
---|
806 | |
---|
807 | // save_abc |
---|
808 | aa = a = state->a; |
---|
809 | bb = b = state->b; |
---|
810 | cc = c = state->c; |
---|
811 | |
---|
812 | // main calcs: |
---|
813 | pass(&a, &b, &c, x, 5); |
---|
814 | key_schedule(x); |
---|
815 | pass(&c, &a, &b, x, 7); |
---|
816 | key_schedule(x); |
---|
817 | pass(&b, &c, &a, x, 9); |
---|
818 | |
---|
819 | // feedforward |
---|
820 | state->a = a ^ aa; |
---|
821 | state->b = b - bb; |
---|
822 | state->c = c + cc; |
---|
823 | |
---|
824 | state->blocks++; |
---|
825 | |
---|
826 | ROAR_DBG("roar_hash_tiger_proc_block(state=%p, block=%p) = 0", state, block); |
---|
827 | return 0; |
---|
828 | } |
---|
829 | |
---|
830 | ssize_t roar_hash_tiger_blocklen(struct roar_hash_tiger * state) { |
---|
831 | (void)state; |
---|
832 | return BLOCK_LEN; |
---|
833 | } |
---|
834 | |
---|
835 | int roar_hash_tiger_proc(struct roar_hash_tiger * state, void * data, size_t len) { |
---|
836 | size_t needlen; |
---|
837 | |
---|
838 | ROAR_DBG("roar_hash_tiger_proc(state=%p, data=%p, len=%llu) = ?", state, data, (long long unsigned int)len); |
---|
839 | |
---|
840 | if ( state == NULL ) |
---|
841 | return -1; |
---|
842 | |
---|
843 | if ( len == 0 ) |
---|
844 | return 0; |
---|
845 | |
---|
846 | if ( data == NULL ) |
---|
847 | return -1; |
---|
848 | |
---|
849 | if ( state->inlen ) { |
---|
850 | needlen = BLOCK_LEN - state->inlen; |
---|
851 | ROAR_DBG("roar_hash_tiger_proc(state=%p, ...): adding %llu byte to inbuf block", state, (long long unsigned int)needlen); |
---|
852 | |
---|
853 | if ( len < needlen ) { |
---|
854 | ROAR_DBG("roar_hash_tiger_proc(state=%p, ...): inbufblock is short", state); |
---|
855 | memcpy(state->inbuf + state->inlen, data, len); |
---|
856 | state->inlen += len; |
---|
857 | ROAR_DBG("roar_hash_tiger_proc(state=%p, ...) = 0", state); |
---|
858 | return 0; |
---|
859 | } |
---|
860 | |
---|
861 | memcpy(state->inbuf + state->inlen, data, needlen); |
---|
862 | len -= needlen; |
---|
863 | data += needlen; |
---|
864 | |
---|
865 | state->inlen = 0; |
---|
866 | |
---|
867 | if ( roar_hash_tiger_proc_block(state, state->inbuf) == -1 ) |
---|
868 | return -1; |
---|
869 | } |
---|
870 | |
---|
871 | for (; len >= BLOCK_LEN; ) { |
---|
872 | ROAR_DBG("roar_hash_tiger_proc(state=%p, ...): running normal block...", state); |
---|
873 | |
---|
874 | if ( roar_hash_tiger_proc_block(state, data) == -1 ) |
---|
875 | return -1; |
---|
876 | |
---|
877 | len -= BLOCK_LEN; |
---|
878 | data += BLOCK_LEN; |
---|
879 | } |
---|
880 | |
---|
881 | if ( len ) { |
---|
882 | ROAR_DBG("roar_hash_tiger_proc(state=%p, ...): adding %llu byte to new inbuf", state, (long long unsigned int)len); |
---|
883 | memcpy(state->inbuf, data, len); |
---|
884 | state->inlen = len; |
---|
885 | } |
---|
886 | |
---|
887 | ROAR_DBG("roar_hash_tiger_proc(state=%p, ...) = 0", state); |
---|
888 | return 0; |
---|
889 | } |
---|
890 | |
---|
891 | //ll |
---|