mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-05-24 08:49:29 +00:00
4611 lines
76 KiB
ArmAsm
4611 lines
76 KiB
ArmAsm
// Code generated by gen_keccakf_bmi2.go. DO NOT EDIT.
|
|
|
|
//go:build amd64 && !purego
|
|
|
|
#include "textflag.h"
|
|
|
|
// func keccakF1600BMI2(a *[200]byte, buf *byte)
|
|
TEXT ·keccakF1600BMI2(SB), NOSPLIT, $200-16
|
|
MOVQ a+0(FP), DI
|
|
MOVQ buf+8(FP), BX
|
|
TESTQ BX, BX
|
|
JZ rounds
|
|
|
|
// XOR 17 lanes (136 bytes) of buf into state.
|
|
MOVQ 0(BX), AX
|
|
XORQ AX, 0(DI)
|
|
MOVQ 8(BX), AX
|
|
XORQ AX, 8(DI)
|
|
MOVQ 16(BX), AX
|
|
XORQ AX, 16(DI)
|
|
MOVQ 24(BX), AX
|
|
XORQ AX, 24(DI)
|
|
MOVQ 32(BX), AX
|
|
XORQ AX, 32(DI)
|
|
MOVQ 40(BX), AX
|
|
XORQ AX, 40(DI)
|
|
MOVQ 48(BX), AX
|
|
XORQ AX, 48(DI)
|
|
MOVQ 56(BX), AX
|
|
XORQ AX, 56(DI)
|
|
MOVQ 64(BX), AX
|
|
XORQ AX, 64(DI)
|
|
MOVQ 72(BX), AX
|
|
XORQ AX, 72(DI)
|
|
MOVQ 80(BX), AX
|
|
XORQ AX, 80(DI)
|
|
MOVQ 88(BX), AX
|
|
XORQ AX, 88(DI)
|
|
MOVQ 96(BX), AX
|
|
XORQ AX, 96(DI)
|
|
MOVQ 104(BX), AX
|
|
XORQ AX, 104(DI)
|
|
MOVQ 112(BX), AX
|
|
XORQ AX, 112(DI)
|
|
MOVQ 120(BX), AX
|
|
XORQ AX, 120(DI)
|
|
MOVQ 128(BX), AX
|
|
XORQ AX, 128(DI)
|
|
|
|
rounds:
|
|
|
|
// Round 0
|
|
MOVQ $0x0000000000000001, R13
|
|
MOVQ 0(DI), AX
|
|
XORQ 40(DI), AX
|
|
XORQ 80(DI), AX
|
|
XORQ 120(DI), AX
|
|
XORQ 160(DI), AX
|
|
MOVQ 8(DI), BX
|
|
XORQ 48(DI), BX
|
|
XORQ 88(DI), BX
|
|
XORQ 128(DI), BX
|
|
XORQ 168(DI), BX
|
|
MOVQ 16(DI), CX
|
|
XORQ 56(DI), CX
|
|
XORQ 96(DI), CX
|
|
XORQ 136(DI), CX
|
|
XORQ 176(DI), CX
|
|
MOVQ 24(DI), DX
|
|
XORQ 64(DI), DX
|
|
XORQ 104(DI), DX
|
|
XORQ 144(DI), DX
|
|
XORQ 184(DI), DX
|
|
MOVQ 32(DI), SI
|
|
XORQ 72(DI), SI
|
|
XORQ 112(DI), SI
|
|
XORQ 152(DI), SI
|
|
XORQ 192(DI), SI
|
|
RORXQ $63, BX, R14
|
|
XORQ SI, R14
|
|
RORXQ $63, CX, R15
|
|
XORQ AX, R15
|
|
RORXQ $63, DX, BP
|
|
XORQ BX, BP
|
|
RORXQ $63, SI, R8
|
|
XORQ CX, R8
|
|
RORXQ $63, AX, R9
|
|
XORQ DX, R9
|
|
MOVQ R8, SI
|
|
MOVQ R9, DX
|
|
MOVQ 0(DI), R8
|
|
XORQ R14, R8
|
|
MOVQ 48(DI), R9
|
|
XORQ R15, R9
|
|
RORXQ $20, R9, R9
|
|
MOVQ 96(DI), R10
|
|
XORQ BP, R10
|
|
RORXQ $21, R10, R10
|
|
MOVQ 144(DI), R11
|
|
XORQ SI, R11
|
|
RORXQ $43, R11, R11
|
|
MOVQ 192(DI), R12
|
|
XORQ DX, R12
|
|
RORXQ $50, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
XORQ R13, AX
|
|
MOVQ AX, 0(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 8(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 16(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 24(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 32(SP)
|
|
MOVQ 24(DI), R8
|
|
XORQ SI, R8
|
|
RORXQ $36, R8, R8
|
|
MOVQ 72(DI), R9
|
|
XORQ DX, R9
|
|
RORXQ $44, R9, R9
|
|
MOVQ 80(DI), R10
|
|
XORQ R14, R10
|
|
RORXQ $61, R10, R10
|
|
MOVQ 128(DI), R11
|
|
XORQ R15, R11
|
|
RORXQ $19, R11, R11
|
|
MOVQ 176(DI), R12
|
|
XORQ BP, R12
|
|
RORXQ $3, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 40(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 48(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 56(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 64(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 72(SP)
|
|
MOVQ 8(DI), R8
|
|
XORQ R15, R8
|
|
RORXQ $63, R8, R8
|
|
MOVQ 56(DI), R9
|
|
XORQ BP, R9
|
|
RORXQ $58, R9, R9
|
|
MOVQ 104(DI), R10
|
|
XORQ SI, R10
|
|
RORXQ $39, R10, R10
|
|
MOVQ 152(DI), R11
|
|
XORQ DX, R11
|
|
RORXQ $56, R11, R11
|
|
MOVQ 160(DI), R12
|
|
XORQ R14, R12
|
|
RORXQ $46, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 80(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 88(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 96(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 104(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 112(SP)
|
|
MOVQ 32(DI), R8
|
|
XORQ DX, R8
|
|
RORXQ $37, R8, R8
|
|
MOVQ 40(DI), R9
|
|
XORQ R14, R9
|
|
RORXQ $28, R9, R9
|
|
MOVQ 88(DI), R10
|
|
XORQ R15, R10
|
|
RORXQ $54, R10, R10
|
|
MOVQ 136(DI), R11
|
|
XORQ BP, R11
|
|
RORXQ $49, R11, R11
|
|
MOVQ 184(DI), R12
|
|
XORQ SI, R12
|
|
RORXQ $8, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 120(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 128(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 136(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 144(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 152(SP)
|
|
MOVQ 16(DI), R8
|
|
XORQ BP, R8
|
|
RORXQ $2, R8, R8
|
|
MOVQ 64(DI), R9
|
|
XORQ SI, R9
|
|
RORXQ $9, R9, R9
|
|
MOVQ 112(DI), R10
|
|
XORQ DX, R10
|
|
RORXQ $25, R10, R10
|
|
MOVQ 120(DI), R11
|
|
XORQ R14, R11
|
|
RORXQ $23, R11, R11
|
|
MOVQ 168(DI), R12
|
|
XORQ R15, R12
|
|
RORXQ $62, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 160(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 168(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 176(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 184(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 192(SP)
|
|
|
|
// Round 1
|
|
MOVQ $0x0000000000008082, R13
|
|
MOVQ 0(SP), AX
|
|
XORQ 40(SP), AX
|
|
XORQ 80(SP), AX
|
|
XORQ 120(SP), AX
|
|
XORQ 160(SP), AX
|
|
MOVQ 8(SP), BX
|
|
XORQ 48(SP), BX
|
|
XORQ 88(SP), BX
|
|
XORQ 128(SP), BX
|
|
XORQ 168(SP), BX
|
|
MOVQ 16(SP), CX
|
|
XORQ 56(SP), CX
|
|
XORQ 96(SP), CX
|
|
XORQ 136(SP), CX
|
|
XORQ 176(SP), CX
|
|
MOVQ 24(SP), DX
|
|
XORQ 64(SP), DX
|
|
XORQ 104(SP), DX
|
|
XORQ 144(SP), DX
|
|
XORQ 184(SP), DX
|
|
MOVQ 32(SP), SI
|
|
XORQ 72(SP), SI
|
|
XORQ 112(SP), SI
|
|
XORQ 152(SP), SI
|
|
XORQ 192(SP), SI
|
|
RORXQ $63, BX, R14
|
|
XORQ SI, R14
|
|
RORXQ $63, CX, R15
|
|
XORQ AX, R15
|
|
RORXQ $63, DX, BP
|
|
XORQ BX, BP
|
|
RORXQ $63, SI, R8
|
|
XORQ CX, R8
|
|
RORXQ $63, AX, R9
|
|
XORQ DX, R9
|
|
MOVQ R8, SI
|
|
MOVQ R9, DX
|
|
MOVQ 0(SP), R8
|
|
XORQ R14, R8
|
|
MOVQ 48(SP), R9
|
|
XORQ R15, R9
|
|
RORXQ $20, R9, R9
|
|
MOVQ 96(SP), R10
|
|
XORQ BP, R10
|
|
RORXQ $21, R10, R10
|
|
MOVQ 144(SP), R11
|
|
XORQ SI, R11
|
|
RORXQ $43, R11, R11
|
|
MOVQ 192(SP), R12
|
|
XORQ DX, R12
|
|
RORXQ $50, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
XORQ R13, AX
|
|
MOVQ AX, 0(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 8(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 16(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 24(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 32(DI)
|
|
MOVQ 24(SP), R8
|
|
XORQ SI, R8
|
|
RORXQ $36, R8, R8
|
|
MOVQ 72(SP), R9
|
|
XORQ DX, R9
|
|
RORXQ $44, R9, R9
|
|
MOVQ 80(SP), R10
|
|
XORQ R14, R10
|
|
RORXQ $61, R10, R10
|
|
MOVQ 128(SP), R11
|
|
XORQ R15, R11
|
|
RORXQ $19, R11, R11
|
|
MOVQ 176(SP), R12
|
|
XORQ BP, R12
|
|
RORXQ $3, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 40(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 48(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 56(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 64(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 72(DI)
|
|
MOVQ 8(SP), R8
|
|
XORQ R15, R8
|
|
RORXQ $63, R8, R8
|
|
MOVQ 56(SP), R9
|
|
XORQ BP, R9
|
|
RORXQ $58, R9, R9
|
|
MOVQ 104(SP), R10
|
|
XORQ SI, R10
|
|
RORXQ $39, R10, R10
|
|
MOVQ 152(SP), R11
|
|
XORQ DX, R11
|
|
RORXQ $56, R11, R11
|
|
MOVQ 160(SP), R12
|
|
XORQ R14, R12
|
|
RORXQ $46, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 80(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 88(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 96(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 104(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 112(DI)
|
|
MOVQ 32(SP), R8
|
|
XORQ DX, R8
|
|
RORXQ $37, R8, R8
|
|
MOVQ 40(SP), R9
|
|
XORQ R14, R9
|
|
RORXQ $28, R9, R9
|
|
MOVQ 88(SP), R10
|
|
XORQ R15, R10
|
|
RORXQ $54, R10, R10
|
|
MOVQ 136(SP), R11
|
|
XORQ BP, R11
|
|
RORXQ $49, R11, R11
|
|
MOVQ 184(SP), R12
|
|
XORQ SI, R12
|
|
RORXQ $8, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 120(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 128(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 136(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 144(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 152(DI)
|
|
MOVQ 16(SP), R8
|
|
XORQ BP, R8
|
|
RORXQ $2, R8, R8
|
|
MOVQ 64(SP), R9
|
|
XORQ SI, R9
|
|
RORXQ $9, R9, R9
|
|
MOVQ 112(SP), R10
|
|
XORQ DX, R10
|
|
RORXQ $25, R10, R10
|
|
MOVQ 120(SP), R11
|
|
XORQ R14, R11
|
|
RORXQ $23, R11, R11
|
|
MOVQ 168(SP), R12
|
|
XORQ R15, R12
|
|
RORXQ $62, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 160(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 168(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 176(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 184(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 192(DI)
|
|
|
|
// Round 2
|
|
MOVQ $0x800000000000808a, R13
|
|
MOVQ 0(DI), AX
|
|
XORQ 40(DI), AX
|
|
XORQ 80(DI), AX
|
|
XORQ 120(DI), AX
|
|
XORQ 160(DI), AX
|
|
MOVQ 8(DI), BX
|
|
XORQ 48(DI), BX
|
|
XORQ 88(DI), BX
|
|
XORQ 128(DI), BX
|
|
XORQ 168(DI), BX
|
|
MOVQ 16(DI), CX
|
|
XORQ 56(DI), CX
|
|
XORQ 96(DI), CX
|
|
XORQ 136(DI), CX
|
|
XORQ 176(DI), CX
|
|
MOVQ 24(DI), DX
|
|
XORQ 64(DI), DX
|
|
XORQ 104(DI), DX
|
|
XORQ 144(DI), DX
|
|
XORQ 184(DI), DX
|
|
MOVQ 32(DI), SI
|
|
XORQ 72(DI), SI
|
|
XORQ 112(DI), SI
|
|
XORQ 152(DI), SI
|
|
XORQ 192(DI), SI
|
|
RORXQ $63, BX, R14
|
|
XORQ SI, R14
|
|
RORXQ $63, CX, R15
|
|
XORQ AX, R15
|
|
RORXQ $63, DX, BP
|
|
XORQ BX, BP
|
|
RORXQ $63, SI, R8
|
|
XORQ CX, R8
|
|
RORXQ $63, AX, R9
|
|
XORQ DX, R9
|
|
MOVQ R8, SI
|
|
MOVQ R9, DX
|
|
MOVQ 0(DI), R8
|
|
XORQ R14, R8
|
|
MOVQ 48(DI), R9
|
|
XORQ R15, R9
|
|
RORXQ $20, R9, R9
|
|
MOVQ 96(DI), R10
|
|
XORQ BP, R10
|
|
RORXQ $21, R10, R10
|
|
MOVQ 144(DI), R11
|
|
XORQ SI, R11
|
|
RORXQ $43, R11, R11
|
|
MOVQ 192(DI), R12
|
|
XORQ DX, R12
|
|
RORXQ $50, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
XORQ R13, AX
|
|
MOVQ AX, 0(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 8(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 16(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 24(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 32(SP)
|
|
MOVQ 24(DI), R8
|
|
XORQ SI, R8
|
|
RORXQ $36, R8, R8
|
|
MOVQ 72(DI), R9
|
|
XORQ DX, R9
|
|
RORXQ $44, R9, R9
|
|
MOVQ 80(DI), R10
|
|
XORQ R14, R10
|
|
RORXQ $61, R10, R10
|
|
MOVQ 128(DI), R11
|
|
XORQ R15, R11
|
|
RORXQ $19, R11, R11
|
|
MOVQ 176(DI), R12
|
|
XORQ BP, R12
|
|
RORXQ $3, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 40(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 48(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 56(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 64(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 72(SP)
|
|
MOVQ 8(DI), R8
|
|
XORQ R15, R8
|
|
RORXQ $63, R8, R8
|
|
MOVQ 56(DI), R9
|
|
XORQ BP, R9
|
|
RORXQ $58, R9, R9
|
|
MOVQ 104(DI), R10
|
|
XORQ SI, R10
|
|
RORXQ $39, R10, R10
|
|
MOVQ 152(DI), R11
|
|
XORQ DX, R11
|
|
RORXQ $56, R11, R11
|
|
MOVQ 160(DI), R12
|
|
XORQ R14, R12
|
|
RORXQ $46, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 80(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 88(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 96(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 104(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 112(SP)
|
|
MOVQ 32(DI), R8
|
|
XORQ DX, R8
|
|
RORXQ $37, R8, R8
|
|
MOVQ 40(DI), R9
|
|
XORQ R14, R9
|
|
RORXQ $28, R9, R9
|
|
MOVQ 88(DI), R10
|
|
XORQ R15, R10
|
|
RORXQ $54, R10, R10
|
|
MOVQ 136(DI), R11
|
|
XORQ BP, R11
|
|
RORXQ $49, R11, R11
|
|
MOVQ 184(DI), R12
|
|
XORQ SI, R12
|
|
RORXQ $8, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 120(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 128(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 136(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 144(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 152(SP)
|
|
MOVQ 16(DI), R8
|
|
XORQ BP, R8
|
|
RORXQ $2, R8, R8
|
|
MOVQ 64(DI), R9
|
|
XORQ SI, R9
|
|
RORXQ $9, R9, R9
|
|
MOVQ 112(DI), R10
|
|
XORQ DX, R10
|
|
RORXQ $25, R10, R10
|
|
MOVQ 120(DI), R11
|
|
XORQ R14, R11
|
|
RORXQ $23, R11, R11
|
|
MOVQ 168(DI), R12
|
|
XORQ R15, R12
|
|
RORXQ $62, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 160(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 168(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 176(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 184(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 192(SP)
|
|
|
|
// Round 3
|
|
MOVQ $0x8000000080008000, R13
|
|
MOVQ 0(SP), AX
|
|
XORQ 40(SP), AX
|
|
XORQ 80(SP), AX
|
|
XORQ 120(SP), AX
|
|
XORQ 160(SP), AX
|
|
MOVQ 8(SP), BX
|
|
XORQ 48(SP), BX
|
|
XORQ 88(SP), BX
|
|
XORQ 128(SP), BX
|
|
XORQ 168(SP), BX
|
|
MOVQ 16(SP), CX
|
|
XORQ 56(SP), CX
|
|
XORQ 96(SP), CX
|
|
XORQ 136(SP), CX
|
|
XORQ 176(SP), CX
|
|
MOVQ 24(SP), DX
|
|
XORQ 64(SP), DX
|
|
XORQ 104(SP), DX
|
|
XORQ 144(SP), DX
|
|
XORQ 184(SP), DX
|
|
MOVQ 32(SP), SI
|
|
XORQ 72(SP), SI
|
|
XORQ 112(SP), SI
|
|
XORQ 152(SP), SI
|
|
XORQ 192(SP), SI
|
|
RORXQ $63, BX, R14
|
|
XORQ SI, R14
|
|
RORXQ $63, CX, R15
|
|
XORQ AX, R15
|
|
RORXQ $63, DX, BP
|
|
XORQ BX, BP
|
|
RORXQ $63, SI, R8
|
|
XORQ CX, R8
|
|
RORXQ $63, AX, R9
|
|
XORQ DX, R9
|
|
MOVQ R8, SI
|
|
MOVQ R9, DX
|
|
MOVQ 0(SP), R8
|
|
XORQ R14, R8
|
|
MOVQ 48(SP), R9
|
|
XORQ R15, R9
|
|
RORXQ $20, R9, R9
|
|
MOVQ 96(SP), R10
|
|
XORQ BP, R10
|
|
RORXQ $21, R10, R10
|
|
MOVQ 144(SP), R11
|
|
XORQ SI, R11
|
|
RORXQ $43, R11, R11
|
|
MOVQ 192(SP), R12
|
|
XORQ DX, R12
|
|
RORXQ $50, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
XORQ R13, AX
|
|
MOVQ AX, 0(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 8(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 16(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 24(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 32(DI)
|
|
MOVQ 24(SP), R8
|
|
XORQ SI, R8
|
|
RORXQ $36, R8, R8
|
|
MOVQ 72(SP), R9
|
|
XORQ DX, R9
|
|
RORXQ $44, R9, R9
|
|
MOVQ 80(SP), R10
|
|
XORQ R14, R10
|
|
RORXQ $61, R10, R10
|
|
MOVQ 128(SP), R11
|
|
XORQ R15, R11
|
|
RORXQ $19, R11, R11
|
|
MOVQ 176(SP), R12
|
|
XORQ BP, R12
|
|
RORXQ $3, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 40(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 48(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 56(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 64(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 72(DI)
|
|
MOVQ 8(SP), R8
|
|
XORQ R15, R8
|
|
RORXQ $63, R8, R8
|
|
MOVQ 56(SP), R9
|
|
XORQ BP, R9
|
|
RORXQ $58, R9, R9
|
|
MOVQ 104(SP), R10
|
|
XORQ SI, R10
|
|
RORXQ $39, R10, R10
|
|
MOVQ 152(SP), R11
|
|
XORQ DX, R11
|
|
RORXQ $56, R11, R11
|
|
MOVQ 160(SP), R12
|
|
XORQ R14, R12
|
|
RORXQ $46, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 80(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 88(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 96(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 104(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 112(DI)
|
|
MOVQ 32(SP), R8
|
|
XORQ DX, R8
|
|
RORXQ $37, R8, R8
|
|
MOVQ 40(SP), R9
|
|
XORQ R14, R9
|
|
RORXQ $28, R9, R9
|
|
MOVQ 88(SP), R10
|
|
XORQ R15, R10
|
|
RORXQ $54, R10, R10
|
|
MOVQ 136(SP), R11
|
|
XORQ BP, R11
|
|
RORXQ $49, R11, R11
|
|
MOVQ 184(SP), R12
|
|
XORQ SI, R12
|
|
RORXQ $8, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 120(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 128(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 136(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 144(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 152(DI)
|
|
MOVQ 16(SP), R8
|
|
XORQ BP, R8
|
|
RORXQ $2, R8, R8
|
|
MOVQ 64(SP), R9
|
|
XORQ SI, R9
|
|
RORXQ $9, R9, R9
|
|
MOVQ 112(SP), R10
|
|
XORQ DX, R10
|
|
RORXQ $25, R10, R10
|
|
MOVQ 120(SP), R11
|
|
XORQ R14, R11
|
|
RORXQ $23, R11, R11
|
|
MOVQ 168(SP), R12
|
|
XORQ R15, R12
|
|
RORXQ $62, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 160(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 168(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 176(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 184(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 192(DI)
|
|
|
|
// Round 4
|
|
MOVQ $0x000000000000808b, R13
|
|
MOVQ 0(DI), AX
|
|
XORQ 40(DI), AX
|
|
XORQ 80(DI), AX
|
|
XORQ 120(DI), AX
|
|
XORQ 160(DI), AX
|
|
MOVQ 8(DI), BX
|
|
XORQ 48(DI), BX
|
|
XORQ 88(DI), BX
|
|
XORQ 128(DI), BX
|
|
XORQ 168(DI), BX
|
|
MOVQ 16(DI), CX
|
|
XORQ 56(DI), CX
|
|
XORQ 96(DI), CX
|
|
XORQ 136(DI), CX
|
|
XORQ 176(DI), CX
|
|
MOVQ 24(DI), DX
|
|
XORQ 64(DI), DX
|
|
XORQ 104(DI), DX
|
|
XORQ 144(DI), DX
|
|
XORQ 184(DI), DX
|
|
MOVQ 32(DI), SI
|
|
XORQ 72(DI), SI
|
|
XORQ 112(DI), SI
|
|
XORQ 152(DI), SI
|
|
XORQ 192(DI), SI
|
|
RORXQ $63, BX, R14
|
|
XORQ SI, R14
|
|
RORXQ $63, CX, R15
|
|
XORQ AX, R15
|
|
RORXQ $63, DX, BP
|
|
XORQ BX, BP
|
|
RORXQ $63, SI, R8
|
|
XORQ CX, R8
|
|
RORXQ $63, AX, R9
|
|
XORQ DX, R9
|
|
MOVQ R8, SI
|
|
MOVQ R9, DX
|
|
MOVQ 0(DI), R8
|
|
XORQ R14, R8
|
|
MOVQ 48(DI), R9
|
|
XORQ R15, R9
|
|
RORXQ $20, R9, R9
|
|
MOVQ 96(DI), R10
|
|
XORQ BP, R10
|
|
RORXQ $21, R10, R10
|
|
MOVQ 144(DI), R11
|
|
XORQ SI, R11
|
|
RORXQ $43, R11, R11
|
|
MOVQ 192(DI), R12
|
|
XORQ DX, R12
|
|
RORXQ $50, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
XORQ R13, AX
|
|
MOVQ AX, 0(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 8(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 16(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 24(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 32(SP)
|
|
MOVQ 24(DI), R8
|
|
XORQ SI, R8
|
|
RORXQ $36, R8, R8
|
|
MOVQ 72(DI), R9
|
|
XORQ DX, R9
|
|
RORXQ $44, R9, R9
|
|
MOVQ 80(DI), R10
|
|
XORQ R14, R10
|
|
RORXQ $61, R10, R10
|
|
MOVQ 128(DI), R11
|
|
XORQ R15, R11
|
|
RORXQ $19, R11, R11
|
|
MOVQ 176(DI), R12
|
|
XORQ BP, R12
|
|
RORXQ $3, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 40(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 48(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 56(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 64(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 72(SP)
|
|
MOVQ 8(DI), R8
|
|
XORQ R15, R8
|
|
RORXQ $63, R8, R8
|
|
MOVQ 56(DI), R9
|
|
XORQ BP, R9
|
|
RORXQ $58, R9, R9
|
|
MOVQ 104(DI), R10
|
|
XORQ SI, R10
|
|
RORXQ $39, R10, R10
|
|
MOVQ 152(DI), R11
|
|
XORQ DX, R11
|
|
RORXQ $56, R11, R11
|
|
MOVQ 160(DI), R12
|
|
XORQ R14, R12
|
|
RORXQ $46, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 80(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 88(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 96(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 104(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 112(SP)
|
|
MOVQ 32(DI), R8
|
|
XORQ DX, R8
|
|
RORXQ $37, R8, R8
|
|
MOVQ 40(DI), R9
|
|
XORQ R14, R9
|
|
RORXQ $28, R9, R9
|
|
MOVQ 88(DI), R10
|
|
XORQ R15, R10
|
|
RORXQ $54, R10, R10
|
|
MOVQ 136(DI), R11
|
|
XORQ BP, R11
|
|
RORXQ $49, R11, R11
|
|
MOVQ 184(DI), R12
|
|
XORQ SI, R12
|
|
RORXQ $8, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 120(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 128(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 136(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 144(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 152(SP)
|
|
MOVQ 16(DI), R8
|
|
XORQ BP, R8
|
|
RORXQ $2, R8, R8
|
|
MOVQ 64(DI), R9
|
|
XORQ SI, R9
|
|
RORXQ $9, R9, R9
|
|
MOVQ 112(DI), R10
|
|
XORQ DX, R10
|
|
RORXQ $25, R10, R10
|
|
MOVQ 120(DI), R11
|
|
XORQ R14, R11
|
|
RORXQ $23, R11, R11
|
|
MOVQ 168(DI), R12
|
|
XORQ R15, R12
|
|
RORXQ $62, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 160(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 168(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 176(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 184(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 192(SP)
|
|
|
|
// Round 5
|
|
MOVQ $0x0000000080000001, R13
|
|
MOVQ 0(SP), AX
|
|
XORQ 40(SP), AX
|
|
XORQ 80(SP), AX
|
|
XORQ 120(SP), AX
|
|
XORQ 160(SP), AX
|
|
MOVQ 8(SP), BX
|
|
XORQ 48(SP), BX
|
|
XORQ 88(SP), BX
|
|
XORQ 128(SP), BX
|
|
XORQ 168(SP), BX
|
|
MOVQ 16(SP), CX
|
|
XORQ 56(SP), CX
|
|
XORQ 96(SP), CX
|
|
XORQ 136(SP), CX
|
|
XORQ 176(SP), CX
|
|
MOVQ 24(SP), DX
|
|
XORQ 64(SP), DX
|
|
XORQ 104(SP), DX
|
|
XORQ 144(SP), DX
|
|
XORQ 184(SP), DX
|
|
MOVQ 32(SP), SI
|
|
XORQ 72(SP), SI
|
|
XORQ 112(SP), SI
|
|
XORQ 152(SP), SI
|
|
XORQ 192(SP), SI
|
|
RORXQ $63, BX, R14
|
|
XORQ SI, R14
|
|
RORXQ $63, CX, R15
|
|
XORQ AX, R15
|
|
RORXQ $63, DX, BP
|
|
XORQ BX, BP
|
|
RORXQ $63, SI, R8
|
|
XORQ CX, R8
|
|
RORXQ $63, AX, R9
|
|
XORQ DX, R9
|
|
MOVQ R8, SI
|
|
MOVQ R9, DX
|
|
MOVQ 0(SP), R8
|
|
XORQ R14, R8
|
|
MOVQ 48(SP), R9
|
|
XORQ R15, R9
|
|
RORXQ $20, R9, R9
|
|
MOVQ 96(SP), R10
|
|
XORQ BP, R10
|
|
RORXQ $21, R10, R10
|
|
MOVQ 144(SP), R11
|
|
XORQ SI, R11
|
|
RORXQ $43, R11, R11
|
|
MOVQ 192(SP), R12
|
|
XORQ DX, R12
|
|
RORXQ $50, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
XORQ R13, AX
|
|
MOVQ AX, 0(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 8(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 16(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 24(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 32(DI)
|
|
MOVQ 24(SP), R8
|
|
XORQ SI, R8
|
|
RORXQ $36, R8, R8
|
|
MOVQ 72(SP), R9
|
|
XORQ DX, R9
|
|
RORXQ $44, R9, R9
|
|
MOVQ 80(SP), R10
|
|
XORQ R14, R10
|
|
RORXQ $61, R10, R10
|
|
MOVQ 128(SP), R11
|
|
XORQ R15, R11
|
|
RORXQ $19, R11, R11
|
|
MOVQ 176(SP), R12
|
|
XORQ BP, R12
|
|
RORXQ $3, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 40(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 48(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 56(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 64(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 72(DI)
|
|
MOVQ 8(SP), R8
|
|
XORQ R15, R8
|
|
RORXQ $63, R8, R8
|
|
MOVQ 56(SP), R9
|
|
XORQ BP, R9
|
|
RORXQ $58, R9, R9
|
|
MOVQ 104(SP), R10
|
|
XORQ SI, R10
|
|
RORXQ $39, R10, R10
|
|
MOVQ 152(SP), R11
|
|
XORQ DX, R11
|
|
RORXQ $56, R11, R11
|
|
MOVQ 160(SP), R12
|
|
XORQ R14, R12
|
|
RORXQ $46, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 80(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 88(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 96(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 104(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 112(DI)
|
|
MOVQ 32(SP), R8
|
|
XORQ DX, R8
|
|
RORXQ $37, R8, R8
|
|
MOVQ 40(SP), R9
|
|
XORQ R14, R9
|
|
RORXQ $28, R9, R9
|
|
MOVQ 88(SP), R10
|
|
XORQ R15, R10
|
|
RORXQ $54, R10, R10
|
|
MOVQ 136(SP), R11
|
|
XORQ BP, R11
|
|
RORXQ $49, R11, R11
|
|
MOVQ 184(SP), R12
|
|
XORQ SI, R12
|
|
RORXQ $8, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 120(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 128(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 136(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 144(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 152(DI)
|
|
MOVQ 16(SP), R8
|
|
XORQ BP, R8
|
|
RORXQ $2, R8, R8
|
|
MOVQ 64(SP), R9
|
|
XORQ SI, R9
|
|
RORXQ $9, R9, R9
|
|
MOVQ 112(SP), R10
|
|
XORQ DX, R10
|
|
RORXQ $25, R10, R10
|
|
MOVQ 120(SP), R11
|
|
XORQ R14, R11
|
|
RORXQ $23, R11, R11
|
|
MOVQ 168(SP), R12
|
|
XORQ R15, R12
|
|
RORXQ $62, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 160(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 168(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 176(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 184(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 192(DI)
|
|
|
|
// Round 6
|
|
MOVQ $0x8000000080008081, R13
|
|
MOVQ 0(DI), AX
|
|
XORQ 40(DI), AX
|
|
XORQ 80(DI), AX
|
|
XORQ 120(DI), AX
|
|
XORQ 160(DI), AX
|
|
MOVQ 8(DI), BX
|
|
XORQ 48(DI), BX
|
|
XORQ 88(DI), BX
|
|
XORQ 128(DI), BX
|
|
XORQ 168(DI), BX
|
|
MOVQ 16(DI), CX
|
|
XORQ 56(DI), CX
|
|
XORQ 96(DI), CX
|
|
XORQ 136(DI), CX
|
|
XORQ 176(DI), CX
|
|
MOVQ 24(DI), DX
|
|
XORQ 64(DI), DX
|
|
XORQ 104(DI), DX
|
|
XORQ 144(DI), DX
|
|
XORQ 184(DI), DX
|
|
MOVQ 32(DI), SI
|
|
XORQ 72(DI), SI
|
|
XORQ 112(DI), SI
|
|
XORQ 152(DI), SI
|
|
XORQ 192(DI), SI
|
|
RORXQ $63, BX, R14
|
|
XORQ SI, R14
|
|
RORXQ $63, CX, R15
|
|
XORQ AX, R15
|
|
RORXQ $63, DX, BP
|
|
XORQ BX, BP
|
|
RORXQ $63, SI, R8
|
|
XORQ CX, R8
|
|
RORXQ $63, AX, R9
|
|
XORQ DX, R9
|
|
MOVQ R8, SI
|
|
MOVQ R9, DX
|
|
MOVQ 0(DI), R8
|
|
XORQ R14, R8
|
|
MOVQ 48(DI), R9
|
|
XORQ R15, R9
|
|
RORXQ $20, R9, R9
|
|
MOVQ 96(DI), R10
|
|
XORQ BP, R10
|
|
RORXQ $21, R10, R10
|
|
MOVQ 144(DI), R11
|
|
XORQ SI, R11
|
|
RORXQ $43, R11, R11
|
|
MOVQ 192(DI), R12
|
|
XORQ DX, R12
|
|
RORXQ $50, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
XORQ R13, AX
|
|
MOVQ AX, 0(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 8(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 16(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 24(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 32(SP)
|
|
MOVQ 24(DI), R8
|
|
XORQ SI, R8
|
|
RORXQ $36, R8, R8
|
|
MOVQ 72(DI), R9
|
|
XORQ DX, R9
|
|
RORXQ $44, R9, R9
|
|
MOVQ 80(DI), R10
|
|
XORQ R14, R10
|
|
RORXQ $61, R10, R10
|
|
MOVQ 128(DI), R11
|
|
XORQ R15, R11
|
|
RORXQ $19, R11, R11
|
|
MOVQ 176(DI), R12
|
|
XORQ BP, R12
|
|
RORXQ $3, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 40(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 48(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 56(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 64(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 72(SP)
|
|
MOVQ 8(DI), R8
|
|
XORQ R15, R8
|
|
RORXQ $63, R8, R8
|
|
MOVQ 56(DI), R9
|
|
XORQ BP, R9
|
|
RORXQ $58, R9, R9
|
|
MOVQ 104(DI), R10
|
|
XORQ SI, R10
|
|
RORXQ $39, R10, R10
|
|
MOVQ 152(DI), R11
|
|
XORQ DX, R11
|
|
RORXQ $56, R11, R11
|
|
MOVQ 160(DI), R12
|
|
XORQ R14, R12
|
|
RORXQ $46, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 80(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 88(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 96(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 104(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 112(SP)
|
|
MOVQ 32(DI), R8
|
|
XORQ DX, R8
|
|
RORXQ $37, R8, R8
|
|
MOVQ 40(DI), R9
|
|
XORQ R14, R9
|
|
RORXQ $28, R9, R9
|
|
MOVQ 88(DI), R10
|
|
XORQ R15, R10
|
|
RORXQ $54, R10, R10
|
|
MOVQ 136(DI), R11
|
|
XORQ BP, R11
|
|
RORXQ $49, R11, R11
|
|
MOVQ 184(DI), R12
|
|
XORQ SI, R12
|
|
RORXQ $8, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 120(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 128(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 136(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 144(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 152(SP)
|
|
MOVQ 16(DI), R8
|
|
XORQ BP, R8
|
|
RORXQ $2, R8, R8
|
|
MOVQ 64(DI), R9
|
|
XORQ SI, R9
|
|
RORXQ $9, R9, R9
|
|
MOVQ 112(DI), R10
|
|
XORQ DX, R10
|
|
RORXQ $25, R10, R10
|
|
MOVQ 120(DI), R11
|
|
XORQ R14, R11
|
|
RORXQ $23, R11, R11
|
|
MOVQ 168(DI), R12
|
|
XORQ R15, R12
|
|
RORXQ $62, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 160(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 168(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 176(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 184(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 192(SP)
|
|
|
|
// Round 7
|
|
MOVQ $0x8000000000008009, R13
|
|
MOVQ 0(SP), AX
|
|
XORQ 40(SP), AX
|
|
XORQ 80(SP), AX
|
|
XORQ 120(SP), AX
|
|
XORQ 160(SP), AX
|
|
MOVQ 8(SP), BX
|
|
XORQ 48(SP), BX
|
|
XORQ 88(SP), BX
|
|
XORQ 128(SP), BX
|
|
XORQ 168(SP), BX
|
|
MOVQ 16(SP), CX
|
|
XORQ 56(SP), CX
|
|
XORQ 96(SP), CX
|
|
XORQ 136(SP), CX
|
|
XORQ 176(SP), CX
|
|
MOVQ 24(SP), DX
|
|
XORQ 64(SP), DX
|
|
XORQ 104(SP), DX
|
|
XORQ 144(SP), DX
|
|
XORQ 184(SP), DX
|
|
MOVQ 32(SP), SI
|
|
XORQ 72(SP), SI
|
|
XORQ 112(SP), SI
|
|
XORQ 152(SP), SI
|
|
XORQ 192(SP), SI
|
|
RORXQ $63, BX, R14
|
|
XORQ SI, R14
|
|
RORXQ $63, CX, R15
|
|
XORQ AX, R15
|
|
RORXQ $63, DX, BP
|
|
XORQ BX, BP
|
|
RORXQ $63, SI, R8
|
|
XORQ CX, R8
|
|
RORXQ $63, AX, R9
|
|
XORQ DX, R9
|
|
MOVQ R8, SI
|
|
MOVQ R9, DX
|
|
MOVQ 0(SP), R8
|
|
XORQ R14, R8
|
|
MOVQ 48(SP), R9
|
|
XORQ R15, R9
|
|
RORXQ $20, R9, R9
|
|
MOVQ 96(SP), R10
|
|
XORQ BP, R10
|
|
RORXQ $21, R10, R10
|
|
MOVQ 144(SP), R11
|
|
XORQ SI, R11
|
|
RORXQ $43, R11, R11
|
|
MOVQ 192(SP), R12
|
|
XORQ DX, R12
|
|
RORXQ $50, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
XORQ R13, AX
|
|
MOVQ AX, 0(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 8(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 16(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 24(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 32(DI)
|
|
MOVQ 24(SP), R8
|
|
XORQ SI, R8
|
|
RORXQ $36, R8, R8
|
|
MOVQ 72(SP), R9
|
|
XORQ DX, R9
|
|
RORXQ $44, R9, R9
|
|
MOVQ 80(SP), R10
|
|
XORQ R14, R10
|
|
RORXQ $61, R10, R10
|
|
MOVQ 128(SP), R11
|
|
XORQ R15, R11
|
|
RORXQ $19, R11, R11
|
|
MOVQ 176(SP), R12
|
|
XORQ BP, R12
|
|
RORXQ $3, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 40(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 48(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 56(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 64(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 72(DI)
|
|
MOVQ 8(SP), R8
|
|
XORQ R15, R8
|
|
RORXQ $63, R8, R8
|
|
MOVQ 56(SP), R9
|
|
XORQ BP, R9
|
|
RORXQ $58, R9, R9
|
|
MOVQ 104(SP), R10
|
|
XORQ SI, R10
|
|
RORXQ $39, R10, R10
|
|
MOVQ 152(SP), R11
|
|
XORQ DX, R11
|
|
RORXQ $56, R11, R11
|
|
MOVQ 160(SP), R12
|
|
XORQ R14, R12
|
|
RORXQ $46, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 80(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 88(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 96(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 104(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 112(DI)
|
|
MOVQ 32(SP), R8
|
|
XORQ DX, R8
|
|
RORXQ $37, R8, R8
|
|
MOVQ 40(SP), R9
|
|
XORQ R14, R9
|
|
RORXQ $28, R9, R9
|
|
MOVQ 88(SP), R10
|
|
XORQ R15, R10
|
|
RORXQ $54, R10, R10
|
|
MOVQ 136(SP), R11
|
|
XORQ BP, R11
|
|
RORXQ $49, R11, R11
|
|
MOVQ 184(SP), R12
|
|
XORQ SI, R12
|
|
RORXQ $8, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 120(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 128(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 136(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 144(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 152(DI)
|
|
MOVQ 16(SP), R8
|
|
XORQ BP, R8
|
|
RORXQ $2, R8, R8
|
|
MOVQ 64(SP), R9
|
|
XORQ SI, R9
|
|
RORXQ $9, R9, R9
|
|
MOVQ 112(SP), R10
|
|
XORQ DX, R10
|
|
RORXQ $25, R10, R10
|
|
MOVQ 120(SP), R11
|
|
XORQ R14, R11
|
|
RORXQ $23, R11, R11
|
|
MOVQ 168(SP), R12
|
|
XORQ R15, R12
|
|
RORXQ $62, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 160(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 168(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 176(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 184(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 192(DI)
|
|
|
|
// Round 8
|
|
MOVQ $0x000000000000008a, R13
|
|
MOVQ 0(DI), AX
|
|
XORQ 40(DI), AX
|
|
XORQ 80(DI), AX
|
|
XORQ 120(DI), AX
|
|
XORQ 160(DI), AX
|
|
MOVQ 8(DI), BX
|
|
XORQ 48(DI), BX
|
|
XORQ 88(DI), BX
|
|
XORQ 128(DI), BX
|
|
XORQ 168(DI), BX
|
|
MOVQ 16(DI), CX
|
|
XORQ 56(DI), CX
|
|
XORQ 96(DI), CX
|
|
XORQ 136(DI), CX
|
|
XORQ 176(DI), CX
|
|
MOVQ 24(DI), DX
|
|
XORQ 64(DI), DX
|
|
XORQ 104(DI), DX
|
|
XORQ 144(DI), DX
|
|
XORQ 184(DI), DX
|
|
MOVQ 32(DI), SI
|
|
XORQ 72(DI), SI
|
|
XORQ 112(DI), SI
|
|
XORQ 152(DI), SI
|
|
XORQ 192(DI), SI
|
|
RORXQ $63, BX, R14
|
|
XORQ SI, R14
|
|
RORXQ $63, CX, R15
|
|
XORQ AX, R15
|
|
RORXQ $63, DX, BP
|
|
XORQ BX, BP
|
|
RORXQ $63, SI, R8
|
|
XORQ CX, R8
|
|
RORXQ $63, AX, R9
|
|
XORQ DX, R9
|
|
MOVQ R8, SI
|
|
MOVQ R9, DX
|
|
MOVQ 0(DI), R8
|
|
XORQ R14, R8
|
|
MOVQ 48(DI), R9
|
|
XORQ R15, R9
|
|
RORXQ $20, R9, R9
|
|
MOVQ 96(DI), R10
|
|
XORQ BP, R10
|
|
RORXQ $21, R10, R10
|
|
MOVQ 144(DI), R11
|
|
XORQ SI, R11
|
|
RORXQ $43, R11, R11
|
|
MOVQ 192(DI), R12
|
|
XORQ DX, R12
|
|
RORXQ $50, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
XORQ R13, AX
|
|
MOVQ AX, 0(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 8(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 16(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 24(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 32(SP)
|
|
MOVQ 24(DI), R8
|
|
XORQ SI, R8
|
|
RORXQ $36, R8, R8
|
|
MOVQ 72(DI), R9
|
|
XORQ DX, R9
|
|
RORXQ $44, R9, R9
|
|
MOVQ 80(DI), R10
|
|
XORQ R14, R10
|
|
RORXQ $61, R10, R10
|
|
MOVQ 128(DI), R11
|
|
XORQ R15, R11
|
|
RORXQ $19, R11, R11
|
|
MOVQ 176(DI), R12
|
|
XORQ BP, R12
|
|
RORXQ $3, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 40(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 48(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 56(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 64(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 72(SP)
|
|
MOVQ 8(DI), R8
|
|
XORQ R15, R8
|
|
RORXQ $63, R8, R8
|
|
MOVQ 56(DI), R9
|
|
XORQ BP, R9
|
|
RORXQ $58, R9, R9
|
|
MOVQ 104(DI), R10
|
|
XORQ SI, R10
|
|
RORXQ $39, R10, R10
|
|
MOVQ 152(DI), R11
|
|
XORQ DX, R11
|
|
RORXQ $56, R11, R11
|
|
MOVQ 160(DI), R12
|
|
XORQ R14, R12
|
|
RORXQ $46, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 80(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 88(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 96(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 104(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 112(SP)
|
|
MOVQ 32(DI), R8
|
|
XORQ DX, R8
|
|
RORXQ $37, R8, R8
|
|
MOVQ 40(DI), R9
|
|
XORQ R14, R9
|
|
RORXQ $28, R9, R9
|
|
MOVQ 88(DI), R10
|
|
XORQ R15, R10
|
|
RORXQ $54, R10, R10
|
|
MOVQ 136(DI), R11
|
|
XORQ BP, R11
|
|
RORXQ $49, R11, R11
|
|
MOVQ 184(DI), R12
|
|
XORQ SI, R12
|
|
RORXQ $8, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 120(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 128(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 136(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 144(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 152(SP)
|
|
MOVQ 16(DI), R8
|
|
XORQ BP, R8
|
|
RORXQ $2, R8, R8
|
|
MOVQ 64(DI), R9
|
|
XORQ SI, R9
|
|
RORXQ $9, R9, R9
|
|
MOVQ 112(DI), R10
|
|
XORQ DX, R10
|
|
RORXQ $25, R10, R10
|
|
MOVQ 120(DI), R11
|
|
XORQ R14, R11
|
|
RORXQ $23, R11, R11
|
|
MOVQ 168(DI), R12
|
|
XORQ R15, R12
|
|
RORXQ $62, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 160(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 168(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 176(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 184(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 192(SP)
|
|
|
|
// Round 9
|
|
MOVQ $0x0000000000000088, R13
|
|
MOVQ 0(SP), AX
|
|
XORQ 40(SP), AX
|
|
XORQ 80(SP), AX
|
|
XORQ 120(SP), AX
|
|
XORQ 160(SP), AX
|
|
MOVQ 8(SP), BX
|
|
XORQ 48(SP), BX
|
|
XORQ 88(SP), BX
|
|
XORQ 128(SP), BX
|
|
XORQ 168(SP), BX
|
|
MOVQ 16(SP), CX
|
|
XORQ 56(SP), CX
|
|
XORQ 96(SP), CX
|
|
XORQ 136(SP), CX
|
|
XORQ 176(SP), CX
|
|
MOVQ 24(SP), DX
|
|
XORQ 64(SP), DX
|
|
XORQ 104(SP), DX
|
|
XORQ 144(SP), DX
|
|
XORQ 184(SP), DX
|
|
MOVQ 32(SP), SI
|
|
XORQ 72(SP), SI
|
|
XORQ 112(SP), SI
|
|
XORQ 152(SP), SI
|
|
XORQ 192(SP), SI
|
|
RORXQ $63, BX, R14
|
|
XORQ SI, R14
|
|
RORXQ $63, CX, R15
|
|
XORQ AX, R15
|
|
RORXQ $63, DX, BP
|
|
XORQ BX, BP
|
|
RORXQ $63, SI, R8
|
|
XORQ CX, R8
|
|
RORXQ $63, AX, R9
|
|
XORQ DX, R9
|
|
MOVQ R8, SI
|
|
MOVQ R9, DX
|
|
MOVQ 0(SP), R8
|
|
XORQ R14, R8
|
|
MOVQ 48(SP), R9
|
|
XORQ R15, R9
|
|
RORXQ $20, R9, R9
|
|
MOVQ 96(SP), R10
|
|
XORQ BP, R10
|
|
RORXQ $21, R10, R10
|
|
MOVQ 144(SP), R11
|
|
XORQ SI, R11
|
|
RORXQ $43, R11, R11
|
|
MOVQ 192(SP), R12
|
|
XORQ DX, R12
|
|
RORXQ $50, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
XORQ R13, AX
|
|
MOVQ AX, 0(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 8(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 16(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 24(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 32(DI)
|
|
MOVQ 24(SP), R8
|
|
XORQ SI, R8
|
|
RORXQ $36, R8, R8
|
|
MOVQ 72(SP), R9
|
|
XORQ DX, R9
|
|
RORXQ $44, R9, R9
|
|
MOVQ 80(SP), R10
|
|
XORQ R14, R10
|
|
RORXQ $61, R10, R10
|
|
MOVQ 128(SP), R11
|
|
XORQ R15, R11
|
|
RORXQ $19, R11, R11
|
|
MOVQ 176(SP), R12
|
|
XORQ BP, R12
|
|
RORXQ $3, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 40(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 48(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 56(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 64(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 72(DI)
|
|
MOVQ 8(SP), R8
|
|
XORQ R15, R8
|
|
RORXQ $63, R8, R8
|
|
MOVQ 56(SP), R9
|
|
XORQ BP, R9
|
|
RORXQ $58, R9, R9
|
|
MOVQ 104(SP), R10
|
|
XORQ SI, R10
|
|
RORXQ $39, R10, R10
|
|
MOVQ 152(SP), R11
|
|
XORQ DX, R11
|
|
RORXQ $56, R11, R11
|
|
MOVQ 160(SP), R12
|
|
XORQ R14, R12
|
|
RORXQ $46, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 80(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 88(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 96(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 104(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 112(DI)
|
|
MOVQ 32(SP), R8
|
|
XORQ DX, R8
|
|
RORXQ $37, R8, R8
|
|
MOVQ 40(SP), R9
|
|
XORQ R14, R9
|
|
RORXQ $28, R9, R9
|
|
MOVQ 88(SP), R10
|
|
XORQ R15, R10
|
|
RORXQ $54, R10, R10
|
|
MOVQ 136(SP), R11
|
|
XORQ BP, R11
|
|
RORXQ $49, R11, R11
|
|
MOVQ 184(SP), R12
|
|
XORQ SI, R12
|
|
RORXQ $8, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 120(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 128(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 136(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 144(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 152(DI)
|
|
MOVQ 16(SP), R8
|
|
XORQ BP, R8
|
|
RORXQ $2, R8, R8
|
|
MOVQ 64(SP), R9
|
|
XORQ SI, R9
|
|
RORXQ $9, R9, R9
|
|
MOVQ 112(SP), R10
|
|
XORQ DX, R10
|
|
RORXQ $25, R10, R10
|
|
MOVQ 120(SP), R11
|
|
XORQ R14, R11
|
|
RORXQ $23, R11, R11
|
|
MOVQ 168(SP), R12
|
|
XORQ R15, R12
|
|
RORXQ $62, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 160(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 168(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 176(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 184(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 192(DI)
|
|
|
|
// Round 10
|
|
MOVQ $0x0000000080008009, R13
|
|
MOVQ 0(DI), AX
|
|
XORQ 40(DI), AX
|
|
XORQ 80(DI), AX
|
|
XORQ 120(DI), AX
|
|
XORQ 160(DI), AX
|
|
MOVQ 8(DI), BX
|
|
XORQ 48(DI), BX
|
|
XORQ 88(DI), BX
|
|
XORQ 128(DI), BX
|
|
XORQ 168(DI), BX
|
|
MOVQ 16(DI), CX
|
|
XORQ 56(DI), CX
|
|
XORQ 96(DI), CX
|
|
XORQ 136(DI), CX
|
|
XORQ 176(DI), CX
|
|
MOVQ 24(DI), DX
|
|
XORQ 64(DI), DX
|
|
XORQ 104(DI), DX
|
|
XORQ 144(DI), DX
|
|
XORQ 184(DI), DX
|
|
MOVQ 32(DI), SI
|
|
XORQ 72(DI), SI
|
|
XORQ 112(DI), SI
|
|
XORQ 152(DI), SI
|
|
XORQ 192(DI), SI
|
|
RORXQ $63, BX, R14
|
|
XORQ SI, R14
|
|
RORXQ $63, CX, R15
|
|
XORQ AX, R15
|
|
RORXQ $63, DX, BP
|
|
XORQ BX, BP
|
|
RORXQ $63, SI, R8
|
|
XORQ CX, R8
|
|
RORXQ $63, AX, R9
|
|
XORQ DX, R9
|
|
MOVQ R8, SI
|
|
MOVQ R9, DX
|
|
MOVQ 0(DI), R8
|
|
XORQ R14, R8
|
|
MOVQ 48(DI), R9
|
|
XORQ R15, R9
|
|
RORXQ $20, R9, R9
|
|
MOVQ 96(DI), R10
|
|
XORQ BP, R10
|
|
RORXQ $21, R10, R10
|
|
MOVQ 144(DI), R11
|
|
XORQ SI, R11
|
|
RORXQ $43, R11, R11
|
|
MOVQ 192(DI), R12
|
|
XORQ DX, R12
|
|
RORXQ $50, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
XORQ R13, AX
|
|
MOVQ AX, 0(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 8(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 16(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 24(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 32(SP)
|
|
MOVQ 24(DI), R8
|
|
XORQ SI, R8
|
|
RORXQ $36, R8, R8
|
|
MOVQ 72(DI), R9
|
|
XORQ DX, R9
|
|
RORXQ $44, R9, R9
|
|
MOVQ 80(DI), R10
|
|
XORQ R14, R10
|
|
RORXQ $61, R10, R10
|
|
MOVQ 128(DI), R11
|
|
XORQ R15, R11
|
|
RORXQ $19, R11, R11
|
|
MOVQ 176(DI), R12
|
|
XORQ BP, R12
|
|
RORXQ $3, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 40(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 48(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 56(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 64(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 72(SP)
|
|
MOVQ 8(DI), R8
|
|
XORQ R15, R8
|
|
RORXQ $63, R8, R8
|
|
MOVQ 56(DI), R9
|
|
XORQ BP, R9
|
|
RORXQ $58, R9, R9
|
|
MOVQ 104(DI), R10
|
|
XORQ SI, R10
|
|
RORXQ $39, R10, R10
|
|
MOVQ 152(DI), R11
|
|
XORQ DX, R11
|
|
RORXQ $56, R11, R11
|
|
MOVQ 160(DI), R12
|
|
XORQ R14, R12
|
|
RORXQ $46, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 80(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 88(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 96(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 104(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 112(SP)
|
|
MOVQ 32(DI), R8
|
|
XORQ DX, R8
|
|
RORXQ $37, R8, R8
|
|
MOVQ 40(DI), R9
|
|
XORQ R14, R9
|
|
RORXQ $28, R9, R9
|
|
MOVQ 88(DI), R10
|
|
XORQ R15, R10
|
|
RORXQ $54, R10, R10
|
|
MOVQ 136(DI), R11
|
|
XORQ BP, R11
|
|
RORXQ $49, R11, R11
|
|
MOVQ 184(DI), R12
|
|
XORQ SI, R12
|
|
RORXQ $8, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 120(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 128(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 136(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 144(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 152(SP)
|
|
MOVQ 16(DI), R8
|
|
XORQ BP, R8
|
|
RORXQ $2, R8, R8
|
|
MOVQ 64(DI), R9
|
|
XORQ SI, R9
|
|
RORXQ $9, R9, R9
|
|
MOVQ 112(DI), R10
|
|
XORQ DX, R10
|
|
RORXQ $25, R10, R10
|
|
MOVQ 120(DI), R11
|
|
XORQ R14, R11
|
|
RORXQ $23, R11, R11
|
|
MOVQ 168(DI), R12
|
|
XORQ R15, R12
|
|
RORXQ $62, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 160(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 168(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 176(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 184(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 192(SP)
|
|
|
|
// Round 11
|
|
MOVQ $0x000000008000000a, R13
|
|
MOVQ 0(SP), AX
|
|
XORQ 40(SP), AX
|
|
XORQ 80(SP), AX
|
|
XORQ 120(SP), AX
|
|
XORQ 160(SP), AX
|
|
MOVQ 8(SP), BX
|
|
XORQ 48(SP), BX
|
|
XORQ 88(SP), BX
|
|
XORQ 128(SP), BX
|
|
XORQ 168(SP), BX
|
|
MOVQ 16(SP), CX
|
|
XORQ 56(SP), CX
|
|
XORQ 96(SP), CX
|
|
XORQ 136(SP), CX
|
|
XORQ 176(SP), CX
|
|
MOVQ 24(SP), DX
|
|
XORQ 64(SP), DX
|
|
XORQ 104(SP), DX
|
|
XORQ 144(SP), DX
|
|
XORQ 184(SP), DX
|
|
MOVQ 32(SP), SI
|
|
XORQ 72(SP), SI
|
|
XORQ 112(SP), SI
|
|
XORQ 152(SP), SI
|
|
XORQ 192(SP), SI
|
|
RORXQ $63, BX, R14
|
|
XORQ SI, R14
|
|
RORXQ $63, CX, R15
|
|
XORQ AX, R15
|
|
RORXQ $63, DX, BP
|
|
XORQ BX, BP
|
|
RORXQ $63, SI, R8
|
|
XORQ CX, R8
|
|
RORXQ $63, AX, R9
|
|
XORQ DX, R9
|
|
MOVQ R8, SI
|
|
MOVQ R9, DX
|
|
MOVQ 0(SP), R8
|
|
XORQ R14, R8
|
|
MOVQ 48(SP), R9
|
|
XORQ R15, R9
|
|
RORXQ $20, R9, R9
|
|
MOVQ 96(SP), R10
|
|
XORQ BP, R10
|
|
RORXQ $21, R10, R10
|
|
MOVQ 144(SP), R11
|
|
XORQ SI, R11
|
|
RORXQ $43, R11, R11
|
|
MOVQ 192(SP), R12
|
|
XORQ DX, R12
|
|
RORXQ $50, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
XORQ R13, AX
|
|
MOVQ AX, 0(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 8(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 16(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 24(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 32(DI)
|
|
MOVQ 24(SP), R8
|
|
XORQ SI, R8
|
|
RORXQ $36, R8, R8
|
|
MOVQ 72(SP), R9
|
|
XORQ DX, R9
|
|
RORXQ $44, R9, R9
|
|
MOVQ 80(SP), R10
|
|
XORQ R14, R10
|
|
RORXQ $61, R10, R10
|
|
MOVQ 128(SP), R11
|
|
XORQ R15, R11
|
|
RORXQ $19, R11, R11
|
|
MOVQ 176(SP), R12
|
|
XORQ BP, R12
|
|
RORXQ $3, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 40(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 48(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 56(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 64(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 72(DI)
|
|
MOVQ 8(SP), R8
|
|
XORQ R15, R8
|
|
RORXQ $63, R8, R8
|
|
MOVQ 56(SP), R9
|
|
XORQ BP, R9
|
|
RORXQ $58, R9, R9
|
|
MOVQ 104(SP), R10
|
|
XORQ SI, R10
|
|
RORXQ $39, R10, R10
|
|
MOVQ 152(SP), R11
|
|
XORQ DX, R11
|
|
RORXQ $56, R11, R11
|
|
MOVQ 160(SP), R12
|
|
XORQ R14, R12
|
|
RORXQ $46, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 80(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 88(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 96(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 104(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 112(DI)
|
|
MOVQ 32(SP), R8
|
|
XORQ DX, R8
|
|
RORXQ $37, R8, R8
|
|
MOVQ 40(SP), R9
|
|
XORQ R14, R9
|
|
RORXQ $28, R9, R9
|
|
MOVQ 88(SP), R10
|
|
XORQ R15, R10
|
|
RORXQ $54, R10, R10
|
|
MOVQ 136(SP), R11
|
|
XORQ BP, R11
|
|
RORXQ $49, R11, R11
|
|
MOVQ 184(SP), R12
|
|
XORQ SI, R12
|
|
RORXQ $8, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 120(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 128(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 136(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 144(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 152(DI)
|
|
MOVQ 16(SP), R8
|
|
XORQ BP, R8
|
|
RORXQ $2, R8, R8
|
|
MOVQ 64(SP), R9
|
|
XORQ SI, R9
|
|
RORXQ $9, R9, R9
|
|
MOVQ 112(SP), R10
|
|
XORQ DX, R10
|
|
RORXQ $25, R10, R10
|
|
MOVQ 120(SP), R11
|
|
XORQ R14, R11
|
|
RORXQ $23, R11, R11
|
|
MOVQ 168(SP), R12
|
|
XORQ R15, R12
|
|
RORXQ $62, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 160(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 168(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 176(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 184(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 192(DI)
|
|
|
|
// Round 12
|
|
MOVQ $0x000000008000808b, R13
|
|
MOVQ 0(DI), AX
|
|
XORQ 40(DI), AX
|
|
XORQ 80(DI), AX
|
|
XORQ 120(DI), AX
|
|
XORQ 160(DI), AX
|
|
MOVQ 8(DI), BX
|
|
XORQ 48(DI), BX
|
|
XORQ 88(DI), BX
|
|
XORQ 128(DI), BX
|
|
XORQ 168(DI), BX
|
|
MOVQ 16(DI), CX
|
|
XORQ 56(DI), CX
|
|
XORQ 96(DI), CX
|
|
XORQ 136(DI), CX
|
|
XORQ 176(DI), CX
|
|
MOVQ 24(DI), DX
|
|
XORQ 64(DI), DX
|
|
XORQ 104(DI), DX
|
|
XORQ 144(DI), DX
|
|
XORQ 184(DI), DX
|
|
MOVQ 32(DI), SI
|
|
XORQ 72(DI), SI
|
|
XORQ 112(DI), SI
|
|
XORQ 152(DI), SI
|
|
XORQ 192(DI), SI
|
|
RORXQ $63, BX, R14
|
|
XORQ SI, R14
|
|
RORXQ $63, CX, R15
|
|
XORQ AX, R15
|
|
RORXQ $63, DX, BP
|
|
XORQ BX, BP
|
|
RORXQ $63, SI, R8
|
|
XORQ CX, R8
|
|
RORXQ $63, AX, R9
|
|
XORQ DX, R9
|
|
MOVQ R8, SI
|
|
MOVQ R9, DX
|
|
MOVQ 0(DI), R8
|
|
XORQ R14, R8
|
|
MOVQ 48(DI), R9
|
|
XORQ R15, R9
|
|
RORXQ $20, R9, R9
|
|
MOVQ 96(DI), R10
|
|
XORQ BP, R10
|
|
RORXQ $21, R10, R10
|
|
MOVQ 144(DI), R11
|
|
XORQ SI, R11
|
|
RORXQ $43, R11, R11
|
|
MOVQ 192(DI), R12
|
|
XORQ DX, R12
|
|
RORXQ $50, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
XORQ R13, AX
|
|
MOVQ AX, 0(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 8(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 16(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 24(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 32(SP)
|
|
MOVQ 24(DI), R8
|
|
XORQ SI, R8
|
|
RORXQ $36, R8, R8
|
|
MOVQ 72(DI), R9
|
|
XORQ DX, R9
|
|
RORXQ $44, R9, R9
|
|
MOVQ 80(DI), R10
|
|
XORQ R14, R10
|
|
RORXQ $61, R10, R10
|
|
MOVQ 128(DI), R11
|
|
XORQ R15, R11
|
|
RORXQ $19, R11, R11
|
|
MOVQ 176(DI), R12
|
|
XORQ BP, R12
|
|
RORXQ $3, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 40(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 48(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 56(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 64(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 72(SP)
|
|
MOVQ 8(DI), R8
|
|
XORQ R15, R8
|
|
RORXQ $63, R8, R8
|
|
MOVQ 56(DI), R9
|
|
XORQ BP, R9
|
|
RORXQ $58, R9, R9
|
|
MOVQ 104(DI), R10
|
|
XORQ SI, R10
|
|
RORXQ $39, R10, R10
|
|
MOVQ 152(DI), R11
|
|
XORQ DX, R11
|
|
RORXQ $56, R11, R11
|
|
MOVQ 160(DI), R12
|
|
XORQ R14, R12
|
|
RORXQ $46, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 80(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 88(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 96(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 104(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 112(SP)
|
|
MOVQ 32(DI), R8
|
|
XORQ DX, R8
|
|
RORXQ $37, R8, R8
|
|
MOVQ 40(DI), R9
|
|
XORQ R14, R9
|
|
RORXQ $28, R9, R9
|
|
MOVQ 88(DI), R10
|
|
XORQ R15, R10
|
|
RORXQ $54, R10, R10
|
|
MOVQ 136(DI), R11
|
|
XORQ BP, R11
|
|
RORXQ $49, R11, R11
|
|
MOVQ 184(DI), R12
|
|
XORQ SI, R12
|
|
RORXQ $8, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 120(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 128(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 136(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 144(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 152(SP)
|
|
MOVQ 16(DI), R8
|
|
XORQ BP, R8
|
|
RORXQ $2, R8, R8
|
|
MOVQ 64(DI), R9
|
|
XORQ SI, R9
|
|
RORXQ $9, R9, R9
|
|
MOVQ 112(DI), R10
|
|
XORQ DX, R10
|
|
RORXQ $25, R10, R10
|
|
MOVQ 120(DI), R11
|
|
XORQ R14, R11
|
|
RORXQ $23, R11, R11
|
|
MOVQ 168(DI), R12
|
|
XORQ R15, R12
|
|
RORXQ $62, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 160(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 168(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 176(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 184(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 192(SP)
|
|
|
|
// Round 13
|
|
MOVQ $0x800000000000008b, R13
|
|
MOVQ 0(SP), AX
|
|
XORQ 40(SP), AX
|
|
XORQ 80(SP), AX
|
|
XORQ 120(SP), AX
|
|
XORQ 160(SP), AX
|
|
MOVQ 8(SP), BX
|
|
XORQ 48(SP), BX
|
|
XORQ 88(SP), BX
|
|
XORQ 128(SP), BX
|
|
XORQ 168(SP), BX
|
|
MOVQ 16(SP), CX
|
|
XORQ 56(SP), CX
|
|
XORQ 96(SP), CX
|
|
XORQ 136(SP), CX
|
|
XORQ 176(SP), CX
|
|
MOVQ 24(SP), DX
|
|
XORQ 64(SP), DX
|
|
XORQ 104(SP), DX
|
|
XORQ 144(SP), DX
|
|
XORQ 184(SP), DX
|
|
MOVQ 32(SP), SI
|
|
XORQ 72(SP), SI
|
|
XORQ 112(SP), SI
|
|
XORQ 152(SP), SI
|
|
XORQ 192(SP), SI
|
|
RORXQ $63, BX, R14
|
|
XORQ SI, R14
|
|
RORXQ $63, CX, R15
|
|
XORQ AX, R15
|
|
RORXQ $63, DX, BP
|
|
XORQ BX, BP
|
|
RORXQ $63, SI, R8
|
|
XORQ CX, R8
|
|
RORXQ $63, AX, R9
|
|
XORQ DX, R9
|
|
MOVQ R8, SI
|
|
MOVQ R9, DX
|
|
MOVQ 0(SP), R8
|
|
XORQ R14, R8
|
|
MOVQ 48(SP), R9
|
|
XORQ R15, R9
|
|
RORXQ $20, R9, R9
|
|
MOVQ 96(SP), R10
|
|
XORQ BP, R10
|
|
RORXQ $21, R10, R10
|
|
MOVQ 144(SP), R11
|
|
XORQ SI, R11
|
|
RORXQ $43, R11, R11
|
|
MOVQ 192(SP), R12
|
|
XORQ DX, R12
|
|
RORXQ $50, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
XORQ R13, AX
|
|
MOVQ AX, 0(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 8(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 16(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 24(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 32(DI)
|
|
MOVQ 24(SP), R8
|
|
XORQ SI, R8
|
|
RORXQ $36, R8, R8
|
|
MOVQ 72(SP), R9
|
|
XORQ DX, R9
|
|
RORXQ $44, R9, R9
|
|
MOVQ 80(SP), R10
|
|
XORQ R14, R10
|
|
RORXQ $61, R10, R10
|
|
MOVQ 128(SP), R11
|
|
XORQ R15, R11
|
|
RORXQ $19, R11, R11
|
|
MOVQ 176(SP), R12
|
|
XORQ BP, R12
|
|
RORXQ $3, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 40(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 48(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 56(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 64(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 72(DI)
|
|
MOVQ 8(SP), R8
|
|
XORQ R15, R8
|
|
RORXQ $63, R8, R8
|
|
MOVQ 56(SP), R9
|
|
XORQ BP, R9
|
|
RORXQ $58, R9, R9
|
|
MOVQ 104(SP), R10
|
|
XORQ SI, R10
|
|
RORXQ $39, R10, R10
|
|
MOVQ 152(SP), R11
|
|
XORQ DX, R11
|
|
RORXQ $56, R11, R11
|
|
MOVQ 160(SP), R12
|
|
XORQ R14, R12
|
|
RORXQ $46, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 80(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 88(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 96(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 104(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 112(DI)
|
|
MOVQ 32(SP), R8
|
|
XORQ DX, R8
|
|
RORXQ $37, R8, R8
|
|
MOVQ 40(SP), R9
|
|
XORQ R14, R9
|
|
RORXQ $28, R9, R9
|
|
MOVQ 88(SP), R10
|
|
XORQ R15, R10
|
|
RORXQ $54, R10, R10
|
|
MOVQ 136(SP), R11
|
|
XORQ BP, R11
|
|
RORXQ $49, R11, R11
|
|
MOVQ 184(SP), R12
|
|
XORQ SI, R12
|
|
RORXQ $8, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 120(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 128(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 136(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 144(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 152(DI)
|
|
MOVQ 16(SP), R8
|
|
XORQ BP, R8
|
|
RORXQ $2, R8, R8
|
|
MOVQ 64(SP), R9
|
|
XORQ SI, R9
|
|
RORXQ $9, R9, R9
|
|
MOVQ 112(SP), R10
|
|
XORQ DX, R10
|
|
RORXQ $25, R10, R10
|
|
MOVQ 120(SP), R11
|
|
XORQ R14, R11
|
|
RORXQ $23, R11, R11
|
|
MOVQ 168(SP), R12
|
|
XORQ R15, R12
|
|
RORXQ $62, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 160(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 168(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 176(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 184(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 192(DI)
|
|
|
|
// Round 14
|
|
MOVQ $0x8000000000008089, R13
|
|
MOVQ 0(DI), AX
|
|
XORQ 40(DI), AX
|
|
XORQ 80(DI), AX
|
|
XORQ 120(DI), AX
|
|
XORQ 160(DI), AX
|
|
MOVQ 8(DI), BX
|
|
XORQ 48(DI), BX
|
|
XORQ 88(DI), BX
|
|
XORQ 128(DI), BX
|
|
XORQ 168(DI), BX
|
|
MOVQ 16(DI), CX
|
|
XORQ 56(DI), CX
|
|
XORQ 96(DI), CX
|
|
XORQ 136(DI), CX
|
|
XORQ 176(DI), CX
|
|
MOVQ 24(DI), DX
|
|
XORQ 64(DI), DX
|
|
XORQ 104(DI), DX
|
|
XORQ 144(DI), DX
|
|
XORQ 184(DI), DX
|
|
MOVQ 32(DI), SI
|
|
XORQ 72(DI), SI
|
|
XORQ 112(DI), SI
|
|
XORQ 152(DI), SI
|
|
XORQ 192(DI), SI
|
|
RORXQ $63, BX, R14
|
|
XORQ SI, R14
|
|
RORXQ $63, CX, R15
|
|
XORQ AX, R15
|
|
RORXQ $63, DX, BP
|
|
XORQ BX, BP
|
|
RORXQ $63, SI, R8
|
|
XORQ CX, R8
|
|
RORXQ $63, AX, R9
|
|
XORQ DX, R9
|
|
MOVQ R8, SI
|
|
MOVQ R9, DX
|
|
MOVQ 0(DI), R8
|
|
XORQ R14, R8
|
|
MOVQ 48(DI), R9
|
|
XORQ R15, R9
|
|
RORXQ $20, R9, R9
|
|
MOVQ 96(DI), R10
|
|
XORQ BP, R10
|
|
RORXQ $21, R10, R10
|
|
MOVQ 144(DI), R11
|
|
XORQ SI, R11
|
|
RORXQ $43, R11, R11
|
|
MOVQ 192(DI), R12
|
|
XORQ DX, R12
|
|
RORXQ $50, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
XORQ R13, AX
|
|
MOVQ AX, 0(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 8(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 16(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 24(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 32(SP)
|
|
MOVQ 24(DI), R8
|
|
XORQ SI, R8
|
|
RORXQ $36, R8, R8
|
|
MOVQ 72(DI), R9
|
|
XORQ DX, R9
|
|
RORXQ $44, R9, R9
|
|
MOVQ 80(DI), R10
|
|
XORQ R14, R10
|
|
RORXQ $61, R10, R10
|
|
MOVQ 128(DI), R11
|
|
XORQ R15, R11
|
|
RORXQ $19, R11, R11
|
|
MOVQ 176(DI), R12
|
|
XORQ BP, R12
|
|
RORXQ $3, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 40(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 48(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 56(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 64(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 72(SP)
|
|
MOVQ 8(DI), R8
|
|
XORQ R15, R8
|
|
RORXQ $63, R8, R8
|
|
MOVQ 56(DI), R9
|
|
XORQ BP, R9
|
|
RORXQ $58, R9, R9
|
|
MOVQ 104(DI), R10
|
|
XORQ SI, R10
|
|
RORXQ $39, R10, R10
|
|
MOVQ 152(DI), R11
|
|
XORQ DX, R11
|
|
RORXQ $56, R11, R11
|
|
MOVQ 160(DI), R12
|
|
XORQ R14, R12
|
|
RORXQ $46, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 80(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 88(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 96(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 104(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 112(SP)
|
|
MOVQ 32(DI), R8
|
|
XORQ DX, R8
|
|
RORXQ $37, R8, R8
|
|
MOVQ 40(DI), R9
|
|
XORQ R14, R9
|
|
RORXQ $28, R9, R9
|
|
MOVQ 88(DI), R10
|
|
XORQ R15, R10
|
|
RORXQ $54, R10, R10
|
|
MOVQ 136(DI), R11
|
|
XORQ BP, R11
|
|
RORXQ $49, R11, R11
|
|
MOVQ 184(DI), R12
|
|
XORQ SI, R12
|
|
RORXQ $8, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 120(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 128(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 136(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 144(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 152(SP)
|
|
MOVQ 16(DI), R8
|
|
XORQ BP, R8
|
|
RORXQ $2, R8, R8
|
|
MOVQ 64(DI), R9
|
|
XORQ SI, R9
|
|
RORXQ $9, R9, R9
|
|
MOVQ 112(DI), R10
|
|
XORQ DX, R10
|
|
RORXQ $25, R10, R10
|
|
MOVQ 120(DI), R11
|
|
XORQ R14, R11
|
|
RORXQ $23, R11, R11
|
|
MOVQ 168(DI), R12
|
|
XORQ R15, R12
|
|
RORXQ $62, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 160(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 168(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 176(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 184(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 192(SP)
|
|
|
|
// Round 15
|
|
MOVQ $0x8000000000008003, R13
|
|
MOVQ 0(SP), AX
|
|
XORQ 40(SP), AX
|
|
XORQ 80(SP), AX
|
|
XORQ 120(SP), AX
|
|
XORQ 160(SP), AX
|
|
MOVQ 8(SP), BX
|
|
XORQ 48(SP), BX
|
|
XORQ 88(SP), BX
|
|
XORQ 128(SP), BX
|
|
XORQ 168(SP), BX
|
|
MOVQ 16(SP), CX
|
|
XORQ 56(SP), CX
|
|
XORQ 96(SP), CX
|
|
XORQ 136(SP), CX
|
|
XORQ 176(SP), CX
|
|
MOVQ 24(SP), DX
|
|
XORQ 64(SP), DX
|
|
XORQ 104(SP), DX
|
|
XORQ 144(SP), DX
|
|
XORQ 184(SP), DX
|
|
MOVQ 32(SP), SI
|
|
XORQ 72(SP), SI
|
|
XORQ 112(SP), SI
|
|
XORQ 152(SP), SI
|
|
XORQ 192(SP), SI
|
|
RORXQ $63, BX, R14
|
|
XORQ SI, R14
|
|
RORXQ $63, CX, R15
|
|
XORQ AX, R15
|
|
RORXQ $63, DX, BP
|
|
XORQ BX, BP
|
|
RORXQ $63, SI, R8
|
|
XORQ CX, R8
|
|
RORXQ $63, AX, R9
|
|
XORQ DX, R9
|
|
MOVQ R8, SI
|
|
MOVQ R9, DX
|
|
MOVQ 0(SP), R8
|
|
XORQ R14, R8
|
|
MOVQ 48(SP), R9
|
|
XORQ R15, R9
|
|
RORXQ $20, R9, R9
|
|
MOVQ 96(SP), R10
|
|
XORQ BP, R10
|
|
RORXQ $21, R10, R10
|
|
MOVQ 144(SP), R11
|
|
XORQ SI, R11
|
|
RORXQ $43, R11, R11
|
|
MOVQ 192(SP), R12
|
|
XORQ DX, R12
|
|
RORXQ $50, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
XORQ R13, AX
|
|
MOVQ AX, 0(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 8(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 16(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 24(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 32(DI)
|
|
MOVQ 24(SP), R8
|
|
XORQ SI, R8
|
|
RORXQ $36, R8, R8
|
|
MOVQ 72(SP), R9
|
|
XORQ DX, R9
|
|
RORXQ $44, R9, R9
|
|
MOVQ 80(SP), R10
|
|
XORQ R14, R10
|
|
RORXQ $61, R10, R10
|
|
MOVQ 128(SP), R11
|
|
XORQ R15, R11
|
|
RORXQ $19, R11, R11
|
|
MOVQ 176(SP), R12
|
|
XORQ BP, R12
|
|
RORXQ $3, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 40(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 48(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 56(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 64(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 72(DI)
|
|
MOVQ 8(SP), R8
|
|
XORQ R15, R8
|
|
RORXQ $63, R8, R8
|
|
MOVQ 56(SP), R9
|
|
XORQ BP, R9
|
|
RORXQ $58, R9, R9
|
|
MOVQ 104(SP), R10
|
|
XORQ SI, R10
|
|
RORXQ $39, R10, R10
|
|
MOVQ 152(SP), R11
|
|
XORQ DX, R11
|
|
RORXQ $56, R11, R11
|
|
MOVQ 160(SP), R12
|
|
XORQ R14, R12
|
|
RORXQ $46, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 80(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 88(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 96(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 104(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 112(DI)
|
|
MOVQ 32(SP), R8
|
|
XORQ DX, R8
|
|
RORXQ $37, R8, R8
|
|
MOVQ 40(SP), R9
|
|
XORQ R14, R9
|
|
RORXQ $28, R9, R9
|
|
MOVQ 88(SP), R10
|
|
XORQ R15, R10
|
|
RORXQ $54, R10, R10
|
|
MOVQ 136(SP), R11
|
|
XORQ BP, R11
|
|
RORXQ $49, R11, R11
|
|
MOVQ 184(SP), R12
|
|
XORQ SI, R12
|
|
RORXQ $8, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 120(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 128(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 136(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 144(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 152(DI)
|
|
MOVQ 16(SP), R8
|
|
XORQ BP, R8
|
|
RORXQ $2, R8, R8
|
|
MOVQ 64(SP), R9
|
|
XORQ SI, R9
|
|
RORXQ $9, R9, R9
|
|
MOVQ 112(SP), R10
|
|
XORQ DX, R10
|
|
RORXQ $25, R10, R10
|
|
MOVQ 120(SP), R11
|
|
XORQ R14, R11
|
|
RORXQ $23, R11, R11
|
|
MOVQ 168(SP), R12
|
|
XORQ R15, R12
|
|
RORXQ $62, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 160(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 168(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 176(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 184(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 192(DI)
|
|
|
|
// Round 16
|
|
MOVQ $0x8000000000008002, R13
|
|
MOVQ 0(DI), AX
|
|
XORQ 40(DI), AX
|
|
XORQ 80(DI), AX
|
|
XORQ 120(DI), AX
|
|
XORQ 160(DI), AX
|
|
MOVQ 8(DI), BX
|
|
XORQ 48(DI), BX
|
|
XORQ 88(DI), BX
|
|
XORQ 128(DI), BX
|
|
XORQ 168(DI), BX
|
|
MOVQ 16(DI), CX
|
|
XORQ 56(DI), CX
|
|
XORQ 96(DI), CX
|
|
XORQ 136(DI), CX
|
|
XORQ 176(DI), CX
|
|
MOVQ 24(DI), DX
|
|
XORQ 64(DI), DX
|
|
XORQ 104(DI), DX
|
|
XORQ 144(DI), DX
|
|
XORQ 184(DI), DX
|
|
MOVQ 32(DI), SI
|
|
XORQ 72(DI), SI
|
|
XORQ 112(DI), SI
|
|
XORQ 152(DI), SI
|
|
XORQ 192(DI), SI
|
|
RORXQ $63, BX, R14
|
|
XORQ SI, R14
|
|
RORXQ $63, CX, R15
|
|
XORQ AX, R15
|
|
RORXQ $63, DX, BP
|
|
XORQ BX, BP
|
|
RORXQ $63, SI, R8
|
|
XORQ CX, R8
|
|
RORXQ $63, AX, R9
|
|
XORQ DX, R9
|
|
MOVQ R8, SI
|
|
MOVQ R9, DX
|
|
MOVQ 0(DI), R8
|
|
XORQ R14, R8
|
|
MOVQ 48(DI), R9
|
|
XORQ R15, R9
|
|
RORXQ $20, R9, R9
|
|
MOVQ 96(DI), R10
|
|
XORQ BP, R10
|
|
RORXQ $21, R10, R10
|
|
MOVQ 144(DI), R11
|
|
XORQ SI, R11
|
|
RORXQ $43, R11, R11
|
|
MOVQ 192(DI), R12
|
|
XORQ DX, R12
|
|
RORXQ $50, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
XORQ R13, AX
|
|
MOVQ AX, 0(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 8(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 16(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 24(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 32(SP)
|
|
MOVQ 24(DI), R8
|
|
XORQ SI, R8
|
|
RORXQ $36, R8, R8
|
|
MOVQ 72(DI), R9
|
|
XORQ DX, R9
|
|
RORXQ $44, R9, R9
|
|
MOVQ 80(DI), R10
|
|
XORQ R14, R10
|
|
RORXQ $61, R10, R10
|
|
MOVQ 128(DI), R11
|
|
XORQ R15, R11
|
|
RORXQ $19, R11, R11
|
|
MOVQ 176(DI), R12
|
|
XORQ BP, R12
|
|
RORXQ $3, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 40(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 48(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 56(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 64(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 72(SP)
|
|
MOVQ 8(DI), R8
|
|
XORQ R15, R8
|
|
RORXQ $63, R8, R8
|
|
MOVQ 56(DI), R9
|
|
XORQ BP, R9
|
|
RORXQ $58, R9, R9
|
|
MOVQ 104(DI), R10
|
|
XORQ SI, R10
|
|
RORXQ $39, R10, R10
|
|
MOVQ 152(DI), R11
|
|
XORQ DX, R11
|
|
RORXQ $56, R11, R11
|
|
MOVQ 160(DI), R12
|
|
XORQ R14, R12
|
|
RORXQ $46, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 80(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 88(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 96(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 104(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 112(SP)
|
|
MOVQ 32(DI), R8
|
|
XORQ DX, R8
|
|
RORXQ $37, R8, R8
|
|
MOVQ 40(DI), R9
|
|
XORQ R14, R9
|
|
RORXQ $28, R9, R9
|
|
MOVQ 88(DI), R10
|
|
XORQ R15, R10
|
|
RORXQ $54, R10, R10
|
|
MOVQ 136(DI), R11
|
|
XORQ BP, R11
|
|
RORXQ $49, R11, R11
|
|
MOVQ 184(DI), R12
|
|
XORQ SI, R12
|
|
RORXQ $8, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 120(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 128(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 136(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 144(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 152(SP)
|
|
MOVQ 16(DI), R8
|
|
XORQ BP, R8
|
|
RORXQ $2, R8, R8
|
|
MOVQ 64(DI), R9
|
|
XORQ SI, R9
|
|
RORXQ $9, R9, R9
|
|
MOVQ 112(DI), R10
|
|
XORQ DX, R10
|
|
RORXQ $25, R10, R10
|
|
MOVQ 120(DI), R11
|
|
XORQ R14, R11
|
|
RORXQ $23, R11, R11
|
|
MOVQ 168(DI), R12
|
|
XORQ R15, R12
|
|
RORXQ $62, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 160(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 168(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 176(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 184(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 192(SP)
|
|
|
|
// Round 17
|
|
MOVQ $0x8000000000000080, R13
|
|
MOVQ 0(SP), AX
|
|
XORQ 40(SP), AX
|
|
XORQ 80(SP), AX
|
|
XORQ 120(SP), AX
|
|
XORQ 160(SP), AX
|
|
MOVQ 8(SP), BX
|
|
XORQ 48(SP), BX
|
|
XORQ 88(SP), BX
|
|
XORQ 128(SP), BX
|
|
XORQ 168(SP), BX
|
|
MOVQ 16(SP), CX
|
|
XORQ 56(SP), CX
|
|
XORQ 96(SP), CX
|
|
XORQ 136(SP), CX
|
|
XORQ 176(SP), CX
|
|
MOVQ 24(SP), DX
|
|
XORQ 64(SP), DX
|
|
XORQ 104(SP), DX
|
|
XORQ 144(SP), DX
|
|
XORQ 184(SP), DX
|
|
MOVQ 32(SP), SI
|
|
XORQ 72(SP), SI
|
|
XORQ 112(SP), SI
|
|
XORQ 152(SP), SI
|
|
XORQ 192(SP), SI
|
|
RORXQ $63, BX, R14
|
|
XORQ SI, R14
|
|
RORXQ $63, CX, R15
|
|
XORQ AX, R15
|
|
RORXQ $63, DX, BP
|
|
XORQ BX, BP
|
|
RORXQ $63, SI, R8
|
|
XORQ CX, R8
|
|
RORXQ $63, AX, R9
|
|
XORQ DX, R9
|
|
MOVQ R8, SI
|
|
MOVQ R9, DX
|
|
MOVQ 0(SP), R8
|
|
XORQ R14, R8
|
|
MOVQ 48(SP), R9
|
|
XORQ R15, R9
|
|
RORXQ $20, R9, R9
|
|
MOVQ 96(SP), R10
|
|
XORQ BP, R10
|
|
RORXQ $21, R10, R10
|
|
MOVQ 144(SP), R11
|
|
XORQ SI, R11
|
|
RORXQ $43, R11, R11
|
|
MOVQ 192(SP), R12
|
|
XORQ DX, R12
|
|
RORXQ $50, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
XORQ R13, AX
|
|
MOVQ AX, 0(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 8(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 16(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 24(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 32(DI)
|
|
MOVQ 24(SP), R8
|
|
XORQ SI, R8
|
|
RORXQ $36, R8, R8
|
|
MOVQ 72(SP), R9
|
|
XORQ DX, R9
|
|
RORXQ $44, R9, R9
|
|
MOVQ 80(SP), R10
|
|
XORQ R14, R10
|
|
RORXQ $61, R10, R10
|
|
MOVQ 128(SP), R11
|
|
XORQ R15, R11
|
|
RORXQ $19, R11, R11
|
|
MOVQ 176(SP), R12
|
|
XORQ BP, R12
|
|
RORXQ $3, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 40(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 48(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 56(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 64(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 72(DI)
|
|
MOVQ 8(SP), R8
|
|
XORQ R15, R8
|
|
RORXQ $63, R8, R8
|
|
MOVQ 56(SP), R9
|
|
XORQ BP, R9
|
|
RORXQ $58, R9, R9
|
|
MOVQ 104(SP), R10
|
|
XORQ SI, R10
|
|
RORXQ $39, R10, R10
|
|
MOVQ 152(SP), R11
|
|
XORQ DX, R11
|
|
RORXQ $56, R11, R11
|
|
MOVQ 160(SP), R12
|
|
XORQ R14, R12
|
|
RORXQ $46, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 80(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 88(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 96(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 104(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 112(DI)
|
|
MOVQ 32(SP), R8
|
|
XORQ DX, R8
|
|
RORXQ $37, R8, R8
|
|
MOVQ 40(SP), R9
|
|
XORQ R14, R9
|
|
RORXQ $28, R9, R9
|
|
MOVQ 88(SP), R10
|
|
XORQ R15, R10
|
|
RORXQ $54, R10, R10
|
|
MOVQ 136(SP), R11
|
|
XORQ BP, R11
|
|
RORXQ $49, R11, R11
|
|
MOVQ 184(SP), R12
|
|
XORQ SI, R12
|
|
RORXQ $8, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 120(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 128(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 136(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 144(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 152(DI)
|
|
MOVQ 16(SP), R8
|
|
XORQ BP, R8
|
|
RORXQ $2, R8, R8
|
|
MOVQ 64(SP), R9
|
|
XORQ SI, R9
|
|
RORXQ $9, R9, R9
|
|
MOVQ 112(SP), R10
|
|
XORQ DX, R10
|
|
RORXQ $25, R10, R10
|
|
MOVQ 120(SP), R11
|
|
XORQ R14, R11
|
|
RORXQ $23, R11, R11
|
|
MOVQ 168(SP), R12
|
|
XORQ R15, R12
|
|
RORXQ $62, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 160(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 168(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 176(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 184(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 192(DI)
|
|
|
|
// Round 18
|
|
MOVQ $0x000000000000800a, R13
|
|
MOVQ 0(DI), AX
|
|
XORQ 40(DI), AX
|
|
XORQ 80(DI), AX
|
|
XORQ 120(DI), AX
|
|
XORQ 160(DI), AX
|
|
MOVQ 8(DI), BX
|
|
XORQ 48(DI), BX
|
|
XORQ 88(DI), BX
|
|
XORQ 128(DI), BX
|
|
XORQ 168(DI), BX
|
|
MOVQ 16(DI), CX
|
|
XORQ 56(DI), CX
|
|
XORQ 96(DI), CX
|
|
XORQ 136(DI), CX
|
|
XORQ 176(DI), CX
|
|
MOVQ 24(DI), DX
|
|
XORQ 64(DI), DX
|
|
XORQ 104(DI), DX
|
|
XORQ 144(DI), DX
|
|
XORQ 184(DI), DX
|
|
MOVQ 32(DI), SI
|
|
XORQ 72(DI), SI
|
|
XORQ 112(DI), SI
|
|
XORQ 152(DI), SI
|
|
XORQ 192(DI), SI
|
|
RORXQ $63, BX, R14
|
|
XORQ SI, R14
|
|
RORXQ $63, CX, R15
|
|
XORQ AX, R15
|
|
RORXQ $63, DX, BP
|
|
XORQ BX, BP
|
|
RORXQ $63, SI, R8
|
|
XORQ CX, R8
|
|
RORXQ $63, AX, R9
|
|
XORQ DX, R9
|
|
MOVQ R8, SI
|
|
MOVQ R9, DX
|
|
MOVQ 0(DI), R8
|
|
XORQ R14, R8
|
|
MOVQ 48(DI), R9
|
|
XORQ R15, R9
|
|
RORXQ $20, R9, R9
|
|
MOVQ 96(DI), R10
|
|
XORQ BP, R10
|
|
RORXQ $21, R10, R10
|
|
MOVQ 144(DI), R11
|
|
XORQ SI, R11
|
|
RORXQ $43, R11, R11
|
|
MOVQ 192(DI), R12
|
|
XORQ DX, R12
|
|
RORXQ $50, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
XORQ R13, AX
|
|
MOVQ AX, 0(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 8(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 16(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 24(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 32(SP)
|
|
MOVQ 24(DI), R8
|
|
XORQ SI, R8
|
|
RORXQ $36, R8, R8
|
|
MOVQ 72(DI), R9
|
|
XORQ DX, R9
|
|
RORXQ $44, R9, R9
|
|
MOVQ 80(DI), R10
|
|
XORQ R14, R10
|
|
RORXQ $61, R10, R10
|
|
MOVQ 128(DI), R11
|
|
XORQ R15, R11
|
|
RORXQ $19, R11, R11
|
|
MOVQ 176(DI), R12
|
|
XORQ BP, R12
|
|
RORXQ $3, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 40(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 48(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 56(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 64(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 72(SP)
|
|
MOVQ 8(DI), R8
|
|
XORQ R15, R8
|
|
RORXQ $63, R8, R8
|
|
MOVQ 56(DI), R9
|
|
XORQ BP, R9
|
|
RORXQ $58, R9, R9
|
|
MOVQ 104(DI), R10
|
|
XORQ SI, R10
|
|
RORXQ $39, R10, R10
|
|
MOVQ 152(DI), R11
|
|
XORQ DX, R11
|
|
RORXQ $56, R11, R11
|
|
MOVQ 160(DI), R12
|
|
XORQ R14, R12
|
|
RORXQ $46, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 80(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 88(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 96(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 104(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 112(SP)
|
|
MOVQ 32(DI), R8
|
|
XORQ DX, R8
|
|
RORXQ $37, R8, R8
|
|
MOVQ 40(DI), R9
|
|
XORQ R14, R9
|
|
RORXQ $28, R9, R9
|
|
MOVQ 88(DI), R10
|
|
XORQ R15, R10
|
|
RORXQ $54, R10, R10
|
|
MOVQ 136(DI), R11
|
|
XORQ BP, R11
|
|
RORXQ $49, R11, R11
|
|
MOVQ 184(DI), R12
|
|
XORQ SI, R12
|
|
RORXQ $8, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 120(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 128(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 136(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 144(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 152(SP)
|
|
MOVQ 16(DI), R8
|
|
XORQ BP, R8
|
|
RORXQ $2, R8, R8
|
|
MOVQ 64(DI), R9
|
|
XORQ SI, R9
|
|
RORXQ $9, R9, R9
|
|
MOVQ 112(DI), R10
|
|
XORQ DX, R10
|
|
RORXQ $25, R10, R10
|
|
MOVQ 120(DI), R11
|
|
XORQ R14, R11
|
|
RORXQ $23, R11, R11
|
|
MOVQ 168(DI), R12
|
|
XORQ R15, R12
|
|
RORXQ $62, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 160(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 168(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 176(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 184(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 192(SP)
|
|
|
|
// Round 19
|
|
MOVQ $0x800000008000000a, R13
|
|
MOVQ 0(SP), AX
|
|
XORQ 40(SP), AX
|
|
XORQ 80(SP), AX
|
|
XORQ 120(SP), AX
|
|
XORQ 160(SP), AX
|
|
MOVQ 8(SP), BX
|
|
XORQ 48(SP), BX
|
|
XORQ 88(SP), BX
|
|
XORQ 128(SP), BX
|
|
XORQ 168(SP), BX
|
|
MOVQ 16(SP), CX
|
|
XORQ 56(SP), CX
|
|
XORQ 96(SP), CX
|
|
XORQ 136(SP), CX
|
|
XORQ 176(SP), CX
|
|
MOVQ 24(SP), DX
|
|
XORQ 64(SP), DX
|
|
XORQ 104(SP), DX
|
|
XORQ 144(SP), DX
|
|
XORQ 184(SP), DX
|
|
MOVQ 32(SP), SI
|
|
XORQ 72(SP), SI
|
|
XORQ 112(SP), SI
|
|
XORQ 152(SP), SI
|
|
XORQ 192(SP), SI
|
|
RORXQ $63, BX, R14
|
|
XORQ SI, R14
|
|
RORXQ $63, CX, R15
|
|
XORQ AX, R15
|
|
RORXQ $63, DX, BP
|
|
XORQ BX, BP
|
|
RORXQ $63, SI, R8
|
|
XORQ CX, R8
|
|
RORXQ $63, AX, R9
|
|
XORQ DX, R9
|
|
MOVQ R8, SI
|
|
MOVQ R9, DX
|
|
MOVQ 0(SP), R8
|
|
XORQ R14, R8
|
|
MOVQ 48(SP), R9
|
|
XORQ R15, R9
|
|
RORXQ $20, R9, R9
|
|
MOVQ 96(SP), R10
|
|
XORQ BP, R10
|
|
RORXQ $21, R10, R10
|
|
MOVQ 144(SP), R11
|
|
XORQ SI, R11
|
|
RORXQ $43, R11, R11
|
|
MOVQ 192(SP), R12
|
|
XORQ DX, R12
|
|
RORXQ $50, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
XORQ R13, AX
|
|
MOVQ AX, 0(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 8(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 16(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 24(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 32(DI)
|
|
MOVQ 24(SP), R8
|
|
XORQ SI, R8
|
|
RORXQ $36, R8, R8
|
|
MOVQ 72(SP), R9
|
|
XORQ DX, R9
|
|
RORXQ $44, R9, R9
|
|
MOVQ 80(SP), R10
|
|
XORQ R14, R10
|
|
RORXQ $61, R10, R10
|
|
MOVQ 128(SP), R11
|
|
XORQ R15, R11
|
|
RORXQ $19, R11, R11
|
|
MOVQ 176(SP), R12
|
|
XORQ BP, R12
|
|
RORXQ $3, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 40(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 48(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 56(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 64(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 72(DI)
|
|
MOVQ 8(SP), R8
|
|
XORQ R15, R8
|
|
RORXQ $63, R8, R8
|
|
MOVQ 56(SP), R9
|
|
XORQ BP, R9
|
|
RORXQ $58, R9, R9
|
|
MOVQ 104(SP), R10
|
|
XORQ SI, R10
|
|
RORXQ $39, R10, R10
|
|
MOVQ 152(SP), R11
|
|
XORQ DX, R11
|
|
RORXQ $56, R11, R11
|
|
MOVQ 160(SP), R12
|
|
XORQ R14, R12
|
|
RORXQ $46, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 80(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 88(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 96(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 104(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 112(DI)
|
|
MOVQ 32(SP), R8
|
|
XORQ DX, R8
|
|
RORXQ $37, R8, R8
|
|
MOVQ 40(SP), R9
|
|
XORQ R14, R9
|
|
RORXQ $28, R9, R9
|
|
MOVQ 88(SP), R10
|
|
XORQ R15, R10
|
|
RORXQ $54, R10, R10
|
|
MOVQ 136(SP), R11
|
|
XORQ BP, R11
|
|
RORXQ $49, R11, R11
|
|
MOVQ 184(SP), R12
|
|
XORQ SI, R12
|
|
RORXQ $8, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 120(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 128(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 136(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 144(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 152(DI)
|
|
MOVQ 16(SP), R8
|
|
XORQ BP, R8
|
|
RORXQ $2, R8, R8
|
|
MOVQ 64(SP), R9
|
|
XORQ SI, R9
|
|
RORXQ $9, R9, R9
|
|
MOVQ 112(SP), R10
|
|
XORQ DX, R10
|
|
RORXQ $25, R10, R10
|
|
MOVQ 120(SP), R11
|
|
XORQ R14, R11
|
|
RORXQ $23, R11, R11
|
|
MOVQ 168(SP), R12
|
|
XORQ R15, R12
|
|
RORXQ $62, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 160(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 168(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 176(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 184(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 192(DI)
|
|
|
|
// Round 20
|
|
MOVQ $0x8000000080008081, R13
|
|
MOVQ 0(DI), AX
|
|
XORQ 40(DI), AX
|
|
XORQ 80(DI), AX
|
|
XORQ 120(DI), AX
|
|
XORQ 160(DI), AX
|
|
MOVQ 8(DI), BX
|
|
XORQ 48(DI), BX
|
|
XORQ 88(DI), BX
|
|
XORQ 128(DI), BX
|
|
XORQ 168(DI), BX
|
|
MOVQ 16(DI), CX
|
|
XORQ 56(DI), CX
|
|
XORQ 96(DI), CX
|
|
XORQ 136(DI), CX
|
|
XORQ 176(DI), CX
|
|
MOVQ 24(DI), DX
|
|
XORQ 64(DI), DX
|
|
XORQ 104(DI), DX
|
|
XORQ 144(DI), DX
|
|
XORQ 184(DI), DX
|
|
MOVQ 32(DI), SI
|
|
XORQ 72(DI), SI
|
|
XORQ 112(DI), SI
|
|
XORQ 152(DI), SI
|
|
XORQ 192(DI), SI
|
|
RORXQ $63, BX, R14
|
|
XORQ SI, R14
|
|
RORXQ $63, CX, R15
|
|
XORQ AX, R15
|
|
RORXQ $63, DX, BP
|
|
XORQ BX, BP
|
|
RORXQ $63, SI, R8
|
|
XORQ CX, R8
|
|
RORXQ $63, AX, R9
|
|
XORQ DX, R9
|
|
MOVQ R8, SI
|
|
MOVQ R9, DX
|
|
MOVQ 0(DI), R8
|
|
XORQ R14, R8
|
|
MOVQ 48(DI), R9
|
|
XORQ R15, R9
|
|
RORXQ $20, R9, R9
|
|
MOVQ 96(DI), R10
|
|
XORQ BP, R10
|
|
RORXQ $21, R10, R10
|
|
MOVQ 144(DI), R11
|
|
XORQ SI, R11
|
|
RORXQ $43, R11, R11
|
|
MOVQ 192(DI), R12
|
|
XORQ DX, R12
|
|
RORXQ $50, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
XORQ R13, AX
|
|
MOVQ AX, 0(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 8(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 16(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 24(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 32(SP)
|
|
MOVQ 24(DI), R8
|
|
XORQ SI, R8
|
|
RORXQ $36, R8, R8
|
|
MOVQ 72(DI), R9
|
|
XORQ DX, R9
|
|
RORXQ $44, R9, R9
|
|
MOVQ 80(DI), R10
|
|
XORQ R14, R10
|
|
RORXQ $61, R10, R10
|
|
MOVQ 128(DI), R11
|
|
XORQ R15, R11
|
|
RORXQ $19, R11, R11
|
|
MOVQ 176(DI), R12
|
|
XORQ BP, R12
|
|
RORXQ $3, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 40(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 48(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 56(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 64(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 72(SP)
|
|
MOVQ 8(DI), R8
|
|
XORQ R15, R8
|
|
RORXQ $63, R8, R8
|
|
MOVQ 56(DI), R9
|
|
XORQ BP, R9
|
|
RORXQ $58, R9, R9
|
|
MOVQ 104(DI), R10
|
|
XORQ SI, R10
|
|
RORXQ $39, R10, R10
|
|
MOVQ 152(DI), R11
|
|
XORQ DX, R11
|
|
RORXQ $56, R11, R11
|
|
MOVQ 160(DI), R12
|
|
XORQ R14, R12
|
|
RORXQ $46, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 80(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 88(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 96(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 104(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 112(SP)
|
|
MOVQ 32(DI), R8
|
|
XORQ DX, R8
|
|
RORXQ $37, R8, R8
|
|
MOVQ 40(DI), R9
|
|
XORQ R14, R9
|
|
RORXQ $28, R9, R9
|
|
MOVQ 88(DI), R10
|
|
XORQ R15, R10
|
|
RORXQ $54, R10, R10
|
|
MOVQ 136(DI), R11
|
|
XORQ BP, R11
|
|
RORXQ $49, R11, R11
|
|
MOVQ 184(DI), R12
|
|
XORQ SI, R12
|
|
RORXQ $8, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 120(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 128(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 136(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 144(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 152(SP)
|
|
MOVQ 16(DI), R8
|
|
XORQ BP, R8
|
|
RORXQ $2, R8, R8
|
|
MOVQ 64(DI), R9
|
|
XORQ SI, R9
|
|
RORXQ $9, R9, R9
|
|
MOVQ 112(DI), R10
|
|
XORQ DX, R10
|
|
RORXQ $25, R10, R10
|
|
MOVQ 120(DI), R11
|
|
XORQ R14, R11
|
|
RORXQ $23, R11, R11
|
|
MOVQ 168(DI), R12
|
|
XORQ R15, R12
|
|
RORXQ $62, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 160(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 168(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 176(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 184(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 192(SP)
|
|
|
|
// Round 21
|
|
MOVQ $0x8000000000008080, R13
|
|
MOVQ 0(SP), AX
|
|
XORQ 40(SP), AX
|
|
XORQ 80(SP), AX
|
|
XORQ 120(SP), AX
|
|
XORQ 160(SP), AX
|
|
MOVQ 8(SP), BX
|
|
XORQ 48(SP), BX
|
|
XORQ 88(SP), BX
|
|
XORQ 128(SP), BX
|
|
XORQ 168(SP), BX
|
|
MOVQ 16(SP), CX
|
|
XORQ 56(SP), CX
|
|
XORQ 96(SP), CX
|
|
XORQ 136(SP), CX
|
|
XORQ 176(SP), CX
|
|
MOVQ 24(SP), DX
|
|
XORQ 64(SP), DX
|
|
XORQ 104(SP), DX
|
|
XORQ 144(SP), DX
|
|
XORQ 184(SP), DX
|
|
MOVQ 32(SP), SI
|
|
XORQ 72(SP), SI
|
|
XORQ 112(SP), SI
|
|
XORQ 152(SP), SI
|
|
XORQ 192(SP), SI
|
|
RORXQ $63, BX, R14
|
|
XORQ SI, R14
|
|
RORXQ $63, CX, R15
|
|
XORQ AX, R15
|
|
RORXQ $63, DX, BP
|
|
XORQ BX, BP
|
|
RORXQ $63, SI, R8
|
|
XORQ CX, R8
|
|
RORXQ $63, AX, R9
|
|
XORQ DX, R9
|
|
MOVQ R8, SI
|
|
MOVQ R9, DX
|
|
MOVQ 0(SP), R8
|
|
XORQ R14, R8
|
|
MOVQ 48(SP), R9
|
|
XORQ R15, R9
|
|
RORXQ $20, R9, R9
|
|
MOVQ 96(SP), R10
|
|
XORQ BP, R10
|
|
RORXQ $21, R10, R10
|
|
MOVQ 144(SP), R11
|
|
XORQ SI, R11
|
|
RORXQ $43, R11, R11
|
|
MOVQ 192(SP), R12
|
|
XORQ DX, R12
|
|
RORXQ $50, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
XORQ R13, AX
|
|
MOVQ AX, 0(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 8(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 16(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 24(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 32(DI)
|
|
MOVQ 24(SP), R8
|
|
XORQ SI, R8
|
|
RORXQ $36, R8, R8
|
|
MOVQ 72(SP), R9
|
|
XORQ DX, R9
|
|
RORXQ $44, R9, R9
|
|
MOVQ 80(SP), R10
|
|
XORQ R14, R10
|
|
RORXQ $61, R10, R10
|
|
MOVQ 128(SP), R11
|
|
XORQ R15, R11
|
|
RORXQ $19, R11, R11
|
|
MOVQ 176(SP), R12
|
|
XORQ BP, R12
|
|
RORXQ $3, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 40(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 48(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 56(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 64(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 72(DI)
|
|
MOVQ 8(SP), R8
|
|
XORQ R15, R8
|
|
RORXQ $63, R8, R8
|
|
MOVQ 56(SP), R9
|
|
XORQ BP, R9
|
|
RORXQ $58, R9, R9
|
|
MOVQ 104(SP), R10
|
|
XORQ SI, R10
|
|
RORXQ $39, R10, R10
|
|
MOVQ 152(SP), R11
|
|
XORQ DX, R11
|
|
RORXQ $56, R11, R11
|
|
MOVQ 160(SP), R12
|
|
XORQ R14, R12
|
|
RORXQ $46, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 80(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 88(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 96(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 104(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 112(DI)
|
|
MOVQ 32(SP), R8
|
|
XORQ DX, R8
|
|
RORXQ $37, R8, R8
|
|
MOVQ 40(SP), R9
|
|
XORQ R14, R9
|
|
RORXQ $28, R9, R9
|
|
MOVQ 88(SP), R10
|
|
XORQ R15, R10
|
|
RORXQ $54, R10, R10
|
|
MOVQ 136(SP), R11
|
|
XORQ BP, R11
|
|
RORXQ $49, R11, R11
|
|
MOVQ 184(SP), R12
|
|
XORQ SI, R12
|
|
RORXQ $8, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 120(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 128(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 136(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 144(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 152(DI)
|
|
MOVQ 16(SP), R8
|
|
XORQ BP, R8
|
|
RORXQ $2, R8, R8
|
|
MOVQ 64(SP), R9
|
|
XORQ SI, R9
|
|
RORXQ $9, R9, R9
|
|
MOVQ 112(SP), R10
|
|
XORQ DX, R10
|
|
RORXQ $25, R10, R10
|
|
MOVQ 120(SP), R11
|
|
XORQ R14, R11
|
|
RORXQ $23, R11, R11
|
|
MOVQ 168(SP), R12
|
|
XORQ R15, R12
|
|
RORXQ $62, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 160(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 168(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 176(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 184(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 192(DI)
|
|
|
|
// Round 22
|
|
MOVQ $0x0000000080000001, R13
|
|
MOVQ 0(DI), AX
|
|
XORQ 40(DI), AX
|
|
XORQ 80(DI), AX
|
|
XORQ 120(DI), AX
|
|
XORQ 160(DI), AX
|
|
MOVQ 8(DI), BX
|
|
XORQ 48(DI), BX
|
|
XORQ 88(DI), BX
|
|
XORQ 128(DI), BX
|
|
XORQ 168(DI), BX
|
|
MOVQ 16(DI), CX
|
|
XORQ 56(DI), CX
|
|
XORQ 96(DI), CX
|
|
XORQ 136(DI), CX
|
|
XORQ 176(DI), CX
|
|
MOVQ 24(DI), DX
|
|
XORQ 64(DI), DX
|
|
XORQ 104(DI), DX
|
|
XORQ 144(DI), DX
|
|
XORQ 184(DI), DX
|
|
MOVQ 32(DI), SI
|
|
XORQ 72(DI), SI
|
|
XORQ 112(DI), SI
|
|
XORQ 152(DI), SI
|
|
XORQ 192(DI), SI
|
|
RORXQ $63, BX, R14
|
|
XORQ SI, R14
|
|
RORXQ $63, CX, R15
|
|
XORQ AX, R15
|
|
RORXQ $63, DX, BP
|
|
XORQ BX, BP
|
|
RORXQ $63, SI, R8
|
|
XORQ CX, R8
|
|
RORXQ $63, AX, R9
|
|
XORQ DX, R9
|
|
MOVQ R8, SI
|
|
MOVQ R9, DX
|
|
MOVQ 0(DI), R8
|
|
XORQ R14, R8
|
|
MOVQ 48(DI), R9
|
|
XORQ R15, R9
|
|
RORXQ $20, R9, R9
|
|
MOVQ 96(DI), R10
|
|
XORQ BP, R10
|
|
RORXQ $21, R10, R10
|
|
MOVQ 144(DI), R11
|
|
XORQ SI, R11
|
|
RORXQ $43, R11, R11
|
|
MOVQ 192(DI), R12
|
|
XORQ DX, R12
|
|
RORXQ $50, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
XORQ R13, AX
|
|
MOVQ AX, 0(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 8(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 16(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 24(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 32(SP)
|
|
MOVQ 24(DI), R8
|
|
XORQ SI, R8
|
|
RORXQ $36, R8, R8
|
|
MOVQ 72(DI), R9
|
|
XORQ DX, R9
|
|
RORXQ $44, R9, R9
|
|
MOVQ 80(DI), R10
|
|
XORQ R14, R10
|
|
RORXQ $61, R10, R10
|
|
MOVQ 128(DI), R11
|
|
XORQ R15, R11
|
|
RORXQ $19, R11, R11
|
|
MOVQ 176(DI), R12
|
|
XORQ BP, R12
|
|
RORXQ $3, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 40(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 48(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 56(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 64(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 72(SP)
|
|
MOVQ 8(DI), R8
|
|
XORQ R15, R8
|
|
RORXQ $63, R8, R8
|
|
MOVQ 56(DI), R9
|
|
XORQ BP, R9
|
|
RORXQ $58, R9, R9
|
|
MOVQ 104(DI), R10
|
|
XORQ SI, R10
|
|
RORXQ $39, R10, R10
|
|
MOVQ 152(DI), R11
|
|
XORQ DX, R11
|
|
RORXQ $56, R11, R11
|
|
MOVQ 160(DI), R12
|
|
XORQ R14, R12
|
|
RORXQ $46, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 80(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 88(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 96(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 104(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 112(SP)
|
|
MOVQ 32(DI), R8
|
|
XORQ DX, R8
|
|
RORXQ $37, R8, R8
|
|
MOVQ 40(DI), R9
|
|
XORQ R14, R9
|
|
RORXQ $28, R9, R9
|
|
MOVQ 88(DI), R10
|
|
XORQ R15, R10
|
|
RORXQ $54, R10, R10
|
|
MOVQ 136(DI), R11
|
|
XORQ BP, R11
|
|
RORXQ $49, R11, R11
|
|
MOVQ 184(DI), R12
|
|
XORQ SI, R12
|
|
RORXQ $8, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 120(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 128(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 136(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 144(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 152(SP)
|
|
MOVQ 16(DI), R8
|
|
XORQ BP, R8
|
|
RORXQ $2, R8, R8
|
|
MOVQ 64(DI), R9
|
|
XORQ SI, R9
|
|
RORXQ $9, R9, R9
|
|
MOVQ 112(DI), R10
|
|
XORQ DX, R10
|
|
RORXQ $25, R10, R10
|
|
MOVQ 120(DI), R11
|
|
XORQ R14, R11
|
|
RORXQ $23, R11, R11
|
|
MOVQ 168(DI), R12
|
|
XORQ R15, R12
|
|
RORXQ $62, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 160(SP)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 168(SP)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 176(SP)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 184(SP)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 192(SP)
|
|
|
|
// Round 23
|
|
MOVQ $0x8000000080008008, R13
|
|
MOVQ 0(SP), AX
|
|
XORQ 40(SP), AX
|
|
XORQ 80(SP), AX
|
|
XORQ 120(SP), AX
|
|
XORQ 160(SP), AX
|
|
MOVQ 8(SP), BX
|
|
XORQ 48(SP), BX
|
|
XORQ 88(SP), BX
|
|
XORQ 128(SP), BX
|
|
XORQ 168(SP), BX
|
|
MOVQ 16(SP), CX
|
|
XORQ 56(SP), CX
|
|
XORQ 96(SP), CX
|
|
XORQ 136(SP), CX
|
|
XORQ 176(SP), CX
|
|
MOVQ 24(SP), DX
|
|
XORQ 64(SP), DX
|
|
XORQ 104(SP), DX
|
|
XORQ 144(SP), DX
|
|
XORQ 184(SP), DX
|
|
MOVQ 32(SP), SI
|
|
XORQ 72(SP), SI
|
|
XORQ 112(SP), SI
|
|
XORQ 152(SP), SI
|
|
XORQ 192(SP), SI
|
|
RORXQ $63, BX, R14
|
|
XORQ SI, R14
|
|
RORXQ $63, CX, R15
|
|
XORQ AX, R15
|
|
RORXQ $63, DX, BP
|
|
XORQ BX, BP
|
|
RORXQ $63, SI, R8
|
|
XORQ CX, R8
|
|
RORXQ $63, AX, R9
|
|
XORQ DX, R9
|
|
MOVQ R8, SI
|
|
MOVQ R9, DX
|
|
MOVQ 0(SP), R8
|
|
XORQ R14, R8
|
|
MOVQ 48(SP), R9
|
|
XORQ R15, R9
|
|
RORXQ $20, R9, R9
|
|
MOVQ 96(SP), R10
|
|
XORQ BP, R10
|
|
RORXQ $21, R10, R10
|
|
MOVQ 144(SP), R11
|
|
XORQ SI, R11
|
|
RORXQ $43, R11, R11
|
|
MOVQ 192(SP), R12
|
|
XORQ DX, R12
|
|
RORXQ $50, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
XORQ R13, AX
|
|
MOVQ AX, 0(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 8(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 16(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 24(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 32(DI)
|
|
MOVQ 24(SP), R8
|
|
XORQ SI, R8
|
|
RORXQ $36, R8, R8
|
|
MOVQ 72(SP), R9
|
|
XORQ DX, R9
|
|
RORXQ $44, R9, R9
|
|
MOVQ 80(SP), R10
|
|
XORQ R14, R10
|
|
RORXQ $61, R10, R10
|
|
MOVQ 128(SP), R11
|
|
XORQ R15, R11
|
|
RORXQ $19, R11, R11
|
|
MOVQ 176(SP), R12
|
|
XORQ BP, R12
|
|
RORXQ $3, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 40(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 48(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 56(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 64(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 72(DI)
|
|
MOVQ 8(SP), R8
|
|
XORQ R15, R8
|
|
RORXQ $63, R8, R8
|
|
MOVQ 56(SP), R9
|
|
XORQ BP, R9
|
|
RORXQ $58, R9, R9
|
|
MOVQ 104(SP), R10
|
|
XORQ SI, R10
|
|
RORXQ $39, R10, R10
|
|
MOVQ 152(SP), R11
|
|
XORQ DX, R11
|
|
RORXQ $56, R11, R11
|
|
MOVQ 160(SP), R12
|
|
XORQ R14, R12
|
|
RORXQ $46, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 80(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 88(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 96(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 104(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 112(DI)
|
|
MOVQ 32(SP), R8
|
|
XORQ DX, R8
|
|
RORXQ $37, R8, R8
|
|
MOVQ 40(SP), R9
|
|
XORQ R14, R9
|
|
RORXQ $28, R9, R9
|
|
MOVQ 88(SP), R10
|
|
XORQ R15, R10
|
|
RORXQ $54, R10, R10
|
|
MOVQ 136(SP), R11
|
|
XORQ BP, R11
|
|
RORXQ $49, R11, R11
|
|
MOVQ 184(SP), R12
|
|
XORQ SI, R12
|
|
RORXQ $8, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 120(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 128(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 136(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 144(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 152(DI)
|
|
MOVQ 16(SP), R8
|
|
XORQ BP, R8
|
|
RORXQ $2, R8, R8
|
|
MOVQ 64(SP), R9
|
|
XORQ SI, R9
|
|
RORXQ $9, R9, R9
|
|
MOVQ 112(SP), R10
|
|
XORQ DX, R10
|
|
RORXQ $25, R10, R10
|
|
MOVQ 120(SP), R11
|
|
XORQ R14, R11
|
|
RORXQ $23, R11, R11
|
|
MOVQ 168(SP), R12
|
|
XORQ R15, R12
|
|
RORXQ $62, R12, R12
|
|
ANDNQ R10, R9, AX
|
|
XORQ R8, AX
|
|
MOVQ AX, 160(DI)
|
|
ANDNQ R11, R10, AX
|
|
XORQ R9, AX
|
|
MOVQ AX, 168(DI)
|
|
ANDNQ R12, R11, AX
|
|
XORQ R10, AX
|
|
MOVQ AX, 176(DI)
|
|
ANDNQ R8, R12, AX
|
|
XORQ R11, AX
|
|
MOVQ AX, 184(DI)
|
|
ANDNQ R9, R8, AX
|
|
XORQ R12, AX
|
|
MOVQ AX, 192(DI)
|
|
RET
|