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