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