sha3_amd64.s raw

   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