1#include "threefish_api.h" 2 3void threefish_encrypt_256(struct threefish_key *key_ctx, u64 *input, 4 u64 *output) 5{ 6 u64 b0 = input[0], b1 = input[1], 7 b2 = input[2], b3 = input[3]; 8 u64 k0 = key_ctx->key[0], k1 = key_ctx->key[1], 9 k2 = key_ctx->key[2], k3 = key_ctx->key[3], 10 k4 = key_ctx->key[4]; 11 u64 t0 = key_ctx->tweak[0], t1 = key_ctx->tweak[1], 12 t2 = key_ctx->tweak[2]; 13 14 b1 += k1 + t0; 15 b0 += b1 + k0; 16 b1 = ((b1 << 14) | (b1 >> (64 - 14))) ^ b0; 17 18 b3 += k3; 19 b2 += b3 + k2 + t1; 20 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b2; 21 22 b0 += b3; 23 b3 = ((b3 << 52) | (b3 >> (64 - 52))) ^ b0; 24 25 b2 += b1; 26 b1 = ((b1 << 57) | (b1 >> (64 - 57))) ^ b2; 27 28 b0 += b1; 29 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b0; 30 31 b2 += b3; 32 b3 = ((b3 << 40) | (b3 >> (64 - 40))) ^ b2; 33 34 b0 += b3; 35 b3 = ((b3 << 5) | (b3 >> (64 - 5))) ^ b0; 36 37 b2 += b1; 38 b1 = ((b1 << 37) | (b1 >> (64 - 37))) ^ b2; 39 40 b1 += k2 + t1; 41 b0 += b1 + k1; 42 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b0; 43 44 b3 += k4 + 1; 45 b2 += b3 + k3 + t2; 46 b3 = ((b3 << 33) | (b3 >> (64 - 33))) ^ b2; 47 48 b0 += b3; 49 b3 = ((b3 << 46) | (b3 >> (64 - 46))) ^ b0; 50 51 b2 += b1; 52 b1 = ((b1 << 12) | (b1 >> (64 - 12))) ^ b2; 53 54 b0 += b1; 55 b1 = ((b1 << 58) | (b1 >> (64 - 58))) ^ b0; 56 57 b2 += b3; 58 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b2; 59 60 b0 += b3; 61 b3 = ((b3 << 32) | (b3 >> (64 - 32))) ^ b0; 62 63 b2 += b1; 64 b1 = ((b1 << 32) | (b1 >> (64 - 32))) ^ b2; 65 66 67 b1 += k3 + t2; 68 b0 += b1 + k2; 69 b1 = ((b1 << 14) | (b1 >> (64 - 14))) ^ b0; 70 71 b3 += k0 + 2; 72 b2 += b3 + k4 + t0; 73 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b2; 74 75 b0 += b3; 76 b3 = ((b3 << 52) | (b3 >> (64 - 52))) ^ b0; 77 78 b2 += b1; 79 b1 = ((b1 << 57) | (b1 >> (64 - 57))) ^ b2; 80 81 b0 += b1; 82 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b0; 83 84 b2 += b3; 85 b3 = ((b3 << 40) | (b3 >> (64 - 40))) ^ b2; 86 87 b0 += b3; 88 b3 = ((b3 << 5) | (b3 >> (64 - 5))) ^ b0; 89 90 b2 += b1; 91 b1 = ((b1 << 37) | (b1 >> (64 - 37))) ^ b2; 92 93 b1 += k4 + t0; 94 b0 += b1 + k3; 95 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b0; 96 97 b3 += k1 + 3; 98 b2 += b3 + k0 + t1; 99 b3 = ((b3 << 33) | (b3 >> (64 - 33))) ^ b2; 100 101 b0 += b3; 102 b3 = ((b3 << 46) | (b3 >> (64 - 46))) ^ b0; 103 104 b2 += b1; 105 b1 = ((b1 << 12) | (b1 >> (64 - 12))) ^ b2; 106 107 b0 += b1; 108 b1 = ((b1 << 58) | (b1 >> (64 - 58))) ^ b0; 109 110 b2 += b3; 111 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b2; 112 113 b0 += b3; 114 b3 = ((b3 << 32) | (b3 >> (64 - 32))) ^ b0; 115 116 b2 += b1; 117 b1 = ((b1 << 32) | (b1 >> (64 - 32))) ^ b2; 118 119 120 b1 += k0 + t1; 121 b0 += b1 + k4; 122 b1 = ((b1 << 14) | (b1 >> (64 - 14))) ^ b0; 123 124 b3 += k2 + 4; 125 b2 += b3 + k1 + t2; 126 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b2; 127 128 b0 += b3; 129 b3 = ((b3 << 52) | (b3 >> (64 - 52))) ^ b0; 130 131 b2 += b1; 132 b1 = ((b1 << 57) | (b1 >> (64 - 57))) ^ b2; 133 134 b0 += b1; 135 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b0; 136 137 b2 += b3; 138 b3 = ((b3 << 40) | (b3 >> (64 - 40))) ^ b2; 139 140 b0 += b3; 141 b3 = ((b3 << 5) | (b3 >> (64 - 5))) ^ b0; 142 143 b2 += b1; 144 b1 = ((b1 << 37) | (b1 >> (64 - 37))) ^ b2; 145 146 b1 += k1 + t2; 147 b0 += b1 + k0; 148 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b0; 149 150 b3 += k3 + 5; 151 b2 += b3 + k2 + t0; 152 b3 = ((b3 << 33) | (b3 >> (64 - 33))) ^ b2; 153 154 b0 += b3; 155 b3 = ((b3 << 46) | (b3 >> (64 - 46))) ^ b0; 156 157 b2 += b1; 158 b1 = ((b1 << 12) | (b1 >> (64 - 12))) ^ b2; 159 160 b0 += b1; 161 b1 = ((b1 << 58) | (b1 >> (64 - 58))) ^ b0; 162 163 b2 += b3; 164 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b2; 165 166 b0 += b3; 167 b3 = ((b3 << 32) | (b3 >> (64 - 32))) ^ b0; 168 169 b2 += b1; 170 b1 = ((b1 << 32) | (b1 >> (64 - 32))) ^ b2; 171 172 173 b1 += k2 + t0; 174 b0 += b1 + k1; 175 b1 = ((b1 << 14) | (b1 >> (64 - 14))) ^ b0; 176 177 b3 += k4 + 6; 178 b2 += b3 + k3 + t1; 179 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b2; 180 181 b0 += b3; 182 b3 = ((b3 << 52) | (b3 >> (64 - 52))) ^ b0; 183 184 b2 += b1; 185 b1 = ((b1 << 57) | (b1 >> (64 - 57))) ^ b2; 186 187 b0 += b1; 188 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b0; 189 190 b2 += b3; 191 b3 = ((b3 << 40) | (b3 >> (64 - 40))) ^ b2; 192 193 b0 += b3; 194 b3 = ((b3 << 5) | (b3 >> (64 - 5))) ^ b0; 195 196 b2 += b1; 197 b1 = ((b1 << 37) | (b1 >> (64 - 37))) ^ b2; 198 199 b1 += k3 + t1; 200 b0 += b1 + k2; 201 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b0; 202 203 b3 += k0 + 7; 204 b2 += b3 + k4 + t2; 205 b3 = ((b3 << 33) | (b3 >> (64 - 33))) ^ b2; 206 207 b0 += b3; 208 b3 = ((b3 << 46) | (b3 >> (64 - 46))) ^ b0; 209 210 b2 += b1; 211 b1 = ((b1 << 12) | (b1 >> (64 - 12))) ^ b2; 212 213 b0 += b1; 214 b1 = ((b1 << 58) | (b1 >> (64 - 58))) ^ b0; 215 216 b2 += b3; 217 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b2; 218 219 b0 += b3; 220 b3 = ((b3 << 32) | (b3 >> (64 - 32))) ^ b0; 221 222 b2 += b1; 223 b1 = ((b1 << 32) | (b1 >> (64 - 32))) ^ b2; 224 225 226 b1 += k4 + t2; 227 b0 += b1 + k3; 228 b1 = ((b1 << 14) | (b1 >> (64 - 14))) ^ b0; 229 230 b3 += k1 + 8; 231 b2 += b3 + k0 + t0; 232 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b2; 233 234 b0 += b3; 235 b3 = ((b3 << 52) | (b3 >> (64 - 52))) ^ b0; 236 237 b2 += b1; 238 b1 = ((b1 << 57) | (b1 >> (64 - 57))) ^ b2; 239 240 b0 += b1; 241 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b0; 242 243 b2 += b3; 244 b3 = ((b3 << 40) | (b3 >> (64 - 40))) ^ b2; 245 246 b0 += b3; 247 b3 = ((b3 << 5) | (b3 >> (64 - 5))) ^ b0; 248 249 b2 += b1; 250 b1 = ((b1 << 37) | (b1 >> (64 - 37))) ^ b2; 251 252 b1 += k0 + t0; 253 b0 += b1 + k4; 254 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b0; 255 256 b3 += k2 + 9; 257 b2 += b3 + k1 + t1; 258 b3 = ((b3 << 33) | (b3 >> (64 - 33))) ^ b2; 259 260 b0 += b3; 261 b3 = ((b3 << 46) | (b3 >> (64 - 46))) ^ b0; 262 263 b2 += b1; 264 b1 = ((b1 << 12) | (b1 >> (64 - 12))) ^ b2; 265 266 b0 += b1; 267 b1 = ((b1 << 58) | (b1 >> (64 - 58))) ^ b0; 268 269 b2 += b3; 270 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b2; 271 272 b0 += b3; 273 b3 = ((b3 << 32) | (b3 >> (64 - 32))) ^ b0; 274 275 b2 += b1; 276 b1 = ((b1 << 32) | (b1 >> (64 - 32))) ^ b2; 277 278 279 b1 += k1 + t1; 280 b0 += b1 + k0; 281 b1 = ((b1 << 14) | (b1 >> (64 - 14))) ^ b0; 282 283 b3 += k3 + 10; 284 b2 += b3 + k2 + t2; 285 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b2; 286 287 b0 += b3; 288 b3 = ((b3 << 52) | (b3 >> (64 - 52))) ^ b0; 289 290 b2 += b1; 291 b1 = ((b1 << 57) | (b1 >> (64 - 57))) ^ b2; 292 293 b0 += b1; 294 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b0; 295 296 b2 += b3; 297 b3 = ((b3 << 40) | (b3 >> (64 - 40))) ^ b2; 298 299 b0 += b3; 300 b3 = ((b3 << 5) | (b3 >> (64 - 5))) ^ b0; 301 302 b2 += b1; 303 b1 = ((b1 << 37) | (b1 >> (64 - 37))) ^ b2; 304 305 b1 += k2 + t2; 306 b0 += b1 + k1; 307 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b0; 308 309 b3 += k4 + 11; 310 b2 += b3 + k3 + t0; 311 b3 = ((b3 << 33) | (b3 >> (64 - 33))) ^ b2; 312 313 b0 += b3; 314 b3 = ((b3 << 46) | (b3 >> (64 - 46))) ^ b0; 315 316 b2 += b1; 317 b1 = ((b1 << 12) | (b1 >> (64 - 12))) ^ b2; 318 319 b0 += b1; 320 b1 = ((b1 << 58) | (b1 >> (64 - 58))) ^ b0; 321 322 b2 += b3; 323 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b2; 324 325 b0 += b3; 326 b3 = ((b3 << 32) | (b3 >> (64 - 32))) ^ b0; 327 328 b2 += b1; 329 b1 = ((b1 << 32) | (b1 >> (64 - 32))) ^ b2; 330 331 332 b1 += k3 + t0; 333 b0 += b1 + k2; 334 b1 = ((b1 << 14) | (b1 >> (64 - 14))) ^ b0; 335 336 b3 += k0 + 12; 337 b2 += b3 + k4 + t1; 338 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b2; 339 340 b0 += b3; 341 b3 = ((b3 << 52) | (b3 >> (64 - 52))) ^ b0; 342 343 b2 += b1; 344 b1 = ((b1 << 57) | (b1 >> (64 - 57))) ^ b2; 345 346 b0 += b1; 347 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b0; 348 349 b2 += b3; 350 b3 = ((b3 << 40) | (b3 >> (64 - 40))) ^ b2; 351 352 b0 += b3; 353 b3 = ((b3 << 5) | (b3 >> (64 - 5))) ^ b0; 354 355 b2 += b1; 356 b1 = ((b1 << 37) | (b1 >> (64 - 37))) ^ b2; 357 358 b1 += k4 + t1; 359 b0 += b1 + k3; 360 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b0; 361 362 b3 += k1 + 13; 363 b2 += b3 + k0 + t2; 364 b3 = ((b3 << 33) | (b3 >> (64 - 33))) ^ b2; 365 366 b0 += b3; 367 b3 = ((b3 << 46) | (b3 >> (64 - 46))) ^ b0; 368 369 b2 += b1; 370 b1 = ((b1 << 12) | (b1 >> (64 - 12))) ^ b2; 371 372 b0 += b1; 373 b1 = ((b1 << 58) | (b1 >> (64 - 58))) ^ b0; 374 375 b2 += b3; 376 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b2; 377 378 b0 += b3; 379 b3 = ((b3 << 32) | (b3 >> (64 - 32))) ^ b0; 380 381 b2 += b1; 382 b1 = ((b1 << 32) | (b1 >> (64 - 32))) ^ b2; 383 384 385 b1 += k0 + t2; 386 b0 += b1 + k4; 387 b1 = ((b1 << 14) | (b1 >> (64 - 14))) ^ b0; 388 389 b3 += k2 + 14; 390 b2 += b3 + k1 + t0; 391 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b2; 392 393 b0 += b3; 394 b3 = ((b3 << 52) | (b3 >> (64 - 52))) ^ b0; 395 396 b2 += b1; 397 b1 = ((b1 << 57) | (b1 >> (64 - 57))) ^ b2; 398 399 b0 += b1; 400 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b0; 401 402 b2 += b3; 403 b3 = ((b3 << 40) | (b3 >> (64 - 40))) ^ b2; 404 405 b0 += b3; 406 b3 = ((b3 << 5) | (b3 >> (64 - 5))) ^ b0; 407 408 b2 += b1; 409 b1 = ((b1 << 37) | (b1 >> (64 - 37))) ^ b2; 410 411 b1 += k1 + t0; 412 b0 += b1 + k0; 413 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b0; 414 415 b3 += k3 + 15; 416 b2 += b3 + k2 + t1; 417 b3 = ((b3 << 33) | (b3 >> (64 - 33))) ^ b2; 418 419 b0 += b3; 420 b3 = ((b3 << 46) | (b3 >> (64 - 46))) ^ b0; 421 422 b2 += b1; 423 b1 = ((b1 << 12) | (b1 >> (64 - 12))) ^ b2; 424 425 b0 += b1; 426 b1 = ((b1 << 58) | (b1 >> (64 - 58))) ^ b0; 427 428 b2 += b3; 429 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b2; 430 431 b0 += b3; 432 b3 = ((b3 << 32) | (b3 >> (64 - 32))) ^ b0; 433 434 b2 += b1; 435 b1 = ((b1 << 32) | (b1 >> (64 - 32))) ^ b2; 436 437 438 b1 += k2 + t1; 439 b0 += b1 + k1; 440 b1 = ((b1 << 14) | (b1 >> (64 - 14))) ^ b0; 441 442 b3 += k4 + 16; 443 b2 += b3 + k3 + t2; 444 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b2; 445 446 b0 += b3; 447 b3 = ((b3 << 52) | (b3 >> (64 - 52))) ^ b0; 448 449 b2 += b1; 450 b1 = ((b1 << 57) | (b1 >> (64 - 57))) ^ b2; 451 452 b0 += b1; 453 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b0; 454 455 b2 += b3; 456 b3 = ((b3 << 40) | (b3 >> (64 - 40))) ^ b2; 457 458 b0 += b3; 459 b3 = ((b3 << 5) | (b3 >> (64 - 5))) ^ b0; 460 461 b2 += b1; 462 b1 = ((b1 << 37) | (b1 >> (64 - 37))) ^ b2; 463 464 b1 += k3 + t2; 465 b0 += b1 + k2; 466 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b0; 467 468 b3 += k0 + 17; 469 b2 += b3 + k4 + t0; 470 b3 = ((b3 << 33) | (b3 >> (64 - 33))) ^ b2; 471 472 b0 += b3; 473 b3 = ((b3 << 46) | (b3 >> (64 - 46))) ^ b0; 474 475 b2 += b1; 476 b1 = ((b1 << 12) | (b1 >> (64 - 12))) ^ b2; 477 478 b0 += b1; 479 b1 = ((b1 << 58) | (b1 >> (64 - 58))) ^ b0; 480 481 b2 += b3; 482 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b2; 483 484 b0 += b3; 485 b3 = ((b3 << 32) | (b3 >> (64 - 32))) ^ b0; 486 487 b2 += b1; 488 b1 = ((b1 << 32) | (b1 >> (64 - 32))) ^ b2; 489 490 output[0] = b0 + k3; 491 output[1] = b1 + k4 + t0; 492 output[2] = b2 + k0 + t1; 493 output[3] = b3 + k1 + 18; 494} 495 496void threefish_decrypt_256(struct threefish_key *key_ctx, u64 *input, 497 u64 *output) 498{ 499 u64 b0 = input[0], b1 = input[1], 500 b2 = input[2], b3 = input[3]; 501 u64 k0 = key_ctx->key[0], k1 = key_ctx->key[1], 502 k2 = key_ctx->key[2], k3 = key_ctx->key[3], 503 k4 = key_ctx->key[4]; 504 u64 t0 = key_ctx->tweak[0], t1 = key_ctx->tweak[1], 505 t2 = key_ctx->tweak[2]; 506 507 u64 tmp; 508 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; 516 517 tmp = b1 ^ b2; 518 b1 = (tmp >> 32) | (tmp << (64 - 32)); 519 b2 -= b1; 520 521 tmp = b1 ^ b0; 522 b1 = (tmp >> 58) | (tmp << (64 - 58)); 523 b0 -= b1; 524 525 tmp = b3 ^ b2; 526 b3 = (tmp >> 22) | (tmp << (64 - 22)); 527 b2 -= b3; 528 529 tmp = b3 ^ b0; 530 b3 = (tmp >> 46) | (tmp << (64 - 46)); 531 b0 -= b3; 532 533 tmp = b1 ^ b2; 534 b1 = (tmp >> 12) | (tmp << (64 - 12)); 535 b2 -= b1; 536 537 tmp = b1 ^ b0; 538 b1 = (tmp >> 25) | (tmp << (64 - 25)); 539 b0 -= b1 + k2; 540 b1 -= k3 + t2; 541 542 tmp = b3 ^ b2; 543 b3 = (tmp >> 33) | (tmp << (64 - 33)); 544 b2 -= b3 + k4 + t0; 545 b3 -= k0 + 17; 546 547 tmp = b3 ^ b0; 548 b3 = (tmp >> 5) | (tmp << (64 - 5)); 549 b0 -= b3; 550 551 tmp = b1 ^ b2; 552 b1 = (tmp >> 37) | (tmp << (64 - 37)); 553 b2 -= b1; 554 555 tmp = b1 ^ b0; 556 b1 = (tmp >> 23) | (tmp << (64 - 23)); 557 b0 -= b1; 558 559 tmp = b3 ^ b2; 560 b3 = (tmp >> 40) | (tmp << (64 - 40)); 561 b2 -= b3; 562 563 tmp = b3 ^ b0; 564 b3 = (tmp >> 52) | (tmp << (64 - 52)); 565 b0 -= b3; 566 567 tmp = b1 ^ b2; 568 b1 = (tmp >> 57) | (tmp << (64 - 57)); 569 b2 -= b1; 570 571 tmp = b1 ^ b0; 572 b1 = (tmp >> 14) | (tmp << (64 - 14)); 573 b0 -= b1 + k1; 574 b1 -= k2 + t1; 575 576 tmp = b3 ^ b2; 577 b3 = (tmp >> 16) | (tmp << (64 - 16)); 578 b2 -= b3 + k3 + t2; 579 b3 -= k4 + 16; 580 581 582 tmp = b3 ^ b0; 583 b3 = (tmp >> 32) | (tmp << (64 - 32)); 584 b0 -= b3; 585 586 tmp = b1 ^ b2; 587 b1 = (tmp >> 32) | (tmp << (64 - 32)); 588 b2 -= b1; 589 590 tmp = b1 ^ b0; 591 b1 = (tmp >> 58) | (tmp << (64 - 58)); 592 b0 -= b1; 593 594 tmp = b3 ^ b2; 595 b3 = (tmp >> 22) | (tmp << (64 - 22)); 596 b2 -= b3; 597 598 tmp = b3 ^ b0; 599 b3 = (tmp >> 46) | (tmp << (64 - 46)); 600 b0 -= b3; 601 602 tmp = b1 ^ b2; 603 b1 = (tmp >> 12) | (tmp << (64 - 12)); 604 b2 -= b1; 605 606 tmp = b1 ^ b0; 607 b1 = (tmp >> 25) | (tmp << (64 - 25)); 608 b0 -= b1 + k0; 609 b1 -= k1 + t0; 610 611 tmp = b3 ^ b2; 612 b3 = (tmp >> 33) | (tmp << (64 - 33)); 613 b2 -= b3 + k2 + t1; 614 b3 -= k3 + 15; 615 616 tmp = b3 ^ b0; 617 b3 = (tmp >> 5) | (tmp << (64 - 5)); 618 b0 -= b3; 619 620 tmp = b1 ^ b2; 621 b1 = (tmp >> 37) | (tmp << (64 - 37)); 622 b2 -= b1; 623 624 tmp = b1 ^ b0; 625 b1 = (tmp >> 23) | (tmp << (64 - 23)); 626 b0 -= b1; 627 628 tmp = b3 ^ b2; 629 b3 = (tmp >> 40) | (tmp << (64 - 40)); 630 b2 -= b3; 631 632 tmp = b3 ^ b0; 633 b3 = (tmp >> 52) | (tmp << (64 - 52)); 634 b0 -= b3; 635 636 tmp = b1 ^ b2; 637 b1 = (tmp >> 57) | (tmp << (64 - 57)); 638 b2 -= b1; 639 640 tmp = b1 ^ b0; 641 b1 = (tmp >> 14) | (tmp << (64 - 14)); 642 b0 -= b1 + k4; 643 b1 -= k0 + t2; 644 645 tmp = b3 ^ b2; 646 b3 = (tmp >> 16) | (tmp << (64 - 16)); 647 b2 -= b3 + k1 + t0; 648 b3 -= k2 + 14; 649 650 651 tmp = b3 ^ b0; 652 b3 = (tmp >> 32) | (tmp << (64 - 32)); 653 b0 -= b3; 654 655 tmp = b1 ^ b2; 656 b1 = (tmp >> 32) | (tmp << (64 - 32)); 657 b2 -= b1; 658 659 tmp = b1 ^ b0; 660 b1 = (tmp >> 58) | (tmp << (64 - 58)); 661 b0 -= b1; 662 663 tmp = b3 ^ b2; 664 b3 = (tmp >> 22) | (tmp << (64 - 22)); 665 b2 -= b3; 666 667 tmp = b3 ^ b0; 668 b3 = (tmp >> 46) | (tmp << (64 - 46)); 669 b0 -= b3; 670 671 tmp = b1 ^ b2; 672 b1 = (tmp >> 12) | (tmp << (64 - 12)); 673 b2 -= b1; 674 675 tmp = b1 ^ b0; 676 b1 = (tmp >> 25) | (tmp << (64 - 25)); 677 b0 -= b1 + k3; 678 b1 -= k4 + t1; 679 680 tmp = b3 ^ b2; 681 b3 = (tmp >> 33) | (tmp << (64 - 33)); 682 b2 -= b3 + k0 + t2; 683 b3 -= k1 + 13; 684 685 tmp = b3 ^ b0; 686 b3 = (tmp >> 5) | (tmp << (64 - 5)); 687 b0 -= b3; 688 689 tmp = b1 ^ b2; 690 b1 = (tmp >> 37) | (tmp << (64 - 37)); 691 b2 -= b1; 692 693 tmp = b1 ^ b0; 694 b1 = (tmp >> 23) | (tmp << (64 - 23)); 695 b0 -= b1; 696 697 tmp = b3 ^ b2; 698 b3 = (tmp >> 40) | (tmp << (64 - 40)); 699 b2 -= b3; 700 701 tmp = b3 ^ b0; 702 b3 = (tmp >> 52) | (tmp << (64 - 52)); 703 b0 -= b3; 704 705 tmp = b1 ^ b2; 706 b1 = (tmp >> 57) | (tmp << (64 - 57)); 707 b2 -= b1; 708 709 tmp = b1 ^ b0; 710 b1 = (tmp >> 14) | (tmp << (64 - 14)); 711 b0 -= b1 + k2; 712 b1 -= k3 + t0; 713 714 tmp = b3 ^ b2; 715 b3 = (tmp >> 16) | (tmp << (64 - 16)); 716 b2 -= b3 + k4 + t1; 717 b3 -= k0 + 12; 718 719 720 tmp = b3 ^ b0; 721 b3 = (tmp >> 32) | (tmp << (64 - 32)); 722 b0 -= b3; 723 724 tmp = b1 ^ b2; 725 b1 = (tmp >> 32) | (tmp << (64 - 32)); 726 b2 -= b1; 727 728 tmp = b1 ^ b0; 729 b1 = (tmp >> 58) | (tmp << (64 - 58)); 730 b0 -= b1; 731 732 tmp = b3 ^ b2; 733 b3 = (tmp >> 22) | (tmp << (64 - 22)); 734 b2 -= b3; 735 736 tmp = b3 ^ b0; 737 b3 = (tmp >> 46) | (tmp << (64 - 46)); 738 b0 -= b3; 739 740 tmp = b1 ^ b2; 741 b1 = (tmp >> 12) | (tmp << (64 - 12)); 742 b2 -= b1; 743 744 tmp = b1 ^ b0; 745 b1 = (tmp >> 25) | (tmp << (64 - 25)); 746 b0 -= b1 + k1; 747 b1 -= k2 + t2; 748 749 tmp = b3 ^ b2; 750 b3 = (tmp >> 33) | (tmp << (64 - 33)); 751 b2 -= b3 + k3 + t0; 752 b3 -= k4 + 11; 753 754 tmp = b3 ^ b0; 755 b3 = (tmp >> 5) | (tmp << (64 - 5)); 756 b0 -= b3; 757 758 tmp = b1 ^ b2; 759 b1 = (tmp >> 37) | (tmp << (64 - 37)); 760 b2 -= b1; 761 762 tmp = b1 ^ b0; 763 b1 = (tmp >> 23) | (tmp << (64 - 23)); 764 b0 -= b1; 765 766 tmp = b3 ^ b2; 767 b3 = (tmp >> 40) | (tmp << (64 - 40)); 768 b2 -= b3; 769 770 tmp = b3 ^ b0; 771 b3 = (tmp >> 52) | (tmp << (64 - 52)); 772 b0 -= b3; 773 774 tmp = b1 ^ b2; 775 b1 = (tmp >> 57) | (tmp << (64 - 57)); 776 b2 -= b1; 777 778 tmp = b1 ^ b0; 779 b1 = (tmp >> 14) | (tmp << (64 - 14)); 780 b0 -= b1 + k0; 781 b1 -= k1 + t1; 782 783 tmp = b3 ^ b2; 784 b3 = (tmp >> 16) | (tmp << (64 - 16)); 785 b2 -= b3 + k2 + t2; 786 b3 -= k3 + 10; 787 788 789 tmp = b3 ^ b0; 790 b3 = (tmp >> 32) | (tmp << (64 - 32)); 791 b0 -= b3; 792 793 tmp = b1 ^ b2; 794 b1 = (tmp >> 32) | (tmp << (64 - 32)); 795 b2 -= b1; 796 797 tmp = b1 ^ b0; 798 b1 = (tmp >> 58) | (tmp << (64 - 58)); 799 b0 -= b1; 800 801 tmp = b3 ^ b2; 802 b3 = (tmp >> 22) | (tmp << (64 - 22)); 803 b2 -= b3; 804 805 tmp = b3 ^ b0; 806 b3 = (tmp >> 46) | (tmp << (64 - 46)); 807 b0 -= b3; 808 809 tmp = b1 ^ b2; 810 b1 = (tmp >> 12) | (tmp << (64 - 12)); 811 b2 -= b1; 812 813 tmp = b1 ^ b0; 814 b1 = (tmp >> 25) | (tmp << (64 - 25)); 815 b0 -= b1 + k4; 816 b1 -= k0 + t0; 817 818 tmp = b3 ^ b2; 819 b3 = (tmp >> 33) | (tmp << (64 - 33)); 820 b2 -= b3 + k1 + t1; 821 b3 -= k2 + 9; 822 823 tmp = b3 ^ b0; 824 b3 = (tmp >> 5) | (tmp << (64 - 5)); 825 b0 -= b3; 826 827 tmp = b1 ^ b2; 828 b1 = (tmp >> 37) | (tmp << (64 - 37)); 829 b2 -= b1; 830 831 tmp = b1 ^ b0; 832 b1 = (tmp >> 23) | (tmp << (64 - 23)); 833 b0 -= b1; 834 835 tmp = b3 ^ b2; 836 b3 = (tmp >> 40) | (tmp << (64 - 40)); 837 b2 -= b3; 838 839 tmp = b3 ^ b0; 840 b3 = (tmp >> 52) | (tmp << (64 - 52)); 841 b0 -= b3; 842 843 tmp = b1 ^ b2; 844 b1 = (tmp >> 57) | (tmp << (64 - 57)); 845 b2 -= b1; 846 847 tmp = b1 ^ b0; 848 b1 = (tmp >> 14) | (tmp << (64 - 14)); 849 b0 -= b1 + k3; 850 b1 -= k4 + t2; 851 852 tmp = b3 ^ b2; 853 b3 = (tmp >> 16) | (tmp << (64 - 16)); 854 b2 -= b3 + k0 + t0; 855 b3 -= k1 + 8; 856 857 858 tmp = b3 ^ b0; 859 b3 = (tmp >> 32) | (tmp << (64 - 32)); 860 b0 -= b3; 861 862 tmp = b1 ^ b2; 863 b1 = (tmp >> 32) | (tmp << (64 - 32)); 864 b2 -= b1; 865 866 tmp = b1 ^ b0; 867 b1 = (tmp >> 58) | (tmp << (64 - 58)); 868 b0 -= b1; 869 870 tmp = b3 ^ b2; 871 b3 = (tmp >> 22) | (tmp << (64 - 22)); 872 b2 -= b3; 873 874 tmp = b3 ^ b0; 875 b3 = (tmp >> 46) | (tmp << (64 - 46)); 876 b0 -= b3; 877 878 tmp = b1 ^ b2; 879 b1 = (tmp >> 12) | (tmp << (64 - 12)); 880 b2 -= b1; 881 882 tmp = b1 ^ b0; 883 b1 = (tmp >> 25) | (tmp << (64 - 25)); 884 b0 -= b1 + k2; 885 b1 -= k3 + t1; 886 887 tmp = b3 ^ b2; 888 b3 = (tmp >> 33) | (tmp << (64 - 33)); 889 b2 -= b3 + k4 + t2; 890 b3 -= k0 + 7; 891 892 tmp = b3 ^ b0; 893 b3 = (tmp >> 5) | (tmp << (64 - 5)); 894 b0 -= b3; 895 896 tmp = b1 ^ b2; 897 b1 = (tmp >> 37) | (tmp << (64 - 37)); 898 b2 -= b1; 899 900 tmp = b1 ^ b0; 901 b1 = (tmp >> 23) | (tmp << (64 - 23)); 902 b0 -= b1; 903 904 tmp = b3 ^ b2; 905 b3 = (tmp >> 40) | (tmp << (64 - 40)); 906 b2 -= b3; 907 908 tmp = b3 ^ b0; 909 b3 = (tmp >> 52) | (tmp << (64 - 52)); 910 b0 -= b3; 911 912 tmp = b1 ^ b2; 913 b1 = (tmp >> 57) | (tmp << (64 - 57)); 914 b2 -= b1; 915 916 tmp = b1 ^ b0; 917 b1 = (tmp >> 14) | (tmp << (64 - 14)); 918 b0 -= b1 + k1; 919 b1 -= k2 + t0; 920 921 tmp = b3 ^ b2; 922 b3 = (tmp >> 16) | (tmp << (64 - 16)); 923 b2 -= b3 + k3 + t1; 924 b3 -= k4 + 6; 925 926 927 tmp = b3 ^ b0; 928 b3 = (tmp >> 32) | (tmp << (64 - 32)); 929 b0 -= b3; 930 931 tmp = b1 ^ b2; 932 b1 = (tmp >> 32) | (tmp << (64 - 32)); 933 b2 -= b1; 934 935 tmp = b1 ^ b0; 936 b1 = (tmp >> 58) | (tmp << (64 - 58)); 937 b0 -= b1; 938 939 tmp = b3 ^ b2; 940 b3 = (tmp >> 22) | (tmp << (64 - 22)); 941 b2 -= b3; 942 943 tmp = b3 ^ b0; 944 b3 = (tmp >> 46) | (tmp << (64 - 46)); 945 b0 -= b3; 946 947 tmp = b1 ^ b2; 948 b1 = (tmp >> 12) | (tmp << (64 - 12)); 949 b2 -= b1; 950 951 tmp = b1 ^ b0; 952 b1 = (tmp >> 25) | (tmp << (64 - 25)); 953 b0 -= b1 + k0; 954 b1 -= k1 + t2; 955 956 tmp = b3 ^ b2; 957 b3 = (tmp >> 33) | (tmp << (64 - 33)); 958 b2 -= b3 + k2 + t0; 959 b3 -= k3 + 5; 960 961 tmp = b3 ^ b0; 962 b3 = (tmp >> 5) | (tmp << (64 - 5)); 963 b0 -= b3; 964 965 tmp = b1 ^ b2; 966 b1 = (tmp >> 37) | (tmp << (64 - 37)); 967 b2 -= b1; 968 969 tmp = b1 ^ b0; 970 b1 = (tmp >> 23) | (tmp << (64 - 23)); 971 b0 -= b1; 972 973 tmp = b3 ^ b2; 974 b3 = (tmp >> 40) | (tmp << (64 - 40)); 975 b2 -= b3; 976 977 tmp = b3 ^ b0; 978 b3 = (tmp >> 52) | (tmp << (64 - 52)); 979 b0 -= b3; 980 981 tmp = b1 ^ b2; 982 b1 = (tmp >> 57) | (tmp << (64 - 57)); 983 b2 -= b1; 984 985 tmp = b1 ^ b0; 986 b1 = (tmp >> 14) | (tmp << (64 - 14)); 987 b0 -= b1 + k4; 988 b1 -= k0 + t1; 989 990 tmp = b3 ^ b2; 991 b3 = (tmp >> 16) | (tmp << (64 - 16)); 992 b2 -= b3 + k1 + t2; 993 b3 -= k2 + 4; 994 995 996 tmp = b3 ^ b0; 997 b3 = (tmp >> 32) | (tmp << (64 - 32)); 998 b0 -= b3; 999 1000 tmp = b1 ^ b2; 1001 b1 = (tmp >> 32) | (tmp << (64 - 32)); 1002 b2 -= b1; 1003 1004 tmp = b1 ^ b0; 1005 b1 = (tmp >> 58) | (tmp << (64 - 58)); 1006 b0 -= b1; 1007 1008 tmp = b3 ^ b2; 1009 b3 = (tmp >> 22) | (tmp << (64 - 22)); 1010 b2 -= b3; 1011 1012 tmp = b3 ^ b0; 1013 b3 = (tmp >> 46) | (tmp << (64 - 46)); 1014 b0 -= b3; 1015 1016 tmp = b1 ^ b2; 1017 b1 = (tmp >> 12) | (tmp << (64 - 12)); 1018 b2 -= b1; 1019 1020 tmp = b1 ^ b0; 1021 b1 = (tmp >> 25) | (tmp << (64 - 25)); 1022 b0 -= b1 + k3; 1023 b1 -= k4 + t0; 1024 1025 tmp = b3 ^ b2; 1026 b3 = (tmp >> 33) | (tmp << (64 - 33)); 1027 b2 -= b3 + k0 + t1; 1028 b3 -= k1 + 3; 1029 1030 tmp = b3 ^ b0; 1031 b3 = (tmp >> 5) | (tmp << (64 - 5)); 1032 b0 -= b3; 1033 1034 tmp = b1 ^ b2; 1035 b1 = (tmp >> 37) | (tmp << (64 - 37)); 1036 b2 -= b1; 1037 1038 tmp = b1 ^ b0; 1039 b1 = (tmp >> 23) | (tmp << (64 - 23)); 1040 b0 -= b1; 1041 1042 tmp = b3 ^ b2; 1043 b3 = (tmp >> 40) | (tmp << (64 - 40)); 1044 b2 -= b3; 1045 1046 tmp = b3 ^ b0; 1047 b3 = (tmp >> 52) | (tmp << (64 - 52)); 1048 b0 -= b3; 1049 1050 tmp = b1 ^ b2; 1051 b1 = (tmp >> 57) | (tmp << (64 - 57)); 1052 b2 -= b1; 1053 1054 tmp = b1 ^ b0; 1055 b1 = (tmp >> 14) | (tmp << (64 - 14)); 1056 b0 -= b1 + k2; 1057 b1 -= k3 + t2; 1058 1059 tmp = b3 ^ b2; 1060 b3 = (tmp >> 16) | (tmp << (64 - 16)); 1061 b2 -= b3 + k4 + t0; 1062 b3 -= k0 + 2; 1063 1064 1065 tmp = b3 ^ b0; 1066 b3 = (tmp >> 32) | (tmp << (64 - 32)); 1067 b0 -= b3; 1068 1069 tmp = b1 ^ b2; 1070 b1 = (tmp >> 32) | (tmp << (64 - 32)); 1071 b2 -= b1; 1072 1073 tmp = b1 ^ b0; 1074 b1 = (tmp >> 58) | (tmp << (64 - 58)); 1075 b0 -= b1; 1076 1077 tmp = b3 ^ b2; 1078 b3 = (tmp >> 22) | (tmp << (64 - 22)); 1079 b2 -= b3; 1080 1081 tmp = b3 ^ b0; 1082 b3 = (tmp >> 46) | (tmp << (64 - 46)); 1083 b0 -= b3; 1084 1085 tmp = b1 ^ b2; 1086 b1 = (tmp >> 12) | (tmp << (64 - 12)); 1087 b2 -= b1; 1088 1089 tmp = b1 ^ b0; 1090 b1 = (tmp >> 25) | (tmp << (64 - 25)); 1091 b0 -= b1 + k1; 1092 b1 -= k2 + t1; 1093 1094 tmp = b3 ^ b2; 1095 b3 = (tmp >> 33) | (tmp << (64 - 33)); 1096 b2 -= b3 + k3 + t2; 1097 b3 -= k4 + 1; 1098 1099 tmp = b3 ^ b0; 1100 b3 = (tmp >> 5) | (tmp << (64 - 5)); 1101 b0 -= b3; 1102 1103 tmp = b1 ^ b2; 1104 b1 = (tmp >> 37) | (tmp << (64 - 37)); 1105 b2 -= b1; 1106 1107 tmp = b1 ^ b0; 1108 b1 = (tmp >> 23) | (tmp << (64 - 23)); 1109 b0 -= b1; 1110 1111 tmp = b3 ^ b2; 1112 b3 = (tmp >> 40) | (tmp << (64 - 40)); 1113 b2 -= b3; 1114 1115 tmp = b3 ^ b0; 1116 b3 = (tmp >> 52) | (tmp << (64 - 52)); 1117 b0 -= b3; 1118 1119 tmp = b1 ^ b2; 1120 b1 = (tmp >> 57) | (tmp << (64 - 57)); 1121 b2 -= b1; 1122 1123 tmp = b1 ^ b0; 1124 b1 = (tmp >> 14) | (tmp << (64 - 14)); 1125 b0 -= b1 + k0; 1126 b1 -= k1 + t0; 1127 1128 tmp = b3 ^ b2; 1129 b3 = (tmp >> 16) | (tmp << (64 - 16)); 1130 b2 -= b3 + k2 + t1; 1131 b3 -= k3; 1132 1133 output[0] = b0; 1134 output[1] = b1; 1135 output[2] = b2; 1136 output[3] = b3; 1137} 1138 1139void threefish_encrypt_512(struct threefish_key *key_ctx, u64 *input, 1140 u64 *output) 1141{ 1142 u64 b0 = input[0], b1 = input[1], 1143 b2 = input[2], b3 = input[3], 1144 b4 = input[4], b5 = input[5], 1145 b6 = input[6], b7 = input[7]; 1146 u64 k0 = key_ctx->key[0], k1 = key_ctx->key[1], 1147 k2 = key_ctx->key[2], k3 = key_ctx->key[3], 1148 k4 = key_ctx->key[4], k5 = key_ctx->key[5], 1149 k6 = key_ctx->key[6], k7 = key_ctx->key[7], 1150 k8 = key_ctx->key[8]; 1151 u64 t0 = key_ctx->tweak[0], t1 = key_ctx->tweak[1], 1152 t2 = key_ctx->tweak[2]; 1153 1154 b1 += k1; 1155 b0 += b1 + k0; 1156 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b0; 1157 1158 b3 += k3; 1159 b2 += b3 + k2; 1160 b3 = ((b3 << 36) | (b3 >> (64 - 36))) ^ b2; 1161 1162 b5 += k5 + t0; 1163 b4 += b5 + k4; 1164 b5 = ((b5 << 19) | (b5 >> (64 - 19))) ^ b4; 1165 1166 b7 += k7; 1167 b6 += b7 + k6 + t1; 1168 b7 = ((b7 << 37) | (b7 >> (64 - 37))) ^ b6; 1169 1170 b2 += b1; 1171 b1 = ((b1 << 33) | (b1 >> (64 - 33))) ^ b2; 1172 1173 b4 += b7; 1174 b7 = ((b7 << 27) | (b7 >> (64 - 27))) ^ b4; 1175 1176 b6 += b5; 1177 b5 = ((b5 << 14) | (b5 >> (64 - 14))) ^ b6; 1178 1179 b0 += b3; 1180 b3 = ((b3 << 42) | (b3 >> (64 - 42))) ^ b0; 1181 1182 b4 += b1; 1183 b1 = ((b1 << 17) | (b1 >> (64 - 17))) ^ b4; 1184 1185 b6 += b3; 1186 b3 = ((b3 << 49) | (b3 >> (64 - 49))) ^ b6; 1187 1188 b0 += b5; 1189 b5 = ((b5 << 36) | (b5 >> (64 - 36))) ^ b0; 1190 1191 b2 += b7; 1192 b7 = ((b7 << 39) | (b7 >> (64 - 39))) ^ b2; 1193 1194 b6 += b1; 1195 b1 = ((b1 << 44) | (b1 >> (64 - 44))) ^ b6; 1196 1197 b0 += b7; 1198 b7 = ((b7 << 9) | (b7 >> (64 - 9))) ^ b0; 1199 1200 b2 += b5; 1201 b5 = ((b5 << 54) | (b5 >> (64 - 54))) ^ b2; 1202 1203 b4 += b3; 1204 b3 = ((b3 << 56) | (b3 >> (64 - 56))) ^ b4; 1205 1206 b1 += k2; 1207 b0 += b1 + k1; 1208 b1 = ((b1 << 39) | (b1 >> (64 - 39))) ^ b0; 1209 1210 b3 += k4; 1211 b2 += b3 + k3; 1212 b3 = ((b3 << 30) | (b3 >> (64 - 30))) ^ b2; 1213 1214 b5 += k6 + t1; 1215 b4 += b5 + k5; 1216 b5 = ((b5 << 34) | (b5 >> (64 - 34))) ^ b4; 1217 1218 b7 += k8 + 1; 1219 b6 += b7 + k7 + t2; 1220 b7 = ((b7 << 24) | (b7 >> (64 - 24))) ^ b6; 1221 1222 b2 += b1; 1223 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b2; 1224 1225 b4 += b7; 1226 b7 = ((b7 << 50) | (b7 >> (64 - 50))) ^ b4; 1227 1228 b6 += b5; 1229 b5 = ((b5 << 10) | (b5 >> (64 - 10))) ^ b6; 1230 1231 b0 += b3; 1232 b3 = ((b3 << 17) | (b3 >> (64 - 17))) ^ b0; 1233 1234 b4 += b1; 1235 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b4; 1236 1237 b6 += b3; 1238 b3 = ((b3 << 29) | (b3 >> (64 - 29))) ^ b6; 1239 1240 b0 += b5; 1241 b5 = ((b5 << 39) | (b5 >> (64 - 39))) ^ b0; 1242 1243 b2 += b7; 1244 b7 = ((b7 << 43) | (b7 >> (64 - 43))) ^ b2; 1245 1246 b6 += b1; 1247 b1 = ((b1 << 8) | (b1 >> (64 - 8))) ^ b6; 1248 1249 b0 += b7; 1250 b7 = ((b7 << 35) | (b7 >> (64 - 35))) ^ b0; 1251 1252 b2 += b5; 1253 b5 = ((b5 << 56) | (b5 >> (64 - 56))) ^ b2; 1254 1255 b4 += b3; 1256 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b4; 1257 1258 b1 += k3; 1259 b0 += b1 + k2; 1260 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b0; 1261 1262 b3 += k5; 1263 b2 += b3 + k4; 1264 b3 = ((b3 << 36) | (b3 >> (64 - 36))) ^ b2; 1265 1266 b5 += k7 + t2; 1267 b4 += b5 + k6; 1268 b5 = ((b5 << 19) | (b5 >> (64 - 19))) ^ b4; 1269 1270 b7 += k0 + 2; 1271 b6 += b7 + k8 + t0; 1272 b7 = ((b7 << 37) | (b7 >> (64 - 37))) ^ b6; 1273 1274 b2 += b1; 1275 b1 = ((b1 << 33) | (b1 >> (64 - 33))) ^ b2; 1276 1277 b4 += b7; 1278 b7 = ((b7 << 27) | (b7 >> (64 - 27))) ^ b4; 1279 1280 b6 += b5; 1281 b5 = ((b5 << 14) | (b5 >> (64 - 14))) ^ b6; 1282 1283 b0 += b3; 1284 b3 = ((b3 << 42) | (b3 >> (64 - 42))) ^ b0; 1285 1286 b4 += b1; 1287 b1 = ((b1 << 17) | (b1 >> (64 - 17))) ^ b4; 1288 1289 b6 += b3; 1290 b3 = ((b3 << 49) | (b3 >> (64 - 49))) ^ b6; 1291 1292 b0 += b5; 1293 b5 = ((b5 << 36) | (b5 >> (64 - 36))) ^ b0; 1294 1295 b2 += b7; 1296 b7 = ((b7 << 39) | (b7 >> (64 - 39))) ^ b2; 1297 1298 b6 += b1; 1299 b1 = ((b1 << 44) | (b1 >> (64 - 44))) ^ b6; 1300 1301 b0 += b7; 1302 b7 = ((b7 << 9) | (b7 >> (64 - 9))) ^ b0; 1303 1304 b2 += b5; 1305 b5 = ((b5 << 54) | (b5 >> (64 - 54))) ^ b2; 1306 1307 b4 += b3; 1308 b3 = ((b3 << 56) | (b3 >> (64 - 56))) ^ b4; 1309 1310 b1 += k4; 1311 b0 += b1 + k3; 1312 b1 = ((b1 << 39) | (b1 >> (64 - 39))) ^ b0; 1313 1314 b3 += k6; 1315 b2 += b3 + k5; 1316 b3 = ((b3 << 30) | (b3 >> (64 - 30))) ^ b2; 1317 1318 b5 += k8 + t0; 1319 b4 += b5 + k7; 1320 b5 = ((b5 << 34) | (b5 >> (64 - 34))) ^ b4; 1321 1322 b7 += k1 + 3; 1323 b6 += b7 + k0 + t1; 1324 b7 = ((b7 << 24) | (b7 >> (64 - 24))) ^ b6; 1325 1326 b2 += b1; 1327 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b2; 1328 1329 b4 += b7; 1330 b7 = ((b7 << 50) | (b7 >> (64 - 50))) ^ b4; 1331 1332 b6 += b5; 1333 b5 = ((b5 << 10) | (b5 >> (64 - 10))) ^ b6; 1334 1335 b0 += b3; 1336 b3 = ((b3 << 17) | (b3 >> (64 - 17))) ^ b0; 1337 1338 b4 += b1; 1339 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b4; 1340 1341 b6 += b3; 1342 b3 = ((b3 << 29) | (b3 >> (64 - 29))) ^ b6; 1343 1344 b0 += b5; 1345 b5 = ((b5 << 39) | (b5 >> (64 - 39))) ^ b0; 1346 1347 b2 += b7; 1348 b7 = ((b7 << 43) | (b7 >> (64 - 43))) ^ b2; 1349 1350 b6 += b1; 1351 b1 = ((b1 << 8) | (b1 >> (64 - 8))) ^ b6; 1352 1353 b0 += b7; 1354 b7 = ((b7 << 35) | (b7 >> (64 - 35))) ^ b0; 1355 1356 b2 += b5; 1357 b5 = ((b5 << 56) | (b5 >> (64 - 56))) ^ b2; 1358 1359 b4 += b3; 1360 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b4; 1361 1362 b1 += k5; 1363 b0 += b1 + k4; 1364 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b0; 1365 1366 b3 += k7; 1367 b2 += b3 + k6; 1368 b3 = ((b3 << 36) | (b3 >> (64 - 36))) ^ b2; 1369 1370 b5 += k0 + t1; 1371 b4 += b5 + k8; 1372 b5 = ((b5 << 19) | (b5 >> (64 - 19))) ^ b4; 1373 1374 b7 += k2 + 4; 1375 b6 += b7 + k1 + t2; 1376 b7 = ((b7 << 37) | (b7 >> (64 - 37))) ^ b6; 1377 1378 b2 += b1; 1379 b1 = ((b1 << 33) | (b1 >> (64 - 33))) ^ b2; 1380 1381 b4 += b7; 1382 b7 = ((b7 << 27) | (b7 >> (64 - 27))) ^ b4; 1383 1384 b6 += b5; 1385 b5 = ((b5 << 14) | (b5 >> (64 - 14))) ^ b6; 1386 1387 b0 += b3; 1388 b3 = ((b3 << 42) | (b3 >> (64 - 42))) ^ b0; 1389 1390 b4 += b1; 1391 b1 = ((b1 << 17) | (b1 >> (64 - 17))) ^ b4; 1392 1393 b6 += b3; 1394 b3 = ((b3 << 49) | (b3 >> (64 - 49))) ^ b6; 1395 1396 b0 += b5; 1397 b5 = ((b5 << 36) | (b5 >> (64 - 36))) ^ b0; 1398 1399 b2 += b7; 1400 b7 = ((b7 << 39) | (b7 >> (64 - 39))) ^ b2; 1401 1402 b6 += b1; 1403 b1 = ((b1 << 44) | (b1 >> (64 - 44))) ^ b6; 1404 1405 b0 += b7; 1406 b7 = ((b7 << 9) | (b7 >> (64 - 9))) ^ b0; 1407 1408 b2 += b5; 1409 b5 = ((b5 << 54) | (b5 >> (64 - 54))) ^ b2; 1410 1411 b4 += b3; 1412 b3 = ((b3 << 56) | (b3 >> (64 - 56))) ^ b4; 1413 1414 b1 += k6; 1415 b0 += b1 + k5; 1416 b1 = ((b1 << 39) | (b1 >> (64 - 39))) ^ b0; 1417 1418 b3 += k8; 1419 b2 += b3 + k7; 1420 b3 = ((b3 << 30) | (b3 >> (64 - 30))) ^ b2; 1421 1422 b5 += k1 + t2; 1423 b4 += b5 + k0; 1424 b5 = ((b5 << 34) | (b5 >> (64 - 34))) ^ b4; 1425 1426 b7 += k3 + 5; 1427 b6 += b7 + k2 + t0; 1428 b7 = ((b7 << 24) | (b7 >> (64 - 24))) ^ b6; 1429 1430 b2 += b1; 1431 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b2; 1432 1433 b4 += b7; 1434 b7 = ((b7 << 50) | (b7 >> (64 - 50))) ^ b4; 1435 1436 b6 += b5; 1437 b5 = ((b5 << 10) | (b5 >> (64 - 10))) ^ b6; 1438 1439 b0 += b3; 1440 b3 = ((b3 << 17) | (b3 >> (64 - 17))) ^ b0; 1441 1442 b4 += b1; 1443 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b4; 1444 1445 b6 += b3; 1446 b3 = ((b3 << 29) | (b3 >> (64 - 29))) ^ b6; 1447 1448 b0 += b5; 1449 b5 = ((b5 << 39) | (b5 >> (64 - 39))) ^ b0; 1450 1451 b2 += b7; 1452 b7 = ((b7 << 43) | (b7 >> (64 - 43))) ^ b2; 1453 1454 b6 += b1; 1455 b1 = ((b1 << 8) | (b1 >> (64 - 8))) ^ b6; 1456 1457 b0 += b7; 1458 b7 = ((b7 << 35) | (b7 >> (64 - 35))) ^ b0; 1459 1460 b2 += b5; 1461 b5 = ((b5 << 56) | (b5 >> (64 - 56))) ^ b2; 1462 1463 b4 += b3; 1464 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b4; 1465 1466 b1 += k7; 1467 b0 += b1 + k6; 1468 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b0; 1469 1470 b3 += k0; 1471 b2 += b3 + k8; 1472 b3 = ((b3 << 36) | (b3 >> (64 - 36))) ^ b2; 1473 1474 b5 += k2 + t0; 1475 b4 += b5 + k1; 1476 b5 = ((b5 << 19) | (b5 >> (64 - 19))) ^ b4; 1477 1478 b7 += k4 + 6; 1479 b6 += b7 + k3 + t1; 1480 b7 = ((b7 << 37) | (b7 >> (64 - 37))) ^ b6; 1481 1482 b2 += b1; 1483 b1 = ((b1 << 33) | (b1 >> (64 - 33))) ^ b2; 1484 1485 b4 += b7; 1486 b7 = ((b7 << 27) | (b7 >> (64 - 27))) ^ b4; 1487 1488 b6 += b5; 1489 b5 = ((b5 << 14) | (b5 >> (64 - 14))) ^ b6; 1490 1491 b0 += b3; 1492 b3 = ((b3 << 42) | (b3 >> (64 - 42))) ^ b0; 1493 1494 b4 += b1; 1495 b1 = ((b1 << 17) | (b1 >> (64 - 17))) ^ b4; 1496 1497 b6 += b3; 1498 b3 = ((b3 << 49) | (b3 >> (64 - 49))) ^ b6; 1499 1500 b0 += b5; 1501 b5 = ((b5 << 36) | (b5 >> (64 - 36))) ^ b0; 1502 1503 b2 += b7; 1504 b7 = ((b7 << 39) | (b7 >> (64 - 39))) ^ b2; 1505 1506 b6 += b1; 1507 b1 = ((b1 << 44) | (b1 >> (64 - 44))) ^ b6; 1508 1509 b0 += b7; 1510 b7 = ((b7 << 9) | (b7 >> (64 - 9))) ^ b0; 1511 1512 b2 += b5; 1513 b5 = ((b5 << 54) | (b5 >> (64 - 54))) ^ b2; 1514 1515 b4 += b3; 1516 b3 = ((b3 << 56) | (b3 >> (64 - 56))) ^ b4; 1517 1518 b1 += k8; 1519 b0 += b1 + k7; 1520 b1 = ((b1 << 39) | (b1 >> (64 - 39))) ^ b0; 1521 1522 b3 += k1; 1523 b2 += b3 + k0; 1524 b3 = ((b3 << 30) | (b3 >> (64 - 30))) ^ b2; 1525 1526 b5 += k3 + t1; 1527 b4 += b5 + k2; 1528 b5 = ((b5 << 34) | (b5 >> (64 - 34))) ^ b4; 1529 1530 b7 += k5 + 7; 1531 b6 += b7 + k4 + t2; 1532 b7 = ((b7 << 24) | (b7 >> (64 - 24))) ^ b6; 1533 1534 b2 += b1; 1535 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b2; 1536 1537 b4 += b7; 1538 b7 = ((b7 << 50) | (b7 >> (64 - 50))) ^ b4; 1539 1540 b6 += b5; 1541 b5 = ((b5 << 10) | (b5 >> (64 - 10))) ^ b6; 1542 1543 b0 += b3; 1544 b3 = ((b3 << 17) | (b3 >> (64 - 17))) ^ b0; 1545 1546 b4 += b1; 1547 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b4; 1548 1549 b6 += b3; 1550 b3 = ((b3 << 29) | (b3 >> (64 - 29))) ^ b6; 1551 1552 b0 += b5; 1553 b5 = ((b5 << 39) | (b5 >> (64 - 39))) ^ b0; 1554 1555 b2 += b7; 1556 b7 = ((b7 << 43) | (b7 >> (64 - 43))) ^ b2; 1557 1558 b6 += b1; 1559 b1 = ((b1 << 8) | (b1 >> (64 - 8))) ^ b6; 1560 1561 b0 += b7; 1562 b7 = ((b7 << 35) | (b7 >> (64 - 35))) ^ b0; 1563 1564 b2 += b5; 1565 b5 = ((b5 << 56) | (b5 >> (64 - 56))) ^ b2; 1566 1567 b4 += b3; 1568 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b4; 1569 1570 b1 += k0; 1571 b0 += b1 + k8; 1572 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b0; 1573 1574 b3 += k2; 1575 b2 += b3 + k1; 1576 b3 = ((b3 << 36) | (b3 >> (64 - 36))) ^ b2; 1577 1578 b5 += k4 + t2; 1579 b4 += b5 + k3; 1580 b5 = ((b5 << 19) | (b5 >> (64 - 19))) ^ b4; 1581 1582 b7 += k6 + 8; 1583 b6 += b7 + k5 + t0; 1584 b7 = ((b7 << 37) | (b7 >> (64 - 37))) ^ b6; 1585 1586 b2 += b1; 1587 b1 = ((b1 << 33) | (b1 >> (64 - 33))) ^ b2; 1588 1589 b4 += b7; 1590 b7 = ((b7 << 27) | (b7 >> (64 - 27))) ^ b4; 1591 1592 b6 += b5; 1593 b5 = ((b5 << 14) | (b5 >> (64 - 14))) ^ b6; 1594 1595 b0 += b3; 1596 b3 = ((b3 << 42) | (b3 >> (64 - 42))) ^ b0; 1597 1598 b4 += b1; 1599 b1 = ((b1 << 17) | (b1 >> (64 - 17))) ^ b4; 1600 1601 b6 += b3; 1602 b3 = ((b3 << 49) | (b3 >> (64 - 49))) ^ b6; 1603 1604 b0 += b5; 1605 b5 = ((b5 << 36) | (b5 >> (64 - 36))) ^ b0; 1606 1607 b2 += b7; 1608 b7 = ((b7 << 39) | (b7 >> (64 - 39))) ^ b2; 1609 1610 b6 += b1; 1611 b1 = ((b1 << 44) | (b1 >> (64 - 44))) ^ b6; 1612 1613 b0 += b7; 1614 b7 = ((b7 << 9) | (b7 >> (64 - 9))) ^ b0; 1615 1616 b2 += b5; 1617 b5 = ((b5 << 54) | (b5 >> (64 - 54))) ^ b2; 1618 1619 b4 += b3; 1620 b3 = ((b3 << 56) | (b3 >> (64 - 56))) ^ b4; 1621 1622 b1 += k1; 1623 b0 += b1 + k0; 1624 b1 = ((b1 << 39) | (b1 >> (64 - 39))) ^ b0; 1625 1626 b3 += k3; 1627 b2 += b3 + k2; 1628 b3 = ((b3 << 30) | (b3 >> (64 - 30))) ^ b2; 1629 1630 b5 += k5 + t0; 1631 b4 += b5 + k4; 1632 b5 = ((b5 << 34) | (b5 >> (64 - 34))) ^ b4; 1633 1634 b7 += k7 + 9; 1635 b6 += b7 + k6 + t1; 1636 b7 = ((b7 << 24) | (b7 >> (64 - 24))) ^ b6; 1637 1638 b2 += b1; 1639 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b2; 1640 1641 b4 += b7; 1642 b7 = ((b7 << 50) | (b7 >> (64 - 50))) ^ b4; 1643 1644 b6 += b5; 1645 b5 = ((b5 << 10) | (b5 >> (64 - 10))) ^ b6; 1646 1647 b0 += b3; 1648 b3 = ((b3 << 17) | (b3 >> (64 - 17))) ^ b0; 1649 1650 b4 += b1; 1651 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b4; 1652 1653 b6 += b3; 1654 b3 = ((b3 << 29) | (b3 >> (64 - 29))) ^ b6; 1655 1656 b0 += b5; 1657 b5 = ((b5 << 39) | (b5 >> (64 - 39))) ^ b0; 1658 1659 b2 += b7; 1660 b7 = ((b7 << 43) | (b7 >> (64 - 43))) ^ b2; 1661 1662 b6 += b1; 1663 b1 = ((b1 << 8) | (b1 >> (64 - 8))) ^ b6; 1664 1665 b0 += b7; 1666 b7 = ((b7 << 35) | (b7 >> (64 - 35))) ^ b0; 1667 1668 b2 += b5; 1669 b5 = ((b5 << 56) | (b5 >> (64 - 56))) ^ b2; 1670 1671 b4 += b3; 1672 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b4; 1673 1674 b1 += k2; 1675 b0 += b1 + k1; 1676 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b0; 1677 1678 b3 += k4; 1679 b2 += b3 + k3; 1680 b3 = ((b3 << 36) | (b3 >> (64 - 36))) ^ b2; 1681 1682 b5 += k6 + t1; 1683 b4 += b5 + k5; 1684 b5 = ((b5 << 19) | (b5 >> (64 - 19))) ^ b4; 1685 1686 b7 += k8 + 10; 1687 b6 += b7 + k7 + t2; 1688 b7 = ((b7 << 37) | (b7 >> (64 - 37))) ^ b6; 1689 1690 b2 += b1; 1691 b1 = ((b1 << 33) | (b1 >> (64 - 33))) ^ b2; 1692 1693 b4 += b7; 1694 b7 = ((b7 << 27) | (b7 >> (64 - 27))) ^ b4; 1695 1696 b6 += b5; 1697 b5 = ((b5 << 14) | (b5 >> (64 - 14))) ^ b6; 1698 1699 b0 += b3; 1700 b3 = ((b3 << 42) | (b3 >> (64 - 42))) ^ b0; 1701 1702 b4 += b1; 1703 b1 = ((b1 << 17) | (b1 >> (64 - 17))) ^ b4; 1704 1705 b6 += b3; 1706 b3 = ((b3 << 49) | (b3 >> (64 - 49))) ^ b6; 1707 1708 b0 += b5; 1709 b5 = ((b5 << 36) | (b5 >> (64 - 36))) ^ b0; 1710 1711 b2 += b7; 1712 b7 = ((b7 << 39) | (b7 >> (64 - 39))) ^ b2; 1713 1714 b6 += b1; 1715 b1 = ((b1 << 44) | (b1 >> (64 - 44))) ^ b6; 1716 1717 b0 += b7; 1718 b7 = ((b7 << 9) | (b7 >> (64 - 9))) ^ b0; 1719 1720 b2 += b5; 1721 b5 = ((b5 << 54) | (b5 >> (64 - 54))) ^ b2; 1722 1723 b4 += b3; 1724 b3 = ((b3 << 56) | (b3 >> (64 - 56))) ^ b4; 1725 1726 b1 += k3; 1727 b0 += b1 + k2; 1728 b1 = ((b1 << 39) | (b1 >> (64 - 39))) ^ b0; 1729 1730 b3 += k5; 1731 b2 += b3 + k4; 1732 b3 = ((b3 << 30) | (b3 >> (64 - 30))) ^ b2; 1733 1734 b5 += k7 + t2; 1735 b4 += b5 + k6; 1736 b5 = ((b5 << 34) | (b5 >> (64 - 34))) ^ b4; 1737 1738 b7 += k0 + 11; 1739 b6 += b7 + k8 + t0; 1740 b7 = ((b7 << 24) | (b7 >> (64 - 24))) ^ b6; 1741 1742 b2 += b1; 1743 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b2; 1744 1745 b4 += b7; 1746 b7 = ((b7 << 50) | (b7 >> (64 - 50))) ^ b4; 1747 1748 b6 += b5; 1749 b5 = ((b5 << 10) | (b5 >> (64 - 10))) ^ b6; 1750 1751 b0 += b3; 1752 b3 = ((b3 << 17) | (b3 >> (64 - 17))) ^ b0; 1753 1754 b4 += b1; 1755 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b4; 1756 1757 b6 += b3; 1758 b3 = ((b3 << 29) | (b3 >> (64 - 29))) ^ b6; 1759 1760 b0 += b5; 1761 b5 = ((b5 << 39) | (b5 >> (64 - 39))) ^ b0; 1762 1763 b2 += b7; 1764 b7 = ((b7 << 43) | (b7 >> (64 - 43))) ^ b2; 1765 1766 b6 += b1; 1767 b1 = ((b1 << 8) | (b1 >> (64 - 8))) ^ b6; 1768 1769 b0 += b7; 1770 b7 = ((b7 << 35) | (b7 >> (64 - 35))) ^ b0; 1771 1772 b2 += b5; 1773 b5 = ((b5 << 56) | (b5 >> (64 - 56))) ^ b2; 1774 1775 b4 += b3; 1776 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b4; 1777 1778 b1 += k4; 1779 b0 += b1 + k3; 1780 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b0; 1781 1782 b3 += k6; 1783 b2 += b3 + k5; 1784 b3 = ((b3 << 36) | (b3 >> (64 - 36))) ^ b2; 1785 1786 b5 += k8 + t0; 1787 b4 += b5 + k7; 1788 b5 = ((b5 << 19) | (b5 >> (64 - 19))) ^ b4; 1789 1790 b7 += k1 + 12; 1791 b6 += b7 + k0 + t1; 1792 b7 = ((b7 << 37) | (b7 >> (64 - 37))) ^ b6; 1793 1794 b2 += b1; 1795 b1 = ((b1 << 33) | (b1 >> (64 - 33))) ^ b2; 1796 1797 b4 += b7; 1798 b7 = ((b7 << 27) | (b7 >> (64 - 27))) ^ b4; 1799 1800 b6 += b5; 1801 b5 = ((b5 << 14) | (b5 >> (64 - 14))) ^ b6; 1802 1803 b0 += b3; 1804 b3 = ((b3 << 42) | (b3 >> (64 - 42))) ^ b0; 1805 1806 b4 += b1; 1807 b1 = ((b1 << 17) | (b1 >> (64 - 17))) ^ b4; 1808 1809 b6 += b3; 1810 b3 = ((b3 << 49) | (b3 >> (64 - 49))) ^ b6; 1811 1812 b0 += b5; 1813 b5 = ((b5 << 36) | (b5 >> (64 - 36))) ^ b0; 1814 1815 b2 += b7; 1816 b7 = ((b7 << 39) | (b7 >> (64 - 39))) ^ b2; 1817 1818 b6 += b1; 1819 b1 = ((b1 << 44) | (b1 >> (64 - 44))) ^ b6; 1820 1821 b0 += b7; 1822 b7 = ((b7 << 9) | (b7 >> (64 - 9))) ^ b0; 1823 1824 b2 += b5; 1825 b5 = ((b5 << 54) | (b5 >> (64 - 54))) ^ b2; 1826 1827 b4 += b3; 1828 b3 = ((b3 << 56) | (b3 >> (64 - 56))) ^ b4; 1829 1830 b1 += k5; 1831 b0 += b1 + k4; 1832 b1 = ((b1 << 39) | (b1 >> (64 - 39))) ^ b0; 1833 1834 b3 += k7; 1835 b2 += b3 + k6; 1836 b3 = ((b3 << 30) | (b3 >> (64 - 30))) ^ b2; 1837 1838 b5 += k0 + t1; 1839 b4 += b5 + k8; 1840 b5 = ((b5 << 34) | (b5 >> (64 - 34))) ^ b4; 1841 1842 b7 += k2 + 13; 1843 b6 += b7 + k1 + t2; 1844 b7 = ((b7 << 24) | (b7 >> (64 - 24))) ^ b6; 1845 1846 b2 += b1; 1847 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b2; 1848 1849 b4 += b7; 1850 b7 = ((b7 << 50) | (b7 >> (64 - 50))) ^ b4; 1851 1852 b6 += b5; 1853 b5 = ((b5 << 10) | (b5 >> (64 - 10))) ^ b6; 1854 1855 b0 += b3; 1856 b3 = ((b3 << 17) | (b3 >> (64 - 17))) ^ b0; 1857 1858 b4 += b1; 1859 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b4; 1860 1861 b6 += b3; 1862 b3 = ((b3 << 29) | (b3 >> (64 - 29))) ^ b6; 1863 1864 b0 += b5; 1865 b5 = ((b5 << 39) | (b5 >> (64 - 39))) ^ b0; 1866 1867 b2 += b7; 1868 b7 = ((b7 << 43) | (b7 >> (64 - 43))) ^ b2; 1869 1870 b6 += b1; 1871 b1 = ((b1 << 8) | (b1 >> (64 - 8))) ^ b6; 1872 1873 b0 += b7; 1874 b7 = ((b7 << 35) | (b7 >> (64 - 35))) ^ b0; 1875 1876 b2 += b5; 1877 b5 = ((b5 << 56) | (b5 >> (64 - 56))) ^ b2; 1878 1879 b4 += b3; 1880 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b4; 1881 1882 b1 += k6; 1883 b0 += b1 + k5; 1884 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b0; 1885 1886 b3 += k8; 1887 b2 += b3 + k7; 1888 b3 = ((b3 << 36) | (b3 >> (64 - 36))) ^ b2; 1889 1890 b5 += k1 + t2; 1891 b4 += b5 + k0; 1892 b5 = ((b5 << 19) | (b5 >> (64 - 19))) ^ b4; 1893 1894 b7 += k3 + 14; 1895 b6 += b7 + k2 + t0; 1896 b7 = ((b7 << 37) | (b7 >> (64 - 37))) ^ b6; 1897 1898 b2 += b1; 1899 b1 = ((b1 << 33) | (b1 >> (64 - 33))) ^ b2; 1900 1901 b4 += b7; 1902 b7 = ((b7 << 27) | (b7 >> (64 - 27))) ^ b4; 1903 1904 b6 += b5; 1905 b5 = ((b5 << 14) | (b5 >> (64 - 14))) ^ b6; 1906 1907 b0 += b3; 1908 b3 = ((b3 << 42) | (b3 >> (64 - 42))) ^ b0; 1909 1910 b4 += b1; 1911 b1 = ((b1 << 17) | (b1 >> (64 - 17))) ^ b4; 1912 1913 b6 += b3; 1914 b3 = ((b3 << 49) | (b3 >> (64 - 49))) ^ b6; 1915 1916 b0 += b5; 1917 b5 = ((b5 << 36) | (b5 >> (64 - 36))) ^ b0; 1918 1919 b2 += b7; 1920 b7 = ((b7 << 39) | (b7 >> (64 - 39))) ^ b2; 1921 1922 b6 += b1; 1923 b1 = ((b1 << 44) | (b1 >> (64 - 44))) ^ b6; 1924 1925 b0 += b7; 1926 b7 = ((b7 << 9) | (b7 >> (64 - 9))) ^ b0; 1927 1928 b2 += b5; 1929 b5 = ((b5 << 54) | (b5 >> (64 - 54))) ^ b2; 1930 1931 b4 += b3; 1932 b3 = ((b3 << 56) | (b3 >> (64 - 56))) ^ b4; 1933 1934 b1 += k7; 1935 b0 += b1 + k6; 1936 b1 = ((b1 << 39) | (b1 >> (64 - 39))) ^ b0; 1937 1938 b3 += k0; 1939 b2 += b3 + k8; 1940 b3 = ((b3 << 30) | (b3 >> (64 - 30))) ^ b2; 1941 1942 b5 += k2 + t0; 1943 b4 += b5 + k1; 1944 b5 = ((b5 << 34) | (b5 >> (64 - 34))) ^ b4; 1945 1946 b7 += k4 + 15; 1947 b6 += b7 + k3 + t1; 1948 b7 = ((b7 << 24) | (b7 >> (64 - 24))) ^ b6; 1949 1950 b2 += b1; 1951 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b2; 1952 1953 b4 += b7; 1954 b7 = ((b7 << 50) | (b7 >> (64 - 50))) ^ b4; 1955 1956 b6 += b5; 1957 b5 = ((b5 << 10) | (b5 >> (64 - 10))) ^ b6; 1958 1959 b0 += b3; 1960 b3 = ((b3 << 17) | (b3 >> (64 - 17))) ^ b0; 1961 1962 b4 += b1; 1963 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b4; 1964 1965 b6 += b3; 1966 b3 = ((b3 << 29) | (b3 >> (64 - 29))) ^ b6; 1967 1968 b0 += b5; 1969 b5 = ((b5 << 39) | (b5 >> (64 - 39))) ^ b0; 1970 1971 b2 += b7; 1972 b7 = ((b7 << 43) | (b7 >> (64 - 43))) ^ b2; 1973 1974 b6 += b1; 1975 b1 = ((b1 << 8) | (b1 >> (64 - 8))) ^ b6; 1976 1977 b0 += b7; 1978 b7 = ((b7 << 35) | (b7 >> (64 - 35))) ^ b0; 1979 1980 b2 += b5; 1981 b5 = ((b5 << 56) | (b5 >> (64 - 56))) ^ b2; 1982 1983 b4 += b3; 1984 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b4; 1985 1986 b1 += k8; 1987 b0 += b1 + k7; 1988 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b0; 1989 1990 b3 += k1; 1991 b2 += b3 + k0; 1992 b3 = ((b3 << 36) | (b3 >> (64 - 36))) ^ b2; 1993 1994 b5 += k3 + t1; 1995 b4 += b5 + k2; 1996 b5 = ((b5 << 19) | (b5 >> (64 - 19))) ^ b4; 1997 1998 b7 += k5 + 16; 1999 b6 += b7 + k4 + t2; 2000 b7 = ((b7 << 37) | (b7 >> (64 - 37))) ^ b6; 2001 2002 b2 += b1; 2003 b1 = ((b1 << 33) | (b1 >> (64 - 33))) ^ b2; 2004 2005 b4 += b7; 2006 b7 = ((b7 << 27) | (b7 >> (64 - 27))) ^ b4; 2007 2008 b6 += b5; 2009 b5 = ((b5 << 14) | (b5 >> (64 - 14))) ^ b6; 2010 2011 b0 += b3; 2012 b3 = ((b3 << 42) | (b3 >> (64 - 42))) ^ b0; 2013 2014 b4 += b1; 2015 b1 = ((b1 << 17) | (b1 >> (64 - 17))) ^ b4; 2016 2017 b6 += b3; 2018 b3 = ((b3 << 49) | (b3 >> (64 - 49))) ^ b6; 2019 2020 b0 += b5; 2021 b5 = ((b5 << 36) | (b5 >> (64 - 36))) ^ b0; 2022 2023 b2 += b7; 2024 b7 = ((b7 << 39) | (b7 >> (64 - 39))) ^ b2; 2025 2026 b6 += b1; 2027 b1 = ((b1 << 44) | (b1 >> (64 - 44))) ^ b6; 2028 2029 b0 += b7; 2030 b7 = ((b7 << 9) | (b7 >> (64 - 9))) ^ b0; 2031 2032 b2 += b5; 2033 b5 = ((b5 << 54) | (b5 >> (64 - 54))) ^ b2; 2034 2035 b4 += b3; 2036 b3 = ((b3 << 56) | (b3 >> (64 - 56))) ^ b4; 2037 2038 b1 += k0; 2039 b0 += b1 + k8; 2040 b1 = ((b1 << 39) | (b1 >> (64 - 39))) ^ b0; 2041 2042 b3 += k2; 2043 b2 += b3 + k1; 2044 b3 = ((b3 << 30) | (b3 >> (64 - 30))) ^ b2; 2045 2046 b5 += k4 + t2; 2047 b4 += b5 + k3; 2048 b5 = ((b5 << 34) | (b5 >> (64 - 34))) ^ b4; 2049 2050 b7 += k6 + 17; 2051 b6 += b7 + k5 + t0; 2052 b7 = ((b7 << 24) | (b7 >> (64 - 24))) ^ b6; 2053 2054 b2 += b1; 2055 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b2; 2056 2057 b4 += b7; 2058 b7 = ((b7 << 50) | (b7 >> (64 - 50))) ^ b4; 2059 2060 b6 += b5; 2061 b5 = ((b5 << 10) | (b5 >> (64 - 10))) ^ b6; 2062 2063 b0 += b3; 2064 b3 = ((b3 << 17) | (b3 >> (64 - 17))) ^ b0; 2065 2066 b4 += b1; 2067 b1 = ((b1 << 25) | (b1 >> (64 - 25))) ^ b4; 2068 2069 b6 += b3; 2070 b3 = ((b3 << 29) | (b3 >> (64 - 29))) ^ b6; 2071 2072 b0 += b5; 2073 b5 = ((b5 << 39) | (b5 >> (64 - 39))) ^ b0; 2074 2075 b2 += b7; 2076 b7 = ((b7 << 43) | (b7 >> (64 - 43))) ^ b2; 2077 2078 b6 += b1; 2079 b1 = ((b1 << 8) | (b1 >> (64 - 8))) ^ b6; 2080 2081 b0 += b7; 2082 b7 = ((b7 << 35) | (b7 >> (64 - 35))) ^ b0; 2083 2084 b2 += b5; 2085 b5 = ((b5 << 56) | (b5 >> (64 - 56))) ^ b2; 2086 2087 b4 += b3; 2088 b3 = ((b3 << 22) | (b3 >> (64 - 22))) ^ b4; 2089 2090 output[0] = b0 + k0; 2091 output[1] = b1 + k1; 2092 output[2] = b2 + k2; 2093 output[3] = b3 + k3; 2094 output[4] = b4 + k4; 2095 output[5] = b5 + k5 + t0; 2096 output[6] = b6 + k6 + t1; 2097 output[7] = b7 + k7 + 18; 2098} 2099 2100void threefish_decrypt_512(struct threefish_key *key_ctx, u64 *input, 2101 u64 *output) 2102{ 2103 u64 b0 = input[0], b1 = input[1], 2104 b2 = input[2], b3 = input[3], 2105 b4 = input[4], b5 = input[5], 2106 b6 = input[6], b7 = input[7]; 2107 u64 k0 = key_ctx->key[0], k1 = key_ctx->key[1], 2108 k2 = key_ctx->key[2], k3 = key_ctx->key[3], 2109 k4 = key_ctx->key[4], k5 = key_ctx->key[5], 2110 k6 = key_ctx->key[6], k7 = key_ctx->key[7], 2111 k8 = key_ctx->key[8]; 2112 u64 t0 = key_ctx->tweak[0], t1 = key_ctx->tweak[1], 2113 t2 = key_ctx->tweak[2]; 2114 2115 u64 tmp; 2116 2117 b0 -= k0; 2118 b1 -= k1; 2119 b2 -= k2; 2120 b3 -= k3; 2121 b4 -= k4; 2122 b5 -= k5 + t0; 2123 b6 -= k6 + t1; 2124 b7 -= k7 + 18; 2125 2126 tmp = b3 ^ b4; 2127 b3 = (tmp >> 22) | (tmp << (64 - 22)); 2128 b4 -= b3; 2129 2130 tmp = b5 ^ b2; 2131 b5 = (tmp >> 56) | (tmp << (64 - 56)); 2132 b2 -= b5; 2133 2134 tmp = b7 ^ b0; 2135 b7 = (tmp >> 35) | (tmp << (64 - 35)); 2136 b0 -= b7; 2137 2138 tmp = b1 ^ b6; 2139 b1 = (tmp >> 8) | (tmp << (64 - 8)); 2140 b6 -= b1; 2141 2142 tmp = b7 ^ b2; 2143 b7 = (tmp >> 43) | (tmp << (64 - 43)); 2144 b2 -= b7; 2145 2146 tmp = b5 ^ b0; 2147 b5 = (tmp >> 39) | (tmp << (64 - 39)); 2148 b0 -= b5; 2149 2150 tmp = b3 ^ b6; 2151 b3 = (tmp >> 29) | (tmp << (64 - 29)); 2152 b6 -= b3; 2153 2154 tmp = b1 ^ b4; 2155 b1 = (tmp >> 25) | (tmp << (64 - 25)); 2156 b4 -= b1; 2157 2158 tmp = b3 ^ b0; 2159 b3 = (tmp >> 17) | (tmp << (64 - 17)); 2160 b0 -= b3; 2161 2162 tmp = b5 ^ b6; 2163 b5 = (tmp >> 10) | (tmp << (64 - 10)); 2164 b6 -= b5; 2165 2166 tmp = b7 ^ b4; 2167 b7 = (tmp >> 50) | (tmp << (64 - 50)); 2168 b4 -= b7; 2169 2170 tmp = b1 ^ b2; 2171 b1 = (tmp >> 13) | (tmp << (64 - 13)); 2172 b2 -= b1; 2173 2174 tmp = b7 ^ b6; 2175 b7 = (tmp >> 24) | (tmp << (64 - 24)); 2176 b6 -= b7 + k5 + t0; 2177 b7 -= k6 + 17; 2178 2179 tmp = b5 ^ b4; 2180 b5 = (tmp >> 34) | (tmp << (64 - 34)); 2181 b4 -= b5 + k3; 2182 b5 -= k4 + t2; 2183 2184 tmp = b3 ^ b2; 2185 b3 = (tmp >> 30) | (tmp << (64 - 30)); 2186 b2 -= b3 + k1; 2187 b3 -= k2; 2188 2189 tmp = b1 ^ b0; 2190 b1 = (tmp >> 39) | (tmp << (64 - 39)); 2191 b0 -= b1 + k8; 2192 b1 -= k0; 2193 2194 tmp = b3 ^ b4; 2195 b3 = (tmp >> 56) | (tmp << (64 - 56)); 2196 b4 -= b3; 2197 2198 tmp = b5 ^ b2; 2199 b5 = (tmp >> 54) | (tmp << (64 - 54)); 2200 b2 -= b5; 2201 2202 tmp = b7 ^ b0; 2203 b7 = (tmp >> 9) | (tmp << (64 - 9)); 2204 b0 -= b7; 2205 2206 tmp = b1 ^ b6; 2207 b1 = (tmp >> 44) | (tmp << (64 - 44)); 2208 b6 -= b1; 2209 2210 tmp = b7 ^ b2; 2211 b7 = (tmp >> 39) | (tmp << (64 - 39)); 2212 b2 -= b7; 2213 2214 tmp = b5 ^ b0; 2215 b5 = (tmp >> 36) | (tmp << (64 - 36)); 2216 b0 -= b5; 2217 2218 tmp = b3 ^ b6; 2219 b3 = (tmp >> 49) | (tmp << (64 - 49)); 2220 b6 -= b3; 2221 2222 tmp = b1 ^ b4; 2223 b1 = (tmp >> 17) | (tmp << (64 - 17)); 2224 b4 -= b1; 2225 2226 tmp = b3 ^ b0; 2227 b3 = (tmp >> 42) | (tmp << (64 - 42)); 2228 b0 -= b3; 2229 2230 tmp = b5 ^ b6; 2231 b5 = (tmp >> 14) | (tmp << (64 - 14)); 2232 b6 -= b5; 2233 2234 tmp = b7 ^ b4; 2235 b7 = (tmp >> 27) | (tmp << (64 - 27)); 2236 b4 -= b7; 2237 2238 tmp = b1 ^ b2; 2239 b1 = (tmp >> 33) | (tmp << (64 - 33)); 2240 b2 -= b1; 2241 2242 tmp = b7 ^ b6; 2243 b7 = (tmp >> 37) | (tmp << (64 - 37)); 2244 b6 -= b7 + k4 + t2; 2245 b7 -= k5 + 16; 2246 2247 tmp = b5 ^ b4; 2248 b5 = (tmp >> 19) | (tmp << (64 - 19)); 2249 b4 -= b5 + k2; 2250 b5 -= k3 + t1; 2251 2252 tmp = b3 ^ b2; 2253 b3 = (tmp >> 36) | (tmp << (64 - 36)); 2254 b2 -= b3 + k0; 2255 b3 -= k1; 2256 2257 tmp = b1 ^ b0; 2258 b1 = (tmp >> 46) | (tmp << (64 - 46)); 2259 b0 -= b1 + k7; 2260 b1 -= k8; 2261 2262 tmp = b3 ^ b4; 2263 b3 = (tmp >> 22) | (tmp << (64 - 22)); 2264 b4 -= b3; 2265 2266 tmp = b5 ^ b2; 2267 b5 = (tmp >> 56) | (tmp << (64 - 56)); 2268 b2 -= b5; 2269 2270 tmp = b7 ^ b0; 2271 b7 = (tmp >> 35) | (tmp << (64 - 35)); 2272 b0 -= b7; 2273 2274 tmp = b1 ^ b6; 2275 b1 = (tmp >> 8) | (tmp << (64 - 8)); 2276 b6 -= b1; 2277 2278 tmp = b7 ^ b2; 2279 b7 = (tmp >> 43) | (tmp << (64 - 43)); 2280 b2 -= b7; 2281 2282 tmp = b5 ^ b0; 2283 b5 = (tmp >> 39) | (tmp << (64 - 39)); 2284 b0 -= b5; 2285 2286 tmp = b3 ^ b6; 2287 b3 = (tmp >> 29) | (tmp << (64 - 29)); 2288 b6 -= b3; 2289 2290 tmp = b1 ^ b4; 2291 b1 = (tmp >> 25) | (tmp << (64 - 25)); 2292 b4 -= b1; 2293 2294 tmp = b3 ^ b0; 2295 b3 = (tmp >> 17) | (tmp << (64 - 17)); 2296 b0 -= b3; 2297 2298 tmp = b5 ^ b6; 2299 b5 = (tmp >> 10) | (tmp << (64 - 10)); 2300 b6 -= b5; 2301 2302 tmp = b7 ^ b4; 2303 b7 = (tmp >> 50) | (tmp << (64 - 50)); 2304 b4 -= b7; 2305 2306 tmp = b1 ^ b2; 2307 b1 = (tmp >> 13) | (tmp << (64 - 13)); 2308 b2 -= b1; 2309 2310 tmp = b7 ^ b6; 2311 b7 = (tmp >> 24) | (tmp << (64 - 24)); 2312 b6 -= b7 + k3 + t1; 2313 b7 -= k4 + 15; 2314 2315 tmp = b5 ^ b4; 2316 b5 = (tmp >> 34) | (tmp << (64 - 34)); 2317 b4 -= b5 + k1; 2318 b5 -= k2 + t0; 2319 2320 tmp = b3 ^ b2; 2321 b3 = (tmp >> 30) | (tmp << (64 - 30)); 2322 b2 -= b3 + k8; 2323 b3 -= k0; 2324 2325 tmp = b1 ^ b0; 2326 b1 = (tmp >> 39) | (tmp << (64 - 39)); 2327 b0 -= b1 + k6; 2328 b1 -= k7; 2329 2330 tmp = b3 ^ b4; 2331 b3 = (tmp >> 56) | (tmp << (64 - 56)); 2332 b4 -= b3; 2333 2334 tmp = b5 ^ b2; 2335 b5 = (tmp >> 54) | (tmp << (64 - 54)); 2336 b2 -= b5; 2337 2338 tmp = b7 ^ b0; 2339 b7 = (tmp >> 9) | (tmp << (64 - 9)); 2340 b0 -= b7; 2341 2342 tmp = b1 ^ b6; 2343 b1 = (tmp >> 44) | (tmp << (64 - 44)); 2344 b6 -= b1; 2345 2346 tmp = b7 ^ b2; 2347 b7 = (tmp >> 39) | (tmp << (64 - 39)); 2348 b2 -= b7; 2349 2350 tmp = b5 ^ b0; 2351 b5 = (tmp >> 36) | (tmp << (64 - 36)); 2352 b0 -= b5; 2353 2354 tmp = b3 ^ b6; 2355 b3 = (tmp >> 49) | (tmp << (64 - 49)); 2356 b6 -= b3; 2357 2358 tmp = b1 ^ b4; 2359 b1 = (tmp >> 17) | (tmp << (64 - 17)); 2360 b4 -= b1; 2361 2362 tmp = b3 ^ b0; 2363 b3 = (tmp >> 42) | (tmp << (64 - 42)); 2364 b0 -= b3; 2365 2366 tmp = b5 ^ b6; 2367 b5 = (tmp >> 14) | (tmp << (64 - 14)); 2368 b6 -= b5; 2369 2370 tmp = b7 ^ b4; 2371 b7 = (tmp >> 27) | (tmp << (64 - 27)); 2372 b4 -= b7; 2373 2374 tmp = b1 ^ b2; 2375 b1 = (tmp >> 33) | (tmp << (64 - 33)); 2376 b2 -= b1; 2377 2378 tmp = b7 ^ b6; 2379 b7 = (tmp >> 37) | (tmp << (64 - 37)); 2380 b6 -= b7 + k2 + t0; 2381 b7 -= k3 + 14; 2382 2383 tmp = b5 ^ b4; 2384 b5 = (tmp >> 19) | (tmp << (64 - 19)); 2385 b4 -= b5 + k0; 2386 b5 -= k1 + t2; 2387 2388 tmp = b3 ^ b2; 2389 b3 = (tmp >> 36) | (tmp << (64 - 36)); 2390 b2 -= b3 + k7; 2391 b3 -= k8; 2392 2393 tmp = b1 ^ b0; 2394 b1 = (tmp >> 46) | (tmp << (64 - 46)); 2395 b0 -= b1 + k5; 2396 b1 -= k6; 2397 2398 tmp = b3 ^ b4; 2399 b3 = (tmp >> 22) | (tmp << (64 - 22)); 2400 b4 -= b3; 2401 2402 tmp = b5 ^ b2; 2403 b5 = (tmp >> 56) | (tmp << (64 - 56)); 2404 b2 -= b5; 2405 2406 tmp = b7 ^ b0; 2407 b7 = (tmp >> 35) | (tmp << (64 - 35)); 2408 b0 -= b7; 2409 2410 tmp = b1 ^ b6; 2411 b1 = (tmp >> 8) | (tmp << (64 - 8)); 2412 b6 -= b1; 2413 2414 tmp = b7 ^ b2; 2415 b7 = (tmp >> 43) | (tmp << (64 - 43)); 2416 b2 -= b7; 2417 2418 tmp = b5 ^ b0; 2419 b5 = (tmp >> 39) | (tmp << (64 - 39)); 2420 b0 -= b5; 2421 2422 tmp = b3 ^ b6; 2423 b3 = (tmp >> 29) | (tmp << (64 - 29)); 2424 b6 -= b3; 2425 2426 tmp = b1 ^ b4; 2427 b1 = (tmp >> 25) | (tmp << (64 - 25)); 2428 b4 -= b1; 2429 2430 tmp = b3 ^ b0; 2431 b3 = (tmp >> 17) | (tmp << (64 - 17)); 2432 b0 -= b3; 2433 2434 tmp = b5 ^ b6; 2435 b5 = (tmp >> 10) | (tmp << (64 - 10)); 2436 b6 -= b5; 2437 2438 tmp = b7 ^ b4; 2439 b7 = (tmp >> 50) | (tmp << (64 - 50)); 2440 b4 -= b7; 2441 2442 tmp = b1 ^ b2; 2443 b1 = (tmp >> 13) | (tmp << (64 - 13)); 2444 b2 -= b1; 2445 2446 tmp = b7 ^ b6; 2447 b7 = (tmp >> 24) | (tmp << (64 - 24)); 2448 b6 -= b7 + k1 + t2; 2449 b7 -= k2 + 13; 2450 2451 tmp = b5 ^ b4; 2452 b5 = (tmp >> 34) | (tmp << (64 - 34)); 2453 b4 -= b5 + k8; 2454 b5 -= k0 + t1; 2455 2456 tmp = b3 ^ b2; 2457 b3 = (tmp >> 30) | (tmp << (64 - 30)); 2458 b2 -= b3 + k6; 2459 b3 -= k7; 2460 2461 tmp = b1 ^ b0; 2462 b1 = (tmp >> 39) | (tmp << (64 - 39)); 2463 b0 -= b1 + k4; 2464 b1 -= k5; 2465 2466 tmp = b3 ^ b4; 2467 b3 = (tmp >> 56) | (tmp << (64 - 56)); 2468 b4 -= b3; 2469 2470 tmp = b5 ^ b2; 2471 b5 = (tmp >> 54) | (tmp << (64 - 54)); 2472 b2 -= b5; 2473 2474 tmp = b7 ^ b0; 2475 b7 = (tmp >> 9) | (tmp << (64 - 9)); 2476 b0 -= b7; 2477 2478 tmp = b1 ^ b6; 2479 b1 = (tmp >> 44) | (tmp << (64 - 44)); 2480 b6 -= b1; 2481 2482 tmp = b7 ^ b2; 2483 b7 = (tmp >> 39) | (tmp << (64 - 39)); 2484 b2 -= b7; 2485 2486 tmp = b5 ^ b0; 2487 b5 = (tmp >> 36) | (tmp << (64 - 36)); 2488 b0 -= b5; 2489 2490 tmp = b3 ^ b6; 2491 b3 = (tmp >> 49) | (tmp << (64 - 49)); 2492 b6 -= b3; 2493 2494 tmp = b1 ^ b4; 2495 b1 = (tmp >> 17) | (tmp << (64 - 17)); 2496 b4 -= b1; 2497 2498 tmp = b3 ^ b0; 2499 b3 = (tmp >> 42) | (tmp << (64 - 42)); 2500 b0 -= b3; 2501 2502 tmp = b5 ^ b6; 2503 b5 = (tmp >> 14) | (tmp << (64 - 14)); 2504 b6 -= b5; 2505 2506 tmp = b7 ^ b4; 2507 b7 = (tmp >> 27) | (tmp << (64 - 27)); 2508 b4 -= b7; 2509 2510 tmp = b1 ^ b2; 2511 b1 = (tmp >> 33) | (tmp << (64 - 33)); 2512 b2 -= b1; 2513 2514 tmp = b7 ^ b6; 2515 b7 = (tmp >> 37) | (tmp << (64 - 37)); 2516 b6 -= b7 + k0 + t1; 2517 b7 -= k1 + 12; 2518 2519 tmp = b5 ^ b4; 2520 b5 = (tmp >> 19) | (tmp << (64 - 19)); 2521 b4 -= b5 + k7; 2522 b5 -= k8 + t0; 2523 2524 tmp = b3 ^ b2; 2525 b3 = (tmp >> 36) | (tmp << (64 - 36)); 2526 b2 -= b3 + k5; 2527 b3 -= k6; 2528 2529 tmp = b1 ^ b0; 2530 b1 = (tmp >> 46) | (tmp << (64 - 46)); 2531 b0 -= b1 + k3; 2532 b1 -= k4; 2533 2534 tmp = b3 ^ b4; 2535 b3 = (tmp >> 22) | (tmp << (64 - 22)); 2536 b4 -= b3; 2537 2538 tmp = b5 ^ b2; 2539 b5 = (tmp >> 56) | (tmp << (64 - 56)); 2540 b2 -= b5; 2541 2542 tmp = b7 ^ b0; 2543 b7 = (tmp >> 35) | (tmp << (64 - 35)); 2544 b0 -= b7; 2545 2546 tmp = b1 ^ b6; 2547 b1 = (tmp >> 8) | (tmp << (64 - 8)); 2548 b6 -= b1; 2549 2550 tmp = b7 ^ b2; 2551 b7 = (tmp >> 43) | (tmp << (64 - 43)); 2552 b2 -= b7; 2553 2554 tmp = b5 ^ b0; 2555 b5 = (tmp >> 39) | (tmp << (64 - 39)); 2556 b0 -= b5; 2557 2558 tmp = b3 ^ b6; 2559 b3 = (tmp >> 29) | (tmp << (64 - 29)); 2560 b6 -= b3; 2561 2562 tmp = b1 ^ b4; 2563 b1 = (tmp >> 25) | (tmp << (64 - 25)); 2564 b4 -= b1; 2565 2566 tmp = b3 ^ b0; 2567 b3 = (tmp >> 17) | (tmp << (64 - 17)); 2568 b0 -= b3; 2569 2570 tmp = b5 ^ b6; 2571 b5 = (tmp >> 10) | (tmp << (64 - 10)); 2572 b6 -= b5; 2573 2574 tmp = b7 ^ b4; 2575 b7 = (tmp >> 50) | (tmp << (64 - 50)); 2576 b4 -= b7; 2577 2578 tmp = b1 ^ b2; 2579 b1 = (tmp >> 13) | (tmp << (64 - 13)); 2580 b2 -= b1; 2581 2582 tmp = b7 ^ b6; 2583 b7 = (tmp >> 24) | (tmp << (64 - 24)); 2584 b6 -= b7 + k8 + t0; 2585 b7 -= k0 + 11; 2586 2587 tmp = b5 ^ b4; 2588 b5 = (tmp >> 34) | (tmp << (64 - 34)); 2589 b4 -= b5 + k6; 2590 b5 -= k7 + t2; 2591 2592 tmp = b3 ^ b2; 2593 b3 = (tmp >> 30) | (tmp << (64 - 30)); 2594 b2 -= b3 + k4; 2595 b3 -= k5; 2596 2597 tmp = b1 ^ b0; 2598 b1 = (tmp >> 39) | (tmp << (64 - 39)); 2599 b0 -= b1 + k2; 2600 b1 -= k3; 2601 2602 tmp = b3 ^ b4; 2603 b3 = (tmp >> 56) | (tmp << (64 - 56)); 2604 b4 -= b3; 2605 2606 tmp = b5 ^ b2; 2607 b5 = (tmp >> 54) | (tmp << (64 - 54)); 2608 b2 -= b5; 2609 2610 tmp = b7 ^ b0; 2611 b7 = (tmp >> 9) | (tmp << (64 - 9)); 2612 b0 -= b7; 2613 2614 tmp = b1 ^ b6; 2615 b1 = (tmp >> 44) | (tmp << (64 - 44)); 2616 b6 -= b1; 2617 2618 tmp = b7 ^ b2; 2619 b7 = (tmp >> 39) | (tmp << (64 - 39)); 2620 b2 -= b7; 2621 2622 tmp = b5 ^ b0; 2623 b5 = (tmp >> 36) | (tmp << (64 - 36)); 2624 b0 -= b5; 2625 2626 tmp = b3 ^ b6; 2627 b3 = (tmp >> 49) | (tmp << (64 - 49)); 2628 b6 -= b3; 2629 2630 tmp = b1 ^ b4; 2631 b1 = (tmp >> 17) | (tmp << (64 - 17)); 2632 b4 -= b1; 2633 2634 tmp = b3 ^ b0; 2635 b3 = (tmp >> 42) | (tmp << (64 - 42)); 2636 b0 -= b3; 2637 2638 tmp = b5 ^ b6; 2639 b5 = (tmp >> 14) | (tmp << (64 - 14)); 2640 b6 -= b5; 2641 2642 tmp = b7 ^ b4; 2643 b7 = (tmp >> 27) | (tmp << (64 - 27)); 2644 b4 -= b7; 2645 2646 tmp = b1 ^ b2; 2647 b1 = (tmp >> 33) | (tmp << (64 - 33)); 2648 b2 -= b1; 2649 2650 tmp = b7 ^ b6; 2651 b7 = (tmp >> 37) | (tmp << (64 - 37)); 2652 b6 -= b7 + k7 + t2; 2653 b7 -= k8 + 10; 2654 2655 tmp = b5 ^ b4; 2656 b5 = (tmp >> 19) | (tmp << (64 - 19)); 2657 b4 -= b5 + k5; 2658 b5 -= k6 + t1; 2659 2660 tmp = b3 ^ b2; 2661 b3 = (tmp >> 36) | (tmp << (64 - 36)); 2662 b2 -= b3 + k3; 2663 b3 -= k4; 2664 2665 tmp = b1 ^ b0; 2666 b1 = (tmp >> 46) | (tmp << (64 - 46)); 2667 b0 -= b1 + k1; 2668 b1 -= k2; 2669 2670 tmp = b3 ^ b4; 2671 b3 = (tmp >> 22) | (tmp << (64 - 22)); 2672 b4 -= b3; 2673 2674 tmp = b5 ^ b2; 2675 b5 = (tmp >> 56) | (tmp << (64 - 56)); 2676 b2 -= b5; 2677 2678 tmp = b7 ^ b0; 2679 b7 = (tmp >> 35) | (tmp << (64 - 35)); 2680 b0 -= b7; 2681 2682 tmp = b1 ^ b6; 2683 b1 = (tmp >> 8) | (tmp << (64 - 8)); 2684 b6 -= b1; 2685 2686 tmp = b7 ^ b2; 2687 b7 = (tmp >> 43) | (tmp << (64 - 43)); 2688 b2 -= b7; 2689 2690 tmp = b5 ^ b0; 2691 b5 = (tmp >> 39) | (tmp << (64 - 39)); 2692 b0 -= b5; 2693 2694 tmp = b3 ^ b6; 2695 b3 = (tmp >> 29) | (tmp << (64 - 29)); 2696 b6 -= b3; 2697 2698 tmp = b1 ^ b4; 2699 b1 = (tmp >> 25) | (tmp << (64 - 25)); 2700 b4 -= b1; 2701 2702 tmp = b3 ^ b0; 2703 b3 = (tmp >> 17) | (tmp << (64 - 17)); 2704 b0 -= b3; 2705 2706 tmp = b5 ^ b6; 2707 b5 = (tmp >> 10) | (tmp << (64 - 10)); 2708 b6 -= b5; 2709 2710 tmp = b7 ^ b4; 2711 b7 = (tmp >> 50) | (tmp << (64 - 50)); 2712 b4 -= b7; 2713 2714 tmp = b1 ^ b2; 2715 b1 = (tmp >> 13) | (tmp << (64 - 13)); 2716 b2 -= b1; 2717 2718 tmp = b7 ^ b6; 2719 b7 = (tmp >> 24) | (tmp << (64 - 24)); 2720 b6 -= b7 + k6 + t1; 2721 b7 -= k7 + 9; 2722 2723 tmp = b5 ^ b4; 2724 b5 = (tmp >> 34) | (tmp << (64 - 34)); 2725 b4 -= b5 + k4; 2726 b5 -= k5 + t0; 2727 2728 tmp = b3 ^ b2; 2729 b3 = (tmp >> 30) | (tmp << (64 - 30)); 2730 b2 -= b3 + k2; 2731 b3 -= k3; 2732 2733 tmp = b1 ^ b0; 2734 b1 = (tmp >> 39) | (tmp << (64 - 39)); 2735 b0 -= b1 + k0; 2736 b1 -= k1; 2737 2738 tmp = b3 ^ b4; 2739 b3 = (tmp >> 56) | (tmp << (64 - 56)); 2740 b4 -= b3; 2741 2742 tmp = b5 ^ b2; 2743 b5 = (tmp >> 54) | (tmp << (64 - 54)); 2744 b2 -= b5; 2745 2746 tmp = b7 ^ b0; 2747 b7 = (tmp >> 9) | (tmp << (64 - 9)); 2748 b0 -= b7; 2749 2750 tmp = b1 ^ b6; 2751 b1 = (tmp >> 44) | (tmp << (64 - 44)); 2752 b6 -= b1; 2753 2754 tmp = b7 ^ b2; 2755 b7 = (tmp >> 39) | (tmp << (64 - 39)); 2756 b2 -= b7; 2757 2758 tmp = b5 ^ b0; 2759 b5 = (tmp >> 36) | (tmp << (64 - 36)); 2760 b0 -= b5; 2761 2762 tmp = b3 ^ b6; 2763 b3 = (tmp >> 49) | (tmp << (64 - 49)); 2764 b6 -= b3; 2765 2766 tmp = b1 ^ b4; 2767 b1 = (tmp >> 17) | (tmp << (64 - 17)); 2768 b4 -= b1; 2769 2770 tmp = b3 ^ b0; 2771 b3 = (tmp >> 42) | (tmp << (64 - 42)); 2772 b0 -= b3; 2773 2774 tmp = b5 ^ b6; 2775 b5 = (tmp >> 14) | (tmp << (64 - 14)); 2776 b6 -= b5; 2777 2778 tmp = b7 ^ b4; 2779 b7 = (tmp >> 27) | (tmp << (64 - 27)); 2780 b4 -= b7; 2781 2782 tmp = b1 ^ b2; 2783 b1 = (tmp >> 33) | (tmp << (64 - 33)); 2784 b2 -= b1; 2785 2786 tmp = b7 ^ b6; 2787 b7 = (tmp >> 37) | (tmp << (64 - 37)); 2788 b6 -= b7 + k5 + t0; 2789 b7 -= k6 + 8; 2790 2791 tmp = b5 ^ b4; 2792 b5 = (tmp >> 19) | (tmp << (64 - 19)); 2793 b4 -= b5 + k3; 2794 b5 -= k4 + t2; 2795 2796 tmp = b3 ^ b2; 2797 b3 = (tmp >> 36) | (tmp << (64 - 36)); 2798 b2 -= b3 + k1; 2799 b3 -= k2; 2800 2801 tmp = b1 ^ b0; 2802 b1 = (tmp >> 46) | (tmp << (64 - 46)); 2803 b0 -= b1 + k8; 2804 b1 -= k0; 2805 2806 tmp = b3 ^ b4; 2807 b3 = (tmp >> 22) | (tmp << (64 - 22)); 2808 b4 -= b3; 2809 2810 tmp = b5 ^ b2; 2811 b5 = (tmp >> 56) | (tmp << (64 - 56)); 2812 b2 -= b5; 2813 2814 tmp = b7 ^ b0; 2815 b7 = (tmp >> 35) | (tmp << (64 - 35)); 2816 b0 -= b7; 2817 2818 tmp = b1 ^ b6; 2819 b1 = (tmp >> 8) | (tmp << (64 - 8)); 2820 b6 -= b1; 2821 2822 tmp = b7 ^ b2; 2823 b7 = (tmp >> 43) | (tmp << (64 - 43)); 2824 b2 -= b7; 2825 2826 tmp = b5 ^ b0; 2827 b5 = (tmp >> 39) | (tmp << (64 - 39)); 2828 b0 -= b5; 2829 2830 tmp = b3 ^ b6; 2831 b3 = (tmp >> 29) | (tmp << (64 - 29)); 2832 b6 -= b3; 2833 2834 tmp = b1 ^ b4; 2835 b1 = (tmp >> 25) | (tmp << (64 - 25)); 2836 b4 -= b1; 2837 2838 tmp = b3 ^ b0; 2839 b3 = (tmp >> 17) | (tmp << (64 - 17)); 2840 b0 -= b3; 2841 2842 tmp = b5 ^ b6; 2843 b5 = (tmp >> 10) | (tmp << (64 - 10)); 2844 b6 -= b5; 2845 2846 tmp = b7 ^ b4; 2847 b7 = (tmp >> 50) | (tmp << (64 - 50)); 2848 b4 -= b7; 2849 2850 tmp = b1 ^ b2; 2851 b1 = (tmp >> 13) | (tmp << (64 - 13)); 2852 b2 -= b1; 2853 2854 tmp = b7 ^ b6; 2855 b7 = (tmp >> 24) | (tmp << (64 - 24)); 2856 b6 -= b7 + k4 + t2; 2857 b7 -= k5 + 7; 2858 2859 tmp = b5 ^ b4; 2860 b5 = (tmp >> 34) | (tmp << (64 - 34)); 2861 b4 -= b5 + k2; 2862 b5 -= k3 + t1; 2863 2864 tmp = b3 ^ b2; 2865 b3 = (tmp >> 30) | (tmp << (64 - 30)); 2866 b2 -= b3 + k0; 2867 b3 -= k1; 2868 2869 tmp = b1 ^ b0; 2870 b1 = (tmp >> 39) | (tmp << (64 - 39)); 2871 b0 -= b1 + k7; 2872 b1 -= k8; 2873 2874 tmp = b3 ^ b4; 2875 b3 = (tmp >> 56) | (tmp << (64 - 56)); 2876 b4 -= b3; 2877 2878 tmp = b5 ^ b2; 2879 b5 = (tmp >> 54) | (tmp << (64 - 54)); 2880 b2 -= b5; 2881 2882 tmp = b7 ^ b0; 2883 b7 = (tmp >> 9) | (tmp << (64 - 9)); 2884 b0 -= b7; 2885 2886 tmp = b1 ^ b6; 2887 b1 = (tmp >> 44) | (tmp << (64 - 44)); 2888 b6 -= b1; 2889 2890 tmp = b7 ^ b2; 2891 b7 = (tmp >> 39) | (tmp << (64 - 39)); 2892 b2 -= b7; 2893 2894 tmp = b5 ^ b0; 2895 b5 = (tmp >> 36) | (tmp << (64 - 36)); 2896 b0 -= b5; 2897 2898 tmp = b3 ^ b6; 2899 b3 = (tmp >> 49) | (tmp << (64 - 49)); 2900 b6 -= b3; 2901 2902 tmp = b1 ^ b4; 2903 b1 = (tmp >> 17) | (tmp << (64 - 17)); 2904 b4 -= b1; 2905 2906 tmp = b3 ^ b0; 2907 b3 = (tmp >> 42) | (tmp << (64 - 42)); 2908 b0 -= b3; 2909 2910 tmp = b5 ^ b6; 2911 b5 = (tmp >> 14) | (tmp << (64 - 14)); 2912 b6 -= b5; 2913 2914 tmp = b7 ^ b4; 2915 b7 = (tmp >> 27) | (tmp << (64 - 27)); 2916 b4 -= b7; 2917 2918 tmp = b1 ^ b2; 2919 b1 = (tmp >> 33) | (tmp << (64 - 33)); 2920 b2 -= b1; 2921 2922 tmp = b7 ^ b6; 2923 b7 = (tmp >> 37) | (tmp << (64 - 37)); 2924 b6 -= b7 + k3 + t1; 2925 b7 -= k4 + 6; 2926 2927 tmp = b5 ^ b4; 2928 b5 = (tmp >> 19) | (tmp << (64 - 19)); 2929 b4 -= b5 + k1; 2930 b5 -= k2 + t0; 2931 2932 tmp = b3 ^ b2; 2933 b3 = (tmp >> 36) | (tmp << (64 - 36)); 2934 b2 -= b3 + k8; 2935 b3 -= k0; 2936 2937 tmp = b1 ^ b0; 2938 b1 = (tmp >> 46) | (tmp << (64 - 46)); 2939 b0 -= b1 + k6; 2940 b1 -= k7; 2941 2942 tmp = b3 ^ b4; 2943 b3 = (tmp >> 22) | (tmp << (64 - 22)); 2944 b4 -= b3; 2945 2946 tmp = b5 ^ b2; 2947 b5 = (tmp >> 56) | (tmp << (64 - 56)); 2948 b2 -= b5; 2949 2950 tmp = b7 ^ b0; 2951 b7 = (tmp >> 35) | (tmp << (64 - 35)); 2952 b0 -= b7; 2953 2954 tmp = b1 ^ b6; 2955 b1 = (tmp >> 8) | (tmp << (64 - 8)); 2956 b6 -= b1; 2957 2958 tmp = b7 ^ b2; 2959 b7 = (tmp >> 43) | (tmp << (64 - 43)); 2960 b2 -= b7; 2961 2962 tmp = b5 ^ b0; 2963 b5 = (tmp >> 39) | (tmp << (64 - 39)); 2964 b0 -= b5; 2965 2966 tmp = b3 ^ b6; 2967 b3 = (tmp >> 29) | (tmp << (64 - 29)); 2968 b6 -= b3; 2969 2970 tmp = b1 ^ b4; 2971 b1 = (tmp >> 25) | (tmp << (64 - 25)); 2972 b4 -= b1; 2973 2974 tmp = b3 ^ b0; 2975 b3 = (tmp >> 17) | (tmp << (64 - 17)); 2976 b0 -= b3; 2977 2978 tmp = b5 ^ b6; 2979 b5 = (tmp >> 10) | (tmp << (64 - 10)); 2980 b6 -= b5; 2981 2982 tmp = b7 ^ b4; 2983 b7 = (tmp >> 50) | (tmp << (64 - 50)); 2984 b4 -= b7; 2985 2986 tmp = b1 ^ b2; 2987 b1 = (tmp >> 13) | (tmp << (64 - 13)); 2988 b2 -= b1; 2989 2990 tmp = b7 ^ b6; 2991 b7 = (tmp >> 24) | (tmp << (64 - 24)); 2992 b6 -= b7 + k2 + t0; 2993 b7 -= k3 + 5; 2994 2995 tmp = b5 ^ b4; 2996 b5 = (tmp >> 34) | (tmp << (64 - 34)); 2997 b4 -= b5 + k0; 2998 b5 -= k1 + t2; 2999 3000 tmp = b3 ^ b2; 3001 b3 = (tmp >> 30) | (tmp << (64 - 30)); 3002 b2 -= b3 + k7; 3003 b3 -= k8; 3004 3005 tmp = b1 ^ b0; 3006 b1 = (tmp >> 39) | (tmp << (64 - 39)); 3007 b0 -= b1 + k5; 3008 b1 -= k6; 3009 3010 tmp = b3 ^ b4; 3011 b3 = (tmp >> 56) | (tmp << (64 - 56)); 3012 b4 -= b3; 3013 3014 tmp = b5 ^ b2; 3015 b5 = (tmp >> 54) | (tmp << (64 - 54)); 3016 b2 -= b5; 3017 3018 tmp = b7 ^ b0; 3019 b7 = (tmp >> 9) | (tmp << (64 - 9)); 3020 b0 -= b7; 3021 3022 tmp = b1 ^ b6; 3023 b1 = (tmp >> 44) | (tmp << (64 - 44)); 3024 b6 -= b1; 3025 3026 tmp = b7 ^ b2; 3027 b7 = (tmp >> 39) | (tmp << (64 - 39)); 3028 b2 -= b7; 3029 3030 tmp = b5 ^ b0; 3031 b5 = (tmp >> 36) | (tmp << (64 - 36)); 3032 b0 -= b5; 3033 3034 tmp = b3 ^ b6; 3035 b3 = (tmp >> 49) | (tmp << (64 - 49)); 3036 b6 -= b3; 3037 3038 tmp = b1 ^ b4; 3039 b1 = (tmp >> 17) | (tmp << (64 - 17)); 3040 b4 -= b1; 3041 3042 tmp = b3 ^ b0; 3043 b3 = (tmp >> 42) | (tmp << (64 - 42)); 3044 b0 -= b3; 3045 3046 tmp = b5 ^ b6; 3047 b5 = (tmp >> 14) | (tmp << (64 - 14)); 3048 b6 -= b5; 3049 3050 tmp = b7 ^ b4; 3051 b7 = (tmp >> 27) | (tmp << (64 - 27)); 3052 b4 -= b7; 3053 3054 tmp = b1 ^ b2; 3055 b1 = (tmp >> 33) | (tmp << (64 - 33)); 3056 b2 -= b1; 3057 3058 tmp = b7 ^ b6; 3059 b7 = (tmp >> 37) | (tmp << (64 - 37)); 3060 b6 -= b7 + k1 + t2; 3061 b7 -= k2 + 4; 3062 3063 tmp = b5 ^ b4; 3064 b5 = (tmp >> 19) | (tmp << (64 - 19)); 3065 b4 -= b5 + k8; 3066 b5 -= k0 + t1; 3067 3068 tmp = b3 ^ b2; 3069 b3 = (tmp >> 36) | (tmp << (64 - 36)); 3070 b2 -= b3 + k6; 3071 b3 -= k7; 3072 3073 tmp = b1 ^ b0; 3074 b1 = (tmp >> 46) | (tmp << (64 - 46)); 3075 b0 -= b1 + k4; 3076 b1 -= k5; 3077 3078 tmp = b3 ^ b4; 3079 b3 = (tmp >> 22) | (tmp << (64 - 22)); 3080 b4 -= b3; 3081 3082 tmp = b5 ^ b2; 3083 b5 = (tmp >> 56) | (tmp << (64 - 56)); 3084 b2 -= b5; 3085 3086 tmp = b7 ^ b0; 3087 b7 = (tmp >> 35) | (tmp << (64 - 35)); 3088 b0 -= b7; 3089 3090 tmp = b1 ^ b6; 3091 b1 = (tmp >> 8) | (tmp << (64 - 8)); 3092 b6 -= b1; 3093 3094 tmp = b7 ^ b2; 3095 b7 = (tmp >> 43) | (tmp << (64 - 43)); 3096 b2 -= b7; 3097 3098 tmp = b5 ^ b0; 3099 b5 = (tmp >> 39) | (tmp << (64 - 39)); 3100 b0 -= b5; 3101 3102 tmp = b3 ^ b6; 3103 b3 = (tmp >> 29) | (tmp << (64 - 29)); 3104 b6 -= b3; 3105 3106 tmp = b1 ^ b4; 3107 b1 = (tmp >> 25) | (tmp << (64 - 25)); 3108 b4 -= b1; 3109 3110 tmp = b3 ^ b0; 3111 b3 = (tmp >> 17) | (tmp << (64 - 17)); 3112 b0 -= b3; 3113 3114 tmp = b5 ^ b6; 3115 b5 = (tmp >> 10) | (tmp << (64 - 10)); 3116 b6 -= b5; 3117 3118 tmp = b7 ^ b4; 3119 b7 = (tmp >> 50) | (tmp << (64 - 50)); 3120 b4 -= b7; 3121 3122 tmp = b1 ^ b2; 3123 b1 = (tmp >> 13) | (tmp << (64 - 13)); 3124 b2 -= b1; 3125 3126 tmp = b7 ^ b6; 3127 b7 = (tmp >> 24) | (tmp << (64 - 24)); 3128 b6 -= b7 + k0 + t1; 3129 b7 -= k1 + 3; 3130 3131 tmp = b5 ^ b4; 3132 b5 = (tmp >> 34) | (tmp << (64 - 34)); 3133 b4 -= b5 + k7; 3134 b5 -= k8 + t0; 3135 3136 tmp = b3 ^ b2; 3137 b3 = (tmp >> 30) | (tmp << (64 - 30)); 3138 b2 -= b3 + k5; 3139 b3 -= k6; 3140 3141 tmp = b1 ^ b0; 3142 b1 = (tmp >> 39) | (tmp << (64 - 39)); 3143 b0 -= b1 + k3; 3144 b1 -= k4; 3145 3146 tmp = b3 ^ b4; 3147 b3 = (tmp >> 56) | (tmp << (64 - 56)); 3148 b4 -= b3; 3149 3150 tmp = b5 ^ b2; 3151 b5 = (tmp >> 54) | (tmp << (64 - 54)); 3152 b2 -= b5; 3153 3154 tmp = b7 ^ b0; 3155 b7 = (tmp >> 9) | (tmp << (64 - 9)); 3156 b0 -= b7; 3157 3158 tmp = b1 ^ b6; 3159 b1 = (tmp >> 44) | (tmp << (64 - 44)); 3160 b6 -= b1; 3161 3162 tmp = b7 ^ b2; 3163 b7 = (tmp >> 39) | (tmp << (64 - 39)); 3164 b2 -= b7; 3165 3166 tmp = b5 ^ b0; 3167 b5 = (tmp >> 36) | (tmp << (64 - 36)); 3168 b0 -= b5; 3169 3170 tmp = b3 ^ b6; 3171 b3 = (tmp >> 49) | (tmp << (64 - 49)); 3172 b6 -= b3; 3173 3174 tmp = b1 ^ b4; 3175 b1 = (tmp >> 17) | (tmp << (64 - 17)); 3176 b4 -= b1; 3177 3178 tmp = b3 ^ b0; 3179 b3 = (tmp >> 42) | (tmp << (64 - 42)); 3180 b0 -= b3; 3181 3182 tmp = b5 ^ b6; 3183 b5 = (tmp >> 14) | (tmp << (64 - 14)); 3184 b6 -= b5; 3185 3186 tmp = b7 ^ b4; 3187 b7 = (tmp >> 27) | (tmp << (64 - 27)); 3188 b4 -= b7; 3189 3190 tmp = b1 ^ b2; 3191 b1 = (tmp >> 33) | (tmp << (64 - 33)); 3192 b2 -= b1; 3193 3194 tmp = b7 ^ b6; 3195 b7 = (tmp >> 37) | (tmp << (64 - 37)); 3196 b6 -= b7 + k8 + t0; 3197 b7 -= k0 + 2; 3198 3199 tmp = b5 ^ b4; 3200 b5 = (tmp >> 19) | (tmp << (64 - 19)); 3201 b4 -= b5 + k6; 3202 b5 -= k7 + t2; 3203 3204 tmp = b3 ^ b2; 3205 b3 = (tmp >> 36) | (tmp << (64 - 36)); 3206 b2 -= b3 + k4; 3207 b3 -= k5; 3208 3209 tmp = b1 ^ b0; 3210 b1 = (tmp >> 46) | (tmp << (64 - 46)); 3211 b0 -= b1 + k2; 3212 b1 -= k3; 3213 3214 tmp = b3 ^ b4; 3215 b3 = (tmp >> 22) | (tmp << (64 - 22)); 3216 b4 -= b3; 3217 3218 tmp = b5 ^ b2; 3219 b5 = (tmp >> 56) | (tmp << (64 - 56)); 3220 b2 -= b5; 3221 3222 tmp = b7 ^ b0; 3223 b7 = (tmp >> 35) | (tmp << (64 - 35)); 3224 b0 -= b7; 3225 3226 tmp = b1 ^ b6; 3227 b1 = (tmp >> 8) | (tmp << (64 - 8)); 3228 b6 -= b1; 3229 3230 tmp = b7 ^ b2; 3231 b7 = (tmp >> 43) | (tmp << (64 - 43)); 3232 b2 -= b7; 3233 3234 tmp = b5 ^ b0; 3235 b5 = (tmp >> 39) | (tmp << (64 - 39)); 3236 b0 -= b5; 3237 3238 tmp = b3 ^ b6; 3239 b3 = (tmp >> 29) | (tmp << (64 - 29)); 3240 b6 -= b3; 3241 3242 tmp = b1 ^ b4; 3243 b1 = (tmp >> 25) | (tmp << (64 - 25)); 3244 b4 -= b1; 3245 3246 tmp = b3 ^ b0; 3247 b3 = (tmp >> 17) | (tmp << (64 - 17)); 3248 b0 -= b3; 3249 3250 tmp = b5 ^ b6; 3251 b5 = (tmp >> 10) | (tmp << (64 - 10)); 3252 b6 -= b5; 3253 3254 tmp = b7 ^ b4; 3255 b7 = (tmp >> 50) | (tmp << (64 - 50)); 3256 b4 -= b7; 3257 3258 tmp = b1 ^ b2; 3259 b1 = (tmp >> 13) | (tmp << (64 - 13)); 3260 b2 -= b1; 3261 3262 tmp = b7 ^ b6; 3263 b7 = (tmp >> 24) | (tmp << (64 - 24)); 3264 b6 -= b7 + k7 + t2; 3265 b7 -= k8 + 1; 3266 3267 tmp = b5 ^ b4; 3268 b5 = (tmp >> 34) | (tmp << (64 - 34)); 3269 b4 -= b5 + k5; 3270 b5 -= k6 + t1; 3271 3272 tmp = b3 ^ b2; 3273 b3 = (tmp >> 30) | (tmp << (64 - 30)); 3274 b2 -= b3 + k3; 3275 b3 -= k4; 3276 3277 tmp = b1 ^ b0; 3278 b1 = (tmp >> 39) | (tmp << (64 - 39)); 3279 b0 -= b1 + k1; 3280 b1 -= k2; 3281 3282 tmp = b3 ^ b4; 3283 b3 = (tmp >> 56) | (tmp << (64 - 56)); 3284 b4 -= b3; 3285 3286 tmp = b5 ^ b2; 3287 b5 = (tmp >> 54) | (tmp << (64 - 54)); 3288 b2 -= b5; 3289 3290 tmp = b7 ^ b0; 3291 b7 = (tmp >> 9) | (tmp << (64 - 9)); 3292 b0 -= b7; 3293 3294 tmp = b1 ^ b6; 3295 b1 = (tmp >> 44) | (tmp << (64 - 44)); 3296 b6 -= b1; 3297 3298 tmp = b7 ^ b2; 3299 b7 = (tmp >> 39) | (tmp << (64 - 39)); 3300 b2 -= b7; 3301 3302 tmp = b5 ^ b0; 3303 b5 = (tmp >> 36) | (tmp << (64 - 36)); 3304 b0 -= b5; 3305 3306 tmp = b3 ^ b6; 3307 b3 = (tmp >> 49) | (tmp << (64 - 49)); 3308 b6 -= b3; 3309 3310 tmp = b1 ^ b4; 3311 b1 = (tmp >> 17) | (tmp << (64 - 17)); 3312 b4 -= b1; 3313 3314 tmp = b3 ^ b0; 3315 b3 = (tmp >> 42) | (tmp << (64 - 42)); 3316 b0 -= b3; 3317 3318 tmp = b5 ^ b6; 3319 b5 = (tmp >> 14) | (tmp << (64 - 14)); 3320 b6 -= b5; 3321 3322 tmp = b7 ^ b4; 3323 b7 = (tmp >> 27) | (tmp << (64 - 27)); 3324 b4 -= b7; 3325 3326 tmp = b1 ^ b2; 3327 b1 = (tmp >> 33) | (tmp << (64 - 33)); 3328 b2 -= b1; 3329 3330 tmp = b7 ^ b6; 3331 b7 = (tmp >> 37) | (tmp << (64 - 37)); 3332 b6 -= b7 + k6 + t1; 3333 b7 -= k7; 3334 3335 tmp = b5 ^ b4; 3336 b5 = (tmp >> 19) | (tmp << (64 - 19)); 3337 b4 -= b5 + k4; 3338 b5 -= k5 + t0; 3339 3340 tmp = b3 ^ b2; 3341 b3 = (tmp >> 36) | (tmp << (64 - 36)); 3342 b2 -= b3 + k2; 3343 b3 -= k3; 3344 3345 tmp = b1 ^ b0; 3346 b1 = (tmp >> 46) | (tmp << (64 - 46)); 3347 b0 -= b1 + k0; 3348 b1 -= k1; 3349 3350 output[0] = b0; 3351 output[1] = b1; 3352 output[2] = b2; 3353 output[3] = b3; 3354 3355 output[7] = b7; 3356 output[6] = b6; 3357 output[5] = b5; 3358 output[4] = b4; 3359} 3360 3361void threefish_encrypt_1024(struct threefish_key *key_ctx, u64 *input, 3362 u64 *output) 3363{ 3364 u64 b0 = input[0], b1 = input[1], 3365 b2 = input[2], b3 = input[3], 3366 b4 = input[4], b5 = input[5], 3367 b6 = input[6], b7 = input[7], 3368 b8 = input[8], b9 = input[9], 3369 b10 = input[10], b11 = input[11], 3370 b12 = input[12], b13 = input[13], 3371 b14 = input[14], b15 = input[15]; 3372 u64 k0 = key_ctx->key[0], k1 = key_ctx->key[1], 3373 k2 = key_ctx->key[2], k3 = key_ctx->key[3], 3374 k4 = key_ctx->key[4], k5 = key_ctx->key[5], 3375 k6 = key_ctx->key[6], k7 = key_ctx->key[7], 3376 k8 = key_ctx->key[8], k9 = key_ctx->key[9], 3377 k10 = key_ctx->key[10], k11 = key_ctx->key[11], 3378 k12 = key_ctx->key[12], k13 = key_ctx->key[13], 3379 k14 = key_ctx->key[14], k15 = key_ctx->key[15], 3380 k16 = key_ctx->key[16]; 3381 u64 t0 = key_ctx->tweak[0], t1 = key_ctx->tweak[1], 3382 t2 = key_ctx->tweak[2]; 3383 3384 b1 += k1; 3385 b0 += b1 + k0; 3386 b1 = ((b1 << 24) | (b1 >> (64 - 24))) ^ b0; 3387 3388 b3 += k3; 3389 b2 += b3 + k2; 3390 b3 = ((b3 << 13) | (b3 >> (64 - 13))) ^ b2; 3391 3392 b5 += k5; 3393 b4 += b5 + k4; 3394 b5 = ((b5 << 8) | (b5 >> (64 - 8))) ^ b4; 3395 3396 b7 += k7; 3397 b6 += b7 + k6; 3398 b7 = ((b7 << 47) | (b7 >> (64 - 47))) ^ b6; 3399 3400 b9 += k9; 3401 b8 += b9 + k8; 3402 b9 = ((b9 << 8) | (b9 >> (64 - 8))) ^ b8; 3403 3404 b11 += k11; 3405 b10 += b11 + k10; 3406 b11 = ((b11 << 17) | (b11 >> (64 - 17))) ^ b10; 3407 3408 b13 += k13 + t0; 3409 b12 += b13 + k12; 3410 b13 = ((b13 << 22) | (b13 >> (64 - 22))) ^ b12; 3411 3412 b15 += k15; 3413 b14 += b15 + k14 + t1; 3414 b15 = ((b15 << 37) | (b15 >> (64 - 37))) ^ b14; 3415 3416 b0 += b9; 3417 b9 = ((b9 << 38) | (b9 >> (64 - 38))) ^ b0; 3418 3419 b2 += b13; 3420 b13 = ((b13 << 19) | (b13 >> (64 - 19))) ^ b2; 3421 3422 b6 += b11; 3423 b11 = ((b11 << 10) | (b11 >> (64 - 10))) ^ b6; 3424 3425 b4 += b15; 3426 b15 = ((b15 << 55) | (b15 >> (64 - 55))) ^ b4; 3427 3428 b10 += b7; 3429 b7 = ((b7 << 49) | (b7 >> (64 - 49))) ^ b10; 3430 3431 b12 += b3; 3432 b3 = ((b3 << 18) | (b3 >> (64 - 18))) ^ b12; 3433 3434 b14 += b5; 3435 b5 = ((b5 << 23) | (b5 >> (64 - 23))) ^ b14; 3436 3437 b8 += b1; 3438 b1 = ((b1 << 52) | (b1 >> (64 - 52))) ^ b8; 3439 3440 b0 += b7; 3441 b7 = ((b7 << 33) | (b7 >> (64 - 33))) ^ b0; 3442 3443 b2 += b5; 3444 b5 = ((b5 << 4) | (b5 >> (64 - 4))) ^ b2; 3445 3446 b4 += b3; 3447 b3 = ((b3 << 51) | (b3 >> (64 - 51))) ^ b4; 3448 3449 b6 += b1; 3450 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b6; 3451 3452 b12 += b15; 3453 b15 = ((b15 << 34) | (b15 >> (64 - 34))) ^ b12; 3454 3455 b14 += b13; 3456 b13 = ((b13 << 41) | (b13 >> (64 - 41))) ^ b14; 3457 3458 b8 += b11; 3459 b11 = ((b11 << 59) | (b11 >> (64 - 59))) ^ b8; 3460 3461 b10 += b9; 3462 b9 = ((b9 << 17) | (b9 >> (64 - 17))) ^ b10; 3463 3464 b0 += b15; 3465 b15 = ((b15 << 5) | (b15 >> (64 - 5))) ^ b0; 3466 3467 b2 += b11; 3468 b11 = ((b11 << 20) | (b11 >> (64 - 20))) ^ b2; 3469 3470 b6 += b13; 3471 b13 = ((b13 << 48) | (b13 >> (64 - 48))) ^ b6; 3472 3473 b4 += b9; 3474 b9 = ((b9 << 41) | (b9 >> (64 - 41))) ^ b4; 3475 3476 b14 += b1; 3477 b1 = ((b1 << 47) | (b1 >> (64 - 47))) ^ b14; 3478 3479 b8 += b5; 3480 b5 = ((b5 << 28) | (b5 >> (64 - 28))) ^ b8; 3481 3482 b10 += b3; 3483 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b10; 3484 3485 b12 += b7; 3486 b7 = ((b7 << 25) | (b7 >> (64 - 25))) ^ b12; 3487 3488 b1 += k2; 3489 b0 += b1 + k1; 3490 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b0; 3491 3492 b3 += k4; 3493 b2 += b3 + k3; 3494 b3 = ((b3 << 9) | (b3 >> (64 - 9))) ^ b2; 3495 3496 b5 += k6; 3497 b4 += b5 + k5; 3498 b5 = ((b5 << 37) | (b5 >> (64 - 37))) ^ b4; 3499 3500 b7 += k8; 3501 b6 += b7 + k7; 3502 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b6; 3503 3504 b9 += k10; 3505 b8 += b9 + k9; 3506 b9 = ((b9 << 12) | (b9 >> (64 - 12))) ^ b8; 3507 3508 b11 += k12; 3509 b10 += b11 + k11; 3510 b11 = ((b11 << 47) | (b11 >> (64 - 47))) ^ b10; 3511 3512 b13 += k14 + t1; 3513 b12 += b13 + k13; 3514 b13 = ((b13 << 44) | (b13 >> (64 - 44))) ^ b12; 3515 3516 b15 += k16 + 1; 3517 b14 += b15 + k15 + t2; 3518 b15 = ((b15 << 30) | (b15 >> (64 - 30))) ^ b14; 3519 3520 b0 += b9; 3521 b9 = ((b9 << 16) | (b9 >> (64 - 16))) ^ b0; 3522 3523 b2 += b13; 3524 b13 = ((b13 << 34) | (b13 >> (64 - 34))) ^ b2; 3525 3526 b6 += b11; 3527 b11 = ((b11 << 56) | (b11 >> (64 - 56))) ^ b6; 3528 3529 b4 += b15; 3530 b15 = ((b15 << 51) | (b15 >> (64 - 51))) ^ b4; 3531 3532 b10 += b7; 3533 b7 = ((b7 << 4) | (b7 >> (64 - 4))) ^ b10; 3534 3535 b12 += b3; 3536 b3 = ((b3 << 53) | (b3 >> (64 - 53))) ^ b12; 3537 3538 b14 += b5; 3539 b5 = ((b5 << 42) | (b5 >> (64 - 42))) ^ b14; 3540 3541 b8 += b1; 3542 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b8; 3543 3544 b0 += b7; 3545 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b0; 3546 3547 b2 += b5; 3548 b5 = ((b5 << 44) | (b5 >> (64 - 44))) ^ b2; 3549 3550 b4 += b3; 3551 b3 = ((b3 << 47) | (b3 >> (64 - 47))) ^ b4; 3552 3553 b6 += b1; 3554 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b6; 3555 3556 b12 += b15; 3557 b15 = ((b15 << 19) | (b15 >> (64 - 19))) ^ b12; 3558 3559 b14 += b13; 3560 b13 = ((b13 << 42) | (b13 >> (64 - 42))) ^ b14; 3561 3562 b8 += b11; 3563 b11 = ((b11 << 44) | (b11 >> (64 - 44))) ^ b8; 3564 3565 b10 += b9; 3566 b9 = ((b9 << 25) | (b9 >> (64 - 25))) ^ b10; 3567 3568 b0 += b15; 3569 b15 = ((b15 << 9) | (b15 >> (64 - 9))) ^ b0; 3570 3571 b2 += b11; 3572 b11 = ((b11 << 48) | (b11 >> (64 - 48))) ^ b2; 3573 3574 b6 += b13; 3575 b13 = ((b13 << 35) | (b13 >> (64 - 35))) ^ b6; 3576 3577 b4 += b9; 3578 b9 = ((b9 << 52) | (b9 >> (64 - 52))) ^ b4; 3579 3580 b14 += b1; 3581 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b14; 3582 3583 b8 += b5; 3584 b5 = ((b5 << 31) | (b5 >> (64 - 31))) ^ b8; 3585 3586 b10 += b3; 3587 b3 = ((b3 << 37) | (b3 >> (64 - 37))) ^ b10; 3588 3589 b12 += b7; 3590 b7 = ((b7 << 20) | (b7 >> (64 - 20))) ^ b12; 3591 3592 b1 += k3; 3593 b0 += b1 + k2; 3594 b1 = ((b1 << 24) | (b1 >> (64 - 24))) ^ b0; 3595 3596 b3 += k5; 3597 b2 += b3 + k4; 3598 b3 = ((b3 << 13) | (b3 >> (64 - 13))) ^ b2; 3599 3600 b5 += k7; 3601 b4 += b5 + k6; 3602 b5 = ((b5 << 8) | (b5 >> (64 - 8))) ^ b4; 3603 3604 b7 += k9; 3605 b6 += b7 + k8; 3606 b7 = ((b7 << 47) | (b7 >> (64 - 47))) ^ b6; 3607 3608 b9 += k11; 3609 b8 += b9 + k10; 3610 b9 = ((b9 << 8) | (b9 >> (64 - 8))) ^ b8; 3611 3612 b11 += k13; 3613 b10 += b11 + k12; 3614 b11 = ((b11 << 17) | (b11 >> (64 - 17))) ^ b10; 3615 3616 b13 += k15 + t2; 3617 b12 += b13 + k14; 3618 b13 = ((b13 << 22) | (b13 >> (64 - 22))) ^ b12; 3619 3620 b15 += k0 + 2; 3621 b14 += b15 + k16 + t0; 3622 b15 = ((b15 << 37) | (b15 >> (64 - 37))) ^ b14; 3623 3624 b0 += b9; 3625 b9 = ((b9 << 38) | (b9 >> (64 - 38))) ^ b0; 3626 3627 b2 += b13; 3628 b13 = ((b13 << 19) | (b13 >> (64 - 19))) ^ b2; 3629 3630 b6 += b11; 3631 b11 = ((b11 << 10) | (b11 >> (64 - 10))) ^ b6; 3632 3633 b4 += b15; 3634 b15 = ((b15 << 55) | (b15 >> (64 - 55))) ^ b4; 3635 3636 b10 += b7; 3637 b7 = ((b7 << 49) | (b7 >> (64 - 49))) ^ b10; 3638 3639 b12 += b3; 3640 b3 = ((b3 << 18) | (b3 >> (64 - 18))) ^ b12; 3641 3642 b14 += b5; 3643 b5 = ((b5 << 23) | (b5 >> (64 - 23))) ^ b14; 3644 3645 b8 += b1; 3646 b1 = ((b1 << 52) | (b1 >> (64 - 52))) ^ b8; 3647 3648 b0 += b7; 3649 b7 = ((b7 << 33) | (b7 >> (64 - 33))) ^ b0; 3650 3651 b2 += b5; 3652 b5 = ((b5 << 4) | (b5 >> (64 - 4))) ^ b2; 3653 3654 b4 += b3; 3655 b3 = ((b3 << 51) | (b3 >> (64 - 51))) ^ b4; 3656 3657 b6 += b1; 3658 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b6; 3659 3660 b12 += b15; 3661 b15 = ((b15 << 34) | (b15 >> (64 - 34))) ^ b12; 3662 3663 b14 += b13; 3664 b13 = ((b13 << 41) | (b13 >> (64 - 41))) ^ b14; 3665 3666 b8 += b11; 3667 b11 = ((b11 << 59) | (b11 >> (64 - 59))) ^ b8; 3668 3669 b10 += b9; 3670 b9 = ((b9 << 17) | (b9 >> (64 - 17))) ^ b10; 3671 3672 b0 += b15; 3673 b15 = ((b15 << 5) | (b15 >> (64 - 5))) ^ b0; 3674 3675 b2 += b11; 3676 b11 = ((b11 << 20) | (b11 >> (64 - 20))) ^ b2; 3677 3678 b6 += b13; 3679 b13 = ((b13 << 48) | (b13 >> (64 - 48))) ^ b6; 3680 3681 b4 += b9; 3682 b9 = ((b9 << 41) | (b9 >> (64 - 41))) ^ b4; 3683 3684 b14 += b1; 3685 b1 = ((b1 << 47) | (b1 >> (64 - 47))) ^ b14; 3686 3687 b8 += b5; 3688 b5 = ((b5 << 28) | (b5 >> (64 - 28))) ^ b8; 3689 3690 b10 += b3; 3691 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b10; 3692 3693 b12 += b7; 3694 b7 = ((b7 << 25) | (b7 >> (64 - 25))) ^ b12; 3695 3696 b1 += k4; 3697 b0 += b1 + k3; 3698 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b0; 3699 3700 b3 += k6; 3701 b2 += b3 + k5; 3702 b3 = ((b3 << 9) | (b3 >> (64 - 9))) ^ b2; 3703 3704 b5 += k8; 3705 b4 += b5 + k7; 3706 b5 = ((b5 << 37) | (b5 >> (64 - 37))) ^ b4; 3707 3708 b7 += k10; 3709 b6 += b7 + k9; 3710 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b6; 3711 3712 b9 += k12; 3713 b8 += b9 + k11; 3714 b9 = ((b9 << 12) | (b9 >> (64 - 12))) ^ b8; 3715 3716 b11 += k14; 3717 b10 += b11 + k13; 3718 b11 = ((b11 << 47) | (b11 >> (64 - 47))) ^ b10; 3719 3720 b13 += k16 + t0; 3721 b12 += b13 + k15; 3722 b13 = ((b13 << 44) | (b13 >> (64 - 44))) ^ b12; 3723 3724 b15 += k1 + 3; 3725 b14 += b15 + k0 + t1; 3726 b15 = ((b15 << 30) | (b15 >> (64 - 30))) ^ b14; 3727 3728 b0 += b9; 3729 b9 = ((b9 << 16) | (b9 >> (64 - 16))) ^ b0; 3730 3731 b2 += b13; 3732 b13 = ((b13 << 34) | (b13 >> (64 - 34))) ^ b2; 3733 3734 b6 += b11; 3735 b11 = ((b11 << 56) | (b11 >> (64 - 56))) ^ b6; 3736 3737 b4 += b15; 3738 b15 = ((b15 << 51) | (b15 >> (64 - 51))) ^ b4; 3739 3740 b10 += b7; 3741 b7 = ((b7 << 4) | (b7 >> (64 - 4))) ^ b10; 3742 3743 b12 += b3; 3744 b3 = ((b3 << 53) | (b3 >> (64 - 53))) ^ b12; 3745 3746 b14 += b5; 3747 b5 = ((b5 << 42) | (b5 >> (64 - 42))) ^ b14; 3748 3749 b8 += b1; 3750 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b8; 3751 3752 b0 += b7; 3753 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b0; 3754 3755 b2 += b5; 3756 b5 = ((b5 << 44) | (b5 >> (64 - 44))) ^ b2; 3757 3758 b4 += b3; 3759 b3 = ((b3 << 47) | (b3 >> (64 - 47))) ^ b4; 3760 3761 b6 += b1; 3762 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b6; 3763 3764 b12 += b15; 3765 b15 = ((b15 << 19) | (b15 >> (64 - 19))) ^ b12; 3766 3767 b14 += b13; 3768 b13 = ((b13 << 42) | (b13 >> (64 - 42))) ^ b14; 3769 3770 b8 += b11; 3771 b11 = ((b11 << 44) | (b11 >> (64 - 44))) ^ b8; 3772 3773 b10 += b9; 3774 b9 = ((b9 << 25) | (b9 >> (64 - 25))) ^ b10; 3775 3776 b0 += b15; 3777 b15 = ((b15 << 9) | (b15 >> (64 - 9))) ^ b0; 3778 3779 b2 += b11; 3780 b11 = ((b11 << 48) | (b11 >> (64 - 48))) ^ b2; 3781 3782 b6 += b13; 3783 b13 = ((b13 << 35) | (b13 >> (64 - 35))) ^ b6; 3784 3785 b4 += b9; 3786 b9 = ((b9 << 52) | (b9 >> (64 - 52))) ^ b4; 3787 3788 b14 += b1; 3789 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b14; 3790 3791 b8 += b5; 3792 b5 = ((b5 << 31) | (b5 >> (64 - 31))) ^ b8; 3793 3794 b10 += b3; 3795 b3 = ((b3 << 37) | (b3 >> (64 - 37))) ^ b10; 3796 3797 b12 += b7; 3798 b7 = ((b7 << 20) | (b7 >> (64 - 20))) ^ b12; 3799 3800 b1 += k5; 3801 b0 += b1 + k4; 3802 b1 = ((b1 << 24) | (b1 >> (64 - 24))) ^ b0; 3803 3804 b3 += k7; 3805 b2 += b3 + k6; 3806 b3 = ((b3 << 13) | (b3 >> (64 - 13))) ^ b2; 3807 3808 b5 += k9; 3809 b4 += b5 + k8; 3810 b5 = ((b5 << 8) | (b5 >> (64 - 8))) ^ b4; 3811 3812 b7 += k11; 3813 b6 += b7 + k10; 3814 b7 = ((b7 << 47) | (b7 >> (64 - 47))) ^ b6; 3815 3816 b9 += k13; 3817 b8 += b9 + k12; 3818 b9 = ((b9 << 8) | (b9 >> (64 - 8))) ^ b8; 3819 3820 b11 += k15; 3821 b10 += b11 + k14; 3822 b11 = ((b11 << 17) | (b11 >> (64 - 17))) ^ b10; 3823 3824 b13 += k0 + t1; 3825 b12 += b13 + k16; 3826 b13 = ((b13 << 22) | (b13 >> (64 - 22))) ^ b12; 3827 3828 b15 += k2 + 4; 3829 b14 += b15 + k1 + t2; 3830 b15 = ((b15 << 37) | (b15 >> (64 - 37))) ^ b14; 3831 3832 b0 += b9; 3833 b9 = ((b9 << 38) | (b9 >> (64 - 38))) ^ b0; 3834 3835 b2 += b13; 3836 b13 = ((b13 << 19) | (b13 >> (64 - 19))) ^ b2; 3837 3838 b6 += b11; 3839 b11 = ((b11 << 10) | (b11 >> (64 - 10))) ^ b6; 3840 3841 b4 += b15; 3842 b15 = ((b15 << 55) | (b15 >> (64 - 55))) ^ b4; 3843 3844 b10 += b7; 3845 b7 = ((b7 << 49) | (b7 >> (64 - 49))) ^ b10; 3846 3847 b12 += b3; 3848 b3 = ((b3 << 18) | (b3 >> (64 - 18))) ^ b12; 3849 3850 b14 += b5; 3851 b5 = ((b5 << 23) | (b5 >> (64 - 23))) ^ b14; 3852 3853 b8 += b1; 3854 b1 = ((b1 << 52) | (b1 >> (64 - 52))) ^ b8; 3855 3856 b0 += b7; 3857 b7 = ((b7 << 33) | (b7 >> (64 - 33))) ^ b0; 3858 3859 b2 += b5; 3860 b5 = ((b5 << 4) | (b5 >> (64 - 4))) ^ b2; 3861 3862 b4 += b3; 3863 b3 = ((b3 << 51) | (b3 >> (64 - 51))) ^ b4; 3864 3865 b6 += b1; 3866 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b6; 3867 3868 b12 += b15; 3869 b15 = ((b15 << 34) | (b15 >> (64 - 34))) ^ b12; 3870 3871 b14 += b13; 3872 b13 = ((b13 << 41) | (b13 >> (64 - 41))) ^ b14; 3873 3874 b8 += b11; 3875 b11 = ((b11 << 59) | (b11 >> (64 - 59))) ^ b8; 3876 3877 b10 += b9; 3878 b9 = ((b9 << 17) | (b9 >> (64 - 17))) ^ b10; 3879 3880 b0 += b15; 3881 b15 = ((b15 << 5) | (b15 >> (64 - 5))) ^ b0; 3882 3883 b2 += b11; 3884 b11 = ((b11 << 20) | (b11 >> (64 - 20))) ^ b2; 3885 3886 b6 += b13; 3887 b13 = ((b13 << 48) | (b13 >> (64 - 48))) ^ b6; 3888 3889 b4 += b9; 3890 b9 = ((b9 << 41) | (b9 >> (64 - 41))) ^ b4; 3891 3892 b14 += b1; 3893 b1 = ((b1 << 47) | (b1 >> (64 - 47))) ^ b14; 3894 3895 b8 += b5; 3896 b5 = ((b5 << 28) | (b5 >> (64 - 28))) ^ b8; 3897 3898 b10 += b3; 3899 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b10; 3900 3901 b12 += b7; 3902 b7 = ((b7 << 25) | (b7 >> (64 - 25))) ^ b12; 3903 3904 b1 += k6; 3905 b0 += b1 + k5; 3906 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b0; 3907 3908 b3 += k8; 3909 b2 += b3 + k7; 3910 b3 = ((b3 << 9) | (b3 >> (64 - 9))) ^ b2; 3911 3912 b5 += k10; 3913 b4 += b5 + k9; 3914 b5 = ((b5 << 37) | (b5 >> (64 - 37))) ^ b4; 3915 3916 b7 += k12; 3917 b6 += b7 + k11; 3918 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b6; 3919 3920 b9 += k14; 3921 b8 += b9 + k13; 3922 b9 = ((b9 << 12) | (b9 >> (64 - 12))) ^ b8; 3923 3924 b11 += k16; 3925 b10 += b11 + k15; 3926 b11 = ((b11 << 47) | (b11 >> (64 - 47))) ^ b10; 3927 3928 b13 += k1 + t2; 3929 b12 += b13 + k0; 3930 b13 = ((b13 << 44) | (b13 >> (64 - 44))) ^ b12; 3931 3932 b15 += k3 + 5; 3933 b14 += b15 + k2 + t0; 3934 b15 = ((b15 << 30) | (b15 >> (64 - 30))) ^ b14; 3935 3936 b0 += b9; 3937 b9 = ((b9 << 16) | (b9 >> (64 - 16))) ^ b0; 3938 3939 b2 += b13; 3940 b13 = ((b13 << 34) | (b13 >> (64 - 34))) ^ b2; 3941 3942 b6 += b11; 3943 b11 = ((b11 << 56) | (b11 >> (64 - 56))) ^ b6; 3944 3945 b4 += b15; 3946 b15 = ((b15 << 51) | (b15 >> (64 - 51))) ^ b4; 3947 3948 b10 += b7; 3949 b7 = ((b7 << 4) | (b7 >> (64 - 4))) ^ b10; 3950 3951 b12 += b3; 3952 b3 = ((b3 << 53) | (b3 >> (64 - 53))) ^ b12; 3953 3954 b14 += b5; 3955 b5 = ((b5 << 42) | (b5 >> (64 - 42))) ^ b14; 3956 3957 b8 += b1; 3958 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b8; 3959 3960 b0 += b7; 3961 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b0; 3962 3963 b2 += b5; 3964 b5 = ((b5 << 44) | (b5 >> (64 - 44))) ^ b2; 3965 3966 b4 += b3; 3967 b3 = ((b3 << 47) | (b3 >> (64 - 47))) ^ b4; 3968 3969 b6 += b1; 3970 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b6; 3971 3972 b12 += b15; 3973 b15 = ((b15 << 19) | (b15 >> (64 - 19))) ^ b12; 3974 3975 b14 += b13; 3976 b13 = ((b13 << 42) | (b13 >> (64 - 42))) ^ b14; 3977 3978 b8 += b11; 3979 b11 = ((b11 << 44) | (b11 >> (64 - 44))) ^ b8; 3980 3981 b10 += b9; 3982 b9 = ((b9 << 25) | (b9 >> (64 - 25))) ^ b10; 3983 3984 b0 += b15; 3985 b15 = ((b15 << 9) | (b15 >> (64 - 9))) ^ b0; 3986 3987 b2 += b11; 3988 b11 = ((b11 << 48) | (b11 >> (64 - 48))) ^ b2; 3989 3990 b6 += b13; 3991 b13 = ((b13 << 35) | (b13 >> (64 - 35))) ^ b6; 3992 3993 b4 += b9; 3994 b9 = ((b9 << 52) | (b9 >> (64 - 52))) ^ b4; 3995 3996 b14 += b1; 3997 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b14; 3998 3999 b8 += b5; 4000 b5 = ((b5 << 31) | (b5 >> (64 - 31))) ^ b8; 4001 4002 b10 += b3; 4003 b3 = ((b3 << 37) | (b3 >> (64 - 37))) ^ b10; 4004 4005 b12 += b7; 4006 b7 = ((b7 << 20) | (b7 >> (64 - 20))) ^ b12; 4007 4008 b1 += k7; 4009 b0 += b1 + k6; 4010 b1 = ((b1 << 24) | (b1 >> (64 - 24))) ^ b0; 4011 4012 b3 += k9; 4013 b2 += b3 + k8; 4014 b3 = ((b3 << 13) | (b3 >> (64 - 13))) ^ b2; 4015 4016 b5 += k11; 4017 b4 += b5 + k10; 4018 b5 = ((b5 << 8) | (b5 >> (64 - 8))) ^ b4; 4019 4020 b7 += k13; 4021 b6 += b7 + k12; 4022 b7 = ((b7 << 47) | (b7 >> (64 - 47))) ^ b6; 4023 4024 b9 += k15; 4025 b8 += b9 + k14; 4026 b9 = ((b9 << 8) | (b9 >> (64 - 8))) ^ b8; 4027 4028 b11 += k0; 4029 b10 += b11 + k16; 4030 b11 = ((b11 << 17) | (b11 >> (64 - 17))) ^ b10; 4031 4032 b13 += k2 + t0; 4033 b12 += b13 + k1; 4034 b13 = ((b13 << 22) | (b13 >> (64 - 22))) ^ b12; 4035 4036 b15 += k4 + 6; 4037 b14 += b15 + k3 + t1; 4038 b15 = ((b15 << 37) | (b15 >> (64 - 37))) ^ b14; 4039 4040 b0 += b9; 4041 b9 = ((b9 << 38) | (b9 >> (64 - 38))) ^ b0; 4042 4043 b2 += b13; 4044 b13 = ((b13 << 19) | (b13 >> (64 - 19))) ^ b2; 4045 4046 b6 += b11; 4047 b11 = ((b11 << 10) | (b11 >> (64 - 10))) ^ b6; 4048 4049 b4 += b15; 4050 b15 = ((b15 << 55) | (b15 >> (64 - 55))) ^ b4; 4051 4052 b10 += b7; 4053 b7 = ((b7 << 49) | (b7 >> (64 - 49))) ^ b10; 4054 4055 b12 += b3; 4056 b3 = ((b3 << 18) | (b3 >> (64 - 18))) ^ b12; 4057 4058 b14 += b5; 4059 b5 = ((b5 << 23) | (b5 >> (64 - 23))) ^ b14; 4060 4061 b8 += b1; 4062 b1 = ((b1 << 52) | (b1 >> (64 - 52))) ^ b8; 4063 4064 b0 += b7; 4065 b7 = ((b7 << 33) | (b7 >> (64 - 33))) ^ b0; 4066 4067 b2 += b5; 4068 b5 = ((b5 << 4) | (b5 >> (64 - 4))) ^ b2; 4069 4070 b4 += b3; 4071 b3 = ((b3 << 51) | (b3 >> (64 - 51))) ^ b4; 4072 4073 b6 += b1; 4074 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b6; 4075 4076 b12 += b15; 4077 b15 = ((b15 << 34) | (b15 >> (64 - 34))) ^ b12; 4078 4079 b14 += b13; 4080 b13 = ((b13 << 41) | (b13 >> (64 - 41))) ^ b14; 4081 4082 b8 += b11; 4083 b11 = ((b11 << 59) | (b11 >> (64 - 59))) ^ b8; 4084 4085 b10 += b9; 4086 b9 = ((b9 << 17) | (b9 >> (64 - 17))) ^ b10; 4087 4088 b0 += b15; 4089 b15 = ((b15 << 5) | (b15 >> (64 - 5))) ^ b0; 4090 4091 b2 += b11; 4092 b11 = ((b11 << 20) | (b11 >> (64 - 20))) ^ b2; 4093 4094 b6 += b13; 4095 b13 = ((b13 << 48) | (b13 >> (64 - 48))) ^ b6; 4096 4097 b4 += b9; 4098 b9 = ((b9 << 41) | (b9 >> (64 - 41))) ^ b4; 4099 4100 b14 += b1; 4101 b1 = ((b1 << 47) | (b1 >> (64 - 47))) ^ b14; 4102 4103 b8 += b5; 4104 b5 = ((b5 << 28) | (b5 >> (64 - 28))) ^ b8; 4105 4106 b10 += b3; 4107 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b10; 4108 4109 b12 += b7; 4110 b7 = ((b7 << 25) | (b7 >> (64 - 25))) ^ b12; 4111 4112 b1 += k8; 4113 b0 += b1 + k7; 4114 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b0; 4115 4116 b3 += k10; 4117 b2 += b3 + k9; 4118 b3 = ((b3 << 9) | (b3 >> (64 - 9))) ^ b2; 4119 4120 b5 += k12; 4121 b4 += b5 + k11; 4122 b5 = ((b5 << 37) | (b5 >> (64 - 37))) ^ b4; 4123 4124 b7 += k14; 4125 b6 += b7 + k13; 4126 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b6; 4127 4128 b9 += k16; 4129 b8 += b9 + k15; 4130 b9 = ((b9 << 12) | (b9 >> (64 - 12))) ^ b8; 4131 4132 b11 += k1; 4133 b10 += b11 + k0; 4134 b11 = ((b11 << 47) | (b11 >> (64 - 47))) ^ b10; 4135 4136 b13 += k3 + t1; 4137 b12 += b13 + k2; 4138 b13 = ((b13 << 44) | (b13 >> (64 - 44))) ^ b12; 4139 4140 b15 += k5 + 7; 4141 b14 += b15 + k4 + t2; 4142 b15 = ((b15 << 30) | (b15 >> (64 - 30))) ^ b14; 4143 4144 b0 += b9; 4145 b9 = ((b9 << 16) | (b9 >> (64 - 16))) ^ b0; 4146 4147 b2 += b13; 4148 b13 = ((b13 << 34) | (b13 >> (64 - 34))) ^ b2; 4149 4150 b6 += b11; 4151 b11 = ((b11 << 56) | (b11 >> (64 - 56))) ^ b6; 4152 4153 b4 += b15; 4154 b15 = ((b15 << 51) | (b15 >> (64 - 51))) ^ b4; 4155 4156 b10 += b7; 4157 b7 = ((b7 << 4) | (b7 >> (64 - 4))) ^ b10; 4158 4159 b12 += b3; 4160 b3 = ((b3 << 53) | (b3 >> (64 - 53))) ^ b12; 4161 4162 b14 += b5; 4163 b5 = ((b5 << 42) | (b5 >> (64 - 42))) ^ b14; 4164 4165 b8 += b1; 4166 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b8; 4167 4168 b0 += b7; 4169 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b0; 4170 4171 b2 += b5; 4172 b5 = ((b5 << 44) | (b5 >> (64 - 44))) ^ b2; 4173 4174 b4 += b3; 4175 b3 = ((b3 << 47) | (b3 >> (64 - 47))) ^ b4; 4176 4177 b6 += b1; 4178 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b6; 4179 4180 b12 += b15; 4181 b15 = ((b15 << 19) | (b15 >> (64 - 19))) ^ b12; 4182 4183 b14 += b13; 4184 b13 = ((b13 << 42) | (b13 >> (64 - 42))) ^ b14; 4185 4186 b8 += b11; 4187 b11 = ((b11 << 44) | (b11 >> (64 - 44))) ^ b8; 4188 4189 b10 += b9; 4190 b9 = ((b9 << 25) | (b9 >> (64 - 25))) ^ b10; 4191 4192 b0 += b15; 4193 b15 = ((b15 << 9) | (b15 >> (64 - 9))) ^ b0; 4194 4195 b2 += b11; 4196 b11 = ((b11 << 48) | (b11 >> (64 - 48))) ^ b2; 4197 4198 b6 += b13; 4199 b13 = ((b13 << 35) | (b13 >> (64 - 35))) ^ b6; 4200 4201 b4 += b9; 4202 b9 = ((b9 << 52) | (b9 >> (64 - 52))) ^ b4; 4203 4204 b14 += b1; 4205 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b14; 4206 4207 b8 += b5; 4208 b5 = ((b5 << 31) | (b5 >> (64 - 31))) ^ b8; 4209 4210 b10 += b3; 4211 b3 = ((b3 << 37) | (b3 >> (64 - 37))) ^ b10; 4212 4213 b12 += b7; 4214 b7 = ((b7 << 20) | (b7 >> (64 - 20))) ^ b12; 4215 4216 b1 += k9; 4217 b0 += b1 + k8; 4218 b1 = ((b1 << 24) | (b1 >> (64 - 24))) ^ b0; 4219 4220 b3 += k11; 4221 b2 += b3 + k10; 4222 b3 = ((b3 << 13) | (b3 >> (64 - 13))) ^ b2; 4223 4224 b5 += k13; 4225 b4 += b5 + k12; 4226 b5 = ((b5 << 8) | (b5 >> (64 - 8))) ^ b4; 4227 4228 b7 += k15; 4229 b6 += b7 + k14; 4230 b7 = ((b7 << 47) | (b7 >> (64 - 47))) ^ b6; 4231 4232 b9 += k0; 4233 b8 += b9 + k16; 4234 b9 = ((b9 << 8) | (b9 >> (64 - 8))) ^ b8; 4235 4236 b11 += k2; 4237 b10 += b11 + k1; 4238 b11 = ((b11 << 17) | (b11 >> (64 - 17))) ^ b10; 4239 4240 b13 += k4 + t2; 4241 b12 += b13 + k3; 4242 b13 = ((b13 << 22) | (b13 >> (64 - 22))) ^ b12; 4243 4244 b15 += k6 + 8; 4245 b14 += b15 + k5 + t0; 4246 b15 = ((b15 << 37) | (b15 >> (64 - 37))) ^ b14; 4247 4248 b0 += b9; 4249 b9 = ((b9 << 38) | (b9 >> (64 - 38))) ^ b0; 4250 4251 b2 += b13; 4252 b13 = ((b13 << 19) | (b13 >> (64 - 19))) ^ b2; 4253 4254 b6 += b11; 4255 b11 = ((b11 << 10) | (b11 >> (64 - 10))) ^ b6; 4256 4257 b4 += b15; 4258 b15 = ((b15 << 55) | (b15 >> (64 - 55))) ^ b4; 4259 4260 b10 += b7; 4261 b7 = ((b7 << 49) | (b7 >> (64 - 49))) ^ b10; 4262 4263 b12 += b3; 4264 b3 = ((b3 << 18) | (b3 >> (64 - 18))) ^ b12; 4265 4266 b14 += b5; 4267 b5 = ((b5 << 23) | (b5 >> (64 - 23))) ^ b14; 4268 4269 b8 += b1; 4270 b1 = ((b1 << 52) | (b1 >> (64 - 52))) ^ b8; 4271 4272 b0 += b7; 4273 b7 = ((b7 << 33) | (b7 >> (64 - 33))) ^ b0; 4274 4275 b2 += b5; 4276 b5 = ((b5 << 4) | (b5 >> (64 - 4))) ^ b2; 4277 4278 b4 += b3; 4279 b3 = ((b3 << 51) | (b3 >> (64 - 51))) ^ b4; 4280 4281 b6 += b1; 4282 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b6; 4283 4284 b12 += b15; 4285 b15 = ((b15 << 34) | (b15 >> (64 - 34))) ^ b12; 4286 4287 b14 += b13; 4288 b13 = ((b13 << 41) | (b13 >> (64 - 41))) ^ b14; 4289 4290 b8 += b11; 4291 b11 = ((b11 << 59) | (b11 >> (64 - 59))) ^ b8; 4292 4293 b10 += b9; 4294 b9 = ((b9 << 17) | (b9 >> (64 - 17))) ^ b10; 4295 4296 b0 += b15; 4297 b15 = ((b15 << 5) | (b15 >> (64 - 5))) ^ b0; 4298 4299 b2 += b11; 4300 b11 = ((b11 << 20) | (b11 >> (64 - 20))) ^ b2; 4301 4302 b6 += b13; 4303 b13 = ((b13 << 48) | (b13 >> (64 - 48))) ^ b6; 4304 4305 b4 += b9; 4306 b9 = ((b9 << 41) | (b9 >> (64 - 41))) ^ b4; 4307 4308 b14 += b1; 4309 b1 = ((b1 << 47) | (b1 >> (64 - 47))) ^ b14; 4310 4311 b8 += b5; 4312 b5 = ((b5 << 28) | (b5 >> (64 - 28))) ^ b8; 4313 4314 b10 += b3; 4315 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b10; 4316 4317 b12 += b7; 4318 b7 = ((b7 << 25) | (b7 >> (64 - 25))) ^ b12; 4319 4320 b1 += k10; 4321 b0 += b1 + k9; 4322 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b0; 4323 4324 b3 += k12; 4325 b2 += b3 + k11; 4326 b3 = ((b3 << 9) | (b3 >> (64 - 9))) ^ b2; 4327 4328 b5 += k14; 4329 b4 += b5 + k13; 4330 b5 = ((b5 << 37) | (b5 >> (64 - 37))) ^ b4; 4331 4332 b7 += k16; 4333 b6 += b7 + k15; 4334 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b6; 4335 4336 b9 += k1; 4337 b8 += b9 + k0; 4338 b9 = ((b9 << 12) | (b9 >> (64 - 12))) ^ b8; 4339 4340 b11 += k3; 4341 b10 += b11 + k2; 4342 b11 = ((b11 << 47) | (b11 >> (64 - 47))) ^ b10; 4343 4344 b13 += k5 + t0; 4345 b12 += b13 + k4; 4346 b13 = ((b13 << 44) | (b13 >> (64 - 44))) ^ b12; 4347 4348 b15 += k7 + 9; 4349 b14 += b15 + k6 + t1; 4350 b15 = ((b15 << 30) | (b15 >> (64 - 30))) ^ b14; 4351 4352 b0 += b9; 4353 b9 = ((b9 << 16) | (b9 >> (64 - 16))) ^ b0; 4354 4355 b2 += b13; 4356 b13 = ((b13 << 34) | (b13 >> (64 - 34))) ^ b2; 4357 4358 b6 += b11; 4359 b11 = ((b11 << 56) | (b11 >> (64 - 56))) ^ b6; 4360 4361 b4 += b15; 4362 b15 = ((b15 << 51) | (b15 >> (64 - 51))) ^ b4; 4363 4364 b10 += b7; 4365 b7 = ((b7 << 4) | (b7 >> (64 - 4))) ^ b10; 4366 4367 b12 += b3; 4368 b3 = ((b3 << 53) | (b3 >> (64 - 53))) ^ b12; 4369 4370 b14 += b5; 4371 b5 = ((b5 << 42) | (b5 >> (64 - 42))) ^ b14; 4372 4373 b8 += b1; 4374 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b8; 4375 4376 b0 += b7; 4377 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b0; 4378 4379 b2 += b5; 4380 b5 = ((b5 << 44) | (b5 >> (64 - 44))) ^ b2; 4381 4382 b4 += b3; 4383 b3 = ((b3 << 47) | (b3 >> (64 - 47))) ^ b4; 4384 4385 b6 += b1; 4386 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b6; 4387 4388 b12 += b15; 4389 b15 = ((b15 << 19) | (b15 >> (64 - 19))) ^ b12; 4390 4391 b14 += b13; 4392 b13 = ((b13 << 42) | (b13 >> (64 - 42))) ^ b14; 4393 4394 b8 += b11; 4395 b11 = ((b11 << 44) | (b11 >> (64 - 44))) ^ b8; 4396 4397 b10 += b9; 4398 b9 = ((b9 << 25) | (b9 >> (64 - 25))) ^ b10; 4399 4400 b0 += b15; 4401 b15 = ((b15 << 9) | (b15 >> (64 - 9))) ^ b0; 4402 4403 b2 += b11; 4404 b11 = ((b11 << 48) | (b11 >> (64 - 48))) ^ b2; 4405 4406 b6 += b13; 4407 b13 = ((b13 << 35) | (b13 >> (64 - 35))) ^ b6; 4408 4409 b4 += b9; 4410 b9 = ((b9 << 52) | (b9 >> (64 - 52))) ^ b4; 4411 4412 b14 += b1; 4413 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b14; 4414 4415 b8 += b5; 4416 b5 = ((b5 << 31) | (b5 >> (64 - 31))) ^ b8; 4417 4418 b10 += b3; 4419 b3 = ((b3 << 37) | (b3 >> (64 - 37))) ^ b10; 4420 4421 b12 += b7; 4422 b7 = ((b7 << 20) | (b7 >> (64 - 20))) ^ b12; 4423 4424 b1 += k11; 4425 b0 += b1 + k10; 4426 b1 = ((b1 << 24) | (b1 >> (64 - 24))) ^ b0; 4427 4428 b3 += k13; 4429 b2 += b3 + k12; 4430 b3 = ((b3 << 13) | (b3 >> (64 - 13))) ^ b2; 4431 4432 b5 += k15; 4433 b4 += b5 + k14; 4434 b5 = ((b5 << 8) | (b5 >> (64 - 8))) ^ b4; 4435 4436 b7 += k0; 4437 b6 += b7 + k16; 4438 b7 = ((b7 << 47) | (b7 >> (64 - 47))) ^ b6; 4439 4440 b9 += k2; 4441 b8 += b9 + k1; 4442 b9 = ((b9 << 8) | (b9 >> (64 - 8))) ^ b8; 4443 4444 b11 += k4; 4445 b10 += b11 + k3; 4446 b11 = ((b11 << 17) | (b11 >> (64 - 17))) ^ b10; 4447 4448 b13 += k6 + t1; 4449 b12 += b13 + k5; 4450 b13 = ((b13 << 22) | (b13 >> (64 - 22))) ^ b12; 4451 4452 b15 += k8 + 10; 4453 b14 += b15 + k7 + t2; 4454 b15 = ((b15 << 37) | (b15 >> (64 - 37))) ^ b14; 4455 4456 b0 += b9; 4457 b9 = ((b9 << 38) | (b9 >> (64 - 38))) ^ b0; 4458 4459 b2 += b13; 4460 b13 = ((b13 << 19) | (b13 >> (64 - 19))) ^ b2; 4461 4462 b6 += b11; 4463 b11 = ((b11 << 10) | (b11 >> (64 - 10))) ^ b6; 4464 4465 b4 += b15; 4466 b15 = ((b15 << 55) | (b15 >> (64 - 55))) ^ b4; 4467 4468 b10 += b7; 4469 b7 = ((b7 << 49) | (b7 >> (64 - 49))) ^ b10; 4470 4471 b12 += b3; 4472 b3 = ((b3 << 18) | (b3 >> (64 - 18))) ^ b12; 4473 4474 b14 += b5; 4475 b5 = ((b5 << 23) | (b5 >> (64 - 23))) ^ b14; 4476 4477 b8 += b1; 4478 b1 = ((b1 << 52) | (b1 >> (64 - 52))) ^ b8; 4479 4480 b0 += b7; 4481 b7 = ((b7 << 33) | (b7 >> (64 - 33))) ^ b0; 4482 4483 b2 += b5; 4484 b5 = ((b5 << 4) | (b5 >> (64 - 4))) ^ b2; 4485 4486 b4 += b3; 4487 b3 = ((b3 << 51) | (b3 >> (64 - 51))) ^ b4; 4488 4489 b6 += b1; 4490 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b6; 4491 4492 b12 += b15; 4493 b15 = ((b15 << 34) | (b15 >> (64 - 34))) ^ b12; 4494 4495 b14 += b13; 4496 b13 = ((b13 << 41) | (b13 >> (64 - 41))) ^ b14; 4497 4498 b8 += b11; 4499 b11 = ((b11 << 59) | (b11 >> (64 - 59))) ^ b8; 4500 4501 b10 += b9; 4502 b9 = ((b9 << 17) | (b9 >> (64 - 17))) ^ b10; 4503 4504 b0 += b15; 4505 b15 = ((b15 << 5) | (b15 >> (64 - 5))) ^ b0; 4506 4507 b2 += b11; 4508 b11 = ((b11 << 20) | (b11 >> (64 - 20))) ^ b2; 4509 4510 b6 += b13; 4511 b13 = ((b13 << 48) | (b13 >> (64 - 48))) ^ b6; 4512 4513 b4 += b9; 4514 b9 = ((b9 << 41) | (b9 >> (64 - 41))) ^ b4; 4515 4516 b14 += b1; 4517 b1 = ((b1 << 47) | (b1 >> (64 - 47))) ^ b14; 4518 4519 b8 += b5; 4520 b5 = ((b5 << 28) | (b5 >> (64 - 28))) ^ b8; 4521 4522 b10 += b3; 4523 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b10; 4524 4525 b12 += b7; 4526 b7 = ((b7 << 25) | (b7 >> (64 - 25))) ^ b12; 4527 4528 b1 += k12; 4529 b0 += b1 + k11; 4530 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b0; 4531 4532 b3 += k14; 4533 b2 += b3 + k13; 4534 b3 = ((b3 << 9) | (b3 >> (64 - 9))) ^ b2; 4535 4536 b5 += k16; 4537 b4 += b5 + k15; 4538 b5 = ((b5 << 37) | (b5 >> (64 - 37))) ^ b4; 4539 4540 b7 += k1; 4541 b6 += b7 + k0; 4542 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b6; 4543 4544 b9 += k3; 4545 b8 += b9 + k2; 4546 b9 = ((b9 << 12) | (b9 >> (64 - 12))) ^ b8; 4547 4548 b11 += k5; 4549 b10 += b11 + k4; 4550 b11 = ((b11 << 47) | (b11 >> (64 - 47))) ^ b10; 4551 4552 b13 += k7 + t2; 4553 b12 += b13 + k6; 4554 b13 = ((b13 << 44) | (b13 >> (64 - 44))) ^ b12; 4555 4556 b15 += k9 + 11; 4557 b14 += b15 + k8 + t0; 4558 b15 = ((b15 << 30) | (b15 >> (64 - 30))) ^ b14; 4559 4560 b0 += b9; 4561 b9 = ((b9 << 16) | (b9 >> (64 - 16))) ^ b0; 4562 4563 b2 += b13; 4564 b13 = ((b13 << 34) | (b13 >> (64 - 34))) ^ b2; 4565 4566 b6 += b11; 4567 b11 = ((b11 << 56) | (b11 >> (64 - 56))) ^ b6; 4568 4569 b4 += b15; 4570 b15 = ((b15 << 51) | (b15 >> (64 - 51))) ^ b4; 4571 4572 b10 += b7; 4573 b7 = ((b7 << 4) | (b7 >> (64 - 4))) ^ b10; 4574 4575 b12 += b3; 4576 b3 = ((b3 << 53) | (b3 >> (64 - 53))) ^ b12; 4577 4578 b14 += b5; 4579 b5 = ((b5 << 42) | (b5 >> (64 - 42))) ^ b14; 4580 4581 b8 += b1; 4582 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b8; 4583 4584 b0 += b7; 4585 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b0; 4586 4587 b2 += b5; 4588 b5 = ((b5 << 44) | (b5 >> (64 - 44))) ^ b2; 4589 4590 b4 += b3; 4591 b3 = ((b3 << 47) | (b3 >> (64 - 47))) ^ b4; 4592 4593 b6 += b1; 4594 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b6; 4595 4596 b12 += b15; 4597 b15 = ((b15 << 19) | (b15 >> (64 - 19))) ^ b12; 4598 4599 b14 += b13; 4600 b13 = ((b13 << 42) | (b13 >> (64 - 42))) ^ b14; 4601 4602 b8 += b11; 4603 b11 = ((b11 << 44) | (b11 >> (64 - 44))) ^ b8; 4604 4605 b10 += b9; 4606 b9 = ((b9 << 25) | (b9 >> (64 - 25))) ^ b10; 4607 4608 b0 += b15; 4609 b15 = ((b15 << 9) | (b15 >> (64 - 9))) ^ b0; 4610 4611 b2 += b11; 4612 b11 = ((b11 << 48) | (b11 >> (64 - 48))) ^ b2; 4613 4614 b6 += b13; 4615 b13 = ((b13 << 35) | (b13 >> (64 - 35))) ^ b6; 4616 4617 b4 += b9; 4618 b9 = ((b9 << 52) | (b9 >> (64 - 52))) ^ b4; 4619 4620 b14 += b1; 4621 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b14; 4622 4623 b8 += b5; 4624 b5 = ((b5 << 31) | (b5 >> (64 - 31))) ^ b8; 4625 4626 b10 += b3; 4627 b3 = ((b3 << 37) | (b3 >> (64 - 37))) ^ b10; 4628 4629 b12 += b7; 4630 b7 = ((b7 << 20) | (b7 >> (64 - 20))) ^ b12; 4631 4632 b1 += k13; 4633 b0 += b1 + k12; 4634 b1 = ((b1 << 24) | (b1 >> (64 - 24))) ^ b0; 4635 4636 b3 += k15; 4637 b2 += b3 + k14; 4638 b3 = ((b3 << 13) | (b3 >> (64 - 13))) ^ b2; 4639 4640 b5 += k0; 4641 b4 += b5 + k16; 4642 b5 = ((b5 << 8) | (b5 >> (64 - 8))) ^ b4; 4643 4644 b7 += k2; 4645 b6 += b7 + k1; 4646 b7 = ((b7 << 47) | (b7 >> (64 - 47))) ^ b6; 4647 4648 b9 += k4; 4649 b8 += b9 + k3; 4650 b9 = ((b9 << 8) | (b9 >> (64 - 8))) ^ b8; 4651 4652 b11 += k6; 4653 b10 += b11 + k5; 4654 b11 = ((b11 << 17) | (b11 >> (64 - 17))) ^ b10; 4655 4656 b13 += k8 + t0; 4657 b12 += b13 + k7; 4658 b13 = ((b13 << 22) | (b13 >> (64 - 22))) ^ b12; 4659 4660 b15 += k10 + 12; 4661 b14 += b15 + k9 + t1; 4662 b15 = ((b15 << 37) | (b15 >> (64 - 37))) ^ b14; 4663 4664 b0 += b9; 4665 b9 = ((b9 << 38) | (b9 >> (64 - 38))) ^ b0; 4666 4667 b2 += b13; 4668 b13 = ((b13 << 19) | (b13 >> (64 - 19))) ^ b2; 4669 4670 b6 += b11; 4671 b11 = ((b11 << 10) | (b11 >> (64 - 10))) ^ b6; 4672 4673 b4 += b15; 4674 b15 = ((b15 << 55) | (b15 >> (64 - 55))) ^ b4; 4675 4676 b10 += b7; 4677 b7 = ((b7 << 49) | (b7 >> (64 - 49))) ^ b10; 4678 4679 b12 += b3; 4680 b3 = ((b3 << 18) | (b3 >> (64 - 18))) ^ b12; 4681 4682 b14 += b5; 4683 b5 = ((b5 << 23) | (b5 >> (64 - 23))) ^ b14; 4684 4685 b8 += b1; 4686 b1 = ((b1 << 52) | (b1 >> (64 - 52))) ^ b8; 4687 4688 b0 += b7; 4689 b7 = ((b7 << 33) | (b7 >> (64 - 33))) ^ b0; 4690 4691 b2 += b5; 4692 b5 = ((b5 << 4) | (b5 >> (64 - 4))) ^ b2; 4693 4694 b4 += b3; 4695 b3 = ((b3 << 51) | (b3 >> (64 - 51))) ^ b4; 4696 4697 b6 += b1; 4698 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b6; 4699 4700 b12 += b15; 4701 b15 = ((b15 << 34) | (b15 >> (64 - 34))) ^ b12; 4702 4703 b14 += b13; 4704 b13 = ((b13 << 41) | (b13 >> (64 - 41))) ^ b14; 4705 4706 b8 += b11; 4707 b11 = ((b11 << 59) | (b11 >> (64 - 59))) ^ b8; 4708 4709 b10 += b9; 4710 b9 = ((b9 << 17) | (b9 >> (64 - 17))) ^ b10; 4711 4712 b0 += b15; 4713 b15 = ((b15 << 5) | (b15 >> (64 - 5))) ^ b0; 4714 4715 b2 += b11; 4716 b11 = ((b11 << 20) | (b11 >> (64 - 20))) ^ b2; 4717 4718 b6 += b13; 4719 b13 = ((b13 << 48) | (b13 >> (64 - 48))) ^ b6; 4720 4721 b4 += b9; 4722 b9 = ((b9 << 41) | (b9 >> (64 - 41))) ^ b4; 4723 4724 b14 += b1; 4725 b1 = ((b1 << 47) | (b1 >> (64 - 47))) ^ b14; 4726 4727 b8 += b5; 4728 b5 = ((b5 << 28) | (b5 >> (64 - 28))) ^ b8; 4729 4730 b10 += b3; 4731 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b10; 4732 4733 b12 += b7; 4734 b7 = ((b7 << 25) | (b7 >> (64 - 25))) ^ b12; 4735 4736 b1 += k14; 4737 b0 += b1 + k13; 4738 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b0; 4739 4740 b3 += k16; 4741 b2 += b3 + k15; 4742 b3 = ((b3 << 9) | (b3 >> (64 - 9))) ^ b2; 4743 4744 b5 += k1; 4745 b4 += b5 + k0; 4746 b5 = ((b5 << 37) | (b5 >> (64 - 37))) ^ b4; 4747 4748 b7 += k3; 4749 b6 += b7 + k2; 4750 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b6; 4751 4752 b9 += k5; 4753 b8 += b9 + k4; 4754 b9 = ((b9 << 12) | (b9 >> (64 - 12))) ^ b8; 4755 4756 b11 += k7; 4757 b10 += b11 + k6; 4758 b11 = ((b11 << 47) | (b11 >> (64 - 47))) ^ b10; 4759 4760 b13 += k9 + t1; 4761 b12 += b13 + k8; 4762 b13 = ((b13 << 44) | (b13 >> (64 - 44))) ^ b12; 4763 4764 b15 += k11 + 13; 4765 b14 += b15 + k10 + t2; 4766 b15 = ((b15 << 30) | (b15 >> (64 - 30))) ^ b14; 4767 4768 b0 += b9; 4769 b9 = ((b9 << 16) | (b9 >> (64 - 16))) ^ b0; 4770 4771 b2 += b13; 4772 b13 = ((b13 << 34) | (b13 >> (64 - 34))) ^ b2; 4773 4774 b6 += b11; 4775 b11 = ((b11 << 56) | (b11 >> (64 - 56))) ^ b6; 4776 4777 b4 += b15; 4778 b15 = ((b15 << 51) | (b15 >> (64 - 51))) ^ b4; 4779 4780 b10 += b7; 4781 b7 = ((b7 << 4) | (b7 >> (64 - 4))) ^ b10; 4782 4783 b12 += b3; 4784 b3 = ((b3 << 53) | (b3 >> (64 - 53))) ^ b12; 4785 4786 b14 += b5; 4787 b5 = ((b5 << 42) | (b5 >> (64 - 42))) ^ b14; 4788 4789 b8 += b1; 4790 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b8; 4791 4792 b0 += b7; 4793 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b0; 4794 4795 b2 += b5; 4796 b5 = ((b5 << 44) | (b5 >> (64 - 44))) ^ b2; 4797 4798 b4 += b3; 4799 b3 = ((b3 << 47) | (b3 >> (64 - 47))) ^ b4; 4800 4801 b6 += b1; 4802 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b6; 4803 4804 b12 += b15; 4805 b15 = ((b15 << 19) | (b15 >> (64 - 19))) ^ b12; 4806 4807 b14 += b13; 4808 b13 = ((b13 << 42) | (b13 >> (64 - 42))) ^ b14; 4809 4810 b8 += b11; 4811 b11 = ((b11 << 44) | (b11 >> (64 - 44))) ^ b8; 4812 4813 b10 += b9; 4814 b9 = ((b9 << 25) | (b9 >> (64 - 25))) ^ b10; 4815 4816 b0 += b15; 4817 b15 = ((b15 << 9) | (b15 >> (64 - 9))) ^ b0; 4818 4819 b2 += b11; 4820 b11 = ((b11 << 48) | (b11 >> (64 - 48))) ^ b2; 4821 4822 b6 += b13; 4823 b13 = ((b13 << 35) | (b13 >> (64 - 35))) ^ b6; 4824 4825 b4 += b9; 4826 b9 = ((b9 << 52) | (b9 >> (64 - 52))) ^ b4; 4827 4828 b14 += b1; 4829 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b14; 4830 4831 b8 += b5; 4832 b5 = ((b5 << 31) | (b5 >> (64 - 31))) ^ b8; 4833 4834 b10 += b3; 4835 b3 = ((b3 << 37) | (b3 >> (64 - 37))) ^ b10; 4836 4837 b12 += b7; 4838 b7 = ((b7 << 20) | (b7 >> (64 - 20))) ^ b12; 4839 4840 b1 += k15; 4841 b0 += b1 + k14; 4842 b1 = ((b1 << 24) | (b1 >> (64 - 24))) ^ b0; 4843 4844 b3 += k0; 4845 b2 += b3 + k16; 4846 b3 = ((b3 << 13) | (b3 >> (64 - 13))) ^ b2; 4847 4848 b5 += k2; 4849 b4 += b5 + k1; 4850 b5 = ((b5 << 8) | (b5 >> (64 - 8))) ^ b4; 4851 4852 b7 += k4; 4853 b6 += b7 + k3; 4854 b7 = ((b7 << 47) | (b7 >> (64 - 47))) ^ b6; 4855 4856 b9 += k6; 4857 b8 += b9 + k5; 4858 b9 = ((b9 << 8) | (b9 >> (64 - 8))) ^ b8; 4859 4860 b11 += k8; 4861 b10 += b11 + k7; 4862 b11 = ((b11 << 17) | (b11 >> (64 - 17))) ^ b10; 4863 4864 b13 += k10 + t2; 4865 b12 += b13 + k9; 4866 b13 = ((b13 << 22) | (b13 >> (64 - 22))) ^ b12; 4867 4868 b15 += k12 + 14; 4869 b14 += b15 + k11 + t0; 4870 b15 = ((b15 << 37) | (b15 >> (64 - 37))) ^ b14; 4871 4872 b0 += b9; 4873 b9 = ((b9 << 38) | (b9 >> (64 - 38))) ^ b0; 4874 4875 b2 += b13; 4876 b13 = ((b13 << 19) | (b13 >> (64 - 19))) ^ b2; 4877 4878 b6 += b11; 4879 b11 = ((b11 << 10) | (b11 >> (64 - 10))) ^ b6; 4880 4881 b4 += b15; 4882 b15 = ((b15 << 55) | (b15 >> (64 - 55))) ^ b4; 4883 4884 b10 += b7; 4885 b7 = ((b7 << 49) | (b7 >> (64 - 49))) ^ b10; 4886 4887 b12 += b3; 4888 b3 = ((b3 << 18) | (b3 >> (64 - 18))) ^ b12; 4889 4890 b14 += b5; 4891 b5 = ((b5 << 23) | (b5 >> (64 - 23))) ^ b14; 4892 4893 b8 += b1; 4894 b1 = ((b1 << 52) | (b1 >> (64 - 52))) ^ b8; 4895 4896 b0 += b7; 4897 b7 = ((b7 << 33) | (b7 >> (64 - 33))) ^ b0; 4898 4899 b2 += b5; 4900 b5 = ((b5 << 4) | (b5 >> (64 - 4))) ^ b2; 4901 4902 b4 += b3; 4903 b3 = ((b3 << 51) | (b3 >> (64 - 51))) ^ b4; 4904 4905 b6 += b1; 4906 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b6; 4907 4908 b12 += b15; 4909 b15 = ((b15 << 34) | (b15 >> (64 - 34))) ^ b12; 4910 4911 b14 += b13; 4912 b13 = ((b13 << 41) | (b13 >> (64 - 41))) ^ b14; 4913 4914 b8 += b11; 4915 b11 = ((b11 << 59) | (b11 >> (64 - 59))) ^ b8; 4916 4917 b10 += b9; 4918 b9 = ((b9 << 17) | (b9 >> (64 - 17))) ^ b10; 4919 4920 b0 += b15; 4921 b15 = ((b15 << 5) | (b15 >> (64 - 5))) ^ b0; 4922 4923 b2 += b11; 4924 b11 = ((b11 << 20) | (b11 >> (64 - 20))) ^ b2; 4925 4926 b6 += b13; 4927 b13 = ((b13 << 48) | (b13 >> (64 - 48))) ^ b6; 4928 4929 b4 += b9; 4930 b9 = ((b9 << 41) | (b9 >> (64 - 41))) ^ b4; 4931 4932 b14 += b1; 4933 b1 = ((b1 << 47) | (b1 >> (64 - 47))) ^ b14; 4934 4935 b8 += b5; 4936 b5 = ((b5 << 28) | (b5 >> (64 - 28))) ^ b8; 4937 4938 b10 += b3; 4939 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b10; 4940 4941 b12 += b7; 4942 b7 = ((b7 << 25) | (b7 >> (64 - 25))) ^ b12; 4943 4944 b1 += k16; 4945 b0 += b1 + k15; 4946 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b0; 4947 4948 b3 += k1; 4949 b2 += b3 + k0; 4950 b3 = ((b3 << 9) | (b3 >> (64 - 9))) ^ b2; 4951 4952 b5 += k3; 4953 b4 += b5 + k2; 4954 b5 = ((b5 << 37) | (b5 >> (64 - 37))) ^ b4; 4955 4956 b7 += k5; 4957 b6 += b7 + k4; 4958 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b6; 4959 4960 b9 += k7; 4961 b8 += b9 + k6; 4962 b9 = ((b9 << 12) | (b9 >> (64 - 12))) ^ b8; 4963 4964 b11 += k9; 4965 b10 += b11 + k8; 4966 b11 = ((b11 << 47) | (b11 >> (64 - 47))) ^ b10; 4967 4968 b13 += k11 + t0; 4969 b12 += b13 + k10; 4970 b13 = ((b13 << 44) | (b13 >> (64 - 44))) ^ b12; 4971 4972 b15 += k13 + 15; 4973 b14 += b15 + k12 + t1; 4974 b15 = ((b15 << 30) | (b15 >> (64 - 30))) ^ b14; 4975 4976 b0 += b9; 4977 b9 = ((b9 << 16) | (b9 >> (64 - 16))) ^ b0; 4978 4979 b2 += b13; 4980 b13 = ((b13 << 34) | (b13 >> (64 - 34))) ^ b2; 4981 4982 b6 += b11; 4983 b11 = ((b11 << 56) | (b11 >> (64 - 56))) ^ b6; 4984 4985 b4 += b15; 4986 b15 = ((b15 << 51) | (b15 >> (64 - 51))) ^ b4; 4987 4988 b10 += b7; 4989 b7 = ((b7 << 4) | (b7 >> (64 - 4))) ^ b10; 4990 4991 b12 += b3; 4992 b3 = ((b3 << 53) | (b3 >> (64 - 53))) ^ b12; 4993 4994 b14 += b5; 4995 b5 = ((b5 << 42) | (b5 >> (64 - 42))) ^ b14; 4996 4997 b8 += b1; 4998 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b8; 4999 5000 b0 += b7; 5001 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b0; 5002 5003 b2 += b5; 5004 b5 = ((b5 << 44) | (b5 >> (64 - 44))) ^ b2; 5005 5006 b4 += b3; 5007 b3 = ((b3 << 47) | (b3 >> (64 - 47))) ^ b4; 5008 5009 b6 += b1; 5010 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b6; 5011 5012 b12 += b15; 5013 b15 = ((b15 << 19) | (b15 >> (64 - 19))) ^ b12; 5014 5015 b14 += b13; 5016 b13 = ((b13 << 42) | (b13 >> (64 - 42))) ^ b14; 5017 5018 b8 += b11; 5019 b11 = ((b11 << 44) | (b11 >> (64 - 44))) ^ b8; 5020 5021 b10 += b9; 5022 b9 = ((b9 << 25) | (b9 >> (64 - 25))) ^ b10; 5023 5024 b0 += b15; 5025 b15 = ((b15 << 9) | (b15 >> (64 - 9))) ^ b0; 5026 5027 b2 += b11; 5028 b11 = ((b11 << 48) | (b11 >> (64 - 48))) ^ b2; 5029 5030 b6 += b13; 5031 b13 = ((b13 << 35) | (b13 >> (64 - 35))) ^ b6; 5032 5033 b4 += b9; 5034 b9 = ((b9 << 52) | (b9 >> (64 - 52))) ^ b4; 5035 5036 b14 += b1; 5037 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b14; 5038 5039 b8 += b5; 5040 b5 = ((b5 << 31) | (b5 >> (64 - 31))) ^ b8; 5041 5042 b10 += b3; 5043 b3 = ((b3 << 37) | (b3 >> (64 - 37))) ^ b10; 5044 5045 b12 += b7; 5046 b7 = ((b7 << 20) | (b7 >> (64 - 20))) ^ b12; 5047 5048 b1 += k0; 5049 b0 += b1 + k16; 5050 b1 = ((b1 << 24) | (b1 >> (64 - 24))) ^ b0; 5051 5052 b3 += k2; 5053 b2 += b3 + k1; 5054 b3 = ((b3 << 13) | (b3 >> (64 - 13))) ^ b2; 5055 5056 b5 += k4; 5057 b4 += b5 + k3; 5058 b5 = ((b5 << 8) | (b5 >> (64 - 8))) ^ b4; 5059 5060 b7 += k6; 5061 b6 += b7 + k5; 5062 b7 = ((b7 << 47) | (b7 >> (64 - 47))) ^ b6; 5063 5064 b9 += k8; 5065 b8 += b9 + k7; 5066 b9 = ((b9 << 8) | (b9 >> (64 - 8))) ^ b8; 5067 5068 b11 += k10; 5069 b10 += b11 + k9; 5070 b11 = ((b11 << 17) | (b11 >> (64 - 17))) ^ b10; 5071 5072 b13 += k12 + t1; 5073 b12 += b13 + k11; 5074 b13 = ((b13 << 22) | (b13 >> (64 - 22))) ^ b12; 5075 5076 b15 += k14 + 16; 5077 b14 += b15 + k13 + t2; 5078 b15 = ((b15 << 37) | (b15 >> (64 - 37))) ^ b14; 5079 5080 b0 += b9; 5081 b9 = ((b9 << 38) | (b9 >> (64 - 38))) ^ b0; 5082 5083 b2 += b13; 5084 b13 = ((b13 << 19) | (b13 >> (64 - 19))) ^ b2; 5085 5086 b6 += b11; 5087 b11 = ((b11 << 10) | (b11 >> (64 - 10))) ^ b6; 5088 5089 b4 += b15; 5090 b15 = ((b15 << 55) | (b15 >> (64 - 55))) ^ b4; 5091 5092 b10 += b7; 5093 b7 = ((b7 << 49) | (b7 >> (64 - 49))) ^ b10; 5094 5095 b12 += b3; 5096 b3 = ((b3 << 18) | (b3 >> (64 - 18))) ^ b12; 5097 5098 b14 += b5; 5099 b5 = ((b5 << 23) | (b5 >> (64 - 23))) ^ b14; 5100 5101 b8 += b1; 5102 b1 = ((b1 << 52) | (b1 >> (64 - 52))) ^ b8; 5103 5104 b0 += b7; 5105 b7 = ((b7 << 33) | (b7 >> (64 - 33))) ^ b0; 5106 5107 b2 += b5; 5108 b5 = ((b5 << 4) | (b5 >> (64 - 4))) ^ b2; 5109 5110 b4 += b3; 5111 b3 = ((b3 << 51) | (b3 >> (64 - 51))) ^ b4; 5112 5113 b6 += b1; 5114 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b6; 5115 5116 b12 += b15; 5117 b15 = ((b15 << 34) | (b15 >> (64 - 34))) ^ b12; 5118 5119 b14 += b13; 5120 b13 = ((b13 << 41) | (b13 >> (64 - 41))) ^ b14; 5121 5122 b8 += b11; 5123 b11 = ((b11 << 59) | (b11 >> (64 - 59))) ^ b8; 5124 5125 b10 += b9; 5126 b9 = ((b9 << 17) | (b9 >> (64 - 17))) ^ b10; 5127 5128 b0 += b15; 5129 b15 = ((b15 << 5) | (b15 >> (64 - 5))) ^ b0; 5130 5131 b2 += b11; 5132 b11 = ((b11 << 20) | (b11 >> (64 - 20))) ^ b2; 5133 5134 b6 += b13; 5135 b13 = ((b13 << 48) | (b13 >> (64 - 48))) ^ b6; 5136 5137 b4 += b9; 5138 b9 = ((b9 << 41) | (b9 >> (64 - 41))) ^ b4; 5139 5140 b14 += b1; 5141 b1 = ((b1 << 47) | (b1 >> (64 - 47))) ^ b14; 5142 5143 b8 += b5; 5144 b5 = ((b5 << 28) | (b5 >> (64 - 28))) ^ b8; 5145 5146 b10 += b3; 5147 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b10; 5148 5149 b12 += b7; 5150 b7 = ((b7 << 25) | (b7 >> (64 - 25))) ^ b12; 5151 5152 b1 += k1; 5153 b0 += b1 + k0; 5154 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b0; 5155 5156 b3 += k3; 5157 b2 += b3 + k2; 5158 b3 = ((b3 << 9) | (b3 >> (64 - 9))) ^ b2; 5159 5160 b5 += k5; 5161 b4 += b5 + k4; 5162 b5 = ((b5 << 37) | (b5 >> (64 - 37))) ^ b4; 5163 5164 b7 += k7; 5165 b6 += b7 + k6; 5166 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b6; 5167 5168 b9 += k9; 5169 b8 += b9 + k8; 5170 b9 = ((b9 << 12) | (b9 >> (64 - 12))) ^ b8; 5171 5172 b11 += k11; 5173 b10 += b11 + k10; 5174 b11 = ((b11 << 47) | (b11 >> (64 - 47))) ^ b10; 5175 5176 b13 += k13 + t2; 5177 b12 += b13 + k12; 5178 b13 = ((b13 << 44) | (b13 >> (64 - 44))) ^ b12; 5179 5180 b15 += k15 + 17; 5181 b14 += b15 + k14 + t0; 5182 b15 = ((b15 << 30) | (b15 >> (64 - 30))) ^ b14; 5183 5184 b0 += b9; 5185 b9 = ((b9 << 16) | (b9 >> (64 - 16))) ^ b0; 5186 5187 b2 += b13; 5188 b13 = ((b13 << 34) | (b13 >> (64 - 34))) ^ b2; 5189 5190 b6 += b11; 5191 b11 = ((b11 << 56) | (b11 >> (64 - 56))) ^ b6; 5192 5193 b4 += b15; 5194 b15 = ((b15 << 51) | (b15 >> (64 - 51))) ^ b4; 5195 5196 b10 += b7; 5197 b7 = ((b7 << 4) | (b7 >> (64 - 4))) ^ b10; 5198 5199 b12 += b3; 5200 b3 = ((b3 << 53) | (b3 >> (64 - 53))) ^ b12; 5201 5202 b14 += b5; 5203 b5 = ((b5 << 42) | (b5 >> (64 - 42))) ^ b14; 5204 5205 b8 += b1; 5206 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b8; 5207 5208 b0 += b7; 5209 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b0; 5210 5211 b2 += b5; 5212 b5 = ((b5 << 44) | (b5 >> (64 - 44))) ^ b2; 5213 5214 b4 += b3; 5215 b3 = ((b3 << 47) | (b3 >> (64 - 47))) ^ b4; 5216 5217 b6 += b1; 5218 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b6; 5219 5220 b12 += b15; 5221 b15 = ((b15 << 19) | (b15 >> (64 - 19))) ^ b12; 5222 5223 b14 += b13; 5224 b13 = ((b13 << 42) | (b13 >> (64 - 42))) ^ b14; 5225 5226 b8 += b11; 5227 b11 = ((b11 << 44) | (b11 >> (64 - 44))) ^ b8; 5228 5229 b10 += b9; 5230 b9 = ((b9 << 25) | (b9 >> (64 - 25))) ^ b10; 5231 5232 b0 += b15; 5233 b15 = ((b15 << 9) | (b15 >> (64 - 9))) ^ b0; 5234 5235 b2 += b11; 5236 b11 = ((b11 << 48) | (b11 >> (64 - 48))) ^ b2; 5237 5238 b6 += b13; 5239 b13 = ((b13 << 35) | (b13 >> (64 - 35))) ^ b6; 5240 5241 b4 += b9; 5242 b9 = ((b9 << 52) | (b9 >> (64 - 52))) ^ b4; 5243 5244 b14 += b1; 5245 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b14; 5246 5247 b8 += b5; 5248 b5 = ((b5 << 31) | (b5 >> (64 - 31))) ^ b8; 5249 5250 b10 += b3; 5251 b3 = ((b3 << 37) | (b3 >> (64 - 37))) ^ b10; 5252 5253 b12 += b7; 5254 b7 = ((b7 << 20) | (b7 >> (64 - 20))) ^ b12; 5255 5256 b1 += k2; 5257 b0 += b1 + k1; 5258 b1 = ((b1 << 24) | (b1 >> (64 - 24))) ^ b0; 5259 5260 b3 += k4; 5261 b2 += b3 + k3; 5262 b3 = ((b3 << 13) | (b3 >> (64 - 13))) ^ b2; 5263 5264 b5 += k6; 5265 b4 += b5 + k5; 5266 b5 = ((b5 << 8) | (b5 >> (64 - 8))) ^ b4; 5267 5268 b7 += k8; 5269 b6 += b7 + k7; 5270 b7 = ((b7 << 47) | (b7 >> (64 - 47))) ^ b6; 5271 5272 b9 += k10; 5273 b8 += b9 + k9; 5274 b9 = ((b9 << 8) | (b9 >> (64 - 8))) ^ b8; 5275 5276 b11 += k12; 5277 b10 += b11 + k11; 5278 b11 = ((b11 << 17) | (b11 >> (64 - 17))) ^ b10; 5279 5280 b13 += k14 + t0; 5281 b12 += b13 + k13; 5282 b13 = ((b13 << 22) | (b13 >> (64 - 22))) ^ b12; 5283 5284 b15 += k16 + 18; 5285 b14 += b15 + k15 + t1; 5286 b15 = ((b15 << 37) | (b15 >> (64 - 37))) ^ b14; 5287 5288 b0 += b9; 5289 b9 = ((b9 << 38) | (b9 >> (64 - 38))) ^ b0; 5290 5291 b2 += b13; 5292 b13 = ((b13 << 19) | (b13 >> (64 - 19))) ^ b2; 5293 5294 b6 += b11; 5295 b11 = ((b11 << 10) | (b11 >> (64 - 10))) ^ b6; 5296 5297 b4 += b15; 5298 b15 = ((b15 << 55) | (b15 >> (64 - 55))) ^ b4; 5299 5300 b10 += b7; 5301 b7 = ((b7 << 49) | (b7 >> (64 - 49))) ^ b10; 5302 5303 b12 += b3; 5304 b3 = ((b3 << 18) | (b3 >> (64 - 18))) ^ b12; 5305 5306 b14 += b5; 5307 b5 = ((b5 << 23) | (b5 >> (64 - 23))) ^ b14; 5308 5309 b8 += b1; 5310 b1 = ((b1 << 52) | (b1 >> (64 - 52))) ^ b8; 5311 5312 b0 += b7; 5313 b7 = ((b7 << 33) | (b7 >> (64 - 33))) ^ b0; 5314 5315 b2 += b5; 5316 b5 = ((b5 << 4) | (b5 >> (64 - 4))) ^ b2; 5317 5318 b4 += b3; 5319 b3 = ((b3 << 51) | (b3 >> (64 - 51))) ^ b4; 5320 5321 b6 += b1; 5322 b1 = ((b1 << 13) | (b1 >> (64 - 13))) ^ b6; 5323 5324 b12 += b15; 5325 b15 = ((b15 << 34) | (b15 >> (64 - 34))) ^ b12; 5326 5327 b14 += b13; 5328 b13 = ((b13 << 41) | (b13 >> (64 - 41))) ^ b14; 5329 5330 b8 += b11; 5331 b11 = ((b11 << 59) | (b11 >> (64 - 59))) ^ b8; 5332 5333 b10 += b9; 5334 b9 = ((b9 << 17) | (b9 >> (64 - 17))) ^ b10; 5335 5336 b0 += b15; 5337 b15 = ((b15 << 5) | (b15 >> (64 - 5))) ^ b0; 5338 5339 b2 += b11; 5340 b11 = ((b11 << 20) | (b11 >> (64 - 20))) ^ b2; 5341 5342 b6 += b13; 5343 b13 = ((b13 << 48) | (b13 >> (64 - 48))) ^ b6; 5344 5345 b4 += b9; 5346 b9 = ((b9 << 41) | (b9 >> (64 - 41))) ^ b4; 5347 5348 b14 += b1; 5349 b1 = ((b1 << 47) | (b1 >> (64 - 47))) ^ b14; 5350 5351 b8 += b5; 5352 b5 = ((b5 << 28) | (b5 >> (64 - 28))) ^ b8; 5353 5354 b10 += b3; 5355 b3 = ((b3 << 16) | (b3 >> (64 - 16))) ^ b10; 5356 5357 b12 += b7; 5358 b7 = ((b7 << 25) | (b7 >> (64 - 25))) ^ b12; 5359 5360 b1 += k3; 5361 b0 += b1 + k2; 5362 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b0; 5363 5364 b3 += k5; 5365 b2 += b3 + k4; 5366 b3 = ((b3 << 9) | (b3 >> (64 - 9))) ^ b2; 5367 5368 b5 += k7; 5369 b4 += b5 + k6; 5370 b5 = ((b5 << 37) | (b5 >> (64 - 37))) ^ b4; 5371 5372 b7 += k9; 5373 b6 += b7 + k8; 5374 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b6; 5375 5376 b9 += k11; 5377 b8 += b9 + k10; 5378 b9 = ((b9 << 12) | (b9 >> (64 - 12))) ^ b8; 5379 5380 b11 += k13; 5381 b10 += b11 + k12; 5382 b11 = ((b11 << 47) | (b11 >> (64 - 47))) ^ b10; 5383 5384 b13 += k15 + t1; 5385 b12 += b13 + k14; 5386 b13 = ((b13 << 44) | (b13 >> (64 - 44))) ^ b12; 5387 5388 b15 += k0 + 19; 5389 b14 += b15 + k16 + t2; 5390 b15 = ((b15 << 30) | (b15 >> (64 - 30))) ^ b14; 5391 5392 b0 += b9; 5393 b9 = ((b9 << 16) | (b9 >> (64 - 16))) ^ b0; 5394 5395 b2 += b13; 5396 b13 = ((b13 << 34) | (b13 >> (64 - 34))) ^ b2; 5397 5398 b6 += b11; 5399 b11 = ((b11 << 56) | (b11 >> (64 - 56))) ^ b6; 5400 5401 b4 += b15; 5402 b15 = ((b15 << 51) | (b15 >> (64 - 51))) ^ b4; 5403 5404 b10 += b7; 5405 b7 = ((b7 << 4) | (b7 >> (64 - 4))) ^ b10; 5406 5407 b12 += b3; 5408 b3 = ((b3 << 53) | (b3 >> (64 - 53))) ^ b12; 5409 5410 b14 += b5; 5411 b5 = ((b5 << 42) | (b5 >> (64 - 42))) ^ b14; 5412 5413 b8 += b1; 5414 b1 = ((b1 << 41) | (b1 >> (64 - 41))) ^ b8; 5415 5416 b0 += b7; 5417 b7 = ((b7 << 31) | (b7 >> (64 - 31))) ^ b0; 5418 5419 b2 += b5; 5420 b5 = ((b5 << 44) | (b5 >> (64 - 44))) ^ b2; 5421 5422 b4 += b3; 5423 b3 = ((b3 << 47) | (b3 >> (64 - 47))) ^ b4; 5424 5425 b6 += b1; 5426 b1 = ((b1 << 46) | (b1 >> (64 - 46))) ^ b6; 5427 5428 b12 += b15; 5429 b15 = ((b15 << 19) | (b15 >> (64 - 19))) ^ b12; 5430 5431 b14 += b13; 5432 b13 = ((b13 << 42) | (b13 >> (64 - 42))) ^ b14; 5433 5434 b8 += b11; 5435 b11 = ((b11 << 44) | (b11 >> (64 - 44))) ^ b8; 5436 5437 b10 += b9; 5438 b9 = ((b9 << 25) | (b9 >> (64 - 25))) ^ b10; 5439 5440 b0 += b15; 5441 b15 = ((b15 << 9) | (b15 >> (64 - 9))) ^ b0; 5442 5443 b2 += b11; 5444 b11 = ((b11 << 48) | (b11 >> (64 - 48))) ^ b2; 5445 5446 b6 += b13; 5447 b13 = ((b13 << 35) | (b13 >> (64 - 35))) ^ b6; 5448 5449 b4 += b9; 5450 b9 = ((b9 << 52) | (b9 >> (64 - 52))) ^ b4; 5451 5452 b14 += b1; 5453 b1 = ((b1 << 23) | (b1 >> (64 - 23))) ^ b14; 5454 5455 b8 += b5; 5456 b5 = ((b5 << 31) | (b5 >> (64 - 31))) ^ b8; 5457 5458 b10 += b3; 5459 b3 = ((b3 << 37) | (b3 >> (64 - 37))) ^ b10; 5460 5461 b12 += b7; 5462 b7 = ((b7 << 20) | (b7 >> (64 - 20))) ^ b12; 5463 5464 output[0] = b0 + k3; 5465 output[1] = b1 + k4; 5466 output[2] = b2 + k5; 5467 output[3] = b3 + k6; 5468 output[4] = b4 + k7; 5469 output[5] = b5 + k8; 5470 output[6] = b6 + k9; 5471 output[7] = b7 + k10; 5472 output[8] = b8 + k11; 5473 output[9] = b9 + k12; 5474 output[10] = b10 + k13; 5475 output[11] = b11 + k14; 5476 output[12] = b12 + k15; 5477 output[13] = b13 + k16 + t2; 5478 output[14] = b14 + k0 + t0; 5479 output[15] = b15 + k1 + 20; 5480} 5481 5482void threefish_decrypt_1024(struct threefish_key *key_ctx, u64 *input, 5483 u64 *output) 5484{ 5485 u64 b0 = input[0], b1 = input[1], 5486 b2 = input[2], b3 = input[3], 5487 b4 = input[4], b5 = input[5], 5488 b6 = input[6], b7 = input[7], 5489 b8 = input[8], b9 = input[9], 5490 b10 = input[10], b11 = input[11], 5491 b12 = input[12], b13 = input[13], 5492 b14 = input[14], b15 = input[15]; 5493 u64 k0 = key_ctx->key[0], k1 = key_ctx->key[1], 5494 k2 = key_ctx->key[2], k3 = key_ctx->key[3], 5495 k4 = key_ctx->key[4], k5 = key_ctx->key[5], 5496 k6 = key_ctx->key[6], k7 = key_ctx->key[7], 5497 k8 = key_ctx->key[8], k9 = key_ctx->key[9], 5498 k10 = key_ctx->key[10], k11 = key_ctx->key[11], 5499 k12 = key_ctx->key[12], k13 = key_ctx->key[13], 5500 k14 = key_ctx->key[14], k15 = key_ctx->key[15], 5501 k16 = key_ctx->key[16]; 5502 u64 t0 = key_ctx->tweak[0], t1 = key_ctx->tweak[1], 5503 t2 = key_ctx->tweak[2]; 5504 u64 tmp; 5505 5506 b0 -= k3; 5507 b1 -= k4; 5508 b2 -= k5; 5509 b3 -= k6; 5510 b4 -= k7; 5511 b5 -= k8; 5512 b6 -= k9; 5513 b7 -= k10; 5514 b8 -= k11; 5515 b9 -= k12; 5516 b10 -= k13; 5517 b11 -= k14; 5518 b12 -= k15; 5519 b13 -= k16 + t2; 5520 b14 -= k0 + t0; 5521 b15 -= k1 + 20; 5522 tmp = b7 ^ b12; 5523 b7 = (tmp >> 20) | (tmp << (64 - 20)); 5524 b12 -= b7; 5525 5526 tmp = b3 ^ b10; 5527 b3 = (tmp >> 37) | (tmp << (64 - 37)); 5528 b10 -= b3; 5529 5530 tmp = b5 ^ b8; 5531 b5 = (tmp >> 31) | (tmp << (64 - 31)); 5532 b8 -= b5; 5533 5534 tmp = b1 ^ b14; 5535 b1 = (tmp >> 23) | (tmp << (64 - 23)); 5536 b14 -= b1; 5537 5538 tmp = b9 ^ b4; 5539 b9 = (tmp >> 52) | (tmp << (64 - 52)); 5540 b4 -= b9; 5541 5542 tmp = b13 ^ b6; 5543 b13 = (tmp >> 35) | (tmp << (64 - 35)); 5544 b6 -= b13; 5545 5546 tmp = b11 ^ b2; 5547 b11 = (tmp >> 48) | (tmp << (64 - 48)); 5548 b2 -= b11; 5549 5550 tmp = b15 ^ b0; 5551 b15 = (tmp >> 9) | (tmp << (64 - 9)); 5552 b0 -= b15; 5553 5554 tmp = b9 ^ b10; 5555 b9 = (tmp >> 25) | (tmp << (64 - 25)); 5556 b10 -= b9; 5557 5558 tmp = b11 ^ b8; 5559 b11 = (tmp >> 44) | (tmp << (64 - 44)); 5560 b8 -= b11; 5561 5562 tmp = b13 ^ b14; 5563 b13 = (tmp >> 42) | (tmp << (64 - 42)); 5564 b14 -= b13; 5565 5566 tmp = b15 ^ b12; 5567 b15 = (tmp >> 19) | (tmp << (64 - 19)); 5568 b12 -= b15; 5569 5570 tmp = b1 ^ b6; 5571 b1 = (tmp >> 46) | (tmp << (64 - 46)); 5572 b6 -= b1; 5573 5574 tmp = b3 ^ b4; 5575 b3 = (tmp >> 47) | (tmp << (64 - 47)); 5576 b4 -= b3; 5577 5578 tmp = b5 ^ b2; 5579 b5 = (tmp >> 44) | (tmp << (64 - 44)); 5580 b2 -= b5; 5581 5582 tmp = b7 ^ b0; 5583 b7 = (tmp >> 31) | (tmp << (64 - 31)); 5584 b0 -= b7; 5585 5586 tmp = b1 ^ b8; 5587 b1 = (tmp >> 41) | (tmp << (64 - 41)); 5588 b8 -= b1; 5589 5590 tmp = b5 ^ b14; 5591 b5 = (tmp >> 42) | (tmp << (64 - 42)); 5592 b14 -= b5; 5593 5594 tmp = b3 ^ b12; 5595 b3 = (tmp >> 53) | (tmp << (64 - 53)); 5596 b12 -= b3; 5597 5598 tmp = b7 ^ b10; 5599 b7 = (tmp >> 4) | (tmp << (64 - 4)); 5600 b10 -= b7; 5601 5602 tmp = b15 ^ b4; 5603 b15 = (tmp >> 51) | (tmp << (64 - 51)); 5604 b4 -= b15; 5605 5606 tmp = b11 ^ b6; 5607 b11 = (tmp >> 56) | (tmp << (64 - 56)); 5608 b6 -= b11; 5609 5610 tmp = b13 ^ b2; 5611 b13 = (tmp >> 34) | (tmp << (64 - 34)); 5612 b2 -= b13; 5613 5614 tmp = b9 ^ b0; 5615 b9 = (tmp >> 16) | (tmp << (64 - 16)); 5616 b0 -= b9; 5617 5618 tmp = b15 ^ b14; 5619 b15 = (tmp >> 30) | (tmp << (64 - 30)); 5620 b14 -= b15 + k16 + t2; 5621 b15 -= k0 + 19; 5622 5623 tmp = b13 ^ b12; 5624 b13 = (tmp >> 44) | (tmp << (64 - 44)); 5625 b12 -= b13 + k14; 5626 b13 -= k15 + t1; 5627 5628 tmp = b11 ^ b10; 5629 b11 = (tmp >> 47) | (tmp << (64 - 47)); 5630 b10 -= b11 + k12; 5631 b11 -= k13; 5632 5633 tmp = b9 ^ b8; 5634 b9 = (tmp >> 12) | (tmp << (64 - 12)); 5635 b8 -= b9 + k10; 5636 b9 -= k11; 5637 5638 tmp = b7 ^ b6; 5639 b7 = (tmp >> 31) | (tmp << (64 - 31)); 5640 b6 -= b7 + k8; 5641 b7 -= k9; 5642 5643 tmp = b5 ^ b4; 5644 b5 = (tmp >> 37) | (tmp << (64 - 37)); 5645 b4 -= b5 + k6; 5646 b5 -= k7; 5647 5648 tmp = b3 ^ b2; 5649 b3 = (tmp >> 9) | (tmp << (64 - 9)); 5650 b2 -= b3 + k4; 5651 b3 -= k5; 5652 5653 tmp = b1 ^ b0; 5654 b1 = (tmp >> 41) | (tmp << (64 - 41)); 5655 b0 -= b1 + k2; 5656 b1 -= k3; 5657 5658 tmp = b7 ^ b12; 5659 b7 = (tmp >> 25) | (tmp << (64 - 25)); 5660 b12 -= b7; 5661 5662 tmp = b3 ^ b10; 5663 b3 = (tmp >> 16) | (tmp << (64 - 16)); 5664 b10 -= b3; 5665 5666 tmp = b5 ^ b8; 5667 b5 = (tmp >> 28) | (tmp << (64 - 28)); 5668 b8 -= b5; 5669 5670 tmp = b1 ^ b14; 5671 b1 = (tmp >> 47) | (tmp << (64 - 47)); 5672 b14 -= b1; 5673 5674 tmp = b9 ^ b4; 5675 b9 = (tmp >> 41) | (tmp << (64 - 41)); 5676 b4 -= b9; 5677 5678 tmp = b13 ^ b6; 5679 b13 = (tmp >> 48) | (tmp << (64 - 48)); 5680 b6 -= b13; 5681 5682 tmp = b11 ^ b2; 5683 b11 = (tmp >> 20) | (tmp << (64 - 20)); 5684 b2 -= b11; 5685 5686 tmp = b15 ^ b0; 5687 b15 = (tmp >> 5) | (tmp << (64 - 5)); 5688 b0 -= b15; 5689 5690 tmp = b9 ^ b10; 5691 b9 = (tmp >> 17) | (tmp << (64 - 17)); 5692 b10 -= b9; 5693 5694 tmp = b11 ^ b8; 5695 b11 = (tmp >> 59) | (tmp << (64 - 59)); 5696 b8 -= b11; 5697 5698 tmp = b13 ^ b14; 5699 b13 = (tmp >> 41) | (tmp << (64 - 41)); 5700 b14 -= b13; 5701 5702 tmp = b15 ^ b12; 5703 b15 = (tmp >> 34) | (tmp << (64 - 34)); 5704 b12 -= b15; 5705 5706 tmp = b1 ^ b6; 5707 b1 = (tmp >> 13) | (tmp << (64 - 13)); 5708 b6 -= b1; 5709 5710 tmp = b3 ^ b4; 5711 b3 = (tmp >> 51) | (tmp << (64 - 51)); 5712 b4 -= b3; 5713 5714 tmp = b5 ^ b2; 5715 b5 = (tmp >> 4) | (tmp << (64 - 4)); 5716 b2 -= b5; 5717 5718 tmp = b7 ^ b0; 5719 b7 = (tmp >> 33) | (tmp << (64 - 33)); 5720 b0 -= b7; 5721 5722 tmp = b1 ^ b8; 5723 b1 = (tmp >> 52) | (tmp << (64 - 52)); 5724 b8 -= b1; 5725 5726 tmp = b5 ^ b14; 5727 b5 = (tmp >> 23) | (tmp << (64 - 23)); 5728 b14 -= b5; 5729 5730 tmp = b3 ^ b12; 5731 b3 = (tmp >> 18) | (tmp << (64 - 18)); 5732 b12 -= b3; 5733 5734 tmp = b7 ^ b10; 5735 b7 = (tmp >> 49) | (tmp << (64 - 49)); 5736 b10 -= b7; 5737 5738 tmp = b15 ^ b4; 5739 b15 = (tmp >> 55) | (tmp << (64 - 55)); 5740 b4 -= b15; 5741 5742 tmp = b11 ^ b6; 5743 b11 = (tmp >> 10) | (tmp << (64 - 10)); 5744 b6 -= b11; 5745 5746 tmp = b13 ^ b2; 5747 b13 = (tmp >> 19) | (tmp << (64 - 19)); 5748 b2 -= b13; 5749 5750 tmp = b9 ^ b0; 5751 b9 = (tmp >> 38) | (tmp << (64 - 38)); 5752 b0 -= b9; 5753 5754 tmp = b15 ^ b14; 5755 b15 = (tmp >> 37) | (tmp << (64 - 37)); 5756 b14 -= b15 + k15 + t1; 5757 b15 -= k16 + 18; 5758 5759 tmp = b13 ^ b12; 5760 b13 = (tmp >> 22) | (tmp << (64 - 22)); 5761 b12 -= b13 + k13; 5762 b13 -= k14 + t0; 5763 5764 tmp = b11 ^ b10; 5765 b11 = (tmp >> 17) | (tmp << (64 - 17)); 5766 b10 -= b11 + k11; 5767 b11 -= k12; 5768 5769 tmp = b9 ^ b8; 5770 b9 = (tmp >> 8) | (tmp << (64 - 8)); 5771 b8 -= b9 + k9; 5772 b9 -= k10; 5773 5774 tmp = b7 ^ b6; 5775 b7 = (tmp >> 47) | (tmp << (64 - 47)); 5776 b6 -= b7 + k7; 5777 b7 -= k8; 5778 5779 tmp = b5 ^ b4; 5780 b5 = (tmp >> 8) | (tmp << (64 - 8)); 5781 b4 -= b5 + k5; 5782 b5 -= k6; 5783 5784 tmp = b3 ^ b2; 5785 b3 = (tmp >> 13) | (tmp << (64 - 13)); 5786 b2 -= b3 + k3; 5787 b3 -= k4; 5788 5789 tmp = b1 ^ b0; 5790 b1 = (tmp >> 24) | (tmp << (64 - 24)); 5791 b0 -= b1 + k1; 5792 b1 -= k2; 5793 5794 tmp = b7 ^ b12; 5795 b7 = (tmp >> 20) | (tmp << (64 - 20)); 5796 b12 -= b7; 5797 5798 tmp = b3 ^ b10; 5799 b3 = (tmp >> 37) | (tmp << (64 - 37)); 5800 b10 -= b3; 5801 5802 tmp = b5 ^ b8; 5803 b5 = (tmp >> 31) | (tmp << (64 - 31)); 5804 b8 -= b5; 5805 5806 tmp = b1 ^ b14; 5807 b1 = (tmp >> 23) | (tmp << (64 - 23)); 5808 b14 -= b1; 5809 5810 tmp = b9 ^ b4; 5811 b9 = (tmp >> 52) | (tmp << (64 - 52)); 5812 b4 -= b9; 5813 5814 tmp = b13 ^ b6; 5815 b13 = (tmp >> 35) | (tmp << (64 - 35)); 5816 b6 -= b13; 5817 5818 tmp = b11 ^ b2; 5819 b11 = (tmp >> 48) | (tmp << (64 - 48)); 5820 b2 -= b11; 5821 5822 tmp = b15 ^ b0; 5823 b15 = (tmp >> 9) | (tmp << (64 - 9)); 5824 b0 -= b15; 5825 5826 tmp = b9 ^ b10; 5827 b9 = (tmp >> 25) | (tmp << (64 - 25)); 5828 b10 -= b9; 5829 5830 tmp = b11 ^ b8; 5831 b11 = (tmp >> 44) | (tmp << (64 - 44)); 5832 b8 -= b11; 5833 5834 tmp = b13 ^ b14; 5835 b13 = (tmp >> 42) | (tmp << (64 - 42)); 5836 b14 -= b13; 5837 5838 tmp = b15 ^ b12; 5839 b15 = (tmp >> 19) | (tmp << (64 - 19)); 5840 b12 -= b15; 5841 5842 tmp = b1 ^ b6; 5843 b1 = (tmp >> 46) | (tmp << (64 - 46)); 5844 b6 -= b1; 5845 5846 tmp = b3 ^ b4; 5847 b3 = (tmp >> 47) | (tmp << (64 - 47)); 5848 b4 -= b3; 5849 5850 tmp = b5 ^ b2; 5851 b5 = (tmp >> 44) | (tmp << (64 - 44)); 5852 b2 -= b5; 5853 5854 tmp = b7 ^ b0; 5855 b7 = (tmp >> 31) | (tmp << (64 - 31)); 5856 b0 -= b7; 5857 5858 tmp = b1 ^ b8; 5859 b1 = (tmp >> 41) | (tmp << (64 - 41)); 5860 b8 -= b1; 5861 5862 tmp = b5 ^ b14; 5863 b5 = (tmp >> 42) | (tmp << (64 - 42)); 5864 b14 -= b5; 5865 5866 tmp = b3 ^ b12; 5867 b3 = (tmp >> 53) | (tmp << (64 - 53)); 5868 b12 -= b3; 5869 5870 tmp = b7 ^ b10; 5871 b7 = (tmp >> 4) | (tmp << (64 - 4)); 5872 b10 -= b7; 5873 5874 tmp = b15 ^ b4; 5875 b15 = (tmp >> 51) | (tmp << (64 - 51)); 5876 b4 -= b15; 5877 5878 tmp = b11 ^ b6; 5879 b11 = (tmp >> 56) | (tmp << (64 - 56)); 5880 b6 -= b11; 5881 5882 tmp = b13 ^ b2; 5883 b13 = (tmp >> 34) | (tmp << (64 - 34)); 5884 b2 -= b13; 5885 5886 tmp = b9 ^ b0; 5887 b9 = (tmp >> 16) | (tmp << (64 - 16)); 5888 b0 -= b9; 5889 5890 tmp = b15 ^ b14; 5891 b15 = (tmp >> 30) | (tmp << (64 - 30)); 5892 b14 -= b15 + k14 + t0; 5893 b15 -= k15 + 17; 5894 5895 tmp = b13 ^ b12; 5896 b13 = (tmp >> 44) | (tmp << (64 - 44)); 5897 b12 -= b13 + k12; 5898 b13 -= k13 + t2; 5899 5900 tmp = b11 ^ b10; 5901 b11 = (tmp >> 47) | (tmp << (64 - 47)); 5902 b10 -= b11 + k10; 5903 b11 -= k11; 5904 5905 tmp = b9 ^ b8; 5906 b9 = (tmp >> 12) | (tmp << (64 - 12)); 5907 b8 -= b9 + k8; 5908 b9 -= k9; 5909 5910 tmp = b7 ^ b6; 5911 b7 = (tmp >> 31) | (tmp << (64 - 31)); 5912 b6 -= b7 + k6; 5913 b7 -= k7; 5914 5915 tmp = b5 ^ b4; 5916 b5 = (tmp >> 37) | (tmp << (64 - 37)); 5917 b4 -= b5 + k4; 5918 b5 -= k5; 5919 5920 tmp = b3 ^ b2; 5921 b3 = (tmp >> 9) | (tmp << (64 - 9)); 5922 b2 -= b3 + k2; 5923 b3 -= k3; 5924 5925 tmp = b1 ^ b0; 5926 b1 = (tmp >> 41) | (tmp << (64 - 41)); 5927 b0 -= b1 + k0; 5928 b1 -= k1; 5929 5930 tmp = b7 ^ b12; 5931 b7 = (tmp >> 25) | (tmp << (64 - 25)); 5932 b12 -= b7; 5933 5934 tmp = b3 ^ b10; 5935 b3 = (tmp >> 16) | (tmp << (64 - 16)); 5936 b10 -= b3; 5937 5938 tmp = b5 ^ b8; 5939 b5 = (tmp >> 28) | (tmp << (64 - 28)); 5940 b8 -= b5; 5941 5942 tmp = b1 ^ b14; 5943 b1 = (tmp >> 47) | (tmp << (64 - 47)); 5944 b14 -= b1; 5945 5946 tmp = b9 ^ b4; 5947 b9 = (tmp >> 41) | (tmp << (64 - 41)); 5948 b4 -= b9; 5949 5950 tmp = b13 ^ b6; 5951 b13 = (tmp >> 48) | (tmp << (64 - 48)); 5952 b6 -= b13; 5953 5954 tmp = b11 ^ b2; 5955 b11 = (tmp >> 20) | (tmp << (64 - 20)); 5956 b2 -= b11; 5957 5958 tmp = b15 ^ b0; 5959 b15 = (tmp >> 5) | (tmp << (64 - 5)); 5960 b0 -= b15; 5961 5962 tmp = b9 ^ b10; 5963 b9 = (tmp >> 17) | (tmp << (64 - 17)); 5964 b10 -= b9; 5965 5966 tmp = b11 ^ b8; 5967 b11 = (tmp >> 59) | (tmp << (64 - 59)); 5968 b8 -= b11; 5969 5970 tmp = b13 ^ b14; 5971 b13 = (tmp >> 41) | (tmp << (64 - 41)); 5972 b14 -= b13; 5973 5974 tmp = b15 ^ b12; 5975 b15 = (tmp >> 34) | (tmp << (64 - 34)); 5976 b12 -= b15; 5977 5978 tmp = b1 ^ b6; 5979 b1 = (tmp >> 13) | (tmp << (64 - 13)); 5980 b6 -= b1; 5981 5982 tmp = b3 ^ b4; 5983 b3 = (tmp >> 51) | (tmp << (64 - 51)); 5984 b4 -= b3; 5985 5986 tmp = b5 ^ b2; 5987 b5 = (tmp >> 4) | (tmp << (64 - 4)); 5988 b2 -= b5; 5989 5990 tmp = b7 ^ b0; 5991 b7 = (tmp >> 33) | (tmp << (64 - 33)); 5992 b0 -= b7; 5993 5994 tmp = b1 ^ b8; 5995 b1 = (tmp >> 52) | (tmp << (64 - 52)); 5996 b8 -= b1; 5997 5998 tmp = b5 ^ b14; 5999 b5 = (tmp >> 23) | (tmp << (64 - 23)); 6000 b14 -= b5; 6001 6002 tmp = b3 ^ b12; 6003 b3 = (tmp >> 18) | (tmp << (64 - 18)); 6004 b12 -= b3; 6005 6006 tmp = b7 ^ b10; 6007 b7 = (tmp >> 49) | (tmp << (64 - 49)); 6008 b10 -= b7; 6009 6010 tmp = b15 ^ b4; 6011 b15 = (tmp >> 55) | (tmp << (64 - 55)); 6012 b4 -= b15; 6013 6014 tmp = b11 ^ b6; 6015 b11 = (tmp >> 10) | (tmp << (64 - 10)); 6016 b6 -= b11; 6017 6018 tmp = b13 ^ b2; 6019 b13 = (tmp >> 19) | (tmp << (64 - 19)); 6020 b2 -= b13; 6021 6022 tmp = b9 ^ b0; 6023 b9 = (tmp >> 38) | (tmp << (64 - 38)); 6024 b0 -= b9; 6025 6026 tmp = b15 ^ b14; 6027 b15 = (tmp >> 37) | (tmp << (64 - 37)); 6028 b14 -= b15 + k13 + t2; 6029 b15 -= k14 + 16; 6030 6031 tmp = b13 ^ b12; 6032 b13 = (tmp >> 22) | (tmp << (64 - 22)); 6033 b12 -= b13 + k11; 6034 b13 -= k12 + t1; 6035 6036 tmp = b11 ^ b10; 6037 b11 = (tmp >> 17) | (tmp << (64 - 17)); 6038 b10 -= b11 + k9; 6039 b11 -= k10; 6040 6041 tmp = b9 ^ b8; 6042 b9 = (tmp >> 8) | (tmp << (64 - 8)); 6043 b8 -= b9 + k7; 6044 b9 -= k8; 6045 6046 tmp = b7 ^ b6; 6047 b7 = (tmp >> 47) | (tmp << (64 - 47)); 6048 b6 -= b7 + k5; 6049 b7 -= k6; 6050 6051 tmp = b5 ^ b4; 6052 b5 = (tmp >> 8) | (tmp << (64 - 8)); 6053 b4 -= b5 + k3; 6054 b5 -= k4; 6055 6056 tmp = b3 ^ b2; 6057 b3 = (tmp >> 13) | (tmp << (64 - 13)); 6058 b2 -= b3 + k1; 6059 b3 -= k2; 6060 6061 tmp = b1 ^ b0; 6062 b1 = (tmp >> 24) | (tmp << (64 - 24)); 6063 b0 -= b1 + k16; 6064 b1 -= k0; 6065 6066 tmp = b7 ^ b12; 6067 b7 = (tmp >> 20) | (tmp << (64 - 20)); 6068 b12 -= b7; 6069 6070 tmp = b3 ^ b10; 6071 b3 = (tmp >> 37) | (tmp << (64 - 37)); 6072 b10 -= b3; 6073 6074 tmp = b5 ^ b8; 6075 b5 = (tmp >> 31) | (tmp << (64 - 31)); 6076 b8 -= b5; 6077 6078 tmp = b1 ^ b14; 6079 b1 = (tmp >> 23) | (tmp << (64 - 23)); 6080 b14 -= b1; 6081 6082 tmp = b9 ^ b4; 6083 b9 = (tmp >> 52) | (tmp << (64 - 52)); 6084 b4 -= b9; 6085 6086 tmp = b13 ^ b6; 6087 b13 = (tmp >> 35) | (tmp << (64 - 35)); 6088 b6 -= b13; 6089 6090 tmp = b11 ^ b2; 6091 b11 = (tmp >> 48) | (tmp << (64 - 48)); 6092 b2 -= b11; 6093 6094 tmp = b15 ^ b0; 6095 b15 = (tmp >> 9) | (tmp << (64 - 9)); 6096 b0 -= b15; 6097 6098 tmp = b9 ^ b10; 6099 b9 = (tmp >> 25) | (tmp << (64 - 25)); 6100 b10 -= b9; 6101 6102 tmp = b11 ^ b8; 6103 b11 = (tmp >> 44) | (tmp << (64 - 44)); 6104 b8 -= b11; 6105 6106 tmp = b13 ^ b14; 6107 b13 = (tmp >> 42) | (tmp << (64 - 42)); 6108 b14 -= b13; 6109 6110 tmp = b15 ^ b12; 6111 b15 = (tmp >> 19) | (tmp << (64 - 19)); 6112 b12 -= b15; 6113 6114 tmp = b1 ^ b6; 6115 b1 = (tmp >> 46) | (tmp << (64 - 46)); 6116 b6 -= b1; 6117 6118 tmp = b3 ^ b4; 6119 b3 = (tmp >> 47) | (tmp << (64 - 47)); 6120 b4 -= b3; 6121 6122 tmp = b5 ^ b2; 6123 b5 = (tmp >> 44) | (tmp << (64 - 44)); 6124 b2 -= b5; 6125 6126 tmp = b7 ^ b0; 6127 b7 = (tmp >> 31) | (tmp << (64 - 31)); 6128 b0 -= b7; 6129 6130 tmp = b1 ^ b8; 6131 b1 = (tmp >> 41) | (tmp << (64 - 41)); 6132 b8 -= b1; 6133 6134 tmp = b5 ^ b14; 6135 b5 = (tmp >> 42) | (tmp << (64 - 42)); 6136 b14 -= b5; 6137 6138 tmp = b3 ^ b12; 6139 b3 = (tmp >> 53) | (tmp << (64 - 53)); 6140 b12 -= b3; 6141 6142 tmp = b7 ^ b10; 6143 b7 = (tmp >> 4) | (tmp << (64 - 4)); 6144 b10 -= b7; 6145 6146 tmp = b15 ^ b4; 6147 b15 = (tmp >> 51) | (tmp << (64 - 51)); 6148 b4 -= b15; 6149 6150 tmp = b11 ^ b6; 6151 b11 = (tmp >> 56) | (tmp << (64 - 56)); 6152 b6 -= b11; 6153 6154 tmp = b13 ^ b2; 6155 b13 = (tmp >> 34) | (tmp << (64 - 34)); 6156 b2 -= b13; 6157 6158 tmp = b9 ^ b0; 6159 b9 = (tmp >> 16) | (tmp << (64 - 16)); 6160 b0 -= b9; 6161 6162 tmp = b15 ^ b14; 6163 b15 = (tmp >> 30) | (tmp << (64 - 30)); 6164 b14 -= b15 + k12 + t1; 6165 b15 -= k13 + 15; 6166 6167 tmp = b13 ^ b12; 6168 b13 = (tmp >> 44) | (tmp << (64 - 44)); 6169 b12 -= b13 + k10; 6170 b13 -= k11 + t0; 6171 6172 tmp = b11 ^ b10; 6173 b11 = (tmp >> 47) | (tmp << (64 - 47)); 6174 b10 -= b11 + k8; 6175 b11 -= k9; 6176 6177 tmp = b9 ^ b8; 6178 b9 = (tmp >> 12) | (tmp << (64 - 12)); 6179 b8 -= b9 + k6; 6180 b9 -= k7; 6181 6182 tmp = b7 ^ b6; 6183 b7 = (tmp >> 31) | (tmp << (64 - 31)); 6184 b6 -= b7 + k4; 6185 b7 -= k5; 6186 6187 tmp = b5 ^ b4; 6188 b5 = (tmp >> 37) | (tmp << (64 - 37)); 6189 b4 -= b5 + k2; 6190 b5 -= k3; 6191 6192 tmp = b3 ^ b2; 6193 b3 = (tmp >> 9) | (tmp << (64 - 9)); 6194 b2 -= b3 + k0; 6195 b3 -= k1; 6196 6197 tmp = b1 ^ b0; 6198 b1 = (tmp >> 41) | (tmp << (64 - 41)); 6199 b0 -= b1 + k15; 6200 b1 -= k16; 6201 6202 tmp = b7 ^ b12; 6203 b7 = (tmp >> 25) | (tmp << (64 - 25)); 6204 b12 -= b7; 6205 6206 tmp = b3 ^ b10; 6207 b3 = (tmp >> 16) | (tmp << (64 - 16)); 6208 b10 -= b3; 6209 6210 tmp = b5 ^ b8; 6211 b5 = (tmp >> 28) | (tmp << (64 - 28)); 6212 b8 -= b5; 6213 6214 tmp = b1 ^ b14; 6215 b1 = (tmp >> 47) | (tmp << (64 - 47)); 6216 b14 -= b1; 6217 6218 tmp = b9 ^ b4; 6219 b9 = (tmp >> 41) | (tmp << (64 - 41)); 6220 b4 -= b9; 6221 6222 tmp = b13 ^ b6; 6223 b13 = (tmp >> 48) | (tmp << (64 - 48)); 6224 b6 -= b13; 6225 6226 tmp = b11 ^ b2; 6227 b11 = (tmp >> 20) | (tmp << (64 - 20)); 6228 b2 -= b11; 6229 6230 tmp = b15 ^ b0; 6231 b15 = (tmp >> 5) | (tmp << (64 - 5)); 6232 b0 -= b15; 6233 6234 tmp = b9 ^ b10; 6235 b9 = (tmp >> 17) | (tmp << (64 - 17)); 6236 b10 -= b9; 6237 6238 tmp = b11 ^ b8; 6239 b11 = (tmp >> 59) | (tmp << (64 - 59)); 6240 b8 -= b11; 6241 6242 tmp = b13 ^ b14; 6243 b13 = (tmp >> 41) | (tmp << (64 - 41)); 6244 b14 -= b13; 6245 6246 tmp = b15 ^ b12; 6247 b15 = (tmp >> 34) | (tmp << (64 - 34)); 6248 b12 -= b15; 6249 6250 tmp = b1 ^ b6; 6251 b1 = (tmp >> 13) | (tmp << (64 - 13)); 6252 b6 -= b1; 6253 6254 tmp = b3 ^ b4; 6255 b3 = (tmp >> 51) | (tmp << (64 - 51)); 6256 b4 -= b3; 6257 6258 tmp = b5 ^ b2; 6259 b5 = (tmp >> 4) | (tmp << (64 - 4)); 6260 b2 -= b5; 6261 6262 tmp = b7 ^ b0; 6263 b7 = (tmp >> 33) | (tmp << (64 - 33)); 6264 b0 -= b7; 6265 6266 tmp = b1 ^ b8; 6267 b1 = (tmp >> 52) | (tmp << (64 - 52)); 6268 b8 -= b1; 6269 6270 tmp = b5 ^ b14; 6271 b5 = (tmp >> 23) | (tmp << (64 - 23)); 6272 b14 -= b5; 6273 6274 tmp = b3 ^ b12; 6275 b3 = (tmp >> 18) | (tmp << (64 - 18)); 6276 b12 -= b3; 6277 6278 tmp = b7 ^ b10; 6279 b7 = (tmp >> 49) | (tmp << (64 - 49)); 6280 b10 -= b7; 6281 6282 tmp = b15 ^ b4; 6283 b15 = (tmp >> 55) | (tmp << (64 - 55)); 6284 b4 -= b15; 6285 6286 tmp = b11 ^ b6; 6287 b11 = (tmp >> 10) | (tmp << (64 - 10)); 6288 b6 -= b11; 6289 6290 tmp = b13 ^ b2; 6291 b13 = (tmp >> 19) | (tmp << (64 - 19)); 6292 b2 -= b13; 6293 6294 tmp = b9 ^ b0; 6295 b9 = (tmp >> 38) | (tmp << (64 - 38)); 6296 b0 -= b9; 6297 6298 tmp = b15 ^ b14; 6299 b15 = (tmp >> 37) | (tmp << (64 - 37)); 6300 b14 -= b15 + k11 + t0; 6301 b15 -= k12 + 14; 6302 6303 tmp = b13 ^ b12; 6304 b13 = (tmp >> 22) | (tmp << (64 - 22)); 6305 b12 -= b13 + k9; 6306 b13 -= k10 + t2; 6307 6308 tmp = b11 ^ b10; 6309 b11 = (tmp >> 17) | (tmp << (64 - 17)); 6310 b10 -= b11 + k7; 6311 b11 -= k8; 6312 6313 tmp = b9 ^ b8; 6314 b9 = (tmp >> 8) | (tmp << (64 - 8)); 6315 b8 -= b9 + k5; 6316 b9 -= k6; 6317 6318 tmp = b7 ^ b6; 6319 b7 = (tmp >> 47) | (tmp << (64 - 47)); 6320 b6 -= b7 + k3; 6321 b7 -= k4; 6322 6323 tmp = b5 ^ b4; 6324 b5 = (tmp >> 8) | (tmp << (64 - 8)); 6325 b4 -= b5 + k1; 6326 b5 -= k2; 6327 6328 tmp = b3 ^ b2; 6329 b3 = (tmp >> 13) | (tmp << (64 - 13)); 6330 b2 -= b3 + k16; 6331 b3 -= k0; 6332 6333 tmp = b1 ^ b0; 6334 b1 = (tmp >> 24) | (tmp << (64 - 24)); 6335 b0 -= b1 + k14; 6336 b1 -= k15; 6337 6338 tmp = b7 ^ b12; 6339 b7 = (tmp >> 20) | (tmp << (64 - 20)); 6340 b12 -= b7; 6341 6342 tmp = b3 ^ b10; 6343 b3 = (tmp >> 37) | (tmp << (64 - 37)); 6344 b10 -= b3; 6345 6346 tmp = b5 ^ b8; 6347 b5 = (tmp >> 31) | (tmp << (64 - 31)); 6348 b8 -= b5; 6349 6350 tmp = b1 ^ b14; 6351 b1 = (tmp >> 23) | (tmp << (64 - 23)); 6352 b14 -= b1; 6353 6354 tmp = b9 ^ b4; 6355 b9 = (tmp >> 52) | (tmp << (64 - 52)); 6356 b4 -= b9; 6357 6358 tmp = b13 ^ b6; 6359 b13 = (tmp >> 35) | (tmp << (64 - 35)); 6360 b6 -= b13; 6361 6362 tmp = b11 ^ b2; 6363 b11 = (tmp >> 48) | (tmp << (64 - 48)); 6364 b2 -= b11; 6365 6366 tmp = b15 ^ b0; 6367 b15 = (tmp >> 9) | (tmp << (64 - 9)); 6368 b0 -= b15; 6369 6370 tmp = b9 ^ b10; 6371 b9 = (tmp >> 25) | (tmp << (64 - 25)); 6372 b10 -= b9; 6373 6374 tmp = b11 ^ b8; 6375 b11 = (tmp >> 44) | (tmp << (64 - 44)); 6376 b8 -= b11; 6377 6378 tmp = b13 ^ b14; 6379 b13 = (tmp >> 42) | (tmp << (64 - 42)); 6380 b14 -= b13; 6381 6382 tmp = b15 ^ b12; 6383 b15 = (tmp >> 19) | (tmp << (64 - 19)); 6384 b12 -= b15; 6385 6386 tmp = b1 ^ b6; 6387 b1 = (tmp >> 46) | (tmp << (64 - 46)); 6388 b6 -= b1; 6389 6390 tmp = b3 ^ b4; 6391 b3 = (tmp >> 47) | (tmp << (64 - 47)); 6392 b4 -= b3; 6393 6394 tmp = b5 ^ b2; 6395 b5 = (tmp >> 44) | (tmp << (64 - 44)); 6396 b2 -= b5; 6397 6398 tmp = b7 ^ b0; 6399 b7 = (tmp >> 31) | (tmp << (64 - 31)); 6400 b0 -= b7; 6401 6402 tmp = b1 ^ b8; 6403 b1 = (tmp >> 41) | (tmp << (64 - 41)); 6404 b8 -= b1; 6405 6406 tmp = b5 ^ b14; 6407 b5 = (tmp >> 42) | (tmp << (64 - 42)); 6408 b14 -= b5; 6409 6410 tmp = b3 ^ b12; 6411 b3 = (tmp >> 53) | (tmp << (64 - 53)); 6412 b12 -= b3; 6413 6414 tmp = b7 ^ b10; 6415 b7 = (tmp >> 4) | (tmp << (64 - 4)); 6416 b10 -= b7; 6417 6418 tmp = b15 ^ b4; 6419 b15 = (tmp >> 51) | (tmp << (64 - 51)); 6420 b4 -= b15; 6421 6422 tmp = b11 ^ b6; 6423 b11 = (tmp >> 56) | (tmp << (64 - 56)); 6424 b6 -= b11; 6425 6426 tmp = b13 ^ b2; 6427 b13 = (tmp >> 34) | (tmp << (64 - 34)); 6428 b2 -= b13; 6429 6430 tmp = b9 ^ b0; 6431 b9 = (tmp >> 16) | (tmp << (64 - 16)); 6432 b0 -= b9; 6433 6434 tmp = b15 ^ b14; 6435 b15 = (tmp >> 30) | (tmp << (64 - 30)); 6436 b14 -= b15 + k10 + t2; 6437 b15 -= k11 + 13; 6438 6439 tmp = b13 ^ b12; 6440 b13 = (tmp >> 44) | (tmp << (64 - 44)); 6441 b12 -= b13 + k8; 6442 b13 -= k9 + t1; 6443 6444 tmp = b11 ^ b10; 6445 b11 = (tmp >> 47) | (tmp << (64 - 47)); 6446 b10 -= b11 + k6; 6447 b11 -= k7; 6448 6449 tmp = b9 ^ b8; 6450 b9 = (tmp >> 12) | (tmp << (64 - 12)); 6451 b8 -= b9 + k4; 6452 b9 -= k5; 6453 6454 tmp = b7 ^ b6; 6455 b7 = (tmp >> 31) | (tmp << (64 - 31)); 6456 b6 -= b7 + k2; 6457 b7 -= k3; 6458 6459 tmp = b5 ^ b4; 6460 b5 = (tmp >> 37) | (tmp << (64 - 37)); 6461 b4 -= b5 + k0; 6462 b5 -= k1; 6463 6464 tmp = b3 ^ b2; 6465 b3 = (tmp >> 9) | (tmp << (64 - 9)); 6466 b2 -= b3 + k15; 6467 b3 -= k16; 6468 6469 tmp = b1 ^ b0; 6470 b1 = (tmp >> 41) | (tmp << (64 - 41)); 6471 b0 -= b1 + k13; 6472 b1 -= k14; 6473 6474 tmp = b7 ^ b12; 6475 b7 = (tmp >> 25) | (tmp << (64 - 25)); 6476 b12 -= b7; 6477 6478 tmp = b3 ^ b10; 6479 b3 = (tmp >> 16) | (tmp << (64 - 16)); 6480 b10 -= b3; 6481 6482 tmp = b5 ^ b8; 6483 b5 = (tmp >> 28) | (tmp << (64 - 28)); 6484 b8 -= b5; 6485 6486 tmp = b1 ^ b14; 6487 b1 = (tmp >> 47) | (tmp << (64 - 47)); 6488 b14 -= b1; 6489 6490 tmp = b9 ^ b4; 6491 b9 = (tmp >> 41) | (tmp << (64 - 41)); 6492 b4 -= b9; 6493 6494 tmp = b13 ^ b6; 6495 b13 = (tmp >> 48) | (tmp << (64 - 48)); 6496 b6 -= b13; 6497 6498 tmp = b11 ^ b2; 6499 b11 = (tmp >> 20) | (tmp << (64 - 20)); 6500 b2 -= b11; 6501 6502 tmp = b15 ^ b0; 6503 b15 = (tmp >> 5) | (tmp << (64 - 5)); 6504 b0 -= b15; 6505 6506 tmp = b9 ^ b10; 6507 b9 = (tmp >> 17) | (tmp << (64 - 17)); 6508 b10 -= b9; 6509 6510 tmp = b11 ^ b8; 6511 b11 = (tmp >> 59) | (tmp << (64 - 59)); 6512 b8 -= b11; 6513 6514 tmp = b13 ^ b14; 6515 b13 = (tmp >> 41) | (tmp << (64 - 41)); 6516 b14 -= b13; 6517 6518 tmp = b15 ^ b12; 6519 b15 = (tmp >> 34) | (tmp << (64 - 34)); 6520 b12 -= b15; 6521 6522 tmp = b1 ^ b6; 6523 b1 = (tmp >> 13) | (tmp << (64 - 13)); 6524 b6 -= b1; 6525 6526 tmp = b3 ^ b4; 6527 b3 = (tmp >> 51) | (tmp << (64 - 51)); 6528 b4 -= b3; 6529 6530 tmp = b5 ^ b2; 6531 b5 = (tmp >> 4) | (tmp << (64 - 4)); 6532 b2 -= b5; 6533 6534 tmp = b7 ^ b0; 6535 b7 = (tmp >> 33) | (tmp << (64 - 33)); 6536 b0 -= b7; 6537 6538 tmp = b1 ^ b8; 6539 b1 = (tmp >> 52) | (tmp << (64 - 52)); 6540 b8 -= b1; 6541 6542 tmp = b5 ^ b14; 6543 b5 = (tmp >> 23) | (tmp << (64 - 23)); 6544 b14 -= b5; 6545 6546 tmp = b3 ^ b12; 6547 b3 = (tmp >> 18) | (tmp << (64 - 18)); 6548 b12 -= b3; 6549 6550 tmp = b7 ^ b10; 6551 b7 = (tmp >> 49) | (tmp << (64 - 49)); 6552 b10 -= b7; 6553 6554 tmp = b15 ^ b4; 6555 b15 = (tmp >> 55) | (tmp << (64 - 55)); 6556 b4 -= b15; 6557 6558 tmp = b11 ^ b6; 6559 b11 = (tmp >> 10) | (tmp << (64 - 10)); 6560 b6 -= b11; 6561 6562 tmp = b13 ^ b2; 6563 b13 = (tmp >> 19) | (tmp << (64 - 19)); 6564 b2 -= b13; 6565 6566 tmp = b9 ^ b0; 6567 b9 = (tmp >> 38) | (tmp << (64 - 38)); 6568 b0 -= b9; 6569 6570 tmp = b15 ^ b14; 6571 b15 = (tmp >> 37) | (tmp << (64 - 37)); 6572 b14 -= b15 + k9 + t1; 6573 b15 -= k10 + 12; 6574 6575 tmp = b13 ^ b12; 6576 b13 = (tmp >> 22) | (tmp << (64 - 22)); 6577 b12 -= b13 + k7; 6578 b13 -= k8 + t0; 6579 6580 tmp = b11 ^ b10; 6581 b11 = (tmp >> 17) | (tmp << (64 - 17)); 6582 b10 -= b11 + k5; 6583 b11 -= k6; 6584 6585 tmp = b9 ^ b8; 6586 b9 = (tmp >> 8) | (tmp << (64 - 8)); 6587 b8 -= b9 + k3; 6588 b9 -= k4; 6589 6590 tmp = b7 ^ b6; 6591 b7 = (tmp >> 47) | (tmp << (64 - 47)); 6592 b6 -= b7 + k1; 6593 b7 -= k2; 6594 6595 tmp = b5 ^ b4; 6596 b5 = (tmp >> 8) | (tmp << (64 - 8)); 6597 b4 -= b5 + k16; 6598 b5 -= k0; 6599 6600 tmp = b3 ^ b2; 6601 b3 = (tmp >> 13) | (tmp << (64 - 13)); 6602 b2 -= b3 + k14; 6603 b3 -= k15; 6604 6605 tmp = b1 ^ b0; 6606 b1 = (tmp >> 24) | (tmp << (64 - 24)); 6607 b0 -= b1 + k12; 6608 b1 -= k13; 6609 6610 tmp = b7 ^ b12; 6611 b7 = (tmp >> 20) | (tmp << (64 - 20)); 6612 b12 -= b7; 6613 6614 tmp = b3 ^ b10; 6615 b3 = (tmp >> 37) | (tmp << (64 - 37)); 6616 b10 -= b3; 6617 6618 tmp = b5 ^ b8; 6619 b5 = (tmp >> 31) | (tmp << (64 - 31)); 6620 b8 -= b5; 6621 6622 tmp = b1 ^ b14; 6623 b1 = (tmp >> 23) | (tmp << (64 - 23)); 6624 b14 -= b1; 6625 6626 tmp = b9 ^ b4; 6627 b9 = (tmp >> 52) | (tmp << (64 - 52)); 6628 b4 -= b9; 6629 6630 tmp = b13 ^ b6; 6631 b13 = (tmp >> 35) | (tmp << (64 - 35)); 6632 b6 -= b13; 6633 6634 tmp = b11 ^ b2; 6635 b11 = (tmp >> 48) | (tmp << (64 - 48)); 6636 b2 -= b11; 6637 6638 tmp = b15 ^ b0; 6639 b15 = (tmp >> 9) | (tmp << (64 - 9)); 6640 b0 -= b15; 6641 6642 tmp = b9 ^ b10; 6643 b9 = (tmp >> 25) | (tmp << (64 - 25)); 6644 b10 -= b9; 6645 6646 tmp = b11 ^ b8; 6647 b11 = (tmp >> 44) | (tmp << (64 - 44)); 6648 b8 -= b11; 6649 6650 tmp = b13 ^ b14; 6651 b13 = (tmp >> 42) | (tmp << (64 - 42)); 6652 b14 -= b13; 6653 6654 tmp = b15 ^ b12; 6655 b15 = (tmp >> 19) | (tmp << (64 - 19)); 6656 b12 -= b15; 6657 6658 tmp = b1 ^ b6; 6659 b1 = (tmp >> 46) | (tmp << (64 - 46)); 6660 b6 -= b1; 6661 6662 tmp = b3 ^ b4; 6663 b3 = (tmp >> 47) | (tmp << (64 - 47)); 6664 b4 -= b3; 6665 6666 tmp = b5 ^ b2; 6667 b5 = (tmp >> 44) | (tmp << (64 - 44)); 6668 b2 -= b5; 6669 6670 tmp = b7 ^ b0; 6671 b7 = (tmp >> 31) | (tmp << (64 - 31)); 6672 b0 -= b7; 6673 6674 tmp = b1 ^ b8; 6675 b1 = (tmp >> 41) | (tmp << (64 - 41)); 6676 b8 -= b1; 6677 6678 tmp = b5 ^ b14; 6679 b5 = (tmp >> 42) | (tmp << (64 - 42)); 6680 b14 -= b5; 6681 6682 tmp = b3 ^ b12; 6683 b3 = (tmp >> 53) | (tmp << (64 - 53)); 6684 b12 -= b3; 6685 6686 tmp = b7 ^ b10; 6687 b7 = (tmp >> 4) | (tmp << (64 - 4)); 6688 b10 -= b7; 6689 6690 tmp = b15 ^ b4; 6691 b15 = (tmp >> 51) | (tmp << (64 - 51)); 6692 b4 -= b15; 6693 6694 tmp = b11 ^ b6; 6695 b11 = (tmp >> 56) | (tmp << (64 - 56)); 6696 b6 -= b11; 6697 6698 tmp = b13 ^ b2; 6699 b13 = (tmp >> 34) | (tmp << (64 - 34)); 6700 b2 -= b13; 6701 6702 tmp = b9 ^ b0; 6703 b9 = (tmp >> 16) | (tmp << (64 - 16)); 6704 b0 -= b9; 6705 6706 tmp = b15 ^ b14; 6707 b15 = (tmp >> 30) | (tmp << (64 - 30)); 6708 b14 -= b15 + k8 + t0; 6709 b15 -= k9 + 11; 6710 6711 tmp = b13 ^ b12; 6712 b13 = (tmp >> 44) | (tmp << (64 - 44)); 6713 b12 -= b13 + k6; 6714 b13 -= k7 + t2; 6715 6716 tmp = b11 ^ b10; 6717 b11 = (tmp >> 47) | (tmp << (64 - 47)); 6718 b10 -= b11 + k4; 6719 b11 -= k5; 6720 6721 tmp = b9 ^ b8; 6722 b9 = (tmp >> 12) | (tmp << (64 - 12)); 6723 b8 -= b9 + k2; 6724 b9 -= k3; 6725 6726 tmp = b7 ^ b6; 6727 b7 = (tmp >> 31) | (tmp << (64 - 31)); 6728 b6 -= b7 + k0; 6729 b7 -= k1; 6730 6731 tmp = b5 ^ b4; 6732 b5 = (tmp >> 37) | (tmp << (64 - 37)); 6733 b4 -= b5 + k15; 6734 b5 -= k16; 6735 6736 tmp = b3 ^ b2; 6737 b3 = (tmp >> 9) | (tmp << (64 - 9)); 6738 b2 -= b3 + k13; 6739 b3 -= k14; 6740 6741 tmp = b1 ^ b0; 6742 b1 = (tmp >> 41) | (tmp << (64 - 41)); 6743 b0 -= b1 + k11; 6744 b1 -= k12; 6745 6746 tmp = b7 ^ b12; 6747 b7 = (tmp >> 25) | (tmp << (64 - 25)); 6748 b12 -= b7; 6749 6750 tmp = b3 ^ b10; 6751 b3 = (tmp >> 16) | (tmp << (64 - 16)); 6752 b10 -= b3; 6753 6754 tmp = b5 ^ b8; 6755 b5 = (tmp >> 28) | (tmp << (64 - 28)); 6756 b8 -= b5; 6757 6758 tmp = b1 ^ b14; 6759 b1 = (tmp >> 47) | (tmp << (64 - 47)); 6760 b14 -= b1; 6761 6762 tmp = b9 ^ b4; 6763 b9 = (tmp >> 41) | (tmp << (64 - 41)); 6764 b4 -= b9; 6765 6766 tmp = b13 ^ b6; 6767 b13 = (tmp >> 48) | (tmp << (64 - 48)); 6768 b6 -= b13; 6769 6770 tmp = b11 ^ b2; 6771 b11 = (tmp >> 20) | (tmp << (64 - 20)); 6772 b2 -= b11; 6773 6774 tmp = b15 ^ b0; 6775 b15 = (tmp >> 5) | (tmp << (64 - 5)); 6776 b0 -= b15; 6777 6778 tmp = b9 ^ b10; 6779 b9 = (tmp >> 17) | (tmp << (64 - 17)); 6780 b10 -= b9; 6781 6782 tmp = b11 ^ b8; 6783 b11 = (tmp >> 59) | (tmp << (64 - 59)); 6784 b8 -= b11; 6785 6786 tmp = b13 ^ b14; 6787 b13 = (tmp >> 41) | (tmp << (64 - 41)); 6788 b14 -= b13; 6789 6790 tmp = b15 ^ b12; 6791 b15 = (tmp >> 34) | (tmp << (64 - 34)); 6792 b12 -= b15; 6793 6794 tmp = b1 ^ b6; 6795 b1 = (tmp >> 13) | (tmp << (64 - 13)); 6796 b6 -= b1; 6797 6798 tmp = b3 ^ b4; 6799 b3 = (tmp >> 51) | (tmp << (64 - 51)); 6800 b4 -= b3; 6801 6802 tmp = b5 ^ b2; 6803 b5 = (tmp >> 4) | (tmp << (64 - 4)); 6804 b2 -= b5; 6805 6806 tmp = b7 ^ b0; 6807 b7 = (tmp >> 33) | (tmp << (64 - 33)); 6808 b0 -= b7; 6809 6810 tmp = b1 ^ b8; 6811 b1 = (tmp >> 52) | (tmp << (64 - 52)); 6812 b8 -= b1; 6813 6814 tmp = b5 ^ b14; 6815 b5 = (tmp >> 23) | (tmp << (64 - 23)); 6816 b14 -= b5; 6817 6818 tmp = b3 ^ b12; 6819 b3 = (tmp >> 18) | (tmp << (64 - 18)); 6820 b12 -= b3; 6821 6822 tmp = b7 ^ b10; 6823 b7 = (tmp >> 49) | (tmp << (64 - 49)); 6824 b10 -= b7; 6825 6826 tmp = b15 ^ b4; 6827 b15 = (tmp >> 55) | (tmp << (64 - 55)); 6828 b4 -= b15; 6829 6830 tmp = b11 ^ b6; 6831 b11 = (tmp >> 10) | (tmp << (64 - 10)); 6832 b6 -= b11; 6833 6834 tmp = b13 ^ b2; 6835 b13 = (tmp >> 19) | (tmp << (64 - 19)); 6836 b2 -= b13; 6837 6838 tmp = b9 ^ b0; 6839 b9 = (tmp >> 38) | (tmp << (64 - 38)); 6840 b0 -= b9; 6841 6842 tmp = b15 ^ b14; 6843 b15 = (tmp >> 37) | (tmp << (64 - 37)); 6844 b14 -= b15 + k7 + t2; 6845 b15 -= k8 + 10; 6846 6847 tmp = b13 ^ b12; 6848 b13 = (tmp >> 22) | (tmp << (64 - 22)); 6849 b12 -= b13 + k5; 6850 b13 -= k6 + t1; 6851 6852 tmp = b11 ^ b10; 6853 b11 = (tmp >> 17) | (tmp << (64 - 17)); 6854 b10 -= b11 + k3; 6855 b11 -= k4; 6856 6857 tmp = b9 ^ b8; 6858 b9 = (tmp >> 8) | (tmp << (64 - 8)); 6859 b8 -= b9 + k1; 6860 b9 -= k2; 6861 6862 tmp = b7 ^ b6; 6863 b7 = (tmp >> 47) | (tmp << (64 - 47)); 6864 b6 -= b7 + k16; 6865 b7 -= k0; 6866 6867 tmp = b5 ^ b4; 6868 b5 = (tmp >> 8) | (tmp << (64 - 8)); 6869 b4 -= b5 + k14; 6870 b5 -= k15; 6871 6872 tmp = b3 ^ b2; 6873 b3 = (tmp >> 13) | (tmp << (64 - 13)); 6874 b2 -= b3 + k12; 6875 b3 -= k13; 6876 6877 tmp = b1 ^ b0; 6878 b1 = (tmp >> 24) | (tmp << (64 - 24)); 6879 b0 -= b1 + k10; 6880 b1 -= k11; 6881 6882 tmp = b7 ^ b12; 6883 b7 = (tmp >> 20) | (tmp << (64 - 20)); 6884 b12 -= b7; 6885 6886 tmp = b3 ^ b10; 6887 b3 = (tmp >> 37) | (tmp << (64 - 37)); 6888 b10 -= b3; 6889 6890 tmp = b5 ^ b8; 6891 b5 = (tmp >> 31) | (tmp << (64 - 31)); 6892 b8 -= b5; 6893 6894 tmp = b1 ^ b14; 6895 b1 = (tmp >> 23) | (tmp << (64 - 23)); 6896 b14 -= b1; 6897 6898 tmp = b9 ^ b4; 6899 b9 = (tmp >> 52) | (tmp << (64 - 52)); 6900 b4 -= b9; 6901 6902 tmp = b13 ^ b6; 6903 b13 = (tmp >> 35) | (tmp << (64 - 35)); 6904 b6 -= b13; 6905 6906 tmp = b11 ^ b2; 6907 b11 = (tmp >> 48) | (tmp << (64 - 48)); 6908 b2 -= b11; 6909 6910 tmp = b15 ^ b0; 6911 b15 = (tmp >> 9) | (tmp << (64 - 9)); 6912 b0 -= b15; 6913 6914 tmp = b9 ^ b10; 6915 b9 = (tmp >> 25) | (tmp << (64 - 25)); 6916 b10 -= b9; 6917 6918 tmp = b11 ^ b8; 6919 b11 = (tmp >> 44) | (tmp << (64 - 44)); 6920 b8 -= b11; 6921 6922 tmp = b13 ^ b14; 6923 b13 = (tmp >> 42) | (tmp << (64 - 42)); 6924 b14 -= b13; 6925 6926 tmp = b15 ^ b12; 6927 b15 = (tmp >> 19) | (tmp << (64 - 19)); 6928 b12 -= b15; 6929 6930 tmp = b1 ^ b6; 6931 b1 = (tmp >> 46) | (tmp << (64 - 46)); 6932 b6 -= b1; 6933 6934 tmp = b3 ^ b4; 6935 b3 = (tmp >> 47) | (tmp << (64 - 47)); 6936 b4 -= b3; 6937 6938 tmp = b5 ^ b2; 6939 b5 = (tmp >> 44) | (tmp << (64 - 44)); 6940 b2 -= b5; 6941 6942 tmp = b7 ^ b0; 6943 b7 = (tmp >> 31) | (tmp << (64 - 31)); 6944 b0 -= b7; 6945 6946 tmp = b1 ^ b8; 6947 b1 = (tmp >> 41) | (tmp << (64 - 41)); 6948 b8 -= b1; 6949 6950 tmp = b5 ^ b14; 6951 b5 = (tmp >> 42) | (tmp << (64 - 42)); 6952 b14 -= b5; 6953 6954 tmp = b3 ^ b12; 6955 b3 = (tmp >> 53) | (tmp << (64 - 53)); 6956 b12 -= b3; 6957 6958 tmp = b7 ^ b10; 6959 b7 = (tmp >> 4) | (tmp << (64 - 4)); 6960 b10 -= b7; 6961 6962 tmp = b15 ^ b4; 6963 b15 = (tmp >> 51) | (tmp << (64 - 51)); 6964 b4 -= b15; 6965 6966 tmp = b11 ^ b6; 6967 b11 = (tmp >> 56) | (tmp << (64 - 56)); 6968 b6 -= b11; 6969 6970 tmp = b13 ^ b2; 6971 b13 = (tmp >> 34) | (tmp << (64 - 34)); 6972 b2 -= b13; 6973 6974 tmp = b9 ^ b0; 6975 b9 = (tmp >> 16) | (tmp << (64 - 16)); 6976 b0 -= b9; 6977 6978 tmp = b15 ^ b14; 6979 b15 = (tmp >> 30) | (tmp << (64 - 30)); 6980 b14 -= b15 + k6 + t1; 6981 b15 -= k7 + 9; 6982 6983 tmp = b13 ^ b12; 6984 b13 = (tmp >> 44) | (tmp << (64 - 44)); 6985 b12 -= b13 + k4; 6986 b13 -= k5 + t0; 6987 6988 tmp = b11 ^ b10; 6989 b11 = (tmp >> 47) | (tmp << (64 - 47)); 6990 b10 -= b11 + k2; 6991 b11 -= k3; 6992 6993 tmp = b9 ^ b8; 6994 b9 = (tmp >> 12) | (tmp << (64 - 12)); 6995 b8 -= b9 + k0; 6996 b9 -= k1; 6997 6998 tmp = b7 ^ b6; 6999 b7 = (tmp >> 31) | (tmp << (64 - 31)); 7000 b6 -= b7 + k15; 7001 b7 -= k16; 7002 7003 tmp = b5 ^ b4; 7004 b5 = (tmp >> 37) | (tmp << (64 - 37)); 7005 b4 -= b5 + k13; 7006 b5 -= k14; 7007 7008 tmp = b3 ^ b2; 7009 b3 = (tmp >> 9) | (tmp << (64 - 9)); 7010 b2 -= b3 + k11; 7011 b3 -= k12; 7012 7013 tmp = b1 ^ b0; 7014 b1 = (tmp >> 41) | (tmp << (64 - 41)); 7015 b0 -= b1 + k9; 7016 b1 -= k10; 7017 7018 tmp = b7 ^ b12; 7019 b7 = (tmp >> 25) | (tmp << (64 - 25)); 7020 b12 -= b7; 7021 7022 tmp = b3 ^ b10; 7023 b3 = (tmp >> 16) | (tmp << (64 - 16)); 7024 b10 -= b3; 7025 7026 tmp = b5 ^ b8; 7027 b5 = (tmp >> 28) | (tmp << (64 - 28)); 7028 b8 -= b5; 7029 7030 tmp = b1 ^ b14; 7031 b1 = (tmp >> 47) | (tmp << (64 - 47)); 7032 b14 -= b1; 7033 7034 tmp = b9 ^ b4; 7035 b9 = (tmp >> 41) | (tmp << (64 - 41)); 7036 b4 -= b9; 7037 7038 tmp = b13 ^ b6; 7039 b13 = (tmp >> 48) | (tmp << (64 - 48)); 7040 b6 -= b13; 7041 7042 tmp = b11 ^ b2; 7043 b11 = (tmp >> 20) | (tmp << (64 - 20)); 7044 b2 -= b11; 7045 7046 tmp = b15 ^ b0; 7047 b15 = (tmp >> 5) | (tmp << (64 - 5)); 7048 b0 -= b15; 7049 7050 tmp = b9 ^ b10; 7051 b9 = (tmp >> 17) | (tmp << (64 - 17)); 7052 b10 -= b9; 7053 7054 tmp = b11 ^ b8; 7055 b11 = (tmp >> 59) | (tmp << (64 - 59)); 7056 b8 -= b11; 7057 7058 tmp = b13 ^ b14; 7059 b13 = (tmp >> 41) | (tmp << (64 - 41)); 7060 b14 -= b13; 7061 7062 tmp = b15 ^ b12; 7063 b15 = (tmp >> 34) | (tmp << (64 - 34)); 7064 b12 -= b15; 7065 7066 tmp = b1 ^ b6; 7067 b1 = (tmp >> 13) | (tmp << (64 - 13)); 7068 b6 -= b1; 7069 7070 tmp = b3 ^ b4; 7071 b3 = (tmp >> 51) | (tmp << (64 - 51)); 7072 b4 -= b3; 7073 7074 tmp = b5 ^ b2; 7075 b5 = (tmp >> 4) | (tmp << (64 - 4)); 7076 b2 -= b5; 7077 7078 tmp = b7 ^ b0; 7079 b7 = (tmp >> 33) | (tmp << (64 - 33)); 7080 b0 -= b7; 7081 7082 tmp = b1 ^ b8; 7083 b1 = (tmp >> 52) | (tmp << (64 - 52)); 7084 b8 -= b1; 7085 7086 tmp = b5 ^ b14; 7087 b5 = (tmp >> 23) | (tmp << (64 - 23)); 7088 b14 -= b5; 7089 7090 tmp = b3 ^ b12; 7091 b3 = (tmp >> 18) | (tmp << (64 - 18)); 7092 b12 -= b3; 7093 7094 tmp = b7 ^ b10; 7095 b7 = (tmp >> 49) | (tmp << (64 - 49)); 7096 b10 -= b7; 7097 7098 tmp = b15 ^ b4; 7099 b15 = (tmp >> 55) | (tmp << (64 - 55)); 7100 b4 -= b15; 7101 7102 tmp = b11 ^ b6; 7103 b11 = (tmp >> 10) | (tmp << (64 - 10)); 7104 b6 -= b11; 7105 7106 tmp = b13 ^ b2; 7107 b13 = (tmp >> 19) | (tmp << (64 - 19)); 7108 b2 -= b13; 7109 7110 tmp = b9 ^ b0; 7111 b9 = (tmp >> 38) | (tmp << (64 - 38)); 7112 b0 -= b9; 7113 7114 tmp = b15 ^ b14; 7115 b15 = (tmp >> 37) | (tmp << (64 - 37)); 7116 b14 -= b15 + k5 + t0; 7117 b15 -= k6 + 8; 7118 7119 tmp = b13 ^ b12; 7120 b13 = (tmp >> 22) | (tmp << (64 - 22)); 7121 b12 -= b13 + k3; 7122 b13 -= k4 + t2; 7123 7124 tmp = b11 ^ b10; 7125 b11 = (tmp >> 17) | (tmp << (64 - 17)); 7126 b10 -= b11 + k1; 7127 b11 -= k2; 7128 7129 tmp = b9 ^ b8; 7130 b9 = (tmp >> 8) | (tmp << (64 - 8)); 7131 b8 -= b9 + k16; 7132 b9 -= k0; 7133 7134 tmp = b7 ^ b6; 7135 b7 = (tmp >> 47) | (tmp << (64 - 47)); 7136 b6 -= b7 + k14; 7137 b7 -= k15; 7138 7139 tmp = b5 ^ b4; 7140 b5 = (tmp >> 8) | (tmp << (64 - 8)); 7141 b4 -= b5 + k12; 7142 b5 -= k13; 7143 7144 tmp = b3 ^ b2; 7145 b3 = (tmp >> 13) | (tmp << (64 - 13)); 7146 b2 -= b3 + k10; 7147 b3 -= k11; 7148 7149 tmp = b1 ^ b0; 7150 b1 = (tmp >> 24) | (tmp << (64 - 24)); 7151 b0 -= b1 + k8; 7152 b1 -= k9; 7153 7154 tmp = b7 ^ b12; 7155 b7 = (tmp >> 20) | (tmp << (64 - 20)); 7156 b12 -= b7; 7157 7158 tmp = b3 ^ b10; 7159 b3 = (tmp >> 37) | (tmp << (64 - 37)); 7160 b10 -= b3; 7161 7162 tmp = b5 ^ b8; 7163 b5 = (tmp >> 31) | (tmp << (64 - 31)); 7164 b8 -= b5; 7165 7166 tmp = b1 ^ b14; 7167 b1 = (tmp >> 23) | (tmp << (64 - 23)); 7168 b14 -= b1; 7169 7170 tmp = b9 ^ b4; 7171 b9 = (tmp >> 52) | (tmp << (64 - 52)); 7172 b4 -= b9; 7173 7174 tmp = b13 ^ b6; 7175 b13 = (tmp >> 35) | (tmp << (64 - 35)); 7176 b6 -= b13; 7177 7178 tmp = b11 ^ b2; 7179 b11 = (tmp >> 48) | (tmp << (64 - 48)); 7180 b2 -= b11; 7181 7182 tmp = b15 ^ b0; 7183 b15 = (tmp >> 9) | (tmp << (64 - 9)); 7184 b0 -= b15; 7185 7186 tmp = b9 ^ b10; 7187 b9 = (tmp >> 25) | (tmp << (64 - 25)); 7188 b10 -= b9; 7189 7190 tmp = b11 ^ b8; 7191 b11 = (tmp >> 44) | (tmp << (64 - 44)); 7192 b8 -= b11; 7193 7194 tmp = b13 ^ b14; 7195 b13 = (tmp >> 42) | (tmp << (64 - 42)); 7196 b14 -= b13; 7197 7198 tmp = b15 ^ b12; 7199 b15 = (tmp >> 19) | (tmp << (64 - 19)); 7200 b12 -= b15; 7201 7202 tmp = b1 ^ b6; 7203 b1 = (tmp >> 46) | (tmp << (64 - 46)); 7204 b6 -= b1; 7205 7206 tmp = b3 ^ b4; 7207 b3 = (tmp >> 47) | (tmp << (64 - 47)); 7208 b4 -= b3; 7209 7210 tmp = b5 ^ b2; 7211 b5 = (tmp >> 44) | (tmp << (64 - 44)); 7212 b2 -= b5; 7213 7214 tmp = b7 ^ b0; 7215 b7 = (tmp >> 31) | (tmp << (64 - 31)); 7216 b0 -= b7; 7217 7218 tmp = b1 ^ b8; 7219 b1 = (tmp >> 41) | (tmp << (64 - 41)); 7220 b8 -= b1; 7221 7222 tmp = b5 ^ b14; 7223 b5 = (tmp >> 42) | (tmp << (64 - 42)); 7224 b14 -= b5; 7225 7226 tmp = b3 ^ b12; 7227 b3 = (tmp >> 53) | (tmp << (64 - 53)); 7228 b12 -= b3; 7229 7230 tmp = b7 ^ b10; 7231 b7 = (tmp >> 4) | (tmp << (64 - 4)); 7232 b10 -= b7; 7233 7234 tmp = b15 ^ b4; 7235 b15 = (tmp >> 51) | (tmp << (64 - 51)); 7236 b4 -= b15; 7237 7238 tmp = b11 ^ b6; 7239 b11 = (tmp >> 56) | (tmp << (64 - 56)); 7240 b6 -= b11; 7241 7242 tmp = b13 ^ b2; 7243 b13 = (tmp >> 34) | (tmp << (64 - 34)); 7244 b2 -= b13; 7245 7246 tmp = b9 ^ b0; 7247 b9 = (tmp >> 16) | (tmp << (64 - 16)); 7248 b0 -= b9; 7249 7250 tmp = b15 ^ b14; 7251 b15 = (tmp >> 30) | (tmp << (64 - 30)); 7252 b14 -= b15 + k4 + t2; 7253 b15 -= k5 + 7; 7254 7255 tmp = b13 ^ b12; 7256 b13 = (tmp >> 44) | (tmp << (64 - 44)); 7257 b12 -= b13 + k2; 7258 b13 -= k3 + t1; 7259 7260 tmp = b11 ^ b10; 7261 b11 = (tmp >> 47) | (tmp << (64 - 47)); 7262 b10 -= b11 + k0; 7263 b11 -= k1; 7264 7265 tmp = b9 ^ b8; 7266 b9 = (tmp >> 12) | (tmp << (64 - 12)); 7267 b8 -= b9 + k15; 7268 b9 -= k16; 7269 7270 tmp = b7 ^ b6; 7271 b7 = (tmp >> 31) | (tmp << (64 - 31)); 7272 b6 -= b7 + k13; 7273 b7 -= k14; 7274 7275 tmp = b5 ^ b4; 7276 b5 = (tmp >> 37) | (tmp << (64 - 37)); 7277 b4 -= b5 + k11; 7278 b5 -= k12; 7279 7280 tmp = b3 ^ b2; 7281 b3 = (tmp >> 9) | (tmp << (64 - 9)); 7282 b2 -= b3 + k9; 7283 b3 -= k10; 7284 7285 tmp = b1 ^ b0; 7286 b1 = (tmp >> 41) | (tmp << (64 - 41)); 7287 b0 -= b1 + k7; 7288 b1 -= k8; 7289 7290 tmp = b7 ^ b12; 7291 b7 = (tmp >> 25) | (tmp << (64 - 25)); 7292 b12 -= b7; 7293 7294 tmp = b3 ^ b10; 7295 b3 = (tmp >> 16) | (tmp << (64 - 16)); 7296 b10 -= b3; 7297 7298 tmp = b5 ^ b8; 7299 b5 = (tmp >> 28) | (tmp << (64 - 28)); 7300 b8 -= b5; 7301 7302 tmp = b1 ^ b14; 7303 b1 = (tmp >> 47) | (tmp << (64 - 47)); 7304 b14 -= b1; 7305 7306 tmp = b9 ^ b4; 7307 b9 = (tmp >> 41) | (tmp << (64 - 41)); 7308 b4 -= b9; 7309 7310 tmp = b13 ^ b6; 7311 b13 = (tmp >> 48) | (tmp << (64 - 48)); 7312 b6 -= b13; 7313 7314 tmp = b11 ^ b2; 7315 b11 = (tmp >> 20) | (tmp << (64 - 20)); 7316 b2 -= b11; 7317 7318 tmp = b15 ^ b0; 7319 b15 = (tmp >> 5) | (tmp << (64 - 5)); 7320 b0 -= b15; 7321 7322 tmp = b9 ^ b10; 7323 b9 = (tmp >> 17) | (tmp << (64 - 17)); 7324 b10 -= b9; 7325 7326 tmp = b11 ^ b8; 7327 b11 = (tmp >> 59) | (tmp << (64 - 59)); 7328 b8 -= b11; 7329 7330 tmp = b13 ^ b14; 7331 b13 = (tmp >> 41) | (tmp << (64 - 41)); 7332 b14 -= b13; 7333 7334 tmp = b15 ^ b12; 7335 b15 = (tmp >> 34) | (tmp << (64 - 34)); 7336 b12 -= b15; 7337 7338 tmp = b1 ^ b6; 7339 b1 = (tmp >> 13) | (tmp << (64 - 13)); 7340 b6 -= b1; 7341 7342 tmp = b3 ^ b4; 7343 b3 = (tmp >> 51) | (tmp << (64 - 51)); 7344 b4 -= b3; 7345 7346 tmp = b5 ^ b2; 7347 b5 = (tmp >> 4) | (tmp << (64 - 4)); 7348 b2 -= b5; 7349 7350 tmp = b7 ^ b0; 7351 b7 = (tmp >> 33) | (tmp << (64 - 33)); 7352 b0 -= b7; 7353 7354 tmp = b1 ^ b8; 7355 b1 = (tmp >> 52) | (tmp << (64 - 52)); 7356 b8 -= b1; 7357 7358 tmp = b5 ^ b14; 7359 b5 = (tmp >> 23) | (tmp << (64 - 23)); 7360 b14 -= b5; 7361 7362 tmp = b3 ^ b12; 7363 b3 = (tmp >> 18) | (tmp << (64 - 18)); 7364 b12 -= b3; 7365 7366 tmp = b7 ^ b10; 7367 b7 = (tmp >> 49) | (tmp << (64 - 49)); 7368 b10 -= b7; 7369 7370 tmp = b15 ^ b4; 7371 b15 = (tmp >> 55) | (tmp << (64 - 55)); 7372 b4 -= b15; 7373 7374 tmp = b11 ^ b6; 7375 b11 = (tmp >> 10) | (tmp << (64 - 10)); 7376 b6 -= b11; 7377 7378 tmp = b13 ^ b2; 7379 b13 = (tmp >> 19) | (tmp << (64 - 19)); 7380 b2 -= b13; 7381 7382 tmp = b9 ^ b0; 7383 b9 = (tmp >> 38) | (tmp << (64 - 38)); 7384 b0 -= b9; 7385 7386 tmp = b15 ^ b14; 7387 b15 = (tmp >> 37) | (tmp << (64 - 37)); 7388 b14 -= b15 + k3 + t1; 7389 b15 -= k4 + 6; 7390 7391 tmp = b13 ^ b12; 7392 b13 = (tmp >> 22) | (tmp << (64 - 22)); 7393 b12 -= b13 + k1; 7394 b13 -= k2 + t0; 7395 7396 tmp = b11 ^ b10; 7397 b11 = (tmp >> 17) | (tmp << (64 - 17)); 7398 b10 -= b11 + k16; 7399 b11 -= k0; 7400 7401 tmp = b9 ^ b8; 7402 b9 = (tmp >> 8) | (tmp << (64 - 8)); 7403 b8 -= b9 + k14; 7404 b9 -= k15; 7405 7406 tmp = b7 ^ b6; 7407 b7 = (tmp >> 47) | (tmp << (64 - 47)); 7408 b6 -= b7 + k12; 7409 b7 -= k13; 7410 7411 tmp = b5 ^ b4; 7412 b5 = (tmp >> 8) | (tmp << (64 - 8)); 7413 b4 -= b5 + k10; 7414 b5 -= k11; 7415 7416 tmp = b3 ^ b2; 7417 b3 = (tmp >> 13) | (tmp << (64 - 13)); 7418 b2 -= b3 + k8; 7419 b3 -= k9; 7420 7421 tmp = b1 ^ b0; 7422 b1 = (tmp >> 24) | (tmp << (64 - 24)); 7423 b0 -= b1 + k6; 7424 b1 -= k7; 7425 7426 tmp = b7 ^ b12; 7427 b7 = (tmp >> 20) | (tmp << (64 - 20)); 7428 b12 -= b7; 7429 7430 tmp = b3 ^ b10; 7431 b3 = (tmp >> 37) | (tmp << (64 - 37)); 7432 b10 -= b3; 7433 7434 tmp = b5 ^ b8; 7435 b5 = (tmp >> 31) | (tmp << (64 - 31)); 7436 b8 -= b5; 7437 7438 tmp = b1 ^ b14; 7439 b1 = (tmp >> 23) | (tmp << (64 - 23)); 7440 b14 -= b1; 7441 7442 tmp = b9 ^ b4; 7443 b9 = (tmp >> 52) | (tmp << (64 - 52)); 7444 b4 -= b9; 7445 7446 tmp = b13 ^ b6; 7447 b13 = (tmp >> 35) | (tmp << (64 - 35)); 7448 b6 -= b13; 7449 7450 tmp = b11 ^ b2; 7451 b11 = (tmp >> 48) | (tmp << (64 - 48)); 7452 b2 -= b11; 7453 7454 tmp = b15 ^ b0; 7455 b15 = (tmp >> 9) | (tmp << (64 - 9)); 7456 b0 -= b15; 7457 7458 tmp = b9 ^ b10; 7459 b9 = (tmp >> 25) | (tmp << (64 - 25)); 7460 b10 -= b9; 7461 7462 tmp = b11 ^ b8; 7463 b11 = (tmp >> 44) | (tmp << (64 - 44)); 7464 b8 -= b11; 7465 7466 tmp = b13 ^ b14; 7467 b13 = (tmp >> 42) | (tmp << (64 - 42)); 7468 b14 -= b13; 7469 7470 tmp = b15 ^ b12; 7471 b15 = (tmp >> 19) | (tmp << (64 - 19)); 7472 b12 -= b15; 7473 7474 tmp = b1 ^ b6; 7475 b1 = (tmp >> 46) | (tmp << (64 - 46)); 7476 b6 -= b1; 7477 7478 tmp = b3 ^ b4; 7479 b3 = (tmp >> 47) | (tmp << (64 - 47)); 7480 b4 -= b3; 7481 7482 tmp = b5 ^ b2; 7483 b5 = (tmp >> 44) | (tmp << (64 - 44)); 7484 b2 -= b5; 7485 7486 tmp = b7 ^ b0; 7487 b7 = (tmp >> 31) | (tmp << (64 - 31)); 7488 b0 -= b7; 7489 7490 tmp = b1 ^ b8; 7491 b1 = (tmp >> 41) | (tmp << (64 - 41)); 7492 b8 -= b1; 7493 7494 tmp = b5 ^ b14; 7495 b5 = (tmp >> 42) | (tmp << (64 - 42)); 7496 b14 -= b5; 7497 7498 tmp = b3 ^ b12; 7499 b3 = (tmp >> 53) | (tmp << (64 - 53)); 7500 b12 -= b3; 7501 7502 tmp = b7 ^ b10; 7503 b7 = (tmp >> 4) | (tmp << (64 - 4)); 7504 b10 -= b7; 7505 7506 tmp = b15 ^ b4; 7507 b15 = (tmp >> 51) | (tmp << (64 - 51)); 7508 b4 -= b15; 7509 7510 tmp = b11 ^ b6; 7511 b11 = (tmp >> 56) | (tmp << (64 - 56)); 7512 b6 -= b11; 7513 7514 tmp = b13 ^ b2; 7515 b13 = (tmp >> 34) | (tmp << (64 - 34)); 7516 b2 -= b13; 7517 7518 tmp = b9 ^ b0; 7519 b9 = (tmp >> 16) | (tmp << (64 - 16)); 7520 b0 -= b9; 7521 7522 tmp = b15 ^ b14; 7523 b15 = (tmp >> 30) | (tmp << (64 - 30)); 7524 b14 -= b15 + k2 + t0; 7525 b15 -= k3 + 5; 7526 7527 tmp = b13 ^ b12; 7528 b13 = (tmp >> 44) | (tmp << (64 - 44)); 7529 b12 -= b13 + k0; 7530 b13 -= k1 + t2; 7531 7532 tmp = b11 ^ b10; 7533 b11 = (tmp >> 47) | (tmp << (64 - 47)); 7534 b10 -= b11 + k15; 7535 b11 -= k16; 7536 7537 tmp = b9 ^ b8; 7538 b9 = (tmp >> 12) | (tmp << (64 - 12)); 7539 b8 -= b9 + k13; 7540 b9 -= k14; 7541 7542 tmp = b7 ^ b6; 7543 b7 = (tmp >> 31) | (tmp << (64 - 31)); 7544 b6 -= b7 + k11; 7545 b7 -= k12; 7546 7547 tmp = b5 ^ b4; 7548 b5 = (tmp >> 37) | (tmp << (64 - 37)); 7549 b4 -= b5 + k9; 7550 b5 -= k10; 7551 7552 tmp = b3 ^ b2; 7553 b3 = (tmp >> 9) | (tmp << (64 - 9)); 7554 b2 -= b3 + k7; 7555 b3 -= k8; 7556 7557 tmp = b1 ^ b0; 7558 b1 = (tmp >> 41) | (tmp << (64 - 41)); 7559 b0 -= b1 + k5; 7560 b1 -= k6; 7561 7562 tmp = b7 ^ b12; 7563 b7 = (tmp >> 25) | (tmp << (64 - 25)); 7564 b12 -= b7; 7565 7566 tmp = b3 ^ b10; 7567 b3 = (tmp >> 16) | (tmp << (64 - 16)); 7568 b10 -= b3; 7569 7570 tmp = b5 ^ b8; 7571 b5 = (tmp >> 28) | (tmp << (64 - 28)); 7572 b8 -= b5; 7573 7574 tmp = b1 ^ b14; 7575 b1 = (tmp >> 47) | (tmp << (64 - 47)); 7576 b14 -= b1; 7577 7578 tmp = b9 ^ b4; 7579 b9 = (tmp >> 41) | (tmp << (64 - 41)); 7580 b4 -= b9; 7581 7582 tmp = b13 ^ b6; 7583 b13 = (tmp >> 48) | (tmp << (64 - 48)); 7584 b6 -= b13; 7585 7586 tmp = b11 ^ b2; 7587 b11 = (tmp >> 20) | (tmp << (64 - 20)); 7588 b2 -= b11; 7589 7590 tmp = b15 ^ b0; 7591 b15 = (tmp >> 5) | (tmp << (64 - 5)); 7592 b0 -= b15; 7593 7594 tmp = b9 ^ b10; 7595 b9 = (tmp >> 17) | (tmp << (64 - 17)); 7596 b10 -= b9; 7597 7598 tmp = b11 ^ b8; 7599 b11 = (tmp >> 59) | (tmp << (64 - 59)); 7600 b8 -= b11; 7601 7602 tmp = b13 ^ b14; 7603 b13 = (tmp >> 41) | (tmp << (64 - 41)); 7604 b14 -= b13; 7605 7606 tmp = b15 ^ b12; 7607 b15 = (tmp >> 34) | (tmp << (64 - 34)); 7608 b12 -= b15; 7609 7610 tmp = b1 ^ b6; 7611 b1 = (tmp >> 13) | (tmp << (64 - 13)); 7612 b6 -= b1; 7613 7614 tmp = b3 ^ b4; 7615 b3 = (tmp >> 51) | (tmp << (64 - 51)); 7616 b4 -= b3; 7617 7618 tmp = b5 ^ b2; 7619 b5 = (tmp >> 4) | (tmp << (64 - 4)); 7620 b2 -= b5; 7621 7622 tmp = b7 ^ b0; 7623 b7 = (tmp >> 33) | (tmp << (64 - 33)); 7624 b0 -= b7; 7625 7626 tmp = b1 ^ b8; 7627 b1 = (tmp >> 52) | (tmp << (64 - 52)); 7628 b8 -= b1; 7629 7630 tmp = b5 ^ b14; 7631 b5 = (tmp >> 23) | (tmp << (64 - 23)); 7632 b14 -= b5; 7633 7634 tmp = b3 ^ b12; 7635 b3 = (tmp >> 18) | (tmp << (64 - 18)); 7636 b12 -= b3; 7637 7638 tmp = b7 ^ b10; 7639 b7 = (tmp >> 49) | (tmp << (64 - 49)); 7640 b10 -= b7; 7641 7642 tmp = b15 ^ b4; 7643 b15 = (tmp >> 55) | (tmp << (64 - 55)); 7644 b4 -= b15; 7645 7646 tmp = b11 ^ b6; 7647 b11 = (tmp >> 10) | (tmp << (64 - 10)); 7648 b6 -= b11; 7649 7650 tmp = b13 ^ b2; 7651 b13 = (tmp >> 19) | (tmp << (64 - 19)); 7652 b2 -= b13; 7653 7654 tmp = b9 ^ b0; 7655 b9 = (tmp >> 38) | (tmp << (64 - 38)); 7656 b0 -= b9; 7657 7658 tmp = b15 ^ b14; 7659 b15 = (tmp >> 37) | (tmp << (64 - 37)); 7660 b14 -= b15 + k1 + t2; 7661 b15 -= k2 + 4; 7662 7663 tmp = b13 ^ b12; 7664 b13 = (tmp >> 22) | (tmp << (64 - 22)); 7665 b12 -= b13 + k16; 7666 b13 -= k0 + t1; 7667 7668 tmp = b11 ^ b10; 7669 b11 = (tmp >> 17) | (tmp << (64 - 17)); 7670 b10 -= b11 + k14; 7671 b11 -= k15; 7672 7673 tmp = b9 ^ b8; 7674 b9 = (tmp >> 8) | (tmp << (64 - 8)); 7675 b8 -= b9 + k12; 7676 b9 -= k13; 7677 7678 tmp = b7 ^ b6; 7679 b7 = (tmp >> 47) | (tmp << (64 - 47)); 7680 b6 -= b7 + k10; 7681 b7 -= k11; 7682 7683 tmp = b5 ^ b4; 7684 b5 = (tmp >> 8) | (tmp << (64 - 8)); 7685 b4 -= b5 + k8; 7686 b5 -= k9; 7687 7688 tmp = b3 ^ b2; 7689 b3 = (tmp >> 13) | (tmp << (64 - 13)); 7690 b2 -= b3 + k6; 7691 b3 -= k7; 7692 7693 tmp = b1 ^ b0; 7694 b1 = (tmp >> 24) | (tmp << (64 - 24)); 7695 b0 -= b1 + k4; 7696 b1 -= k5; 7697 7698 tmp = b7 ^ b12; 7699 b7 = (tmp >> 20) | (tmp << (64 - 20)); 7700 b12 -= b7; 7701 7702 tmp = b3 ^ b10; 7703 b3 = (tmp >> 37) | (tmp << (64 - 37)); 7704 b10 -= b3; 7705 7706 tmp = b5 ^ b8; 7707 b5 = (tmp >> 31) | (tmp << (64 - 31)); 7708 b8 -= b5; 7709 7710 tmp = b1 ^ b14; 7711 b1 = (tmp >> 23) | (tmp << (64 - 23)); 7712 b14 -= b1; 7713 7714 tmp = b9 ^ b4; 7715 b9 = (tmp >> 52) | (tmp << (64 - 52)); 7716 b4 -= b9; 7717 7718 tmp = b13 ^ b6; 7719 b13 = (tmp >> 35) | (tmp << (64 - 35)); 7720 b6 -= b13; 7721 7722 tmp = b11 ^ b2; 7723 b11 = (tmp >> 48) | (tmp << (64 - 48)); 7724 b2 -= b11; 7725 7726 tmp = b15 ^ b0; 7727 b15 = (tmp >> 9) | (tmp << (64 - 9)); 7728 b0 -= b15; 7729 7730 tmp = b9 ^ b10; 7731 b9 = (tmp >> 25) | (tmp << (64 - 25)); 7732 b10 -= b9; 7733 7734 tmp = b11 ^ b8; 7735 b11 = (tmp >> 44) | (tmp << (64 - 44)); 7736 b8 -= b11; 7737 7738 tmp = b13 ^ b14; 7739 b13 = (tmp >> 42) | (tmp << (64 - 42)); 7740 b14 -= b13; 7741 7742 tmp = b15 ^ b12; 7743 b15 = (tmp >> 19) | (tmp << (64 - 19)); 7744 b12 -= b15; 7745 7746 tmp = b1 ^ b6; 7747 b1 = (tmp >> 46) | (tmp << (64 - 46)); 7748 b6 -= b1; 7749 7750 tmp = b3 ^ b4; 7751 b3 = (tmp >> 47) | (tmp << (64 - 47)); 7752 b4 -= b3; 7753 7754 tmp = b5 ^ b2; 7755 b5 = (tmp >> 44) | (tmp << (64 - 44)); 7756 b2 -= b5; 7757 7758 tmp = b7 ^ b0; 7759 b7 = (tmp >> 31) | (tmp << (64 - 31)); 7760 b0 -= b7; 7761 7762 tmp = b1 ^ b8; 7763 b1 = (tmp >> 41) | (tmp << (64 - 41)); 7764 b8 -= b1; 7765 7766 tmp = b5 ^ b14; 7767 b5 = (tmp >> 42) | (tmp << (64 - 42)); 7768 b14 -= b5; 7769 7770 tmp = b3 ^ b12; 7771 b3 = (tmp >> 53) | (tmp << (64 - 53)); 7772 b12 -= b3; 7773 7774 tmp = b7 ^ b10; 7775 b7 = (tmp >> 4) | (tmp << (64 - 4)); 7776 b10 -= b7; 7777 7778 tmp = b15 ^ b4; 7779 b15 = (tmp >> 51) | (tmp << (64 - 51)); 7780 b4 -= b15; 7781 7782 tmp = b11 ^ b6; 7783 b11 = (tmp >> 56) | (tmp << (64 - 56)); 7784 b6 -= b11; 7785 7786 tmp = b13 ^ b2; 7787 b13 = (tmp >> 34) | (tmp << (64 - 34)); 7788 b2 -= b13; 7789 7790 tmp = b9 ^ b0; 7791 b9 = (tmp >> 16) | (tmp << (64 - 16)); 7792 b0 -= b9; 7793 7794 tmp = b15 ^ b14; 7795 b15 = (tmp >> 30) | (tmp << (64 - 30)); 7796 b14 -= b15 + k0 + t1; 7797 b15 -= k1 + 3; 7798 7799 tmp = b13 ^ b12; 7800 b13 = (tmp >> 44) | (tmp << (64 - 44)); 7801 b12 -= b13 + k15; 7802 b13 -= k16 + t0; 7803 7804 tmp = b11 ^ b10; 7805 b11 = (tmp >> 47) | (tmp << (64 - 47)); 7806 b10 -= b11 + k13; 7807 b11 -= k14; 7808 7809 tmp = b9 ^ b8; 7810 b9 = (tmp >> 12) | (tmp << (64 - 12)); 7811 b8 -= b9 + k11; 7812 b9 -= k12; 7813 7814 tmp = b7 ^ b6; 7815 b7 = (tmp >> 31) | (tmp << (64 - 31)); 7816 b6 -= b7 + k9; 7817 b7 -= k10; 7818 7819 tmp = b5 ^ b4; 7820 b5 = (tmp >> 37) | (tmp << (64 - 37)); 7821 b4 -= b5 + k7; 7822 b5 -= k8; 7823 7824 tmp = b3 ^ b2; 7825 b3 = (tmp >> 9) | (tmp << (64 - 9)); 7826 b2 -= b3 + k5; 7827 b3 -= k6; 7828 7829 tmp = b1 ^ b0; 7830 b1 = (tmp >> 41) | (tmp << (64 - 41)); 7831 b0 -= b1 + k3; 7832 b1 -= k4; 7833 7834 tmp = b7 ^ b12; 7835 b7 = (tmp >> 25) | (tmp << (64 - 25)); 7836 b12 -= b7; 7837 7838 tmp = b3 ^ b10; 7839 b3 = (tmp >> 16) | (tmp << (64 - 16)); 7840 b10 -= b3; 7841 7842 tmp = b5 ^ b8; 7843 b5 = (tmp >> 28) | (tmp << (64 - 28)); 7844 b8 -= b5; 7845 7846 tmp = b1 ^ b14; 7847 b1 = (tmp >> 47) | (tmp << (64 - 47)); 7848 b14 -= b1; 7849 7850 tmp = b9 ^ b4; 7851 b9 = (tmp >> 41) | (tmp << (64 - 41)); 7852 b4 -= b9; 7853 7854 tmp = b13 ^ b6; 7855 b13 = (tmp >> 48) | (tmp << (64 - 48)); 7856 b6 -= b13; 7857 7858 tmp = b11 ^ b2; 7859 b11 = (tmp >> 20) | (tmp << (64 - 20)); 7860 b2 -= b11; 7861 7862 tmp = b15 ^ b0; 7863 b15 = (tmp >> 5) | (tmp << (64 - 5)); 7864 b0 -= b15; 7865 7866 tmp = b9 ^ b10; 7867 b9 = (tmp >> 17) | (tmp << (64 - 17)); 7868 b10 -= b9; 7869 7870 tmp = b11 ^ b8; 7871 b11 = (tmp >> 59) | (tmp << (64 - 59)); 7872 b8 -= b11; 7873 7874 tmp = b13 ^ b14; 7875 b13 = (tmp >> 41) | (tmp << (64 - 41)); 7876 b14 -= b13; 7877 7878 tmp = b15 ^ b12; 7879 b15 = (tmp >> 34) | (tmp << (64 - 34)); 7880 b12 -= b15; 7881 7882 tmp = b1 ^ b6; 7883 b1 = (tmp >> 13) | (tmp << (64 - 13)); 7884 b6 -= b1; 7885 7886 tmp = b3 ^ b4; 7887 b3 = (tmp >> 51) | (tmp << (64 - 51)); 7888 b4 -= b3; 7889 7890 tmp = b5 ^ b2; 7891 b5 = (tmp >> 4) | (tmp << (64 - 4)); 7892 b2 -= b5; 7893 7894 tmp = b7 ^ b0; 7895 b7 = (tmp >> 33) | (tmp << (64 - 33)); 7896 b0 -= b7; 7897 7898 tmp = b1 ^ b8; 7899 b1 = (tmp >> 52) | (tmp << (64 - 52)); 7900 b8 -= b1; 7901 7902 tmp = b5 ^ b14; 7903 b5 = (tmp >> 23) | (tmp << (64 - 23)); 7904 b14 -= b5; 7905 7906 tmp = b3 ^ b12; 7907 b3 = (tmp >> 18) | (tmp << (64 - 18)); 7908 b12 -= b3; 7909 7910 tmp = b7 ^ b10; 7911 b7 = (tmp >> 49) | (tmp << (64 - 49)); 7912 b10 -= b7; 7913 7914 tmp = b15 ^ b4; 7915 b15 = (tmp >> 55) | (tmp << (64 - 55)); 7916 b4 -= b15; 7917 7918 tmp = b11 ^ b6; 7919 b11 = (tmp >> 10) | (tmp << (64 - 10)); 7920 b6 -= b11; 7921 7922 tmp = b13 ^ b2; 7923 b13 = (tmp >> 19) | (tmp << (64 - 19)); 7924 b2 -= b13; 7925 7926 tmp = b9 ^ b0; 7927 b9 = (tmp >> 38) | (tmp << (64 - 38)); 7928 b0 -= b9; 7929 7930 tmp = b15 ^ b14; 7931 b15 = (tmp >> 37) | (tmp << (64 - 37)); 7932 b14 -= b15 + k16 + t0; 7933 b15 -= k0 + 2; 7934 7935 tmp = b13 ^ b12; 7936 b13 = (tmp >> 22) | (tmp << (64 - 22)); 7937 b12 -= b13 + k14; 7938 b13 -= k15 + t2; 7939 7940 tmp = b11 ^ b10; 7941 b11 = (tmp >> 17) | (tmp << (64 - 17)); 7942 b10 -= b11 + k12; 7943 b11 -= k13; 7944 7945 tmp = b9 ^ b8; 7946 b9 = (tmp >> 8) | (tmp << (64 - 8)); 7947 b8 -= b9 + k10; 7948 b9 -= k11; 7949 7950 tmp = b7 ^ b6; 7951 b7 = (tmp >> 47) | (tmp << (64 - 47)); 7952 b6 -= b7 + k8; 7953 b7 -= k9; 7954 7955 tmp = b5 ^ b4; 7956 b5 = (tmp >> 8) | (tmp << (64 - 8)); 7957 b4 -= b5 + k6; 7958 b5 -= k7; 7959 7960 tmp = b3 ^ b2; 7961 b3 = (tmp >> 13) | (tmp << (64 - 13)); 7962 b2 -= b3 + k4; 7963 b3 -= k5; 7964 7965 tmp = b1 ^ b0; 7966 b1 = (tmp >> 24) | (tmp << (64 - 24)); 7967 b0 -= b1 + k2; 7968 b1 -= k3; 7969 7970 tmp = b7 ^ b12; 7971 b7 = (tmp >> 20) | (tmp << (64 - 20)); 7972 b12 -= b7; 7973 7974 tmp = b3 ^ b10; 7975 b3 = (tmp >> 37) | (tmp << (64 - 37)); 7976 b10 -= b3; 7977 7978 tmp = b5 ^ b8; 7979 b5 = (tmp >> 31) | (tmp << (64 - 31)); 7980 b8 -= b5; 7981 7982 tmp = b1 ^ b14; 7983 b1 = (tmp >> 23) | (tmp << (64 - 23)); 7984 b14 -= b1; 7985 7986 tmp = b9 ^ b4; 7987 b9 = (tmp >> 52) | (tmp << (64 - 52)); 7988 b4 -= b9; 7989 7990 tmp = b13 ^ b6; 7991 b13 = (tmp >> 35) | (tmp << (64 - 35)); 7992 b6 -= b13; 7993 7994 tmp = b11 ^ b2; 7995 b11 = (tmp >> 48) | (tmp << (64 - 48)); 7996 b2 -= b11; 7997 7998 tmp = b15 ^ b0; 7999 b15 = (tmp >> 9) | (tmp << (64 - 9)); 8000 b0 -= b15; 8001 8002 tmp = b9 ^ b10; 8003 b9 = (tmp >> 25) | (tmp << (64 - 25)); 8004 b10 -= b9; 8005 8006 tmp = b11 ^ b8; 8007 b11 = (tmp >> 44) | (tmp << (64 - 44)); 8008 b8 -= b11; 8009 8010 tmp = b13 ^ b14; 8011 b13 = (tmp >> 42) | (tmp << (64 - 42)); 8012 b14 -= b13; 8013 8014 tmp = b15 ^ b12; 8015 b15 = (tmp >> 19) | (tmp << (64 - 19)); 8016 b12 -= b15; 8017 8018 tmp = b1 ^ b6; 8019 b1 = (tmp >> 46) | (tmp << (64 - 46)); 8020 b6 -= b1; 8021 8022 tmp = b3 ^ b4; 8023 b3 = (tmp >> 47) | (tmp << (64 - 47)); 8024 b4 -= b3; 8025 8026 tmp = b5 ^ b2; 8027 b5 = (tmp >> 44) | (tmp << (64 - 44)); 8028 b2 -= b5; 8029 8030 tmp = b7 ^ b0; 8031 b7 = (tmp >> 31) | (tmp << (64 - 31)); 8032 b0 -= b7; 8033 8034 tmp = b1 ^ b8; 8035 b1 = (tmp >> 41) | (tmp << (64 - 41)); 8036 b8 -= b1; 8037 8038 tmp = b5 ^ b14; 8039 b5 = (tmp >> 42) | (tmp << (64 - 42)); 8040 b14 -= b5; 8041 8042 tmp = b3 ^ b12; 8043 b3 = (tmp >> 53) | (tmp << (64 - 53)); 8044 b12 -= b3; 8045 8046 tmp = b7 ^ b10; 8047 b7 = (tmp >> 4) | (tmp << (64 - 4)); 8048 b10 -= b7; 8049 8050 tmp = b15 ^ b4; 8051 b15 = (tmp >> 51) | (tmp << (64 - 51)); 8052 b4 -= b15; 8053 8054 tmp = b11 ^ b6; 8055 b11 = (tmp >> 56) | (tmp << (64 - 56)); 8056 b6 -= b11; 8057 8058 tmp = b13 ^ b2; 8059 b13 = (tmp >> 34) | (tmp << (64 - 34)); 8060 b2 -= b13; 8061 8062 tmp = b9 ^ b0; 8063 b9 = (tmp >> 16) | (tmp << (64 - 16)); 8064 b0 -= b9; 8065 8066 tmp = b15 ^ b14; 8067 b15 = (tmp >> 30) | (tmp << (64 - 30)); 8068 b14 -= b15 + k15 + t2; 8069 b15 -= k16 + 1; 8070 8071 tmp = b13 ^ b12; 8072 b13 = (tmp >> 44) | (tmp << (64 - 44)); 8073 b12 -= b13 + k13; 8074 b13 -= k14 + t1; 8075 8076 tmp = b11 ^ b10; 8077 b11 = (tmp >> 47) | (tmp << (64 - 47)); 8078 b10 -= b11 + k11; 8079 b11 -= k12; 8080 8081 tmp = b9 ^ b8; 8082 b9 = (tmp >> 12) | (tmp << (64 - 12)); 8083 b8 -= b9 + k9; 8084 b9 -= k10; 8085 8086 tmp = b7 ^ b6; 8087 b7 = (tmp >> 31) | (tmp << (64 - 31)); 8088 b6 -= b7 + k7; 8089 b7 -= k8; 8090 8091 tmp = b5 ^ b4; 8092 b5 = (tmp >> 37) | (tmp << (64 - 37)); 8093 b4 -= b5 + k5; 8094 b5 -= k6; 8095 8096 tmp = b3 ^ b2; 8097 b3 = (tmp >> 9) | (tmp << (64 - 9)); 8098 b2 -= b3 + k3; 8099 b3 -= k4; 8100 8101 tmp = b1 ^ b0; 8102 b1 = (tmp >> 41) | (tmp << (64 - 41)); 8103 b0 -= b1 + k1; 8104 b1 -= k2; 8105 8106 tmp = b7 ^ b12; 8107 b7 = (tmp >> 25) | (tmp << (64 - 25)); 8108 b12 -= b7; 8109 8110 tmp = b3 ^ b10; 8111 b3 = (tmp >> 16) | (tmp << (64 - 16)); 8112 b10 -= b3; 8113 8114 tmp = b5 ^ b8; 8115 b5 = (tmp >> 28) | (tmp << (64 - 28)); 8116 b8 -= b5; 8117 8118 tmp = b1 ^ b14; 8119 b1 = (tmp >> 47) | (tmp << (64 - 47)); 8120 b14 -= b1; 8121 8122 tmp = b9 ^ b4; 8123 b9 = (tmp >> 41) | (tmp << (64 - 41)); 8124 b4 -= b9; 8125 8126 tmp = b13 ^ b6; 8127 b13 = (tmp >> 48) | (tmp << (64 - 48)); 8128 b6 -= b13; 8129 8130 tmp = b11 ^ b2; 8131 b11 = (tmp >> 20) | (tmp << (64 - 20)); 8132 b2 -= b11; 8133 8134 tmp = b15 ^ b0; 8135 b15 = (tmp >> 5) | (tmp << (64 - 5)); 8136 b0 -= b15; 8137 8138 tmp = b9 ^ b10; 8139 b9 = (tmp >> 17) | (tmp << (64 - 17)); 8140 b10 -= b9; 8141 8142 tmp = b11 ^ b8; 8143 b11 = (tmp >> 59) | (tmp << (64 - 59)); 8144 b8 -= b11; 8145 8146 tmp = b13 ^ b14; 8147 b13 = (tmp >> 41) | (tmp << (64 - 41)); 8148 b14 -= b13; 8149 8150 tmp = b15 ^ b12; 8151 b15 = (tmp >> 34) | (tmp << (64 - 34)); 8152 b12 -= b15; 8153 8154 tmp = b1 ^ b6; 8155 b1 = (tmp >> 13) | (tmp << (64 - 13)); 8156 b6 -= b1; 8157 8158 tmp = b3 ^ b4; 8159 b3 = (tmp >> 51) | (tmp << (64 - 51)); 8160 b4 -= b3; 8161 8162 tmp = b5 ^ b2; 8163 b5 = (tmp >> 4) | (tmp << (64 - 4)); 8164 b2 -= b5; 8165 8166 tmp = b7 ^ b0; 8167 b7 = (tmp >> 33) | (tmp << (64 - 33)); 8168 b0 -= b7; 8169 8170 tmp = b1 ^ b8; 8171 b1 = (tmp >> 52) | (tmp << (64 - 52)); 8172 b8 -= b1; 8173 8174 tmp = b5 ^ b14; 8175 b5 = (tmp >> 23) | (tmp << (64 - 23)); 8176 b14 -= b5; 8177 8178 tmp = b3 ^ b12; 8179 b3 = (tmp >> 18) | (tmp << (64 - 18)); 8180 b12 -= b3; 8181 8182 tmp = b7 ^ b10; 8183 b7 = (tmp >> 49) | (tmp << (64 - 49)); 8184 b10 -= b7; 8185 8186 tmp = b15 ^ b4; 8187 b15 = (tmp >> 55) | (tmp << (64 - 55)); 8188 b4 -= b15; 8189 8190 tmp = b11 ^ b6; 8191 b11 = (tmp >> 10) | (tmp << (64 - 10)); 8192 b6 -= b11; 8193 8194 tmp = b13 ^ b2; 8195 b13 = (tmp >> 19) | (tmp << (64 - 19)); 8196 b2 -= b13; 8197 8198 tmp = b9 ^ b0; 8199 b9 = (tmp >> 38) | (tmp << (64 - 38)); 8200 b0 -= b9; 8201 8202 tmp = b15 ^ b14; 8203 b15 = (tmp >> 37) | (tmp << (64 - 37)); 8204 b14 -= b15 + k14 + t1; 8205 b15 -= k15; 8206 8207 tmp = b13 ^ b12; 8208 b13 = (tmp >> 22) | (tmp << (64 - 22)); 8209 b12 -= b13 + k12; 8210 b13 -= k13 + t0; 8211 8212 tmp = b11 ^ b10; 8213 b11 = (tmp >> 17) | (tmp << (64 - 17)); 8214 b10 -= b11 + k10; 8215 b11 -= k11; 8216 8217 tmp = b9 ^ b8; 8218 b9 = (tmp >> 8) | (tmp << (64 - 8)); 8219 b8 -= b9 + k8; 8220 b9 -= k9; 8221 8222 tmp = b7 ^ b6; 8223 b7 = (tmp >> 47) | (tmp << (64 - 47)); 8224 b6 -= b7 + k6; 8225 b7 -= k7; 8226 8227 tmp = b5 ^ b4; 8228 b5 = (tmp >> 8) | (tmp << (64 - 8)); 8229 b4 -= b5 + k4; 8230 b5 -= k5; 8231 8232 tmp = b3 ^ b2; 8233 b3 = (tmp >> 13) | (tmp << (64 - 13)); 8234 b2 -= b3 + k2; 8235 b3 -= k3; 8236 8237 tmp = b1 ^ b0; 8238 b1 = (tmp >> 24) | (tmp << (64 - 24)); 8239 b0 -= b1 + k0; 8240 b1 -= k1; 8241 8242 output[15] = b15; 8243 output[14] = b14; 8244 output[13] = b13; 8245 output[12] = b12; 8246 output[11] = b11; 8247 output[10] = b10; 8248 output[9] = b9; 8249 output[8] = b8; 8250 output[7] = b7; 8251 output[6] = b6; 8252 output[5] = b5; 8253 output[4] = b4; 8254 output[3] = b3; 8255 output[2] = b2; 8256 output[1] = b1; 8257 output[0] = b0; 8258} 8259