1// Copyright 2012 The Go Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style 3// license that can be found in the LICENSE file. 4 5// This code was translated into a form compatible with 6a from the public 6// domain sources in SUPERCOP: https://bench.cr.yp.to/supercop.html 7 8// +build amd64,!gccgo,!appengine,!purego 9 10#define REDMASK51 0x0007FFFFFFFFFFFF 11 12// These constants cannot be encoded in non-MOVQ immediates. 13// We access them directly from memory instead. 14 15DATA ·_121666_213(SB)/8, $996687872 16GLOBL ·_121666_213(SB), 8, $8 17 18DATA ·_2P0(SB)/8, $0xFFFFFFFFFFFDA 19GLOBL ·_2P0(SB), 8, $8 20 21DATA ·_2P1234(SB)/8, $0xFFFFFFFFFFFFE 22GLOBL ·_2P1234(SB), 8, $8 23 24// func freeze(inout *[5]uint64) 25TEXT ·freeze(SB),7,$0-8 26 MOVQ inout+0(FP), DI 27 28 MOVQ 0(DI),SI 29 MOVQ 8(DI),DX 30 MOVQ 16(DI),CX 31 MOVQ 24(DI),R8 32 MOVQ 32(DI),R9 33 MOVQ $REDMASK51,AX 34 MOVQ AX,R10 35 SUBQ $18,R10 36 MOVQ $3,R11 37REDUCELOOP: 38 MOVQ SI,R12 39 SHRQ $51,R12 40 ANDQ AX,SI 41 ADDQ R12,DX 42 MOVQ DX,R12 43 SHRQ $51,R12 44 ANDQ AX,DX 45 ADDQ R12,CX 46 MOVQ CX,R12 47 SHRQ $51,R12 48 ANDQ AX,CX 49 ADDQ R12,R8 50 MOVQ R8,R12 51 SHRQ $51,R12 52 ANDQ AX,R8 53 ADDQ R12,R9 54 MOVQ R9,R12 55 SHRQ $51,R12 56 ANDQ AX,R9 57 IMUL3Q $19,R12,R12 58 ADDQ R12,SI 59 SUBQ $1,R11 60 JA REDUCELOOP 61 MOVQ $1,R12 62 CMPQ R10,SI 63 CMOVQLT R11,R12 64 CMPQ AX,DX 65 CMOVQNE R11,R12 66 CMPQ AX,CX 67 CMOVQNE R11,R12 68 CMPQ AX,R8 69 CMOVQNE R11,R12 70 CMPQ AX,R9 71 CMOVQNE R11,R12 72 NEGQ R12 73 ANDQ R12,AX 74 ANDQ R12,R10 75 SUBQ R10,SI 76 SUBQ AX,DX 77 SUBQ AX,CX 78 SUBQ AX,R8 79 SUBQ AX,R9 80 MOVQ SI,0(DI) 81 MOVQ DX,8(DI) 82 MOVQ CX,16(DI) 83 MOVQ R8,24(DI) 84 MOVQ R9,32(DI) 85 RET 86 87// func ladderstep(inout *[5][5]uint64) 88TEXT ·ladderstep(SB),0,$296-8 89 MOVQ inout+0(FP),DI 90 91 MOVQ 40(DI),SI 92 MOVQ 48(DI),DX 93 MOVQ 56(DI),CX 94 MOVQ 64(DI),R8 95 MOVQ 72(DI),R9 96 MOVQ SI,AX 97 MOVQ DX,R10 98 MOVQ CX,R11 99 MOVQ R8,R12 100 MOVQ R9,R13 101 ADDQ ·_2P0(SB),AX 102 ADDQ ·_2P1234(SB),R10 103 ADDQ ·_2P1234(SB),R11 104 ADDQ ·_2P1234(SB),R12 105 ADDQ ·_2P1234(SB),R13 106 ADDQ 80(DI),SI 107 ADDQ 88(DI),DX 108 ADDQ 96(DI),CX 109 ADDQ 104(DI),R8 110 ADDQ 112(DI),R9 111 SUBQ 80(DI),AX 112 SUBQ 88(DI),R10 113 SUBQ 96(DI),R11 114 SUBQ 104(DI),R12 115 SUBQ 112(DI),R13 116 MOVQ SI,0(SP) 117 MOVQ DX,8(SP) 118 MOVQ CX,16(SP) 119 MOVQ R8,24(SP) 120 MOVQ R9,32(SP) 121 MOVQ AX,40(SP) 122 MOVQ R10,48(SP) 123 MOVQ R11,56(SP) 124 MOVQ R12,64(SP) 125 MOVQ R13,72(SP) 126 MOVQ 40(SP),AX 127 MULQ 40(SP) 128 MOVQ AX,SI 129 MOVQ DX,CX 130 MOVQ 40(SP),AX 131 SHLQ $1,AX 132 MULQ 48(SP) 133 MOVQ AX,R8 134 MOVQ DX,R9 135 MOVQ 40(SP),AX 136 SHLQ $1,AX 137 MULQ 56(SP) 138 MOVQ AX,R10 139 MOVQ DX,R11 140 MOVQ 40(SP),AX 141 SHLQ $1,AX 142 MULQ 64(SP) 143 MOVQ AX,R12 144 MOVQ DX,R13 145 MOVQ 40(SP),AX 146 SHLQ $1,AX 147 MULQ 72(SP) 148 MOVQ AX,R14 149 MOVQ DX,R15 150 MOVQ 48(SP),AX 151 MULQ 48(SP) 152 ADDQ AX,R10 153 ADCQ DX,R11 154 MOVQ 48(SP),AX 155 SHLQ $1,AX 156 MULQ 56(SP) 157 ADDQ AX,R12 158 ADCQ DX,R13 159 MOVQ 48(SP),AX 160 SHLQ $1,AX 161 MULQ 64(SP) 162 ADDQ AX,R14 163 ADCQ DX,R15 164 MOVQ 48(SP),DX 165 IMUL3Q $38,DX,AX 166 MULQ 72(SP) 167 ADDQ AX,SI 168 ADCQ DX,CX 169 MOVQ 56(SP),AX 170 MULQ 56(SP) 171 ADDQ AX,R14 172 ADCQ DX,R15 173 MOVQ 56(SP),DX 174 IMUL3Q $38,DX,AX 175 MULQ 64(SP) 176 ADDQ AX,SI 177 ADCQ DX,CX 178 MOVQ 56(SP),DX 179 IMUL3Q $38,DX,AX 180 MULQ 72(SP) 181 ADDQ AX,R8 182 ADCQ DX,R9 183 MOVQ 64(SP),DX 184 IMUL3Q $19,DX,AX 185 MULQ 64(SP) 186 ADDQ AX,R8 187 ADCQ DX,R9 188 MOVQ 64(SP),DX 189 IMUL3Q $38,DX,AX 190 MULQ 72(SP) 191 ADDQ AX,R10 192 ADCQ DX,R11 193 MOVQ 72(SP),DX 194 IMUL3Q $19,DX,AX 195 MULQ 72(SP) 196 ADDQ AX,R12 197 ADCQ DX,R13 198 MOVQ $REDMASK51,DX 199 SHLQ $13,SI,CX 200 ANDQ DX,SI 201 SHLQ $13,R8,R9 202 ANDQ DX,R8 203 ADDQ CX,R8 204 SHLQ $13,R10,R11 205 ANDQ DX,R10 206 ADDQ R9,R10 207 SHLQ $13,R12,R13 208 ANDQ DX,R12 209 ADDQ R11,R12 210 SHLQ $13,R14,R15 211 ANDQ DX,R14 212 ADDQ R13,R14 213 IMUL3Q $19,R15,CX 214 ADDQ CX,SI 215 MOVQ SI,CX 216 SHRQ $51,CX 217 ADDQ R8,CX 218 ANDQ DX,SI 219 MOVQ CX,R8 220 SHRQ $51,CX 221 ADDQ R10,CX 222 ANDQ DX,R8 223 MOVQ CX,R9 224 SHRQ $51,CX 225 ADDQ R12,CX 226 ANDQ DX,R9 227 MOVQ CX,AX 228 SHRQ $51,CX 229 ADDQ R14,CX 230 ANDQ DX,AX 231 MOVQ CX,R10 232 SHRQ $51,CX 233 IMUL3Q $19,CX,CX 234 ADDQ CX,SI 235 ANDQ DX,R10 236 MOVQ SI,80(SP) 237 MOVQ R8,88(SP) 238 MOVQ R9,96(SP) 239 MOVQ AX,104(SP) 240 MOVQ R10,112(SP) 241 MOVQ 0(SP),AX 242 MULQ 0(SP) 243 MOVQ AX,SI 244 MOVQ DX,CX 245 MOVQ 0(SP),AX 246 SHLQ $1,AX 247 MULQ 8(SP) 248 MOVQ AX,R8 249 MOVQ DX,R9 250 MOVQ 0(SP),AX 251 SHLQ $1,AX 252 MULQ 16(SP) 253 MOVQ AX,R10 254 MOVQ DX,R11 255 MOVQ 0(SP),AX 256 SHLQ $1,AX 257 MULQ 24(SP) 258 MOVQ AX,R12 259 MOVQ DX,R13 260 MOVQ 0(SP),AX 261 SHLQ $1,AX 262 MULQ 32(SP) 263 MOVQ AX,R14 264 MOVQ DX,R15 265 MOVQ 8(SP),AX 266 MULQ 8(SP) 267 ADDQ AX,R10 268 ADCQ DX,R11 269 MOVQ 8(SP),AX 270 SHLQ $1,AX 271 MULQ 16(SP) 272 ADDQ AX,R12 273 ADCQ DX,R13 274 MOVQ 8(SP),AX 275 SHLQ $1,AX 276 MULQ 24(SP) 277 ADDQ AX,R14 278 ADCQ DX,R15 279 MOVQ 8(SP),DX 280 IMUL3Q $38,DX,AX 281 MULQ 32(SP) 282 ADDQ AX,SI 283 ADCQ DX,CX 284 MOVQ 16(SP),AX 285 MULQ 16(SP) 286 ADDQ AX,R14 287 ADCQ DX,R15 288 MOVQ 16(SP),DX 289 IMUL3Q $38,DX,AX 290 MULQ 24(SP) 291 ADDQ AX,SI 292 ADCQ DX,CX 293 MOVQ 16(SP),DX 294 IMUL3Q $38,DX,AX 295 MULQ 32(SP) 296 ADDQ AX,R8 297 ADCQ DX,R9 298 MOVQ 24(SP),DX 299 IMUL3Q $19,DX,AX 300 MULQ 24(SP) 301 ADDQ AX,R8 302 ADCQ DX,R9 303 MOVQ 24(SP),DX 304 IMUL3Q $38,DX,AX 305 MULQ 32(SP) 306 ADDQ AX,R10 307 ADCQ DX,R11 308 MOVQ 32(SP),DX 309 IMUL3Q $19,DX,AX 310 MULQ 32(SP) 311 ADDQ AX,R12 312 ADCQ DX,R13 313 MOVQ $REDMASK51,DX 314 SHLQ $13,SI,CX 315 ANDQ DX,SI 316 SHLQ $13,R8,R9 317 ANDQ DX,R8 318 ADDQ CX,R8 319 SHLQ $13,R10,R11 320 ANDQ DX,R10 321 ADDQ R9,R10 322 SHLQ $13,R12,R13 323 ANDQ DX,R12 324 ADDQ R11,R12 325 SHLQ $13,R14,R15 326 ANDQ DX,R14 327 ADDQ R13,R14 328 IMUL3Q $19,R15,CX 329 ADDQ CX,SI 330 MOVQ SI,CX 331 SHRQ $51,CX 332 ADDQ R8,CX 333 ANDQ DX,SI 334 MOVQ CX,R8 335 SHRQ $51,CX 336 ADDQ R10,CX 337 ANDQ DX,R8 338 MOVQ CX,R9 339 SHRQ $51,CX 340 ADDQ R12,CX 341 ANDQ DX,R9 342 MOVQ CX,AX 343 SHRQ $51,CX 344 ADDQ R14,CX 345 ANDQ DX,AX 346 MOVQ CX,R10 347 SHRQ $51,CX 348 IMUL3Q $19,CX,CX 349 ADDQ CX,SI 350 ANDQ DX,R10 351 MOVQ SI,120(SP) 352 MOVQ R8,128(SP) 353 MOVQ R9,136(SP) 354 MOVQ AX,144(SP) 355 MOVQ R10,152(SP) 356 MOVQ SI,SI 357 MOVQ R8,DX 358 MOVQ R9,CX 359 MOVQ AX,R8 360 MOVQ R10,R9 361 ADDQ ·_2P0(SB),SI 362 ADDQ ·_2P1234(SB),DX 363 ADDQ ·_2P1234(SB),CX 364 ADDQ ·_2P1234(SB),R8 365 ADDQ ·_2P1234(SB),R9 366 SUBQ 80(SP),SI 367 SUBQ 88(SP),DX 368 SUBQ 96(SP),CX 369 SUBQ 104(SP),R8 370 SUBQ 112(SP),R9 371 MOVQ SI,160(SP) 372 MOVQ DX,168(SP) 373 MOVQ CX,176(SP) 374 MOVQ R8,184(SP) 375 MOVQ R9,192(SP) 376 MOVQ 120(DI),SI 377 MOVQ 128(DI),DX 378 MOVQ 136(DI),CX 379 MOVQ 144(DI),R8 380 MOVQ 152(DI),R9 381 MOVQ SI,AX 382 MOVQ DX,R10 383 MOVQ CX,R11 384 MOVQ R8,R12 385 MOVQ R9,R13 386 ADDQ ·_2P0(SB),AX 387 ADDQ ·_2P1234(SB),R10 388 ADDQ ·_2P1234(SB),R11 389 ADDQ ·_2P1234(SB),R12 390 ADDQ ·_2P1234(SB),R13 391 ADDQ 160(DI),SI 392 ADDQ 168(DI),DX 393 ADDQ 176(DI),CX 394 ADDQ 184(DI),R8 395 ADDQ 192(DI),R9 396 SUBQ 160(DI),AX 397 SUBQ 168(DI),R10 398 SUBQ 176(DI),R11 399 SUBQ 184(DI),R12 400 SUBQ 192(DI),R13 401 MOVQ SI,200(SP) 402 MOVQ DX,208(SP) 403 MOVQ CX,216(SP) 404 MOVQ R8,224(SP) 405 MOVQ R9,232(SP) 406 MOVQ AX,240(SP) 407 MOVQ R10,248(SP) 408 MOVQ R11,256(SP) 409 MOVQ R12,264(SP) 410 MOVQ R13,272(SP) 411 MOVQ 224(SP),SI 412 IMUL3Q $19,SI,AX 413 MOVQ AX,280(SP) 414 MULQ 56(SP) 415 MOVQ AX,SI 416 MOVQ DX,CX 417 MOVQ 232(SP),DX 418 IMUL3Q $19,DX,AX 419 MOVQ AX,288(SP) 420 MULQ 48(SP) 421 ADDQ AX,SI 422 ADCQ DX,CX 423 MOVQ 200(SP),AX 424 MULQ 40(SP) 425 ADDQ AX,SI 426 ADCQ DX,CX 427 MOVQ 200(SP),AX 428 MULQ 48(SP) 429 MOVQ AX,R8 430 MOVQ DX,R9 431 MOVQ 200(SP),AX 432 MULQ 56(SP) 433 MOVQ AX,R10 434 MOVQ DX,R11 435 MOVQ 200(SP),AX 436 MULQ 64(SP) 437 MOVQ AX,R12 438 MOVQ DX,R13 439 MOVQ 200(SP),AX 440 MULQ 72(SP) 441 MOVQ AX,R14 442 MOVQ DX,R15 443 MOVQ 208(SP),AX 444 MULQ 40(SP) 445 ADDQ AX,R8 446 ADCQ DX,R9 447 MOVQ 208(SP),AX 448 MULQ 48(SP) 449 ADDQ AX,R10 450 ADCQ DX,R11 451 MOVQ 208(SP),AX 452 MULQ 56(SP) 453 ADDQ AX,R12 454 ADCQ DX,R13 455 MOVQ 208(SP),AX 456 MULQ 64(SP) 457 ADDQ AX,R14 458 ADCQ DX,R15 459 MOVQ 208(SP),DX 460 IMUL3Q $19,DX,AX 461 MULQ 72(SP) 462 ADDQ AX,SI 463 ADCQ DX,CX 464 MOVQ 216(SP),AX 465 MULQ 40(SP) 466 ADDQ AX,R10 467 ADCQ DX,R11 468 MOVQ 216(SP),AX 469 MULQ 48(SP) 470 ADDQ AX,R12 471 ADCQ DX,R13 472 MOVQ 216(SP),AX 473 MULQ 56(SP) 474 ADDQ AX,R14 475 ADCQ DX,R15 476 MOVQ 216(SP),DX 477 IMUL3Q $19,DX,AX 478 MULQ 64(SP) 479 ADDQ AX,SI 480 ADCQ DX,CX 481 MOVQ 216(SP),DX 482 IMUL3Q $19,DX,AX 483 MULQ 72(SP) 484 ADDQ AX,R8 485 ADCQ DX,R9 486 MOVQ 224(SP),AX 487 MULQ 40(SP) 488 ADDQ AX,R12 489 ADCQ DX,R13 490 MOVQ 224(SP),AX 491 MULQ 48(SP) 492 ADDQ AX,R14 493 ADCQ DX,R15 494 MOVQ 280(SP),AX 495 MULQ 64(SP) 496 ADDQ AX,R8 497 ADCQ DX,R9 498 MOVQ 280(SP),AX 499 MULQ 72(SP) 500 ADDQ AX,R10 501 ADCQ DX,R11 502 MOVQ 232(SP),AX 503 MULQ 40(SP) 504 ADDQ AX,R14 505 ADCQ DX,R15 506 MOVQ 288(SP),AX 507 MULQ 56(SP) 508 ADDQ AX,R8 509 ADCQ DX,R9 510 MOVQ 288(SP),AX 511 MULQ 64(SP) 512 ADDQ AX,R10 513 ADCQ DX,R11 514 MOVQ 288(SP),AX 515 MULQ 72(SP) 516 ADDQ AX,R12 517 ADCQ DX,R13 518 MOVQ $REDMASK51,DX 519 SHLQ $13,SI,CX 520 ANDQ DX,SI 521 SHLQ $13,R8,R9 522 ANDQ DX,R8 523 ADDQ CX,R8 524 SHLQ $13,R10,R11 525 ANDQ DX,R10 526 ADDQ R9,R10 527 SHLQ $13,R12,R13 528 ANDQ DX,R12 529 ADDQ R11,R12 530 SHLQ $13,R14,R15 531 ANDQ DX,R14 532 ADDQ R13,R14 533 IMUL3Q $19,R15,CX 534 ADDQ CX,SI 535 MOVQ SI,CX 536 SHRQ $51,CX 537 ADDQ R8,CX 538 MOVQ CX,R8 539 SHRQ $51,CX 540 ANDQ DX,SI 541 ADDQ R10,CX 542 MOVQ CX,R9 543 SHRQ $51,CX 544 ANDQ DX,R8 545 ADDQ R12,CX 546 MOVQ CX,AX 547 SHRQ $51,CX 548 ANDQ DX,R9 549 ADDQ R14,CX 550 MOVQ CX,R10 551 SHRQ $51,CX 552 ANDQ DX,AX 553 IMUL3Q $19,CX,CX 554 ADDQ CX,SI 555 ANDQ DX,R10 556 MOVQ SI,40(SP) 557 MOVQ R8,48(SP) 558 MOVQ R9,56(SP) 559 MOVQ AX,64(SP) 560 MOVQ R10,72(SP) 561 MOVQ 264(SP),SI 562 IMUL3Q $19,SI,AX 563 MOVQ AX,200(SP) 564 MULQ 16(SP) 565 MOVQ AX,SI 566 MOVQ DX,CX 567 MOVQ 272(SP),DX 568 IMUL3Q $19,DX,AX 569 MOVQ AX,208(SP) 570 MULQ 8(SP) 571 ADDQ AX,SI 572 ADCQ DX,CX 573 MOVQ 240(SP),AX 574 MULQ 0(SP) 575 ADDQ AX,SI 576 ADCQ DX,CX 577 MOVQ 240(SP),AX 578 MULQ 8(SP) 579 MOVQ AX,R8 580 MOVQ DX,R9 581 MOVQ 240(SP),AX 582 MULQ 16(SP) 583 MOVQ AX,R10 584 MOVQ DX,R11 585 MOVQ 240(SP),AX 586 MULQ 24(SP) 587 MOVQ AX,R12 588 MOVQ DX,R13 589 MOVQ 240(SP),AX 590 MULQ 32(SP) 591 MOVQ AX,R14 592 MOVQ DX,R15 593 MOVQ 248(SP),AX 594 MULQ 0(SP) 595 ADDQ AX,R8 596 ADCQ DX,R9 597 MOVQ 248(SP),AX 598 MULQ 8(SP) 599 ADDQ AX,R10 600 ADCQ DX,R11 601 MOVQ 248(SP),AX 602 MULQ 16(SP) 603 ADDQ AX,R12 604 ADCQ DX,R13 605 MOVQ 248(SP),AX 606 MULQ 24(SP) 607 ADDQ AX,R14 608 ADCQ DX,R15 609 MOVQ 248(SP),DX 610 IMUL3Q $19,DX,AX 611 MULQ 32(SP) 612 ADDQ AX,SI 613 ADCQ DX,CX 614 MOVQ 256(SP),AX 615 MULQ 0(SP) 616 ADDQ AX,R10 617 ADCQ DX,R11 618 MOVQ 256(SP),AX 619 MULQ 8(SP) 620 ADDQ AX,R12 621 ADCQ DX,R13 622 MOVQ 256(SP),AX 623 MULQ 16(SP) 624 ADDQ AX,R14 625 ADCQ DX,R15 626 MOVQ 256(SP),DX 627 IMUL3Q $19,DX,AX 628 MULQ 24(SP) 629 ADDQ AX,SI 630 ADCQ DX,CX 631 MOVQ 256(SP),DX 632 IMUL3Q $19,DX,AX 633 MULQ 32(SP) 634 ADDQ AX,R8 635 ADCQ DX,R9 636 MOVQ 264(SP),AX 637 MULQ 0(SP) 638 ADDQ AX,R12 639 ADCQ DX,R13 640 MOVQ 264(SP),AX 641 MULQ 8(SP) 642 ADDQ AX,R14 643 ADCQ DX,R15 644 MOVQ 200(SP),AX 645 MULQ 24(SP) 646 ADDQ AX,R8 647 ADCQ DX,R9 648 MOVQ 200(SP),AX 649 MULQ 32(SP) 650 ADDQ AX,R10 651 ADCQ DX,R11 652 MOVQ 272(SP),AX 653 MULQ 0(SP) 654 ADDQ AX,R14 655 ADCQ DX,R15 656 MOVQ 208(SP),AX 657 MULQ 16(SP) 658 ADDQ AX,R8 659 ADCQ DX,R9 660 MOVQ 208(SP),AX 661 MULQ 24(SP) 662 ADDQ AX,R10 663 ADCQ DX,R11 664 MOVQ 208(SP),AX 665 MULQ 32(SP) 666 ADDQ AX,R12 667 ADCQ DX,R13 668 MOVQ $REDMASK51,DX 669 SHLQ $13,SI,CX 670 ANDQ DX,SI 671 SHLQ $13,R8,R9 672 ANDQ DX,R8 673 ADDQ CX,R8 674 SHLQ $13,R10,R11 675 ANDQ DX,R10 676 ADDQ R9,R10 677 SHLQ $13,R12,R13 678 ANDQ DX,R12 679 ADDQ R11,R12 680 SHLQ $13,R14,R15 681 ANDQ DX,R14 682 ADDQ R13,R14 683 IMUL3Q $19,R15,CX 684 ADDQ CX,SI 685 MOVQ SI,CX 686 SHRQ $51,CX 687 ADDQ R8,CX 688 MOVQ CX,R8 689 SHRQ $51,CX 690 ANDQ DX,SI 691 ADDQ R10,CX 692 MOVQ CX,R9 693 SHRQ $51,CX 694 ANDQ DX,R8 695 ADDQ R12,CX 696 MOVQ CX,AX 697 SHRQ $51,CX 698 ANDQ DX,R9 699 ADDQ R14,CX 700 MOVQ CX,R10 701 SHRQ $51,CX 702 ANDQ DX,AX 703 IMUL3Q $19,CX,CX 704 ADDQ CX,SI 705 ANDQ DX,R10 706 MOVQ SI,DX 707 MOVQ R8,CX 708 MOVQ R9,R11 709 MOVQ AX,R12 710 MOVQ R10,R13 711 ADDQ ·_2P0(SB),DX 712 ADDQ ·_2P1234(SB),CX 713 ADDQ ·_2P1234(SB),R11 714 ADDQ ·_2P1234(SB),R12 715 ADDQ ·_2P1234(SB),R13 716 ADDQ 40(SP),SI 717 ADDQ 48(SP),R8 718 ADDQ 56(SP),R9 719 ADDQ 64(SP),AX 720 ADDQ 72(SP),R10 721 SUBQ 40(SP),DX 722 SUBQ 48(SP),CX 723 SUBQ 56(SP),R11 724 SUBQ 64(SP),R12 725 SUBQ 72(SP),R13 726 MOVQ SI,120(DI) 727 MOVQ R8,128(DI) 728 MOVQ R9,136(DI) 729 MOVQ AX,144(DI) 730 MOVQ R10,152(DI) 731 MOVQ DX,160(DI) 732 MOVQ CX,168(DI) 733 MOVQ R11,176(DI) 734 MOVQ R12,184(DI) 735 MOVQ R13,192(DI) 736 MOVQ 120(DI),AX 737 MULQ 120(DI) 738 MOVQ AX,SI 739 MOVQ DX,CX 740 MOVQ 120(DI),AX 741 SHLQ $1,AX 742 MULQ 128(DI) 743 MOVQ AX,R8 744 MOVQ DX,R9 745 MOVQ 120(DI),AX 746 SHLQ $1,AX 747 MULQ 136(DI) 748 MOVQ AX,R10 749 MOVQ DX,R11 750 MOVQ 120(DI),AX 751 SHLQ $1,AX 752 MULQ 144(DI) 753 MOVQ AX,R12 754 MOVQ DX,R13 755 MOVQ 120(DI),AX 756 SHLQ $1,AX 757 MULQ 152(DI) 758 MOVQ AX,R14 759 MOVQ DX,R15 760 MOVQ 128(DI),AX 761 MULQ 128(DI) 762 ADDQ AX,R10 763 ADCQ DX,R11 764 MOVQ 128(DI),AX 765 SHLQ $1,AX 766 MULQ 136(DI) 767 ADDQ AX,R12 768 ADCQ DX,R13 769 MOVQ 128(DI),AX 770 SHLQ $1,AX 771 MULQ 144(DI) 772 ADDQ AX,R14 773 ADCQ DX,R15 774 MOVQ 128(DI),DX 775 IMUL3Q $38,DX,AX 776 MULQ 152(DI) 777 ADDQ AX,SI 778 ADCQ DX,CX 779 MOVQ 136(DI),AX 780 MULQ 136(DI) 781 ADDQ AX,R14 782 ADCQ DX,R15 783 MOVQ 136(DI),DX 784 IMUL3Q $38,DX,AX 785 MULQ 144(DI) 786 ADDQ AX,SI 787 ADCQ DX,CX 788 MOVQ 136(DI),DX 789 IMUL3Q $38,DX,AX 790 MULQ 152(DI) 791 ADDQ AX,R8 792 ADCQ DX,R9 793 MOVQ 144(DI),DX 794 IMUL3Q $19,DX,AX 795 MULQ 144(DI) 796 ADDQ AX,R8 797 ADCQ DX,R9 798 MOVQ 144(DI),DX 799 IMUL3Q $38,DX,AX 800 MULQ 152(DI) 801 ADDQ AX,R10 802 ADCQ DX,R11 803 MOVQ 152(DI),DX 804 IMUL3Q $19,DX,AX 805 MULQ 152(DI) 806 ADDQ AX,R12 807 ADCQ DX,R13 808 MOVQ $REDMASK51,DX 809 SHLQ $13,SI,CX 810 ANDQ DX,SI 811 SHLQ $13,R8,R9 812 ANDQ DX,R8 813 ADDQ CX,R8 814 SHLQ $13,R10,R11 815 ANDQ DX,R10 816 ADDQ R9,R10 817 SHLQ $13,R12,R13 818 ANDQ DX,R12 819 ADDQ R11,R12 820 SHLQ $13,R14,R15 821 ANDQ DX,R14 822 ADDQ R13,R14 823 IMUL3Q $19,R15,CX 824 ADDQ CX,SI 825 MOVQ SI,CX 826 SHRQ $51,CX 827 ADDQ R8,CX 828 ANDQ DX,SI 829 MOVQ CX,R8 830 SHRQ $51,CX 831 ADDQ R10,CX 832 ANDQ DX,R8 833 MOVQ CX,R9 834 SHRQ $51,CX 835 ADDQ R12,CX 836 ANDQ DX,R9 837 MOVQ CX,AX 838 SHRQ $51,CX 839 ADDQ R14,CX 840 ANDQ DX,AX 841 MOVQ CX,R10 842 SHRQ $51,CX 843 IMUL3Q $19,CX,CX 844 ADDQ CX,SI 845 ANDQ DX,R10 846 MOVQ SI,120(DI) 847 MOVQ R8,128(DI) 848 MOVQ R9,136(DI) 849 MOVQ AX,144(DI) 850 MOVQ R10,152(DI) 851 MOVQ 160(DI),AX 852 MULQ 160(DI) 853 MOVQ AX,SI 854 MOVQ DX,CX 855 MOVQ 160(DI),AX 856 SHLQ $1,AX 857 MULQ 168(DI) 858 MOVQ AX,R8 859 MOVQ DX,R9 860 MOVQ 160(DI),AX 861 SHLQ $1,AX 862 MULQ 176(DI) 863 MOVQ AX,R10 864 MOVQ DX,R11 865 MOVQ 160(DI),AX 866 SHLQ $1,AX 867 MULQ 184(DI) 868 MOVQ AX,R12 869 MOVQ DX,R13 870 MOVQ 160(DI),AX 871 SHLQ $1,AX 872 MULQ 192(DI) 873 MOVQ AX,R14 874 MOVQ DX,R15 875 MOVQ 168(DI),AX 876 MULQ 168(DI) 877 ADDQ AX,R10 878 ADCQ DX,R11 879 MOVQ 168(DI),AX 880 SHLQ $1,AX 881 MULQ 176(DI) 882 ADDQ AX,R12 883 ADCQ DX,R13 884 MOVQ 168(DI),AX 885 SHLQ $1,AX 886 MULQ 184(DI) 887 ADDQ AX,R14 888 ADCQ DX,R15 889 MOVQ 168(DI),DX 890 IMUL3Q $38,DX,AX 891 MULQ 192(DI) 892 ADDQ AX,SI 893 ADCQ DX,CX 894 MOVQ 176(DI),AX 895 MULQ 176(DI) 896 ADDQ AX,R14 897 ADCQ DX,R15 898 MOVQ 176(DI),DX 899 IMUL3Q $38,DX,AX 900 MULQ 184(DI) 901 ADDQ AX,SI 902 ADCQ DX,CX 903 MOVQ 176(DI),DX 904 IMUL3Q $38,DX,AX 905 MULQ 192(DI) 906 ADDQ AX,R8 907 ADCQ DX,R9 908 MOVQ 184(DI),DX 909 IMUL3Q $19,DX,AX 910 MULQ 184(DI) 911 ADDQ AX,R8 912 ADCQ DX,R9 913 MOVQ 184(DI),DX 914 IMUL3Q $38,DX,AX 915 MULQ 192(DI) 916 ADDQ AX,R10 917 ADCQ DX,R11 918 MOVQ 192(DI),DX 919 IMUL3Q $19,DX,AX 920 MULQ 192(DI) 921 ADDQ AX,R12 922 ADCQ DX,R13 923 MOVQ $REDMASK51,DX 924 SHLQ $13,SI,CX 925 ANDQ DX,SI 926 SHLQ $13,R8,R9 927 ANDQ DX,R8 928 ADDQ CX,R8 929 SHLQ $13,R10,R11 930 ANDQ DX,R10 931 ADDQ R9,R10 932 SHLQ $13,R12,R13 933 ANDQ DX,R12 934 ADDQ R11,R12 935 SHLQ $13,R14,R15 936 ANDQ DX,R14 937 ADDQ R13,R14 938 IMUL3Q $19,R15,CX 939 ADDQ CX,SI 940 MOVQ SI,CX 941 SHRQ $51,CX 942 ADDQ R8,CX 943 ANDQ DX,SI 944 MOVQ CX,R8 945 SHRQ $51,CX 946 ADDQ R10,CX 947 ANDQ DX,R8 948 MOVQ CX,R9 949 SHRQ $51,CX 950 ADDQ R12,CX 951 ANDQ DX,R9 952 MOVQ CX,AX 953 SHRQ $51,CX 954 ADDQ R14,CX 955 ANDQ DX,AX 956 MOVQ CX,R10 957 SHRQ $51,CX 958 IMUL3Q $19,CX,CX 959 ADDQ CX,SI 960 ANDQ DX,R10 961 MOVQ SI,160(DI) 962 MOVQ R8,168(DI) 963 MOVQ R9,176(DI) 964 MOVQ AX,184(DI) 965 MOVQ R10,192(DI) 966 MOVQ 184(DI),SI 967 IMUL3Q $19,SI,AX 968 MOVQ AX,0(SP) 969 MULQ 16(DI) 970 MOVQ AX,SI 971 MOVQ DX,CX 972 MOVQ 192(DI),DX 973 IMUL3Q $19,DX,AX 974 MOVQ AX,8(SP) 975 MULQ 8(DI) 976 ADDQ AX,SI 977 ADCQ DX,CX 978 MOVQ 160(DI),AX 979 MULQ 0(DI) 980 ADDQ AX,SI 981 ADCQ DX,CX 982 MOVQ 160(DI),AX 983 MULQ 8(DI) 984 MOVQ AX,R8 985 MOVQ DX,R9 986 MOVQ 160(DI),AX 987 MULQ 16(DI) 988 MOVQ AX,R10 989 MOVQ DX,R11 990 MOVQ 160(DI),AX 991 MULQ 24(DI) 992 MOVQ AX,R12 993 MOVQ DX,R13 994 MOVQ 160(DI),AX 995 MULQ 32(DI) 996 MOVQ AX,R14 997 MOVQ DX,R15 998 MOVQ 168(DI),AX 999 MULQ 0(DI) 1000 ADDQ AX,R8 1001 ADCQ DX,R9 1002 MOVQ 168(DI),AX 1003 MULQ 8(DI) 1004 ADDQ AX,R10 1005 ADCQ DX,R11 1006 MOVQ 168(DI),AX 1007 MULQ 16(DI) 1008 ADDQ AX,R12 1009 ADCQ DX,R13 1010 MOVQ 168(DI),AX 1011 MULQ 24(DI) 1012 ADDQ AX,R14 1013 ADCQ DX,R15 1014 MOVQ 168(DI),DX 1015 IMUL3Q $19,DX,AX 1016 MULQ 32(DI) 1017 ADDQ AX,SI 1018 ADCQ DX,CX 1019 MOVQ 176(DI),AX 1020 MULQ 0(DI) 1021 ADDQ AX,R10 1022 ADCQ DX,R11 1023 MOVQ 176(DI),AX 1024 MULQ 8(DI) 1025 ADDQ AX,R12 1026 ADCQ DX,R13 1027 MOVQ 176(DI),AX 1028 MULQ 16(DI) 1029 ADDQ AX,R14 1030 ADCQ DX,R15 1031 MOVQ 176(DI),DX 1032 IMUL3Q $19,DX,AX 1033 MULQ 24(DI) 1034 ADDQ AX,SI 1035 ADCQ DX,CX 1036 MOVQ 176(DI),DX 1037 IMUL3Q $19,DX,AX 1038 MULQ 32(DI) 1039 ADDQ AX,R8 1040 ADCQ DX,R9 1041 MOVQ 184(DI),AX 1042 MULQ 0(DI) 1043 ADDQ AX,R12 1044 ADCQ DX,R13 1045 MOVQ 184(DI),AX 1046 MULQ 8(DI) 1047 ADDQ AX,R14 1048 ADCQ DX,R15 1049 MOVQ 0(SP),AX 1050 MULQ 24(DI) 1051 ADDQ AX,R8 1052 ADCQ DX,R9 1053 MOVQ 0(SP),AX 1054 MULQ 32(DI) 1055 ADDQ AX,R10 1056 ADCQ DX,R11 1057 MOVQ 192(DI),AX 1058 MULQ 0(DI) 1059 ADDQ AX,R14 1060 ADCQ DX,R15 1061 MOVQ 8(SP),AX 1062 MULQ 16(DI) 1063 ADDQ AX,R8 1064 ADCQ DX,R9 1065 MOVQ 8(SP),AX 1066 MULQ 24(DI) 1067 ADDQ AX,R10 1068 ADCQ DX,R11 1069 MOVQ 8(SP),AX 1070 MULQ 32(DI) 1071 ADDQ AX,R12 1072 ADCQ DX,R13 1073 MOVQ $REDMASK51,DX 1074 SHLQ $13,SI,CX 1075 ANDQ DX,SI 1076 SHLQ $13,R8,R9 1077 ANDQ DX,R8 1078 ADDQ CX,R8 1079 SHLQ $13,R10,R11 1080 ANDQ DX,R10 1081 ADDQ R9,R10 1082 SHLQ $13,R12,R13 1083 ANDQ DX,R12 1084 ADDQ R11,R12 1085 SHLQ $13,R14,R15 1086 ANDQ DX,R14 1087 ADDQ R13,R14 1088 IMUL3Q $19,R15,CX 1089 ADDQ CX,SI 1090 MOVQ SI,CX 1091 SHRQ $51,CX 1092 ADDQ R8,CX 1093 MOVQ CX,R8 1094 SHRQ $51,CX 1095 ANDQ DX,SI 1096 ADDQ R10,CX 1097 MOVQ CX,R9 1098 SHRQ $51,CX 1099 ANDQ DX,R8 1100 ADDQ R12,CX 1101 MOVQ CX,AX 1102 SHRQ $51,CX 1103 ANDQ DX,R9 1104 ADDQ R14,CX 1105 MOVQ CX,R10 1106 SHRQ $51,CX 1107 ANDQ DX,AX 1108 IMUL3Q $19,CX,CX 1109 ADDQ CX,SI 1110 ANDQ DX,R10 1111 MOVQ SI,160(DI) 1112 MOVQ R8,168(DI) 1113 MOVQ R9,176(DI) 1114 MOVQ AX,184(DI) 1115 MOVQ R10,192(DI) 1116 MOVQ 144(SP),SI 1117 IMUL3Q $19,SI,AX 1118 MOVQ AX,0(SP) 1119 MULQ 96(SP) 1120 MOVQ AX,SI 1121 MOVQ DX,CX 1122 MOVQ 152(SP),DX 1123 IMUL3Q $19,DX,AX 1124 MOVQ AX,8(SP) 1125 MULQ 88(SP) 1126 ADDQ AX,SI 1127 ADCQ DX,CX 1128 MOVQ 120(SP),AX 1129 MULQ 80(SP) 1130 ADDQ AX,SI 1131 ADCQ DX,CX 1132 MOVQ 120(SP),AX 1133 MULQ 88(SP) 1134 MOVQ AX,R8 1135 MOVQ DX,R9 1136 MOVQ 120(SP),AX 1137 MULQ 96(SP) 1138 MOVQ AX,R10 1139 MOVQ DX,R11 1140 MOVQ 120(SP),AX 1141 MULQ 104(SP) 1142 MOVQ AX,R12 1143 MOVQ DX,R13 1144 MOVQ 120(SP),AX 1145 MULQ 112(SP) 1146 MOVQ AX,R14 1147 MOVQ DX,R15 1148 MOVQ 128(SP),AX 1149 MULQ 80(SP) 1150 ADDQ AX,R8 1151 ADCQ DX,R9 1152 MOVQ 128(SP),AX 1153 MULQ 88(SP) 1154 ADDQ AX,R10 1155 ADCQ DX,R11 1156 MOVQ 128(SP),AX 1157 MULQ 96(SP) 1158 ADDQ AX,R12 1159 ADCQ DX,R13 1160 MOVQ 128(SP),AX 1161 MULQ 104(SP) 1162 ADDQ AX,R14 1163 ADCQ DX,R15 1164 MOVQ 128(SP),DX 1165 IMUL3Q $19,DX,AX 1166 MULQ 112(SP) 1167 ADDQ AX,SI 1168 ADCQ DX,CX 1169 MOVQ 136(SP),AX 1170 MULQ 80(SP) 1171 ADDQ AX,R10 1172 ADCQ DX,R11 1173 MOVQ 136(SP),AX 1174 MULQ 88(SP) 1175 ADDQ AX,R12 1176 ADCQ DX,R13 1177 MOVQ 136(SP),AX 1178 MULQ 96(SP) 1179 ADDQ AX,R14 1180 ADCQ DX,R15 1181 MOVQ 136(SP),DX 1182 IMUL3Q $19,DX,AX 1183 MULQ 104(SP) 1184 ADDQ AX,SI 1185 ADCQ DX,CX 1186 MOVQ 136(SP),DX 1187 IMUL3Q $19,DX,AX 1188 MULQ 112(SP) 1189 ADDQ AX,R8 1190 ADCQ DX,R9 1191 MOVQ 144(SP),AX 1192 MULQ 80(SP) 1193 ADDQ AX,R12 1194 ADCQ DX,R13 1195 MOVQ 144(SP),AX 1196 MULQ 88(SP) 1197 ADDQ AX,R14 1198 ADCQ DX,R15 1199 MOVQ 0(SP),AX 1200 MULQ 104(SP) 1201 ADDQ AX,R8 1202 ADCQ DX,R9 1203 MOVQ 0(SP),AX 1204 MULQ 112(SP) 1205 ADDQ AX,R10 1206 ADCQ DX,R11 1207 MOVQ 152(SP),AX 1208 MULQ 80(SP) 1209 ADDQ AX,R14 1210 ADCQ DX,R15 1211 MOVQ 8(SP),AX 1212 MULQ 96(SP) 1213 ADDQ AX,R8 1214 ADCQ DX,R9 1215 MOVQ 8(SP),AX 1216 MULQ 104(SP) 1217 ADDQ AX,R10 1218 ADCQ DX,R11 1219 MOVQ 8(SP),AX 1220 MULQ 112(SP) 1221 ADDQ AX,R12 1222 ADCQ DX,R13 1223 MOVQ $REDMASK51,DX 1224 SHLQ $13,SI,CX 1225 ANDQ DX,SI 1226 SHLQ $13,R8,R9 1227 ANDQ DX,R8 1228 ADDQ CX,R8 1229 SHLQ $13,R10,R11 1230 ANDQ DX,R10 1231 ADDQ R9,R10 1232 SHLQ $13,R12,R13 1233 ANDQ DX,R12 1234 ADDQ R11,R12 1235 SHLQ $13,R14,R15 1236 ANDQ DX,R14 1237 ADDQ R13,R14 1238 IMUL3Q $19,R15,CX 1239 ADDQ CX,SI 1240 MOVQ SI,CX 1241 SHRQ $51,CX 1242 ADDQ R8,CX 1243 MOVQ CX,R8 1244 SHRQ $51,CX 1245 ANDQ DX,SI 1246 ADDQ R10,CX 1247 MOVQ CX,R9 1248 SHRQ $51,CX 1249 ANDQ DX,R8 1250 ADDQ R12,CX 1251 MOVQ CX,AX 1252 SHRQ $51,CX 1253 ANDQ DX,R9 1254 ADDQ R14,CX 1255 MOVQ CX,R10 1256 SHRQ $51,CX 1257 ANDQ DX,AX 1258 IMUL3Q $19,CX,CX 1259 ADDQ CX,SI 1260 ANDQ DX,R10 1261 MOVQ SI,40(DI) 1262 MOVQ R8,48(DI) 1263 MOVQ R9,56(DI) 1264 MOVQ AX,64(DI) 1265 MOVQ R10,72(DI) 1266 MOVQ 160(SP),AX 1267 MULQ ·_121666_213(SB) 1268 SHRQ $13,AX 1269 MOVQ AX,SI 1270 MOVQ DX,CX 1271 MOVQ 168(SP),AX 1272 MULQ ·_121666_213(SB) 1273 SHRQ $13,AX 1274 ADDQ AX,CX 1275 MOVQ DX,R8 1276 MOVQ 176(SP),AX 1277 MULQ ·_121666_213(SB) 1278 SHRQ $13,AX 1279 ADDQ AX,R8 1280 MOVQ DX,R9 1281 MOVQ 184(SP),AX 1282 MULQ ·_121666_213(SB) 1283 SHRQ $13,AX 1284 ADDQ AX,R9 1285 MOVQ DX,R10 1286 MOVQ 192(SP),AX 1287 MULQ ·_121666_213(SB) 1288 SHRQ $13,AX 1289 ADDQ AX,R10 1290 IMUL3Q $19,DX,DX 1291 ADDQ DX,SI 1292 ADDQ 80(SP),SI 1293 ADDQ 88(SP),CX 1294 ADDQ 96(SP),R8 1295 ADDQ 104(SP),R9 1296 ADDQ 112(SP),R10 1297 MOVQ SI,80(DI) 1298 MOVQ CX,88(DI) 1299 MOVQ R8,96(DI) 1300 MOVQ R9,104(DI) 1301 MOVQ R10,112(DI) 1302 MOVQ 104(DI),SI 1303 IMUL3Q $19,SI,AX 1304 MOVQ AX,0(SP) 1305 MULQ 176(SP) 1306 MOVQ AX,SI 1307 MOVQ DX,CX 1308 MOVQ 112(DI),DX 1309 IMUL3Q $19,DX,AX 1310 MOVQ AX,8(SP) 1311 MULQ 168(SP) 1312 ADDQ AX,SI 1313 ADCQ DX,CX 1314 MOVQ 80(DI),AX 1315 MULQ 160(SP) 1316 ADDQ AX,SI 1317 ADCQ DX,CX 1318 MOVQ 80(DI),AX 1319 MULQ 168(SP) 1320 MOVQ AX,R8 1321 MOVQ DX,R9 1322 MOVQ 80(DI),AX 1323 MULQ 176(SP) 1324 MOVQ AX,R10 1325 MOVQ DX,R11 1326 MOVQ 80(DI),AX 1327 MULQ 184(SP) 1328 MOVQ AX,R12 1329 MOVQ DX,R13 1330 MOVQ 80(DI),AX 1331 MULQ 192(SP) 1332 MOVQ AX,R14 1333 MOVQ DX,R15 1334 MOVQ 88(DI),AX 1335 MULQ 160(SP) 1336 ADDQ AX,R8 1337 ADCQ DX,R9 1338 MOVQ 88(DI),AX 1339 MULQ 168(SP) 1340 ADDQ AX,R10 1341 ADCQ DX,R11 1342 MOVQ 88(DI),AX 1343 MULQ 176(SP) 1344 ADDQ AX,R12 1345 ADCQ DX,R13 1346 MOVQ 88(DI),AX 1347 MULQ 184(SP) 1348 ADDQ AX,R14 1349 ADCQ DX,R15 1350 MOVQ 88(DI),DX 1351 IMUL3Q $19,DX,AX 1352 MULQ 192(SP) 1353 ADDQ AX,SI 1354 ADCQ DX,CX 1355 MOVQ 96(DI),AX 1356 MULQ 160(SP) 1357 ADDQ AX,R10 1358 ADCQ DX,R11 1359 MOVQ 96(DI),AX 1360 MULQ 168(SP) 1361 ADDQ AX,R12 1362 ADCQ DX,R13 1363 MOVQ 96(DI),AX 1364 MULQ 176(SP) 1365 ADDQ AX,R14 1366 ADCQ DX,R15 1367 MOVQ 96(DI),DX 1368 IMUL3Q $19,DX,AX 1369 MULQ 184(SP) 1370 ADDQ AX,SI 1371 ADCQ DX,CX 1372 MOVQ 96(DI),DX 1373 IMUL3Q $19,DX,AX 1374 MULQ 192(SP) 1375 ADDQ AX,R8 1376 ADCQ DX,R9 1377 MOVQ 104(DI),AX 1378 MULQ 160(SP) 1379 ADDQ AX,R12 1380 ADCQ DX,R13 1381 MOVQ 104(DI),AX 1382 MULQ 168(SP) 1383 ADDQ AX,R14 1384 ADCQ DX,R15 1385 MOVQ 0(SP),AX 1386 MULQ 184(SP) 1387 ADDQ AX,R8 1388 ADCQ DX,R9 1389 MOVQ 0(SP),AX 1390 MULQ 192(SP) 1391 ADDQ AX,R10 1392 ADCQ DX,R11 1393 MOVQ 112(DI),AX 1394 MULQ 160(SP) 1395 ADDQ AX,R14 1396 ADCQ DX,R15 1397 MOVQ 8(SP),AX 1398 MULQ 176(SP) 1399 ADDQ AX,R8 1400 ADCQ DX,R9 1401 MOVQ 8(SP),AX 1402 MULQ 184(SP) 1403 ADDQ AX,R10 1404 ADCQ DX,R11 1405 MOVQ 8(SP),AX 1406 MULQ 192(SP) 1407 ADDQ AX,R12 1408 ADCQ DX,R13 1409 MOVQ $REDMASK51,DX 1410 SHLQ $13,SI,CX 1411 ANDQ DX,SI 1412 SHLQ $13,R8,R9 1413 ANDQ DX,R8 1414 ADDQ CX,R8 1415 SHLQ $13,R10,R11 1416 ANDQ DX,R10 1417 ADDQ R9,R10 1418 SHLQ $13,R12,R13 1419 ANDQ DX,R12 1420 ADDQ R11,R12 1421 SHLQ $13,R14,R15 1422 ANDQ DX,R14 1423 ADDQ R13,R14 1424 IMUL3Q $19,R15,CX 1425 ADDQ CX,SI 1426 MOVQ SI,CX 1427 SHRQ $51,CX 1428 ADDQ R8,CX 1429 MOVQ CX,R8 1430 SHRQ $51,CX 1431 ANDQ DX,SI 1432 ADDQ R10,CX 1433 MOVQ CX,R9 1434 SHRQ $51,CX 1435 ANDQ DX,R8 1436 ADDQ R12,CX 1437 MOVQ CX,AX 1438 SHRQ $51,CX 1439 ANDQ DX,R9 1440 ADDQ R14,CX 1441 MOVQ CX,R10 1442 SHRQ $51,CX 1443 ANDQ DX,AX 1444 IMUL3Q $19,CX,CX 1445 ADDQ CX,SI 1446 ANDQ DX,R10 1447 MOVQ SI,80(DI) 1448 MOVQ R8,88(DI) 1449 MOVQ R9,96(DI) 1450 MOVQ AX,104(DI) 1451 MOVQ R10,112(DI) 1452 RET 1453 1454// func cswap(inout *[4][5]uint64, v uint64) 1455TEXT ·cswap(SB),7,$0 1456 MOVQ inout+0(FP),DI 1457 MOVQ v+8(FP),SI 1458 1459 SUBQ $1, SI 1460 NOTQ SI 1461 MOVQ SI, X15 1462 PSHUFD $0x44, X15, X15 1463 1464 MOVOU 0(DI), X0 1465 MOVOU 16(DI), X2 1466 MOVOU 32(DI), X4 1467 MOVOU 48(DI), X6 1468 MOVOU 64(DI), X8 1469 MOVOU 80(DI), X1 1470 MOVOU 96(DI), X3 1471 MOVOU 112(DI), X5 1472 MOVOU 128(DI), X7 1473 MOVOU 144(DI), X9 1474 1475 MOVO X1, X10 1476 MOVO X3, X11 1477 MOVO X5, X12 1478 MOVO X7, X13 1479 MOVO X9, X14 1480 1481 PXOR X0, X10 1482 PXOR X2, X11 1483 PXOR X4, X12 1484 PXOR X6, X13 1485 PXOR X8, X14 1486 PAND X15, X10 1487 PAND X15, X11 1488 PAND X15, X12 1489 PAND X15, X13 1490 PAND X15, X14 1491 PXOR X10, X0 1492 PXOR X10, X1 1493 PXOR X11, X2 1494 PXOR X11, X3 1495 PXOR X12, X4 1496 PXOR X12, X5 1497 PXOR X13, X6 1498 PXOR X13, X7 1499 PXOR X14, X8 1500 PXOR X14, X9 1501 1502 MOVOU X0, 0(DI) 1503 MOVOU X2, 16(DI) 1504 MOVOU X4, 32(DI) 1505 MOVOU X6, 48(DI) 1506 MOVOU X8, 64(DI) 1507 MOVOU X1, 80(DI) 1508 MOVOU X3, 96(DI) 1509 MOVOU X5, 112(DI) 1510 MOVOU X7, 128(DI) 1511 MOVOU X9, 144(DI) 1512 RET 1513 1514// func mul(dest, a, b *[5]uint64) 1515TEXT ·mul(SB),0,$16-24 1516 MOVQ dest+0(FP), DI 1517 MOVQ a+8(FP), SI 1518 MOVQ b+16(FP), DX 1519 1520 MOVQ DX,CX 1521 MOVQ 24(SI),DX 1522 IMUL3Q $19,DX,AX 1523 MOVQ AX,0(SP) 1524 MULQ 16(CX) 1525 MOVQ AX,R8 1526 MOVQ DX,R9 1527 MOVQ 32(SI),DX 1528 IMUL3Q $19,DX,AX 1529 MOVQ AX,8(SP) 1530 MULQ 8(CX) 1531 ADDQ AX,R8 1532 ADCQ DX,R9 1533 MOVQ 0(SI),AX 1534 MULQ 0(CX) 1535 ADDQ AX,R8 1536 ADCQ DX,R9 1537 MOVQ 0(SI),AX 1538 MULQ 8(CX) 1539 MOVQ AX,R10 1540 MOVQ DX,R11 1541 MOVQ 0(SI),AX 1542 MULQ 16(CX) 1543 MOVQ AX,R12 1544 MOVQ DX,R13 1545 MOVQ 0(SI),AX 1546 MULQ 24(CX) 1547 MOVQ AX,R14 1548 MOVQ DX,R15 1549 MOVQ 0(SI),AX 1550 MULQ 32(CX) 1551 MOVQ AX,BX 1552 MOVQ DX,BP 1553 MOVQ 8(SI),AX 1554 MULQ 0(CX) 1555 ADDQ AX,R10 1556 ADCQ DX,R11 1557 MOVQ 8(SI),AX 1558 MULQ 8(CX) 1559 ADDQ AX,R12 1560 ADCQ DX,R13 1561 MOVQ 8(SI),AX 1562 MULQ 16(CX) 1563 ADDQ AX,R14 1564 ADCQ DX,R15 1565 MOVQ 8(SI),AX 1566 MULQ 24(CX) 1567 ADDQ AX,BX 1568 ADCQ DX,BP 1569 MOVQ 8(SI),DX 1570 IMUL3Q $19,DX,AX 1571 MULQ 32(CX) 1572 ADDQ AX,R8 1573 ADCQ DX,R9 1574 MOVQ 16(SI),AX 1575 MULQ 0(CX) 1576 ADDQ AX,R12 1577 ADCQ DX,R13 1578 MOVQ 16(SI),AX 1579 MULQ 8(CX) 1580 ADDQ AX,R14 1581 ADCQ DX,R15 1582 MOVQ 16(SI),AX 1583 MULQ 16(CX) 1584 ADDQ AX,BX 1585 ADCQ DX,BP 1586 MOVQ 16(SI),DX 1587 IMUL3Q $19,DX,AX 1588 MULQ 24(CX) 1589 ADDQ AX,R8 1590 ADCQ DX,R9 1591 MOVQ 16(SI),DX 1592 IMUL3Q $19,DX,AX 1593 MULQ 32(CX) 1594 ADDQ AX,R10 1595 ADCQ DX,R11 1596 MOVQ 24(SI),AX 1597 MULQ 0(CX) 1598 ADDQ AX,R14 1599 ADCQ DX,R15 1600 MOVQ 24(SI),AX 1601 MULQ 8(CX) 1602 ADDQ AX,BX 1603 ADCQ DX,BP 1604 MOVQ 0(SP),AX 1605 MULQ 24(CX) 1606 ADDQ AX,R10 1607 ADCQ DX,R11 1608 MOVQ 0(SP),AX 1609 MULQ 32(CX) 1610 ADDQ AX,R12 1611 ADCQ DX,R13 1612 MOVQ 32(SI),AX 1613 MULQ 0(CX) 1614 ADDQ AX,BX 1615 ADCQ DX,BP 1616 MOVQ 8(SP),AX 1617 MULQ 16(CX) 1618 ADDQ AX,R10 1619 ADCQ DX,R11 1620 MOVQ 8(SP),AX 1621 MULQ 24(CX) 1622 ADDQ AX,R12 1623 ADCQ DX,R13 1624 MOVQ 8(SP),AX 1625 MULQ 32(CX) 1626 ADDQ AX,R14 1627 ADCQ DX,R15 1628 MOVQ $REDMASK51,SI 1629 SHLQ $13,R8,R9 1630 ANDQ SI,R8 1631 SHLQ $13,R10,R11 1632 ANDQ SI,R10 1633 ADDQ R9,R10 1634 SHLQ $13,R12,R13 1635 ANDQ SI,R12 1636 ADDQ R11,R12 1637 SHLQ $13,R14,R15 1638 ANDQ SI,R14 1639 ADDQ R13,R14 1640 SHLQ $13,BX,BP 1641 ANDQ SI,BX 1642 ADDQ R15,BX 1643 IMUL3Q $19,BP,DX 1644 ADDQ DX,R8 1645 MOVQ R8,DX 1646 SHRQ $51,DX 1647 ADDQ R10,DX 1648 MOVQ DX,CX 1649 SHRQ $51,DX 1650 ANDQ SI,R8 1651 ADDQ R12,DX 1652 MOVQ DX,R9 1653 SHRQ $51,DX 1654 ANDQ SI,CX 1655 ADDQ R14,DX 1656 MOVQ DX,AX 1657 SHRQ $51,DX 1658 ANDQ SI,R9 1659 ADDQ BX,DX 1660 MOVQ DX,R10 1661 SHRQ $51,DX 1662 ANDQ SI,AX 1663 IMUL3Q $19,DX,DX 1664 ADDQ DX,R8 1665 ANDQ SI,R10 1666 MOVQ R8,0(DI) 1667 MOVQ CX,8(DI) 1668 MOVQ R9,16(DI) 1669 MOVQ AX,24(DI) 1670 MOVQ R10,32(DI) 1671 RET 1672 1673// func square(out, in *[5]uint64) 1674TEXT ·square(SB),7,$0-16 1675 MOVQ out+0(FP), DI 1676 MOVQ in+8(FP), SI 1677 1678 MOVQ 0(SI),AX 1679 MULQ 0(SI) 1680 MOVQ AX,CX 1681 MOVQ DX,R8 1682 MOVQ 0(SI),AX 1683 SHLQ $1,AX 1684 MULQ 8(SI) 1685 MOVQ AX,R9 1686 MOVQ DX,R10 1687 MOVQ 0(SI),AX 1688 SHLQ $1,AX 1689 MULQ 16(SI) 1690 MOVQ AX,R11 1691 MOVQ DX,R12 1692 MOVQ 0(SI),AX 1693 SHLQ $1,AX 1694 MULQ 24(SI) 1695 MOVQ AX,R13 1696 MOVQ DX,R14 1697 MOVQ 0(SI),AX 1698 SHLQ $1,AX 1699 MULQ 32(SI) 1700 MOVQ AX,R15 1701 MOVQ DX,BX 1702 MOVQ 8(SI),AX 1703 MULQ 8(SI) 1704 ADDQ AX,R11 1705 ADCQ DX,R12 1706 MOVQ 8(SI),AX 1707 SHLQ $1,AX 1708 MULQ 16(SI) 1709 ADDQ AX,R13 1710 ADCQ DX,R14 1711 MOVQ 8(SI),AX 1712 SHLQ $1,AX 1713 MULQ 24(SI) 1714 ADDQ AX,R15 1715 ADCQ DX,BX 1716 MOVQ 8(SI),DX 1717 IMUL3Q $38,DX,AX 1718 MULQ 32(SI) 1719 ADDQ AX,CX 1720 ADCQ DX,R8 1721 MOVQ 16(SI),AX 1722 MULQ 16(SI) 1723 ADDQ AX,R15 1724 ADCQ DX,BX 1725 MOVQ 16(SI),DX 1726 IMUL3Q $38,DX,AX 1727 MULQ 24(SI) 1728 ADDQ AX,CX 1729 ADCQ DX,R8 1730 MOVQ 16(SI),DX 1731 IMUL3Q $38,DX,AX 1732 MULQ 32(SI) 1733 ADDQ AX,R9 1734 ADCQ DX,R10 1735 MOVQ 24(SI),DX 1736 IMUL3Q $19,DX,AX 1737 MULQ 24(SI) 1738 ADDQ AX,R9 1739 ADCQ DX,R10 1740 MOVQ 24(SI),DX 1741 IMUL3Q $38,DX,AX 1742 MULQ 32(SI) 1743 ADDQ AX,R11 1744 ADCQ DX,R12 1745 MOVQ 32(SI),DX 1746 IMUL3Q $19,DX,AX 1747 MULQ 32(SI) 1748 ADDQ AX,R13 1749 ADCQ DX,R14 1750 MOVQ $REDMASK51,SI 1751 SHLQ $13,CX,R8 1752 ANDQ SI,CX 1753 SHLQ $13,R9,R10 1754 ANDQ SI,R9 1755 ADDQ R8,R9 1756 SHLQ $13,R11,R12 1757 ANDQ SI,R11 1758 ADDQ R10,R11 1759 SHLQ $13,R13,R14 1760 ANDQ SI,R13 1761 ADDQ R12,R13 1762 SHLQ $13,R15,BX 1763 ANDQ SI,R15 1764 ADDQ R14,R15 1765 IMUL3Q $19,BX,DX 1766 ADDQ DX,CX 1767 MOVQ CX,DX 1768 SHRQ $51,DX 1769 ADDQ R9,DX 1770 ANDQ SI,CX 1771 MOVQ DX,R8 1772 SHRQ $51,DX 1773 ADDQ R11,DX 1774 ANDQ SI,R8 1775 MOVQ DX,R9 1776 SHRQ $51,DX 1777 ADDQ R13,DX 1778 ANDQ SI,R9 1779 MOVQ DX,AX 1780 SHRQ $51,DX 1781 ADDQ R15,DX 1782 ANDQ SI,AX 1783 MOVQ DX,R10 1784 SHRQ $51,DX 1785 IMUL3Q $19,DX,DX 1786 ADDQ DX,CX 1787 ANDQ SI,R10 1788 MOVQ CX,0(DI) 1789 MOVQ R8,8(DI) 1790 MOVQ R9,16(DI) 1791 MOVQ AX,24(DI) 1792 MOVQ R10,32(DI) 1793 RET 1794