github.com/graybobo/golang.org-package-offline-cache@v0.0.0-20200626051047-6608995c132f/x/crypto/salsa20/salsa/salsa2020_amd64.s (about) 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 // +build amd64,!appengine,!gccgo 6 7 // This code was translated into a form compatible with 6a from the public 8 // domain sources in SUPERCOP: http://bench.cr.yp.to/supercop.html 9 10 // func salsa2020XORKeyStream(out, in *byte, n uint64, nonce, key *byte) 11 TEXT ·salsa2020XORKeyStream(SB),0,$512-40 12 MOVQ out+0(FP),DI 13 MOVQ in+8(FP),SI 14 MOVQ n+16(FP),DX 15 MOVQ nonce+24(FP),CX 16 MOVQ key+32(FP),R8 17 18 MOVQ SP,R11 19 MOVQ $31,R9 20 NOTQ R9 21 ANDQ R9,SP 22 ADDQ $32,SP 23 24 MOVQ R11,352(SP) 25 MOVQ R12,360(SP) 26 MOVQ R13,368(SP) 27 MOVQ R14,376(SP) 28 MOVQ R15,384(SP) 29 MOVQ BX,392(SP) 30 MOVQ BP,400(SP) 31 MOVQ DX,R9 32 MOVQ CX,DX 33 MOVQ R8,R10 34 CMPQ R9,$0 35 JBE DONE 36 START: 37 MOVL 20(R10),CX 38 MOVL 0(R10),R8 39 MOVL 0(DX),AX 40 MOVL 16(R10),R11 41 MOVL CX,0(SP) 42 MOVL R8, 4 (SP) 43 MOVL AX, 8 (SP) 44 MOVL R11, 12 (SP) 45 MOVL 8(DX),CX 46 MOVL 24(R10),R8 47 MOVL 4(R10),AX 48 MOVL 4(DX),R11 49 MOVL CX,16(SP) 50 MOVL R8, 20 (SP) 51 MOVL AX, 24 (SP) 52 MOVL R11, 28 (SP) 53 MOVL 12(DX),CX 54 MOVL 12(R10),DX 55 MOVL 28(R10),R8 56 MOVL 8(R10),AX 57 MOVL DX,32(SP) 58 MOVL CX, 36 (SP) 59 MOVL R8, 40 (SP) 60 MOVL AX, 44 (SP) 61 MOVQ $1634760805,DX 62 MOVQ $857760878,CX 63 MOVQ $2036477234,R8 64 MOVQ $1797285236,AX 65 MOVL DX,48(SP) 66 MOVL CX, 52 (SP) 67 MOVL R8, 56 (SP) 68 MOVL AX, 60 (SP) 69 CMPQ R9,$256 70 JB BYTESBETWEEN1AND255 71 MOVOA 48(SP),X0 72 PSHUFL $0X55,X0,X1 73 PSHUFL $0XAA,X0,X2 74 PSHUFL $0XFF,X0,X3 75 PSHUFL $0X00,X0,X0 76 MOVOA X1,64(SP) 77 MOVOA X2,80(SP) 78 MOVOA X3,96(SP) 79 MOVOA X0,112(SP) 80 MOVOA 0(SP),X0 81 PSHUFL $0XAA,X0,X1 82 PSHUFL $0XFF,X0,X2 83 PSHUFL $0X00,X0,X3 84 PSHUFL $0X55,X0,X0 85 MOVOA X1,128(SP) 86 MOVOA X2,144(SP) 87 MOVOA X3,160(SP) 88 MOVOA X0,176(SP) 89 MOVOA 16(SP),X0 90 PSHUFL $0XFF,X0,X1 91 PSHUFL $0X55,X0,X2 92 PSHUFL $0XAA,X0,X0 93 MOVOA X1,192(SP) 94 MOVOA X2,208(SP) 95 MOVOA X0,224(SP) 96 MOVOA 32(SP),X0 97 PSHUFL $0X00,X0,X1 98 PSHUFL $0XAA,X0,X2 99 PSHUFL $0XFF,X0,X0 100 MOVOA X1,240(SP) 101 MOVOA X2,256(SP) 102 MOVOA X0,272(SP) 103 BYTESATLEAST256: 104 MOVL 16(SP),DX 105 MOVL 36 (SP),CX 106 MOVL DX,288(SP) 107 MOVL CX,304(SP) 108 ADDQ $1,DX 109 SHLQ $32,CX 110 ADDQ CX,DX 111 MOVQ DX,CX 112 SHRQ $32,CX 113 MOVL DX, 292 (SP) 114 MOVL CX, 308 (SP) 115 ADDQ $1,DX 116 SHLQ $32,CX 117 ADDQ CX,DX 118 MOVQ DX,CX 119 SHRQ $32,CX 120 MOVL DX, 296 (SP) 121 MOVL CX, 312 (SP) 122 ADDQ $1,DX 123 SHLQ $32,CX 124 ADDQ CX,DX 125 MOVQ DX,CX 126 SHRQ $32,CX 127 MOVL DX, 300 (SP) 128 MOVL CX, 316 (SP) 129 ADDQ $1,DX 130 SHLQ $32,CX 131 ADDQ CX,DX 132 MOVQ DX,CX 133 SHRQ $32,CX 134 MOVL DX,16(SP) 135 MOVL CX, 36 (SP) 136 MOVQ R9,408(SP) 137 MOVQ $20,DX 138 MOVOA 64(SP),X0 139 MOVOA 80(SP),X1 140 MOVOA 96(SP),X2 141 MOVOA 256(SP),X3 142 MOVOA 272(SP),X4 143 MOVOA 128(SP),X5 144 MOVOA 144(SP),X6 145 MOVOA 176(SP),X7 146 MOVOA 192(SP),X8 147 MOVOA 208(SP),X9 148 MOVOA 224(SP),X10 149 MOVOA 304(SP),X11 150 MOVOA 112(SP),X12 151 MOVOA 160(SP),X13 152 MOVOA 240(SP),X14 153 MOVOA 288(SP),X15 154 MAINLOOP1: 155 MOVOA X1,320(SP) 156 MOVOA X2,336(SP) 157 MOVOA X13,X1 158 PADDL X12,X1 159 MOVOA X1,X2 160 PSLLL $7,X1 161 PXOR X1,X14 162 PSRLL $25,X2 163 PXOR X2,X14 164 MOVOA X7,X1 165 PADDL X0,X1 166 MOVOA X1,X2 167 PSLLL $7,X1 168 PXOR X1,X11 169 PSRLL $25,X2 170 PXOR X2,X11 171 MOVOA X12,X1 172 PADDL X14,X1 173 MOVOA X1,X2 174 PSLLL $9,X1 175 PXOR X1,X15 176 PSRLL $23,X2 177 PXOR X2,X15 178 MOVOA X0,X1 179 PADDL X11,X1 180 MOVOA X1,X2 181 PSLLL $9,X1 182 PXOR X1,X9 183 PSRLL $23,X2 184 PXOR X2,X9 185 MOVOA X14,X1 186 PADDL X15,X1 187 MOVOA X1,X2 188 PSLLL $13,X1 189 PXOR X1,X13 190 PSRLL $19,X2 191 PXOR X2,X13 192 MOVOA X11,X1 193 PADDL X9,X1 194 MOVOA X1,X2 195 PSLLL $13,X1 196 PXOR X1,X7 197 PSRLL $19,X2 198 PXOR X2,X7 199 MOVOA X15,X1 200 PADDL X13,X1 201 MOVOA X1,X2 202 PSLLL $18,X1 203 PXOR X1,X12 204 PSRLL $14,X2 205 PXOR X2,X12 206 MOVOA 320(SP),X1 207 MOVOA X12,320(SP) 208 MOVOA X9,X2 209 PADDL X7,X2 210 MOVOA X2,X12 211 PSLLL $18,X2 212 PXOR X2,X0 213 PSRLL $14,X12 214 PXOR X12,X0 215 MOVOA X5,X2 216 PADDL X1,X2 217 MOVOA X2,X12 218 PSLLL $7,X2 219 PXOR X2,X3 220 PSRLL $25,X12 221 PXOR X12,X3 222 MOVOA 336(SP),X2 223 MOVOA X0,336(SP) 224 MOVOA X6,X0 225 PADDL X2,X0 226 MOVOA X0,X12 227 PSLLL $7,X0 228 PXOR X0,X4 229 PSRLL $25,X12 230 PXOR X12,X4 231 MOVOA X1,X0 232 PADDL X3,X0 233 MOVOA X0,X12 234 PSLLL $9,X0 235 PXOR X0,X10 236 PSRLL $23,X12 237 PXOR X12,X10 238 MOVOA X2,X0 239 PADDL X4,X0 240 MOVOA X0,X12 241 PSLLL $9,X0 242 PXOR X0,X8 243 PSRLL $23,X12 244 PXOR X12,X8 245 MOVOA X3,X0 246 PADDL X10,X0 247 MOVOA X0,X12 248 PSLLL $13,X0 249 PXOR X0,X5 250 PSRLL $19,X12 251 PXOR X12,X5 252 MOVOA X4,X0 253 PADDL X8,X0 254 MOVOA X0,X12 255 PSLLL $13,X0 256 PXOR X0,X6 257 PSRLL $19,X12 258 PXOR X12,X6 259 MOVOA X10,X0 260 PADDL X5,X0 261 MOVOA X0,X12 262 PSLLL $18,X0 263 PXOR X0,X1 264 PSRLL $14,X12 265 PXOR X12,X1 266 MOVOA 320(SP),X0 267 MOVOA X1,320(SP) 268 MOVOA X4,X1 269 PADDL X0,X1 270 MOVOA X1,X12 271 PSLLL $7,X1 272 PXOR X1,X7 273 PSRLL $25,X12 274 PXOR X12,X7 275 MOVOA X8,X1 276 PADDL X6,X1 277 MOVOA X1,X12 278 PSLLL $18,X1 279 PXOR X1,X2 280 PSRLL $14,X12 281 PXOR X12,X2 282 MOVOA 336(SP),X12 283 MOVOA X2,336(SP) 284 MOVOA X14,X1 285 PADDL X12,X1 286 MOVOA X1,X2 287 PSLLL $7,X1 288 PXOR X1,X5 289 PSRLL $25,X2 290 PXOR X2,X5 291 MOVOA X0,X1 292 PADDL X7,X1 293 MOVOA X1,X2 294 PSLLL $9,X1 295 PXOR X1,X10 296 PSRLL $23,X2 297 PXOR X2,X10 298 MOVOA X12,X1 299 PADDL X5,X1 300 MOVOA X1,X2 301 PSLLL $9,X1 302 PXOR X1,X8 303 PSRLL $23,X2 304 PXOR X2,X8 305 MOVOA X7,X1 306 PADDL X10,X1 307 MOVOA X1,X2 308 PSLLL $13,X1 309 PXOR X1,X4 310 PSRLL $19,X2 311 PXOR X2,X4 312 MOVOA X5,X1 313 PADDL X8,X1 314 MOVOA X1,X2 315 PSLLL $13,X1 316 PXOR X1,X14 317 PSRLL $19,X2 318 PXOR X2,X14 319 MOVOA X10,X1 320 PADDL X4,X1 321 MOVOA X1,X2 322 PSLLL $18,X1 323 PXOR X1,X0 324 PSRLL $14,X2 325 PXOR X2,X0 326 MOVOA 320(SP),X1 327 MOVOA X0,320(SP) 328 MOVOA X8,X0 329 PADDL X14,X0 330 MOVOA X0,X2 331 PSLLL $18,X0 332 PXOR X0,X12 333 PSRLL $14,X2 334 PXOR X2,X12 335 MOVOA X11,X0 336 PADDL X1,X0 337 MOVOA X0,X2 338 PSLLL $7,X0 339 PXOR X0,X6 340 PSRLL $25,X2 341 PXOR X2,X6 342 MOVOA 336(SP),X2 343 MOVOA X12,336(SP) 344 MOVOA X3,X0 345 PADDL X2,X0 346 MOVOA X0,X12 347 PSLLL $7,X0 348 PXOR X0,X13 349 PSRLL $25,X12 350 PXOR X12,X13 351 MOVOA X1,X0 352 PADDL X6,X0 353 MOVOA X0,X12 354 PSLLL $9,X0 355 PXOR X0,X15 356 PSRLL $23,X12 357 PXOR X12,X15 358 MOVOA X2,X0 359 PADDL X13,X0 360 MOVOA X0,X12 361 PSLLL $9,X0 362 PXOR X0,X9 363 PSRLL $23,X12 364 PXOR X12,X9 365 MOVOA X6,X0 366 PADDL X15,X0 367 MOVOA X0,X12 368 PSLLL $13,X0 369 PXOR X0,X11 370 PSRLL $19,X12 371 PXOR X12,X11 372 MOVOA X13,X0 373 PADDL X9,X0 374 MOVOA X0,X12 375 PSLLL $13,X0 376 PXOR X0,X3 377 PSRLL $19,X12 378 PXOR X12,X3 379 MOVOA X15,X0 380 PADDL X11,X0 381 MOVOA X0,X12 382 PSLLL $18,X0 383 PXOR X0,X1 384 PSRLL $14,X12 385 PXOR X12,X1 386 MOVOA X9,X0 387 PADDL X3,X0 388 MOVOA X0,X12 389 PSLLL $18,X0 390 PXOR X0,X2 391 PSRLL $14,X12 392 PXOR X12,X2 393 MOVOA 320(SP),X12 394 MOVOA 336(SP),X0 395 SUBQ $2,DX 396 JA MAINLOOP1 397 PADDL 112(SP),X12 398 PADDL 176(SP),X7 399 PADDL 224(SP),X10 400 PADDL 272(SP),X4 401 MOVD X12,DX 402 MOVD X7,CX 403 MOVD X10,R8 404 MOVD X4,R9 405 PSHUFL $0X39,X12,X12 406 PSHUFL $0X39,X7,X7 407 PSHUFL $0X39,X10,X10 408 PSHUFL $0X39,X4,X4 409 XORL 0(SI),DX 410 XORL 4(SI),CX 411 XORL 8(SI),R8 412 XORL 12(SI),R9 413 MOVL DX,0(DI) 414 MOVL CX,4(DI) 415 MOVL R8,8(DI) 416 MOVL R9,12(DI) 417 MOVD X12,DX 418 MOVD X7,CX 419 MOVD X10,R8 420 MOVD X4,R9 421 PSHUFL $0X39,X12,X12 422 PSHUFL $0X39,X7,X7 423 PSHUFL $0X39,X10,X10 424 PSHUFL $0X39,X4,X4 425 XORL 64(SI),DX 426 XORL 68(SI),CX 427 XORL 72(SI),R8 428 XORL 76(SI),R9 429 MOVL DX,64(DI) 430 MOVL CX,68(DI) 431 MOVL R8,72(DI) 432 MOVL R9,76(DI) 433 MOVD X12,DX 434 MOVD X7,CX 435 MOVD X10,R8 436 MOVD X4,R9 437 PSHUFL $0X39,X12,X12 438 PSHUFL $0X39,X7,X7 439 PSHUFL $0X39,X10,X10 440 PSHUFL $0X39,X4,X4 441 XORL 128(SI),DX 442 XORL 132(SI),CX 443 XORL 136(SI),R8 444 XORL 140(SI),R9 445 MOVL DX,128(DI) 446 MOVL CX,132(DI) 447 MOVL R8,136(DI) 448 MOVL R9,140(DI) 449 MOVD X12,DX 450 MOVD X7,CX 451 MOVD X10,R8 452 MOVD X4,R9 453 XORL 192(SI),DX 454 XORL 196(SI),CX 455 XORL 200(SI),R8 456 XORL 204(SI),R9 457 MOVL DX,192(DI) 458 MOVL CX,196(DI) 459 MOVL R8,200(DI) 460 MOVL R9,204(DI) 461 PADDL 240(SP),X14 462 PADDL 64(SP),X0 463 PADDL 128(SP),X5 464 PADDL 192(SP),X8 465 MOVD X14,DX 466 MOVD X0,CX 467 MOVD X5,R8 468 MOVD X8,R9 469 PSHUFL $0X39,X14,X14 470 PSHUFL $0X39,X0,X0 471 PSHUFL $0X39,X5,X5 472 PSHUFL $0X39,X8,X8 473 XORL 16(SI),DX 474 XORL 20(SI),CX 475 XORL 24(SI),R8 476 XORL 28(SI),R9 477 MOVL DX,16(DI) 478 MOVL CX,20(DI) 479 MOVL R8,24(DI) 480 MOVL R9,28(DI) 481 MOVD X14,DX 482 MOVD X0,CX 483 MOVD X5,R8 484 MOVD X8,R9 485 PSHUFL $0X39,X14,X14 486 PSHUFL $0X39,X0,X0 487 PSHUFL $0X39,X5,X5 488 PSHUFL $0X39,X8,X8 489 XORL 80(SI),DX 490 XORL 84(SI),CX 491 XORL 88(SI),R8 492 XORL 92(SI),R9 493 MOVL DX,80(DI) 494 MOVL CX,84(DI) 495 MOVL R8,88(DI) 496 MOVL R9,92(DI) 497 MOVD X14,DX 498 MOVD X0,CX 499 MOVD X5,R8 500 MOVD X8,R9 501 PSHUFL $0X39,X14,X14 502 PSHUFL $0X39,X0,X0 503 PSHUFL $0X39,X5,X5 504 PSHUFL $0X39,X8,X8 505 XORL 144(SI),DX 506 XORL 148(SI),CX 507 XORL 152(SI),R8 508 XORL 156(SI),R9 509 MOVL DX,144(DI) 510 MOVL CX,148(DI) 511 MOVL R8,152(DI) 512 MOVL R9,156(DI) 513 MOVD X14,DX 514 MOVD X0,CX 515 MOVD X5,R8 516 MOVD X8,R9 517 XORL 208(SI),DX 518 XORL 212(SI),CX 519 XORL 216(SI),R8 520 XORL 220(SI),R9 521 MOVL DX,208(DI) 522 MOVL CX,212(DI) 523 MOVL R8,216(DI) 524 MOVL R9,220(DI) 525 PADDL 288(SP),X15 526 PADDL 304(SP),X11 527 PADDL 80(SP),X1 528 PADDL 144(SP),X6 529 MOVD X15,DX 530 MOVD X11,CX 531 MOVD X1,R8 532 MOVD X6,R9 533 PSHUFL $0X39,X15,X15 534 PSHUFL $0X39,X11,X11 535 PSHUFL $0X39,X1,X1 536 PSHUFL $0X39,X6,X6 537 XORL 32(SI),DX 538 XORL 36(SI),CX 539 XORL 40(SI),R8 540 XORL 44(SI),R9 541 MOVL DX,32(DI) 542 MOVL CX,36(DI) 543 MOVL R8,40(DI) 544 MOVL R9,44(DI) 545 MOVD X15,DX 546 MOVD X11,CX 547 MOVD X1,R8 548 MOVD X6,R9 549 PSHUFL $0X39,X15,X15 550 PSHUFL $0X39,X11,X11 551 PSHUFL $0X39,X1,X1 552 PSHUFL $0X39,X6,X6 553 XORL 96(SI),DX 554 XORL 100(SI),CX 555 XORL 104(SI),R8 556 XORL 108(SI),R9 557 MOVL DX,96(DI) 558 MOVL CX,100(DI) 559 MOVL R8,104(DI) 560 MOVL R9,108(DI) 561 MOVD X15,DX 562 MOVD X11,CX 563 MOVD X1,R8 564 MOVD X6,R9 565 PSHUFL $0X39,X15,X15 566 PSHUFL $0X39,X11,X11 567 PSHUFL $0X39,X1,X1 568 PSHUFL $0X39,X6,X6 569 XORL 160(SI),DX 570 XORL 164(SI),CX 571 XORL 168(SI),R8 572 XORL 172(SI),R9 573 MOVL DX,160(DI) 574 MOVL CX,164(DI) 575 MOVL R8,168(DI) 576 MOVL R9,172(DI) 577 MOVD X15,DX 578 MOVD X11,CX 579 MOVD X1,R8 580 MOVD X6,R9 581 XORL 224(SI),DX 582 XORL 228(SI),CX 583 XORL 232(SI),R8 584 XORL 236(SI),R9 585 MOVL DX,224(DI) 586 MOVL CX,228(DI) 587 MOVL R8,232(DI) 588 MOVL R9,236(DI) 589 PADDL 160(SP),X13 590 PADDL 208(SP),X9 591 PADDL 256(SP),X3 592 PADDL 96(SP),X2 593 MOVD X13,DX 594 MOVD X9,CX 595 MOVD X3,R8 596 MOVD X2,R9 597 PSHUFL $0X39,X13,X13 598 PSHUFL $0X39,X9,X9 599 PSHUFL $0X39,X3,X3 600 PSHUFL $0X39,X2,X2 601 XORL 48(SI),DX 602 XORL 52(SI),CX 603 XORL 56(SI),R8 604 XORL 60(SI),R9 605 MOVL DX,48(DI) 606 MOVL CX,52(DI) 607 MOVL R8,56(DI) 608 MOVL R9,60(DI) 609 MOVD X13,DX 610 MOVD X9,CX 611 MOVD X3,R8 612 MOVD X2,R9 613 PSHUFL $0X39,X13,X13 614 PSHUFL $0X39,X9,X9 615 PSHUFL $0X39,X3,X3 616 PSHUFL $0X39,X2,X2 617 XORL 112(SI),DX 618 XORL 116(SI),CX 619 XORL 120(SI),R8 620 XORL 124(SI),R9 621 MOVL DX,112(DI) 622 MOVL CX,116(DI) 623 MOVL R8,120(DI) 624 MOVL R9,124(DI) 625 MOVD X13,DX 626 MOVD X9,CX 627 MOVD X3,R8 628 MOVD X2,R9 629 PSHUFL $0X39,X13,X13 630 PSHUFL $0X39,X9,X9 631 PSHUFL $0X39,X3,X3 632 PSHUFL $0X39,X2,X2 633 XORL 176(SI),DX 634 XORL 180(SI),CX 635 XORL 184(SI),R8 636 XORL 188(SI),R9 637 MOVL DX,176(DI) 638 MOVL CX,180(DI) 639 MOVL R8,184(DI) 640 MOVL R9,188(DI) 641 MOVD X13,DX 642 MOVD X9,CX 643 MOVD X3,R8 644 MOVD X2,R9 645 XORL 240(SI),DX 646 XORL 244(SI),CX 647 XORL 248(SI),R8 648 XORL 252(SI),R9 649 MOVL DX,240(DI) 650 MOVL CX,244(DI) 651 MOVL R8,248(DI) 652 MOVL R9,252(DI) 653 MOVQ 408(SP),R9 654 SUBQ $256,R9 655 ADDQ $256,SI 656 ADDQ $256,DI 657 CMPQ R9,$256 658 JAE BYTESATLEAST256 659 CMPQ R9,$0 660 JBE DONE 661 BYTESBETWEEN1AND255: 662 CMPQ R9,$64 663 JAE NOCOPY 664 MOVQ DI,DX 665 LEAQ 416(SP),DI 666 MOVQ R9,CX 667 REP; MOVSB 668 LEAQ 416(SP),DI 669 LEAQ 416(SP),SI 670 NOCOPY: 671 MOVQ R9,408(SP) 672 MOVOA 48(SP),X0 673 MOVOA 0(SP),X1 674 MOVOA 16(SP),X2 675 MOVOA 32(SP),X3 676 MOVOA X1,X4 677 MOVQ $20,CX 678 MAINLOOP2: 679 PADDL X0,X4 680 MOVOA X0,X5 681 MOVOA X4,X6 682 PSLLL $7,X4 683 PSRLL $25,X6 684 PXOR X4,X3 685 PXOR X6,X3 686 PADDL X3,X5 687 MOVOA X3,X4 688 MOVOA X5,X6 689 PSLLL $9,X5 690 PSRLL $23,X6 691 PXOR X5,X2 692 PSHUFL $0X93,X3,X3 693 PXOR X6,X2 694 PADDL X2,X4 695 MOVOA X2,X5 696 MOVOA X4,X6 697 PSLLL $13,X4 698 PSRLL $19,X6 699 PXOR X4,X1 700 PSHUFL $0X4E,X2,X2 701 PXOR X6,X1 702 PADDL X1,X5 703 MOVOA X3,X4 704 MOVOA X5,X6 705 PSLLL $18,X5 706 PSRLL $14,X6 707 PXOR X5,X0 708 PSHUFL $0X39,X1,X1 709 PXOR X6,X0 710 PADDL X0,X4 711 MOVOA X0,X5 712 MOVOA X4,X6 713 PSLLL $7,X4 714 PSRLL $25,X6 715 PXOR X4,X1 716 PXOR X6,X1 717 PADDL X1,X5 718 MOVOA X1,X4 719 MOVOA X5,X6 720 PSLLL $9,X5 721 PSRLL $23,X6 722 PXOR X5,X2 723 PSHUFL $0X93,X1,X1 724 PXOR X6,X2 725 PADDL X2,X4 726 MOVOA X2,X5 727 MOVOA X4,X6 728 PSLLL $13,X4 729 PSRLL $19,X6 730 PXOR X4,X3 731 PSHUFL $0X4E,X2,X2 732 PXOR X6,X3 733 PADDL X3,X5 734 MOVOA X1,X4 735 MOVOA X5,X6 736 PSLLL $18,X5 737 PSRLL $14,X6 738 PXOR X5,X0 739 PSHUFL $0X39,X3,X3 740 PXOR X6,X0 741 PADDL X0,X4 742 MOVOA X0,X5 743 MOVOA X4,X6 744 PSLLL $7,X4 745 PSRLL $25,X6 746 PXOR X4,X3 747 PXOR X6,X3 748 PADDL X3,X5 749 MOVOA X3,X4 750 MOVOA X5,X6 751 PSLLL $9,X5 752 PSRLL $23,X6 753 PXOR X5,X2 754 PSHUFL $0X93,X3,X3 755 PXOR X6,X2 756 PADDL X2,X4 757 MOVOA X2,X5 758 MOVOA X4,X6 759 PSLLL $13,X4 760 PSRLL $19,X6 761 PXOR X4,X1 762 PSHUFL $0X4E,X2,X2 763 PXOR X6,X1 764 PADDL X1,X5 765 MOVOA X3,X4 766 MOVOA X5,X6 767 PSLLL $18,X5 768 PSRLL $14,X6 769 PXOR X5,X0 770 PSHUFL $0X39,X1,X1 771 PXOR X6,X0 772 PADDL X0,X4 773 MOVOA X0,X5 774 MOVOA X4,X6 775 PSLLL $7,X4 776 PSRLL $25,X6 777 PXOR X4,X1 778 PXOR X6,X1 779 PADDL X1,X5 780 MOVOA X1,X4 781 MOVOA X5,X6 782 PSLLL $9,X5 783 PSRLL $23,X6 784 PXOR X5,X2 785 PSHUFL $0X93,X1,X1 786 PXOR X6,X2 787 PADDL X2,X4 788 MOVOA X2,X5 789 MOVOA X4,X6 790 PSLLL $13,X4 791 PSRLL $19,X6 792 PXOR X4,X3 793 PSHUFL $0X4E,X2,X2 794 PXOR X6,X3 795 SUBQ $4,CX 796 PADDL X3,X5 797 MOVOA X1,X4 798 MOVOA X5,X6 799 PSLLL $18,X5 800 PXOR X7,X7 801 PSRLL $14,X6 802 PXOR X5,X0 803 PSHUFL $0X39,X3,X3 804 PXOR X6,X0 805 JA MAINLOOP2 806 PADDL 48(SP),X0 807 PADDL 0(SP),X1 808 PADDL 16(SP),X2 809 PADDL 32(SP),X3 810 MOVD X0,CX 811 MOVD X1,R8 812 MOVD X2,R9 813 MOVD X3,AX 814 PSHUFL $0X39,X0,X0 815 PSHUFL $0X39,X1,X1 816 PSHUFL $0X39,X2,X2 817 PSHUFL $0X39,X3,X3 818 XORL 0(SI),CX 819 XORL 48(SI),R8 820 XORL 32(SI),R9 821 XORL 16(SI),AX 822 MOVL CX,0(DI) 823 MOVL R8,48(DI) 824 MOVL R9,32(DI) 825 MOVL AX,16(DI) 826 MOVD X0,CX 827 MOVD X1,R8 828 MOVD X2,R9 829 MOVD X3,AX 830 PSHUFL $0X39,X0,X0 831 PSHUFL $0X39,X1,X1 832 PSHUFL $0X39,X2,X2 833 PSHUFL $0X39,X3,X3 834 XORL 20(SI),CX 835 XORL 4(SI),R8 836 XORL 52(SI),R9 837 XORL 36(SI),AX 838 MOVL CX,20(DI) 839 MOVL R8,4(DI) 840 MOVL R9,52(DI) 841 MOVL AX,36(DI) 842 MOVD X0,CX 843 MOVD X1,R8 844 MOVD X2,R9 845 MOVD X3,AX 846 PSHUFL $0X39,X0,X0 847 PSHUFL $0X39,X1,X1 848 PSHUFL $0X39,X2,X2 849 PSHUFL $0X39,X3,X3 850 XORL 40(SI),CX 851 XORL 24(SI),R8 852 XORL 8(SI),R9 853 XORL 56(SI),AX 854 MOVL CX,40(DI) 855 MOVL R8,24(DI) 856 MOVL R9,8(DI) 857 MOVL AX,56(DI) 858 MOVD X0,CX 859 MOVD X1,R8 860 MOVD X2,R9 861 MOVD X3,AX 862 XORL 60(SI),CX 863 XORL 44(SI),R8 864 XORL 28(SI),R9 865 XORL 12(SI),AX 866 MOVL CX,60(DI) 867 MOVL R8,44(DI) 868 MOVL R9,28(DI) 869 MOVL AX,12(DI) 870 MOVQ 408(SP),R9 871 MOVL 16(SP),CX 872 MOVL 36 (SP),R8 873 ADDQ $1,CX 874 SHLQ $32,R8 875 ADDQ R8,CX 876 MOVQ CX,R8 877 SHRQ $32,R8 878 MOVL CX,16(SP) 879 MOVL R8, 36 (SP) 880 CMPQ R9,$64 881 JA BYTESATLEAST65 882 JAE BYTESATLEAST64 883 MOVQ DI,SI 884 MOVQ DX,DI 885 MOVQ R9,CX 886 REP; MOVSB 887 BYTESATLEAST64: 888 DONE: 889 MOVQ 352(SP),R11 890 MOVQ 360(SP),R12 891 MOVQ 368(SP),R13 892 MOVQ 376(SP),R14 893 MOVQ 384(SP),R15 894 MOVQ 392(SP),BX 895 MOVQ 400(SP),BP 896 MOVQ R11,SP 897 RET 898 BYTESATLEAST65: 899 SUBQ $64,R9 900 ADDQ $64,DI 901 ADDQ $64,SI 902 JMP BYTESBETWEEN1AND255