go-ethereum/crypto/keccak/keccakf_amd64_bmi2.s

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