blob: c3895478ed0c5560ee9c06b873cc1b46971544c8 [file] [log] [blame]
// Code generated by command: go run blamka_amd64.go -out ../blamka_amd64.s -pkg argon2. DO NOT EDIT.
//go:build amd64 && gc && !purego
#include "textflag.h"
// func blamkaSSE4(b *block)
// Requires: SSE2, SSSE3
TEXT ·blamkaSSE4(SB), NOSPLIT, $0-8
MOVQ b+0(FP), AX
MOVOU ·c40<>+0(SB), X10
MOVOU ·c48<>+0(SB), X11
MOVOU (AX), X0
MOVOU 16(AX), X1
MOVOU 32(AX), X2
MOVOU 48(AX), X3
MOVOU 64(AX), X4
MOVOU 80(AX), X5
MOVOU 96(AX), X6
MOVOU 112(AX), X7
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFD $0xb1, X6, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
PSHUFB X10, X2
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFB X11, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
MOVO X2, X8
PADDQ X2, X8
PSRLQ $0x3f, X2
PXOR X8, X2
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFD $0xb1, X7, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
PSHUFB X10, X3
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFB X11, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
MOVO X3, X8
PADDQ X3, X8
PSRLQ $0x3f, X3
PXOR X8, X3
MOVO X4, X8
MOVO X5, X4
MOVO X8, X5
MOVO X6, X8
PUNPCKLQDQ X6, X9
PUNPCKHQDQ X7, X6
PUNPCKHQDQ X9, X6
PUNPCKLQDQ X7, X9
MOVO X8, X7
MOVO X2, X8
PUNPCKHQDQ X9, X7
PUNPCKLQDQ X3, X9
PUNPCKHQDQ X9, X2
PUNPCKLQDQ X8, X9
PUNPCKHQDQ X9, X3
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFD $0xb1, X6, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
PSHUFB X10, X2
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFB X11, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
MOVO X2, X8
PADDQ X2, X8
PSRLQ $0x3f, X2
PXOR X8, X2
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFD $0xb1, X7, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
PSHUFB X10, X3
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFB X11, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
MOVO X3, X8
PADDQ X3, X8
PSRLQ $0x3f, X3
PXOR X8, X3
MOVO X4, X8
MOVO X5, X4
MOVO X8, X5
MOVO X2, X8
PUNPCKLQDQ X2, X9
PUNPCKHQDQ X3, X2
PUNPCKHQDQ X9, X2
PUNPCKLQDQ X3, X9
MOVO X8, X3
MOVO X6, X8
PUNPCKHQDQ X9, X3
PUNPCKLQDQ X7, X9
PUNPCKHQDQ X9, X6
PUNPCKLQDQ X8, X9
PUNPCKHQDQ X9, X7
MOVOU X0, (AX)
MOVOU X1, 16(AX)
MOVOU X2, 32(AX)
MOVOU X3, 48(AX)
MOVOU X4, 64(AX)
MOVOU X5, 80(AX)
MOVOU X6, 96(AX)
MOVOU X7, 112(AX)
MOVOU 128(AX), X0
MOVOU 144(AX), X1
MOVOU 160(AX), X2
MOVOU 176(AX), X3
MOVOU 192(AX), X4
MOVOU 208(AX), X5
MOVOU 224(AX), X6
MOVOU 240(AX), X7
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFD $0xb1, X6, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
PSHUFB X10, X2
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFB X11, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
MOVO X2, X8
PADDQ X2, X8
PSRLQ $0x3f, X2
PXOR X8, X2
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFD $0xb1, X7, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
PSHUFB X10, X3
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFB X11, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
MOVO X3, X8
PADDQ X3, X8
PSRLQ $0x3f, X3
PXOR X8, X3
MOVO X4, X8
MOVO X5, X4
MOVO X8, X5
MOVO X6, X8
PUNPCKLQDQ X6, X9
PUNPCKHQDQ X7, X6
PUNPCKHQDQ X9, X6
PUNPCKLQDQ X7, X9
MOVO X8, X7
MOVO X2, X8
PUNPCKHQDQ X9, X7
PUNPCKLQDQ X3, X9
PUNPCKHQDQ X9, X2
PUNPCKLQDQ X8, X9
PUNPCKHQDQ X9, X3
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFD $0xb1, X6, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
PSHUFB X10, X2
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFB X11, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
MOVO X2, X8
PADDQ X2, X8
PSRLQ $0x3f, X2
PXOR X8, X2
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFD $0xb1, X7, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
PSHUFB X10, X3
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFB X11, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
MOVO X3, X8
PADDQ X3, X8
PSRLQ $0x3f, X3
PXOR X8, X3
MOVO X4, X8
MOVO X5, X4
MOVO X8, X5
MOVO X2, X8
PUNPCKLQDQ X2, X9
PUNPCKHQDQ X3, X2
PUNPCKHQDQ X9, X2
PUNPCKLQDQ X3, X9
MOVO X8, X3
MOVO X6, X8
PUNPCKHQDQ X9, X3
PUNPCKLQDQ X7, X9
PUNPCKHQDQ X9, X6
PUNPCKLQDQ X8, X9
PUNPCKHQDQ X9, X7
MOVOU X0, 128(AX)
MOVOU X1, 144(AX)
MOVOU X2, 160(AX)
MOVOU X3, 176(AX)
MOVOU X4, 192(AX)
MOVOU X5, 208(AX)
MOVOU X6, 224(AX)
MOVOU X7, 240(AX)
MOVOU 256(AX), X0
MOVOU 272(AX), X1
MOVOU 288(AX), X2
MOVOU 304(AX), X3
MOVOU 320(AX), X4
MOVOU 336(AX), X5
MOVOU 352(AX), X6
MOVOU 368(AX), X7
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFD $0xb1, X6, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
PSHUFB X10, X2
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFB X11, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
MOVO X2, X8
PADDQ X2, X8
PSRLQ $0x3f, X2
PXOR X8, X2
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFD $0xb1, X7, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
PSHUFB X10, X3
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFB X11, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
MOVO X3, X8
PADDQ X3, X8
PSRLQ $0x3f, X3
PXOR X8, X3
MOVO X4, X8
MOVO X5, X4
MOVO X8, X5
MOVO X6, X8
PUNPCKLQDQ X6, X9
PUNPCKHQDQ X7, X6
PUNPCKHQDQ X9, X6
PUNPCKLQDQ X7, X9
MOVO X8, X7
MOVO X2, X8
PUNPCKHQDQ X9, X7
PUNPCKLQDQ X3, X9
PUNPCKHQDQ X9, X2
PUNPCKLQDQ X8, X9
PUNPCKHQDQ X9, X3
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFD $0xb1, X6, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
PSHUFB X10, X2
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFB X11, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
MOVO X2, X8
PADDQ X2, X8
PSRLQ $0x3f, X2
PXOR X8, X2
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFD $0xb1, X7, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
PSHUFB X10, X3
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFB X11, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
MOVO X3, X8
PADDQ X3, X8
PSRLQ $0x3f, X3
PXOR X8, X3
MOVO X4, X8
MOVO X5, X4
MOVO X8, X5
MOVO X2, X8
PUNPCKLQDQ X2, X9
PUNPCKHQDQ X3, X2
PUNPCKHQDQ X9, X2
PUNPCKLQDQ X3, X9
MOVO X8, X3
MOVO X6, X8
PUNPCKHQDQ X9, X3
PUNPCKLQDQ X7, X9
PUNPCKHQDQ X9, X6
PUNPCKLQDQ X8, X9
PUNPCKHQDQ X9, X7
MOVOU X0, 256(AX)
MOVOU X1, 272(AX)
MOVOU X2, 288(AX)
MOVOU X3, 304(AX)
MOVOU X4, 320(AX)
MOVOU X5, 336(AX)
MOVOU X6, 352(AX)
MOVOU X7, 368(AX)
MOVOU 384(AX), X0
MOVOU 400(AX), X1
MOVOU 416(AX), X2
MOVOU 432(AX), X3
MOVOU 448(AX), X4
MOVOU 464(AX), X5
MOVOU 480(AX), X6
MOVOU 496(AX), X7
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFD $0xb1, X6, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
PSHUFB X10, X2
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFB X11, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
MOVO X2, X8
PADDQ X2, X8
PSRLQ $0x3f, X2
PXOR X8, X2
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFD $0xb1, X7, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
PSHUFB X10, X3
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFB X11, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
MOVO X3, X8
PADDQ X3, X8
PSRLQ $0x3f, X3
PXOR X8, X3
MOVO X4, X8
MOVO X5, X4
MOVO X8, X5
MOVO X6, X8
PUNPCKLQDQ X6, X9
PUNPCKHQDQ X7, X6
PUNPCKHQDQ X9, X6
PUNPCKLQDQ X7, X9
MOVO X8, X7
MOVO X2, X8
PUNPCKHQDQ X9, X7
PUNPCKLQDQ X3, X9
PUNPCKHQDQ X9, X2
PUNPCKLQDQ X8, X9
PUNPCKHQDQ X9, X3
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFD $0xb1, X6, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
PSHUFB X10, X2
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFB X11, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
MOVO X2, X8
PADDQ X2, X8
PSRLQ $0x3f, X2
PXOR X8, X2
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFD $0xb1, X7, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
PSHUFB X10, X3
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFB X11, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
MOVO X3, X8
PADDQ X3, X8
PSRLQ $0x3f, X3
PXOR X8, X3
MOVO X4, X8
MOVO X5, X4
MOVO X8, X5
MOVO X2, X8
PUNPCKLQDQ X2, X9
PUNPCKHQDQ X3, X2
PUNPCKHQDQ X9, X2
PUNPCKLQDQ X3, X9
MOVO X8, X3
MOVO X6, X8
PUNPCKHQDQ X9, X3
PUNPCKLQDQ X7, X9
PUNPCKHQDQ X9, X6
PUNPCKLQDQ X8, X9
PUNPCKHQDQ X9, X7
MOVOU X0, 384(AX)
MOVOU X1, 400(AX)
MOVOU X2, 416(AX)
MOVOU X3, 432(AX)
MOVOU X4, 448(AX)
MOVOU X5, 464(AX)
MOVOU X6, 480(AX)
MOVOU X7, 496(AX)
MOVOU 512(AX), X0
MOVOU 528(AX), X1
MOVOU 544(AX), X2
MOVOU 560(AX), X3
MOVOU 576(AX), X4
MOVOU 592(AX), X5
MOVOU 608(AX), X6
MOVOU 624(AX), X7
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFD $0xb1, X6, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
PSHUFB X10, X2
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFB X11, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
MOVO X2, X8
PADDQ X2, X8
PSRLQ $0x3f, X2
PXOR X8, X2
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFD $0xb1, X7, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
PSHUFB X10, X3
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFB X11, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
MOVO X3, X8
PADDQ X3, X8
PSRLQ $0x3f, X3
PXOR X8, X3
MOVO X4, X8
MOVO X5, X4
MOVO X8, X5
MOVO X6, X8
PUNPCKLQDQ X6, X9
PUNPCKHQDQ X7, X6
PUNPCKHQDQ X9, X6
PUNPCKLQDQ X7, X9
MOVO X8, X7
MOVO X2, X8
PUNPCKHQDQ X9, X7
PUNPCKLQDQ X3, X9
PUNPCKHQDQ X9, X2
PUNPCKLQDQ X8, X9
PUNPCKHQDQ X9, X3
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFD $0xb1, X6, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
PSHUFB X10, X2
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFB X11, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
MOVO X2, X8
PADDQ X2, X8
PSRLQ $0x3f, X2
PXOR X8, X2
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFD $0xb1, X7, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
PSHUFB X10, X3
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFB X11, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
MOVO X3, X8
PADDQ X3, X8
PSRLQ $0x3f, X3
PXOR X8, X3
MOVO X4, X8
MOVO X5, X4
MOVO X8, X5
MOVO X2, X8
PUNPCKLQDQ X2, X9
PUNPCKHQDQ X3, X2
PUNPCKHQDQ X9, X2
PUNPCKLQDQ X3, X9
MOVO X8, X3
MOVO X6, X8
PUNPCKHQDQ X9, X3
PUNPCKLQDQ X7, X9
PUNPCKHQDQ X9, X6
PUNPCKLQDQ X8, X9
PUNPCKHQDQ X9, X7
MOVOU X0, 512(AX)
MOVOU X1, 528(AX)
MOVOU X2, 544(AX)
MOVOU X3, 560(AX)
MOVOU X4, 576(AX)
MOVOU X5, 592(AX)
MOVOU X6, 608(AX)
MOVOU X7, 624(AX)
MOVOU 640(AX), X0
MOVOU 656(AX), X1
MOVOU 672(AX), X2
MOVOU 688(AX), X3
MOVOU 704(AX), X4
MOVOU 720(AX), X5
MOVOU 736(AX), X6
MOVOU 752(AX), X7
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFD $0xb1, X6, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
PSHUFB X10, X2
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFB X11, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
MOVO X2, X8
PADDQ X2, X8
PSRLQ $0x3f, X2
PXOR X8, X2
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFD $0xb1, X7, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
PSHUFB X10, X3
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFB X11, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
MOVO X3, X8
PADDQ X3, X8
PSRLQ $0x3f, X3
PXOR X8, X3
MOVO X4, X8
MOVO X5, X4
MOVO X8, X5
MOVO X6, X8
PUNPCKLQDQ X6, X9
PUNPCKHQDQ X7, X6
PUNPCKHQDQ X9, X6
PUNPCKLQDQ X7, X9
MOVO X8, X7
MOVO X2, X8
PUNPCKHQDQ X9, X7
PUNPCKLQDQ X3, X9
PUNPCKHQDQ X9, X2
PUNPCKLQDQ X8, X9
PUNPCKHQDQ X9, X3
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFD $0xb1, X6, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
PSHUFB X10, X2
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFB X11, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
MOVO X2, X8
PADDQ X2, X8
PSRLQ $0x3f, X2
PXOR X8, X2
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFD $0xb1, X7, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
PSHUFB X10, X3
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFB X11, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
MOVO X3, X8
PADDQ X3, X8
PSRLQ $0x3f, X3
PXOR X8, X3
MOVO X4, X8
MOVO X5, X4
MOVO X8, X5
MOVO X2, X8
PUNPCKLQDQ X2, X9
PUNPCKHQDQ X3, X2
PUNPCKHQDQ X9, X2
PUNPCKLQDQ X3, X9
MOVO X8, X3
MOVO X6, X8
PUNPCKHQDQ X9, X3
PUNPCKLQDQ X7, X9
PUNPCKHQDQ X9, X6
PUNPCKLQDQ X8, X9
PUNPCKHQDQ X9, X7
MOVOU X0, 640(AX)
MOVOU X1, 656(AX)
MOVOU X2, 672(AX)
MOVOU X3, 688(AX)
MOVOU X4, 704(AX)
MOVOU X5, 720(AX)
MOVOU X6, 736(AX)
MOVOU X7, 752(AX)
MOVOU 768(AX), X0
MOVOU 784(AX), X1
MOVOU 800(AX), X2
MOVOU 816(AX), X3
MOVOU 832(AX), X4
MOVOU 848(AX), X5
MOVOU 864(AX), X6
MOVOU 880(AX), X7
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFD $0xb1, X6, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
PSHUFB X10, X2
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFB X11, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
MOVO X2, X8
PADDQ X2, X8
PSRLQ $0x3f, X2
PXOR X8, X2
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFD $0xb1, X7, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
PSHUFB X10, X3
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFB X11, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
MOVO X3, X8
PADDQ X3, X8
PSRLQ $0x3f, X3
PXOR X8, X3
MOVO X4, X8
MOVO X5, X4
MOVO X8, X5
MOVO X6, X8
PUNPCKLQDQ X6, X9
PUNPCKHQDQ X7, X6
PUNPCKHQDQ X9, X6
PUNPCKLQDQ X7, X9
MOVO X8, X7
MOVO X2, X8
PUNPCKHQDQ X9, X7
PUNPCKLQDQ X3, X9
PUNPCKHQDQ X9, X2
PUNPCKLQDQ X8, X9
PUNPCKHQDQ X9, X3
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFD $0xb1, X6, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
PSHUFB X10, X2
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFB X11, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
MOVO X2, X8
PADDQ X2, X8
PSRLQ $0x3f, X2
PXOR X8, X2
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFD $0xb1, X7, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
PSHUFB X10, X3
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFB X11, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
MOVO X3, X8
PADDQ X3, X8
PSRLQ $0x3f, X3
PXOR X8, X3
MOVO X4, X8
MOVO X5, X4
MOVO X8, X5
MOVO X2, X8
PUNPCKLQDQ X2, X9
PUNPCKHQDQ X3, X2
PUNPCKHQDQ X9, X2
PUNPCKLQDQ X3, X9
MOVO X8, X3
MOVO X6, X8
PUNPCKHQDQ X9, X3
PUNPCKLQDQ X7, X9
PUNPCKHQDQ X9, X6
PUNPCKLQDQ X8, X9
PUNPCKHQDQ X9, X7
MOVOU X0, 768(AX)
MOVOU X1, 784(AX)
MOVOU X2, 800(AX)
MOVOU X3, 816(AX)
MOVOU X4, 832(AX)
MOVOU X5, 848(AX)
MOVOU X6, 864(AX)
MOVOU X7, 880(AX)
MOVOU 896(AX), X0
MOVOU 912(AX), X1
MOVOU 928(AX), X2
MOVOU 944(AX), X3
MOVOU 960(AX), X4
MOVOU 976(AX), X5
MOVOU 992(AX), X6
MOVOU 1008(AX), X7
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFD $0xb1, X6, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
PSHUFB X10, X2
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFB X11, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
MOVO X2, X8
PADDQ X2, X8
PSRLQ $0x3f, X2
PXOR X8, X2
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFD $0xb1, X7, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
PSHUFB X10, X3
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFB X11, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
MOVO X3, X8
PADDQ X3, X8
PSRLQ $0x3f, X3
PXOR X8, X3
MOVO X4, X8
MOVO X5, X4
MOVO X8, X5
MOVO X6, X8
PUNPCKLQDQ X6, X9
PUNPCKHQDQ X7, X6
PUNPCKHQDQ X9, X6
PUNPCKLQDQ X7, X9
MOVO X8, X7
MOVO X2, X8
PUNPCKHQDQ X9, X7
PUNPCKLQDQ X3, X9
PUNPCKHQDQ X9, X2
PUNPCKLQDQ X8, X9
PUNPCKHQDQ X9, X3
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFD $0xb1, X6, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
PSHUFB X10, X2
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFB X11, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
MOVO X2, X8
PADDQ X2, X8
PSRLQ $0x3f, X2
PXOR X8, X2
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFD $0xb1, X7, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
PSHUFB X10, X3
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFB X11, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
MOVO X3, X8
PADDQ X3, X8
PSRLQ $0x3f, X3
PXOR X8, X3
MOVO X4, X8
MOVO X5, X4
MOVO X8, X5
MOVO X2, X8
PUNPCKLQDQ X2, X9
PUNPCKHQDQ X3, X2
PUNPCKHQDQ X9, X2
PUNPCKLQDQ X3, X9
MOVO X8, X3
MOVO X6, X8
PUNPCKHQDQ X9, X3
PUNPCKLQDQ X7, X9
PUNPCKHQDQ X9, X6
PUNPCKLQDQ X8, X9
PUNPCKHQDQ X9, X7
MOVOU X0, 896(AX)
MOVOU X1, 912(AX)
MOVOU X2, 928(AX)
MOVOU X3, 944(AX)
MOVOU X4, 960(AX)
MOVOU X5, 976(AX)
MOVOU X6, 992(AX)
MOVOU X7, 1008(AX)
MOVOU (AX), X0
MOVOU 128(AX), X1
MOVOU 256(AX), X2
MOVOU 384(AX), X3
MOVOU 512(AX), X4
MOVOU 640(AX), X5
MOVOU 768(AX), X6
MOVOU 896(AX), X7
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFD $0xb1, X6, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
PSHUFB X10, X2
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFB X11, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
MOVO X2, X8
PADDQ X2, X8
PSRLQ $0x3f, X2
PXOR X8, X2
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFD $0xb1, X7, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
PSHUFB X10, X3
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFB X11, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
MOVO X3, X8
PADDQ X3, X8
PSRLQ $0x3f, X3
PXOR X8, X3
MOVO X4, X8
MOVO X5, X4
MOVO X8, X5
MOVO X6, X8
PUNPCKLQDQ X6, X9
PUNPCKHQDQ X7, X6
PUNPCKHQDQ X9, X6
PUNPCKLQDQ X7, X9
MOVO X8, X7
MOVO X2, X8
PUNPCKHQDQ X9, X7
PUNPCKLQDQ X3, X9
PUNPCKHQDQ X9, X2
PUNPCKLQDQ X8, X9
PUNPCKHQDQ X9, X3
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFD $0xb1, X6, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
PSHUFB X10, X2
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFB X11, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
MOVO X2, X8
PADDQ X2, X8
PSRLQ $0x3f, X2
PXOR X8, X2
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFD $0xb1, X7, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
PSHUFB X10, X3
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFB X11, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
MOVO X3, X8
PADDQ X3, X8
PSRLQ $0x3f, X3
PXOR X8, X3
MOVO X4, X8
MOVO X5, X4
MOVO X8, X5
MOVO X2, X8
PUNPCKLQDQ X2, X9
PUNPCKHQDQ X3, X2
PUNPCKHQDQ X9, X2
PUNPCKLQDQ X3, X9
MOVO X8, X3
MOVO X6, X8
PUNPCKHQDQ X9, X3
PUNPCKLQDQ X7, X9
PUNPCKHQDQ X9, X6
PUNPCKLQDQ X8, X9
PUNPCKHQDQ X9, X7
MOVOU X0, (AX)
MOVOU X1, 128(AX)
MOVOU X2, 256(AX)
MOVOU X3, 384(AX)
MOVOU X4, 512(AX)
MOVOU X5, 640(AX)
MOVOU X6, 768(AX)
MOVOU X7, 896(AX)
MOVOU 16(AX), X0
MOVOU 144(AX), X1
MOVOU 272(AX), X2
MOVOU 400(AX), X3
MOVOU 528(AX), X4
MOVOU 656(AX), X5
MOVOU 784(AX), X6
MOVOU 912(AX), X7
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFD $0xb1, X6, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
PSHUFB X10, X2
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFB X11, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
MOVO X2, X8
PADDQ X2, X8
PSRLQ $0x3f, X2
PXOR X8, X2
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFD $0xb1, X7, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
PSHUFB X10, X3
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFB X11, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
MOVO X3, X8
PADDQ X3, X8
PSRLQ $0x3f, X3
PXOR X8, X3
MOVO X4, X8
MOVO X5, X4
MOVO X8, X5
MOVO X6, X8
PUNPCKLQDQ X6, X9
PUNPCKHQDQ X7, X6
PUNPCKHQDQ X9, X6
PUNPCKLQDQ X7, X9
MOVO X8, X7
MOVO X2, X8
PUNPCKHQDQ X9, X7
PUNPCKLQDQ X3, X9
PUNPCKHQDQ X9, X2
PUNPCKLQDQ X8, X9
PUNPCKHQDQ X9, X3
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFD $0xb1, X6, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
PSHUFB X10, X2
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFB X11, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
MOVO X2, X8
PADDQ X2, X8
PSRLQ $0x3f, X2
PXOR X8, X2
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFD $0xb1, X7, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
PSHUFB X10, X3
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFB X11, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
MOVO X3, X8
PADDQ X3, X8
PSRLQ $0x3f, X3
PXOR X8, X3
MOVO X4, X8
MOVO X5, X4
MOVO X8, X5
MOVO X2, X8
PUNPCKLQDQ X2, X9
PUNPCKHQDQ X3, X2
PUNPCKHQDQ X9, X2
PUNPCKLQDQ X3, X9
MOVO X8, X3
MOVO X6, X8
PUNPCKHQDQ X9, X3
PUNPCKLQDQ X7, X9
PUNPCKHQDQ X9, X6
PUNPCKLQDQ X8, X9
PUNPCKHQDQ X9, X7
MOVOU X0, 16(AX)
MOVOU X1, 144(AX)
MOVOU X2, 272(AX)
MOVOU X3, 400(AX)
MOVOU X4, 528(AX)
MOVOU X5, 656(AX)
MOVOU X6, 784(AX)
MOVOU X7, 912(AX)
MOVOU 32(AX), X0
MOVOU 160(AX), X1
MOVOU 288(AX), X2
MOVOU 416(AX), X3
MOVOU 544(AX), X4
MOVOU 672(AX), X5
MOVOU 800(AX), X6
MOVOU 928(AX), X7
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFD $0xb1, X6, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
PSHUFB X10, X2
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFB X11, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
MOVO X2, X8
PADDQ X2, X8
PSRLQ $0x3f, X2
PXOR X8, X2
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFD $0xb1, X7, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
PSHUFB X10, X3
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFB X11, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
MOVO X3, X8
PADDQ X3, X8
PSRLQ $0x3f, X3
PXOR X8, X3
MOVO X4, X8
MOVO X5, X4
MOVO X8, X5
MOVO X6, X8
PUNPCKLQDQ X6, X9
PUNPCKHQDQ X7, X6
PUNPCKHQDQ X9, X6
PUNPCKLQDQ X7, X9
MOVO X8, X7
MOVO X2, X8
PUNPCKHQDQ X9, X7
PUNPCKLQDQ X3, X9
PUNPCKHQDQ X9, X2
PUNPCKLQDQ X8, X9
PUNPCKHQDQ X9, X3
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFD $0xb1, X6, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
PSHUFB X10, X2
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFB X11, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
MOVO X2, X8
PADDQ X2, X8
PSRLQ $0x3f, X2
PXOR X8, X2
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFD $0xb1, X7, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
PSHUFB X10, X3
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFB X11, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
MOVO X3, X8
PADDQ X3, X8
PSRLQ $0x3f, X3
PXOR X8, X3
MOVO X4, X8
MOVO X5, X4
MOVO X8, X5
MOVO X2, X8
PUNPCKLQDQ X2, X9
PUNPCKHQDQ X3, X2
PUNPCKHQDQ X9, X2
PUNPCKLQDQ X3, X9
MOVO X8, X3
MOVO X6, X8
PUNPCKHQDQ X9, X3
PUNPCKLQDQ X7, X9
PUNPCKHQDQ X9, X6
PUNPCKLQDQ X8, X9
PUNPCKHQDQ X9, X7
MOVOU X0, 32(AX)
MOVOU X1, 160(AX)
MOVOU X2, 288(AX)
MOVOU X3, 416(AX)
MOVOU X4, 544(AX)
MOVOU X5, 672(AX)
MOVOU X6, 800(AX)
MOVOU X7, 928(AX)
MOVOU 48(AX), X0
MOVOU 176(AX), X1
MOVOU 304(AX), X2
MOVOU 432(AX), X3
MOVOU 560(AX), X4
MOVOU 688(AX), X5
MOVOU 816(AX), X6
MOVOU 944(AX), X7
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFD $0xb1, X6, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
PSHUFB X10, X2
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFB X11, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
MOVO X2, X8
PADDQ X2, X8
PSRLQ $0x3f, X2
PXOR X8, X2
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFD $0xb1, X7, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
PSHUFB X10, X3
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFB X11, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
MOVO X3, X8
PADDQ X3, X8
PSRLQ $0x3f, X3
PXOR X8, X3
MOVO X4, X8
MOVO X5, X4
MOVO X8, X5
MOVO X6, X8
PUNPCKLQDQ X6, X9
PUNPCKHQDQ X7, X6
PUNPCKHQDQ X9, X6
PUNPCKLQDQ X7, X9
MOVO X8, X7
MOVO X2, X8
PUNPCKHQDQ X9, X7
PUNPCKLQDQ X3, X9
PUNPCKHQDQ X9, X2
PUNPCKLQDQ X8, X9
PUNPCKHQDQ X9, X3
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFD $0xb1, X6, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
PSHUFB X10, X2
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFB X11, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
MOVO X2, X8
PADDQ X2, X8
PSRLQ $0x3f, X2
PXOR X8, X2
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFD $0xb1, X7, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
PSHUFB X10, X3
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFB X11, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
MOVO X3, X8
PADDQ X3, X8
PSRLQ $0x3f, X3
PXOR X8, X3
MOVO X4, X8
MOVO X5, X4
MOVO X8, X5
MOVO X2, X8
PUNPCKLQDQ X2, X9
PUNPCKHQDQ X3, X2
PUNPCKHQDQ X9, X2
PUNPCKLQDQ X3, X9
MOVO X8, X3
MOVO X6, X8
PUNPCKHQDQ X9, X3
PUNPCKLQDQ X7, X9
PUNPCKHQDQ X9, X6
PUNPCKLQDQ X8, X9
PUNPCKHQDQ X9, X7
MOVOU X0, 48(AX)
MOVOU X1, 176(AX)
MOVOU X2, 304(AX)
MOVOU X3, 432(AX)
MOVOU X4, 560(AX)
MOVOU X5, 688(AX)
MOVOU X6, 816(AX)
MOVOU X7, 944(AX)
MOVOU 64(AX), X0
MOVOU 192(AX), X1
MOVOU 320(AX), X2
MOVOU 448(AX), X3
MOVOU 576(AX), X4
MOVOU 704(AX), X5
MOVOU 832(AX), X6
MOVOU 960(AX), X7
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFD $0xb1, X6, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
PSHUFB X10, X2
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFB X11, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
MOVO X2, X8
PADDQ X2, X8
PSRLQ $0x3f, X2
PXOR X8, X2
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFD $0xb1, X7, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
PSHUFB X10, X3
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFB X11, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
MOVO X3, X8
PADDQ X3, X8
PSRLQ $0x3f, X3
PXOR X8, X3
MOVO X4, X8
MOVO X5, X4
MOVO X8, X5
MOVO X6, X8
PUNPCKLQDQ X6, X9
PUNPCKHQDQ X7, X6
PUNPCKHQDQ X9, X6
PUNPCKLQDQ X7, X9
MOVO X8, X7
MOVO X2, X8
PUNPCKHQDQ X9, X7
PUNPCKLQDQ X3, X9
PUNPCKHQDQ X9, X2
PUNPCKLQDQ X8, X9
PUNPCKHQDQ X9, X3
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFD $0xb1, X6, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
PSHUFB X10, X2
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFB X11, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
MOVO X2, X8
PADDQ X2, X8
PSRLQ $0x3f, X2
PXOR X8, X2
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFD $0xb1, X7, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
PSHUFB X10, X3
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFB X11, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
MOVO X3, X8
PADDQ X3, X8
PSRLQ $0x3f, X3
PXOR X8, X3
MOVO X4, X8
MOVO X5, X4
MOVO X8, X5
MOVO X2, X8
PUNPCKLQDQ X2, X9
PUNPCKHQDQ X3, X2
PUNPCKHQDQ X9, X2
PUNPCKLQDQ X3, X9
MOVO X8, X3
MOVO X6, X8
PUNPCKHQDQ X9, X3
PUNPCKLQDQ X7, X9
PUNPCKHQDQ X9, X6
PUNPCKLQDQ X8, X9
PUNPCKHQDQ X9, X7
MOVOU X0, 64(AX)
MOVOU X1, 192(AX)
MOVOU X2, 320(AX)
MOVOU X3, 448(AX)
MOVOU X4, 576(AX)
MOVOU X5, 704(AX)
MOVOU X6, 832(AX)
MOVOU X7, 960(AX)
MOVOU 80(AX), X0
MOVOU 208(AX), X1
MOVOU 336(AX), X2
MOVOU 464(AX), X3
MOVOU 592(AX), X4
MOVOU 720(AX), X5
MOVOU 848(AX), X6
MOVOU 976(AX), X7
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFD $0xb1, X6, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
PSHUFB X10, X2
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFB X11, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
MOVO X2, X8
PADDQ X2, X8
PSRLQ $0x3f, X2
PXOR X8, X2
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFD $0xb1, X7, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
PSHUFB X10, X3
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFB X11, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
MOVO X3, X8
PADDQ X3, X8
PSRLQ $0x3f, X3
PXOR X8, X3
MOVO X4, X8
MOVO X5, X4
MOVO X8, X5
MOVO X6, X8
PUNPCKLQDQ X6, X9
PUNPCKHQDQ X7, X6
PUNPCKHQDQ X9, X6
PUNPCKLQDQ X7, X9
MOVO X8, X7
MOVO X2, X8
PUNPCKHQDQ X9, X7
PUNPCKLQDQ X3, X9
PUNPCKHQDQ X9, X2
PUNPCKLQDQ X8, X9
PUNPCKHQDQ X9, X3
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFD $0xb1, X6, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
PSHUFB X10, X2
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFB X11, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
MOVO X2, X8
PADDQ X2, X8
PSRLQ $0x3f, X2
PXOR X8, X2
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFD $0xb1, X7, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
PSHUFB X10, X3
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFB X11, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
MOVO X3, X8
PADDQ X3, X8
PSRLQ $0x3f, X3
PXOR X8, X3
MOVO X4, X8
MOVO X5, X4
MOVO X8, X5
MOVO X2, X8
PUNPCKLQDQ X2, X9
PUNPCKHQDQ X3, X2
PUNPCKHQDQ X9, X2
PUNPCKLQDQ X3, X9
MOVO X8, X3
MOVO X6, X8
PUNPCKHQDQ X9, X3
PUNPCKLQDQ X7, X9
PUNPCKHQDQ X9, X6
PUNPCKLQDQ X8, X9
PUNPCKHQDQ X9, X7
MOVOU X0, 80(AX)
MOVOU X1, 208(AX)
MOVOU X2, 336(AX)
MOVOU X3, 464(AX)
MOVOU X4, 592(AX)
MOVOU X5, 720(AX)
MOVOU X6, 848(AX)
MOVOU X7, 976(AX)
MOVOU 96(AX), X0
MOVOU 224(AX), X1
MOVOU 352(AX), X2
MOVOU 480(AX), X3
MOVOU 608(AX), X4
MOVOU 736(AX), X5
MOVOU 864(AX), X6
MOVOU 992(AX), X7
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFD $0xb1, X6, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
PSHUFB X10, X2
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFB X11, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
MOVO X2, X8
PADDQ X2, X8
PSRLQ $0x3f, X2
PXOR X8, X2
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFD $0xb1, X7, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
PSHUFB X10, X3
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFB X11, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
MOVO X3, X8
PADDQ X3, X8
PSRLQ $0x3f, X3
PXOR X8, X3
MOVO X4, X8
MOVO X5, X4
MOVO X8, X5
MOVO X6, X8
PUNPCKLQDQ X6, X9
PUNPCKHQDQ X7, X6
PUNPCKHQDQ X9, X6
PUNPCKLQDQ X7, X9
MOVO X8, X7
MOVO X2, X8
PUNPCKHQDQ X9, X7
PUNPCKLQDQ X3, X9
PUNPCKHQDQ X9, X2
PUNPCKLQDQ X8, X9
PUNPCKHQDQ X9, X3
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFD $0xb1, X6, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
PSHUFB X10, X2
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFB X11, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
MOVO X2, X8
PADDQ X2, X8
PSRLQ $0x3f, X2
PXOR X8, X2
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFD $0xb1, X7, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
PSHUFB X10, X3
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFB X11, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
MOVO X3, X8
PADDQ X3, X8
PSRLQ $0x3f, X3
PXOR X8, X3
MOVO X4, X8
MOVO X5, X4
MOVO X8, X5
MOVO X2, X8
PUNPCKLQDQ X2, X9
PUNPCKHQDQ X3, X2
PUNPCKHQDQ X9, X2
PUNPCKLQDQ X3, X9
MOVO X8, X3
MOVO X6, X8
PUNPCKHQDQ X9, X3
PUNPCKLQDQ X7, X9
PUNPCKHQDQ X9, X6
PUNPCKLQDQ X8, X9
PUNPCKHQDQ X9, X7
MOVOU X0, 96(AX)
MOVOU X1, 224(AX)
MOVOU X2, 352(AX)
MOVOU X3, 480(AX)
MOVOU X4, 608(AX)
MOVOU X5, 736(AX)
MOVOU X6, 864(AX)
MOVOU X7, 992(AX)
MOVOU 112(AX), X0
MOVOU 240(AX), X1
MOVOU 368(AX), X2
MOVOU 496(AX), X3
MOVOU 624(AX), X4
MOVOU 752(AX), X5
MOVOU 880(AX), X6
MOVOU 1008(AX), X7
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFD $0xb1, X6, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
PSHUFB X10, X2
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFB X11, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
MOVO X2, X8
PADDQ X2, X8
PSRLQ $0x3f, X2
PXOR X8, X2
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFD $0xb1, X7, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
PSHUFB X10, X3
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFB X11, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
MOVO X3, X8
PADDQ X3, X8
PSRLQ $0x3f, X3
PXOR X8, X3
MOVO X4, X8
MOVO X5, X4
MOVO X8, X5
MOVO X6, X8
PUNPCKLQDQ X6, X9
PUNPCKHQDQ X7, X6
PUNPCKHQDQ X9, X6
PUNPCKLQDQ X7, X9
MOVO X8, X7
MOVO X2, X8
PUNPCKHQDQ X9, X7
PUNPCKLQDQ X3, X9
PUNPCKHQDQ X9, X2
PUNPCKLQDQ X8, X9
PUNPCKHQDQ X9, X3
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFD $0xb1, X6, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
PSHUFB X10, X2
MOVO X0, X8
PMULULQ X2, X8
PADDQ X2, X0
PADDQ X8, X0
PADDQ X8, X0
PXOR X0, X6
PSHUFB X11, X6
MOVO X4, X8
PMULULQ X6, X8
PADDQ X6, X4
PADDQ X8, X4
PADDQ X8, X4
PXOR X4, X2
MOVO X2, X8
PADDQ X2, X8
PSRLQ $0x3f, X2
PXOR X8, X2
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFD $0xb1, X7, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
PSHUFB X10, X3
MOVO X1, X8
PMULULQ X3, X8
PADDQ X3, X1
PADDQ X8, X1
PADDQ X8, X1
PXOR X1, X7
PSHUFB X11, X7
MOVO X5, X8
PMULULQ X7, X8
PADDQ X7, X5
PADDQ X8, X5
PADDQ X8, X5
PXOR X5, X3
MOVO X3, X8
PADDQ X3, X8
PSRLQ $0x3f, X3
PXOR X8, X3
MOVO X4, X8
MOVO X5, X4
MOVO X8, X5
MOVO X2, X8
PUNPCKLQDQ X2, X9
PUNPCKHQDQ X3, X2
PUNPCKHQDQ X9, X2
PUNPCKLQDQ X3, X9
MOVO X8, X3
MOVO X6, X8
PUNPCKHQDQ X9, X3
PUNPCKLQDQ X7, X9
PUNPCKHQDQ X9, X6
PUNPCKLQDQ X8, X9
PUNPCKHQDQ X9, X7
MOVOU X0, 112(AX)
MOVOU X1, 240(AX)
MOVOU X2, 368(AX)
MOVOU X3, 496(AX)
MOVOU X4, 624(AX)
MOVOU X5, 752(AX)
MOVOU X6, 880(AX)
MOVOU X7, 1008(AX)
RET
DATA ·c40<>+0(SB)/8, $0x0201000706050403
DATA ·c40<>+8(SB)/8, $0x0a09080f0e0d0c0b
GLOBL ·c40<>(SB), RODATA|NOPTR, $16
DATA ·c48<>+0(SB)/8, $0x0100070605040302
DATA ·c48<>+8(SB)/8, $0x09080f0e0d0c0b0a
GLOBL ·c48<>(SB), RODATA|NOPTR, $16
// func mixBlocksSSE2(out *block, a *block, b *block, c *block)
// Requires: SSE2
TEXT ·mixBlocksSSE2(SB), NOSPLIT, $0-32
MOVQ out+0(FP), DX
MOVQ a+8(FP), AX
MOVQ b+16(FP), BX
MOVQ c+24(FP), CX
MOVQ $0x00000080, DI
loop:
MOVOU (AX), X0
MOVOU (BX), X1
MOVOU (CX), X2
PXOR X1, X0
PXOR X2, X0
MOVOU X0, (DX)
ADDQ $0x10, AX
ADDQ $0x10, BX
ADDQ $0x10, CX
ADDQ $0x10, DX
SUBQ $0x02, DI
JA loop
RET
// func xorBlocksSSE2(out *block, a *block, b *block, c *block)
// Requires: SSE2
TEXT ·xorBlocksSSE2(SB), NOSPLIT, $0-32
MOVQ out+0(FP), DX
MOVQ a+8(FP), AX
MOVQ b+16(FP), BX
MOVQ c+24(FP), CX
MOVQ $0x00000080, DI
loop:
MOVOU (AX), X0
MOVOU (BX), X1
MOVOU (CX), X2
MOVOU (DX), X3
PXOR X1, X0
PXOR X2, X0
PXOR X3, X0
MOVOU X0, (DX)
ADDQ $0x10, AX
ADDQ $0x10, BX
ADDQ $0x10, CX
ADDQ $0x10, DX
SUBQ $0x02, DI
JA loop
RET