staging: crypto: skein: cleanup >80 character lines
[linux-2.6/btrfs-unstable.git] / drivers / staging / skein / threefish256Block.c
blob2ae746a641ae07664c545b25eeccdde2bc036ec5
1 #include <linux/string.h>
2 #include <threefishApi.h>
5 void threefishEncrypt256(struct threefish_key *keyCtx, u64 *input, u64 *output)
7 u64 b0 = input[0], b1 = input[1],
8 b2 = input[2], b3 = input[3];
9 u64 k0 = keyCtx->key[0], k1 = keyCtx->key[1],
10 k2 = keyCtx->key[2], k3 = keyCtx->key[3],
11 k4 = keyCtx->key[4];
12 u64 t0 = keyCtx->tweak[0], t1 = keyCtx->tweak[1],
13 t2 = keyCtx->tweak[2];
15 b1 += k1 + t0;
16 b0 += b1 + k0;
17 b1 = ((b1 << 14) | (b1 >> (64 - 14))) ^ b0;
19 b3 += k3;
20 b2 += b3 + k2 + t1;
21 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b2;
23 b0 += b3;
24 b3 = ((b3 << 52) | (b3 >> (64 - 52))) ^ b0;
26 b2 += b1;
27 b1 = ((b1 << 57) | (b1 >> (64 - 57))) ^ b2;
29 b0 += b1;
30 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b0;
32 b2 += b3;
33 b3 = ((b3 << 40) | (b3 >> (64 - 40))) ^ b2;
35 b0 += b3;
36 b3 = ((b3 << 5) | (b3 >> (64 - 5))) ^ b0;
38 b2 += b1;
39 b1 = ((b1 << 37) | (b1 >> (64 - 37))) ^ b2;
41 b1 += k2 + t1;
42 b0 += b1 + k1;
43 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b0;
45 b3 += k4 + 1;
46 b2 += b3 + k3 + t2;
47 b3 = ((b3 << 33) | (b3 >> (64 - 33))) ^ b2;
49 b0 += b3;
50 b3 = ((b3 << 46) | (b3 >> (64 - 46))) ^ b0;
52 b2 += b1;
53 b1 = ((b1 << 12) | (b1 >> (64 - 12))) ^ b2;
55 b0 += b1;
56 b1 = ((b1 << 58) | (b1 >> (64 - 58))) ^ b0;
58 b2 += b3;
59 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b2;
61 b0 += b3;
62 b3 = ((b3 << 32) | (b3 >> (64 - 32))) ^ b0;
64 b2 += b1;
65 b1 = ((b1 << 32) | (b1 >> (64 - 32))) ^ b2;
68 b1 += k3 + t2;
69 b0 += b1 + k2;
70 b1 = ((b1 << 14) | (b1 >> (64 - 14))) ^ b0;
72 b3 += k0 + 2;
73 b2 += b3 + k4 + t0;
74 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b2;
76 b0 += b3;
77 b3 = ((b3 << 52) | (b3 >> (64 - 52))) ^ b0;
79 b2 += b1;
80 b1 = ((b1 << 57) | (b1 >> (64 - 57))) ^ b2;
82 b0 += b1;
83 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b0;
85 b2 += b3;
86 b3 = ((b3 << 40) | (b3 >> (64 - 40))) ^ b2;
88 b0 += b3;
89 b3 = ((b3 << 5) | (b3 >> (64 - 5))) ^ b0;
91 b2 += b1;
92 b1 = ((b1 << 37) | (b1 >> (64 - 37))) ^ b2;
94 b1 += k4 + t0;
95 b0 += b1 + k3;
96 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b0;
98 b3 += k1 + 3;
99 b2 += b3 + k0 + t1;
100 b3 = ((b3 << 33) | (b3 >> (64 - 33))) ^ b2;
102 b0 += b3;
103 b3 = ((b3 << 46) | (b3 >> (64 - 46))) ^ b0;
105 b2 += b1;
106 b1 = ((b1 << 12) | (b1 >> (64 - 12))) ^ b2;
108 b0 += b1;
109 b1 = ((b1 << 58) | (b1 >> (64 - 58))) ^ b0;
111 b2 += b3;
112 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b2;
114 b0 += b3;
115 b3 = ((b3 << 32) | (b3 >> (64 - 32))) ^ b0;
117 b2 += b1;
118 b1 = ((b1 << 32) | (b1 >> (64 - 32))) ^ b2;
121 b1 += k0 + t1;
122 b0 += b1 + k4;
123 b1 = ((b1 << 14) | (b1 >> (64 - 14))) ^ b0;
125 b3 += k2 + 4;
126 b2 += b3 + k1 + t2;
127 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b2;
129 b0 += b3;
130 b3 = ((b3 << 52) | (b3 >> (64 - 52))) ^ b0;
132 b2 += b1;
133 b1 = ((b1 << 57) | (b1 >> (64 - 57))) ^ b2;
135 b0 += b1;
136 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b0;
138 b2 += b3;
139 b3 = ((b3 << 40) | (b3 >> (64 - 40))) ^ b2;
141 b0 += b3;
142 b3 = ((b3 << 5) | (b3 >> (64 - 5))) ^ b0;
144 b2 += b1;
145 b1 = ((b1 << 37) | (b1 >> (64 - 37))) ^ b2;
147 b1 += k1 + t2;
148 b0 += b1 + k0;
149 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b0;
151 b3 += k3 + 5;
152 b2 += b3 + k2 + t0;
153 b3 = ((b3 << 33) | (b3 >> (64 - 33))) ^ b2;
155 b0 += b3;
156 b3 = ((b3 << 46) | (b3 >> (64 - 46))) ^ b0;
158 b2 += b1;
159 b1 = ((b1 << 12) | (b1 >> (64 - 12))) ^ b2;
161 b0 += b1;
162 b1 = ((b1 << 58) | (b1 >> (64 - 58))) ^ b0;
164 b2 += b3;
165 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b2;
167 b0 += b3;
168 b3 = ((b3 << 32) | (b3 >> (64 - 32))) ^ b0;
170 b2 += b1;
171 b1 = ((b1 << 32) | (b1 >> (64 - 32))) ^ b2;
174 b1 += k2 + t0;
175 b0 += b1 + k1;
176 b1 = ((b1 << 14) | (b1 >> (64 - 14))) ^ b0;
178 b3 += k4 + 6;
179 b2 += b3 + k3 + t1;
180 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b2;
182 b0 += b3;
183 b3 = ((b3 << 52) | (b3 >> (64 - 52))) ^ b0;
185 b2 += b1;
186 b1 = ((b1 << 57) | (b1 >> (64 - 57))) ^ b2;
188 b0 += b1;
189 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b0;
191 b2 += b3;
192 b3 = ((b3 << 40) | (b3 >> (64 - 40))) ^ b2;
194 b0 += b3;
195 b3 = ((b3 << 5) | (b3 >> (64 - 5))) ^ b0;
197 b2 += b1;
198 b1 = ((b1 << 37) | (b1 >> (64 - 37))) ^ b2;
200 b1 += k3 + t1;
201 b0 += b1 + k2;
202 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b0;
204 b3 += k0 + 7;
205 b2 += b3 + k4 + t2;
206 b3 = ((b3 << 33) | (b3 >> (64 - 33))) ^ b2;
208 b0 += b3;
209 b3 = ((b3 << 46) | (b3 >> (64 - 46))) ^ b0;
211 b2 += b1;
212 b1 = ((b1 << 12) | (b1 >> (64 - 12))) ^ b2;
214 b0 += b1;
215 b1 = ((b1 << 58) | (b1 >> (64 - 58))) ^ b0;
217 b2 += b3;
218 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b2;
220 b0 += b3;
221 b3 = ((b3 << 32) | (b3 >> (64 - 32))) ^ b0;
223 b2 += b1;
224 b1 = ((b1 << 32) | (b1 >> (64 - 32))) ^ b2;
227 b1 += k4 + t2;
228 b0 += b1 + k3;
229 b1 = ((b1 << 14) | (b1 >> (64 - 14))) ^ b0;
231 b3 += k1 + 8;
232 b2 += b3 + k0 + t0;
233 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b2;
235 b0 += b3;
236 b3 = ((b3 << 52) | (b3 >> (64 - 52))) ^ b0;
238 b2 += b1;
239 b1 = ((b1 << 57) | (b1 >> (64 - 57))) ^ b2;
241 b0 += b1;
242 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b0;
244 b2 += b3;
245 b3 = ((b3 << 40) | (b3 >> (64 - 40))) ^ b2;
247 b0 += b3;
248 b3 = ((b3 << 5) | (b3 >> (64 - 5))) ^ b0;
250 b2 += b1;
251 b1 = ((b1 << 37) | (b1 >> (64 - 37))) ^ b2;
253 b1 += k0 + t0;
254 b0 += b1 + k4;
255 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b0;
257 b3 += k2 + 9;
258 b2 += b3 + k1 + t1;
259 b3 = ((b3 << 33) | (b3 >> (64 - 33))) ^ b2;
261 b0 += b3;
262 b3 = ((b3 << 46) | (b3 >> (64 - 46))) ^ b0;
264 b2 += b1;
265 b1 = ((b1 << 12) | (b1 >> (64 - 12))) ^ b2;
267 b0 += b1;
268 b1 = ((b1 << 58) | (b1 >> (64 - 58))) ^ b0;
270 b2 += b3;
271 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b2;
273 b0 += b3;
274 b3 = ((b3 << 32) | (b3 >> (64 - 32))) ^ b0;
276 b2 += b1;
277 b1 = ((b1 << 32) | (b1 >> (64 - 32))) ^ b2;
280 b1 += k1 + t1;
281 b0 += b1 + k0;
282 b1 = ((b1 << 14) | (b1 >> (64 - 14))) ^ b0;
284 b3 += k3 + 10;
285 b2 += b3 + k2 + t2;
286 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b2;
288 b0 += b3;
289 b3 = ((b3 << 52) | (b3 >> (64 - 52))) ^ b0;
291 b2 += b1;
292 b1 = ((b1 << 57) | (b1 >> (64 - 57))) ^ b2;
294 b0 += b1;
295 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b0;
297 b2 += b3;
298 b3 = ((b3 << 40) | (b3 >> (64 - 40))) ^ b2;
300 b0 += b3;
301 b3 = ((b3 << 5) | (b3 >> (64 - 5))) ^ b0;
303 b2 += b1;
304 b1 = ((b1 << 37) | (b1 >> (64 - 37))) ^ b2;
306 b1 += k2 + t2;
307 b0 += b1 + k1;
308 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b0;
310 b3 += k4 + 11;
311 b2 += b3 + k3 + t0;
312 b3 = ((b3 << 33) | (b3 >> (64 - 33))) ^ b2;
314 b0 += b3;
315 b3 = ((b3 << 46) | (b3 >> (64 - 46))) ^ b0;
317 b2 += b1;
318 b1 = ((b1 << 12) | (b1 >> (64 - 12))) ^ b2;
320 b0 += b1;
321 b1 = ((b1 << 58) | (b1 >> (64 - 58))) ^ b0;
323 b2 += b3;
324 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b2;
326 b0 += b3;
327 b3 = ((b3 << 32) | (b3 >> (64 - 32))) ^ b0;
329 b2 += b1;
330 b1 = ((b1 << 32) | (b1 >> (64 - 32))) ^ b2;
333 b1 += k3 + t0;
334 b0 += b1 + k2;
335 b1 = ((b1 << 14) | (b1 >> (64 - 14))) ^ b0;
337 b3 += k0 + 12;
338 b2 += b3 + k4 + t1;
339 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b2;
341 b0 += b3;
342 b3 = ((b3 << 52) | (b3 >> (64 - 52))) ^ b0;
344 b2 += b1;
345 b1 = ((b1 << 57) | (b1 >> (64 - 57))) ^ b2;
347 b0 += b1;
348 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b0;
350 b2 += b3;
351 b3 = ((b3 << 40) | (b3 >> (64 - 40))) ^ b2;
353 b0 += b3;
354 b3 = ((b3 << 5) | (b3 >> (64 - 5))) ^ b0;
356 b2 += b1;
357 b1 = ((b1 << 37) | (b1 >> (64 - 37))) ^ b2;
359 b1 += k4 + t1;
360 b0 += b1 + k3;
361 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b0;
363 b3 += k1 + 13;
364 b2 += b3 + k0 + t2;
365 b3 = ((b3 << 33) | (b3 >> (64 - 33))) ^ b2;
367 b0 += b3;
368 b3 = ((b3 << 46) | (b3 >> (64 - 46))) ^ b0;
370 b2 += b1;
371 b1 = ((b1 << 12) | (b1 >> (64 - 12))) ^ b2;
373 b0 += b1;
374 b1 = ((b1 << 58) | (b1 >> (64 - 58))) ^ b0;
376 b2 += b3;
377 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b2;
379 b0 += b3;
380 b3 = ((b3 << 32) | (b3 >> (64 - 32))) ^ b0;
382 b2 += b1;
383 b1 = ((b1 << 32) | (b1 >> (64 - 32))) ^ b2;
386 b1 += k0 + t2;
387 b0 += b1 + k4;
388 b1 = ((b1 << 14) | (b1 >> (64 - 14))) ^ b0;
390 b3 += k2 + 14;
391 b2 += b3 + k1 + t0;
392 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b2;
394 b0 += b3;
395 b3 = ((b3 << 52) | (b3 >> (64 - 52))) ^ b0;
397 b2 += b1;
398 b1 = ((b1 << 57) | (b1 >> (64 - 57))) ^ b2;
400 b0 += b1;
401 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b0;
403 b2 += b3;
404 b3 = ((b3 << 40) | (b3 >> (64 - 40))) ^ b2;
406 b0 += b3;
407 b3 = ((b3 << 5) | (b3 >> (64 - 5))) ^ b0;
409 b2 += b1;
410 b1 = ((b1 << 37) | (b1 >> (64 - 37))) ^ b2;
412 b1 += k1 + t0;
413 b0 += b1 + k0;
414 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b0;
416 b3 += k3 + 15;
417 b2 += b3 + k2 + t1;
418 b3 = ((b3 << 33) | (b3 >> (64 - 33))) ^ b2;
420 b0 += b3;
421 b3 = ((b3 << 46) | (b3 >> (64 - 46))) ^ b0;
423 b2 += b1;
424 b1 = ((b1 << 12) | (b1 >> (64 - 12))) ^ b2;
426 b0 += b1;
427 b1 = ((b1 << 58) | (b1 >> (64 - 58))) ^ b0;
429 b2 += b3;
430 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b2;
432 b0 += b3;
433 b3 = ((b3 << 32) | (b3 >> (64 - 32))) ^ b0;
435 b2 += b1;
436 b1 = ((b1 << 32) | (b1 >> (64 - 32))) ^ b2;
439 b1 += k2 + t1;
440 b0 += b1 + k1;
441 b1 = ((b1 << 14) | (b1 >> (64 - 14))) ^ b0;
443 b3 += k4 + 16;
444 b2 += b3 + k3 + t2;
445 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b2;
447 b0 += b3;
448 b3 = ((b3 << 52) | (b3 >> (64 - 52))) ^ b0;
450 b2 += b1;
451 b1 = ((b1 << 57) | (b1 >> (64 - 57))) ^ b2;
453 b0 += b1;
454 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b0;
456 b2 += b3;
457 b3 = ((b3 << 40) | (b3 >> (64 - 40))) ^ b2;
459 b0 += b3;
460 b3 = ((b3 << 5) | (b3 >> (64 - 5))) ^ b0;
462 b2 += b1;
463 b1 = ((b1 << 37) | (b1 >> (64 - 37))) ^ b2;
465 b1 += k3 + t2;
466 b0 += b1 + k2;
467 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b0;
469 b3 += k0 + 17;
470 b2 += b3 + k4 + t0;
471 b3 = ((b3 << 33) | (b3 >> (64 - 33))) ^ b2;
473 b0 += b3;
474 b3 = ((b3 << 46) | (b3 >> (64 - 46))) ^ b0;
476 b2 += b1;
477 b1 = ((b1 << 12) | (b1 >> (64 - 12))) ^ b2;
479 b0 += b1;
480 b1 = ((b1 << 58) | (b1 >> (64 - 58))) ^ b0;
482 b2 += b3;
483 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b2;
485 b0 += b3;
486 b3 = ((b3 << 32) | (b3 >> (64 - 32))) ^ b0;
488 b2 += b1;
489 b1 = ((b1 << 32) | (b1 >> (64 - 32))) ^ b2;
491 output[0] = b0 + k3;
492 output[1] = b1 + k4 + t0;
493 output[2] = b2 + k0 + t1;
494 output[3] = b3 + k1 + 18;
497 void threefishDecrypt256(struct threefish_key *keyCtx, u64 *input, u64 *output)
499 u64 b0 = input[0], b1 = input[1],
500 b2 = input[2], b3 = input[3];
501 u64 k0 = keyCtx->key[0], k1 = keyCtx->key[1],
502 k2 = keyCtx->key[2], k3 = keyCtx->key[3],
503 k4 = keyCtx->key[4];
504 u64 t0 = keyCtx->tweak[0], t1 = keyCtx->tweak[1],
505 t2 = keyCtx->tweak[2];
507 u64 tmp;
509 b0 -= k3;
510 b1 -= k4 + t0;
511 b2 -= k0 + t1;
512 b3 -= k1 + 18;
513 tmp = b3 ^ b0;
514 b3 = (tmp >> 32) | (tmp << (64 - 32));
515 b0 -= b3;
517 tmp = b1 ^ b2;
518 b1 = (tmp >> 32) | (tmp << (64 - 32));
519 b2 -= b1;
521 tmp = b1 ^ b0;
522 b1 = (tmp >> 58) | (tmp << (64 - 58));
523 b0 -= b1;
525 tmp = b3 ^ b2;
526 b3 = (tmp >> 22) | (tmp << (64 - 22));
527 b2 -= b3;
529 tmp = b3 ^ b0;
530 b3 = (tmp >> 46) | (tmp << (64 - 46));
531 b0 -= b3;
533 tmp = b1 ^ b2;
534 b1 = (tmp >> 12) | (tmp << (64 - 12));
535 b2 -= b1;
537 tmp = b1 ^ b0;
538 b1 = (tmp >> 25) | (tmp << (64 - 25));
539 b0 -= b1 + k2;
540 b1 -= k3 + t2;
542 tmp = b3 ^ b2;
543 b3 = (tmp >> 33) | (tmp << (64 - 33));
544 b2 -= b3 + k4 + t0;
545 b3 -= k0 + 17;
547 tmp = b3 ^ b0;
548 b3 = (tmp >> 5) | (tmp << (64 - 5));
549 b0 -= b3;
551 tmp = b1 ^ b2;
552 b1 = (tmp >> 37) | (tmp << (64 - 37));
553 b2 -= b1;
555 tmp = b1 ^ b0;
556 b1 = (tmp >> 23) | (tmp << (64 - 23));
557 b0 -= b1;
559 tmp = b3 ^ b2;
560 b3 = (tmp >> 40) | (tmp << (64 - 40));
561 b2 -= b3;
563 tmp = b3 ^ b0;
564 b3 = (tmp >> 52) | (tmp << (64 - 52));
565 b0 -= b3;
567 tmp = b1 ^ b2;
568 b1 = (tmp >> 57) | (tmp << (64 - 57));
569 b2 -= b1;
571 tmp = b1 ^ b0;
572 b1 = (tmp >> 14) | (tmp << (64 - 14));
573 b0 -= b1 + k1;
574 b1 -= k2 + t1;
576 tmp = b3 ^ b2;
577 b3 = (tmp >> 16) | (tmp << (64 - 16));
578 b2 -= b3 + k3 + t2;
579 b3 -= k4 + 16;
582 tmp = b3 ^ b0;
583 b3 = (tmp >> 32) | (tmp << (64 - 32));
584 b0 -= b3;
586 tmp = b1 ^ b2;
587 b1 = (tmp >> 32) | (tmp << (64 - 32));
588 b2 -= b1;
590 tmp = b1 ^ b0;
591 b1 = (tmp >> 58) | (tmp << (64 - 58));
592 b0 -= b1;
594 tmp = b3 ^ b2;
595 b3 = (tmp >> 22) | (tmp << (64 - 22));
596 b2 -= b3;
598 tmp = b3 ^ b0;
599 b3 = (tmp >> 46) | (tmp << (64 - 46));
600 b0 -= b3;
602 tmp = b1 ^ b2;
603 b1 = (tmp >> 12) | (tmp << (64 - 12));
604 b2 -= b1;
606 tmp = b1 ^ b0;
607 b1 = (tmp >> 25) | (tmp << (64 - 25));
608 b0 -= b1 + k0;
609 b1 -= k1 + t0;
611 tmp = b3 ^ b2;
612 b3 = (tmp >> 33) | (tmp << (64 - 33));
613 b2 -= b3 + k2 + t1;
614 b3 -= k3 + 15;
616 tmp = b3 ^ b0;
617 b3 = (tmp >> 5) | (tmp << (64 - 5));
618 b0 -= b3;
620 tmp = b1 ^ b2;
621 b1 = (tmp >> 37) | (tmp << (64 - 37));
622 b2 -= b1;
624 tmp = b1 ^ b0;
625 b1 = (tmp >> 23) | (tmp << (64 - 23));
626 b0 -= b1;
628 tmp = b3 ^ b2;
629 b3 = (tmp >> 40) | (tmp << (64 - 40));
630 b2 -= b3;
632 tmp = b3 ^ b0;
633 b3 = (tmp >> 52) | (tmp << (64 - 52));
634 b0 -= b3;
636 tmp = b1 ^ b2;
637 b1 = (tmp >> 57) | (tmp << (64 - 57));
638 b2 -= b1;
640 tmp = b1 ^ b0;
641 b1 = (tmp >> 14) | (tmp << (64 - 14));
642 b0 -= b1 + k4;
643 b1 -= k0 + t2;
645 tmp = b3 ^ b2;
646 b3 = (tmp >> 16) | (tmp << (64 - 16));
647 b2 -= b3 + k1 + t0;
648 b3 -= k2 + 14;
651 tmp = b3 ^ b0;
652 b3 = (tmp >> 32) | (tmp << (64 - 32));
653 b0 -= b3;
655 tmp = b1 ^ b2;
656 b1 = (tmp >> 32) | (tmp << (64 - 32));
657 b2 -= b1;
659 tmp = b1 ^ b0;
660 b1 = (tmp >> 58) | (tmp << (64 - 58));
661 b0 -= b1;
663 tmp = b3 ^ b2;
664 b3 = (tmp >> 22) | (tmp << (64 - 22));
665 b2 -= b3;
667 tmp = b3 ^ b0;
668 b3 = (tmp >> 46) | (tmp << (64 - 46));
669 b0 -= b3;
671 tmp = b1 ^ b2;
672 b1 = (tmp >> 12) | (tmp << (64 - 12));
673 b2 -= b1;
675 tmp = b1 ^ b0;
676 b1 = (tmp >> 25) | (tmp << (64 - 25));
677 b0 -= b1 + k3;
678 b1 -= k4 + t1;
680 tmp = b3 ^ b2;
681 b3 = (tmp >> 33) | (tmp << (64 - 33));
682 b2 -= b3 + k0 + t2;
683 b3 -= k1 + 13;
685 tmp = b3 ^ b0;
686 b3 = (tmp >> 5) | (tmp << (64 - 5));
687 b0 -= b3;
689 tmp = b1 ^ b2;
690 b1 = (tmp >> 37) | (tmp << (64 - 37));
691 b2 -= b1;
693 tmp = b1 ^ b0;
694 b1 = (tmp >> 23) | (tmp << (64 - 23));
695 b0 -= b1;
697 tmp = b3 ^ b2;
698 b3 = (tmp >> 40) | (tmp << (64 - 40));
699 b2 -= b3;
701 tmp = b3 ^ b0;
702 b3 = (tmp >> 52) | (tmp << (64 - 52));
703 b0 -= b3;
705 tmp = b1 ^ b2;
706 b1 = (tmp >> 57) | (tmp << (64 - 57));
707 b2 -= b1;
709 tmp = b1 ^ b0;
710 b1 = (tmp >> 14) | (tmp << (64 - 14));
711 b0 -= b1 + k2;
712 b1 -= k3 + t0;
714 tmp = b3 ^ b2;
715 b3 = (tmp >> 16) | (tmp << (64 - 16));
716 b2 -= b3 + k4 + t1;
717 b3 -= k0 + 12;
720 tmp = b3 ^ b0;
721 b3 = (tmp >> 32) | (tmp << (64 - 32));
722 b0 -= b3;
724 tmp = b1 ^ b2;
725 b1 = (tmp >> 32) | (tmp << (64 - 32));
726 b2 -= b1;
728 tmp = b1 ^ b0;
729 b1 = (tmp >> 58) | (tmp << (64 - 58));
730 b0 -= b1;
732 tmp = b3 ^ b2;
733 b3 = (tmp >> 22) | (tmp << (64 - 22));
734 b2 -= b3;
736 tmp = b3 ^ b0;
737 b3 = (tmp >> 46) | (tmp << (64 - 46));
738 b0 -= b3;
740 tmp = b1 ^ b2;
741 b1 = (tmp >> 12) | (tmp << (64 - 12));
742 b2 -= b1;
744 tmp = b1 ^ b0;
745 b1 = (tmp >> 25) | (tmp << (64 - 25));
746 b0 -= b1 + k1;
747 b1 -= k2 + t2;
749 tmp = b3 ^ b2;
750 b3 = (tmp >> 33) | (tmp << (64 - 33));
751 b2 -= b3 + k3 + t0;
752 b3 -= k4 + 11;
754 tmp = b3 ^ b0;
755 b3 = (tmp >> 5) | (tmp << (64 - 5));
756 b0 -= b3;
758 tmp = b1 ^ b2;
759 b1 = (tmp >> 37) | (tmp << (64 - 37));
760 b2 -= b1;
762 tmp = b1 ^ b0;
763 b1 = (tmp >> 23) | (tmp << (64 - 23));
764 b0 -= b1;
766 tmp = b3 ^ b2;
767 b3 = (tmp >> 40) | (tmp << (64 - 40));
768 b2 -= b3;
770 tmp = b3 ^ b0;
771 b3 = (tmp >> 52) | (tmp << (64 - 52));
772 b0 -= b3;
774 tmp = b1 ^ b2;
775 b1 = (tmp >> 57) | (tmp << (64 - 57));
776 b2 -= b1;
778 tmp = b1 ^ b0;
779 b1 = (tmp >> 14) | (tmp << (64 - 14));
780 b0 -= b1 + k0;
781 b1 -= k1 + t1;
783 tmp = b3 ^ b2;
784 b3 = (tmp >> 16) | (tmp << (64 - 16));
785 b2 -= b3 + k2 + t2;
786 b3 -= k3 + 10;
789 tmp = b3 ^ b0;
790 b3 = (tmp >> 32) | (tmp << (64 - 32));
791 b0 -= b3;
793 tmp = b1 ^ b2;
794 b1 = (tmp >> 32) | (tmp << (64 - 32));
795 b2 -= b1;
797 tmp = b1 ^ b0;
798 b1 = (tmp >> 58) | (tmp << (64 - 58));
799 b0 -= b1;
801 tmp = b3 ^ b2;
802 b3 = (tmp >> 22) | (tmp << (64 - 22));
803 b2 -= b3;
805 tmp = b3 ^ b0;
806 b3 = (tmp >> 46) | (tmp << (64 - 46));
807 b0 -= b3;
809 tmp = b1 ^ b2;
810 b1 = (tmp >> 12) | (tmp << (64 - 12));
811 b2 -= b1;
813 tmp = b1 ^ b0;
814 b1 = (tmp >> 25) | (tmp << (64 - 25));
815 b0 -= b1 + k4;
816 b1 -= k0 + t0;
818 tmp = b3 ^ b2;
819 b3 = (tmp >> 33) | (tmp << (64 - 33));
820 b2 -= b3 + k1 + t1;
821 b3 -= k2 + 9;
823 tmp = b3 ^ b0;
824 b3 = (tmp >> 5) | (tmp << (64 - 5));
825 b0 -= b3;
827 tmp = b1 ^ b2;
828 b1 = (tmp >> 37) | (tmp << (64 - 37));
829 b2 -= b1;
831 tmp = b1 ^ b0;
832 b1 = (tmp >> 23) | (tmp << (64 - 23));
833 b0 -= b1;
835 tmp = b3 ^ b2;
836 b3 = (tmp >> 40) | (tmp << (64 - 40));
837 b2 -= b3;
839 tmp = b3 ^ b0;
840 b3 = (tmp >> 52) | (tmp << (64 - 52));
841 b0 -= b3;
843 tmp = b1 ^ b2;
844 b1 = (tmp >> 57) | (tmp << (64 - 57));
845 b2 -= b1;
847 tmp = b1 ^ b0;
848 b1 = (tmp >> 14) | (tmp << (64 - 14));
849 b0 -= b1 + k3;
850 b1 -= k4 + t2;
852 tmp = b3 ^ b2;
853 b3 = (tmp >> 16) | (tmp << (64 - 16));
854 b2 -= b3 + k0 + t0;
855 b3 -= k1 + 8;
858 tmp = b3 ^ b0;
859 b3 = (tmp >> 32) | (tmp << (64 - 32));
860 b0 -= b3;
862 tmp = b1 ^ b2;
863 b1 = (tmp >> 32) | (tmp << (64 - 32));
864 b2 -= b1;
866 tmp = b1 ^ b0;
867 b1 = (tmp >> 58) | (tmp << (64 - 58));
868 b0 -= b1;
870 tmp = b3 ^ b2;
871 b3 = (tmp >> 22) | (tmp << (64 - 22));
872 b2 -= b3;
874 tmp = b3 ^ b0;
875 b3 = (tmp >> 46) | (tmp << (64 - 46));
876 b0 -= b3;
878 tmp = b1 ^ b2;
879 b1 = (tmp >> 12) | (tmp << (64 - 12));
880 b2 -= b1;
882 tmp = b1 ^ b0;
883 b1 = (tmp >> 25) | (tmp << (64 - 25));
884 b0 -= b1 + k2;
885 b1 -= k3 + t1;
887 tmp = b3 ^ b2;
888 b3 = (tmp >> 33) | (tmp << (64 - 33));
889 b2 -= b3 + k4 + t2;
890 b3 -= k0 + 7;
892 tmp = b3 ^ b0;
893 b3 = (tmp >> 5) | (tmp << (64 - 5));
894 b0 -= b3;
896 tmp = b1 ^ b2;
897 b1 = (tmp >> 37) | (tmp << (64 - 37));
898 b2 -= b1;
900 tmp = b1 ^ b0;
901 b1 = (tmp >> 23) | (tmp << (64 - 23));
902 b0 -= b1;
904 tmp = b3 ^ b2;
905 b3 = (tmp >> 40) | (tmp << (64 - 40));
906 b2 -= b3;
908 tmp = b3 ^ b0;
909 b3 = (tmp >> 52) | (tmp << (64 - 52));
910 b0 -= b3;
912 tmp = b1 ^ b2;
913 b1 = (tmp >> 57) | (tmp << (64 - 57));
914 b2 -= b1;
916 tmp = b1 ^ b0;
917 b1 = (tmp >> 14) | (tmp << (64 - 14));
918 b0 -= b1 + k1;
919 b1 -= k2 + t0;
921 tmp = b3 ^ b2;
922 b3 = (tmp >> 16) | (tmp << (64 - 16));
923 b2 -= b3 + k3 + t1;
924 b3 -= k4 + 6;
927 tmp = b3 ^ b0;
928 b3 = (tmp >> 32) | (tmp << (64 - 32));
929 b0 -= b3;
931 tmp = b1 ^ b2;
932 b1 = (tmp >> 32) | (tmp << (64 - 32));
933 b2 -= b1;
935 tmp = b1 ^ b0;
936 b1 = (tmp >> 58) | (tmp << (64 - 58));
937 b0 -= b1;
939 tmp = b3 ^ b2;
940 b3 = (tmp >> 22) | (tmp << (64 - 22));
941 b2 -= b3;
943 tmp = b3 ^ b0;
944 b3 = (tmp >> 46) | (tmp << (64 - 46));
945 b0 -= b3;
947 tmp = b1 ^ b2;
948 b1 = (tmp >> 12) | (tmp << (64 - 12));
949 b2 -= b1;
951 tmp = b1 ^ b0;
952 b1 = (tmp >> 25) | (tmp << (64 - 25));
953 b0 -= b1 + k0;
954 b1 -= k1 + t2;
956 tmp = b3 ^ b2;
957 b3 = (tmp >> 33) | (tmp << (64 - 33));
958 b2 -= b3 + k2 + t0;
959 b3 -= k3 + 5;
961 tmp = b3 ^ b0;
962 b3 = (tmp >> 5) | (tmp << (64 - 5));
963 b0 -= b3;
965 tmp = b1 ^ b2;
966 b1 = (tmp >> 37) | (tmp << (64 - 37));
967 b2 -= b1;
969 tmp = b1 ^ b0;
970 b1 = (tmp >> 23) | (tmp << (64 - 23));
971 b0 -= b1;
973 tmp = b3 ^ b2;
974 b3 = (tmp >> 40) | (tmp << (64 - 40));
975 b2 -= b3;
977 tmp = b3 ^ b0;
978 b3 = (tmp >> 52) | (tmp << (64 - 52));
979 b0 -= b3;
981 tmp = b1 ^ b2;
982 b1 = (tmp >> 57) | (tmp << (64 - 57));
983 b2 -= b1;
985 tmp = b1 ^ b0;
986 b1 = (tmp >> 14) | (tmp << (64 - 14));
987 b0 -= b1 + k4;
988 b1 -= k0 + t1;
990 tmp = b3 ^ b2;
991 b3 = (tmp >> 16) | (tmp << (64 - 16));
992 b2 -= b3 + k1 + t2;
993 b3 -= k2 + 4;
996 tmp = b3 ^ b0;
997 b3 = (tmp >> 32) | (tmp << (64 - 32));
998 b0 -= b3;
1000 tmp = b1 ^ b2;
1001 b1 = (tmp >> 32) | (tmp << (64 - 32));
1002 b2 -= b1;
1004 tmp = b1 ^ b0;
1005 b1 = (tmp >> 58) | (tmp << (64 - 58));
1006 b0 -= b1;
1008 tmp = b3 ^ b2;
1009 b3 = (tmp >> 22) | (tmp << (64 - 22));
1010 b2 -= b3;
1012 tmp = b3 ^ b0;
1013 b3 = (tmp >> 46) | (tmp << (64 - 46));
1014 b0 -= b3;
1016 tmp = b1 ^ b2;
1017 b1 = (tmp >> 12) | (tmp << (64 - 12));
1018 b2 -= b1;
1020 tmp = b1 ^ b0;
1021 b1 = (tmp >> 25) | (tmp << (64 - 25));
1022 b0 -= b1 + k3;
1023 b1 -= k4 + t0;
1025 tmp = b3 ^ b2;
1026 b3 = (tmp >> 33) | (tmp << (64 - 33));
1027 b2 -= b3 + k0 + t1;
1028 b3 -= k1 + 3;
1030 tmp = b3 ^ b0;
1031 b3 = (tmp >> 5) | (tmp << (64 - 5));
1032 b0 -= b3;
1034 tmp = b1 ^ b2;
1035 b1 = (tmp >> 37) | (tmp << (64 - 37));
1036 b2 -= b1;
1038 tmp = b1 ^ b0;
1039 b1 = (tmp >> 23) | (tmp << (64 - 23));
1040 b0 -= b1;
1042 tmp = b3 ^ b2;
1043 b3 = (tmp >> 40) | (tmp << (64 - 40));
1044 b2 -= b3;
1046 tmp = b3 ^ b0;
1047 b3 = (tmp >> 52) | (tmp << (64 - 52));
1048 b0 -= b3;
1050 tmp = b1 ^ b2;
1051 b1 = (tmp >> 57) | (tmp << (64 - 57));
1052 b2 -= b1;
1054 tmp = b1 ^ b0;
1055 b1 = (tmp >> 14) | (tmp << (64 - 14));
1056 b0 -= b1 + k2;
1057 b1 -= k3 + t2;
1059 tmp = b3 ^ b2;
1060 b3 = (tmp >> 16) | (tmp << (64 - 16));
1061 b2 -= b3 + k4 + t0;
1062 b3 -= k0 + 2;
1065 tmp = b3 ^ b0;
1066 b3 = (tmp >> 32) | (tmp << (64 - 32));
1067 b0 -= b3;
1069 tmp = b1 ^ b2;
1070 b1 = (tmp >> 32) | (tmp << (64 - 32));
1071 b2 -= b1;
1073 tmp = b1 ^ b0;
1074 b1 = (tmp >> 58) | (tmp << (64 - 58));
1075 b0 -= b1;
1077 tmp = b3 ^ b2;
1078 b3 = (tmp >> 22) | (tmp << (64 - 22));
1079 b2 -= b3;
1081 tmp = b3 ^ b0;
1082 b3 = (tmp >> 46) | (tmp << (64 - 46));
1083 b0 -= b3;
1085 tmp = b1 ^ b2;
1086 b1 = (tmp >> 12) | (tmp << (64 - 12));
1087 b2 -= b1;
1089 tmp = b1 ^ b0;
1090 b1 = (tmp >> 25) | (tmp << (64 - 25));
1091 b0 -= b1 + k1;
1092 b1 -= k2 + t1;
1094 tmp = b3 ^ b2;
1095 b3 = (tmp >> 33) | (tmp << (64 - 33));
1096 b2 -= b3 + k3 + t2;
1097 b3 -= k4 + 1;
1099 tmp = b3 ^ b0;
1100 b3 = (tmp >> 5) | (tmp << (64 - 5));
1101 b0 -= b3;
1103 tmp = b1 ^ b2;
1104 b1 = (tmp >> 37) | (tmp << (64 - 37));
1105 b2 -= b1;
1107 tmp = b1 ^ b0;
1108 b1 = (tmp >> 23) | (tmp << (64 - 23));
1109 b0 -= b1;
1111 tmp = b3 ^ b2;
1112 b3 = (tmp >> 40) | (tmp << (64 - 40));
1113 b2 -= b3;
1115 tmp = b3 ^ b0;
1116 b3 = (tmp >> 52) | (tmp << (64 - 52));
1117 b0 -= b3;
1119 tmp = b1 ^ b2;
1120 b1 = (tmp >> 57) | (tmp << (64 - 57));
1121 b2 -= b1;
1123 tmp = b1 ^ b0;
1124 b1 = (tmp >> 14) | (tmp << (64 - 14));
1125 b0 -= b1 + k0;
1126 b1 -= k1 + t0;
1128 tmp = b3 ^ b2;
1129 b3 = (tmp >> 16) | (tmp << (64 - 16));
1130 b2 -= b3 + k2 + t1;
1131 b3 -= k3;
1133 output[0] = b0;
1134 output[1] = b1;
1135 output[2] = b2;
1136 output[3] = b3;