Text file src/crypto/internal/fips140/sha3/sha3_amd64.s

     1  // Code generated by command: go run keccakf_amd64_asm.go -out ../sha3_amd64.s. DO NOT EDIT.
     2  
     3  //go:build !purego
     4  
     5  // func keccakF1600(a *[200]byte)
     6  TEXT ·keccakF1600(SB), $200-8
     7  	MOVQ a+0(FP), DI
     8  
     9  	// Convert the user state into an internal state
    10  	NOTQ 8(DI)
    11  	NOTQ 16(DI)
    12  	NOTQ 64(DI)
    13  	NOTQ 96(DI)
    14  	NOTQ 136(DI)
    15  	NOTQ 160(DI)
    16  
    17  	// Execute the KeccakF permutation
    18  	MOVQ (DI), SI
    19  	MOVQ 8(DI), BP
    20  	MOVQ 32(DI), R15
    21  	XORQ 40(DI), SI
    22  	XORQ 48(DI), BP
    23  	XORQ 72(DI), R15
    24  	XORQ 80(DI), SI
    25  	XORQ 88(DI), BP
    26  	XORQ 112(DI), R15
    27  	XORQ 120(DI), SI
    28  	XORQ 128(DI), BP
    29  	XORQ 152(DI), R15
    30  	XORQ 160(DI), SI
    31  	XORQ 168(DI), BP
    32  	MOVQ 176(DI), DX
    33  	MOVQ 184(DI), R8
    34  	XORQ 192(DI), R15
    35  
    36  	// Prepare round
    37  	MOVQ BP, BX
    38  	ROLQ $0x01, BX
    39  	MOVQ 16(DI), R12
    40  	XORQ 56(DI), DX
    41  	XORQ R15, BX
    42  	XORQ 96(DI), R12
    43  	XORQ 136(DI), DX
    44  	XORQ DX, R12
    45  	MOVQ R12, CX
    46  	ROLQ $0x01, CX
    47  	MOVQ 24(DI), R13
    48  	XORQ 64(DI), R8
    49  	XORQ SI, CX
    50  	XORQ 104(DI), R13
    51  	XORQ 144(DI), R8
    52  	XORQ R8, R13
    53  	MOVQ R13, DX
    54  	ROLQ $0x01, DX
    55  	MOVQ R15, R8
    56  	XORQ BP, DX
    57  	ROLQ $0x01, R8
    58  	MOVQ SI, R9
    59  	XORQ R12, R8
    60  	ROLQ $0x01, R9
    61  
    62  	// Result b
    63  	MOVQ (DI), R10
    64  	MOVQ 48(DI), R11
    65  	XORQ R13, R9
    66  	MOVQ 96(DI), R12
    67  	MOVQ 144(DI), R13
    68  	MOVQ 192(DI), R14
    69  	XORQ CX, R11
    70  	ROLQ $0x2c, R11
    71  	XORQ DX, R12
    72  	XORQ BX, R10
    73  	ROLQ $0x2b, R12
    74  	MOVQ R11, SI
    75  	MOVQ $0x0000000000000001, AX
    76  	ORQ  R12, SI
    77  	XORQ R10, AX
    78  	XORQ AX, SI
    79  	MOVQ SI, (SP)
    80  	XORQ R9, R14
    81  	ROLQ $0x0e, R14
    82  	MOVQ R10, R15
    83  	ANDQ R11, R15
    84  	XORQ R14, R15
    85  	MOVQ R15, 32(SP)
    86  	XORQ R8, R13
    87  	ROLQ $0x15, R13
    88  	MOVQ R13, AX
    89  	ANDQ R14, AX
    90  	XORQ R12, AX
    91  	MOVQ AX, 16(SP)
    92  	NOTQ R12
    93  	ORQ  R10, R14
    94  	ORQ  R13, R12
    95  	XORQ R13, R14
    96  	XORQ R11, R12
    97  	MOVQ R14, 24(SP)
    98  	MOVQ R12, 8(SP)
    99  	MOVQ R12, BP
   100  
   101  	// Result g
   102  	MOVQ 72(DI), R11
   103  	XORQ R9, R11
   104  	MOVQ 80(DI), R12
   105  	ROLQ $0x14, R11
   106  	XORQ BX, R12
   107  	ROLQ $0x03, R12
   108  	MOVQ 24(DI), R10
   109  	MOVQ R11, AX
   110  	ORQ  R12, AX
   111  	XORQ R8, R10
   112  	MOVQ 128(DI), R13
   113  	MOVQ 176(DI), R14
   114  	ROLQ $0x1c, R10
   115  	XORQ R10, AX
   116  	MOVQ AX, 40(SP)
   117  	XORQ AX, SI
   118  	XORQ CX, R13
   119  	ROLQ $0x2d, R13
   120  	MOVQ R12, AX
   121  	ANDQ R13, AX
   122  	XORQ R11, AX
   123  	MOVQ AX, 48(SP)
   124  	XORQ AX, BP
   125  	XORQ DX, R14
   126  	ROLQ $0x3d, R14
   127  	MOVQ R14, AX
   128  	ORQ  R10, AX
   129  	XORQ R13, AX
   130  	MOVQ AX, 64(SP)
   131  	ANDQ R11, R10
   132  	XORQ R14, R10
   133  	MOVQ R10, 72(SP)
   134  	NOTQ R14
   135  	XORQ R10, R15
   136  	ORQ  R14, R13
   137  	XORQ R12, R13
   138  	MOVQ R13, 56(SP)
   139  
   140  	// Result k
   141  	MOVQ 8(DI), R10
   142  	MOVQ 56(DI), R11
   143  	MOVQ 104(DI), R12
   144  	MOVQ 152(DI), R13
   145  	MOVQ 160(DI), R14
   146  	XORQ DX, R11
   147  	ROLQ $0x06, R11
   148  	XORQ R8, R12
   149  	ROLQ $0x19, R12
   150  	MOVQ R11, AX
   151  	ORQ  R12, AX
   152  	XORQ CX, R10
   153  	ROLQ $0x01, R10
   154  	XORQ R10, AX
   155  	MOVQ AX, 80(SP)
   156  	XORQ AX, SI
   157  	XORQ R9, R13
   158  	ROLQ $0x08, R13
   159  	MOVQ R12, AX
   160  	ANDQ R13, AX
   161  	XORQ R11, AX
   162  	MOVQ AX, 88(SP)
   163  	XORQ AX, BP
   164  	XORQ BX, R14
   165  	ROLQ $0x12, R14
   166  	NOTQ R13
   167  	MOVQ R13, AX
   168  	ANDQ R14, AX
   169  	XORQ R12, AX
   170  	MOVQ AX, 96(SP)
   171  	MOVQ R14, AX
   172  	ORQ  R10, AX
   173  	XORQ R13, AX
   174  	MOVQ AX, 104(SP)
   175  	ANDQ R11, R10
   176  	XORQ R14, R10
   177  	MOVQ R10, 112(SP)
   178  	XORQ R10, R15
   179  
   180  	// Result m
   181  	MOVQ 40(DI), R11
   182  	XORQ BX, R11
   183  	MOVQ 88(DI), R12
   184  	ROLQ $0x24, R11
   185  	XORQ CX, R12
   186  	MOVQ 32(DI), R10
   187  	ROLQ $0x0a, R12
   188  	MOVQ R11, AX
   189  	MOVQ 136(DI), R13
   190  	ANDQ R12, AX
   191  	XORQ R9, R10
   192  	MOVQ 184(DI), R14
   193  	ROLQ $0x1b, R10
   194  	XORQ R10, AX
   195  	MOVQ AX, 120(SP)
   196  	XORQ AX, SI
   197  	XORQ DX, R13
   198  	ROLQ $0x0f, R13
   199  	MOVQ R12, AX
   200  	ORQ  R13, AX
   201  	XORQ R11, AX
   202  	MOVQ AX, 128(SP)
   203  	XORQ AX, BP
   204  	XORQ R8, R14
   205  	ROLQ $0x38, R14
   206  	NOTQ R13
   207  	MOVQ R13, AX
   208  	ORQ  R14, AX
   209  	XORQ R12, AX
   210  	MOVQ AX, 136(SP)
   211  	ORQ  R10, R11
   212  	XORQ R14, R11
   213  	MOVQ R11, 152(SP)
   214  	ANDQ R10, R14
   215  	XORQ R13, R14
   216  	MOVQ R14, 144(SP)
   217  	XORQ R11, R15
   218  
   219  	// Result s
   220  	MOVQ 16(DI), R10
   221  	MOVQ 64(DI), R11
   222  	MOVQ 112(DI), R12
   223  	XORQ DX, R10
   224  	MOVQ 120(DI), R13
   225  	ROLQ $0x3e, R10
   226  	XORQ R8, R11
   227  	MOVQ 168(DI), R14
   228  	ROLQ $0x37, R11
   229  	XORQ R9, R12
   230  	MOVQ R10, R9
   231  	XORQ CX, R14
   232  	ROLQ $0x02, R14
   233  	ANDQ R11, R9
   234  	XORQ R14, R9
   235  	MOVQ R9, 192(SP)
   236  	ROLQ $0x27, R12
   237  	XORQ R9, R15
   238  	NOTQ R11
   239  	XORQ BX, R13
   240  	MOVQ R11, BX
   241  	ANDQ R12, BX
   242  	XORQ R10, BX
   243  	MOVQ BX, 160(SP)
   244  	XORQ BX, SI
   245  	ROLQ $0x29, R13
   246  	MOVQ R12, CX
   247  	ORQ  R13, CX
   248  	XORQ R11, CX
   249  	MOVQ CX, 168(SP)
   250  	XORQ CX, BP
   251  	MOVQ R13, DX
   252  	MOVQ R14, R8
   253  	ANDQ R14, DX
   254  	ORQ  R10, R8
   255  	XORQ R12, DX
   256  	XORQ R13, R8
   257  	MOVQ DX, 176(SP)
   258  	MOVQ R8, 184(SP)
   259  
   260  	// Prepare round
   261  	MOVQ BP, BX
   262  	ROLQ $0x01, BX
   263  	MOVQ 16(SP), R12
   264  	XORQ 56(SP), DX
   265  	XORQ R15, BX
   266  	XORQ 96(SP), R12
   267  	XORQ 136(SP), DX
   268  	XORQ DX, R12
   269  	MOVQ R12, CX
   270  	ROLQ $0x01, CX
   271  	MOVQ 24(SP), R13
   272  	XORQ 64(SP), R8
   273  	XORQ SI, CX
   274  	XORQ 104(SP), R13
   275  	XORQ 144(SP), R8
   276  	XORQ R8, R13
   277  	MOVQ R13, DX
   278  	ROLQ $0x01, DX
   279  	MOVQ R15, R8
   280  	XORQ BP, DX
   281  	ROLQ $0x01, R8
   282  	MOVQ SI, R9
   283  	XORQ R12, R8
   284  	ROLQ $0x01, R9
   285  
   286  	// Result b
   287  	MOVQ (SP), R10
   288  	MOVQ 48(SP), R11
   289  	XORQ R13, R9
   290  	MOVQ 96(SP), R12
   291  	MOVQ 144(SP), R13
   292  	MOVQ 192(SP), R14
   293  	XORQ CX, R11
   294  	ROLQ $0x2c, R11
   295  	XORQ DX, R12
   296  	XORQ BX, R10
   297  	ROLQ $0x2b, R12
   298  	MOVQ R11, SI
   299  	MOVQ $0x0000000000008082, AX
   300  	ORQ  R12, SI
   301  	XORQ R10, AX
   302  	XORQ AX, SI
   303  	MOVQ SI, (DI)
   304  	XORQ R9, R14
   305  	ROLQ $0x0e, R14
   306  	MOVQ R10, R15
   307  	ANDQ R11, R15
   308  	XORQ R14, R15
   309  	MOVQ R15, 32(DI)
   310  	XORQ R8, R13
   311  	ROLQ $0x15, R13
   312  	MOVQ R13, AX
   313  	ANDQ R14, AX
   314  	XORQ R12, AX
   315  	MOVQ AX, 16(DI)
   316  	NOTQ R12
   317  	ORQ  R10, R14
   318  	ORQ  R13, R12
   319  	XORQ R13, R14
   320  	XORQ R11, R12
   321  	MOVQ R14, 24(DI)
   322  	MOVQ R12, 8(DI)
   323  	MOVQ R12, BP
   324  
   325  	// Result g
   326  	MOVQ 72(SP), R11
   327  	XORQ R9, R11
   328  	MOVQ 80(SP), R12
   329  	ROLQ $0x14, R11
   330  	XORQ BX, R12
   331  	ROLQ $0x03, R12
   332  	MOVQ 24(SP), R10
   333  	MOVQ R11, AX
   334  	ORQ  R12, AX
   335  	XORQ R8, R10
   336  	MOVQ 128(SP), R13
   337  	MOVQ 176(SP), R14
   338  	ROLQ $0x1c, R10
   339  	XORQ R10, AX
   340  	MOVQ AX, 40(DI)
   341  	XORQ AX, SI
   342  	XORQ CX, R13
   343  	ROLQ $0x2d, R13
   344  	MOVQ R12, AX
   345  	ANDQ R13, AX
   346  	XORQ R11, AX
   347  	MOVQ AX, 48(DI)
   348  	XORQ AX, BP
   349  	XORQ DX, R14
   350  	ROLQ $0x3d, R14
   351  	MOVQ R14, AX
   352  	ORQ  R10, AX
   353  	XORQ R13, AX
   354  	MOVQ AX, 64(DI)
   355  	ANDQ R11, R10
   356  	XORQ R14, R10
   357  	MOVQ R10, 72(DI)
   358  	NOTQ R14
   359  	XORQ R10, R15
   360  	ORQ  R14, R13
   361  	XORQ R12, R13
   362  	MOVQ R13, 56(DI)
   363  
   364  	// Result k
   365  	MOVQ 8(SP), R10
   366  	MOVQ 56(SP), R11
   367  	MOVQ 104(SP), R12
   368  	MOVQ 152(SP), R13
   369  	MOVQ 160(SP), R14
   370  	XORQ DX, R11
   371  	ROLQ $0x06, R11
   372  	XORQ R8, R12
   373  	ROLQ $0x19, R12
   374  	MOVQ R11, AX
   375  	ORQ  R12, AX
   376  	XORQ CX, R10
   377  	ROLQ $0x01, R10
   378  	XORQ R10, AX
   379  	MOVQ AX, 80(DI)
   380  	XORQ AX, SI
   381  	XORQ R9, R13
   382  	ROLQ $0x08, R13
   383  	MOVQ R12, AX
   384  	ANDQ R13, AX
   385  	XORQ R11, AX
   386  	MOVQ AX, 88(DI)
   387  	XORQ AX, BP
   388  	XORQ BX, R14
   389  	ROLQ $0x12, R14
   390  	NOTQ R13
   391  	MOVQ R13, AX
   392  	ANDQ R14, AX
   393  	XORQ R12, AX
   394  	MOVQ AX, 96(DI)
   395  	MOVQ R14, AX
   396  	ORQ  R10, AX
   397  	XORQ R13, AX
   398  	MOVQ AX, 104(DI)
   399  	ANDQ R11, R10
   400  	XORQ R14, R10
   401  	MOVQ R10, 112(DI)
   402  	XORQ R10, R15
   403  
   404  	// Result m
   405  	MOVQ 40(SP), R11
   406  	XORQ BX, R11
   407  	MOVQ 88(SP), R12
   408  	ROLQ $0x24, R11
   409  	XORQ CX, R12
   410  	MOVQ 32(SP), R10
   411  	ROLQ $0x0a, R12
   412  	MOVQ R11, AX
   413  	MOVQ 136(SP), R13
   414  	ANDQ R12, AX
   415  	XORQ R9, R10
   416  	MOVQ 184(SP), R14
   417  	ROLQ $0x1b, R10
   418  	XORQ R10, AX
   419  	MOVQ AX, 120(DI)
   420  	XORQ AX, SI
   421  	XORQ DX, R13
   422  	ROLQ $0x0f, R13
   423  	MOVQ R12, AX
   424  	ORQ  R13, AX
   425  	XORQ R11, AX
   426  	MOVQ AX, 128(DI)
   427  	XORQ AX, BP
   428  	XORQ R8, R14
   429  	ROLQ $0x38, R14
   430  	NOTQ R13
   431  	MOVQ R13, AX
   432  	ORQ  R14, AX
   433  	XORQ R12, AX
   434  	MOVQ AX, 136(DI)
   435  	ORQ  R10, R11
   436  	XORQ R14, R11
   437  	MOVQ R11, 152(DI)
   438  	ANDQ R10, R14
   439  	XORQ R13, R14
   440  	MOVQ R14, 144(DI)
   441  	XORQ R11, R15
   442  
   443  	// Result s
   444  	MOVQ 16(SP), R10
   445  	MOVQ 64(SP), R11
   446  	MOVQ 112(SP), R12
   447  	XORQ DX, R10
   448  	MOVQ 120(SP), R13
   449  	ROLQ $0x3e, R10
   450  	XORQ R8, R11
   451  	MOVQ 168(SP), R14
   452  	ROLQ $0x37, R11
   453  	XORQ R9, R12
   454  	MOVQ R10, R9
   455  	XORQ CX, R14
   456  	ROLQ $0x02, R14
   457  	ANDQ R11, R9
   458  	XORQ R14, R9
   459  	MOVQ R9, 192(DI)
   460  	ROLQ $0x27, R12
   461  	XORQ R9, R15
   462  	NOTQ R11
   463  	XORQ BX, R13
   464  	MOVQ R11, BX
   465  	ANDQ R12, BX
   466  	XORQ R10, BX
   467  	MOVQ BX, 160(DI)
   468  	XORQ BX, SI
   469  	ROLQ $0x29, R13
   470  	MOVQ R12, CX
   471  	ORQ  R13, CX
   472  	XORQ R11, CX
   473  	MOVQ CX, 168(DI)
   474  	XORQ CX, BP
   475  	MOVQ R13, DX
   476  	MOVQ R14, R8
   477  	ANDQ R14, DX
   478  	ORQ  R10, R8
   479  	XORQ R12, DX
   480  	XORQ R13, R8
   481  	MOVQ DX, 176(DI)
   482  	MOVQ R8, 184(DI)
   483  
   484  	// Prepare round
   485  	MOVQ BP, BX
   486  	ROLQ $0x01, BX
   487  	MOVQ 16(DI), R12
   488  	XORQ 56(DI), DX
   489  	XORQ R15, BX
   490  	XORQ 96(DI), R12
   491  	XORQ 136(DI), DX
   492  	XORQ DX, R12
   493  	MOVQ R12, CX
   494  	ROLQ $0x01, CX
   495  	MOVQ 24(DI), R13
   496  	XORQ 64(DI), R8
   497  	XORQ SI, CX
   498  	XORQ 104(DI), R13
   499  	XORQ 144(DI), R8
   500  	XORQ R8, R13
   501  	MOVQ R13, DX
   502  	ROLQ $0x01, DX
   503  	MOVQ R15, R8
   504  	XORQ BP, DX
   505  	ROLQ $0x01, R8
   506  	MOVQ SI, R9
   507  	XORQ R12, R8
   508  	ROLQ $0x01, R9
   509  
   510  	// Result b
   511  	MOVQ (DI), R10
   512  	MOVQ 48(DI), R11
   513  	XORQ R13, R9
   514  	MOVQ 96(DI), R12
   515  	MOVQ 144(DI), R13
   516  	MOVQ 192(DI), R14
   517  	XORQ CX, R11
   518  	ROLQ $0x2c, R11
   519  	XORQ DX, R12
   520  	XORQ BX, R10
   521  	ROLQ $0x2b, R12
   522  	MOVQ R11, SI
   523  	MOVQ $0x800000000000808a, AX
   524  	ORQ  R12, SI
   525  	XORQ R10, AX
   526  	XORQ AX, SI
   527  	MOVQ SI, (SP)
   528  	XORQ R9, R14
   529  	ROLQ $0x0e, R14
   530  	MOVQ R10, R15
   531  	ANDQ R11, R15
   532  	XORQ R14, R15
   533  	MOVQ R15, 32(SP)
   534  	XORQ R8, R13
   535  	ROLQ $0x15, R13
   536  	MOVQ R13, AX
   537  	ANDQ R14, AX
   538  	XORQ R12, AX
   539  	MOVQ AX, 16(SP)
   540  	NOTQ R12
   541  	ORQ  R10, R14
   542  	ORQ  R13, R12
   543  	XORQ R13, R14
   544  	XORQ R11, R12
   545  	MOVQ R14, 24(SP)
   546  	MOVQ R12, 8(SP)
   547  	MOVQ R12, BP
   548  
   549  	// Result g
   550  	MOVQ 72(DI), R11
   551  	XORQ R9, R11
   552  	MOVQ 80(DI), R12
   553  	ROLQ $0x14, R11
   554  	XORQ BX, R12
   555  	ROLQ $0x03, R12
   556  	MOVQ 24(DI), R10
   557  	MOVQ R11, AX
   558  	ORQ  R12, AX
   559  	XORQ R8, R10
   560  	MOVQ 128(DI), R13
   561  	MOVQ 176(DI), R14
   562  	ROLQ $0x1c, R10
   563  	XORQ R10, AX
   564  	MOVQ AX, 40(SP)
   565  	XORQ AX, SI
   566  	XORQ CX, R13
   567  	ROLQ $0x2d, R13
   568  	MOVQ R12, AX
   569  	ANDQ R13, AX
   570  	XORQ R11, AX
   571  	MOVQ AX, 48(SP)
   572  	XORQ AX, BP
   573  	XORQ DX, R14
   574  	ROLQ $0x3d, R14
   575  	MOVQ R14, AX
   576  	ORQ  R10, AX
   577  	XORQ R13, AX
   578  	MOVQ AX, 64(SP)
   579  	ANDQ R11, R10
   580  	XORQ R14, R10
   581  	MOVQ R10, 72(SP)
   582  	NOTQ R14
   583  	XORQ R10, R15
   584  	ORQ  R14, R13
   585  	XORQ R12, R13
   586  	MOVQ R13, 56(SP)
   587  
   588  	// Result k
   589  	MOVQ 8(DI), R10
   590  	MOVQ 56(DI), R11
   591  	MOVQ 104(DI), R12
   592  	MOVQ 152(DI), R13
   593  	MOVQ 160(DI), R14
   594  	XORQ DX, R11
   595  	ROLQ $0x06, R11
   596  	XORQ R8, R12
   597  	ROLQ $0x19, R12
   598  	MOVQ R11, AX
   599  	ORQ  R12, AX
   600  	XORQ CX, R10
   601  	ROLQ $0x01, R10
   602  	XORQ R10, AX
   603  	MOVQ AX, 80(SP)
   604  	XORQ AX, SI
   605  	XORQ R9, R13
   606  	ROLQ $0x08, R13
   607  	MOVQ R12, AX
   608  	ANDQ R13, AX
   609  	XORQ R11, AX
   610  	MOVQ AX, 88(SP)
   611  	XORQ AX, BP
   612  	XORQ BX, R14
   613  	ROLQ $0x12, R14
   614  	NOTQ R13
   615  	MOVQ R13, AX
   616  	ANDQ R14, AX
   617  	XORQ R12, AX
   618  	MOVQ AX, 96(SP)
   619  	MOVQ R14, AX
   620  	ORQ  R10, AX
   621  	XORQ R13, AX
   622  	MOVQ AX, 104(SP)
   623  	ANDQ R11, R10
   624  	XORQ R14, R10
   625  	MOVQ R10, 112(SP)
   626  	XORQ R10, R15
   627  
   628  	// Result m
   629  	MOVQ 40(DI), R11
   630  	XORQ BX, R11
   631  	MOVQ 88(DI), R12
   632  	ROLQ $0x24, R11
   633  	XORQ CX, R12
   634  	MOVQ 32(DI), R10
   635  	ROLQ $0x0a, R12
   636  	MOVQ R11, AX
   637  	MOVQ 136(DI), R13
   638  	ANDQ R12, AX
   639  	XORQ R9, R10
   640  	MOVQ 184(DI), R14
   641  	ROLQ $0x1b, R10
   642  	XORQ R10, AX
   643  	MOVQ AX, 120(SP)
   644  	XORQ AX, SI
   645  	XORQ DX, R13
   646  	ROLQ $0x0f, R13
   647  	MOVQ R12, AX
   648  	ORQ  R13, AX
   649  	XORQ R11, AX
   650  	MOVQ AX, 128(SP)
   651  	XORQ AX, BP
   652  	XORQ R8, R14
   653  	ROLQ $0x38, R14
   654  	NOTQ R13
   655  	MOVQ R13, AX
   656  	ORQ  R14, AX
   657  	XORQ R12, AX
   658  	MOVQ AX, 136(SP)
   659  	ORQ  R10, R11
   660  	XORQ R14, R11
   661  	MOVQ R11, 152(SP)
   662  	ANDQ R10, R14
   663  	XORQ R13, R14
   664  	MOVQ R14, 144(SP)
   665  	XORQ R11, R15
   666  
   667  	// Result s
   668  	MOVQ 16(DI), R10
   669  	MOVQ 64(DI), R11
   670  	MOVQ 112(DI), R12
   671  	XORQ DX, R10
   672  	MOVQ 120(DI), R13
   673  	ROLQ $0x3e, R10
   674  	XORQ R8, R11
   675  	MOVQ 168(DI), R14
   676  	ROLQ $0x37, R11
   677  	XORQ R9, R12
   678  	MOVQ R10, R9
   679  	XORQ CX, R14
   680  	ROLQ $0x02, R14
   681  	ANDQ R11, R9
   682  	XORQ R14, R9
   683  	MOVQ R9, 192(SP)
   684  	ROLQ $0x27, R12
   685  	XORQ R9, R15
   686  	NOTQ R11
   687  	XORQ BX, R13
   688  	MOVQ R11, BX
   689  	ANDQ R12, BX
   690  	XORQ R10, BX
   691  	MOVQ BX, 160(SP)
   692  	XORQ BX, SI
   693  	ROLQ $0x29, R13
   694  	MOVQ R12, CX
   695  	ORQ  R13, CX
   696  	XORQ R11, CX
   697  	MOVQ CX, 168(SP)
   698  	XORQ CX, BP
   699  	MOVQ R13, DX
   700  	MOVQ R14, R8
   701  	ANDQ R14, DX
   702  	ORQ  R10, R8
   703  	XORQ R12, DX
   704  	XORQ R13, R8
   705  	MOVQ DX, 176(SP)
   706  	MOVQ R8, 184(SP)
   707  
   708  	// Prepare round
   709  	MOVQ BP, BX
   710  	ROLQ $0x01, BX
   711  	MOVQ 16(SP), R12
   712  	XORQ 56(SP), DX
   713  	XORQ R15, BX
   714  	XORQ 96(SP), R12
   715  	XORQ 136(SP), DX
   716  	XORQ DX, R12
   717  	MOVQ R12, CX
   718  	ROLQ $0x01, CX
   719  	MOVQ 24(SP), R13
   720  	XORQ 64(SP), R8
   721  	XORQ SI, CX
   722  	XORQ 104(SP), R13
   723  	XORQ 144(SP), R8
   724  	XORQ R8, R13
   725  	MOVQ R13, DX
   726  	ROLQ $0x01, DX
   727  	MOVQ R15, R8
   728  	XORQ BP, DX
   729  	ROLQ $0x01, R8
   730  	MOVQ SI, R9
   731  	XORQ R12, R8
   732  	ROLQ $0x01, R9
   733  
   734  	// Result b
   735  	MOVQ (SP), R10
   736  	MOVQ 48(SP), R11
   737  	XORQ R13, R9
   738  	MOVQ 96(SP), R12
   739  	MOVQ 144(SP), R13
   740  	MOVQ 192(SP), R14
   741  	XORQ CX, R11
   742  	ROLQ $0x2c, R11
   743  	XORQ DX, R12
   744  	XORQ BX, R10
   745  	ROLQ $0x2b, R12
   746  	MOVQ R11, SI
   747  	MOVQ $0x8000000080008000, AX
   748  	ORQ  R12, SI
   749  	XORQ R10, AX
   750  	XORQ AX, SI
   751  	MOVQ SI, (DI)
   752  	XORQ R9, R14
   753  	ROLQ $0x0e, R14
   754  	MOVQ R10, R15
   755  	ANDQ R11, R15
   756  	XORQ R14, R15
   757  	MOVQ R15, 32(DI)
   758  	XORQ R8, R13
   759  	ROLQ $0x15, R13
   760  	MOVQ R13, AX
   761  	ANDQ R14, AX
   762  	XORQ R12, AX
   763  	MOVQ AX, 16(DI)
   764  	NOTQ R12
   765  	ORQ  R10, R14
   766  	ORQ  R13, R12
   767  	XORQ R13, R14
   768  	XORQ R11, R12
   769  	MOVQ R14, 24(DI)
   770  	MOVQ R12, 8(DI)
   771  	MOVQ R12, BP
   772  
   773  	// Result g
   774  	MOVQ 72(SP), R11
   775  	XORQ R9, R11
   776  	MOVQ 80(SP), R12
   777  	ROLQ $0x14, R11
   778  	XORQ BX, R12
   779  	ROLQ $0x03, R12
   780  	MOVQ 24(SP), R10
   781  	MOVQ R11, AX
   782  	ORQ  R12, AX
   783  	XORQ R8, R10
   784  	MOVQ 128(SP), R13
   785  	MOVQ 176(SP), R14
   786  	ROLQ $0x1c, R10
   787  	XORQ R10, AX
   788  	MOVQ AX, 40(DI)
   789  	XORQ AX, SI
   790  	XORQ CX, R13
   791  	ROLQ $0x2d, R13
   792  	MOVQ R12, AX
   793  	ANDQ R13, AX
   794  	XORQ R11, AX
   795  	MOVQ AX, 48(DI)
   796  	XORQ AX, BP
   797  	XORQ DX, R14
   798  	ROLQ $0x3d, R14
   799  	MOVQ R14, AX
   800  	ORQ  R10, AX
   801  	XORQ R13, AX
   802  	MOVQ AX, 64(DI)
   803  	ANDQ R11, R10
   804  	XORQ R14, R10
   805  	MOVQ R10, 72(DI)
   806  	NOTQ R14
   807  	XORQ R10, R15
   808  	ORQ  R14, R13
   809  	XORQ R12, R13
   810  	MOVQ R13, 56(DI)
   811  
   812  	// Result k
   813  	MOVQ 8(SP), R10
   814  	MOVQ 56(SP), R11
   815  	MOVQ 104(SP), R12
   816  	MOVQ 152(SP), R13
   817  	MOVQ 160(SP), R14
   818  	XORQ DX, R11
   819  	ROLQ $0x06, R11
   820  	XORQ R8, R12
   821  	ROLQ $0x19, R12
   822  	MOVQ R11, AX
   823  	ORQ  R12, AX
   824  	XORQ CX, R10
   825  	ROLQ $0x01, R10
   826  	XORQ R10, AX
   827  	MOVQ AX, 80(DI)
   828  	XORQ AX, SI
   829  	XORQ R9, R13
   830  	ROLQ $0x08, R13
   831  	MOVQ R12, AX
   832  	ANDQ R13, AX
   833  	XORQ R11, AX
   834  	MOVQ AX, 88(DI)
   835  	XORQ AX, BP
   836  	XORQ BX, R14
   837  	ROLQ $0x12, R14
   838  	NOTQ R13
   839  	MOVQ R13, AX
   840  	ANDQ R14, AX
   841  	XORQ R12, AX
   842  	MOVQ AX, 96(DI)
   843  	MOVQ R14, AX
   844  	ORQ  R10, AX
   845  	XORQ R13, AX
   846  	MOVQ AX, 104(DI)
   847  	ANDQ R11, R10
   848  	XORQ R14, R10
   849  	MOVQ R10, 112(DI)
   850  	XORQ R10, R15
   851  
   852  	// Result m
   853  	MOVQ 40(SP), R11
   854  	XORQ BX, R11
   855  	MOVQ 88(SP), R12
   856  	ROLQ $0x24, R11
   857  	XORQ CX, R12
   858  	MOVQ 32(SP), R10
   859  	ROLQ $0x0a, R12
   860  	MOVQ R11, AX
   861  	MOVQ 136(SP), R13
   862  	ANDQ R12, AX
   863  	XORQ R9, R10
   864  	MOVQ 184(SP), R14
   865  	ROLQ $0x1b, R10
   866  	XORQ R10, AX
   867  	MOVQ AX, 120(DI)
   868  	XORQ AX, SI
   869  	XORQ DX, R13
   870  	ROLQ $0x0f, R13
   871  	MOVQ R12, AX
   872  	ORQ  R13, AX
   873  	XORQ R11, AX
   874  	MOVQ AX, 128(DI)
   875  	XORQ AX, BP
   876  	XORQ R8, R14
   877  	ROLQ $0x38, R14
   878  	NOTQ R13
   879  	MOVQ R13, AX
   880  	ORQ  R14, AX
   881  	XORQ R12, AX
   882  	MOVQ AX, 136(DI)
   883  	ORQ  R10, R11
   884  	XORQ R14, R11
   885  	MOVQ R11, 152(DI)
   886  	ANDQ R10, R14
   887  	XORQ R13, R14
   888  	MOVQ R14, 144(DI)
   889  	XORQ R11, R15
   890  
   891  	// Result s
   892  	MOVQ 16(SP), R10
   893  	MOVQ 64(SP), R11
   894  	MOVQ 112(SP), R12
   895  	XORQ DX, R10
   896  	MOVQ 120(SP), R13
   897  	ROLQ $0x3e, R10
   898  	XORQ R8, R11
   899  	MOVQ 168(SP), R14
   900  	ROLQ $0x37, R11
   901  	XORQ R9, R12
   902  	MOVQ R10, R9
   903  	XORQ CX, R14
   904  	ROLQ $0x02, R14
   905  	ANDQ R11, R9
   906  	XORQ R14, R9
   907  	MOVQ R9, 192(DI)
   908  	ROLQ $0x27, R12
   909  	XORQ R9, R15
   910  	NOTQ R11
   911  	XORQ BX, R13
   912  	MOVQ R11, BX
   913  	ANDQ R12, BX
   914  	XORQ R10, BX
   915  	MOVQ BX, 160(DI)
   916  	XORQ BX, SI
   917  	ROLQ $0x29, R13
   918  	MOVQ R12, CX
   919  	ORQ  R13, CX
   920  	XORQ R11, CX
   921  	MOVQ CX, 168(DI)
   922  	XORQ CX, BP
   923  	MOVQ R13, DX
   924  	MOVQ R14, R8
   925  	ANDQ R14, DX
   926  	ORQ  R10, R8
   927  	XORQ R12, DX
   928  	XORQ R13, R8
   929  	MOVQ DX, 176(DI)
   930  	MOVQ R8, 184(DI)
   931  
   932  	// Prepare round
   933  	MOVQ BP, BX
   934  	ROLQ $0x01, BX
   935  	MOVQ 16(DI), R12
   936  	XORQ 56(DI), DX
   937  	XORQ R15, BX
   938  	XORQ 96(DI), R12
   939  	XORQ 136(DI), DX
   940  	XORQ DX, R12
   941  	MOVQ R12, CX
   942  	ROLQ $0x01, CX
   943  	MOVQ 24(DI), R13
   944  	XORQ 64(DI), R8
   945  	XORQ SI, CX
   946  	XORQ 104(DI), R13
   947  	XORQ 144(DI), R8
   948  	XORQ R8, R13
   949  	MOVQ R13, DX
   950  	ROLQ $0x01, DX
   951  	MOVQ R15, R8
   952  	XORQ BP, DX
   953  	ROLQ $0x01, R8
   954  	MOVQ SI, R9
   955  	XORQ R12, R8
   956  	ROLQ $0x01, R9
   957  
   958  	// Result b
   959  	MOVQ (DI), R10
   960  	MOVQ 48(DI), R11
   961  	XORQ R13, R9
   962  	MOVQ 96(DI), R12
   963  	MOVQ 144(DI), R13
   964  	MOVQ 192(DI), R14
   965  	XORQ CX, R11
   966  	ROLQ $0x2c, R11
   967  	XORQ DX, R12
   968  	XORQ BX, R10
   969  	ROLQ $0x2b, R12
   970  	MOVQ R11, SI
   971  	MOVQ $0x000000000000808b, AX
   972  	ORQ  R12, SI
   973  	XORQ R10, AX
   974  	XORQ AX, SI
   975  	MOVQ SI, (SP)
   976  	XORQ R9, R14
   977  	ROLQ $0x0e, R14
   978  	MOVQ R10, R15
   979  	ANDQ R11, R15
   980  	XORQ R14, R15
   981  	MOVQ R15, 32(SP)
   982  	XORQ R8, R13
   983  	ROLQ $0x15, R13
   984  	MOVQ R13, AX
   985  	ANDQ R14, AX
   986  	XORQ R12, AX
   987  	MOVQ AX, 16(SP)
   988  	NOTQ R12
   989  	ORQ  R10, R14
   990  	ORQ  R13, R12
   991  	XORQ R13, R14
   992  	XORQ R11, R12
   993  	MOVQ R14, 24(SP)
   994  	MOVQ R12, 8(SP)
   995  	MOVQ R12, BP
   996  
   997  	// Result g
   998  	MOVQ 72(DI), R11
   999  	XORQ R9, R11
  1000  	MOVQ 80(DI), R12
  1001  	ROLQ $0x14, R11
  1002  	XORQ BX, R12
  1003  	ROLQ $0x03, R12
  1004  	MOVQ 24(DI), R10
  1005  	MOVQ R11, AX
  1006  	ORQ  R12, AX
  1007  	XORQ R8, R10
  1008  	MOVQ 128(DI), R13
  1009  	MOVQ 176(DI), R14
  1010  	ROLQ $0x1c, R10
  1011  	XORQ R10, AX
  1012  	MOVQ AX, 40(SP)
  1013  	XORQ AX, SI
  1014  	XORQ CX, R13
  1015  	ROLQ $0x2d, R13
  1016  	MOVQ R12, AX
  1017  	ANDQ R13, AX
  1018  	XORQ R11, AX
  1019  	MOVQ AX, 48(SP)
  1020  	XORQ AX, BP
  1021  	XORQ DX, R14
  1022  	ROLQ $0x3d, R14
  1023  	MOVQ R14, AX
  1024  	ORQ  R10, AX
  1025  	XORQ R13, AX
  1026  	MOVQ AX, 64(SP)
  1027  	ANDQ R11, R10
  1028  	XORQ R14, R10
  1029  	MOVQ R10, 72(SP)
  1030  	NOTQ R14
  1031  	XORQ R10, R15
  1032  	ORQ  R14, R13
  1033  	XORQ R12, R13
  1034  	MOVQ R13, 56(SP)
  1035  
  1036  	// Result k
  1037  	MOVQ 8(DI), R10
  1038  	MOVQ 56(DI), R11
  1039  	MOVQ 104(DI), R12
  1040  	MOVQ 152(DI), R13
  1041  	MOVQ 160(DI), R14
  1042  	XORQ DX, R11
  1043  	ROLQ $0x06, R11
  1044  	XORQ R8, R12
  1045  	ROLQ $0x19, R12
  1046  	MOVQ R11, AX
  1047  	ORQ  R12, AX
  1048  	XORQ CX, R10
  1049  	ROLQ $0x01, R10
  1050  	XORQ R10, AX
  1051  	MOVQ AX, 80(SP)
  1052  	XORQ AX, SI
  1053  	XORQ R9, R13
  1054  	ROLQ $0x08, R13
  1055  	MOVQ R12, AX
  1056  	ANDQ R13, AX
  1057  	XORQ R11, AX
  1058  	MOVQ AX, 88(SP)
  1059  	XORQ AX, BP
  1060  	XORQ BX, R14
  1061  	ROLQ $0x12, R14
  1062  	NOTQ R13
  1063  	MOVQ R13, AX
  1064  	ANDQ R14, AX
  1065  	XORQ R12, AX
  1066  	MOVQ AX, 96(SP)
  1067  	MOVQ R14, AX
  1068  	ORQ  R10, AX
  1069  	XORQ R13, AX
  1070  	MOVQ AX, 104(SP)
  1071  	ANDQ R11, R10
  1072  	XORQ R14, R10
  1073  	MOVQ R10, 112(SP)
  1074  	XORQ R10, R15
  1075  
  1076  	// Result m
  1077  	MOVQ 40(DI), R11
  1078  	XORQ BX, R11
  1079  	MOVQ 88(DI), R12
  1080  	ROLQ $0x24, R11
  1081  	XORQ CX, R12
  1082  	MOVQ 32(DI), R10
  1083  	ROLQ $0x0a, R12
  1084  	MOVQ R11, AX
  1085  	MOVQ 136(DI), R13
  1086  	ANDQ R12, AX
  1087  	XORQ R9, R10
  1088  	MOVQ 184(DI), R14
  1089  	ROLQ $0x1b, R10
  1090  	XORQ R10, AX
  1091  	MOVQ AX, 120(SP)
  1092  	XORQ AX, SI
  1093  	XORQ DX, R13
  1094  	ROLQ $0x0f, R13
  1095  	MOVQ R12, AX
  1096  	ORQ  R13, AX
  1097  	XORQ R11, AX
  1098  	MOVQ AX, 128(SP)
  1099  	XORQ AX, BP
  1100  	XORQ R8, R14
  1101  	ROLQ $0x38, R14
  1102  	NOTQ R13
  1103  	MOVQ R13, AX
  1104  	ORQ  R14, AX
  1105  	XORQ R12, AX
  1106  	MOVQ AX, 136(SP)
  1107  	ORQ  R10, R11
  1108  	XORQ R14, R11
  1109  	MOVQ R11, 152(SP)
  1110  	ANDQ R10, R14
  1111  	XORQ R13, R14
  1112  	MOVQ R14, 144(SP)
  1113  	XORQ R11, R15
  1114  
  1115  	// Result s
  1116  	MOVQ 16(DI), R10
  1117  	MOVQ 64(DI), R11
  1118  	MOVQ 112(DI), R12
  1119  	XORQ DX, R10
  1120  	MOVQ 120(DI), R13
  1121  	ROLQ $0x3e, R10
  1122  	XORQ R8, R11
  1123  	MOVQ 168(DI), R14
  1124  	ROLQ $0x37, R11
  1125  	XORQ R9, R12
  1126  	MOVQ R10, R9
  1127  	XORQ CX, R14
  1128  	ROLQ $0x02, R14
  1129  	ANDQ R11, R9
  1130  	XORQ R14, R9
  1131  	MOVQ R9, 192(SP)
  1132  	ROLQ $0x27, R12
  1133  	XORQ R9, R15
  1134  	NOTQ R11
  1135  	XORQ BX, R13
  1136  	MOVQ R11, BX
  1137  	ANDQ R12, BX
  1138  	XORQ R10, BX
  1139  	MOVQ BX, 160(SP)
  1140  	XORQ BX, SI
  1141  	ROLQ $0x29, R13
  1142  	MOVQ R12, CX
  1143  	ORQ  R13, CX
  1144  	XORQ R11, CX
  1145  	MOVQ CX, 168(SP)
  1146  	XORQ CX, BP
  1147  	MOVQ R13, DX
  1148  	MOVQ R14, R8
  1149  	ANDQ R14, DX
  1150  	ORQ  R10, R8
  1151  	XORQ R12, DX
  1152  	XORQ R13, R8
  1153  	MOVQ DX, 176(SP)
  1154  	MOVQ R8, 184(SP)
  1155  
  1156  	// Prepare round
  1157  	MOVQ BP, BX
  1158  	ROLQ $0x01, BX
  1159  	MOVQ 16(SP), R12
  1160  	XORQ 56(SP), DX
  1161  	XORQ R15, BX
  1162  	XORQ 96(SP), R12
  1163  	XORQ 136(SP), DX
  1164  	XORQ DX, R12
  1165  	MOVQ R12, CX
  1166  	ROLQ $0x01, CX
  1167  	MOVQ 24(SP), R13
  1168  	XORQ 64(SP), R8
  1169  	XORQ SI, CX
  1170  	XORQ 104(SP), R13
  1171  	XORQ 144(SP), R8
  1172  	XORQ R8, R13
  1173  	MOVQ R13, DX
  1174  	ROLQ $0x01, DX
  1175  	MOVQ R15, R8
  1176  	XORQ BP, DX
  1177  	ROLQ $0x01, R8
  1178  	MOVQ SI, R9
  1179  	XORQ R12, R8
  1180  	ROLQ $0x01, R9
  1181  
  1182  	// Result b
  1183  	MOVQ (SP), R10
  1184  	MOVQ 48(SP), R11
  1185  	XORQ R13, R9
  1186  	MOVQ 96(SP), R12
  1187  	MOVQ 144(SP), R13
  1188  	MOVQ 192(SP), R14
  1189  	XORQ CX, R11
  1190  	ROLQ $0x2c, R11
  1191  	XORQ DX, R12
  1192  	XORQ BX, R10
  1193  	ROLQ $0x2b, R12
  1194  	MOVQ R11, SI
  1195  	MOVQ $0x0000000080000001, AX
  1196  	ORQ  R12, SI
  1197  	XORQ R10, AX
  1198  	XORQ AX, SI
  1199  	MOVQ SI, (DI)
  1200  	XORQ R9, R14
  1201  	ROLQ $0x0e, R14
  1202  	MOVQ R10, R15
  1203  	ANDQ R11, R15
  1204  	XORQ R14, R15
  1205  	MOVQ R15, 32(DI)
  1206  	XORQ R8, R13
  1207  	ROLQ $0x15, R13
  1208  	MOVQ R13, AX
  1209  	ANDQ R14, AX
  1210  	XORQ R12, AX
  1211  	MOVQ AX, 16(DI)
  1212  	NOTQ R12
  1213  	ORQ  R10, R14
  1214  	ORQ  R13, R12
  1215  	XORQ R13, R14
  1216  	XORQ R11, R12
  1217  	MOVQ R14, 24(DI)
  1218  	MOVQ R12, 8(DI)
  1219  	MOVQ R12, BP
  1220  
  1221  	// Result g
  1222  	MOVQ 72(SP), R11
  1223  	XORQ R9, R11
  1224  	MOVQ 80(SP), R12
  1225  	ROLQ $0x14, R11
  1226  	XORQ BX, R12
  1227  	ROLQ $0x03, R12
  1228  	MOVQ 24(SP), R10
  1229  	MOVQ R11, AX
  1230  	ORQ  R12, AX
  1231  	XORQ R8, R10
  1232  	MOVQ 128(SP), R13
  1233  	MOVQ 176(SP), R14
  1234  	ROLQ $0x1c, R10
  1235  	XORQ R10, AX
  1236  	MOVQ AX, 40(DI)
  1237  	XORQ AX, SI
  1238  	XORQ CX, R13
  1239  	ROLQ $0x2d, R13
  1240  	MOVQ R12, AX
  1241  	ANDQ R13, AX
  1242  	XORQ R11, AX
  1243  	MOVQ AX, 48(DI)
  1244  	XORQ AX, BP
  1245  	XORQ DX, R14
  1246  	ROLQ $0x3d, R14
  1247  	MOVQ R14, AX
  1248  	ORQ  R10, AX
  1249  	XORQ R13, AX
  1250  	MOVQ AX, 64(DI)
  1251  	ANDQ R11, R10
  1252  	XORQ R14, R10
  1253  	MOVQ R10, 72(DI)
  1254  	NOTQ R14
  1255  	XORQ R10, R15
  1256  	ORQ  R14, R13
  1257  	XORQ R12, R13
  1258  	MOVQ R13, 56(DI)
  1259  
  1260  	// Result k
  1261  	MOVQ 8(SP), R10
  1262  	MOVQ 56(SP), R11
  1263  	MOVQ 104(SP), R12
  1264  	MOVQ 152(SP), R13
  1265  	MOVQ 160(SP), R14
  1266  	XORQ DX, R11
  1267  	ROLQ $0x06, R11
  1268  	XORQ R8, R12
  1269  	ROLQ $0x19, R12
  1270  	MOVQ R11, AX
  1271  	ORQ  R12, AX
  1272  	XORQ CX, R10
  1273  	ROLQ $0x01, R10
  1274  	XORQ R10, AX
  1275  	MOVQ AX, 80(DI)
  1276  	XORQ AX, SI
  1277  	XORQ R9, R13
  1278  	ROLQ $0x08, R13
  1279  	MOVQ R12, AX
  1280  	ANDQ R13, AX
  1281  	XORQ R11, AX
  1282  	MOVQ AX, 88(DI)
  1283  	XORQ AX, BP
  1284  	XORQ BX, R14
  1285  	ROLQ $0x12, R14
  1286  	NOTQ R13
  1287  	MOVQ R13, AX
  1288  	ANDQ R14, AX
  1289  	XORQ R12, AX
  1290  	MOVQ AX, 96(DI)
  1291  	MOVQ R14, AX
  1292  	ORQ  R10, AX
  1293  	XORQ R13, AX
  1294  	MOVQ AX, 104(DI)
  1295  	ANDQ R11, R10
  1296  	XORQ R14, R10
  1297  	MOVQ R10, 112(DI)
  1298  	XORQ R10, R15
  1299  
  1300  	// Result m
  1301  	MOVQ 40(SP), R11
  1302  	XORQ BX, R11
  1303  	MOVQ 88(SP), R12
  1304  	ROLQ $0x24, R11
  1305  	XORQ CX, R12
  1306  	MOVQ 32(SP), R10
  1307  	ROLQ $0x0a, R12
  1308  	MOVQ R11, AX
  1309  	MOVQ 136(SP), R13
  1310  	ANDQ R12, AX
  1311  	XORQ R9, R10
  1312  	MOVQ 184(SP), R14
  1313  	ROLQ $0x1b, R10
  1314  	XORQ R10, AX
  1315  	MOVQ AX, 120(DI)
  1316  	XORQ AX, SI
  1317  	XORQ DX, R13
  1318  	ROLQ $0x0f, R13
  1319  	MOVQ R12, AX
  1320  	ORQ  R13, AX
  1321  	XORQ R11, AX
  1322  	MOVQ AX, 128(DI)
  1323  	XORQ AX, BP
  1324  	XORQ R8, R14
  1325  	ROLQ $0x38, R14
  1326  	NOTQ R13
  1327  	MOVQ R13, AX
  1328  	ORQ  R14, AX
  1329  	XORQ R12, AX
  1330  	MOVQ AX, 136(DI)
  1331  	ORQ  R10, R11
  1332  	XORQ R14, R11
  1333  	MOVQ R11, 152(DI)
  1334  	ANDQ R10, R14
  1335  	XORQ R13, R14
  1336  	MOVQ R14, 144(DI)
  1337  	XORQ R11, R15
  1338  
  1339  	// Result s
  1340  	MOVQ 16(SP), R10
  1341  	MOVQ 64(SP), R11
  1342  	MOVQ 112(SP), R12
  1343  	XORQ DX, R10
  1344  	MOVQ 120(SP), R13
  1345  	ROLQ $0x3e, R10
  1346  	XORQ R8, R11
  1347  	MOVQ 168(SP), R14
  1348  	ROLQ $0x37, R11
  1349  	XORQ R9, R12
  1350  	MOVQ R10, R9
  1351  	XORQ CX, R14
  1352  	ROLQ $0x02, R14
  1353  	ANDQ R11, R9
  1354  	XORQ R14, R9
  1355  	MOVQ R9, 192(DI)
  1356  	ROLQ $0x27, R12
  1357  	XORQ R9, R15
  1358  	NOTQ R11
  1359  	XORQ BX, R13
  1360  	MOVQ R11, BX
  1361  	ANDQ R12, BX
  1362  	XORQ R10, BX
  1363  	MOVQ BX, 160(DI)
  1364  	XORQ BX, SI
  1365  	ROLQ $0x29, R13
  1366  	MOVQ R12, CX
  1367  	ORQ  R13, CX
  1368  	XORQ R11, CX
  1369  	MOVQ CX, 168(DI)
  1370  	XORQ CX, BP
  1371  	MOVQ R13, DX
  1372  	MOVQ R14, R8
  1373  	ANDQ R14, DX
  1374  	ORQ  R10, R8
  1375  	XORQ R12, DX
  1376  	XORQ R13, R8
  1377  	MOVQ DX, 176(DI)
  1378  	MOVQ R8, 184(DI)
  1379  
  1380  	// Prepare round
  1381  	MOVQ BP, BX
  1382  	ROLQ $0x01, BX
  1383  	MOVQ 16(DI), R12
  1384  	XORQ 56(DI), DX
  1385  	XORQ R15, BX
  1386  	XORQ 96(DI), R12
  1387  	XORQ 136(DI), DX
  1388  	XORQ DX, R12
  1389  	MOVQ R12, CX
  1390  	ROLQ $0x01, CX
  1391  	MOVQ 24(DI), R13
  1392  	XORQ 64(DI), R8
  1393  	XORQ SI, CX
  1394  	XORQ 104(DI), R13
  1395  	XORQ 144(DI), R8
  1396  	XORQ R8, R13
  1397  	MOVQ R13, DX
  1398  	ROLQ $0x01, DX
  1399  	MOVQ R15, R8
  1400  	XORQ BP, DX
  1401  	ROLQ $0x01, R8
  1402  	MOVQ SI, R9
  1403  	XORQ R12, R8
  1404  	ROLQ $0x01, R9
  1405  
  1406  	// Result b
  1407  	MOVQ (DI), R10
  1408  	MOVQ 48(DI), R11
  1409  	XORQ R13, R9
  1410  	MOVQ 96(DI), R12
  1411  	MOVQ 144(DI), R13
  1412  	MOVQ 192(DI), R14
  1413  	XORQ CX, R11
  1414  	ROLQ $0x2c, R11
  1415  	XORQ DX, R12
  1416  	XORQ BX, R10
  1417  	ROLQ $0x2b, R12
  1418  	MOVQ R11, SI
  1419  	MOVQ $0x8000000080008081, AX
  1420  	ORQ  R12, SI
  1421  	XORQ R10, AX
  1422  	XORQ AX, SI
  1423  	MOVQ SI, (SP)
  1424  	XORQ R9, R14
  1425  	ROLQ $0x0e, R14
  1426  	MOVQ R10, R15
  1427  	ANDQ R11, R15
  1428  	XORQ R14, R15
  1429  	MOVQ R15, 32(SP)
  1430  	XORQ R8, R13
  1431  	ROLQ $0x15, R13
  1432  	MOVQ R13, AX
  1433  	ANDQ R14, AX
  1434  	XORQ R12, AX
  1435  	MOVQ AX, 16(SP)
  1436  	NOTQ R12
  1437  	ORQ  R10, R14
  1438  	ORQ  R13, R12
  1439  	XORQ R13, R14
  1440  	XORQ R11, R12
  1441  	MOVQ R14, 24(SP)
  1442  	MOVQ R12, 8(SP)
  1443  	MOVQ R12, BP
  1444  
  1445  	// Result g
  1446  	MOVQ 72(DI), R11
  1447  	XORQ R9, R11
  1448  	MOVQ 80(DI), R12
  1449  	ROLQ $0x14, R11
  1450  	XORQ BX, R12
  1451  	ROLQ $0x03, R12
  1452  	MOVQ 24(DI), R10
  1453  	MOVQ R11, AX
  1454  	ORQ  R12, AX
  1455  	XORQ R8, R10
  1456  	MOVQ 128(DI), R13
  1457  	MOVQ 176(DI), R14
  1458  	ROLQ $0x1c, R10
  1459  	XORQ R10, AX
  1460  	MOVQ AX, 40(SP)
  1461  	XORQ AX, SI
  1462  	XORQ CX, R13
  1463  	ROLQ $0x2d, R13
  1464  	MOVQ R12, AX
  1465  	ANDQ R13, AX
  1466  	XORQ R11, AX
  1467  	MOVQ AX, 48(SP)
  1468  	XORQ AX, BP
  1469  	XORQ DX, R14
  1470  	ROLQ $0x3d, R14
  1471  	MOVQ R14, AX
  1472  	ORQ  R10, AX
  1473  	XORQ R13, AX
  1474  	MOVQ AX, 64(SP)
  1475  	ANDQ R11, R10
  1476  	XORQ R14, R10
  1477  	MOVQ R10, 72(SP)
  1478  	NOTQ R14
  1479  	XORQ R10, R15
  1480  	ORQ  R14, R13
  1481  	XORQ R12, R13
  1482  	MOVQ R13, 56(SP)
  1483  
  1484  	// Result k
  1485  	MOVQ 8(DI), R10
  1486  	MOVQ 56(DI), R11
  1487  	MOVQ 104(DI), R12
  1488  	MOVQ 152(DI), R13
  1489  	MOVQ 160(DI), R14
  1490  	XORQ DX, R11
  1491  	ROLQ $0x06, R11
  1492  	XORQ R8, R12
  1493  	ROLQ $0x19, R12
  1494  	MOVQ R11, AX
  1495  	ORQ  R12, AX
  1496  	XORQ CX, R10
  1497  	ROLQ $0x01, R10
  1498  	XORQ R10, AX
  1499  	MOVQ AX, 80(SP)
  1500  	XORQ AX, SI
  1501  	XORQ R9, R13
  1502  	ROLQ $0x08, R13
  1503  	MOVQ R12, AX
  1504  	ANDQ R13, AX
  1505  	XORQ R11, AX
  1506  	MOVQ AX, 88(SP)
  1507  	XORQ AX, BP
  1508  	XORQ BX, R14
  1509  	ROLQ $0x12, R14
  1510  	NOTQ R13
  1511  	MOVQ R13, AX
  1512  	ANDQ R14, AX
  1513  	XORQ R12, AX
  1514  	MOVQ AX, 96(SP)
  1515  	MOVQ R14, AX
  1516  	ORQ  R10, AX
  1517  	XORQ R13, AX
  1518  	MOVQ AX, 104(SP)
  1519  	ANDQ R11, R10
  1520  	XORQ R14, R10
  1521  	MOVQ R10, 112(SP)
  1522  	XORQ R10, R15
  1523  
  1524  	// Result m
  1525  	MOVQ 40(DI), R11
  1526  	XORQ BX, R11
  1527  	MOVQ 88(DI), R12
  1528  	ROLQ $0x24, R11
  1529  	XORQ CX, R12
  1530  	MOVQ 32(DI), R10
  1531  	ROLQ $0x0a, R12
  1532  	MOVQ R11, AX
  1533  	MOVQ 136(DI), R13
  1534  	ANDQ R12, AX
  1535  	XORQ R9, R10
  1536  	MOVQ 184(DI), R14
  1537  	ROLQ $0x1b, R10
  1538  	XORQ R10, AX
  1539  	MOVQ AX, 120(SP)
  1540  	XORQ AX, SI
  1541  	XORQ DX, R13
  1542  	ROLQ $0x0f, R13
  1543  	MOVQ R12, AX
  1544  	ORQ  R13, AX
  1545  	XORQ R11, AX
  1546  	MOVQ AX, 128(SP)
  1547  	XORQ AX, BP
  1548  	XORQ R8, R14
  1549  	ROLQ $0x38, R14
  1550  	NOTQ R13
  1551  	MOVQ R13, AX
  1552  	ORQ  R14, AX
  1553  	XORQ R12, AX
  1554  	MOVQ AX, 136(SP)
  1555  	ORQ  R10, R11
  1556  	XORQ R14, R11
  1557  	MOVQ R11, 152(SP)
  1558  	ANDQ R10, R14
  1559  	XORQ R13, R14
  1560  	MOVQ R14, 144(SP)
  1561  	XORQ R11, R15
  1562  
  1563  	// Result s
  1564  	MOVQ 16(DI), R10
  1565  	MOVQ 64(DI), R11
  1566  	MOVQ 112(DI), R12
  1567  	XORQ DX, R10
  1568  	MOVQ 120(DI), R13
  1569  	ROLQ $0x3e, R10
  1570  	XORQ R8, R11
  1571  	MOVQ 168(DI), R14
  1572  	ROLQ $0x37, R11
  1573  	XORQ R9, R12
  1574  	MOVQ R10, R9
  1575  	XORQ CX, R14
  1576  	ROLQ $0x02, R14
  1577  	ANDQ R11, R9
  1578  	XORQ R14, R9
  1579  	MOVQ R9, 192(SP)
  1580  	ROLQ $0x27, R12
  1581  	XORQ R9, R15
  1582  	NOTQ R11
  1583  	XORQ BX, R13
  1584  	MOVQ R11, BX
  1585  	ANDQ R12, BX
  1586  	XORQ R10, BX
  1587  	MOVQ BX, 160(SP)
  1588  	XORQ BX, SI
  1589  	ROLQ $0x29, R13
  1590  	MOVQ R12, CX
  1591  	ORQ  R13, CX
  1592  	XORQ R11, CX
  1593  	MOVQ CX, 168(SP)
  1594  	XORQ CX, BP
  1595  	MOVQ R13, DX
  1596  	MOVQ R14, R8
  1597  	ANDQ R14, DX
  1598  	ORQ  R10, R8
  1599  	XORQ R12, DX
  1600  	XORQ R13, R8
  1601  	MOVQ DX, 176(SP)
  1602  	MOVQ R8, 184(SP)
  1603  
  1604  	// Prepare round
  1605  	MOVQ BP, BX
  1606  	ROLQ $0x01, BX
  1607  	MOVQ 16(SP), R12
  1608  	XORQ 56(SP), DX
  1609  	XORQ R15, BX
  1610  	XORQ 96(SP), R12
  1611  	XORQ 136(SP), DX
  1612  	XORQ DX, R12
  1613  	MOVQ R12, CX
  1614  	ROLQ $0x01, CX
  1615  	MOVQ 24(SP), R13
  1616  	XORQ 64(SP), R8
  1617  	XORQ SI, CX
  1618  	XORQ 104(SP), R13
  1619  	XORQ 144(SP), R8
  1620  	XORQ R8, R13
  1621  	MOVQ R13, DX
  1622  	ROLQ $0x01, DX
  1623  	MOVQ R15, R8
  1624  	XORQ BP, DX
  1625  	ROLQ $0x01, R8
  1626  	MOVQ SI, R9
  1627  	XORQ R12, R8
  1628  	ROLQ $0x01, R9
  1629  
  1630  	// Result b
  1631  	MOVQ (SP), R10
  1632  	MOVQ 48(SP), R11
  1633  	XORQ R13, R9
  1634  	MOVQ 96(SP), R12
  1635  	MOVQ 144(SP), R13
  1636  	MOVQ 192(SP), R14
  1637  	XORQ CX, R11
  1638  	ROLQ $0x2c, R11
  1639  	XORQ DX, R12
  1640  	XORQ BX, R10
  1641  	ROLQ $0x2b, R12
  1642  	MOVQ R11, SI
  1643  	MOVQ $0x8000000000008009, AX
  1644  	ORQ  R12, SI
  1645  	XORQ R10, AX
  1646  	XORQ AX, SI
  1647  	MOVQ SI, (DI)
  1648  	XORQ R9, R14
  1649  	ROLQ $0x0e, R14
  1650  	MOVQ R10, R15
  1651  	ANDQ R11, R15
  1652  	XORQ R14, R15
  1653  	MOVQ R15, 32(DI)
  1654  	XORQ R8, R13
  1655  	ROLQ $0x15, R13
  1656  	MOVQ R13, AX
  1657  	ANDQ R14, AX
  1658  	XORQ R12, AX
  1659  	MOVQ AX, 16(DI)
  1660  	NOTQ R12
  1661  	ORQ  R10, R14
  1662  	ORQ  R13, R12
  1663  	XORQ R13, R14
  1664  	XORQ R11, R12
  1665  	MOVQ R14, 24(DI)
  1666  	MOVQ R12, 8(DI)
  1667  	MOVQ R12, BP
  1668  
  1669  	// Result g
  1670  	MOVQ 72(SP), R11
  1671  	XORQ R9, R11
  1672  	MOVQ 80(SP), R12
  1673  	ROLQ $0x14, R11
  1674  	XORQ BX, R12
  1675  	ROLQ $0x03, R12
  1676  	MOVQ 24(SP), R10
  1677  	MOVQ R11, AX
  1678  	ORQ  R12, AX
  1679  	XORQ R8, R10
  1680  	MOVQ 128(SP), R13
  1681  	MOVQ 176(SP), R14
  1682  	ROLQ $0x1c, R10
  1683  	XORQ R10, AX
  1684  	MOVQ AX, 40(DI)
  1685  	XORQ AX, SI
  1686  	XORQ CX, R13
  1687  	ROLQ $0x2d, R13
  1688  	MOVQ R12, AX
  1689  	ANDQ R13, AX
  1690  	XORQ R11, AX
  1691  	MOVQ AX, 48(DI)
  1692  	XORQ AX, BP
  1693  	XORQ DX, R14
  1694  	ROLQ $0x3d, R14
  1695  	MOVQ R14, AX
  1696  	ORQ  R10, AX
  1697  	XORQ R13, AX
  1698  	MOVQ AX, 64(DI)
  1699  	ANDQ R11, R10
  1700  	XORQ R14, R10
  1701  	MOVQ R10, 72(DI)
  1702  	NOTQ R14
  1703  	XORQ R10, R15
  1704  	ORQ  R14, R13
  1705  	XORQ R12, R13
  1706  	MOVQ R13, 56(DI)
  1707  
  1708  	// Result k
  1709  	MOVQ 8(SP), R10
  1710  	MOVQ 56(SP), R11
  1711  	MOVQ 104(SP), R12
  1712  	MOVQ 152(SP), R13
  1713  	MOVQ 160(SP), R14
  1714  	XORQ DX, R11
  1715  	ROLQ $0x06, R11
  1716  	XORQ R8, R12
  1717  	ROLQ $0x19, R12
  1718  	MOVQ R11, AX
  1719  	ORQ  R12, AX
  1720  	XORQ CX, R10
  1721  	ROLQ $0x01, R10
  1722  	XORQ R10, AX
  1723  	MOVQ AX, 80(DI)
  1724  	XORQ AX, SI
  1725  	XORQ R9, R13
  1726  	ROLQ $0x08, R13
  1727  	MOVQ R12, AX
  1728  	ANDQ R13, AX
  1729  	XORQ R11, AX
  1730  	MOVQ AX, 88(DI)
  1731  	XORQ AX, BP
  1732  	XORQ BX, R14
  1733  	ROLQ $0x12, R14
  1734  	NOTQ R13
  1735  	MOVQ R13, AX
  1736  	ANDQ R14, AX
  1737  	XORQ R12, AX
  1738  	MOVQ AX, 96(DI)
  1739  	MOVQ R14, AX
  1740  	ORQ  R10, AX
  1741  	XORQ R13, AX
  1742  	MOVQ AX, 104(DI)
  1743  	ANDQ R11, R10
  1744  	XORQ R14, R10
  1745  	MOVQ R10, 112(DI)
  1746  	XORQ R10, R15
  1747  
  1748  	// Result m
  1749  	MOVQ 40(SP), R11
  1750  	XORQ BX, R11
  1751  	MOVQ 88(SP), R12
  1752  	ROLQ $0x24, R11
  1753  	XORQ CX, R12
  1754  	MOVQ 32(SP), R10
  1755  	ROLQ $0x0a, R12
  1756  	MOVQ R11, AX
  1757  	MOVQ 136(SP), R13
  1758  	ANDQ R12, AX
  1759  	XORQ R9, R10
  1760  	MOVQ 184(SP), R14
  1761  	ROLQ $0x1b, R10
  1762  	XORQ R10, AX
  1763  	MOVQ AX, 120(DI)
  1764  	XORQ AX, SI
  1765  	XORQ DX, R13
  1766  	ROLQ $0x0f, R13
  1767  	MOVQ R12, AX
  1768  	ORQ  R13, AX
  1769  	XORQ R11, AX
  1770  	MOVQ AX, 128(DI)
  1771  	XORQ AX, BP
  1772  	XORQ R8, R14
  1773  	ROLQ $0x38, R14
  1774  	NOTQ R13
  1775  	MOVQ R13, AX
  1776  	ORQ  R14, AX
  1777  	XORQ R12, AX
  1778  	MOVQ AX, 136(DI)
  1779  	ORQ  R10, R11
  1780  	XORQ R14, R11
  1781  	MOVQ R11, 152(DI)
  1782  	ANDQ R10, R14
  1783  	XORQ R13, R14
  1784  	MOVQ R14, 144(DI)
  1785  	XORQ R11, R15
  1786  
  1787  	// Result s
  1788  	MOVQ 16(SP), R10
  1789  	MOVQ 64(SP), R11
  1790  	MOVQ 112(SP), R12
  1791  	XORQ DX, R10
  1792  	MOVQ 120(SP), R13
  1793  	ROLQ $0x3e, R10
  1794  	XORQ R8, R11
  1795  	MOVQ 168(SP), R14
  1796  	ROLQ $0x37, R11
  1797  	XORQ R9, R12
  1798  	MOVQ R10, R9
  1799  	XORQ CX, R14
  1800  	ROLQ $0x02, R14
  1801  	ANDQ R11, R9
  1802  	XORQ R14, R9
  1803  	MOVQ R9, 192(DI)
  1804  	ROLQ $0x27, R12
  1805  	XORQ R9, R15
  1806  	NOTQ R11
  1807  	XORQ BX, R13
  1808  	MOVQ R11, BX
  1809  	ANDQ R12, BX
  1810  	XORQ R10, BX
  1811  	MOVQ BX, 160(DI)
  1812  	XORQ BX, SI
  1813  	ROLQ $0x29, R13
  1814  	MOVQ R12, CX
  1815  	ORQ  R13, CX
  1816  	XORQ R11, CX
  1817  	MOVQ CX, 168(DI)
  1818  	XORQ CX, BP
  1819  	MOVQ R13, DX
  1820  	MOVQ R14, R8
  1821  	ANDQ R14, DX
  1822  	ORQ  R10, R8
  1823  	XORQ R12, DX
  1824  	XORQ R13, R8
  1825  	MOVQ DX, 176(DI)
  1826  	MOVQ R8, 184(DI)
  1827  
  1828  	// Prepare round
  1829  	MOVQ BP, BX
  1830  	ROLQ $0x01, BX
  1831  	MOVQ 16(DI), R12
  1832  	XORQ 56(DI), DX
  1833  	XORQ R15, BX
  1834  	XORQ 96(DI), R12
  1835  	XORQ 136(DI), DX
  1836  	XORQ DX, R12
  1837  	MOVQ R12, CX
  1838  	ROLQ $0x01, CX
  1839  	MOVQ 24(DI), R13
  1840  	XORQ 64(DI), R8
  1841  	XORQ SI, CX
  1842  	XORQ 104(DI), R13
  1843  	XORQ 144(DI), R8
  1844  	XORQ R8, R13
  1845  	MOVQ R13, DX
  1846  	ROLQ $0x01, DX
  1847  	MOVQ R15, R8
  1848  	XORQ BP, DX
  1849  	ROLQ $0x01, R8
  1850  	MOVQ SI, R9
  1851  	XORQ R12, R8
  1852  	ROLQ $0x01, R9
  1853  
  1854  	// Result b
  1855  	MOVQ (DI), R10
  1856  	MOVQ 48(DI), R11
  1857  	XORQ R13, R9
  1858  	MOVQ 96(DI), R12
  1859  	MOVQ 144(DI), R13
  1860  	MOVQ 192(DI), R14
  1861  	XORQ CX, R11
  1862  	ROLQ $0x2c, R11
  1863  	XORQ DX, R12
  1864  	XORQ BX, R10
  1865  	ROLQ $0x2b, R12
  1866  	MOVQ R11, SI
  1867  	MOVQ $0x000000000000008a, AX
  1868  	ORQ  R12, SI
  1869  	XORQ R10, AX
  1870  	XORQ AX, SI
  1871  	MOVQ SI, (SP)
  1872  	XORQ R9, R14
  1873  	ROLQ $0x0e, R14
  1874  	MOVQ R10, R15
  1875  	ANDQ R11, R15
  1876  	XORQ R14, R15
  1877  	MOVQ R15, 32(SP)
  1878  	XORQ R8, R13
  1879  	ROLQ $0x15, R13
  1880  	MOVQ R13, AX
  1881  	ANDQ R14, AX
  1882  	XORQ R12, AX
  1883  	MOVQ AX, 16(SP)
  1884  	NOTQ R12
  1885  	ORQ  R10, R14
  1886  	ORQ  R13, R12
  1887  	XORQ R13, R14
  1888  	XORQ R11, R12
  1889  	MOVQ R14, 24(SP)
  1890  	MOVQ R12, 8(SP)
  1891  	MOVQ R12, BP
  1892  
  1893  	// Result g
  1894  	MOVQ 72(DI), R11
  1895  	XORQ R9, R11
  1896  	MOVQ 80(DI), R12
  1897  	ROLQ $0x14, R11
  1898  	XORQ BX, R12
  1899  	ROLQ $0x03, R12
  1900  	MOVQ 24(DI), R10
  1901  	MOVQ R11, AX
  1902  	ORQ  R12, AX
  1903  	XORQ R8, R10
  1904  	MOVQ 128(DI), R13
  1905  	MOVQ 176(DI), R14
  1906  	ROLQ $0x1c, R10
  1907  	XORQ R10, AX
  1908  	MOVQ AX, 40(SP)
  1909  	XORQ AX, SI
  1910  	XORQ CX, R13
  1911  	ROLQ $0x2d, R13
  1912  	MOVQ R12, AX
  1913  	ANDQ R13, AX
  1914  	XORQ R11, AX
  1915  	MOVQ AX, 48(SP)
  1916  	XORQ AX, BP
  1917  	XORQ DX, R14
  1918  	ROLQ $0x3d, R14
  1919  	MOVQ R14, AX
  1920  	ORQ  R10, AX
  1921  	XORQ R13, AX
  1922  	MOVQ AX, 64(SP)
  1923  	ANDQ R11, R10
  1924  	XORQ R14, R10
  1925  	MOVQ R10, 72(SP)
  1926  	NOTQ R14
  1927  	XORQ R10, R15
  1928  	ORQ  R14, R13
  1929  	XORQ R12, R13
  1930  	MOVQ R13, 56(SP)
  1931  
  1932  	// Result k
  1933  	MOVQ 8(DI), R10
  1934  	MOVQ 56(DI), R11
  1935  	MOVQ 104(DI), R12
  1936  	MOVQ 152(DI), R13
  1937  	MOVQ 160(DI), R14
  1938  	XORQ DX, R11
  1939  	ROLQ $0x06, R11
  1940  	XORQ R8, R12
  1941  	ROLQ $0x19, R12
  1942  	MOVQ R11, AX
  1943  	ORQ  R12, AX
  1944  	XORQ CX, R10
  1945  	ROLQ $0x01, R10
  1946  	XORQ R10, AX
  1947  	MOVQ AX, 80(SP)
  1948  	XORQ AX, SI
  1949  	XORQ R9, R13
  1950  	ROLQ $0x08, R13
  1951  	MOVQ R12, AX
  1952  	ANDQ R13, AX
  1953  	XORQ R11, AX
  1954  	MOVQ AX, 88(SP)
  1955  	XORQ AX, BP
  1956  	XORQ BX, R14
  1957  	ROLQ $0x12, R14
  1958  	NOTQ R13
  1959  	MOVQ R13, AX
  1960  	ANDQ R14, AX
  1961  	XORQ R12, AX
  1962  	MOVQ AX, 96(SP)
  1963  	MOVQ R14, AX
  1964  	ORQ  R10, AX
  1965  	XORQ R13, AX
  1966  	MOVQ AX, 104(SP)
  1967  	ANDQ R11, R10
  1968  	XORQ R14, R10
  1969  	MOVQ R10, 112(SP)
  1970  	XORQ R10, R15
  1971  
  1972  	// Result m
  1973  	MOVQ 40(DI), R11
  1974  	XORQ BX, R11
  1975  	MOVQ 88(DI), R12
  1976  	ROLQ $0x24, R11
  1977  	XORQ CX, R12
  1978  	MOVQ 32(DI), R10
  1979  	ROLQ $0x0a, R12
  1980  	MOVQ R11, AX
  1981  	MOVQ 136(DI), R13
  1982  	ANDQ R12, AX
  1983  	XORQ R9, R10
  1984  	MOVQ 184(DI), R14
  1985  	ROLQ $0x1b, R10
  1986  	XORQ R10, AX
  1987  	MOVQ AX, 120(SP)
  1988  	XORQ AX, SI
  1989  	XORQ DX, R13
  1990  	ROLQ $0x0f, R13
  1991  	MOVQ R12, AX
  1992  	ORQ  R13, AX
  1993  	XORQ R11, AX
  1994  	MOVQ AX, 128(SP)
  1995  	XORQ AX, BP
  1996  	XORQ R8, R14
  1997  	ROLQ $0x38, R14
  1998  	NOTQ R13
  1999  	MOVQ R13, AX
  2000  	ORQ  R14, AX
  2001  	XORQ R12, AX
  2002  	MOVQ AX, 136(SP)
  2003  	ORQ  R10, R11
  2004  	XORQ R14, R11
  2005  	MOVQ R11, 152(SP)
  2006  	ANDQ R10, R14
  2007  	XORQ R13, R14
  2008  	MOVQ R14, 144(SP)
  2009  	XORQ R11, R15
  2010  
  2011  	// Result s
  2012  	MOVQ 16(DI), R10
  2013  	MOVQ 64(DI), R11
  2014  	MOVQ 112(DI), R12
  2015  	XORQ DX, R10
  2016  	MOVQ 120(DI), R13
  2017  	ROLQ $0x3e, R10
  2018  	XORQ R8, R11
  2019  	MOVQ 168(DI), R14
  2020  	ROLQ $0x37, R11
  2021  	XORQ R9, R12
  2022  	MOVQ R10, R9
  2023  	XORQ CX, R14
  2024  	ROLQ $0x02, R14
  2025  	ANDQ R11, R9
  2026  	XORQ R14, R9
  2027  	MOVQ R9, 192(SP)
  2028  	ROLQ $0x27, R12
  2029  	XORQ R9, R15
  2030  	NOTQ R11
  2031  	XORQ BX, R13
  2032  	MOVQ R11, BX
  2033  	ANDQ R12, BX
  2034  	XORQ R10, BX
  2035  	MOVQ BX, 160(SP)
  2036  	XORQ BX, SI
  2037  	ROLQ $0x29, R13
  2038  	MOVQ R12, CX
  2039  	ORQ  R13, CX
  2040  	XORQ R11, CX
  2041  	MOVQ CX, 168(SP)
  2042  	XORQ CX, BP
  2043  	MOVQ R13, DX
  2044  	MOVQ R14, R8
  2045  	ANDQ R14, DX
  2046  	ORQ  R10, R8
  2047  	XORQ R12, DX
  2048  	XORQ R13, R8
  2049  	MOVQ DX, 176(SP)
  2050  	MOVQ R8, 184(SP)
  2051  
  2052  	// Prepare round
  2053  	MOVQ BP, BX
  2054  	ROLQ $0x01, BX
  2055  	MOVQ 16(SP), R12
  2056  	XORQ 56(SP), DX
  2057  	XORQ R15, BX
  2058  	XORQ 96(SP), R12
  2059  	XORQ 136(SP), DX
  2060  	XORQ DX, R12
  2061  	MOVQ R12, CX
  2062  	ROLQ $0x01, CX
  2063  	MOVQ 24(SP), R13
  2064  	XORQ 64(SP), R8
  2065  	XORQ SI, CX
  2066  	XORQ 104(SP), R13
  2067  	XORQ 144(SP), R8
  2068  	XORQ R8, R13
  2069  	MOVQ R13, DX
  2070  	ROLQ $0x01, DX
  2071  	MOVQ R15, R8
  2072  	XORQ BP, DX
  2073  	ROLQ $0x01, R8
  2074  	MOVQ SI, R9
  2075  	XORQ R12, R8
  2076  	ROLQ $0x01, R9
  2077  
  2078  	// Result b
  2079  	MOVQ (SP), R10
  2080  	MOVQ 48(SP), R11
  2081  	XORQ R13, R9
  2082  	MOVQ 96(SP), R12
  2083  	MOVQ 144(SP), R13
  2084  	MOVQ 192(SP), R14
  2085  	XORQ CX, R11
  2086  	ROLQ $0x2c, R11
  2087  	XORQ DX, R12
  2088  	XORQ BX, R10
  2089  	ROLQ $0x2b, R12
  2090  	MOVQ R11, SI
  2091  	MOVQ $0x0000000000000088, AX
  2092  	ORQ  R12, SI
  2093  	XORQ R10, AX
  2094  	XORQ AX, SI
  2095  	MOVQ SI, (DI)
  2096  	XORQ R9, R14
  2097  	ROLQ $0x0e, R14
  2098  	MOVQ R10, R15
  2099  	ANDQ R11, R15
  2100  	XORQ R14, R15
  2101  	MOVQ R15, 32(DI)
  2102  	XORQ R8, R13
  2103  	ROLQ $0x15, R13
  2104  	MOVQ R13, AX
  2105  	ANDQ R14, AX
  2106  	XORQ R12, AX
  2107  	MOVQ AX, 16(DI)
  2108  	NOTQ R12
  2109  	ORQ  R10, R14
  2110  	ORQ  R13, R12
  2111  	XORQ R13, R14
  2112  	XORQ R11, R12
  2113  	MOVQ R14, 24(DI)
  2114  	MOVQ R12, 8(DI)
  2115  	MOVQ R12, BP
  2116  
  2117  	// Result g
  2118  	MOVQ 72(SP), R11
  2119  	XORQ R9, R11
  2120  	MOVQ 80(SP), R12
  2121  	ROLQ $0x14, R11
  2122  	XORQ BX, R12
  2123  	ROLQ $0x03, R12
  2124  	MOVQ 24(SP), R10
  2125  	MOVQ R11, AX
  2126  	ORQ  R12, AX
  2127  	XORQ R8, R10
  2128  	MOVQ 128(SP), R13
  2129  	MOVQ 176(SP), R14
  2130  	ROLQ $0x1c, R10
  2131  	XORQ R10, AX
  2132  	MOVQ AX, 40(DI)
  2133  	XORQ AX, SI
  2134  	XORQ CX, R13
  2135  	ROLQ $0x2d, R13
  2136  	MOVQ R12, AX
  2137  	ANDQ R13, AX
  2138  	XORQ R11, AX
  2139  	MOVQ AX, 48(DI)
  2140  	XORQ AX, BP
  2141  	XORQ DX, R14
  2142  	ROLQ $0x3d, R14
  2143  	MOVQ R14, AX
  2144  	ORQ  R10, AX
  2145  	XORQ R13, AX
  2146  	MOVQ AX, 64(DI)
  2147  	ANDQ R11, R10
  2148  	XORQ R14, R10
  2149  	MOVQ R10, 72(DI)
  2150  	NOTQ R14
  2151  	XORQ R10, R15
  2152  	ORQ  R14, R13
  2153  	XORQ R12, R13
  2154  	MOVQ R13, 56(DI)
  2155  
  2156  	// Result k
  2157  	MOVQ 8(SP), R10
  2158  	MOVQ 56(SP), R11
  2159  	MOVQ 104(SP), R12
  2160  	MOVQ 152(SP), R13
  2161  	MOVQ 160(SP), R14
  2162  	XORQ DX, R11
  2163  	ROLQ $0x06, R11
  2164  	XORQ R8, R12
  2165  	ROLQ $0x19, R12
  2166  	MOVQ R11, AX
  2167  	ORQ  R12, AX
  2168  	XORQ CX, R10
  2169  	ROLQ $0x01, R10
  2170  	XORQ R10, AX
  2171  	MOVQ AX, 80(DI)
  2172  	XORQ AX, SI
  2173  	XORQ R9, R13
  2174  	ROLQ $0x08, R13
  2175  	MOVQ R12, AX
  2176  	ANDQ R13, AX
  2177  	XORQ R11, AX
  2178  	MOVQ AX, 88(DI)
  2179  	XORQ AX, BP
  2180  	XORQ BX, R14
  2181  	ROLQ $0x12, R14
  2182  	NOTQ R13
  2183  	MOVQ R13, AX
  2184  	ANDQ R14, AX
  2185  	XORQ R12, AX
  2186  	MOVQ AX, 96(DI)
  2187  	MOVQ R14, AX
  2188  	ORQ  R10, AX
  2189  	XORQ R13, AX
  2190  	MOVQ AX, 104(DI)
  2191  	ANDQ R11, R10
  2192  	XORQ R14, R10
  2193  	MOVQ R10, 112(DI)
  2194  	XORQ R10, R15
  2195  
  2196  	// Result m
  2197  	MOVQ 40(SP), R11
  2198  	XORQ BX, R11
  2199  	MOVQ 88(SP), R12
  2200  	ROLQ $0x24, R11
  2201  	XORQ CX, R12
  2202  	MOVQ 32(SP), R10
  2203  	ROLQ $0x0a, R12
  2204  	MOVQ R11, AX
  2205  	MOVQ 136(SP), R13
  2206  	ANDQ R12, AX
  2207  	XORQ R9, R10
  2208  	MOVQ 184(SP), R14
  2209  	ROLQ $0x1b, R10
  2210  	XORQ R10, AX
  2211  	MOVQ AX, 120(DI)
  2212  	XORQ AX, SI
  2213  	XORQ DX, R13
  2214  	ROLQ $0x0f, R13
  2215  	MOVQ R12, AX
  2216  	ORQ  R13, AX
  2217  	XORQ R11, AX
  2218  	MOVQ AX, 128(DI)
  2219  	XORQ AX, BP
  2220  	XORQ R8, R14
  2221  	ROLQ $0x38, R14
  2222  	NOTQ R13
  2223  	MOVQ R13, AX
  2224  	ORQ  R14, AX
  2225  	XORQ R12, AX
  2226  	MOVQ AX, 136(DI)
  2227  	ORQ  R10, R11
  2228  	XORQ R14, R11
  2229  	MOVQ R11, 152(DI)
  2230  	ANDQ R10, R14
  2231  	XORQ R13, R14
  2232  	MOVQ R14, 144(DI)
  2233  	XORQ R11, R15
  2234  
  2235  	// Result s
  2236  	MOVQ 16(SP), R10
  2237  	MOVQ 64(SP), R11
  2238  	MOVQ 112(SP), R12
  2239  	XORQ DX, R10
  2240  	MOVQ 120(SP), R13
  2241  	ROLQ $0x3e, R10
  2242  	XORQ R8, R11
  2243  	MOVQ 168(SP), R14
  2244  	ROLQ $0x37, R11
  2245  	XORQ R9, R12
  2246  	MOVQ R10, R9
  2247  	XORQ CX, R14
  2248  	ROLQ $0x02, R14
  2249  	ANDQ R11, R9
  2250  	XORQ R14, R9
  2251  	MOVQ R9, 192(DI)
  2252  	ROLQ $0x27, R12
  2253  	XORQ R9, R15
  2254  	NOTQ R11
  2255  	XORQ BX, R13
  2256  	MOVQ R11, BX
  2257  	ANDQ R12, BX
  2258  	XORQ R10, BX
  2259  	MOVQ BX, 160(DI)
  2260  	XORQ BX, SI
  2261  	ROLQ $0x29, R13
  2262  	MOVQ R12, CX
  2263  	ORQ  R13, CX
  2264  	XORQ R11, CX
  2265  	MOVQ CX, 168(DI)
  2266  	XORQ CX, BP
  2267  	MOVQ R13, DX
  2268  	MOVQ R14, R8
  2269  	ANDQ R14, DX
  2270  	ORQ  R10, R8
  2271  	XORQ R12, DX
  2272  	XORQ R13, R8
  2273  	MOVQ DX, 176(DI)
  2274  	MOVQ R8, 184(DI)
  2275  
  2276  	// Prepare round
  2277  	MOVQ BP, BX
  2278  	ROLQ $0x01, BX
  2279  	MOVQ 16(DI), R12
  2280  	XORQ 56(DI), DX
  2281  	XORQ R15, BX
  2282  	XORQ 96(DI), R12
  2283  	XORQ 136(DI), DX
  2284  	XORQ DX, R12
  2285  	MOVQ R12, CX
  2286  	ROLQ $0x01, CX
  2287  	MOVQ 24(DI), R13
  2288  	XORQ 64(DI), R8
  2289  	XORQ SI, CX
  2290  	XORQ 104(DI), R13
  2291  	XORQ 144(DI), R8
  2292  	XORQ R8, R13
  2293  	MOVQ R13, DX
  2294  	ROLQ $0x01, DX
  2295  	MOVQ R15, R8
  2296  	XORQ BP, DX
  2297  	ROLQ $0x01, R8
  2298  	MOVQ SI, R9
  2299  	XORQ R12, R8
  2300  	ROLQ $0x01, R9
  2301  
  2302  	// Result b
  2303  	MOVQ (DI), R10
  2304  	MOVQ 48(DI), R11
  2305  	XORQ R13, R9
  2306  	MOVQ 96(DI), R12
  2307  	MOVQ 144(DI), R13
  2308  	MOVQ 192(DI), R14
  2309  	XORQ CX, R11
  2310  	ROLQ $0x2c, R11
  2311  	XORQ DX, R12
  2312  	XORQ BX, R10
  2313  	ROLQ $0x2b, R12
  2314  	MOVQ R11, SI
  2315  	MOVQ $0x0000000080008009, AX
  2316  	ORQ  R12, SI
  2317  	XORQ R10, AX
  2318  	XORQ AX, SI
  2319  	MOVQ SI, (SP)
  2320  	XORQ R9, R14
  2321  	ROLQ $0x0e, R14
  2322  	MOVQ R10, R15
  2323  	ANDQ R11, R15
  2324  	XORQ R14, R15
  2325  	MOVQ R15, 32(SP)
  2326  	XORQ R8, R13
  2327  	ROLQ $0x15, R13
  2328  	MOVQ R13, AX
  2329  	ANDQ R14, AX
  2330  	XORQ R12, AX
  2331  	MOVQ AX, 16(SP)
  2332  	NOTQ R12
  2333  	ORQ  R10, R14
  2334  	ORQ  R13, R12
  2335  	XORQ R13, R14
  2336  	XORQ R11, R12
  2337  	MOVQ R14, 24(SP)
  2338  	MOVQ R12, 8(SP)
  2339  	MOVQ R12, BP
  2340  
  2341  	// Result g
  2342  	MOVQ 72(DI), R11
  2343  	XORQ R9, R11
  2344  	MOVQ 80(DI), R12
  2345  	ROLQ $0x14, R11
  2346  	XORQ BX, R12
  2347  	ROLQ $0x03, R12
  2348  	MOVQ 24(DI), R10
  2349  	MOVQ R11, AX
  2350  	ORQ  R12, AX
  2351  	XORQ R8, R10
  2352  	MOVQ 128(DI), R13
  2353  	MOVQ 176(DI), R14
  2354  	ROLQ $0x1c, R10
  2355  	XORQ R10, AX
  2356  	MOVQ AX, 40(SP)
  2357  	XORQ AX, SI
  2358  	XORQ CX, R13
  2359  	ROLQ $0x2d, R13
  2360  	MOVQ R12, AX
  2361  	ANDQ R13, AX
  2362  	XORQ R11, AX
  2363  	MOVQ AX, 48(SP)
  2364  	XORQ AX, BP
  2365  	XORQ DX, R14
  2366  	ROLQ $0x3d, R14
  2367  	MOVQ R14, AX
  2368  	ORQ  R10, AX
  2369  	XORQ R13, AX
  2370  	MOVQ AX, 64(SP)
  2371  	ANDQ R11, R10
  2372  	XORQ R14, R10
  2373  	MOVQ R10, 72(SP)
  2374  	NOTQ R14
  2375  	XORQ R10, R15
  2376  	ORQ  R14, R13
  2377  	XORQ R12, R13
  2378  	MOVQ R13, 56(SP)
  2379  
  2380  	// Result k
  2381  	MOVQ 8(DI), R10
  2382  	MOVQ 56(DI), R11
  2383  	MOVQ 104(DI), R12
  2384  	MOVQ 152(DI), R13
  2385  	MOVQ 160(DI), R14
  2386  	XORQ DX, R11
  2387  	ROLQ $0x06, R11
  2388  	XORQ R8, R12
  2389  	ROLQ $0x19, R12
  2390  	MOVQ R11, AX
  2391  	ORQ  R12, AX
  2392  	XORQ CX, R10
  2393  	ROLQ $0x01, R10
  2394  	XORQ R10, AX
  2395  	MOVQ AX, 80(SP)
  2396  	XORQ AX, SI
  2397  	XORQ R9, R13
  2398  	ROLQ $0x08, R13
  2399  	MOVQ R12, AX
  2400  	ANDQ R13, AX
  2401  	XORQ R11, AX
  2402  	MOVQ AX, 88(SP)
  2403  	XORQ AX, BP
  2404  	XORQ BX, R14
  2405  	ROLQ $0x12, R14
  2406  	NOTQ R13
  2407  	MOVQ R13, AX
  2408  	ANDQ R14, AX
  2409  	XORQ R12, AX
  2410  	MOVQ AX, 96(SP)
  2411  	MOVQ R14, AX
  2412  	ORQ  R10, AX
  2413  	XORQ R13, AX
  2414  	MOVQ AX, 104(SP)
  2415  	ANDQ R11, R10
  2416  	XORQ R14, R10
  2417  	MOVQ R10, 112(SP)
  2418  	XORQ R10, R15
  2419  
  2420  	// Result m
  2421  	MOVQ 40(DI), R11
  2422  	XORQ BX, R11
  2423  	MOVQ 88(DI), R12
  2424  	ROLQ $0x24, R11
  2425  	XORQ CX, R12
  2426  	MOVQ 32(DI), R10
  2427  	ROLQ $0x0a, R12
  2428  	MOVQ R11, AX
  2429  	MOVQ 136(DI), R13
  2430  	ANDQ R12, AX
  2431  	XORQ R9, R10
  2432  	MOVQ 184(DI), R14
  2433  	ROLQ $0x1b, R10
  2434  	XORQ R10, AX
  2435  	MOVQ AX, 120(SP)
  2436  	XORQ AX, SI
  2437  	XORQ DX, R13
  2438  	ROLQ $0x0f, R13
  2439  	MOVQ R12, AX
  2440  	ORQ  R13, AX
  2441  	XORQ R11, AX
  2442  	MOVQ AX, 128(SP)
  2443  	XORQ AX, BP
  2444  	XORQ R8, R14
  2445  	ROLQ $0x38, R14
  2446  	NOTQ R13
  2447  	MOVQ R13, AX
  2448  	ORQ  R14, AX
  2449  	XORQ R12, AX
  2450  	MOVQ AX, 136(SP)
  2451  	ORQ  R10, R11
  2452  	XORQ R14, R11
  2453  	MOVQ R11, 152(SP)
  2454  	ANDQ R10, R14
  2455  	XORQ R13, R14
  2456  	MOVQ R14, 144(SP)
  2457  	XORQ R11, R15
  2458  
  2459  	// Result s
  2460  	MOVQ 16(DI), R10
  2461  	MOVQ 64(DI), R11
  2462  	MOVQ 112(DI), R12
  2463  	XORQ DX, R10
  2464  	MOVQ 120(DI), R13
  2465  	ROLQ $0x3e, R10
  2466  	XORQ R8, R11
  2467  	MOVQ 168(DI), R14
  2468  	ROLQ $0x37, R11
  2469  	XORQ R9, R12
  2470  	MOVQ R10, R9
  2471  	XORQ CX, R14
  2472  	ROLQ $0x02, R14
  2473  	ANDQ R11, R9
  2474  	XORQ R14, R9
  2475  	MOVQ R9, 192(SP)
  2476  	ROLQ $0x27, R12
  2477  	XORQ R9, R15
  2478  	NOTQ R11
  2479  	XORQ BX, R13
  2480  	MOVQ R11, BX
  2481  	ANDQ R12, BX
  2482  	XORQ R10, BX
  2483  	MOVQ BX, 160(SP)
  2484  	XORQ BX, SI
  2485  	ROLQ $0x29, R13
  2486  	MOVQ R12, CX
  2487  	ORQ  R13, CX
  2488  	XORQ R11, CX
  2489  	MOVQ CX, 168(SP)
  2490  	XORQ CX, BP
  2491  	MOVQ R13, DX
  2492  	MOVQ R14, R8
  2493  	ANDQ R14, DX
  2494  	ORQ  R10, R8
  2495  	XORQ R12, DX
  2496  	XORQ R13, R8
  2497  	MOVQ DX, 176(SP)
  2498  	MOVQ R8, 184(SP)
  2499  
  2500  	// Prepare round
  2501  	MOVQ BP, BX
  2502  	ROLQ $0x01, BX
  2503  	MOVQ 16(SP), R12
  2504  	XORQ 56(SP), DX
  2505  	XORQ R15, BX
  2506  	XORQ 96(SP), R12
  2507  	XORQ 136(SP), DX
  2508  	XORQ DX, R12
  2509  	MOVQ R12, CX
  2510  	ROLQ $0x01, CX
  2511  	MOVQ 24(SP), R13
  2512  	XORQ 64(SP), R8
  2513  	XORQ SI, CX
  2514  	XORQ 104(SP), R13
  2515  	XORQ 144(SP), R8
  2516  	XORQ R8, R13
  2517  	MOVQ R13, DX
  2518  	ROLQ $0x01, DX
  2519  	MOVQ R15, R8
  2520  	XORQ BP, DX
  2521  	ROLQ $0x01, R8
  2522  	MOVQ SI, R9
  2523  	XORQ R12, R8
  2524  	ROLQ $0x01, R9
  2525  
  2526  	// Result b
  2527  	MOVQ (SP), R10
  2528  	MOVQ 48(SP), R11
  2529  	XORQ R13, R9
  2530  	MOVQ 96(SP), R12
  2531  	MOVQ 144(SP), R13
  2532  	MOVQ 192(SP), R14
  2533  	XORQ CX, R11
  2534  	ROLQ $0x2c, R11
  2535  	XORQ DX, R12
  2536  	XORQ BX, R10
  2537  	ROLQ $0x2b, R12
  2538  	MOVQ R11, SI
  2539  	MOVQ $0x000000008000000a, AX
  2540  	ORQ  R12, SI
  2541  	XORQ R10, AX
  2542  	XORQ AX, SI
  2543  	MOVQ SI, (DI)
  2544  	XORQ R9, R14
  2545  	ROLQ $0x0e, R14
  2546  	MOVQ R10, R15
  2547  	ANDQ R11, R15
  2548  	XORQ R14, R15
  2549  	MOVQ R15, 32(DI)
  2550  	XORQ R8, R13
  2551  	ROLQ $0x15, R13
  2552  	MOVQ R13, AX
  2553  	ANDQ R14, AX
  2554  	XORQ R12, AX
  2555  	MOVQ AX, 16(DI)
  2556  	NOTQ R12
  2557  	ORQ  R10, R14
  2558  	ORQ  R13, R12
  2559  	XORQ R13, R14
  2560  	XORQ R11, R12
  2561  	MOVQ R14, 24(DI)
  2562  	MOVQ R12, 8(DI)
  2563  	MOVQ R12, BP
  2564  
  2565  	// Result g
  2566  	MOVQ 72(SP), R11
  2567  	XORQ R9, R11
  2568  	MOVQ 80(SP), R12
  2569  	ROLQ $0x14, R11
  2570  	XORQ BX, R12
  2571  	ROLQ $0x03, R12
  2572  	MOVQ 24(SP), R10
  2573  	MOVQ R11, AX
  2574  	ORQ  R12, AX
  2575  	XORQ R8, R10
  2576  	MOVQ 128(SP), R13
  2577  	MOVQ 176(SP), R14
  2578  	ROLQ $0x1c, R10
  2579  	XORQ R10, AX
  2580  	MOVQ AX, 40(DI)
  2581  	XORQ AX, SI
  2582  	XORQ CX, R13
  2583  	ROLQ $0x2d, R13
  2584  	MOVQ R12, AX
  2585  	ANDQ R13, AX
  2586  	XORQ R11, AX
  2587  	MOVQ AX, 48(DI)
  2588  	XORQ AX, BP
  2589  	XORQ DX, R14
  2590  	ROLQ $0x3d, R14
  2591  	MOVQ R14, AX
  2592  	ORQ  R10, AX
  2593  	XORQ R13, AX
  2594  	MOVQ AX, 64(DI)
  2595  	ANDQ R11, R10
  2596  	XORQ R14, R10
  2597  	MOVQ R10, 72(DI)
  2598  	NOTQ R14
  2599  	XORQ R10, R15
  2600  	ORQ  R14, R13
  2601  	XORQ R12, R13
  2602  	MOVQ R13, 56(DI)
  2603  
  2604  	// Result k
  2605  	MOVQ 8(SP), R10
  2606  	MOVQ 56(SP), R11
  2607  	MOVQ 104(SP), R12
  2608  	MOVQ 152(SP), R13
  2609  	MOVQ 160(SP), R14
  2610  	XORQ DX, R11
  2611  	ROLQ $0x06, R11
  2612  	XORQ R8, R12
  2613  	ROLQ $0x19, R12
  2614  	MOVQ R11, AX
  2615  	ORQ  R12, AX
  2616  	XORQ CX, R10
  2617  	ROLQ $0x01, R10
  2618  	XORQ R10, AX
  2619  	MOVQ AX, 80(DI)
  2620  	XORQ AX, SI
  2621  	XORQ R9, R13
  2622  	ROLQ $0x08, R13
  2623  	MOVQ R12, AX
  2624  	ANDQ R13, AX
  2625  	XORQ R11, AX
  2626  	MOVQ AX, 88(DI)
  2627  	XORQ AX, BP
  2628  	XORQ BX, R14
  2629  	ROLQ $0x12, R14
  2630  	NOTQ R13
  2631  	MOVQ R13, AX
  2632  	ANDQ R14, AX
  2633  	XORQ R12, AX
  2634  	MOVQ AX, 96(DI)
  2635  	MOVQ R14, AX
  2636  	ORQ  R10, AX
  2637  	XORQ R13, AX
  2638  	MOVQ AX, 104(DI)
  2639  	ANDQ R11, R10
  2640  	XORQ R14, R10
  2641  	MOVQ R10, 112(DI)
  2642  	XORQ R10, R15
  2643  
  2644  	// Result m
  2645  	MOVQ 40(SP), R11
  2646  	XORQ BX, R11
  2647  	MOVQ 88(SP), R12
  2648  	ROLQ $0x24, R11
  2649  	XORQ CX, R12
  2650  	MOVQ 32(SP), R10
  2651  	ROLQ $0x0a, R12
  2652  	MOVQ R11, AX
  2653  	MOVQ 136(SP), R13
  2654  	ANDQ R12, AX
  2655  	XORQ R9, R10
  2656  	MOVQ 184(SP), R14
  2657  	ROLQ $0x1b, R10
  2658  	XORQ R10, AX
  2659  	MOVQ AX, 120(DI)
  2660  	XORQ AX, SI
  2661  	XORQ DX, R13
  2662  	ROLQ $0x0f, R13
  2663  	MOVQ R12, AX
  2664  	ORQ  R13, AX
  2665  	XORQ R11, AX
  2666  	MOVQ AX, 128(DI)
  2667  	XORQ AX, BP
  2668  	XORQ R8, R14
  2669  	ROLQ $0x38, R14
  2670  	NOTQ R13
  2671  	MOVQ R13, AX
  2672  	ORQ  R14, AX
  2673  	XORQ R12, AX
  2674  	MOVQ AX, 136(DI)
  2675  	ORQ  R10, R11
  2676  	XORQ R14, R11
  2677  	MOVQ R11, 152(DI)
  2678  	ANDQ R10, R14
  2679  	XORQ R13, R14
  2680  	MOVQ R14, 144(DI)
  2681  	XORQ R11, R15
  2682  
  2683  	// Result s
  2684  	MOVQ 16(SP), R10
  2685  	MOVQ 64(SP), R11
  2686  	MOVQ 112(SP), R12
  2687  	XORQ DX, R10
  2688  	MOVQ 120(SP), R13
  2689  	ROLQ $0x3e, R10
  2690  	XORQ R8, R11
  2691  	MOVQ 168(SP), R14
  2692  	ROLQ $0x37, R11
  2693  	XORQ R9, R12
  2694  	MOVQ R10, R9
  2695  	XORQ CX, R14
  2696  	ROLQ $0x02, R14
  2697  	ANDQ R11, R9
  2698  	XORQ R14, R9
  2699  	MOVQ R9, 192(DI)
  2700  	ROLQ $0x27, R12
  2701  	XORQ R9, R15
  2702  	NOTQ R11
  2703  	XORQ BX, R13
  2704  	MOVQ R11, BX
  2705  	ANDQ R12, BX
  2706  	XORQ R10, BX
  2707  	MOVQ BX, 160(DI)
  2708  	XORQ BX, SI
  2709  	ROLQ $0x29, R13
  2710  	MOVQ R12, CX
  2711  	ORQ  R13, CX
  2712  	XORQ R11, CX
  2713  	MOVQ CX, 168(DI)
  2714  	XORQ CX, BP
  2715  	MOVQ R13, DX
  2716  	MOVQ R14, R8
  2717  	ANDQ R14, DX
  2718  	ORQ  R10, R8
  2719  	XORQ R12, DX
  2720  	XORQ R13, R8
  2721  	MOVQ DX, 176(DI)
  2722  	MOVQ R8, 184(DI)
  2723  
  2724  	// Prepare round
  2725  	MOVQ BP, BX
  2726  	ROLQ $0x01, BX
  2727  	MOVQ 16(DI), R12
  2728  	XORQ 56(DI), DX
  2729  	XORQ R15, BX
  2730  	XORQ 96(DI), R12
  2731  	XORQ 136(DI), DX
  2732  	XORQ DX, R12
  2733  	MOVQ R12, CX
  2734  	ROLQ $0x01, CX
  2735  	MOVQ 24(DI), R13
  2736  	XORQ 64(DI), R8
  2737  	XORQ SI, CX
  2738  	XORQ 104(DI), R13
  2739  	XORQ 144(DI), R8
  2740  	XORQ R8, R13
  2741  	MOVQ R13, DX
  2742  	ROLQ $0x01, DX
  2743  	MOVQ R15, R8
  2744  	XORQ BP, DX
  2745  	ROLQ $0x01, R8
  2746  	MOVQ SI, R9
  2747  	XORQ R12, R8
  2748  	ROLQ $0x01, R9
  2749  
  2750  	// Result b
  2751  	MOVQ (DI), R10
  2752  	MOVQ 48(DI), R11
  2753  	XORQ R13, R9
  2754  	MOVQ 96(DI), R12
  2755  	MOVQ 144(DI), R13
  2756  	MOVQ 192(DI), R14
  2757  	XORQ CX, R11
  2758  	ROLQ $0x2c, R11
  2759  	XORQ DX, R12
  2760  	XORQ BX, R10
  2761  	ROLQ $0x2b, R12
  2762  	MOVQ R11, SI
  2763  	MOVQ $0x000000008000808b, AX
  2764  	ORQ  R12, SI
  2765  	XORQ R10, AX
  2766  	XORQ AX, SI
  2767  	MOVQ SI, (SP)
  2768  	XORQ R9, R14
  2769  	ROLQ $0x0e, R14
  2770  	MOVQ R10, R15
  2771  	ANDQ R11, R15
  2772  	XORQ R14, R15
  2773  	MOVQ R15, 32(SP)
  2774  	XORQ R8, R13
  2775  	ROLQ $0x15, R13
  2776  	MOVQ R13, AX
  2777  	ANDQ R14, AX
  2778  	XORQ R12, AX
  2779  	MOVQ AX, 16(SP)
  2780  	NOTQ R12
  2781  	ORQ  R10, R14
  2782  	ORQ  R13, R12
  2783  	XORQ R13, R14
  2784  	XORQ R11, R12
  2785  	MOVQ R14, 24(SP)
  2786  	MOVQ R12, 8(SP)
  2787  	MOVQ R12, BP
  2788  
  2789  	// Result g
  2790  	MOVQ 72(DI), R11
  2791  	XORQ R9, R11
  2792  	MOVQ 80(DI), R12
  2793  	ROLQ $0x14, R11
  2794  	XORQ BX, R12
  2795  	ROLQ $0x03, R12
  2796  	MOVQ 24(DI), R10
  2797  	MOVQ R11, AX
  2798  	ORQ  R12, AX
  2799  	XORQ R8, R10
  2800  	MOVQ 128(DI), R13
  2801  	MOVQ 176(DI), R14
  2802  	ROLQ $0x1c, R10
  2803  	XORQ R10, AX
  2804  	MOVQ AX, 40(SP)
  2805  	XORQ AX, SI
  2806  	XORQ CX, R13
  2807  	ROLQ $0x2d, R13
  2808  	MOVQ R12, AX
  2809  	ANDQ R13, AX
  2810  	XORQ R11, AX
  2811  	MOVQ AX, 48(SP)
  2812  	XORQ AX, BP
  2813  	XORQ DX, R14
  2814  	ROLQ $0x3d, R14
  2815  	MOVQ R14, AX
  2816  	ORQ  R10, AX
  2817  	XORQ R13, AX
  2818  	MOVQ AX, 64(SP)
  2819  	ANDQ R11, R10
  2820  	XORQ R14, R10
  2821  	MOVQ R10, 72(SP)
  2822  	NOTQ R14
  2823  	XORQ R10, R15
  2824  	ORQ  R14, R13
  2825  	XORQ R12, R13
  2826  	MOVQ R13, 56(SP)
  2827  
  2828  	// Result k
  2829  	MOVQ 8(DI), R10
  2830  	MOVQ 56(DI), R11
  2831  	MOVQ 104(DI), R12
  2832  	MOVQ 152(DI), R13
  2833  	MOVQ 160(DI), R14
  2834  	XORQ DX, R11
  2835  	ROLQ $0x06, R11
  2836  	XORQ R8, R12
  2837  	ROLQ $0x19, R12
  2838  	MOVQ R11, AX
  2839  	ORQ  R12, AX
  2840  	XORQ CX, R10
  2841  	ROLQ $0x01, R10
  2842  	XORQ R10, AX
  2843  	MOVQ AX, 80(SP)
  2844  	XORQ AX, SI
  2845  	XORQ R9, R13
  2846  	ROLQ $0x08, R13
  2847  	MOVQ R12, AX
  2848  	ANDQ R13, AX
  2849  	XORQ R11, AX
  2850  	MOVQ AX, 88(SP)
  2851  	XORQ AX, BP
  2852  	XORQ BX, R14
  2853  	ROLQ $0x12, R14
  2854  	NOTQ R13
  2855  	MOVQ R13, AX
  2856  	ANDQ R14, AX
  2857  	XORQ R12, AX
  2858  	MOVQ AX, 96(SP)
  2859  	MOVQ R14, AX
  2860  	ORQ  R10, AX
  2861  	XORQ R13, AX
  2862  	MOVQ AX, 104(SP)
  2863  	ANDQ R11, R10
  2864  	XORQ R14, R10
  2865  	MOVQ R10, 112(SP)
  2866  	XORQ R10, R15
  2867  
  2868  	// Result m
  2869  	MOVQ 40(DI), R11
  2870  	XORQ BX, R11
  2871  	MOVQ 88(DI), R12
  2872  	ROLQ $0x24, R11
  2873  	XORQ CX, R12
  2874  	MOVQ 32(DI), R10
  2875  	ROLQ $0x0a, R12
  2876  	MOVQ R11, AX
  2877  	MOVQ 136(DI), R13
  2878  	ANDQ R12, AX
  2879  	XORQ R9, R10
  2880  	MOVQ 184(DI), R14
  2881  	ROLQ $0x1b, R10
  2882  	XORQ R10, AX
  2883  	MOVQ AX, 120(SP)
  2884  	XORQ AX, SI
  2885  	XORQ DX, R13
  2886  	ROLQ $0x0f, R13
  2887  	MOVQ R12, AX
  2888  	ORQ  R13, AX
  2889  	XORQ R11, AX
  2890  	MOVQ AX, 128(SP)
  2891  	XORQ AX, BP
  2892  	XORQ R8, R14
  2893  	ROLQ $0x38, R14
  2894  	NOTQ R13
  2895  	MOVQ R13, AX
  2896  	ORQ  R14, AX
  2897  	XORQ R12, AX
  2898  	MOVQ AX, 136(SP)
  2899  	ORQ  R10, R11
  2900  	XORQ R14, R11
  2901  	MOVQ R11, 152(SP)
  2902  	ANDQ R10, R14
  2903  	XORQ R13, R14
  2904  	MOVQ R14, 144(SP)
  2905  	XORQ R11, R15
  2906  
  2907  	// Result s
  2908  	MOVQ 16(DI), R10
  2909  	MOVQ 64(DI), R11
  2910  	MOVQ 112(DI), R12
  2911  	XORQ DX, R10
  2912  	MOVQ 120(DI), R13
  2913  	ROLQ $0x3e, R10
  2914  	XORQ R8, R11
  2915  	MOVQ 168(DI), R14
  2916  	ROLQ $0x37, R11
  2917  	XORQ R9, R12
  2918  	MOVQ R10, R9
  2919  	XORQ CX, R14
  2920  	ROLQ $0x02, R14
  2921  	ANDQ R11, R9
  2922  	XORQ R14, R9
  2923  	MOVQ R9, 192(SP)
  2924  	ROLQ $0x27, R12
  2925  	XORQ R9, R15
  2926  	NOTQ R11
  2927  	XORQ BX, R13
  2928  	MOVQ R11, BX
  2929  	ANDQ R12, BX
  2930  	XORQ R10, BX
  2931  	MOVQ BX, 160(SP)
  2932  	XORQ BX, SI
  2933  	ROLQ $0x29, R13
  2934  	MOVQ R12, CX
  2935  	ORQ  R13, CX
  2936  	XORQ R11, CX
  2937  	MOVQ CX, 168(SP)
  2938  	XORQ CX, BP
  2939  	MOVQ R13, DX
  2940  	MOVQ R14, R8
  2941  	ANDQ R14, DX
  2942  	ORQ  R10, R8
  2943  	XORQ R12, DX
  2944  	XORQ R13, R8
  2945  	MOVQ DX, 176(SP)
  2946  	MOVQ R8, 184(SP)
  2947  
  2948  	// Prepare round
  2949  	MOVQ BP, BX
  2950  	ROLQ $0x01, BX
  2951  	MOVQ 16(SP), R12
  2952  	XORQ 56(SP), DX
  2953  	XORQ R15, BX
  2954  	XORQ 96(SP), R12
  2955  	XORQ 136(SP), DX
  2956  	XORQ DX, R12
  2957  	MOVQ R12, CX
  2958  	ROLQ $0x01, CX
  2959  	MOVQ 24(SP), R13
  2960  	XORQ 64(SP), R8
  2961  	XORQ SI, CX
  2962  	XORQ 104(SP), R13
  2963  	XORQ 144(SP), R8
  2964  	XORQ R8, R13
  2965  	MOVQ R13, DX
  2966  	ROLQ $0x01, DX
  2967  	MOVQ R15, R8
  2968  	XORQ BP, DX
  2969  	ROLQ $0x01, R8
  2970  	MOVQ SI, R9
  2971  	XORQ R12, R8
  2972  	ROLQ $0x01, R9
  2973  
  2974  	// Result b
  2975  	MOVQ (SP), R10
  2976  	MOVQ 48(SP), R11
  2977  	XORQ R13, R9
  2978  	MOVQ 96(SP), R12
  2979  	MOVQ 144(SP), R13
  2980  	MOVQ 192(SP), R14
  2981  	XORQ CX, R11
  2982  	ROLQ $0x2c, R11
  2983  	XORQ DX, R12
  2984  	XORQ BX, R10
  2985  	ROLQ $0x2b, R12
  2986  	MOVQ R11, SI
  2987  	MOVQ $0x800000000000008b, AX
  2988  	ORQ  R12, SI
  2989  	XORQ R10, AX
  2990  	XORQ AX, SI
  2991  	MOVQ SI, (DI)
  2992  	XORQ R9, R14
  2993  	ROLQ $0x0e, R14
  2994  	MOVQ R10, R15
  2995  	ANDQ R11, R15
  2996  	XORQ R14, R15
  2997  	MOVQ R15, 32(DI)
  2998  	XORQ R8, R13
  2999  	ROLQ $0x15, R13
  3000  	MOVQ R13, AX
  3001  	ANDQ R14, AX
  3002  	XORQ R12, AX
  3003  	MOVQ AX, 16(DI)
  3004  	NOTQ R12
  3005  	ORQ  R10, R14
  3006  	ORQ  R13, R12
  3007  	XORQ R13, R14
  3008  	XORQ R11, R12
  3009  	MOVQ R14, 24(DI)
  3010  	MOVQ R12, 8(DI)
  3011  	MOVQ R12, BP
  3012  
  3013  	// Result g
  3014  	MOVQ 72(SP), R11
  3015  	XORQ R9, R11
  3016  	MOVQ 80(SP), R12
  3017  	ROLQ $0x14, R11
  3018  	XORQ BX, R12
  3019  	ROLQ $0x03, R12
  3020  	MOVQ 24(SP), R10
  3021  	MOVQ R11, AX
  3022  	ORQ  R12, AX
  3023  	XORQ R8, R10
  3024  	MOVQ 128(SP), R13
  3025  	MOVQ 176(SP), R14
  3026  	ROLQ $0x1c, R10
  3027  	XORQ R10, AX
  3028  	MOVQ AX, 40(DI)
  3029  	XORQ AX, SI
  3030  	XORQ CX, R13
  3031  	ROLQ $0x2d, R13
  3032  	MOVQ R12, AX
  3033  	ANDQ R13, AX
  3034  	XORQ R11, AX
  3035  	MOVQ AX, 48(DI)
  3036  	XORQ AX, BP
  3037  	XORQ DX, R14
  3038  	ROLQ $0x3d, R14
  3039  	MOVQ R14, AX
  3040  	ORQ  R10, AX
  3041  	XORQ R13, AX
  3042  	MOVQ AX, 64(DI)
  3043  	ANDQ R11, R10
  3044  	XORQ R14, R10
  3045  	MOVQ R10, 72(DI)
  3046  	NOTQ R14
  3047  	XORQ R10, R15
  3048  	ORQ  R14, R13
  3049  	XORQ R12, R13
  3050  	MOVQ R13, 56(DI)
  3051  
  3052  	// Result k
  3053  	MOVQ 8(SP), R10
  3054  	MOVQ 56(SP), R11
  3055  	MOVQ 104(SP), R12
  3056  	MOVQ 152(SP), R13
  3057  	MOVQ 160(SP), R14
  3058  	XORQ DX, R11
  3059  	ROLQ $0x06, R11
  3060  	XORQ R8, R12
  3061  	ROLQ $0x19, R12
  3062  	MOVQ R11, AX
  3063  	ORQ  R12, AX
  3064  	XORQ CX, R10
  3065  	ROLQ $0x01, R10
  3066  	XORQ R10, AX
  3067  	MOVQ AX, 80(DI)
  3068  	XORQ AX, SI
  3069  	XORQ R9, R13
  3070  	ROLQ $0x08, R13
  3071  	MOVQ R12, AX
  3072  	ANDQ R13, AX
  3073  	XORQ R11, AX
  3074  	MOVQ AX, 88(DI)
  3075  	XORQ AX, BP
  3076  	XORQ BX, R14
  3077  	ROLQ $0x12, R14
  3078  	NOTQ R13
  3079  	MOVQ R13, AX
  3080  	ANDQ R14, AX
  3081  	XORQ R12, AX
  3082  	MOVQ AX, 96(DI)
  3083  	MOVQ R14, AX
  3084  	ORQ  R10, AX
  3085  	XORQ R13, AX
  3086  	MOVQ AX, 104(DI)
  3087  	ANDQ R11, R10
  3088  	XORQ R14, R10
  3089  	MOVQ R10, 112(DI)
  3090  	XORQ R10, R15
  3091  
  3092  	// Result m
  3093  	MOVQ 40(SP), R11
  3094  	XORQ BX, R11
  3095  	MOVQ 88(SP), R12
  3096  	ROLQ $0x24, R11
  3097  	XORQ CX, R12
  3098  	MOVQ 32(SP), R10
  3099  	ROLQ $0x0a, R12
  3100  	MOVQ R11, AX
  3101  	MOVQ 136(SP), R13
  3102  	ANDQ R12, AX
  3103  	XORQ R9, R10
  3104  	MOVQ 184(SP), R14
  3105  	ROLQ $0x1b, R10
  3106  	XORQ R10, AX
  3107  	MOVQ AX, 120(DI)
  3108  	XORQ AX, SI
  3109  	XORQ DX, R13
  3110  	ROLQ $0x0f, R13
  3111  	MOVQ R12, AX
  3112  	ORQ  R13, AX
  3113  	XORQ R11, AX
  3114  	MOVQ AX, 128(DI)
  3115  	XORQ AX, BP
  3116  	XORQ R8, R14
  3117  	ROLQ $0x38, R14
  3118  	NOTQ R13
  3119  	MOVQ R13, AX
  3120  	ORQ  R14, AX
  3121  	XORQ R12, AX
  3122  	MOVQ AX, 136(DI)
  3123  	ORQ  R10, R11
  3124  	XORQ R14, R11
  3125  	MOVQ R11, 152(DI)
  3126  	ANDQ R10, R14
  3127  	XORQ R13, R14
  3128  	MOVQ R14, 144(DI)
  3129  	XORQ R11, R15
  3130  
  3131  	// Result s
  3132  	MOVQ 16(SP), R10
  3133  	MOVQ 64(SP), R11
  3134  	MOVQ 112(SP), R12
  3135  	XORQ DX, R10
  3136  	MOVQ 120(SP), R13
  3137  	ROLQ $0x3e, R10
  3138  	XORQ R8, R11
  3139  	MOVQ 168(SP), R14
  3140  	ROLQ $0x37, R11
  3141  	XORQ R9, R12
  3142  	MOVQ R10, R9
  3143  	XORQ CX, R14
  3144  	ROLQ $0x02, R14
  3145  	ANDQ R11, R9
  3146  	XORQ R14, R9
  3147  	MOVQ R9, 192(DI)
  3148  	ROLQ $0x27, R12
  3149  	XORQ R9, R15
  3150  	NOTQ R11
  3151  	XORQ BX, R13
  3152  	MOVQ R11, BX
  3153  	ANDQ R12, BX
  3154  	XORQ R10, BX
  3155  	MOVQ BX, 160(DI)
  3156  	XORQ BX, SI
  3157  	ROLQ $0x29, R13
  3158  	MOVQ R12, CX
  3159  	ORQ  R13, CX
  3160  	XORQ R11, CX
  3161  	MOVQ CX, 168(DI)
  3162  	XORQ CX, BP
  3163  	MOVQ R13, DX
  3164  	MOVQ R14, R8
  3165  	ANDQ R14, DX
  3166  	ORQ  R10, R8
  3167  	XORQ R12, DX
  3168  	XORQ R13, R8
  3169  	MOVQ DX, 176(DI)
  3170  	MOVQ R8, 184(DI)
  3171  
  3172  	// Prepare round
  3173  	MOVQ BP, BX
  3174  	ROLQ $0x01, BX
  3175  	MOVQ 16(DI), R12
  3176  	XORQ 56(DI), DX
  3177  	XORQ R15, BX
  3178  	XORQ 96(DI), R12
  3179  	XORQ 136(DI), DX
  3180  	XORQ DX, R12
  3181  	MOVQ R12, CX
  3182  	ROLQ $0x01, CX
  3183  	MOVQ 24(DI), R13
  3184  	XORQ 64(DI), R8
  3185  	XORQ SI, CX
  3186  	XORQ 104(DI), R13
  3187  	XORQ 144(DI), R8
  3188  	XORQ R8, R13
  3189  	MOVQ R13, DX
  3190  	ROLQ $0x01, DX
  3191  	MOVQ R15, R8
  3192  	XORQ BP, DX
  3193  	ROLQ $0x01, R8
  3194  	MOVQ SI, R9
  3195  	XORQ R12, R8
  3196  	ROLQ $0x01, R9
  3197  
  3198  	// Result b
  3199  	MOVQ (DI), R10
  3200  	MOVQ 48(DI), R11
  3201  	XORQ R13, R9
  3202  	MOVQ 96(DI), R12
  3203  	MOVQ 144(DI), R13
  3204  	MOVQ 192(DI), R14
  3205  	XORQ CX, R11
  3206  	ROLQ $0x2c, R11
  3207  	XORQ DX, R12
  3208  	XORQ BX, R10
  3209  	ROLQ $0x2b, R12
  3210  	MOVQ R11, SI
  3211  	MOVQ $0x8000000000008089, AX
  3212  	ORQ  R12, SI
  3213  	XORQ R10, AX
  3214  	XORQ AX, SI
  3215  	MOVQ SI, (SP)
  3216  	XORQ R9, R14
  3217  	ROLQ $0x0e, R14
  3218  	MOVQ R10, R15
  3219  	ANDQ R11, R15
  3220  	XORQ R14, R15
  3221  	MOVQ R15, 32(SP)
  3222  	XORQ R8, R13
  3223  	ROLQ $0x15, R13
  3224  	MOVQ R13, AX
  3225  	ANDQ R14, AX
  3226  	XORQ R12, AX
  3227  	MOVQ AX, 16(SP)
  3228  	NOTQ R12
  3229  	ORQ  R10, R14
  3230  	ORQ  R13, R12
  3231  	XORQ R13, R14
  3232  	XORQ R11, R12
  3233  	MOVQ R14, 24(SP)
  3234  	MOVQ R12, 8(SP)
  3235  	MOVQ R12, BP
  3236  
  3237  	// Result g
  3238  	MOVQ 72(DI), R11
  3239  	XORQ R9, R11
  3240  	MOVQ 80(DI), R12
  3241  	ROLQ $0x14, R11
  3242  	XORQ BX, R12
  3243  	ROLQ $0x03, R12
  3244  	MOVQ 24(DI), R10
  3245  	MOVQ R11, AX
  3246  	ORQ  R12, AX
  3247  	XORQ R8, R10
  3248  	MOVQ 128(DI), R13
  3249  	MOVQ 176(DI), R14
  3250  	ROLQ $0x1c, R10
  3251  	XORQ R10, AX
  3252  	MOVQ AX, 40(SP)
  3253  	XORQ AX, SI
  3254  	XORQ CX, R13
  3255  	ROLQ $0x2d, R13
  3256  	MOVQ R12, AX
  3257  	ANDQ R13, AX
  3258  	XORQ R11, AX
  3259  	MOVQ AX, 48(SP)
  3260  	XORQ AX, BP
  3261  	XORQ DX, R14
  3262  	ROLQ $0x3d, R14
  3263  	MOVQ R14, AX
  3264  	ORQ  R10, AX
  3265  	XORQ R13, AX
  3266  	MOVQ AX, 64(SP)
  3267  	ANDQ R11, R10
  3268  	XORQ R14, R10
  3269  	MOVQ R10, 72(SP)
  3270  	NOTQ R14
  3271  	XORQ R10, R15
  3272  	ORQ  R14, R13
  3273  	XORQ R12, R13
  3274  	MOVQ R13, 56(SP)
  3275  
  3276  	// Result k
  3277  	MOVQ 8(DI), R10
  3278  	MOVQ 56(DI), R11
  3279  	MOVQ 104(DI), R12
  3280  	MOVQ 152(DI), R13
  3281  	MOVQ 160(DI), R14
  3282  	XORQ DX, R11
  3283  	ROLQ $0x06, R11
  3284  	XORQ R8, R12
  3285  	ROLQ $0x19, R12
  3286  	MOVQ R11, AX
  3287  	ORQ  R12, AX
  3288  	XORQ CX, R10
  3289  	ROLQ $0x01, R10
  3290  	XORQ R10, AX
  3291  	MOVQ AX, 80(SP)
  3292  	XORQ AX, SI
  3293  	XORQ R9, R13
  3294  	ROLQ $0x08, R13
  3295  	MOVQ R12, AX
  3296  	ANDQ R13, AX
  3297  	XORQ R11, AX
  3298  	MOVQ AX, 88(SP)
  3299  	XORQ AX, BP
  3300  	XORQ BX, R14
  3301  	ROLQ $0x12, R14
  3302  	NOTQ R13
  3303  	MOVQ R13, AX
  3304  	ANDQ R14, AX
  3305  	XORQ R12, AX
  3306  	MOVQ AX, 96(SP)
  3307  	MOVQ R14, AX
  3308  	ORQ  R10, AX
  3309  	XORQ R13, AX
  3310  	MOVQ AX, 104(SP)
  3311  	ANDQ R11, R10
  3312  	XORQ R14, R10
  3313  	MOVQ R10, 112(SP)
  3314  	XORQ R10, R15
  3315  
  3316  	// Result m
  3317  	MOVQ 40(DI), R11
  3318  	XORQ BX, R11
  3319  	MOVQ 88(DI), R12
  3320  	ROLQ $0x24, R11
  3321  	XORQ CX, R12
  3322  	MOVQ 32(DI), R10
  3323  	ROLQ $0x0a, R12
  3324  	MOVQ R11, AX
  3325  	MOVQ 136(DI), R13
  3326  	ANDQ R12, AX
  3327  	XORQ R9, R10
  3328  	MOVQ 184(DI), R14
  3329  	ROLQ $0x1b, R10
  3330  	XORQ R10, AX
  3331  	MOVQ AX, 120(SP)
  3332  	XORQ AX, SI
  3333  	XORQ DX, R13
  3334  	ROLQ $0x0f, R13
  3335  	MOVQ R12, AX
  3336  	ORQ  R13, AX
  3337  	XORQ R11, AX
  3338  	MOVQ AX, 128(SP)
  3339  	XORQ AX, BP
  3340  	XORQ R8, R14
  3341  	ROLQ $0x38, R14
  3342  	NOTQ R13
  3343  	MOVQ R13, AX
  3344  	ORQ  R14, AX
  3345  	XORQ R12, AX
  3346  	MOVQ AX, 136(SP)
  3347  	ORQ  R10, R11
  3348  	XORQ R14, R11
  3349  	MOVQ R11, 152(SP)
  3350  	ANDQ R10, R14
  3351  	XORQ R13, R14
  3352  	MOVQ R14, 144(SP)
  3353  	XORQ R11, R15
  3354  
  3355  	// Result s
  3356  	MOVQ 16(DI), R10
  3357  	MOVQ 64(DI), R11
  3358  	MOVQ 112(DI), R12
  3359  	XORQ DX, R10
  3360  	MOVQ 120(DI), R13
  3361  	ROLQ $0x3e, R10
  3362  	XORQ R8, R11
  3363  	MOVQ 168(DI), R14
  3364  	ROLQ $0x37, R11
  3365  	XORQ R9, R12
  3366  	MOVQ R10, R9
  3367  	XORQ CX, R14
  3368  	ROLQ $0x02, R14
  3369  	ANDQ R11, R9
  3370  	XORQ R14, R9
  3371  	MOVQ R9, 192(SP)
  3372  	ROLQ $0x27, R12
  3373  	XORQ R9, R15
  3374  	NOTQ R11
  3375  	XORQ BX, R13
  3376  	MOVQ R11, BX
  3377  	ANDQ R12, BX
  3378  	XORQ R10, BX
  3379  	MOVQ BX, 160(SP)
  3380  	XORQ BX, SI
  3381  	ROLQ $0x29, R13
  3382  	MOVQ R12, CX
  3383  	ORQ  R13, CX
  3384  	XORQ R11, CX
  3385  	MOVQ CX, 168(SP)
  3386  	XORQ CX, BP
  3387  	MOVQ R13, DX
  3388  	MOVQ R14, R8
  3389  	ANDQ R14, DX
  3390  	ORQ  R10, R8
  3391  	XORQ R12, DX
  3392  	XORQ R13, R8
  3393  	MOVQ DX, 176(SP)
  3394  	MOVQ R8, 184(SP)
  3395  
  3396  	// Prepare round
  3397  	MOVQ BP, BX
  3398  	ROLQ $0x01, BX
  3399  	MOVQ 16(SP), R12
  3400  	XORQ 56(SP), DX
  3401  	XORQ R15, BX
  3402  	XORQ 96(SP), R12
  3403  	XORQ 136(SP), DX
  3404  	XORQ DX, R12
  3405  	MOVQ R12, CX
  3406  	ROLQ $0x01, CX
  3407  	MOVQ 24(SP), R13
  3408  	XORQ 64(SP), R8
  3409  	XORQ SI, CX
  3410  	XORQ 104(SP), R13
  3411  	XORQ 144(SP), R8
  3412  	XORQ R8, R13
  3413  	MOVQ R13, DX
  3414  	ROLQ $0x01, DX
  3415  	MOVQ R15, R8
  3416  	XORQ BP, DX
  3417  	ROLQ $0x01, R8
  3418  	MOVQ SI, R9
  3419  	XORQ R12, R8
  3420  	ROLQ $0x01, R9
  3421  
  3422  	// Result b
  3423  	MOVQ (SP), R10
  3424  	MOVQ 48(SP), R11
  3425  	XORQ R13, R9
  3426  	MOVQ 96(SP), R12
  3427  	MOVQ 144(SP), R13
  3428  	MOVQ 192(SP), R14
  3429  	XORQ CX, R11
  3430  	ROLQ $0x2c, R11
  3431  	XORQ DX, R12
  3432  	XORQ BX, R10
  3433  	ROLQ $0x2b, R12
  3434  	MOVQ R11, SI
  3435  	MOVQ $0x8000000000008003, AX
  3436  	ORQ  R12, SI
  3437  	XORQ R10, AX
  3438  	XORQ AX, SI
  3439  	MOVQ SI, (DI)
  3440  	XORQ R9, R14
  3441  	ROLQ $0x0e, R14
  3442  	MOVQ R10, R15
  3443  	ANDQ R11, R15
  3444  	XORQ R14, R15
  3445  	MOVQ R15, 32(DI)
  3446  	XORQ R8, R13
  3447  	ROLQ $0x15, R13
  3448  	MOVQ R13, AX
  3449  	ANDQ R14, AX
  3450  	XORQ R12, AX
  3451  	MOVQ AX, 16(DI)
  3452  	NOTQ R12
  3453  	ORQ  R10, R14
  3454  	ORQ  R13, R12
  3455  	XORQ R13, R14
  3456  	XORQ R11, R12
  3457  	MOVQ R14, 24(DI)
  3458  	MOVQ R12, 8(DI)
  3459  	MOVQ R12, BP
  3460  
  3461  	// Result g
  3462  	MOVQ 72(SP), R11
  3463  	XORQ R9, R11
  3464  	MOVQ 80(SP), R12
  3465  	ROLQ $0x14, R11
  3466  	XORQ BX, R12
  3467  	ROLQ $0x03, R12
  3468  	MOVQ 24(SP), R10
  3469  	MOVQ R11, AX
  3470  	ORQ  R12, AX
  3471  	XORQ R8, R10
  3472  	MOVQ 128(SP), R13
  3473  	MOVQ 176(SP), R14
  3474  	ROLQ $0x1c, R10
  3475  	XORQ R10, AX
  3476  	MOVQ AX, 40(DI)
  3477  	XORQ AX, SI
  3478  	XORQ CX, R13
  3479  	ROLQ $0x2d, R13
  3480  	MOVQ R12, AX
  3481  	ANDQ R13, AX
  3482  	XORQ R11, AX
  3483  	MOVQ AX, 48(DI)
  3484  	XORQ AX, BP
  3485  	XORQ DX, R14
  3486  	ROLQ $0x3d, R14
  3487  	MOVQ R14, AX
  3488  	ORQ  R10, AX
  3489  	XORQ R13, AX
  3490  	MOVQ AX, 64(DI)
  3491  	ANDQ R11, R10
  3492  	XORQ R14, R10
  3493  	MOVQ R10, 72(DI)
  3494  	NOTQ R14
  3495  	XORQ R10, R15
  3496  	ORQ  R14, R13
  3497  	XORQ R12, R13
  3498  	MOVQ R13, 56(DI)
  3499  
  3500  	// Result k
  3501  	MOVQ 8(SP), R10
  3502  	MOVQ 56(SP), R11
  3503  	MOVQ 104(SP), R12
  3504  	MOVQ 152(SP), R13
  3505  	MOVQ 160(SP), R14
  3506  	XORQ DX, R11
  3507  	ROLQ $0x06, R11
  3508  	XORQ R8, R12
  3509  	ROLQ $0x19, R12
  3510  	MOVQ R11, AX
  3511  	ORQ  R12, AX
  3512  	XORQ CX, R10
  3513  	ROLQ $0x01, R10
  3514  	XORQ R10, AX
  3515  	MOVQ AX, 80(DI)
  3516  	XORQ AX, SI
  3517  	XORQ R9, R13
  3518  	ROLQ $0x08, R13
  3519  	MOVQ R12, AX
  3520  	ANDQ R13, AX
  3521  	XORQ R11, AX
  3522  	MOVQ AX, 88(DI)
  3523  	XORQ AX, BP
  3524  	XORQ BX, R14
  3525  	ROLQ $0x12, R14
  3526  	NOTQ R13
  3527  	MOVQ R13, AX
  3528  	ANDQ R14, AX
  3529  	XORQ R12, AX
  3530  	MOVQ AX, 96(DI)
  3531  	MOVQ R14, AX
  3532  	ORQ  R10, AX
  3533  	XORQ R13, AX
  3534  	MOVQ AX, 104(DI)
  3535  	ANDQ R11, R10
  3536  	XORQ R14, R10
  3537  	MOVQ R10, 112(DI)
  3538  	XORQ R10, R15
  3539  
  3540  	// Result m
  3541  	MOVQ 40(SP), R11
  3542  	XORQ BX, R11
  3543  	MOVQ 88(SP), R12
  3544  	ROLQ $0x24, R11
  3545  	XORQ CX, R12
  3546  	MOVQ 32(SP), R10
  3547  	ROLQ $0x0a, R12
  3548  	MOVQ R11, AX
  3549  	MOVQ 136(SP), R13
  3550  	ANDQ R12, AX
  3551  	XORQ R9, R10
  3552  	MOVQ 184(SP), R14
  3553  	ROLQ $0x1b, R10
  3554  	XORQ R10, AX
  3555  	MOVQ AX, 120(DI)
  3556  	XORQ AX, SI
  3557  	XORQ DX, R13
  3558  	ROLQ $0x0f, R13
  3559  	MOVQ R12, AX
  3560  	ORQ  R13, AX
  3561  	XORQ R11, AX
  3562  	MOVQ AX, 128(DI)
  3563  	XORQ AX, BP
  3564  	XORQ R8, R14
  3565  	ROLQ $0x38, R14
  3566  	NOTQ R13
  3567  	MOVQ R13, AX
  3568  	ORQ  R14, AX
  3569  	XORQ R12, AX
  3570  	MOVQ AX, 136(DI)
  3571  	ORQ  R10, R11
  3572  	XORQ R14, R11
  3573  	MOVQ R11, 152(DI)
  3574  	ANDQ R10, R14
  3575  	XORQ R13, R14
  3576  	MOVQ R14, 144(DI)
  3577  	XORQ R11, R15
  3578  
  3579  	// Result s
  3580  	MOVQ 16(SP), R10
  3581  	MOVQ 64(SP), R11
  3582  	MOVQ 112(SP), R12
  3583  	XORQ DX, R10
  3584  	MOVQ 120(SP), R13
  3585  	ROLQ $0x3e, R10
  3586  	XORQ R8, R11
  3587  	MOVQ 168(SP), R14
  3588  	ROLQ $0x37, R11
  3589  	XORQ R9, R12
  3590  	MOVQ R10, R9
  3591  	XORQ CX, R14
  3592  	ROLQ $0x02, R14
  3593  	ANDQ R11, R9
  3594  	XORQ R14, R9
  3595  	MOVQ R9, 192(DI)
  3596  	ROLQ $0x27, R12
  3597  	XORQ R9, R15
  3598  	NOTQ R11
  3599  	XORQ BX, R13
  3600  	MOVQ R11, BX
  3601  	ANDQ R12, BX
  3602  	XORQ R10, BX
  3603  	MOVQ BX, 160(DI)
  3604  	XORQ BX, SI
  3605  	ROLQ $0x29, R13
  3606  	MOVQ R12, CX
  3607  	ORQ  R13, CX
  3608  	XORQ R11, CX
  3609  	MOVQ CX, 168(DI)
  3610  	XORQ CX, BP
  3611  	MOVQ R13, DX
  3612  	MOVQ R14, R8
  3613  	ANDQ R14, DX
  3614  	ORQ  R10, R8
  3615  	XORQ R12, DX
  3616  	XORQ R13, R8
  3617  	MOVQ DX, 176(DI)
  3618  	MOVQ R8, 184(DI)
  3619  
  3620  	// Prepare round
  3621  	MOVQ BP, BX
  3622  	ROLQ $0x01, BX
  3623  	MOVQ 16(DI), R12
  3624  	XORQ 56(DI), DX
  3625  	XORQ R15, BX
  3626  	XORQ 96(DI), R12
  3627  	XORQ 136(DI), DX
  3628  	XORQ DX, R12
  3629  	MOVQ R12, CX
  3630  	ROLQ $0x01, CX
  3631  	MOVQ 24(DI), R13
  3632  	XORQ 64(DI), R8
  3633  	XORQ SI, CX
  3634  	XORQ 104(DI), R13
  3635  	XORQ 144(DI), R8
  3636  	XORQ R8, R13
  3637  	MOVQ R13, DX
  3638  	ROLQ $0x01, DX
  3639  	MOVQ R15, R8
  3640  	XORQ BP, DX
  3641  	ROLQ $0x01, R8
  3642  	MOVQ SI, R9
  3643  	XORQ R12, R8
  3644  	ROLQ $0x01, R9
  3645  
  3646  	// Result b
  3647  	MOVQ (DI), R10
  3648  	MOVQ 48(DI), R11
  3649  	XORQ R13, R9
  3650  	MOVQ 96(DI), R12
  3651  	MOVQ 144(DI), R13
  3652  	MOVQ 192(DI), R14
  3653  	XORQ CX, R11
  3654  	ROLQ $0x2c, R11
  3655  	XORQ DX, R12
  3656  	XORQ BX, R10
  3657  	ROLQ $0x2b, R12
  3658  	MOVQ R11, SI
  3659  	MOVQ $0x8000000000008002, AX
  3660  	ORQ  R12, SI
  3661  	XORQ R10, AX
  3662  	XORQ AX, SI
  3663  	MOVQ SI, (SP)
  3664  	XORQ R9, R14
  3665  	ROLQ $0x0e, R14
  3666  	MOVQ R10, R15
  3667  	ANDQ R11, R15
  3668  	XORQ R14, R15
  3669  	MOVQ R15, 32(SP)
  3670  	XORQ R8, R13
  3671  	ROLQ $0x15, R13
  3672  	MOVQ R13, AX
  3673  	ANDQ R14, AX
  3674  	XORQ R12, AX
  3675  	MOVQ AX, 16(SP)
  3676  	NOTQ R12
  3677  	ORQ  R10, R14
  3678  	ORQ  R13, R12
  3679  	XORQ R13, R14
  3680  	XORQ R11, R12
  3681  	MOVQ R14, 24(SP)
  3682  	MOVQ R12, 8(SP)
  3683  	MOVQ R12, BP
  3684  
  3685  	// Result g
  3686  	MOVQ 72(DI), R11
  3687  	XORQ R9, R11
  3688  	MOVQ 80(DI), R12
  3689  	ROLQ $0x14, R11
  3690  	XORQ BX, R12
  3691  	ROLQ $0x03, R12
  3692  	MOVQ 24(DI), R10
  3693  	MOVQ R11, AX
  3694  	ORQ  R12, AX
  3695  	XORQ R8, R10
  3696  	MOVQ 128(DI), R13
  3697  	MOVQ 176(DI), R14
  3698  	ROLQ $0x1c, R10
  3699  	XORQ R10, AX
  3700  	MOVQ AX, 40(SP)
  3701  	XORQ AX, SI
  3702  	XORQ CX, R13
  3703  	ROLQ $0x2d, R13
  3704  	MOVQ R12, AX
  3705  	ANDQ R13, AX
  3706  	XORQ R11, AX
  3707  	MOVQ AX, 48(SP)
  3708  	XORQ AX, BP
  3709  	XORQ DX, R14
  3710  	ROLQ $0x3d, R14
  3711  	MOVQ R14, AX
  3712  	ORQ  R10, AX
  3713  	XORQ R13, AX
  3714  	MOVQ AX, 64(SP)
  3715  	ANDQ R11, R10
  3716  	XORQ R14, R10
  3717  	MOVQ R10, 72(SP)
  3718  	NOTQ R14
  3719  	XORQ R10, R15
  3720  	ORQ  R14, R13
  3721  	XORQ R12, R13
  3722  	MOVQ R13, 56(SP)
  3723  
  3724  	// Result k
  3725  	MOVQ 8(DI), R10
  3726  	MOVQ 56(DI), R11
  3727  	MOVQ 104(DI), R12
  3728  	MOVQ 152(DI), R13
  3729  	MOVQ 160(DI), R14
  3730  	XORQ DX, R11
  3731  	ROLQ $0x06, R11
  3732  	XORQ R8, R12
  3733  	ROLQ $0x19, R12
  3734  	MOVQ R11, AX
  3735  	ORQ  R12, AX
  3736  	XORQ CX, R10
  3737  	ROLQ $0x01, R10
  3738  	XORQ R10, AX
  3739  	MOVQ AX, 80(SP)
  3740  	XORQ AX, SI
  3741  	XORQ R9, R13
  3742  	ROLQ $0x08, R13
  3743  	MOVQ R12, AX
  3744  	ANDQ R13, AX
  3745  	XORQ R11, AX
  3746  	MOVQ AX, 88(SP)
  3747  	XORQ AX, BP
  3748  	XORQ BX, R14
  3749  	ROLQ $0x12, R14
  3750  	NOTQ R13
  3751  	MOVQ R13, AX
  3752  	ANDQ R14, AX
  3753  	XORQ R12, AX
  3754  	MOVQ AX, 96(SP)
  3755  	MOVQ R14, AX
  3756  	ORQ  R10, AX
  3757  	XORQ R13, AX
  3758  	MOVQ AX, 104(SP)
  3759  	ANDQ R11, R10
  3760  	XORQ R14, R10
  3761  	MOVQ R10, 112(SP)
  3762  	XORQ R10, R15
  3763  
  3764  	// Result m
  3765  	MOVQ 40(DI), R11
  3766  	XORQ BX, R11
  3767  	MOVQ 88(DI), R12
  3768  	ROLQ $0x24, R11
  3769  	XORQ CX, R12
  3770  	MOVQ 32(DI), R10
  3771  	ROLQ $0x0a, R12
  3772  	MOVQ R11, AX
  3773  	MOVQ 136(DI), R13
  3774  	ANDQ R12, AX
  3775  	XORQ R9, R10
  3776  	MOVQ 184(DI), R14
  3777  	ROLQ $0x1b, R10
  3778  	XORQ R10, AX
  3779  	MOVQ AX, 120(SP)
  3780  	XORQ AX, SI
  3781  	XORQ DX, R13
  3782  	ROLQ $0x0f, R13
  3783  	MOVQ R12, AX
  3784  	ORQ  R13, AX
  3785  	XORQ R11, AX
  3786  	MOVQ AX, 128(SP)
  3787  	XORQ AX, BP
  3788  	XORQ R8, R14
  3789  	ROLQ $0x38, R14
  3790  	NOTQ R13
  3791  	MOVQ R13, AX
  3792  	ORQ  R14, AX
  3793  	XORQ R12, AX
  3794  	MOVQ AX, 136(SP)
  3795  	ORQ  R10, R11
  3796  	XORQ R14, R11
  3797  	MOVQ R11, 152(SP)
  3798  	ANDQ R10, R14
  3799  	XORQ R13, R14
  3800  	MOVQ R14, 144(SP)
  3801  	XORQ R11, R15
  3802  
  3803  	// Result s
  3804  	MOVQ 16(DI), R10
  3805  	MOVQ 64(DI), R11
  3806  	MOVQ 112(DI), R12
  3807  	XORQ DX, R10
  3808  	MOVQ 120(DI), R13
  3809  	ROLQ $0x3e, R10
  3810  	XORQ R8, R11
  3811  	MOVQ 168(DI), R14
  3812  	ROLQ $0x37, R11
  3813  	XORQ R9, R12
  3814  	MOVQ R10, R9
  3815  	XORQ CX, R14
  3816  	ROLQ $0x02, R14
  3817  	ANDQ R11, R9
  3818  	XORQ R14, R9
  3819  	MOVQ R9, 192(SP)
  3820  	ROLQ $0x27, R12
  3821  	XORQ R9, R15
  3822  	NOTQ R11
  3823  	XORQ BX, R13
  3824  	MOVQ R11, BX
  3825  	ANDQ R12, BX
  3826  	XORQ R10, BX
  3827  	MOVQ BX, 160(SP)
  3828  	XORQ BX, SI
  3829  	ROLQ $0x29, R13
  3830  	MOVQ R12, CX
  3831  	ORQ  R13, CX
  3832  	XORQ R11, CX
  3833  	MOVQ CX, 168(SP)
  3834  	XORQ CX, BP
  3835  	MOVQ R13, DX
  3836  	MOVQ R14, R8
  3837  	ANDQ R14, DX
  3838  	ORQ  R10, R8
  3839  	XORQ R12, DX
  3840  	XORQ R13, R8
  3841  	MOVQ DX, 176(SP)
  3842  	MOVQ R8, 184(SP)
  3843  
  3844  	// Prepare round
  3845  	MOVQ BP, BX
  3846  	ROLQ $0x01, BX
  3847  	MOVQ 16(SP), R12
  3848  	XORQ 56(SP), DX
  3849  	XORQ R15, BX
  3850  	XORQ 96(SP), R12
  3851  	XORQ 136(SP), DX
  3852  	XORQ DX, R12
  3853  	MOVQ R12, CX
  3854  	ROLQ $0x01, CX
  3855  	MOVQ 24(SP), R13
  3856  	XORQ 64(SP), R8
  3857  	XORQ SI, CX
  3858  	XORQ 104(SP), R13
  3859  	XORQ 144(SP), R8
  3860  	XORQ R8, R13
  3861  	MOVQ R13, DX
  3862  	ROLQ $0x01, DX
  3863  	MOVQ R15, R8
  3864  	XORQ BP, DX
  3865  	ROLQ $0x01, R8
  3866  	MOVQ SI, R9
  3867  	XORQ R12, R8
  3868  	ROLQ $0x01, R9
  3869  
  3870  	// Result b
  3871  	MOVQ (SP), R10
  3872  	MOVQ 48(SP), R11
  3873  	XORQ R13, R9
  3874  	MOVQ 96(SP), R12
  3875  	MOVQ 144(SP), R13
  3876  	MOVQ 192(SP), R14
  3877  	XORQ CX, R11
  3878  	ROLQ $0x2c, R11
  3879  	XORQ DX, R12
  3880  	XORQ BX, R10
  3881  	ROLQ $0x2b, R12
  3882  	MOVQ R11, SI
  3883  	MOVQ $0x8000000000000080, AX
  3884  	ORQ  R12, SI
  3885  	XORQ R10, AX
  3886  	XORQ AX, SI
  3887  	MOVQ SI, (DI)
  3888  	XORQ R9, R14
  3889  	ROLQ $0x0e, R14
  3890  	MOVQ R10, R15
  3891  	ANDQ R11, R15
  3892  	XORQ R14, R15
  3893  	MOVQ R15, 32(DI)
  3894  	XORQ R8, R13
  3895  	ROLQ $0x15, R13
  3896  	MOVQ R13, AX
  3897  	ANDQ R14, AX
  3898  	XORQ R12, AX
  3899  	MOVQ AX, 16(DI)
  3900  	NOTQ R12
  3901  	ORQ  R10, R14
  3902  	ORQ  R13, R12
  3903  	XORQ R13, R14
  3904  	XORQ R11, R12
  3905  	MOVQ R14, 24(DI)
  3906  	MOVQ R12, 8(DI)
  3907  	MOVQ R12, BP
  3908  
  3909  	// Result g
  3910  	MOVQ 72(SP), R11
  3911  	XORQ R9, R11
  3912  	MOVQ 80(SP), R12
  3913  	ROLQ $0x14, R11
  3914  	XORQ BX, R12
  3915  	ROLQ $0x03, R12
  3916  	MOVQ 24(SP), R10
  3917  	MOVQ R11, AX
  3918  	ORQ  R12, AX
  3919  	XORQ R8, R10
  3920  	MOVQ 128(SP), R13
  3921  	MOVQ 176(SP), R14
  3922  	ROLQ $0x1c, R10
  3923  	XORQ R10, AX
  3924  	MOVQ AX, 40(DI)
  3925  	XORQ AX, SI
  3926  	XORQ CX, R13
  3927  	ROLQ $0x2d, R13
  3928  	MOVQ R12, AX
  3929  	ANDQ R13, AX
  3930  	XORQ R11, AX
  3931  	MOVQ AX, 48(DI)
  3932  	XORQ AX, BP
  3933  	XORQ DX, R14
  3934  	ROLQ $0x3d, R14
  3935  	MOVQ R14, AX
  3936  	ORQ  R10, AX
  3937  	XORQ R13, AX
  3938  	MOVQ AX, 64(DI)
  3939  	ANDQ R11, R10
  3940  	XORQ R14, R10
  3941  	MOVQ R10, 72(DI)
  3942  	NOTQ R14
  3943  	XORQ R10, R15
  3944  	ORQ  R14, R13
  3945  	XORQ R12, R13
  3946  	MOVQ R13, 56(DI)
  3947  
  3948  	// Result k
  3949  	MOVQ 8(SP), R10
  3950  	MOVQ 56(SP), R11
  3951  	MOVQ 104(SP), R12
  3952  	MOVQ 152(SP), R13
  3953  	MOVQ 160(SP), R14
  3954  	XORQ DX, R11
  3955  	ROLQ $0x06, R11
  3956  	XORQ R8, R12
  3957  	ROLQ $0x19, R12
  3958  	MOVQ R11, AX
  3959  	ORQ  R12, AX
  3960  	XORQ CX, R10
  3961  	ROLQ $0x01, R10
  3962  	XORQ R10, AX
  3963  	MOVQ AX, 80(DI)
  3964  	XORQ AX, SI
  3965  	XORQ R9, R13
  3966  	ROLQ $0x08, R13
  3967  	MOVQ R12, AX
  3968  	ANDQ R13, AX
  3969  	XORQ R11, AX
  3970  	MOVQ AX, 88(DI)
  3971  	XORQ AX, BP
  3972  	XORQ BX, R14
  3973  	ROLQ $0x12, R14
  3974  	NOTQ R13
  3975  	MOVQ R13, AX
  3976  	ANDQ R14, AX
  3977  	XORQ R12, AX
  3978  	MOVQ AX, 96(DI)
  3979  	MOVQ R14, AX
  3980  	ORQ  R10, AX
  3981  	XORQ R13, AX
  3982  	MOVQ AX, 104(DI)
  3983  	ANDQ R11, R10
  3984  	XORQ R14, R10
  3985  	MOVQ R10, 112(DI)
  3986  	XORQ R10, R15
  3987  
  3988  	// Result m
  3989  	MOVQ 40(SP), R11
  3990  	XORQ BX, R11
  3991  	MOVQ 88(SP), R12
  3992  	ROLQ $0x24, R11
  3993  	XORQ CX, R12
  3994  	MOVQ 32(SP), R10
  3995  	ROLQ $0x0a, R12
  3996  	MOVQ R11, AX
  3997  	MOVQ 136(SP), R13
  3998  	ANDQ R12, AX
  3999  	XORQ R9, R10
  4000  	MOVQ 184(SP), R14
  4001  	ROLQ $0x1b, R10
  4002  	XORQ R10, AX
  4003  	MOVQ AX, 120(DI)
  4004  	XORQ AX, SI
  4005  	XORQ DX, R13
  4006  	ROLQ $0x0f, R13
  4007  	MOVQ R12, AX
  4008  	ORQ  R13, AX
  4009  	XORQ R11, AX
  4010  	MOVQ AX, 128(DI)
  4011  	XORQ AX, BP
  4012  	XORQ R8, R14
  4013  	ROLQ $0x38, R14
  4014  	NOTQ R13
  4015  	MOVQ R13, AX
  4016  	ORQ  R14, AX
  4017  	XORQ R12, AX
  4018  	MOVQ AX, 136(DI)
  4019  	ORQ  R10, R11
  4020  	XORQ R14, R11
  4021  	MOVQ R11, 152(DI)
  4022  	ANDQ R10, R14
  4023  	XORQ R13, R14
  4024  	MOVQ R14, 144(DI)
  4025  	XORQ R11, R15
  4026  
  4027  	// Result s
  4028  	MOVQ 16(SP), R10
  4029  	MOVQ 64(SP), R11
  4030  	MOVQ 112(SP), R12
  4031  	XORQ DX, R10
  4032  	MOVQ 120(SP), R13
  4033  	ROLQ $0x3e, R10
  4034  	XORQ R8, R11
  4035  	MOVQ 168(SP), R14
  4036  	ROLQ $0x37, R11
  4037  	XORQ R9, R12
  4038  	MOVQ R10, R9
  4039  	XORQ CX, R14
  4040  	ROLQ $0x02, R14
  4041  	ANDQ R11, R9
  4042  	XORQ R14, R9
  4043  	MOVQ R9, 192(DI)
  4044  	ROLQ $0x27, R12
  4045  	XORQ R9, R15
  4046  	NOTQ R11
  4047  	XORQ BX, R13
  4048  	MOVQ R11, BX
  4049  	ANDQ R12, BX
  4050  	XORQ R10, BX
  4051  	MOVQ BX, 160(DI)
  4052  	XORQ BX, SI
  4053  	ROLQ $0x29, R13
  4054  	MOVQ R12, CX
  4055  	ORQ  R13, CX
  4056  	XORQ R11, CX
  4057  	MOVQ CX, 168(DI)
  4058  	XORQ CX, BP
  4059  	MOVQ R13, DX
  4060  	MOVQ R14, R8
  4061  	ANDQ R14, DX
  4062  	ORQ  R10, R8
  4063  	XORQ R12, DX
  4064  	XORQ R13, R8
  4065  	MOVQ DX, 176(DI)
  4066  	MOVQ R8, 184(DI)
  4067  
  4068  	// Prepare round
  4069  	MOVQ BP, BX
  4070  	ROLQ $0x01, BX
  4071  	MOVQ 16(DI), R12
  4072  	XORQ 56(DI), DX
  4073  	XORQ R15, BX
  4074  	XORQ 96(DI), R12
  4075  	XORQ 136(DI), DX
  4076  	XORQ DX, R12
  4077  	MOVQ R12, CX
  4078  	ROLQ $0x01, CX
  4079  	MOVQ 24(DI), R13
  4080  	XORQ 64(DI), R8
  4081  	XORQ SI, CX
  4082  	XORQ 104(DI), R13
  4083  	XORQ 144(DI), R8
  4084  	XORQ R8, R13
  4085  	MOVQ R13, DX
  4086  	ROLQ $0x01, DX
  4087  	MOVQ R15, R8
  4088  	XORQ BP, DX
  4089  	ROLQ $0x01, R8
  4090  	MOVQ SI, R9
  4091  	XORQ R12, R8
  4092  	ROLQ $0x01, R9
  4093  
  4094  	// Result b
  4095  	MOVQ (DI), R10
  4096  	MOVQ 48(DI), R11
  4097  	XORQ R13, R9
  4098  	MOVQ 96(DI), R12
  4099  	MOVQ 144(DI), R13
  4100  	MOVQ 192(DI), R14
  4101  	XORQ CX, R11
  4102  	ROLQ $0x2c, R11
  4103  	XORQ DX, R12
  4104  	XORQ BX, R10
  4105  	ROLQ $0x2b, R12
  4106  	MOVQ R11, SI
  4107  	MOVQ $0x000000000000800a, AX
  4108  	ORQ  R12, SI
  4109  	XORQ R10, AX
  4110  	XORQ AX, SI
  4111  	MOVQ SI, (SP)
  4112  	XORQ R9, R14
  4113  	ROLQ $0x0e, R14
  4114  	MOVQ R10, R15
  4115  	ANDQ R11, R15
  4116  	XORQ R14, R15
  4117  	MOVQ R15, 32(SP)
  4118  	XORQ R8, R13
  4119  	ROLQ $0x15, R13
  4120  	MOVQ R13, AX
  4121  	ANDQ R14, AX
  4122  	XORQ R12, AX
  4123  	MOVQ AX, 16(SP)
  4124  	NOTQ R12
  4125  	ORQ  R10, R14
  4126  	ORQ  R13, R12
  4127  	XORQ R13, R14
  4128  	XORQ R11, R12
  4129  	MOVQ R14, 24(SP)
  4130  	MOVQ R12, 8(SP)
  4131  	MOVQ R12, BP
  4132  
  4133  	// Result g
  4134  	MOVQ 72(DI), R11
  4135  	XORQ R9, R11
  4136  	MOVQ 80(DI), R12
  4137  	ROLQ $0x14, R11
  4138  	XORQ BX, R12
  4139  	ROLQ $0x03, R12
  4140  	MOVQ 24(DI), R10
  4141  	MOVQ R11, AX
  4142  	ORQ  R12, AX
  4143  	XORQ R8, R10
  4144  	MOVQ 128(DI), R13
  4145  	MOVQ 176(DI), R14
  4146  	ROLQ $0x1c, R10
  4147  	XORQ R10, AX
  4148  	MOVQ AX, 40(SP)
  4149  	XORQ AX, SI
  4150  	XORQ CX, R13
  4151  	ROLQ $0x2d, R13
  4152  	MOVQ R12, AX
  4153  	ANDQ R13, AX
  4154  	XORQ R11, AX
  4155  	MOVQ AX, 48(SP)
  4156  	XORQ AX, BP
  4157  	XORQ DX, R14
  4158  	ROLQ $0x3d, R14
  4159  	MOVQ R14, AX
  4160  	ORQ  R10, AX
  4161  	XORQ R13, AX
  4162  	MOVQ AX, 64(SP)
  4163  	ANDQ R11, R10
  4164  	XORQ R14, R10
  4165  	MOVQ R10, 72(SP)
  4166  	NOTQ R14
  4167  	XORQ R10, R15
  4168  	ORQ  R14, R13
  4169  	XORQ R12, R13
  4170  	MOVQ R13, 56(SP)
  4171  
  4172  	// Result k
  4173  	MOVQ 8(DI), R10
  4174  	MOVQ 56(DI), R11
  4175  	MOVQ 104(DI), R12
  4176  	MOVQ 152(DI), R13
  4177  	MOVQ 160(DI), R14
  4178  	XORQ DX, R11
  4179  	ROLQ $0x06, R11
  4180  	XORQ R8, R12
  4181  	ROLQ $0x19, R12
  4182  	MOVQ R11, AX
  4183  	ORQ  R12, AX
  4184  	XORQ CX, R10
  4185  	ROLQ $0x01, R10
  4186  	XORQ R10, AX
  4187  	MOVQ AX, 80(SP)
  4188  	XORQ AX, SI
  4189  	XORQ R9, R13
  4190  	ROLQ $0x08, R13
  4191  	MOVQ R12, AX
  4192  	ANDQ R13, AX
  4193  	XORQ R11, AX
  4194  	MOVQ AX, 88(SP)
  4195  	XORQ AX, BP
  4196  	XORQ BX, R14
  4197  	ROLQ $0x12, R14
  4198  	NOTQ R13
  4199  	MOVQ R13, AX
  4200  	ANDQ R14, AX
  4201  	XORQ R12, AX
  4202  	MOVQ AX, 96(SP)
  4203  	MOVQ R14, AX
  4204  	ORQ  R10, AX
  4205  	XORQ R13, AX
  4206  	MOVQ AX, 104(SP)
  4207  	ANDQ R11, R10
  4208  	XORQ R14, R10
  4209  	MOVQ R10, 112(SP)
  4210  	XORQ R10, R15
  4211  
  4212  	// Result m
  4213  	MOVQ 40(DI), R11
  4214  	XORQ BX, R11
  4215  	MOVQ 88(DI), R12
  4216  	ROLQ $0x24, R11
  4217  	XORQ CX, R12
  4218  	MOVQ 32(DI), R10
  4219  	ROLQ $0x0a, R12
  4220  	MOVQ R11, AX
  4221  	MOVQ 136(DI), R13
  4222  	ANDQ R12, AX
  4223  	XORQ R9, R10
  4224  	MOVQ 184(DI), R14
  4225  	ROLQ $0x1b, R10
  4226  	XORQ R10, AX
  4227  	MOVQ AX, 120(SP)
  4228  	XORQ AX, SI
  4229  	XORQ DX, R13
  4230  	ROLQ $0x0f, R13
  4231  	MOVQ R12, AX
  4232  	ORQ  R13, AX
  4233  	XORQ R11, AX
  4234  	MOVQ AX, 128(SP)
  4235  	XORQ AX, BP
  4236  	XORQ R8, R14
  4237  	ROLQ $0x38, R14
  4238  	NOTQ R13
  4239  	MOVQ R13, AX
  4240  	ORQ  R14, AX
  4241  	XORQ R12, AX
  4242  	MOVQ AX, 136(SP)
  4243  	ORQ  R10, R11
  4244  	XORQ R14, R11
  4245  	MOVQ R11, 152(SP)
  4246  	ANDQ R10, R14
  4247  	XORQ R13, R14
  4248  	MOVQ R14, 144(SP)
  4249  	XORQ R11, R15
  4250  
  4251  	// Result s
  4252  	MOVQ 16(DI), R10
  4253  	MOVQ 64(DI), R11
  4254  	MOVQ 112(DI), R12
  4255  	XORQ DX, R10
  4256  	MOVQ 120(DI), R13
  4257  	ROLQ $0x3e, R10
  4258  	XORQ R8, R11
  4259  	MOVQ 168(DI), R14
  4260  	ROLQ $0x37, R11
  4261  	XORQ R9, R12
  4262  	MOVQ R10, R9
  4263  	XORQ CX, R14
  4264  	ROLQ $0x02, R14
  4265  	ANDQ R11, R9
  4266  	XORQ R14, R9
  4267  	MOVQ R9, 192(SP)
  4268  	ROLQ $0x27, R12
  4269  	XORQ R9, R15
  4270  	NOTQ R11
  4271  	XORQ BX, R13
  4272  	MOVQ R11, BX
  4273  	ANDQ R12, BX
  4274  	XORQ R10, BX
  4275  	MOVQ BX, 160(SP)
  4276  	XORQ BX, SI
  4277  	ROLQ $0x29, R13
  4278  	MOVQ R12, CX
  4279  	ORQ  R13, CX
  4280  	XORQ R11, CX
  4281  	MOVQ CX, 168(SP)
  4282  	XORQ CX, BP
  4283  	MOVQ R13, DX
  4284  	MOVQ R14, R8
  4285  	ANDQ R14, DX
  4286  	ORQ  R10, R8
  4287  	XORQ R12, DX
  4288  	XORQ R13, R8
  4289  	MOVQ DX, 176(SP)
  4290  	MOVQ R8, 184(SP)
  4291  
  4292  	// Prepare round
  4293  	MOVQ BP, BX
  4294  	ROLQ $0x01, BX
  4295  	MOVQ 16(SP), R12
  4296  	XORQ 56(SP), DX
  4297  	XORQ R15, BX
  4298  	XORQ 96(SP), R12
  4299  	XORQ 136(SP), DX
  4300  	XORQ DX, R12
  4301  	MOVQ R12, CX
  4302  	ROLQ $0x01, CX
  4303  	MOVQ 24(SP), R13
  4304  	XORQ 64(SP), R8
  4305  	XORQ SI, CX
  4306  	XORQ 104(SP), R13
  4307  	XORQ 144(SP), R8
  4308  	XORQ R8, R13
  4309  	MOVQ R13, DX
  4310  	ROLQ $0x01, DX
  4311  	MOVQ R15, R8
  4312  	XORQ BP, DX
  4313  	ROLQ $0x01, R8
  4314  	MOVQ SI, R9
  4315  	XORQ R12, R8
  4316  	ROLQ $0x01, R9
  4317  
  4318  	// Result b
  4319  	MOVQ (SP), R10
  4320  	MOVQ 48(SP), R11
  4321  	XORQ R13, R9
  4322  	MOVQ 96(SP), R12
  4323  	MOVQ 144(SP), R13
  4324  	MOVQ 192(SP), R14
  4325  	XORQ CX, R11
  4326  	ROLQ $0x2c, R11
  4327  	XORQ DX, R12
  4328  	XORQ BX, R10
  4329  	ROLQ $0x2b, R12
  4330  	MOVQ R11, SI
  4331  	MOVQ $0x800000008000000a, AX
  4332  	ORQ  R12, SI
  4333  	XORQ R10, AX
  4334  	XORQ AX, SI
  4335  	MOVQ SI, (DI)
  4336  	XORQ R9, R14
  4337  	ROLQ $0x0e, R14
  4338  	MOVQ R10, R15
  4339  	ANDQ R11, R15
  4340  	XORQ R14, R15
  4341  	MOVQ R15, 32(DI)
  4342  	XORQ R8, R13
  4343  	ROLQ $0x15, R13
  4344  	MOVQ R13, AX
  4345  	ANDQ R14, AX
  4346  	XORQ R12, AX
  4347  	MOVQ AX, 16(DI)
  4348  	NOTQ R12
  4349  	ORQ  R10, R14
  4350  	ORQ  R13, R12
  4351  	XORQ R13, R14
  4352  	XORQ R11, R12
  4353  	MOVQ R14, 24(DI)
  4354  	MOVQ R12, 8(DI)
  4355  	MOVQ R12, BP
  4356  
  4357  	// Result g
  4358  	MOVQ 72(SP), R11
  4359  	XORQ R9, R11
  4360  	MOVQ 80(SP), R12
  4361  	ROLQ $0x14, R11
  4362  	XORQ BX, R12
  4363  	ROLQ $0x03, R12
  4364  	MOVQ 24(SP), R10
  4365  	MOVQ R11, AX
  4366  	ORQ  R12, AX
  4367  	XORQ R8, R10
  4368  	MOVQ 128(SP), R13
  4369  	MOVQ 176(SP), R14
  4370  	ROLQ $0x1c, R10
  4371  	XORQ R10, AX
  4372  	MOVQ AX, 40(DI)
  4373  	XORQ AX, SI
  4374  	XORQ CX, R13
  4375  	ROLQ $0x2d, R13
  4376  	MOVQ R12, AX
  4377  	ANDQ R13, AX
  4378  	XORQ R11, AX
  4379  	MOVQ AX, 48(DI)
  4380  	XORQ AX, BP
  4381  	XORQ DX, R14
  4382  	ROLQ $0x3d, R14
  4383  	MOVQ R14, AX
  4384  	ORQ  R10, AX
  4385  	XORQ R13, AX
  4386  	MOVQ AX, 64(DI)
  4387  	ANDQ R11, R10
  4388  	XORQ R14, R10
  4389  	MOVQ R10, 72(DI)
  4390  	NOTQ R14
  4391  	XORQ R10, R15
  4392  	ORQ  R14, R13
  4393  	XORQ R12, R13
  4394  	MOVQ R13, 56(DI)
  4395  
  4396  	// Result k
  4397  	MOVQ 8(SP), R10
  4398  	MOVQ 56(SP), R11
  4399  	MOVQ 104(SP), R12
  4400  	MOVQ 152(SP), R13
  4401  	MOVQ 160(SP), R14
  4402  	XORQ DX, R11
  4403  	ROLQ $0x06, R11
  4404  	XORQ R8, R12
  4405  	ROLQ $0x19, R12
  4406  	MOVQ R11, AX
  4407  	ORQ  R12, AX
  4408  	XORQ CX, R10
  4409  	ROLQ $0x01, R10
  4410  	XORQ R10, AX
  4411  	MOVQ AX, 80(DI)
  4412  	XORQ AX, SI
  4413  	XORQ R9, R13
  4414  	ROLQ $0x08, R13
  4415  	MOVQ R12, AX
  4416  	ANDQ R13, AX
  4417  	XORQ R11, AX
  4418  	MOVQ AX, 88(DI)
  4419  	XORQ AX, BP
  4420  	XORQ BX, R14
  4421  	ROLQ $0x12, R14
  4422  	NOTQ R13
  4423  	MOVQ R13, AX
  4424  	ANDQ R14, AX
  4425  	XORQ R12, AX
  4426  	MOVQ AX, 96(DI)
  4427  	MOVQ R14, AX
  4428  	ORQ  R10, AX
  4429  	XORQ R13, AX
  4430  	MOVQ AX, 104(DI)
  4431  	ANDQ R11, R10
  4432  	XORQ R14, R10
  4433  	MOVQ R10, 112(DI)
  4434  	XORQ R10, R15
  4435  
  4436  	// Result m
  4437  	MOVQ 40(SP), R11
  4438  	XORQ BX, R11
  4439  	MOVQ 88(SP), R12
  4440  	ROLQ $0x24, R11
  4441  	XORQ CX, R12
  4442  	MOVQ 32(SP), R10
  4443  	ROLQ $0x0a, R12
  4444  	MOVQ R11, AX
  4445  	MOVQ 136(SP), R13
  4446  	ANDQ R12, AX
  4447  	XORQ R9, R10
  4448  	MOVQ 184(SP), R14
  4449  	ROLQ $0x1b, R10
  4450  	XORQ R10, AX
  4451  	MOVQ AX, 120(DI)
  4452  	XORQ AX, SI
  4453  	XORQ DX, R13
  4454  	ROLQ $0x0f, R13
  4455  	MOVQ R12, AX
  4456  	ORQ  R13, AX
  4457  	XORQ R11, AX
  4458  	MOVQ AX, 128(DI)
  4459  	XORQ AX, BP
  4460  	XORQ R8, R14
  4461  	ROLQ $0x38, R14
  4462  	NOTQ R13
  4463  	MOVQ R13, AX
  4464  	ORQ  R14, AX
  4465  	XORQ R12, AX
  4466  	MOVQ AX, 136(DI)
  4467  	ORQ  R10, R11
  4468  	XORQ R14, R11
  4469  	MOVQ R11, 152(DI)
  4470  	ANDQ R10, R14
  4471  	XORQ R13, R14
  4472  	MOVQ R14, 144(DI)
  4473  	XORQ R11, R15
  4474  
  4475  	// Result s
  4476  	MOVQ 16(SP), R10
  4477  	MOVQ 64(SP), R11
  4478  	MOVQ 112(SP), R12
  4479  	XORQ DX, R10
  4480  	MOVQ 120(SP), R13
  4481  	ROLQ $0x3e, R10
  4482  	XORQ R8, R11
  4483  	MOVQ 168(SP), R14
  4484  	ROLQ $0x37, R11
  4485  	XORQ R9, R12
  4486  	MOVQ R10, R9
  4487  	XORQ CX, R14
  4488  	ROLQ $0x02, R14
  4489  	ANDQ R11, R9
  4490  	XORQ R14, R9
  4491  	MOVQ R9, 192(DI)
  4492  	ROLQ $0x27, R12
  4493  	XORQ R9, R15
  4494  	NOTQ R11
  4495  	XORQ BX, R13
  4496  	MOVQ R11, BX
  4497  	ANDQ R12, BX
  4498  	XORQ R10, BX
  4499  	MOVQ BX, 160(DI)
  4500  	XORQ BX, SI
  4501  	ROLQ $0x29, R13
  4502  	MOVQ R12, CX
  4503  	ORQ  R13, CX
  4504  	XORQ R11, CX
  4505  	MOVQ CX, 168(DI)
  4506  	XORQ CX, BP
  4507  	MOVQ R13, DX
  4508  	MOVQ R14, R8
  4509  	ANDQ R14, DX
  4510  	ORQ  R10, R8
  4511  	XORQ R12, DX
  4512  	XORQ R13, R8
  4513  	MOVQ DX, 176(DI)
  4514  	MOVQ R8, 184(DI)
  4515  
  4516  	// Prepare round
  4517  	MOVQ BP, BX
  4518  	ROLQ $0x01, BX
  4519  	MOVQ 16(DI), R12
  4520  	XORQ 56(DI), DX
  4521  	XORQ R15, BX
  4522  	XORQ 96(DI), R12
  4523  	XORQ 136(DI), DX
  4524  	XORQ DX, R12
  4525  	MOVQ R12, CX
  4526  	ROLQ $0x01, CX
  4527  	MOVQ 24(DI), R13
  4528  	XORQ 64(DI), R8
  4529  	XORQ SI, CX
  4530  	XORQ 104(DI), R13
  4531  	XORQ 144(DI), R8
  4532  	XORQ R8, R13
  4533  	MOVQ R13, DX
  4534  	ROLQ $0x01, DX
  4535  	MOVQ R15, R8
  4536  	XORQ BP, DX
  4537  	ROLQ $0x01, R8
  4538  	MOVQ SI, R9
  4539  	XORQ R12, R8
  4540  	ROLQ $0x01, R9
  4541  
  4542  	// Result b
  4543  	MOVQ (DI), R10
  4544  	MOVQ 48(DI), R11
  4545  	XORQ R13, R9
  4546  	MOVQ 96(DI), R12
  4547  	MOVQ 144(DI), R13
  4548  	MOVQ 192(DI), R14
  4549  	XORQ CX, R11
  4550  	ROLQ $0x2c, R11
  4551  	XORQ DX, R12
  4552  	XORQ BX, R10
  4553  	ROLQ $0x2b, R12
  4554  	MOVQ R11, SI
  4555  	MOVQ $0x8000000080008081, AX
  4556  	ORQ  R12, SI
  4557  	XORQ R10, AX
  4558  	XORQ AX, SI
  4559  	MOVQ SI, (SP)
  4560  	XORQ R9, R14
  4561  	ROLQ $0x0e, R14
  4562  	MOVQ R10, R15
  4563  	ANDQ R11, R15
  4564  	XORQ R14, R15
  4565  	MOVQ R15, 32(SP)
  4566  	XORQ R8, R13
  4567  	ROLQ $0x15, R13
  4568  	MOVQ R13, AX
  4569  	ANDQ R14, AX
  4570  	XORQ R12, AX
  4571  	MOVQ AX, 16(SP)
  4572  	NOTQ R12
  4573  	ORQ  R10, R14
  4574  	ORQ  R13, R12
  4575  	XORQ R13, R14
  4576  	XORQ R11, R12
  4577  	MOVQ R14, 24(SP)
  4578  	MOVQ R12, 8(SP)
  4579  	MOVQ R12, BP
  4580  
  4581  	// Result g
  4582  	MOVQ 72(DI), R11
  4583  	XORQ R9, R11
  4584  	MOVQ 80(DI), R12
  4585  	ROLQ $0x14, R11
  4586  	XORQ BX, R12
  4587  	ROLQ $0x03, R12
  4588  	MOVQ 24(DI), R10
  4589  	MOVQ R11, AX
  4590  	ORQ  R12, AX
  4591  	XORQ R8, R10
  4592  	MOVQ 128(DI), R13
  4593  	MOVQ 176(DI), R14
  4594  	ROLQ $0x1c, R10
  4595  	XORQ R10, AX
  4596  	MOVQ AX, 40(SP)
  4597  	XORQ AX, SI
  4598  	XORQ CX, R13
  4599  	ROLQ $0x2d, R13
  4600  	MOVQ R12, AX
  4601  	ANDQ R13, AX
  4602  	XORQ R11, AX
  4603  	MOVQ AX, 48(SP)
  4604  	XORQ AX, BP
  4605  	XORQ DX, R14
  4606  	ROLQ $0x3d, R14
  4607  	MOVQ R14, AX
  4608  	ORQ  R10, AX
  4609  	XORQ R13, AX
  4610  	MOVQ AX, 64(SP)
  4611  	ANDQ R11, R10
  4612  	XORQ R14, R10
  4613  	MOVQ R10, 72(SP)
  4614  	NOTQ R14
  4615  	XORQ R10, R15
  4616  	ORQ  R14, R13
  4617  	XORQ R12, R13
  4618  	MOVQ R13, 56(SP)
  4619  
  4620  	// Result k
  4621  	MOVQ 8(DI), R10
  4622  	MOVQ 56(DI), R11
  4623  	MOVQ 104(DI), R12
  4624  	MOVQ 152(DI), R13
  4625  	MOVQ 160(DI), R14
  4626  	XORQ DX, R11
  4627  	ROLQ $0x06, R11
  4628  	XORQ R8, R12
  4629  	ROLQ $0x19, R12
  4630  	MOVQ R11, AX
  4631  	ORQ  R12, AX
  4632  	XORQ CX, R10
  4633  	ROLQ $0x01, R10
  4634  	XORQ R10, AX
  4635  	MOVQ AX, 80(SP)
  4636  	XORQ AX, SI
  4637  	XORQ R9, R13
  4638  	ROLQ $0x08, R13
  4639  	MOVQ R12, AX
  4640  	ANDQ R13, AX
  4641  	XORQ R11, AX
  4642  	MOVQ AX, 88(SP)
  4643  	XORQ AX, BP
  4644  	XORQ BX, R14
  4645  	ROLQ $0x12, R14
  4646  	NOTQ R13
  4647  	MOVQ R13, AX
  4648  	ANDQ R14, AX
  4649  	XORQ R12, AX
  4650  	MOVQ AX, 96(SP)
  4651  	MOVQ R14, AX
  4652  	ORQ  R10, AX
  4653  	XORQ R13, AX
  4654  	MOVQ AX, 104(SP)
  4655  	ANDQ R11, R10
  4656  	XORQ R14, R10
  4657  	MOVQ R10, 112(SP)
  4658  	XORQ R10, R15
  4659  
  4660  	// Result m
  4661  	MOVQ 40(DI), R11
  4662  	XORQ BX, R11
  4663  	MOVQ 88(DI), R12
  4664  	ROLQ $0x24, R11
  4665  	XORQ CX, R12
  4666  	MOVQ 32(DI), R10
  4667  	ROLQ $0x0a, R12
  4668  	MOVQ R11, AX
  4669  	MOVQ 136(DI), R13
  4670  	ANDQ R12, AX
  4671  	XORQ R9, R10
  4672  	MOVQ 184(DI), R14
  4673  	ROLQ $0x1b, R10
  4674  	XORQ R10, AX
  4675  	MOVQ AX, 120(SP)
  4676  	XORQ AX, SI
  4677  	XORQ DX, R13
  4678  	ROLQ $0x0f, R13
  4679  	MOVQ R12, AX
  4680  	ORQ  R13, AX
  4681  	XORQ R11, AX
  4682  	MOVQ AX, 128(SP)
  4683  	XORQ AX, BP
  4684  	XORQ R8, R14
  4685  	ROLQ $0x38, R14
  4686  	NOTQ R13
  4687  	MOVQ R13, AX
  4688  	ORQ  R14, AX
  4689  	XORQ R12, AX
  4690  	MOVQ AX, 136(SP)
  4691  	ORQ  R10, R11
  4692  	XORQ R14, R11
  4693  	MOVQ R11, 152(SP)
  4694  	ANDQ R10, R14
  4695  	XORQ R13, R14
  4696  	MOVQ R14, 144(SP)
  4697  	XORQ R11, R15
  4698  
  4699  	// Result s
  4700  	MOVQ 16(DI), R10
  4701  	MOVQ 64(DI), R11
  4702  	MOVQ 112(DI), R12
  4703  	XORQ DX, R10
  4704  	MOVQ 120(DI), R13
  4705  	ROLQ $0x3e, R10
  4706  	XORQ R8, R11
  4707  	MOVQ 168(DI), R14
  4708  	ROLQ $0x37, R11
  4709  	XORQ R9, R12
  4710  	MOVQ R10, R9
  4711  	XORQ CX, R14
  4712  	ROLQ $0x02, R14
  4713  	ANDQ R11, R9
  4714  	XORQ R14, R9
  4715  	MOVQ R9, 192(SP)
  4716  	ROLQ $0x27, R12
  4717  	XORQ R9, R15
  4718  	NOTQ R11
  4719  	XORQ BX, R13
  4720  	MOVQ R11, BX
  4721  	ANDQ R12, BX
  4722  	XORQ R10, BX
  4723  	MOVQ BX, 160(SP)
  4724  	XORQ BX, SI
  4725  	ROLQ $0x29, R13
  4726  	MOVQ R12, CX
  4727  	ORQ  R13, CX
  4728  	XORQ R11, CX
  4729  	MOVQ CX, 168(SP)
  4730  	XORQ CX, BP
  4731  	MOVQ R13, DX
  4732  	MOVQ R14, R8
  4733  	ANDQ R14, DX
  4734  	ORQ  R10, R8
  4735  	XORQ R12, DX
  4736  	XORQ R13, R8
  4737  	MOVQ DX, 176(SP)
  4738  	MOVQ R8, 184(SP)
  4739  
  4740  	// Prepare round
  4741  	MOVQ BP, BX
  4742  	ROLQ $0x01, BX
  4743  	MOVQ 16(SP), R12
  4744  	XORQ 56(SP), DX
  4745  	XORQ R15, BX
  4746  	XORQ 96(SP), R12
  4747  	XORQ 136(SP), DX
  4748  	XORQ DX, R12
  4749  	MOVQ R12, CX
  4750  	ROLQ $0x01, CX
  4751  	MOVQ 24(SP), R13
  4752  	XORQ 64(SP), R8
  4753  	XORQ SI, CX
  4754  	XORQ 104(SP), R13
  4755  	XORQ 144(SP), R8
  4756  	XORQ R8, R13
  4757  	MOVQ R13, DX
  4758  	ROLQ $0x01, DX
  4759  	MOVQ R15, R8
  4760  	XORQ BP, DX
  4761  	ROLQ $0x01, R8
  4762  	MOVQ SI, R9
  4763  	XORQ R12, R8
  4764  	ROLQ $0x01, R9
  4765  
  4766  	// Result b
  4767  	MOVQ (SP), R10
  4768  	MOVQ 48(SP), R11
  4769  	XORQ R13, R9
  4770  	MOVQ 96(SP), R12
  4771  	MOVQ 144(SP), R13
  4772  	MOVQ 192(SP), R14
  4773  	XORQ CX, R11
  4774  	ROLQ $0x2c, R11
  4775  	XORQ DX, R12
  4776  	XORQ BX, R10
  4777  	ROLQ $0x2b, R12
  4778  	MOVQ R11, SI
  4779  	MOVQ $0x8000000000008080, AX
  4780  	ORQ  R12, SI
  4781  	XORQ R10, AX
  4782  	XORQ AX, SI
  4783  	MOVQ SI, (DI)
  4784  	XORQ R9, R14
  4785  	ROLQ $0x0e, R14
  4786  	MOVQ R10, R15
  4787  	ANDQ R11, R15
  4788  	XORQ R14, R15
  4789  	MOVQ R15, 32(DI)
  4790  	XORQ R8, R13
  4791  	ROLQ $0x15, R13
  4792  	MOVQ R13, AX
  4793  	ANDQ R14, AX
  4794  	XORQ R12, AX
  4795  	MOVQ AX, 16(DI)
  4796  	NOTQ R12
  4797  	ORQ  R10, R14
  4798  	ORQ  R13, R12
  4799  	XORQ R13, R14
  4800  	XORQ R11, R12
  4801  	MOVQ R14, 24(DI)
  4802  	MOVQ R12, 8(DI)
  4803  	MOVQ R12, BP
  4804  
  4805  	// Result g
  4806  	MOVQ 72(SP), R11
  4807  	XORQ R9, R11
  4808  	MOVQ 80(SP), R12
  4809  	ROLQ $0x14, R11
  4810  	XORQ BX, R12
  4811  	ROLQ $0x03, R12
  4812  	MOVQ 24(SP), R10
  4813  	MOVQ R11, AX
  4814  	ORQ  R12, AX
  4815  	XORQ R8, R10
  4816  	MOVQ 128(SP), R13
  4817  	MOVQ 176(SP), R14
  4818  	ROLQ $0x1c, R10
  4819  	XORQ R10, AX
  4820  	MOVQ AX, 40(DI)
  4821  	XORQ AX, SI
  4822  	XORQ CX, R13
  4823  	ROLQ $0x2d, R13
  4824  	MOVQ R12, AX
  4825  	ANDQ R13, AX
  4826  	XORQ R11, AX
  4827  	MOVQ AX, 48(DI)
  4828  	XORQ AX, BP
  4829  	XORQ DX, R14
  4830  	ROLQ $0x3d, R14
  4831  	MOVQ R14, AX
  4832  	ORQ  R10, AX
  4833  	XORQ R13, AX
  4834  	MOVQ AX, 64(DI)
  4835  	ANDQ R11, R10
  4836  	XORQ R14, R10
  4837  	MOVQ R10, 72(DI)
  4838  	NOTQ R14
  4839  	XORQ R10, R15
  4840  	ORQ  R14, R13
  4841  	XORQ R12, R13
  4842  	MOVQ R13, 56(DI)
  4843  
  4844  	// Result k
  4845  	MOVQ 8(SP), R10
  4846  	MOVQ 56(SP), R11
  4847  	MOVQ 104(SP), R12
  4848  	MOVQ 152(SP), R13
  4849  	MOVQ 160(SP), R14
  4850  	XORQ DX, R11
  4851  	ROLQ $0x06, R11
  4852  	XORQ R8, R12
  4853  	ROLQ $0x19, R12
  4854  	MOVQ R11, AX
  4855  	ORQ  R12, AX
  4856  	XORQ CX, R10
  4857  	ROLQ $0x01, R10
  4858  	XORQ R10, AX
  4859  	MOVQ AX, 80(DI)
  4860  	XORQ AX, SI
  4861  	XORQ R9, R13
  4862  	ROLQ $0x08, R13
  4863  	MOVQ R12, AX
  4864  	ANDQ R13, AX
  4865  	XORQ R11, AX
  4866  	MOVQ AX, 88(DI)
  4867  	XORQ AX, BP
  4868  	XORQ BX, R14
  4869  	ROLQ $0x12, R14
  4870  	NOTQ R13
  4871  	MOVQ R13, AX
  4872  	ANDQ R14, AX
  4873  	XORQ R12, AX
  4874  	MOVQ AX, 96(DI)
  4875  	MOVQ R14, AX
  4876  	ORQ  R10, AX
  4877  	XORQ R13, AX
  4878  	MOVQ AX, 104(DI)
  4879  	ANDQ R11, R10
  4880  	XORQ R14, R10
  4881  	MOVQ R10, 112(DI)
  4882  	XORQ R10, R15
  4883  
  4884  	// Result m
  4885  	MOVQ 40(SP), R11
  4886  	XORQ BX, R11
  4887  	MOVQ 88(SP), R12
  4888  	ROLQ $0x24, R11
  4889  	XORQ CX, R12
  4890  	MOVQ 32(SP), R10
  4891  	ROLQ $0x0a, R12
  4892  	MOVQ R11, AX
  4893  	MOVQ 136(SP), R13
  4894  	ANDQ R12, AX
  4895  	XORQ R9, R10
  4896  	MOVQ 184(SP), R14
  4897  	ROLQ $0x1b, R10
  4898  	XORQ R10, AX
  4899  	MOVQ AX, 120(DI)
  4900  	XORQ AX, SI
  4901  	XORQ DX, R13
  4902  	ROLQ $0x0f, R13
  4903  	MOVQ R12, AX
  4904  	ORQ  R13, AX
  4905  	XORQ R11, AX
  4906  	MOVQ AX, 128(DI)
  4907  	XORQ AX, BP
  4908  	XORQ R8, R14
  4909  	ROLQ $0x38, R14
  4910  	NOTQ R13
  4911  	MOVQ R13, AX
  4912  	ORQ  R14, AX
  4913  	XORQ R12, AX
  4914  	MOVQ AX, 136(DI)
  4915  	ORQ  R10, R11
  4916  	XORQ R14, R11
  4917  	MOVQ R11, 152(DI)
  4918  	ANDQ R10, R14
  4919  	XORQ R13, R14
  4920  	MOVQ R14, 144(DI)
  4921  	XORQ R11, R15
  4922  
  4923  	// Result s
  4924  	MOVQ 16(SP), R10
  4925  	MOVQ 64(SP), R11
  4926  	MOVQ 112(SP), R12
  4927  	XORQ DX, R10
  4928  	MOVQ 120(SP), R13
  4929  	ROLQ $0x3e, R10
  4930  	XORQ R8, R11
  4931  	MOVQ 168(SP), R14
  4932  	ROLQ $0x37, R11
  4933  	XORQ R9, R12
  4934  	MOVQ R10, R9
  4935  	XORQ CX, R14
  4936  	ROLQ $0x02, R14
  4937  	ANDQ R11, R9
  4938  	XORQ R14, R9
  4939  	MOVQ R9, 192(DI)
  4940  	ROLQ $0x27, R12
  4941  	XORQ R9, R15
  4942  	NOTQ R11
  4943  	XORQ BX, R13
  4944  	MOVQ R11, BX
  4945  	ANDQ R12, BX
  4946  	XORQ R10, BX
  4947  	MOVQ BX, 160(DI)
  4948  	XORQ BX, SI
  4949  	ROLQ $0x29, R13
  4950  	MOVQ R12, CX
  4951  	ORQ  R13, CX
  4952  	XORQ R11, CX
  4953  	MOVQ CX, 168(DI)
  4954  	XORQ CX, BP
  4955  	MOVQ R13, DX
  4956  	MOVQ R14, R8
  4957  	ANDQ R14, DX
  4958  	ORQ  R10, R8
  4959  	XORQ R12, DX
  4960  	XORQ R13, R8
  4961  	MOVQ DX, 176(DI)
  4962  	MOVQ R8, 184(DI)
  4963  
  4964  	// Prepare round
  4965  	MOVQ BP, BX
  4966  	ROLQ $0x01, BX
  4967  	MOVQ 16(DI), R12
  4968  	XORQ 56(DI), DX
  4969  	XORQ R15, BX
  4970  	XORQ 96(DI), R12
  4971  	XORQ 136(DI), DX
  4972  	XORQ DX, R12
  4973  	MOVQ R12, CX
  4974  	ROLQ $0x01, CX
  4975  	MOVQ 24(DI), R13
  4976  	XORQ 64(DI), R8
  4977  	XORQ SI, CX
  4978  	XORQ 104(DI), R13
  4979  	XORQ 144(DI), R8
  4980  	XORQ R8, R13
  4981  	MOVQ R13, DX
  4982  	ROLQ $0x01, DX
  4983  	MOVQ R15, R8
  4984  	XORQ BP, DX
  4985  	ROLQ $0x01, R8
  4986  	MOVQ SI, R9
  4987  	XORQ R12, R8
  4988  	ROLQ $0x01, R9
  4989  
  4990  	// Result b
  4991  	MOVQ (DI), R10
  4992  	MOVQ 48(DI), R11
  4993  	XORQ R13, R9
  4994  	MOVQ 96(DI), R12
  4995  	MOVQ 144(DI), R13
  4996  	MOVQ 192(DI), R14
  4997  	XORQ CX, R11
  4998  	ROLQ $0x2c, R11
  4999  	XORQ DX, R12
  5000  	XORQ BX, R10
  5001  	ROLQ $0x2b, R12
  5002  	MOVQ R11, SI
  5003  	MOVQ $0x0000000080000001, AX
  5004  	ORQ  R12, SI
  5005  	XORQ R10, AX
  5006  	XORQ AX, SI
  5007  	MOVQ SI, (SP)
  5008  	XORQ R9, R14
  5009  	ROLQ $0x0e, R14
  5010  	MOVQ R10, R15
  5011  	ANDQ R11, R15
  5012  	XORQ R14, R15
  5013  	MOVQ R15, 32(SP)
  5014  	XORQ R8, R13
  5015  	ROLQ $0x15, R13
  5016  	MOVQ R13, AX
  5017  	ANDQ R14, AX
  5018  	XORQ R12, AX
  5019  	MOVQ AX, 16(SP)
  5020  	NOTQ R12
  5021  	ORQ  R10, R14
  5022  	ORQ  R13, R12
  5023  	XORQ R13, R14
  5024  	XORQ R11, R12
  5025  	MOVQ R14, 24(SP)
  5026  	MOVQ R12, 8(SP)
  5027  	MOVQ R12, BP
  5028  
  5029  	// Result g
  5030  	MOVQ 72(DI), R11
  5031  	XORQ R9, R11
  5032  	MOVQ 80(DI), R12
  5033  	ROLQ $0x14, R11
  5034  	XORQ BX, R12
  5035  	ROLQ $0x03, R12
  5036  	MOVQ 24(DI), R10
  5037  	MOVQ R11, AX
  5038  	ORQ  R12, AX
  5039  	XORQ R8, R10
  5040  	MOVQ 128(DI), R13
  5041  	MOVQ 176(DI), R14
  5042  	ROLQ $0x1c, R10
  5043  	XORQ R10, AX
  5044  	MOVQ AX, 40(SP)
  5045  	XORQ AX, SI
  5046  	XORQ CX, R13
  5047  	ROLQ $0x2d, R13
  5048  	MOVQ R12, AX
  5049  	ANDQ R13, AX
  5050  	XORQ R11, AX
  5051  	MOVQ AX, 48(SP)
  5052  	XORQ AX, BP
  5053  	XORQ DX, R14
  5054  	ROLQ $0x3d, R14
  5055  	MOVQ R14, AX
  5056  	ORQ  R10, AX
  5057  	XORQ R13, AX
  5058  	MOVQ AX, 64(SP)
  5059  	ANDQ R11, R10
  5060  	XORQ R14, R10
  5061  	MOVQ R10, 72(SP)
  5062  	NOTQ R14
  5063  	XORQ R10, R15
  5064  	ORQ  R14, R13
  5065  	XORQ R12, R13
  5066  	MOVQ R13, 56(SP)
  5067  
  5068  	// Result k
  5069  	MOVQ 8(DI), R10
  5070  	MOVQ 56(DI), R11
  5071  	MOVQ 104(DI), R12
  5072  	MOVQ 152(DI), R13
  5073  	MOVQ 160(DI), R14
  5074  	XORQ DX, R11
  5075  	ROLQ $0x06, R11
  5076  	XORQ R8, R12
  5077  	ROLQ $0x19, R12
  5078  	MOVQ R11, AX
  5079  	ORQ  R12, AX
  5080  	XORQ CX, R10
  5081  	ROLQ $0x01, R10
  5082  	XORQ R10, AX
  5083  	MOVQ AX, 80(SP)
  5084  	XORQ AX, SI
  5085  	XORQ R9, R13
  5086  	ROLQ $0x08, R13
  5087  	MOVQ R12, AX
  5088  	ANDQ R13, AX
  5089  	XORQ R11, AX
  5090  	MOVQ AX, 88(SP)
  5091  	XORQ AX, BP
  5092  	XORQ BX, R14
  5093  	ROLQ $0x12, R14
  5094  	NOTQ R13
  5095  	MOVQ R13, AX
  5096  	ANDQ R14, AX
  5097  	XORQ R12, AX
  5098  	MOVQ AX, 96(SP)
  5099  	MOVQ R14, AX
  5100  	ORQ  R10, AX
  5101  	XORQ R13, AX
  5102  	MOVQ AX, 104(SP)
  5103  	ANDQ R11, R10
  5104  	XORQ R14, R10
  5105  	MOVQ R10, 112(SP)
  5106  	XORQ R10, R15
  5107  
  5108  	// Result m
  5109  	MOVQ 40(DI), R11
  5110  	XORQ BX, R11
  5111  	MOVQ 88(DI), R12
  5112  	ROLQ $0x24, R11
  5113  	XORQ CX, R12
  5114  	MOVQ 32(DI), R10
  5115  	ROLQ $0x0a, R12
  5116  	MOVQ R11, AX
  5117  	MOVQ 136(DI), R13
  5118  	ANDQ R12, AX
  5119  	XORQ R9, R10
  5120  	MOVQ 184(DI), R14
  5121  	ROLQ $0x1b, R10
  5122  	XORQ R10, AX
  5123  	MOVQ AX, 120(SP)
  5124  	XORQ AX, SI
  5125  	XORQ DX, R13
  5126  	ROLQ $0x0f, R13
  5127  	MOVQ R12, AX
  5128  	ORQ  R13, AX
  5129  	XORQ R11, AX
  5130  	MOVQ AX, 128(SP)
  5131  	XORQ AX, BP
  5132  	XORQ R8, R14
  5133  	ROLQ $0x38, R14
  5134  	NOTQ R13
  5135  	MOVQ R13, AX
  5136  	ORQ  R14, AX
  5137  	XORQ R12, AX
  5138  	MOVQ AX, 136(SP)
  5139  	ORQ  R10, R11
  5140  	XORQ R14, R11
  5141  	MOVQ R11, 152(SP)
  5142  	ANDQ R10, R14
  5143  	XORQ R13, R14
  5144  	MOVQ R14, 144(SP)
  5145  	XORQ R11, R15
  5146  
  5147  	// Result s
  5148  	MOVQ 16(DI), R10
  5149  	MOVQ 64(DI), R11
  5150  	MOVQ 112(DI), R12
  5151  	XORQ DX, R10
  5152  	MOVQ 120(DI), R13
  5153  	ROLQ $0x3e, R10
  5154  	XORQ R8, R11
  5155  	MOVQ 168(DI), R14
  5156  	ROLQ $0x37, R11
  5157  	XORQ R9, R12
  5158  	MOVQ R10, R9
  5159  	XORQ CX, R14
  5160  	ROLQ $0x02, R14
  5161  	ANDQ R11, R9
  5162  	XORQ R14, R9
  5163  	MOVQ R9, 192(SP)
  5164  	ROLQ $0x27, R12
  5165  	XORQ R9, R15
  5166  	NOTQ R11
  5167  	XORQ BX, R13
  5168  	MOVQ R11, BX
  5169  	ANDQ R12, BX
  5170  	XORQ R10, BX
  5171  	MOVQ BX, 160(SP)
  5172  	XORQ BX, SI
  5173  	ROLQ $0x29, R13
  5174  	MOVQ R12, CX
  5175  	ORQ  R13, CX
  5176  	XORQ R11, CX
  5177  	MOVQ CX, 168(SP)
  5178  	XORQ CX, BP
  5179  	MOVQ R13, DX
  5180  	MOVQ R14, R8
  5181  	ANDQ R14, DX
  5182  	ORQ  R10, R8
  5183  	XORQ R12, DX
  5184  	XORQ R13, R8
  5185  	MOVQ DX, 176(SP)
  5186  	MOVQ R8, 184(SP)
  5187  
  5188  	// Prepare round
  5189  	MOVQ BP, BX
  5190  	ROLQ $0x01, BX
  5191  	MOVQ 16(SP), R12
  5192  	XORQ 56(SP), DX
  5193  	XORQ R15, BX
  5194  	XORQ 96(SP), R12
  5195  	XORQ 136(SP), DX
  5196  	XORQ DX, R12
  5197  	MOVQ R12, CX
  5198  	ROLQ $0x01, CX
  5199  	MOVQ 24(SP), R13
  5200  	XORQ 64(SP), R8
  5201  	XORQ SI, CX
  5202  	XORQ 104(SP), R13
  5203  	XORQ 144(SP), R8
  5204  	XORQ R8, R13
  5205  	MOVQ R13, DX
  5206  	ROLQ $0x01, DX
  5207  	MOVQ R15, R8
  5208  	XORQ BP, DX
  5209  	ROLQ $0x01, R8
  5210  	MOVQ SI, R9
  5211  	XORQ R12, R8
  5212  	ROLQ $0x01, R9
  5213  
  5214  	// Result b
  5215  	MOVQ (SP), R10
  5216  	MOVQ 48(SP), R11
  5217  	XORQ R13, R9
  5218  	MOVQ 96(SP), R12
  5219  	MOVQ 144(SP), R13
  5220  	MOVQ 192(SP), R14
  5221  	XORQ CX, R11
  5222  	ROLQ $0x2c, R11
  5223  	XORQ DX, R12
  5224  	XORQ BX, R10
  5225  	ROLQ $0x2b, R12
  5226  	MOVQ R11, SI
  5227  	MOVQ $0x8000000080008008, AX
  5228  	ORQ  R12, SI
  5229  	XORQ R10, AX
  5230  	XORQ AX, SI
  5231  	MOVQ SI, (DI)
  5232  	XORQ R9, R14
  5233  	ROLQ $0x0e, R14
  5234  	MOVQ R10, R15
  5235  	ANDQ R11, R15
  5236  	XORQ R14, R15
  5237  	MOVQ R15, 32(DI)
  5238  	XORQ R8, R13
  5239  	ROLQ $0x15, R13
  5240  	MOVQ R13, AX
  5241  	ANDQ R14, AX
  5242  	XORQ R12, AX
  5243  	MOVQ AX, 16(DI)
  5244  	NOTQ R12
  5245  	ORQ  R10, R14
  5246  	ORQ  R13, R12
  5247  	XORQ R13, R14
  5248  	XORQ R11, R12
  5249  	MOVQ R14, 24(DI)
  5250  	MOVQ R12, 8(DI)
  5251  	NOP
  5252  
  5253  	// Result g
  5254  	MOVQ 72(SP), R11
  5255  	XORQ R9, R11
  5256  	MOVQ 80(SP), R12
  5257  	ROLQ $0x14, R11
  5258  	XORQ BX, R12
  5259  	ROLQ $0x03, R12
  5260  	MOVQ 24(SP), R10
  5261  	MOVQ R11, AX
  5262  	ORQ  R12, AX
  5263  	XORQ R8, R10
  5264  	MOVQ 128(SP), R13
  5265  	MOVQ 176(SP), R14
  5266  	ROLQ $0x1c, R10
  5267  	XORQ R10, AX
  5268  	MOVQ AX, 40(DI)
  5269  	NOP
  5270  	XORQ CX, R13
  5271  	ROLQ $0x2d, R13
  5272  	MOVQ R12, AX
  5273  	ANDQ R13, AX
  5274  	XORQ R11, AX
  5275  	MOVQ AX, 48(DI)
  5276  	NOP
  5277  	XORQ DX, R14
  5278  	ROLQ $0x3d, R14
  5279  	MOVQ R14, AX
  5280  	ORQ  R10, AX
  5281  	XORQ R13, AX
  5282  	MOVQ AX, 64(DI)
  5283  	ANDQ R11, R10
  5284  	XORQ R14, R10
  5285  	MOVQ R10, 72(DI)
  5286  	NOTQ R14
  5287  	NOP
  5288  	ORQ  R14, R13
  5289  	XORQ R12, R13
  5290  	MOVQ R13, 56(DI)
  5291  
  5292  	// Result k
  5293  	MOVQ 8(SP), R10
  5294  	MOVQ 56(SP), R11
  5295  	MOVQ 104(SP), R12
  5296  	MOVQ 152(SP), R13
  5297  	MOVQ 160(SP), R14
  5298  	XORQ DX, R11
  5299  	ROLQ $0x06, R11
  5300  	XORQ R8, R12
  5301  	ROLQ $0x19, R12
  5302  	MOVQ R11, AX
  5303  	ORQ  R12, AX
  5304  	XORQ CX, R10
  5305  	ROLQ $0x01, R10
  5306  	XORQ R10, AX
  5307  	MOVQ AX, 80(DI)
  5308  	NOP
  5309  	XORQ R9, R13
  5310  	ROLQ $0x08, R13
  5311  	MOVQ R12, AX
  5312  	ANDQ R13, AX
  5313  	XORQ R11, AX
  5314  	MOVQ AX, 88(DI)
  5315  	NOP
  5316  	XORQ BX, R14
  5317  	ROLQ $0x12, R14
  5318  	NOTQ R13
  5319  	MOVQ R13, AX
  5320  	ANDQ R14, AX
  5321  	XORQ R12, AX
  5322  	MOVQ AX, 96(DI)
  5323  	MOVQ R14, AX
  5324  	ORQ  R10, AX
  5325  	XORQ R13, AX
  5326  	MOVQ AX, 104(DI)
  5327  	ANDQ R11, R10
  5328  	XORQ R14, R10
  5329  	MOVQ R10, 112(DI)
  5330  	NOP
  5331  
  5332  	// Result m
  5333  	MOVQ 40(SP), R11
  5334  	XORQ BX, R11
  5335  	MOVQ 88(SP), R12
  5336  	ROLQ $0x24, R11
  5337  	XORQ CX, R12
  5338  	MOVQ 32(SP), R10
  5339  	ROLQ $0x0a, R12
  5340  	MOVQ R11, AX
  5341  	MOVQ 136(SP), R13
  5342  	ANDQ R12, AX
  5343  	XORQ R9, R10
  5344  	MOVQ 184(SP), R14
  5345  	ROLQ $0x1b, R10
  5346  	XORQ R10, AX
  5347  	MOVQ AX, 120(DI)
  5348  	NOP
  5349  	XORQ DX, R13
  5350  	ROLQ $0x0f, R13
  5351  	MOVQ R12, AX
  5352  	ORQ  R13, AX
  5353  	XORQ R11, AX
  5354  	MOVQ AX, 128(DI)
  5355  	NOP
  5356  	XORQ R8, R14
  5357  	ROLQ $0x38, R14
  5358  	NOTQ R13
  5359  	MOVQ R13, AX
  5360  	ORQ  R14, AX
  5361  	XORQ R12, AX
  5362  	MOVQ AX, 136(DI)
  5363  	ORQ  R10, R11
  5364  	XORQ R14, R11
  5365  	MOVQ R11, 152(DI)
  5366  	ANDQ R10, R14
  5367  	XORQ R13, R14
  5368  	MOVQ R14, 144(DI)
  5369  	NOP
  5370  
  5371  	// Result s
  5372  	MOVQ 16(SP), R10
  5373  	MOVQ 64(SP), R11
  5374  	MOVQ 112(SP), R12
  5375  	XORQ DX, R10
  5376  	MOVQ 120(SP), R13
  5377  	ROLQ $0x3e, R10
  5378  	XORQ R8, R11
  5379  	MOVQ 168(SP), R14
  5380  	ROLQ $0x37, R11
  5381  	XORQ R9, R12
  5382  	MOVQ R10, R9
  5383  	XORQ CX, R14
  5384  	ROLQ $0x02, R14
  5385  	ANDQ R11, R9
  5386  	XORQ R14, R9
  5387  	MOVQ R9, 192(DI)
  5388  	ROLQ $0x27, R12
  5389  	NOP
  5390  	NOTQ R11
  5391  	XORQ BX, R13
  5392  	MOVQ R11, BX
  5393  	ANDQ R12, BX
  5394  	XORQ R10, BX
  5395  	MOVQ BX, 160(DI)
  5396  	NOP
  5397  	ROLQ $0x29, R13
  5398  	MOVQ R12, CX
  5399  	ORQ  R13, CX
  5400  	XORQ R11, CX
  5401  	MOVQ CX, 168(DI)
  5402  	NOP
  5403  	MOVQ R13, DX
  5404  	MOVQ R14, R8
  5405  	ANDQ R14, DX
  5406  	ORQ  R10, R8
  5407  	XORQ R12, DX
  5408  	XORQ R13, R8
  5409  	MOVQ DX, 176(DI)
  5410  	MOVQ R8, 184(DI)
  5411  
  5412  	// Revert the internal state to the user state
  5413  	NOTQ 8(DI)
  5414  	NOTQ 16(DI)
  5415  	NOTQ 64(DI)
  5416  	NOTQ 96(DI)
  5417  	NOTQ 136(DI)
  5418  	NOTQ 160(DI)
  5419  	RET
  5420  

View as plain text