// Code generated by command: go run blake2b_amd64_asm.go -out ../../blake2b_amd64.s -pkg blake2b. DO NOT EDIT. //go:build amd64 && gc && !purego #include "textflag.h" // func hashBlocksSSE4(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) // Requires: SSE2, SSE4.1, SSSE3 TEXT ·hashBlocksSSE4(SB), NOSPLIT, $288-48 MOVQ h+0(FP), AX MOVQ c+8(FP), BX MOVQ flag+16(FP), CX MOVQ blocks_base+24(FP), SI MOVQ blocks_len+32(FP), DI MOVQ SP, R10 ADDQ $0x0f, R10 ANDQ $-16, R10 MOVOU ·iv3<>+0(SB), X0 MOVO X0, (R10) XORQ CX, (R10) MOVOU ·c40<>+0(SB), X13 MOVOU ·c48<>+0(SB), X14 MOVOU (AX), X12 MOVOU 16(AX), X15 MOVQ (BX), R8 MOVQ 8(BX), R9 loop: ADDQ $0x80, R8 CMPQ R8, $0x80 JGE noinc INCQ R9 noinc: MOVQ R8, X8 PINSRQ $0x01, R9, X8 MOVO X12, X0 MOVO X15, X1 MOVOU 32(AX), X2 MOVOU 48(AX), X3 MOVOU ·iv0<>+0(SB), X4 MOVOU ·iv1<>+0(SB), X5 MOVOU ·iv2<>+0(SB), X6 PXOR X8, X6 MOVO (R10), X7 MOVQ (SI), X8 PINSRQ $0x01, 16(SI), X8 MOVQ 32(SI), X9 PINSRQ $0x01, 48(SI), X9 MOVQ 8(SI), X10 PINSRQ $0x01, 24(SI), X10 MOVQ 40(SI), X11 PINSRQ $0x01, 56(SI), X11 MOVO X8, 16(R10) MOVO X9, 32(R10) MOVO X10, 48(R10) MOVO X11, 64(R10) PADDQ X8, X0 PADDQ X9, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFD $0xb1, X6, X6 PSHUFD $0xb1, X7, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 PSHUFB X13, X2 PSHUFB X13, X3 PADDQ X10, X0 PADDQ X11, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFB X14, X6 PSHUFB X14, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 MOVOU X2, X11 PADDQ X2, X11 PSRLQ $0x3f, X2 PXOR X11, X2 MOVOU X3, X11 PADDQ X3, X11 PSRLQ $0x3f, X3 PXOR X11, 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 MOVQ 64(SI), X8 PINSRQ $0x01, 80(SI), X8 MOVQ 96(SI), X9 PINSRQ $0x01, 112(SI), X9 MOVQ 72(SI), X10 PINSRQ $0x01, 88(SI), X10 MOVQ 104(SI), X11 PINSRQ $0x01, 120(SI), X11 MOVO X8, 80(R10) MOVO X9, 96(R10) MOVO X10, 112(R10) MOVO X11, 128(R10) PADDQ X8, X0 PADDQ X9, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFD $0xb1, X6, X6 PSHUFD $0xb1, X7, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 PSHUFB X13, X2 PSHUFB X13, X3 PADDQ X10, X0 PADDQ X11, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFB X14, X6 PSHUFB X14, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 MOVOU X2, X11 PADDQ X2, X11 PSRLQ $0x3f, X2 PXOR X11, X2 MOVOU X3, X11 PADDQ X3, X11 PSRLQ $0x3f, X3 PXOR X11, 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 MOVQ 112(SI), X8 PINSRQ $0x01, 32(SI), X8 MOVQ 72(SI), X9 PINSRQ $0x01, 104(SI), X9 MOVQ 80(SI), X10 PINSRQ $0x01, 64(SI), X10 MOVQ 120(SI), X11 PINSRQ $0x01, 48(SI), X11 MOVO X8, 144(R10) MOVO X9, 160(R10) MOVO X10, 176(R10) MOVO X11, 192(R10) PADDQ X8, X0 PADDQ X9, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFD $0xb1, X6, X6 PSHUFD $0xb1, X7, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 PSHUFB X13, X2 PSHUFB X13, X3 PADDQ X10, X0 PADDQ X11, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFB X14, X6 PSHUFB X14, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 MOVOU X2, X11 PADDQ X2, X11 PSRLQ $0x3f, X2 PXOR X11, X2 MOVOU X3, X11 PADDQ X3, X11 PSRLQ $0x3f, X3 PXOR X11, 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 MOVQ 8(SI), X8 PINSRQ $0x01, (SI), X8 MOVQ 88(SI), X9 PINSRQ $0x01, 40(SI), X9 MOVQ 96(SI), X10 PINSRQ $0x01, 16(SI), X10 MOVQ 56(SI), X11 PINSRQ $0x01, 24(SI), X11 MOVO X8, 208(R10) MOVO X9, 224(R10) MOVO X10, 240(R10) MOVO X11, 256(R10) PADDQ X8, X0 PADDQ X9, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFD $0xb1, X6, X6 PSHUFD $0xb1, X7, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 PSHUFB X13, X2 PSHUFB X13, X3 PADDQ X10, X0 PADDQ X11, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFB X14, X6 PSHUFB X14, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 MOVOU X2, X11 PADDQ X2, X11 PSRLQ $0x3f, X2 PXOR X11, X2 MOVOU X3, X11 PADDQ X3, X11 PSRLQ $0x3f, X3 PXOR X11, 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 MOVQ 88(SI), X8 PINSRQ $0x01, 96(SI), X8 MOVQ 40(SI), X9 PINSRQ $0x01, 120(SI), X9 MOVQ 64(SI), X10 PINSRQ $0x01, (SI), X10 MOVQ 16(SI), X11 PINSRQ $0x01, 104(SI), X11 PADDQ X8, X0 PADDQ X9, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFD $0xb1, X6, X6 PSHUFD $0xb1, X7, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 PSHUFB X13, X2 PSHUFB X13, X3 PADDQ X10, X0 PADDQ X11, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFB X14, X6 PSHUFB X14, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 MOVOU X2, X11 PADDQ X2, X11 PSRLQ $0x3f, X2 PXOR X11, X2 MOVOU X3, X11 PADDQ X3, X11 PSRLQ $0x3f, X3 PXOR X11, 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 MOVQ 80(SI), X8 PINSRQ $0x01, 24(SI), X8 MOVQ 56(SI), X9 PINSRQ $0x01, 72(SI), X9 MOVQ 112(SI), X10 PINSRQ $0x01, 48(SI), X10 MOVQ 8(SI), X11 PINSRQ $0x01, 32(SI), X11 PADDQ X8, X0 PADDQ X9, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFD $0xb1, X6, X6 PSHUFD $0xb1, X7, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 PSHUFB X13, X2 PSHUFB X13, X3 PADDQ X10, X0 PADDQ X11, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFB X14, X6 PSHUFB X14, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 MOVOU X2, X11 PADDQ X2, X11 PSRLQ $0x3f, X2 PXOR X11, X2 MOVOU X3, X11 PADDQ X3, X11 PSRLQ $0x3f, X3 PXOR X11, 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 MOVQ 56(SI), X8 PINSRQ $0x01, 24(SI), X8 MOVQ 104(SI), X9 PINSRQ $0x01, 88(SI), X9 MOVQ 72(SI), X10 PINSRQ $0x01, 8(SI), X10 MOVQ 96(SI), X11 PINSRQ $0x01, 112(SI), X11 PADDQ X8, X0 PADDQ X9, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFD $0xb1, X6, X6 PSHUFD $0xb1, X7, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 PSHUFB X13, X2 PSHUFB X13, X3 PADDQ X10, X0 PADDQ X11, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFB X14, X6 PSHUFB X14, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 MOVOU X2, X11 PADDQ X2, X11 PSRLQ $0x3f, X2 PXOR X11, X2 MOVOU X3, X11 PADDQ X3, X11 PSRLQ $0x3f, X3 PXOR X11, 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 MOVQ 16(SI), X8 PINSRQ $0x01, 40(SI), X8 MOVQ 32(SI), X9 PINSRQ $0x01, 120(SI), X9 MOVQ 48(SI), X10 PINSRQ $0x01, 80(SI), X10 MOVQ (SI), X11 PINSRQ $0x01, 64(SI), X11 PADDQ X8, X0 PADDQ X9, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFD $0xb1, X6, X6 PSHUFD $0xb1, X7, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 PSHUFB X13, X2 PSHUFB X13, X3 PADDQ X10, X0 PADDQ X11, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFB X14, X6 PSHUFB X14, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 MOVOU X2, X11 PADDQ X2, X11 PSRLQ $0x3f, X2 PXOR X11, X2 MOVOU X3, X11 PADDQ X3, X11 PSRLQ $0x3f, X3 PXOR X11, 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 MOVQ 72(SI), X8 PINSRQ $0x01, 40(SI), X8 MOVQ 16(SI), X9 PINSRQ $0x01, 80(SI), X9 MOVQ (SI), X10 PINSRQ $0x01, 56(SI), X10 MOVQ 32(SI), X11 PINSRQ $0x01, 120(SI), X11 PADDQ X8, X0 PADDQ X9, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFD $0xb1, X6, X6 PSHUFD $0xb1, X7, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 PSHUFB X13, X2 PSHUFB X13, X3 PADDQ X10, X0 PADDQ X11, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFB X14, X6 PSHUFB X14, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 MOVOU X2, X11 PADDQ X2, X11 PSRLQ $0x3f, X2 PXOR X11, X2 MOVOU X3, X11 PADDQ X3, X11 PSRLQ $0x3f, X3 PXOR X11, 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 MOVQ 112(SI), X8 PINSRQ $0x01, 88(SI), X8 MOVQ 48(SI), X9 PINSRQ $0x01, 24(SI), X9 MOVQ 8(SI), X10 PINSRQ $0x01, 96(SI), X10 MOVQ 64(SI), X11 PINSRQ $0x01, 104(SI), X11 PADDQ X8, X0 PADDQ X9, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFD $0xb1, X6, X6 PSHUFD $0xb1, X7, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 PSHUFB X13, X2 PSHUFB X13, X3 PADDQ X10, X0 PADDQ X11, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFB X14, X6 PSHUFB X14, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 MOVOU X2, X11 PADDQ X2, X11 PSRLQ $0x3f, X2 PXOR X11, X2 MOVOU X3, X11 PADDQ X3, X11 PSRLQ $0x3f, X3 PXOR X11, 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 MOVQ 16(SI), X8 PINSRQ $0x01, 48(SI), X8 MOVQ (SI), X9 PINSRQ $0x01, 64(SI), X9 MOVQ 96(SI), X10 PINSRQ $0x01, 80(SI), X10 MOVQ 88(SI), X11 PINSRQ $0x01, 24(SI), X11 PADDQ X8, X0 PADDQ X9, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFD $0xb1, X6, X6 PSHUFD $0xb1, X7, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 PSHUFB X13, X2 PSHUFB X13, X3 PADDQ X10, X0 PADDQ X11, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFB X14, X6 PSHUFB X14, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 MOVOU X2, X11 PADDQ X2, X11 PSRLQ $0x3f, X2 PXOR X11, X2 MOVOU X3, X11 PADDQ X3, X11 PSRLQ $0x3f, X3 PXOR X11, 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 MOVQ 32(SI), X8 PINSRQ $0x01, 56(SI), X8 MOVQ 120(SI), X9 PINSRQ $0x01, 8(SI), X9 MOVQ 104(SI), X10 PINSRQ $0x01, 40(SI), X10 MOVQ 112(SI), X11 PINSRQ $0x01, 72(SI), X11 PADDQ X8, X0 PADDQ X9, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFD $0xb1, X6, X6 PSHUFD $0xb1, X7, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 PSHUFB X13, X2 PSHUFB X13, X3 PADDQ X10, X0 PADDQ X11, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFB X14, X6 PSHUFB X14, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 MOVOU X2, X11 PADDQ X2, X11 PSRLQ $0x3f, X2 PXOR X11, X2 MOVOU X3, X11 PADDQ X3, X11 PSRLQ $0x3f, X3 PXOR X11, 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 MOVQ 96(SI), X8 PINSRQ $0x01, 8(SI), X8 MOVQ 112(SI), X9 PINSRQ $0x01, 32(SI), X9 MOVQ 40(SI), X10 PINSRQ $0x01, 120(SI), X10 MOVQ 104(SI), X11 PINSRQ $0x01, 80(SI), X11 PADDQ X8, X0 PADDQ X9, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFD $0xb1, X6, X6 PSHUFD $0xb1, X7, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 PSHUFB X13, X2 PSHUFB X13, X3 PADDQ X10, X0 PADDQ X11, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFB X14, X6 PSHUFB X14, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 MOVOU X2, X11 PADDQ X2, X11 PSRLQ $0x3f, X2 PXOR X11, X2 MOVOU X3, X11 PADDQ X3, X11 PSRLQ $0x3f, X3 PXOR X11, 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 MOVQ (SI), X8 PINSRQ $0x01, 48(SI), X8 MOVQ 72(SI), X9 PINSRQ $0x01, 64(SI), X9 MOVQ 56(SI), X10 PINSRQ $0x01, 24(SI), X10 MOVQ 16(SI), X11 PINSRQ $0x01, 88(SI), X11 PADDQ X8, X0 PADDQ X9, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFD $0xb1, X6, X6 PSHUFD $0xb1, X7, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 PSHUFB X13, X2 PSHUFB X13, X3 PADDQ X10, X0 PADDQ X11, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFB X14, X6 PSHUFB X14, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 MOVOU X2, X11 PADDQ X2, X11 PSRLQ $0x3f, X2 PXOR X11, X2 MOVOU X3, X11 PADDQ X3, X11 PSRLQ $0x3f, X3 PXOR X11, 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 MOVQ 104(SI), X8 PINSRQ $0x01, 56(SI), X8 MOVQ 96(SI), X9 PINSRQ $0x01, 24(SI), X9 MOVQ 88(SI), X10 PINSRQ $0x01, 112(SI), X10 MOVQ 8(SI), X11 PINSRQ $0x01, 72(SI), X11 PADDQ X8, X0 PADDQ X9, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFD $0xb1, X6, X6 PSHUFD $0xb1, X7, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 PSHUFB X13, X2 PSHUFB X13, X3 PADDQ X10, X0 PADDQ X11, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFB X14, X6 PSHUFB X14, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 MOVOU X2, X11 PADDQ X2, X11 PSRLQ $0x3f, X2 PXOR X11, X2 MOVOU X3, X11 PADDQ X3, X11 PSRLQ $0x3f, X3 PXOR X11, 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 MOVQ 40(SI), X8 PINSRQ $0x01, 120(SI), X8 MOVQ 64(SI), X9 PINSRQ $0x01, 16(SI), X9 MOVQ (SI), X10 PINSRQ $0x01, 32(SI), X10 MOVQ 48(SI), X11 PINSRQ $0x01, 80(SI), X11 PADDQ X8, X0 PADDQ X9, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFD $0xb1, X6, X6 PSHUFD $0xb1, X7, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 PSHUFB X13, X2 PSHUFB X13, X3 PADDQ X10, X0 PADDQ X11, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFB X14, X6 PSHUFB X14, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 MOVOU X2, X11 PADDQ X2, X11 PSRLQ $0x3f, X2 PXOR X11, X2 MOVOU X3, X11 PADDQ X3, X11 PSRLQ $0x3f, X3 PXOR X11, 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 MOVQ 48(SI), X8 PINSRQ $0x01, 112(SI), X8 MOVQ 88(SI), X9 PINSRQ $0x01, (SI), X9 MOVQ 120(SI), X10 PINSRQ $0x01, 72(SI), X10 MOVQ 24(SI), X11 PINSRQ $0x01, 64(SI), X11 PADDQ X8, X0 PADDQ X9, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFD $0xb1, X6, X6 PSHUFD $0xb1, X7, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 PSHUFB X13, X2 PSHUFB X13, X3 PADDQ X10, X0 PADDQ X11, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFB X14, X6 PSHUFB X14, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 MOVOU X2, X11 PADDQ X2, X11 PSRLQ $0x3f, X2 PXOR X11, X2 MOVOU X3, X11 PADDQ X3, X11 PSRLQ $0x3f, X3 PXOR X11, 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 MOVQ 96(SI), X8 PINSRQ $0x01, 104(SI), X8 MOVQ 8(SI), X9 PINSRQ $0x01, 80(SI), X9 MOVQ 16(SI), X10 PINSRQ $0x01, 56(SI), X10 MOVQ 32(SI), X11 PINSRQ $0x01, 40(SI), X11 PADDQ X8, X0 PADDQ X9, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFD $0xb1, X6, X6 PSHUFD $0xb1, X7, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 PSHUFB X13, X2 PSHUFB X13, X3 PADDQ X10, X0 PADDQ X11, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFB X14, X6 PSHUFB X14, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 MOVOU X2, X11 PADDQ X2, X11 PSRLQ $0x3f, X2 PXOR X11, X2 MOVOU X3, X11 PADDQ X3, X11 PSRLQ $0x3f, X3 PXOR X11, 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 MOVQ 80(SI), X8 PINSRQ $0x01, 64(SI), X8 MOVQ 56(SI), X9 PINSRQ $0x01, 8(SI), X9 MOVQ 16(SI), X10 PINSRQ $0x01, 32(SI), X10 MOVQ 48(SI), X11 PINSRQ $0x01, 40(SI), X11 PADDQ X8, X0 PADDQ X9, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFD $0xb1, X6, X6 PSHUFD $0xb1, X7, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 PSHUFB X13, X2 PSHUFB X13, X3 PADDQ X10, X0 PADDQ X11, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFB X14, X6 PSHUFB X14, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 MOVOU X2, X11 PADDQ X2, X11 PSRLQ $0x3f, X2 PXOR X11, X2 MOVOU X3, X11 PADDQ X3, X11 PSRLQ $0x3f, X3 PXOR X11, 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 MOVQ 120(SI), X8 PINSRQ $0x01, 72(SI), X8 MOVQ 24(SI), X9 PINSRQ $0x01, 104(SI), X9 MOVQ 88(SI), X10 PINSRQ $0x01, 112(SI), X10 MOVQ 96(SI), X11 PINSRQ $0x01, (SI), X11 PADDQ X8, X0 PADDQ X9, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFD $0xb1, X6, X6 PSHUFD $0xb1, X7, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 PSHUFB X13, X2 PSHUFB X13, X3 PADDQ X10, X0 PADDQ X11, X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFB X14, X6 PSHUFB X14, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 MOVOU X2, X11 PADDQ X2, X11 PSRLQ $0x3f, X2 PXOR X11, X2 MOVOU X3, X11 PADDQ X3, X11 PSRLQ $0x3f, X3 PXOR X11, 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 PADDQ 16(R10), X0 PADDQ 32(R10), X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFD $0xb1, X6, X6 PSHUFD $0xb1, X7, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 PSHUFB X13, X2 PSHUFB X13, X3 PADDQ 48(R10), X0 PADDQ 64(R10), X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFB X14, X6 PSHUFB X14, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 MOVOU X2, X11 PADDQ X2, X11 PSRLQ $0x3f, X2 PXOR X11, X2 MOVOU X3, X11 PADDQ X3, X11 PSRLQ $0x3f, X3 PXOR X11, 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 PADDQ 80(R10), X0 PADDQ 96(R10), X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFD $0xb1, X6, X6 PSHUFD $0xb1, X7, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 PSHUFB X13, X2 PSHUFB X13, X3 PADDQ 112(R10), X0 PADDQ 128(R10), X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFB X14, X6 PSHUFB X14, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 MOVOU X2, X11 PADDQ X2, X11 PSRLQ $0x3f, X2 PXOR X11, X2 MOVOU X3, X11 PADDQ X3, X11 PSRLQ $0x3f, X3 PXOR X11, 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 PADDQ 144(R10), X0 PADDQ 160(R10), X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFD $0xb1, X6, X6 PSHUFD $0xb1, X7, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 PSHUFB X13, X2 PSHUFB X13, X3 PADDQ 176(R10), X0 PADDQ 192(R10), X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFB X14, X6 PSHUFB X14, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 MOVOU X2, X11 PADDQ X2, X11 PSRLQ $0x3f, X2 PXOR X11, X2 MOVOU X3, X11 PADDQ X3, X11 PSRLQ $0x3f, X3 PXOR X11, 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 PADDQ 208(R10), X0 PADDQ 224(R10), X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFD $0xb1, X6, X6 PSHUFD $0xb1, X7, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 PSHUFB X13, X2 PSHUFB X13, X3 PADDQ 240(R10), X0 PADDQ 256(R10), X1 PADDQ X2, X0 PADDQ X3, X1 PXOR X0, X6 PXOR X1, X7 PSHUFB X14, X6 PSHUFB X14, X7 PADDQ X6, X4 PADDQ X7, X5 PXOR X4, X2 PXOR X5, X3 MOVOU X2, X11 PADDQ X2, X11 PSRLQ $0x3f, X2 PXOR X11, X2 MOVOU X3, X11 PADDQ X3, X11 PSRLQ $0x3f, X3 PXOR X11, 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 32(AX), X10 MOVOU 48(AX), X11 PXOR X0, X12 PXOR X1, X15 PXOR X2, X10 PXOR X3, X11 PXOR X4, X12 PXOR X5, X15 PXOR X6, X10 PXOR X7, X11 MOVOU X10, 32(AX) MOVOU X11, 48(AX) LEAQ 128(SI), SI SUBQ $0x80, DI JNE loop MOVOU X12, (AX) MOVOU X15, 16(AX) MOVQ R8, (BX) MOVQ R9, 8(BX) RET DATA ·iv3<>+0(SB)/8, $0x1f83d9abfb41bd6b DATA ·iv3<>+8(SB)/8, $0x5be0cd19137e2179 GLOBL ·iv3<>(SB), RODATA|NOPTR, $16 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 DATA ·iv0<>+0(SB)/8, $0x6a09e667f3bcc908 DATA ·iv0<>+8(SB)/8, $0xbb67ae8584caa73b GLOBL ·iv0<>(SB), RODATA|NOPTR, $16 DATA ·iv1<>+0(SB)/8, $0x3c6ef372fe94f82b DATA ·iv1<>+8(SB)/8, $0xa54ff53a5f1d36f1 GLOBL ·iv1<>(SB), RODATA|NOPTR, $16 DATA ·iv2<>+0(SB)/8, $0x510e527fade682d1 DATA ·iv2<>+8(SB)/8, $0x9b05688c2b3e6c1f GLOBL ·iv2<>(SB), RODATA|NOPTR, $16