diff --git a/crypto_kem/ntruhps2048509/META.yml b/crypto_kem/ntruhps2048509/META.yml index 886fef34..98f7b76c 100644 --- a/crypto_kem/ntruhps2048509/META.yml +++ b/crypto_kem/ntruhps2048509/META.yml @@ -23,9 +23,9 @@ auxiliary-submitters: - Zhenfei Zhang implementations: - name: clean - version: https://github.com/jschanck/ntru/tree/2d4df948 reference implementation + version: https://github.com/jschanck/ntru/tree/b38a346a reference implementation - name: avx2 - version: https://github.com/jschanck/ntru/tree/2d4df948 avx2 implementation + version: https://github.com/jschanck/ntru/tree/b38a346a avx2 implementation supported_platforms: - architecture: x86_64 operating_systems: diff --git a/crypto_kem/ntruhps2048509/avx2/owcpa.c b/crypto_kem/ntruhps2048509/avx2/owcpa.c index ca793e59..0bb43436 100644 --- a/crypto_kem/ntruhps2048509/avx2/owcpa.c +++ b/crypto_kem/ntruhps2048509/avx2/owcpa.c @@ -2,40 +2,59 @@ #include "poly.h" #include "sample.h" +static int owcpa_check_ciphertext(const unsigned char *ciphertext) { + /* A ciphertext is log2(q)*(n-1) bits packed into bytes. */ + /* Check that any unused bits of the final byte are zero. */ + + uint16_t t = 0; + + t = ciphertext[NTRU_CIPHERTEXTBYTES - 1]; + t &= 0xff << (8 - (7 & (NTRU_LOGQ * NTRU_PACK_DEG))); + + /* We have 0 <= t < 256 */ + /* Return 0 on success (t=0), 1 on failure */ + return (int) (1 & ((~t + 1) >> 15)); +} + static int owcpa_check_r(const poly *r) { - /* Check that r is in message space. */ - /* Note: Assumes that r has coefficients in {0, 1, ..., q-1} */ + /* A valid r has coefficients in {0,1,q-1} and has r[N-1] = 0 */ + /* Note: We may assume that 0 <= r[i] <= q-1 for all i */ + int i; - uint64_t t = 0; + uint32_t t = 0; uint16_t c; - for (i = 0; i < NTRU_N; i++) { - c = MODQ(r->coeffs[i] + 1); - t |= c & (NTRU_Q - 4); /* 0 if c is in {0,1,2,3} */ - t |= (c + 1) & 0x4; /* 0 if c is in {0,1,2} */ + for (i = 0; i < NTRU_N - 1; i++) { + c = r->coeffs[i]; + t |= (c + 1) & (NTRU_Q - 4); /* 0 iff c is in {-1,0,1,2} */ + t |= (c + 2) & 4; /* 1 if c = 2, 0 if c is in {-1,0,1} */ } - t |= MODQ(r->coeffs[NTRU_N - 1]); /* Coefficient n-1 must be zero */ - t = (~t + 1); // two's complement - t >>= 63; - return (int) t; + t |= r->coeffs[NTRU_N - 1]; /* Coefficient n-1 must be zero */ + + /* We have 0 <= t < 2^16. */ + /* Return 0 on success (t=0), 1 on failure */ + return (int) (1 & ((~t + 1) >> 31)); } static int owcpa_check_m(const poly *m) { - /* Check that m is in message space. */ - /* Note: Assumes that m has coefficients in {0,1,2}. */ + /* Check that m is in message space, i.e. */ + /* (1) |{i : m[i] = 1}| = |{i : m[i] = 2}|, and */ + /* (2) |{i : m[i] != 0}| = NTRU_WEIGHT. */ + /* Note: We may assume that m has coefficients in {0,1,2}. */ + int i; - uint64_t t = 0; - uint16_t p1 = 0; - uint16_t m1 = 0; + uint32_t t = 0; + uint16_t ps = 0; + uint16_t ms = 0; for (i = 0; i < NTRU_N; i++) { - p1 += m->coeffs[i] & 0x01; - m1 += (m->coeffs[i] & 0x02) >> 1; + ps += m->coeffs[i] & 1; + ms += m->coeffs[i] & 2; } - /* Need p1 = m1 and p1 + m1 = NTRU_WEIGHT */ - t |= p1 ^ m1; - t |= (p1 + m1) ^ NTRU_WEIGHT; - t = (~t + 1); // two's complement - t >>= 63; - return (int) t; + t |= ps ^ (ms >> 1); /* 0 if (1) holds */ + t |= ms ^ NTRU_WEIGHT; /* 0 if (1) and (2) hold */ + + /* We have 0 <= t < 2^16. */ + /* Return 0 on success (t=0), 1 on failure */ + return (int) (1 & ((~t + 1) >> 31)); } void PQCLEAN_NTRUHPS2048509_AVX2_owcpa_keypair(unsigned char *pk, @@ -125,8 +144,8 @@ int PQCLEAN_NTRUHPS2048509_AVX2_owcpa_dec(unsigned char *rm, fail = 0; - /* Check that unused bits of last byte of ciphertext are zero */ - fail |= ciphertext[NTRU_CIPHERTEXTBYTES - 1] & (0xff << (8 - (7 & (NTRU_LOGQ * NTRU_PACK_DEG)))); + /* Check that the unused bits of the last byte of the ciphertext are zero */ + fail |= owcpa_check_ciphertext(ciphertext); /* For the IND-CCA2 KEM we must ensure that c = Enc(h, (r,m)). */ /* We can avoid re-computing r*h + Lift(m) as long as we check that */ diff --git a/crypto_kem/ntruhps2048509/avx2/poly_rq_to_s3.s b/crypto_kem/ntruhps2048509/avx2/poly_rq_to_s3.s index 72f37da9..0ee58c97 100644 --- a/crypto_kem/ntruhps2048509/avx2/poly_rq_to_s3.s +++ b/crypto_kem/ntruhps2048509/avx2/poly_rq_to_s3.s @@ -1,55 +1,5 @@ .data .p2align 5 -const_3_repeating: -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -shuf_b8_to_low_doubleword: -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 mask_modq: .word 2047 .word 2047 @@ -123,833 +73,768 @@ mask_3: .global _PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_to_S3 PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_to_S3: _PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_to_S3: -vmovdqa const_3_repeating(%rip), %ymm3 vmovdqa mask_modq(%rip), %ymm6 -vmovdqa 992(%rsi), %ymm4 -vpand %ymm6, %ymm4, %ymm4 -vpsrlw $10, %ymm4, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm4 -vpsrlw $8, %ymm4, %ymm5 -vpand mask_ff(%rip), %ymm4, %ymm4 -vpaddw %ymm5, %ymm4, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm4 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm4 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm4 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vmovdqa 992(%rsi), %ymm5 +vpand %ymm6, %ymm5, %ymm5 +vpermq $3, %ymm5, %ymm5 +vpslld $16, %ymm5, %ymm1 +vpsrld $16, %ymm1, %ymm5 +vpor %ymm5, %ymm1, %ymm5 +vbroadcastss %xmm5, %ymm5 +vpsrlw $10, %ymm5, %ymm1 +vpaddw %ymm5, %ymm1, %ymm5 +vpsrlw $8, %ymm5, %ymm1 +vpand mask_ff(%rip), %ymm5, %ymm5 +vpaddw %ymm1, %ymm5, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm5 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm5, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm5 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm5, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm5 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm5, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm4 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm4, %ymm5 -vpsllw $1, %ymm5, %ymm4 -vextracti128 $1, %ymm4, %xmm4 -vpshufb shuf_b8_to_low_doubleword(%rip), %ymm4, %ymm4 -vinserti128 $1, %xmm4, %ymm4, %ymm4 -vmovdqa 0(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpandn %ymm14, %ymm15, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm5, %ymm1 +vpsllw $1, %ymm1, %ymm5 +vmovdqa 0(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 0(%rdi) -vmovdqa 32(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 0(%rdi) +vmovdqa 32(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 32(%rdi) -vmovdqa 64(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 32(%rdi) +vmovdqa 64(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 64(%rdi) -vmovdqa 96(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 64(%rdi) +vmovdqa 96(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 96(%rdi) -vmovdqa 128(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 96(%rdi) +vmovdqa 128(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 128(%rdi) -vmovdqa 160(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 128(%rdi) +vmovdqa 160(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 160(%rdi) -vmovdqa 192(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 160(%rdi) +vmovdqa 192(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 192(%rdi) -vmovdqa 224(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 192(%rdi) +vmovdqa 224(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 224(%rdi) -vmovdqa 256(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 224(%rdi) +vmovdqa 256(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 256(%rdi) -vmovdqa 288(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 256(%rdi) +vmovdqa 288(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 288(%rdi) -vmovdqa 320(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 288(%rdi) +vmovdqa 320(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 320(%rdi) -vmovdqa 352(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 320(%rdi) +vmovdqa 352(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 352(%rdi) -vmovdqa 384(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 352(%rdi) +vmovdqa 384(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 384(%rdi) -vmovdqa 416(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 384(%rdi) +vmovdqa 416(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 416(%rdi) -vmovdqa 448(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 416(%rdi) +vmovdqa 448(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 448(%rdi) -vmovdqa 480(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 448(%rdi) +vmovdqa 480(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 480(%rdi) -vmovdqa 512(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 480(%rdi) +vmovdqa 512(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 512(%rdi) -vmovdqa 544(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 512(%rdi) +vmovdqa 544(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 544(%rdi) -vmovdqa 576(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 544(%rdi) +vmovdqa 576(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 576(%rdi) -vmovdqa 608(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 576(%rdi) +vmovdqa 608(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 608(%rdi) -vmovdqa 640(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 608(%rdi) +vmovdqa 640(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 640(%rdi) -vmovdqa 672(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 640(%rdi) +vmovdqa 672(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 672(%rdi) -vmovdqa 704(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 672(%rdi) +vmovdqa 704(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 704(%rdi) -vmovdqa 736(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 704(%rdi) +vmovdqa 736(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 736(%rdi) -vmovdqa 768(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 736(%rdi) +vmovdqa 768(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 768(%rdi) -vmovdqa 800(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 768(%rdi) +vmovdqa 800(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 800(%rdi) -vmovdqa 832(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 800(%rdi) +vmovdqa 832(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 832(%rdi) -vmovdqa 864(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 832(%rdi) +vmovdqa 864(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 864(%rdi) -vmovdqa 896(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 864(%rdi) +vmovdqa 896(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 896(%rdi) -vmovdqa 928(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 896(%rdi) +vmovdqa 928(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 928(%rdi) -vmovdqa 960(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 928(%rdi) +vmovdqa 960(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 960(%rdi) -vmovdqa 992(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 960(%rdi) +vmovdqa 992(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 992(%rdi) +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 992(%rdi) ret diff --git a/crypto_kem/ntruhps2048509/clean/owcpa.c b/crypto_kem/ntruhps2048509/clean/owcpa.c index 8bd2ed20..c2b169be 100644 --- a/crypto_kem/ntruhps2048509/clean/owcpa.c +++ b/crypto_kem/ntruhps2048509/clean/owcpa.c @@ -2,40 +2,59 @@ #include "poly.h" #include "sample.h" +static int owcpa_check_ciphertext(const unsigned char *ciphertext) { + /* A ciphertext is log2(q)*(n-1) bits packed into bytes. */ + /* Check that any unused bits of the final byte are zero. */ + + uint16_t t = 0; + + t = ciphertext[NTRU_CIPHERTEXTBYTES - 1]; + t &= 0xff << (8 - (7 & (NTRU_LOGQ * NTRU_PACK_DEG))); + + /* We have 0 <= t < 256 */ + /* Return 0 on success (t=0), 1 on failure */ + return (int) (1 & ((~t + 1) >> 15)); +} + static int owcpa_check_r(const poly *r) { - /* Check that r is in message space. */ - /* Note: Assumes that r has coefficients in {0, 1, ..., q-1} */ + /* A valid r has coefficients in {0,1,q-1} and has r[N-1] = 0 */ + /* Note: We may assume that 0 <= r[i] <= q-1 for all i */ + int i; - uint64_t t = 0; + uint32_t t = 0; uint16_t c; - for (i = 0; i < NTRU_N; i++) { - c = MODQ(r->coeffs[i] + 1); - t |= c & (NTRU_Q - 4); /* 0 if c is in {0,1,2,3} */ - t |= (c + 1) & 0x4; /* 0 if c is in {0,1,2} */ + for (i = 0; i < NTRU_N - 1; i++) { + c = r->coeffs[i]; + t |= (c + 1) & (NTRU_Q - 4); /* 0 iff c is in {-1,0,1,2} */ + t |= (c + 2) & 4; /* 1 if c = 2, 0 if c is in {-1,0,1} */ } - t |= MODQ(r->coeffs[NTRU_N - 1]); /* Coefficient n-1 must be zero */ - t = (~t + 1); // two's complement - t >>= 63; - return (int) t; + t |= r->coeffs[NTRU_N - 1]; /* Coefficient n-1 must be zero */ + + /* We have 0 <= t < 2^16. */ + /* Return 0 on success (t=0), 1 on failure */ + return (int) (1 & ((~t + 1) >> 31)); } static int owcpa_check_m(const poly *m) { - /* Check that m is in message space. */ - /* Note: Assumes that m has coefficients in {0,1,2}. */ + /* Check that m is in message space, i.e. */ + /* (1) |{i : m[i] = 1}| = |{i : m[i] = 2}|, and */ + /* (2) |{i : m[i] != 0}| = NTRU_WEIGHT. */ + /* Note: We may assume that m has coefficients in {0,1,2}. */ + int i; - uint64_t t = 0; - uint16_t p1 = 0; - uint16_t m1 = 0; + uint32_t t = 0; + uint16_t ps = 0; + uint16_t ms = 0; for (i = 0; i < NTRU_N; i++) { - p1 += m->coeffs[i] & 0x01; - m1 += (m->coeffs[i] & 0x02) >> 1; + ps += m->coeffs[i] & 1; + ms += m->coeffs[i] & 2; } - /* Need p1 = m1 and p1 + m1 = NTRU_WEIGHT */ - t |= p1 ^ m1; - t |= (p1 + m1) ^ NTRU_WEIGHT; - t = (~t + 1); // two's complement - t >>= 63; - return (int) t; + t |= ps ^ (ms >> 1); /* 0 if (1) holds */ + t |= ms ^ NTRU_WEIGHT; /* 0 if (1) and (2) hold */ + + /* We have 0 <= t < 2^16. */ + /* Return 0 on success (t=0), 1 on failure */ + return (int) (1 & ((~t + 1) >> 31)); } void PQCLEAN_NTRUHPS2048509_CLEAN_owcpa_keypair(unsigned char *pk, @@ -125,8 +144,8 @@ int PQCLEAN_NTRUHPS2048509_CLEAN_owcpa_dec(unsigned char *rm, fail = 0; - /* Check that unused bits of last byte of ciphertext are zero */ - fail |= ciphertext[NTRU_CIPHERTEXTBYTES - 1] & (0xff << (8 - (7 & (NTRU_LOGQ * NTRU_PACK_DEG)))); + /* Check that the unused bits of the last byte of the ciphertext are zero */ + fail |= owcpa_check_ciphertext(ciphertext); /* For the IND-CCA2 KEM we must ensure that c = Enc(h, (r,m)). */ /* We can avoid re-computing r*h + Lift(m) as long as we check that */ diff --git a/crypto_kem/ntruhps2048509/clean/poly_mod.c b/crypto_kem/ntruhps2048509/clean/poly_mod.c index 02ab2543..23238032 100644 --- a/crypto_kem/ntruhps2048509/clean/poly_mod.c +++ b/crypto_kem/ntruhps2048509/clean/poly_mod.c @@ -30,14 +30,22 @@ void PQCLEAN_NTRUHPS2048509_CLEAN_poly_mod_q_Phi_n(poly *r) { } void PQCLEAN_NTRUHPS2048509_CLEAN_poly_Rq_to_S3(poly *r, const poly *a) { - /* NOTE: Assumes input is in [0,Q-1]^N */ - /* Produces output in {0,1,2}^N */ int i; + uint16_t flag; - /* Center coeffs around 3Q: [0, Q-1] -> [3Q - Q/2, 3Q + Q/2) */ + /* The coefficients of a are stored as non-negative integers. */ + /* We must translate to representatives in [-q/2, q/2) before */ + /* reduction mod 3. */ for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = ((MODQ(a->coeffs[i]) >> (NTRU_LOGQ - 1)) ^ 3) << NTRU_LOGQ; - r->coeffs[i] += MODQ(a->coeffs[i]); + /* Need an explicit reduction mod q here */ + r->coeffs[i] = MODQ(a->coeffs[i]); + + /* flag = 1 if r[i] >= q/2 else 0 */ + flag = r->coeffs[i] >> (NTRU_LOGQ - 1); + + /* Now we will add (-q) mod 3 if r[i] >= q/2 */ + /* Note (-q) mod 3=(-2^k) mod 3=1<<(1-(k&1)) */ + r->coeffs[i] += flag << (1 - (NTRU_LOGQ & 1)); } PQCLEAN_NTRUHPS2048509_CLEAN_poly_mod_3_Phi_n(r); diff --git a/crypto_kem/ntruhps2048677/META.yml b/crypto_kem/ntruhps2048677/META.yml index 739f16cc..523f8415 100644 --- a/crypto_kem/ntruhps2048677/META.yml +++ b/crypto_kem/ntruhps2048677/META.yml @@ -23,9 +23,9 @@ auxiliary-submitters: - Zhenfei Zhang implementations: - name: clean - version: https://github.com/jschanck/ntru/tree/2d4df948 reference implementation + version: https://github.com/jschanck/ntru/tree/b38a346a reference implementation - name: avx2 - version: https://github.com/jschanck/ntru/tree/2d4df948 avx2 implementation + version: https://github.com/jschanck/ntru/tree/b38a346a avx2 implementation supported_platforms: - architecture: x86_64 operating_systems: diff --git a/crypto_kem/ntruhps2048677/avx2/owcpa.c b/crypto_kem/ntruhps2048677/avx2/owcpa.c index 374b6836..86f3c082 100644 --- a/crypto_kem/ntruhps2048677/avx2/owcpa.c +++ b/crypto_kem/ntruhps2048677/avx2/owcpa.c @@ -2,40 +2,59 @@ #include "poly.h" #include "sample.h" +static int owcpa_check_ciphertext(const unsigned char *ciphertext) { + /* A ciphertext is log2(q)*(n-1) bits packed into bytes. */ + /* Check that any unused bits of the final byte are zero. */ + + uint16_t t = 0; + + t = ciphertext[NTRU_CIPHERTEXTBYTES - 1]; + t &= 0xff << (8 - (7 & (NTRU_LOGQ * NTRU_PACK_DEG))); + + /* We have 0 <= t < 256 */ + /* Return 0 on success (t=0), 1 on failure */ + return (int) (1 & ((~t + 1) >> 15)); +} + static int owcpa_check_r(const poly *r) { - /* Check that r is in message space. */ - /* Note: Assumes that r has coefficients in {0, 1, ..., q-1} */ + /* A valid r has coefficients in {0,1,q-1} and has r[N-1] = 0 */ + /* Note: We may assume that 0 <= r[i] <= q-1 for all i */ + int i; - uint64_t t = 0; + uint32_t t = 0; uint16_t c; - for (i = 0; i < NTRU_N; i++) { - c = MODQ(r->coeffs[i] + 1); - t |= c & (NTRU_Q - 4); /* 0 if c is in {0,1,2,3} */ - t |= (c + 1) & 0x4; /* 0 if c is in {0,1,2} */ + for (i = 0; i < NTRU_N - 1; i++) { + c = r->coeffs[i]; + t |= (c + 1) & (NTRU_Q - 4); /* 0 iff c is in {-1,0,1,2} */ + t |= (c + 2) & 4; /* 1 if c = 2, 0 if c is in {-1,0,1} */ } - t |= MODQ(r->coeffs[NTRU_N - 1]); /* Coefficient n-1 must be zero */ - t = (~t + 1); // two's complement - t >>= 63; - return (int) t; + t |= r->coeffs[NTRU_N - 1]; /* Coefficient n-1 must be zero */ + + /* We have 0 <= t < 2^16. */ + /* Return 0 on success (t=0), 1 on failure */ + return (int) (1 & ((~t + 1) >> 31)); } static int owcpa_check_m(const poly *m) { - /* Check that m is in message space. */ - /* Note: Assumes that m has coefficients in {0,1,2}. */ + /* Check that m is in message space, i.e. */ + /* (1) |{i : m[i] = 1}| = |{i : m[i] = 2}|, and */ + /* (2) |{i : m[i] != 0}| = NTRU_WEIGHT. */ + /* Note: We may assume that m has coefficients in {0,1,2}. */ + int i; - uint64_t t = 0; - uint16_t p1 = 0; - uint16_t m1 = 0; + uint32_t t = 0; + uint16_t ps = 0; + uint16_t ms = 0; for (i = 0; i < NTRU_N; i++) { - p1 += m->coeffs[i] & 0x01; - m1 += (m->coeffs[i] & 0x02) >> 1; + ps += m->coeffs[i] & 1; + ms += m->coeffs[i] & 2; } - /* Need p1 = m1 and p1 + m1 = NTRU_WEIGHT */ - t |= p1 ^ m1; - t |= (p1 + m1) ^ NTRU_WEIGHT; - t = (~t + 1); // two's complement - t >>= 63; - return (int) t; + t |= ps ^ (ms >> 1); /* 0 if (1) holds */ + t |= ms ^ NTRU_WEIGHT; /* 0 if (1) and (2) hold */ + + /* We have 0 <= t < 2^16. */ + /* Return 0 on success (t=0), 1 on failure */ + return (int) (1 & ((~t + 1) >> 31)); } void PQCLEAN_NTRUHPS2048677_AVX2_owcpa_keypair(unsigned char *pk, @@ -125,8 +144,8 @@ int PQCLEAN_NTRUHPS2048677_AVX2_owcpa_dec(unsigned char *rm, fail = 0; - /* Check that unused bits of last byte of ciphertext are zero */ - fail |= ciphertext[NTRU_CIPHERTEXTBYTES - 1] & (0xff << (8 - (7 & (NTRU_LOGQ * NTRU_PACK_DEG)))); + /* Check that the unused bits of the last byte of the ciphertext are zero */ + fail |= owcpa_check_ciphertext(ciphertext); /* For the IND-CCA2 KEM we must ensure that c = Enc(h, (r,m)). */ /* We can avoid re-computing r*h + Lift(m) as long as we check that */ diff --git a/crypto_kem/ntruhps2048677/avx2/poly_rq_to_s3.s b/crypto_kem/ntruhps2048677/avx2/poly_rq_to_s3.s index 1ba8a698..59297eb2 100644 --- a/crypto_kem/ntruhps2048677/avx2/poly_rq_to_s3.s +++ b/crypto_kem/ntruhps2048677/avx2/poly_rq_to_s3.s @@ -1,55 +1,5 @@ .data .p2align 5 -const_3_repeating: -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -shuf_b8_to_low_doubleword: -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 mask_modq: .word 2047 .word 2047 @@ -123,1133 +73,1044 @@ mask_3: .global _PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_to_S3 PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_to_S3: _PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_to_S3: -vmovdqa const_3_repeating(%rip), %ymm3 vmovdqa mask_modq(%rip), %ymm6 -vmovdqa 1376(%rsi), %ymm4 -vpand %ymm6, %ymm4, %ymm4 -vpsrlw $10, %ymm4, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm4 -vpsrlw $8, %ymm4, %ymm5 -vpand mask_ff(%rip), %ymm4, %ymm4 -vpaddw %ymm5, %ymm4, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm4 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm4 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm4 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vmovdqa 1344(%rsi), %ymm5 +vpand %ymm6, %ymm5, %ymm5 +vpermq $1, %ymm5, %ymm5 +vpslld $16, %ymm5, %ymm1 +vpsrld $16, %ymm1, %ymm5 +vpor %ymm5, %ymm1, %ymm5 +vbroadcastss %xmm5, %ymm5 +vpsrlw $10, %ymm5, %ymm1 +vpaddw %ymm5, %ymm1, %ymm5 +vpsrlw $8, %ymm5, %ymm1 +vpand mask_ff(%rip), %ymm5, %ymm5 +vpaddw %ymm1, %ymm5, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm5 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm5, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm5 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm5, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm5 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm5, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm4 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm4, %ymm5 -vpsllw $1, %ymm5, %ymm4 -vextracti128 $1, %ymm4, %xmm4 -vpshufb shuf_b8_to_low_doubleword(%rip), %ymm4, %ymm4 -vinserti128 $1, %xmm4, %ymm4, %ymm4 -vmovdqa 0(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpandn %ymm14, %ymm15, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm5, %ymm1 +vpsllw $1, %ymm1, %ymm5 +vmovdqa 0(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 0(%rdi) -vmovdqa 32(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 0(%rdi) +vmovdqa 32(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 32(%rdi) -vmovdqa 64(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 32(%rdi) +vmovdqa 64(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 64(%rdi) -vmovdqa 96(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 64(%rdi) +vmovdqa 96(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 96(%rdi) -vmovdqa 128(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 96(%rdi) +vmovdqa 128(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 128(%rdi) -vmovdqa 160(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 128(%rdi) +vmovdqa 160(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 160(%rdi) -vmovdqa 192(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 160(%rdi) +vmovdqa 192(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 192(%rdi) -vmovdqa 224(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 192(%rdi) +vmovdqa 224(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 224(%rdi) -vmovdqa 256(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 224(%rdi) +vmovdqa 256(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 256(%rdi) -vmovdqa 288(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 256(%rdi) +vmovdqa 288(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 288(%rdi) -vmovdqa 320(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 288(%rdi) +vmovdqa 320(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 320(%rdi) -vmovdqa 352(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 320(%rdi) +vmovdqa 352(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 352(%rdi) -vmovdqa 384(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 352(%rdi) +vmovdqa 384(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 384(%rdi) -vmovdqa 416(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 384(%rdi) +vmovdqa 416(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 416(%rdi) -vmovdqa 448(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 416(%rdi) +vmovdqa 448(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 448(%rdi) -vmovdqa 480(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 448(%rdi) +vmovdqa 480(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 480(%rdi) -vmovdqa 512(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 480(%rdi) +vmovdqa 512(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 512(%rdi) -vmovdqa 544(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 512(%rdi) +vmovdqa 544(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 544(%rdi) -vmovdqa 576(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 544(%rdi) +vmovdqa 576(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 576(%rdi) -vmovdqa 608(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 576(%rdi) +vmovdqa 608(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 608(%rdi) -vmovdqa 640(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 608(%rdi) +vmovdqa 640(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 640(%rdi) -vmovdqa 672(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 640(%rdi) +vmovdqa 672(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 672(%rdi) -vmovdqa 704(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 672(%rdi) +vmovdqa 704(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 704(%rdi) -vmovdqa 736(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 704(%rdi) +vmovdqa 736(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 736(%rdi) -vmovdqa 768(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 736(%rdi) +vmovdqa 768(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 768(%rdi) -vmovdqa 800(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 768(%rdi) +vmovdqa 800(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 800(%rdi) -vmovdqa 832(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 800(%rdi) +vmovdqa 832(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 832(%rdi) -vmovdqa 864(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 832(%rdi) +vmovdqa 864(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 864(%rdi) -vmovdqa 896(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 864(%rdi) +vmovdqa 896(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 896(%rdi) -vmovdqa 928(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 896(%rdi) +vmovdqa 928(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 928(%rdi) -vmovdqa 960(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 928(%rdi) +vmovdqa 960(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 960(%rdi) -vmovdqa 992(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 960(%rdi) +vmovdqa 992(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 992(%rdi) -vmovdqa 1024(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 992(%rdi) +vmovdqa 1024(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1024(%rdi) -vmovdqa 1056(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1024(%rdi) +vmovdqa 1056(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1056(%rdi) -vmovdqa 1088(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1056(%rdi) +vmovdqa 1088(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1088(%rdi) -vmovdqa 1120(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1088(%rdi) +vmovdqa 1120(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1120(%rdi) -vmovdqa 1152(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1120(%rdi) +vmovdqa 1152(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1152(%rdi) -vmovdqa 1184(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1152(%rdi) +vmovdqa 1184(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1184(%rdi) -vmovdqa 1216(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1184(%rdi) +vmovdqa 1216(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1216(%rdi) -vmovdqa 1248(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1216(%rdi) +vmovdqa 1248(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1248(%rdi) -vmovdqa 1280(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1248(%rdi) +vmovdqa 1280(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1280(%rdi) -vmovdqa 1312(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1280(%rdi) +vmovdqa 1312(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1312(%rdi) -vmovdqa 1344(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1312(%rdi) +vmovdqa 1344(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1344(%rdi) -vmovdqa 1376(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $10, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $11, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1344(%rdi) +vmovdqa 1376(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $10, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1376(%rdi) +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1376(%rdi) ret diff --git a/crypto_kem/ntruhps2048677/clean/owcpa.c b/crypto_kem/ntruhps2048677/clean/owcpa.c index 261553d7..2128b054 100644 --- a/crypto_kem/ntruhps2048677/clean/owcpa.c +++ b/crypto_kem/ntruhps2048677/clean/owcpa.c @@ -2,40 +2,59 @@ #include "poly.h" #include "sample.h" +static int owcpa_check_ciphertext(const unsigned char *ciphertext) { + /* A ciphertext is log2(q)*(n-1) bits packed into bytes. */ + /* Check that any unused bits of the final byte are zero. */ + + uint16_t t = 0; + + t = ciphertext[NTRU_CIPHERTEXTBYTES - 1]; + t &= 0xff << (8 - (7 & (NTRU_LOGQ * NTRU_PACK_DEG))); + + /* We have 0 <= t < 256 */ + /* Return 0 on success (t=0), 1 on failure */ + return (int) (1 & ((~t + 1) >> 15)); +} + static int owcpa_check_r(const poly *r) { - /* Check that r is in message space. */ - /* Note: Assumes that r has coefficients in {0, 1, ..., q-1} */ + /* A valid r has coefficients in {0,1,q-1} and has r[N-1] = 0 */ + /* Note: We may assume that 0 <= r[i] <= q-1 for all i */ + int i; - uint64_t t = 0; + uint32_t t = 0; uint16_t c; - for (i = 0; i < NTRU_N; i++) { - c = MODQ(r->coeffs[i] + 1); - t |= c & (NTRU_Q - 4); /* 0 if c is in {0,1,2,3} */ - t |= (c + 1) & 0x4; /* 0 if c is in {0,1,2} */ + for (i = 0; i < NTRU_N - 1; i++) { + c = r->coeffs[i]; + t |= (c + 1) & (NTRU_Q - 4); /* 0 iff c is in {-1,0,1,2} */ + t |= (c + 2) & 4; /* 1 if c = 2, 0 if c is in {-1,0,1} */ } - t |= MODQ(r->coeffs[NTRU_N - 1]); /* Coefficient n-1 must be zero */ - t = (~t + 1); // two's complement - t >>= 63; - return (int) t; + t |= r->coeffs[NTRU_N - 1]; /* Coefficient n-1 must be zero */ + + /* We have 0 <= t < 2^16. */ + /* Return 0 on success (t=0), 1 on failure */ + return (int) (1 & ((~t + 1) >> 31)); } static int owcpa_check_m(const poly *m) { - /* Check that m is in message space. */ - /* Note: Assumes that m has coefficients in {0,1,2}. */ + /* Check that m is in message space, i.e. */ + /* (1) |{i : m[i] = 1}| = |{i : m[i] = 2}|, and */ + /* (2) |{i : m[i] != 0}| = NTRU_WEIGHT. */ + /* Note: We may assume that m has coefficients in {0,1,2}. */ + int i; - uint64_t t = 0; - uint16_t p1 = 0; - uint16_t m1 = 0; + uint32_t t = 0; + uint16_t ps = 0; + uint16_t ms = 0; for (i = 0; i < NTRU_N; i++) { - p1 += m->coeffs[i] & 0x01; - m1 += (m->coeffs[i] & 0x02) >> 1; + ps += m->coeffs[i] & 1; + ms += m->coeffs[i] & 2; } - /* Need p1 = m1 and p1 + m1 = NTRU_WEIGHT */ - t |= p1 ^ m1; - t |= (p1 + m1) ^ NTRU_WEIGHT; - t = (~t + 1); // two's complement - t >>= 63; - return (int) t; + t |= ps ^ (ms >> 1); /* 0 if (1) holds */ + t |= ms ^ NTRU_WEIGHT; /* 0 if (1) and (2) hold */ + + /* We have 0 <= t < 2^16. */ + /* Return 0 on success (t=0), 1 on failure */ + return (int) (1 & ((~t + 1) >> 31)); } void PQCLEAN_NTRUHPS2048677_CLEAN_owcpa_keypair(unsigned char *pk, @@ -125,8 +144,8 @@ int PQCLEAN_NTRUHPS2048677_CLEAN_owcpa_dec(unsigned char *rm, fail = 0; - /* Check that unused bits of last byte of ciphertext are zero */ - fail |= ciphertext[NTRU_CIPHERTEXTBYTES - 1] & (0xff << (8 - (7 & (NTRU_LOGQ * NTRU_PACK_DEG)))); + /* Check that the unused bits of the last byte of the ciphertext are zero */ + fail |= owcpa_check_ciphertext(ciphertext); /* For the IND-CCA2 KEM we must ensure that c = Enc(h, (r,m)). */ /* We can avoid re-computing r*h + Lift(m) as long as we check that */ diff --git a/crypto_kem/ntruhps2048677/clean/poly_mod.c b/crypto_kem/ntruhps2048677/clean/poly_mod.c index 5bd675e7..d0482327 100644 --- a/crypto_kem/ntruhps2048677/clean/poly_mod.c +++ b/crypto_kem/ntruhps2048677/clean/poly_mod.c @@ -30,14 +30,22 @@ void PQCLEAN_NTRUHPS2048677_CLEAN_poly_mod_q_Phi_n(poly *r) { } void PQCLEAN_NTRUHPS2048677_CLEAN_poly_Rq_to_S3(poly *r, const poly *a) { - /* NOTE: Assumes input is in [0,Q-1]^N */ - /* Produces output in {0,1,2}^N */ int i; + uint16_t flag; - /* Center coeffs around 3Q: [0, Q-1] -> [3Q - Q/2, 3Q + Q/2) */ + /* The coefficients of a are stored as non-negative integers. */ + /* We must translate to representatives in [-q/2, q/2) before */ + /* reduction mod 3. */ for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = ((MODQ(a->coeffs[i]) >> (NTRU_LOGQ - 1)) ^ 3) << NTRU_LOGQ; - r->coeffs[i] += MODQ(a->coeffs[i]); + /* Need an explicit reduction mod q here */ + r->coeffs[i] = MODQ(a->coeffs[i]); + + /* flag = 1 if r[i] >= q/2 else 0 */ + flag = r->coeffs[i] >> (NTRU_LOGQ - 1); + + /* Now we will add (-q) mod 3 if r[i] >= q/2 */ + /* Note (-q) mod 3=(-2^k) mod 3=1<<(1-(k&1)) */ + r->coeffs[i] += flag << (1 - (NTRU_LOGQ & 1)); } PQCLEAN_NTRUHPS2048677_CLEAN_poly_mod_3_Phi_n(r); diff --git a/crypto_kem/ntruhps4096821/META.yml b/crypto_kem/ntruhps4096821/META.yml index ef13b3a3..f250a5f1 100644 --- a/crypto_kem/ntruhps4096821/META.yml +++ b/crypto_kem/ntruhps4096821/META.yml @@ -23,9 +23,9 @@ auxiliary-submitters: - Zhenfei Zhang implementations: - name: clean - version: https://github.com/jschanck/ntru/tree/2d4df948 reference implementation + version: https://github.com/jschanck/ntru/tree/b38a346a reference implementation - name: avx2 - version: https://github.com/jschanck/ntru/tree/2d4df948 avx2 implementation + version: https://github.com/jschanck/ntru/tree/b38a346a avx2 implementation supported_platforms: - architecture: x86_64 operating_systems: diff --git a/crypto_kem/ntruhps4096821/avx2/owcpa.c b/crypto_kem/ntruhps4096821/avx2/owcpa.c index 36cdafd0..6a73b097 100644 --- a/crypto_kem/ntruhps4096821/avx2/owcpa.c +++ b/crypto_kem/ntruhps4096821/avx2/owcpa.c @@ -2,40 +2,59 @@ #include "poly.h" #include "sample.h" +static int owcpa_check_ciphertext(const unsigned char *ciphertext) { + /* A ciphertext is log2(q)*(n-1) bits packed into bytes. */ + /* Check that any unused bits of the final byte are zero. */ + + uint16_t t = 0; + + t = ciphertext[NTRU_CIPHERTEXTBYTES - 1]; + t &= 0xff << (8 - (7 & (NTRU_LOGQ * NTRU_PACK_DEG))); + + /* We have 0 <= t < 256 */ + /* Return 0 on success (t=0), 1 on failure */ + return (int) (1 & ((~t + 1) >> 15)); +} + static int owcpa_check_r(const poly *r) { - /* Check that r is in message space. */ - /* Note: Assumes that r has coefficients in {0, 1, ..., q-1} */ + /* A valid r has coefficients in {0,1,q-1} and has r[N-1] = 0 */ + /* Note: We may assume that 0 <= r[i] <= q-1 for all i */ + int i; - uint64_t t = 0; + uint32_t t = 0; uint16_t c; - for (i = 0; i < NTRU_N; i++) { - c = MODQ(r->coeffs[i] + 1); - t |= c & (NTRU_Q - 4); /* 0 if c is in {0,1,2,3} */ - t |= (c + 1) & 0x4; /* 0 if c is in {0,1,2} */ + for (i = 0; i < NTRU_N - 1; i++) { + c = r->coeffs[i]; + t |= (c + 1) & (NTRU_Q - 4); /* 0 iff c is in {-1,0,1,2} */ + t |= (c + 2) & 4; /* 1 if c = 2, 0 if c is in {-1,0,1} */ } - t |= MODQ(r->coeffs[NTRU_N - 1]); /* Coefficient n-1 must be zero */ - t = (~t + 1); // two's complement - t >>= 63; - return (int) t; + t |= r->coeffs[NTRU_N - 1]; /* Coefficient n-1 must be zero */ + + /* We have 0 <= t < 2^16. */ + /* Return 0 on success (t=0), 1 on failure */ + return (int) (1 & ((~t + 1) >> 31)); } static int owcpa_check_m(const poly *m) { - /* Check that m is in message space. */ - /* Note: Assumes that m has coefficients in {0,1,2}. */ + /* Check that m is in message space, i.e. */ + /* (1) |{i : m[i] = 1}| = |{i : m[i] = 2}|, and */ + /* (2) |{i : m[i] != 0}| = NTRU_WEIGHT. */ + /* Note: We may assume that m has coefficients in {0,1,2}. */ + int i; - uint64_t t = 0; - uint16_t p1 = 0; - uint16_t m1 = 0; + uint32_t t = 0; + uint16_t ps = 0; + uint16_t ms = 0; for (i = 0; i < NTRU_N; i++) { - p1 += m->coeffs[i] & 0x01; - m1 += (m->coeffs[i] & 0x02) >> 1; + ps += m->coeffs[i] & 1; + ms += m->coeffs[i] & 2; } - /* Need p1 = m1 and p1 + m1 = NTRU_WEIGHT */ - t |= p1 ^ m1; - t |= (p1 + m1) ^ NTRU_WEIGHT; - t = (~t + 1); // two's complement - t >>= 63; - return (int) t; + t |= ps ^ (ms >> 1); /* 0 if (1) holds */ + t |= ms ^ NTRU_WEIGHT; /* 0 if (1) and (2) hold */ + + /* We have 0 <= t < 2^16. */ + /* Return 0 on success (t=0), 1 on failure */ + return (int) (1 & ((~t + 1) >> 31)); } void PQCLEAN_NTRUHPS4096821_AVX2_owcpa_keypair(unsigned char *pk, @@ -125,8 +144,8 @@ int PQCLEAN_NTRUHPS4096821_AVX2_owcpa_dec(unsigned char *rm, fail = 0; - /* Check that unused bits of last byte of ciphertext are zero */ - fail |= ciphertext[NTRU_CIPHERTEXTBYTES - 1] & (0xff << (8 - (7 & (NTRU_LOGQ * NTRU_PACK_DEG)))); + /* Check that the unused bits of the last byte of the ciphertext are zero */ + fail |= owcpa_check_ciphertext(ciphertext); /* For the IND-CCA2 KEM we must ensure that c = Enc(h, (r,m)). */ /* We can avoid re-computing r*h + Lift(m) as long as we check that */ diff --git a/crypto_kem/ntruhps4096821/avx2/poly_rq_to_s3.s b/crypto_kem/ntruhps4096821/avx2/poly_rq_to_s3.s index 0f8d30a3..584d0035 100644 --- a/crypto_kem/ntruhps4096821/avx2/poly_rq_to_s3.s +++ b/crypto_kem/ntruhps4096821/avx2/poly_rq_to_s3.s @@ -1,55 +1,5 @@ .data .p2align 5 -const_3_repeating: -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -shuf_b8_to_low_doubleword: -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 mask_modq: .word 4095 .word 4095 @@ -123,1333 +73,1281 @@ mask_3: .global _PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_to_S3 PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_to_S3: _PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_to_S3: -vmovdqa const_3_repeating(%rip), %ymm3 vmovdqa mask_modq(%rip), %ymm6 -vmovdqa 1632(%rsi), %ymm4 -vpand %ymm6, %ymm4, %ymm4 -vpsrlw $11, %ymm4, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm4 -vpsrlw $8, %ymm4, %ymm5 -vpand mask_ff(%rip), %ymm4, %ymm4 -vpaddw %ymm5, %ymm4, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm4 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm4 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm4 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vmovdqa 1632(%rsi), %ymm5 +vpand %ymm6, %ymm5, %ymm5 +vpermq $1, %ymm5, %ymm5 +vpslld $16, %ymm5, %ymm1 +vpsrld $16, %ymm1, %ymm5 +vpor %ymm5, %ymm1, %ymm5 +vbroadcastss %xmm5, %ymm5 +vpsrlw $11, %ymm5, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm5, %ymm1, %ymm5 +vpsrlw $8, %ymm5, %ymm1 +vpand mask_ff(%rip), %ymm5, %ymm5 +vpaddw %ymm1, %ymm5, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm5 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm5, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm5 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm5, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm5 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm5, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm4 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm4, %ymm5 -vpsllw $1, %ymm5, %ymm4 -vextracti128 $1, %ymm4, %xmm4 -vpshufb shuf_b8_to_low_doubleword(%rip), %ymm4, %ymm4 -vinserti128 $1, %xmm4, %ymm4, %ymm4 -vmovdqa 0(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpandn %ymm14, %ymm15, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm5, %ymm1 +vpsllw $1, %ymm1, %ymm5 +vmovdqa 0(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 0(%rdi) -vmovdqa 32(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 0(%rdi) +vmovdqa 32(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 32(%rdi) -vmovdqa 64(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 32(%rdi) +vmovdqa 64(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 64(%rdi) -vmovdqa 96(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 64(%rdi) +vmovdqa 96(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 96(%rdi) -vmovdqa 128(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 96(%rdi) +vmovdqa 128(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 128(%rdi) -vmovdqa 160(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 128(%rdi) +vmovdqa 160(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 160(%rdi) -vmovdqa 192(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 160(%rdi) +vmovdqa 192(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 192(%rdi) -vmovdqa 224(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 192(%rdi) +vmovdqa 224(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 224(%rdi) -vmovdqa 256(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 224(%rdi) +vmovdqa 256(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 256(%rdi) -vmovdqa 288(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 256(%rdi) +vmovdqa 288(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 288(%rdi) -vmovdqa 320(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 288(%rdi) +vmovdqa 320(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 320(%rdi) -vmovdqa 352(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 320(%rdi) +vmovdqa 352(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 352(%rdi) -vmovdqa 384(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 352(%rdi) +vmovdqa 384(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 384(%rdi) -vmovdqa 416(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 384(%rdi) +vmovdqa 416(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 416(%rdi) -vmovdqa 448(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 416(%rdi) +vmovdqa 448(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 448(%rdi) -vmovdqa 480(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 448(%rdi) +vmovdqa 480(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 480(%rdi) -vmovdqa 512(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 480(%rdi) +vmovdqa 512(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 512(%rdi) -vmovdqa 544(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 512(%rdi) +vmovdqa 544(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 544(%rdi) -vmovdqa 576(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 544(%rdi) +vmovdqa 576(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 576(%rdi) -vmovdqa 608(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 576(%rdi) +vmovdqa 608(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 608(%rdi) -vmovdqa 640(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 608(%rdi) +vmovdqa 640(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 640(%rdi) -vmovdqa 672(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 640(%rdi) +vmovdqa 672(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 672(%rdi) -vmovdqa 704(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 672(%rdi) +vmovdqa 704(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 704(%rdi) -vmovdqa 736(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 704(%rdi) +vmovdqa 736(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 736(%rdi) -vmovdqa 768(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 736(%rdi) +vmovdqa 768(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 768(%rdi) -vmovdqa 800(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 768(%rdi) +vmovdqa 800(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 800(%rdi) -vmovdqa 832(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 800(%rdi) +vmovdqa 832(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 832(%rdi) -vmovdqa 864(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 832(%rdi) +vmovdqa 864(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 864(%rdi) -vmovdqa 896(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 864(%rdi) +vmovdqa 896(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 896(%rdi) -vmovdqa 928(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 896(%rdi) +vmovdqa 928(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 928(%rdi) -vmovdqa 960(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 928(%rdi) +vmovdqa 960(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 960(%rdi) -vmovdqa 992(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 960(%rdi) +vmovdqa 992(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 992(%rdi) -vmovdqa 1024(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 992(%rdi) +vmovdqa 1024(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1024(%rdi) -vmovdqa 1056(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1024(%rdi) +vmovdqa 1056(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1056(%rdi) -vmovdqa 1088(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1056(%rdi) +vmovdqa 1088(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1088(%rdi) -vmovdqa 1120(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1088(%rdi) +vmovdqa 1120(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1120(%rdi) -vmovdqa 1152(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1120(%rdi) +vmovdqa 1152(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1152(%rdi) -vmovdqa 1184(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1152(%rdi) +vmovdqa 1184(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1184(%rdi) -vmovdqa 1216(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1184(%rdi) +vmovdqa 1216(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1216(%rdi) -vmovdqa 1248(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1216(%rdi) +vmovdqa 1248(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1248(%rdi) -vmovdqa 1280(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1248(%rdi) +vmovdqa 1280(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1280(%rdi) -vmovdqa 1312(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1280(%rdi) +vmovdqa 1312(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1312(%rdi) -vmovdqa 1344(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1312(%rdi) +vmovdqa 1344(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1344(%rdi) -vmovdqa 1376(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1344(%rdi) +vmovdqa 1376(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1376(%rdi) -vmovdqa 1408(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1376(%rdi) +vmovdqa 1408(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1408(%rdi) -vmovdqa 1440(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1408(%rdi) +vmovdqa 1440(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1440(%rdi) -vmovdqa 1472(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1440(%rdi) +vmovdqa 1472(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1472(%rdi) -vmovdqa 1504(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1472(%rdi) +vmovdqa 1504(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1504(%rdi) -vmovdqa 1536(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1504(%rdi) +vmovdqa 1536(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1536(%rdi) -vmovdqa 1568(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1536(%rdi) +vmovdqa 1568(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1568(%rdi) -vmovdqa 1600(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1568(%rdi) +vmovdqa 1600(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1600(%rdi) -vmovdqa 1632(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $11, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $12, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1600(%rdi) +vmovdqa 1632(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $11, %ymm0, %ymm1 +vpsllw $1, %ymm1, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1632(%rdi) +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1632(%rdi) ret diff --git a/crypto_kem/ntruhps4096821/clean/owcpa.c b/crypto_kem/ntruhps4096821/clean/owcpa.c index d6627caf..9e7964fe 100644 --- a/crypto_kem/ntruhps4096821/clean/owcpa.c +++ b/crypto_kem/ntruhps4096821/clean/owcpa.c @@ -2,40 +2,59 @@ #include "poly.h" #include "sample.h" +static int owcpa_check_ciphertext(const unsigned char *ciphertext) { + /* A ciphertext is log2(q)*(n-1) bits packed into bytes. */ + /* Check that any unused bits of the final byte are zero. */ + + uint16_t t = 0; + + t = ciphertext[NTRU_CIPHERTEXTBYTES - 1]; + t &= 0xff << (8 - (7 & (NTRU_LOGQ * NTRU_PACK_DEG))); + + /* We have 0 <= t < 256 */ + /* Return 0 on success (t=0), 1 on failure */ + return (int) (1 & ((~t + 1) >> 15)); +} + static int owcpa_check_r(const poly *r) { - /* Check that r is in message space. */ - /* Note: Assumes that r has coefficients in {0, 1, ..., q-1} */ + /* A valid r has coefficients in {0,1,q-1} and has r[N-1] = 0 */ + /* Note: We may assume that 0 <= r[i] <= q-1 for all i */ + int i; - uint64_t t = 0; + uint32_t t = 0; uint16_t c; - for (i = 0; i < NTRU_N; i++) { - c = MODQ(r->coeffs[i] + 1); - t |= c & (NTRU_Q - 4); /* 0 if c is in {0,1,2,3} */ - t |= (c + 1) & 0x4; /* 0 if c is in {0,1,2} */ + for (i = 0; i < NTRU_N - 1; i++) { + c = r->coeffs[i]; + t |= (c + 1) & (NTRU_Q - 4); /* 0 iff c is in {-1,0,1,2} */ + t |= (c + 2) & 4; /* 1 if c = 2, 0 if c is in {-1,0,1} */ } - t |= MODQ(r->coeffs[NTRU_N - 1]); /* Coefficient n-1 must be zero */ - t = (~t + 1); // two's complement - t >>= 63; - return (int) t; + t |= r->coeffs[NTRU_N - 1]; /* Coefficient n-1 must be zero */ + + /* We have 0 <= t < 2^16. */ + /* Return 0 on success (t=0), 1 on failure */ + return (int) (1 & ((~t + 1) >> 31)); } static int owcpa_check_m(const poly *m) { - /* Check that m is in message space. */ - /* Note: Assumes that m has coefficients in {0,1,2}. */ + /* Check that m is in message space, i.e. */ + /* (1) |{i : m[i] = 1}| = |{i : m[i] = 2}|, and */ + /* (2) |{i : m[i] != 0}| = NTRU_WEIGHT. */ + /* Note: We may assume that m has coefficients in {0,1,2}. */ + int i; - uint64_t t = 0; - uint16_t p1 = 0; - uint16_t m1 = 0; + uint32_t t = 0; + uint16_t ps = 0; + uint16_t ms = 0; for (i = 0; i < NTRU_N; i++) { - p1 += m->coeffs[i] & 0x01; - m1 += (m->coeffs[i] & 0x02) >> 1; + ps += m->coeffs[i] & 1; + ms += m->coeffs[i] & 2; } - /* Need p1 = m1 and p1 + m1 = NTRU_WEIGHT */ - t |= p1 ^ m1; - t |= (p1 + m1) ^ NTRU_WEIGHT; - t = (~t + 1); // two's complement - t >>= 63; - return (int) t; + t |= ps ^ (ms >> 1); /* 0 if (1) holds */ + t |= ms ^ NTRU_WEIGHT; /* 0 if (1) and (2) hold */ + + /* We have 0 <= t < 2^16. */ + /* Return 0 on success (t=0), 1 on failure */ + return (int) (1 & ((~t + 1) >> 31)); } void PQCLEAN_NTRUHPS4096821_CLEAN_owcpa_keypair(unsigned char *pk, @@ -125,8 +144,8 @@ int PQCLEAN_NTRUHPS4096821_CLEAN_owcpa_dec(unsigned char *rm, fail = 0; - /* Check that unused bits of last byte of ciphertext are zero */ - fail |= ciphertext[NTRU_CIPHERTEXTBYTES - 1] & (0xff << (8 - (7 & (NTRU_LOGQ * NTRU_PACK_DEG)))); + /* Check that the unused bits of the last byte of the ciphertext are zero */ + fail |= owcpa_check_ciphertext(ciphertext); /* For the IND-CCA2 KEM we must ensure that c = Enc(h, (r,m)). */ /* We can avoid re-computing r*h + Lift(m) as long as we check that */ diff --git a/crypto_kem/ntruhps4096821/clean/poly_mod.c b/crypto_kem/ntruhps4096821/clean/poly_mod.c index 7daa9953..ec83027f 100644 --- a/crypto_kem/ntruhps4096821/clean/poly_mod.c +++ b/crypto_kem/ntruhps4096821/clean/poly_mod.c @@ -30,14 +30,22 @@ void PQCLEAN_NTRUHPS4096821_CLEAN_poly_mod_q_Phi_n(poly *r) { } void PQCLEAN_NTRUHPS4096821_CLEAN_poly_Rq_to_S3(poly *r, const poly *a) { - /* NOTE: Assumes input is in [0,Q-1]^N */ - /* Produces output in {0,1,2}^N */ int i; + uint16_t flag; - /* Center coeffs around 3Q: [0, Q-1] -> [3Q - Q/2, 3Q + Q/2) */ + /* The coefficients of a are stored as non-negative integers. */ + /* We must translate to representatives in [-q/2, q/2) before */ + /* reduction mod 3. */ for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = ((MODQ(a->coeffs[i]) >> (NTRU_LOGQ - 1)) ^ 3) << NTRU_LOGQ; - r->coeffs[i] += MODQ(a->coeffs[i]); + /* Need an explicit reduction mod q here */ + r->coeffs[i] = MODQ(a->coeffs[i]); + + /* flag = 1 if r[i] >= q/2 else 0 */ + flag = r->coeffs[i] >> (NTRU_LOGQ - 1); + + /* Now we will add (-q) mod 3 if r[i] >= q/2 */ + /* Note (-q) mod 3=(-2^k) mod 3=1<<(1-(k&1)) */ + r->coeffs[i] += flag << (1 - (NTRU_LOGQ & 1)); } PQCLEAN_NTRUHPS4096821_CLEAN_poly_mod_3_Phi_n(r); diff --git a/crypto_kem/ntruhrss701/META.yml b/crypto_kem/ntruhrss701/META.yml index f20c263c..1771f7c0 100644 --- a/crypto_kem/ntruhrss701/META.yml +++ b/crypto_kem/ntruhrss701/META.yml @@ -23,9 +23,9 @@ auxiliary-submitters: - Zhenfei Zhang implementations: - name: clean - version: https://github.com/jschanck/ntru/tree/2d4df948 reference implementation + version: https://github.com/jschanck/ntru/tree/b38a346a reference implementation - name: avx2 - version: https://github.com/jschanck/ntru/tree/2d4df948 avx2 implementation + version: https://github.com/jschanck/ntru/tree/b38a346a avx2 implementation supported_platforms: - architecture: x86_64 operating_systems: diff --git a/crypto_kem/ntruhrss701/avx2/Makefile b/crypto_kem/ntruhrss701/avx2/Makefile index 6d14410c..d3836d08 100644 --- a/crypto_kem/ntruhrss701/avx2/Makefile +++ b/crypto_kem/ntruhrss701/avx2/Makefile @@ -2,9 +2,9 @@ LIB=libntruhrss701_avx2.a HEADERS=api.h cmov.h owcpa.h params.h poly.h poly_r2_inv.h sample.h -OBJECTS=cmov.o kem.o owcpa.o pack3.o packq.o poly.o poly_r2_inv.o sample.o sample_iid.o \ +OBJECTS=cmov.o kem.o owcpa.o pack3.o packq.o poly.o poly_r2_inv.o poly_s3_inv.o sample.o sample_iid.o \ square_1_701_patience.o square_3_701_patience.o square_6_701_patience.o square_12_701_shufbytes.o square_15_701_shufbytes.o square_27_701_shufbytes.o square_42_701_shufbytes.o square_84_701_shufbytes.o square_168_701_shufbytes.o square_336_701_shufbytes.o \ - poly_lift.o poly_mod_3_Phi_n.o poly_mod_q_Phi_n.o poly_r2_mul.o poly_rq_mul.o poly_rq_to_s3.o poly_s3_inv.o vec32_sample_iid.o + poly_lift.o poly_mod_3_Phi_n.o poly_mod_q_Phi_n.o poly_r2_mul.o poly_rq_mul.o poly_rq_to_s3.o vec32_sample_iid.o CFLAGS=-O3 -mavx2 -mbmi2 -Wall -Wextra -Wpedantic -Wvla -Werror -Wredundant-decls -Wmissing-prototypes -std=c99 -I../../../common $(EXTRAFLAGS) diff --git a/crypto_kem/ntruhrss701/avx2/owcpa.c b/crypto_kem/ntruhrss701/avx2/owcpa.c index 72f3447d..a6de2231 100644 --- a/crypto_kem/ntruhrss701/avx2/owcpa.c +++ b/crypto_kem/ntruhrss701/avx2/owcpa.c @@ -2,21 +2,37 @@ #include "poly.h" #include "sample.h" +static int owcpa_check_ciphertext(const unsigned char *ciphertext) { + /* A ciphertext is log2(q)*(n-1) bits packed into bytes. */ + /* Check that any unused bits of the final byte are zero. */ + + uint16_t t = 0; + + t = ciphertext[NTRU_CIPHERTEXTBYTES - 1]; + t &= 0xff << (8 - (7 & (NTRU_LOGQ * NTRU_PACK_DEG))); + + /* We have 0 <= t < 256 */ + /* Return 0 on success (t=0), 1 on failure */ + return (int) (1 & ((~t + 1) >> 15)); +} + static int owcpa_check_r(const poly *r) { - /* Check that r is in message space. */ - /* Note: Assumes that r has coefficients in {0, 1, ..., q-1} */ + /* A valid r has coefficients in {0,1,q-1} and has r[N-1] = 0 */ + /* Note: We may assume that 0 <= r[i] <= q-1 for all i */ + int i; - uint64_t t = 0; + uint32_t t = 0; uint16_t c; - for (i = 0; i < NTRU_N; i++) { - c = MODQ(r->coeffs[i] + 1); - t |= c & (NTRU_Q - 4); /* 0 if c is in {0,1,2,3} */ - t |= (c + 1) & 0x4; /* 0 if c is in {0,1,2} */ + for (i = 0; i < NTRU_N - 1; i++) { + c = r->coeffs[i]; + t |= (c + 1) & (NTRU_Q - 4); /* 0 iff c is in {-1,0,1,2} */ + t |= (c + 2) & 4; /* 1 if c = 2, 0 if c is in {-1,0,1} */ } - t |= MODQ(r->coeffs[NTRU_N - 1]); /* Coefficient n-1 must be zero */ - t = (~t + 1); // two's complement - t >>= 63; - return (int) t; + t |= r->coeffs[NTRU_N - 1]; /* Coefficient n-1 must be zero */ + + /* We have 0 <= t < 2^16. */ + /* Return 0 on success (t=0), 1 on failure */ + return (int) (1 & ((~t + 1) >> 31)); } @@ -108,8 +124,8 @@ int PQCLEAN_NTRUHRSS701_AVX2_owcpa_dec(unsigned char *rm, fail = 0; - /* Check that unused bits of last byte of ciphertext are zero */ - fail |= ciphertext[NTRU_CIPHERTEXTBYTES - 1] & (0xff << (8 - (7 & (NTRU_LOGQ * NTRU_PACK_DEG)))); + /* Check that the unused bits of the last byte of the ciphertext are zero */ + fail |= owcpa_check_ciphertext(ciphertext); /* For the IND-CCA2 KEM we must ensure that c = Enc(h, (r,m)). */ /* We can avoid re-computing r*h + Lift(m) as long as we check that */ diff --git a/crypto_kem/ntruhrss701/avx2/poly_rq_to_s3.s b/crypto_kem/ntruhrss701/avx2/poly_rq_to_s3.s index b6d959c7..6f5ca974 100644 --- a/crypto_kem/ntruhrss701/avx2/poly_rq_to_s3.s +++ b/crypto_kem/ntruhrss701/avx2/poly_rq_to_s3.s @@ -1,55 +1,5 @@ .data .p2align 5 -const_3_repeating: -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -.word 0x3 -shuf_b8_to_low_doubleword: -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 mask_modq: .word 8191 .word 8191 @@ -123,1133 +73,1044 @@ mask_3: .global _PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_to_S3 PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_to_S3: _PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_to_S3: -vmovdqa const_3_repeating(%rip), %ymm3 vmovdqa mask_modq(%rip), %ymm6 -vmovdqa 1376(%rsi), %ymm4 -vpand %ymm6, %ymm4, %ymm4 -vpsrlw $12, %ymm4, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm4 -vpsrlw $8, %ymm4, %ymm5 -vpand mask_ff(%rip), %ymm4, %ymm4 -vpaddw %ymm5, %ymm4, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm4 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm4 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm4 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vmovdqa 1376(%rsi), %ymm5 +vpand %ymm6, %ymm5, %ymm5 +vpermq $3, %ymm5, %ymm5 +vpslld $16, %ymm5, %ymm1 +vpsrld $16, %ymm1, %ymm5 +vpor %ymm5, %ymm1, %ymm5 +vbroadcastss %xmm5, %ymm5 +vpsrlw $12, %ymm5, %ymm1 +vpaddw %ymm5, %ymm1, %ymm5 +vpsrlw $8, %ymm5, %ymm1 +vpand mask_ff(%rip), %ymm5, %ymm5 +vpaddw %ymm1, %ymm5, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm5 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm5, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm5 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm5, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm5 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm5, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm4 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm4, %ymm5 -vpsllw $1, %ymm5, %ymm4 -vextracti128 $1, %ymm4, %xmm4 -vpshufb shuf_b8_to_low_doubleword(%rip), %ymm4, %ymm4 -vinserti128 $1, %xmm4, %ymm4, %ymm4 -vmovdqa 0(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpandn %ymm14, %ymm15, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm5, %ymm1 +vpsllw $1, %ymm1, %ymm5 +vmovdqa 0(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 0(%rdi) -vmovdqa 32(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 0(%rdi) +vmovdqa 32(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 32(%rdi) -vmovdqa 64(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 32(%rdi) +vmovdqa 64(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 64(%rdi) -vmovdqa 96(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 64(%rdi) +vmovdqa 96(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 96(%rdi) -vmovdqa 128(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 96(%rdi) +vmovdqa 128(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 128(%rdi) -vmovdqa 160(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 128(%rdi) +vmovdqa 160(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 160(%rdi) -vmovdqa 192(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 160(%rdi) +vmovdqa 192(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 192(%rdi) -vmovdqa 224(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 192(%rdi) +vmovdqa 224(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 224(%rdi) -vmovdqa 256(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 224(%rdi) +vmovdqa 256(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 256(%rdi) -vmovdqa 288(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 256(%rdi) +vmovdqa 288(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 288(%rdi) -vmovdqa 320(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 288(%rdi) +vmovdqa 320(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 320(%rdi) -vmovdqa 352(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 320(%rdi) +vmovdqa 352(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 352(%rdi) -vmovdqa 384(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 352(%rdi) +vmovdqa 384(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 384(%rdi) -vmovdqa 416(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 384(%rdi) +vmovdqa 416(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 416(%rdi) -vmovdqa 448(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 416(%rdi) +vmovdqa 448(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 448(%rdi) -vmovdqa 480(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 448(%rdi) +vmovdqa 480(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 480(%rdi) -vmovdqa 512(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 480(%rdi) +vmovdqa 512(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 512(%rdi) -vmovdqa 544(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 512(%rdi) +vmovdqa 544(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 544(%rdi) -vmovdqa 576(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 544(%rdi) +vmovdqa 576(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 576(%rdi) -vmovdqa 608(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 576(%rdi) +vmovdqa 608(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 608(%rdi) -vmovdqa 640(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 608(%rdi) +vmovdqa 640(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 640(%rdi) -vmovdqa 672(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 640(%rdi) +vmovdqa 672(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 672(%rdi) -vmovdqa 704(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 672(%rdi) +vmovdqa 704(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 704(%rdi) -vmovdqa 736(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 704(%rdi) +vmovdqa 736(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 736(%rdi) -vmovdqa 768(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 736(%rdi) +vmovdqa 768(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 768(%rdi) -vmovdqa 800(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 768(%rdi) +vmovdqa 800(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 800(%rdi) -vmovdqa 832(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 800(%rdi) +vmovdqa 832(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 832(%rdi) -vmovdqa 864(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 832(%rdi) +vmovdqa 864(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 864(%rdi) -vmovdqa 896(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 864(%rdi) +vmovdqa 896(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 896(%rdi) -vmovdqa 928(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 896(%rdi) +vmovdqa 928(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 928(%rdi) -vmovdqa 960(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 928(%rdi) +vmovdqa 960(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 960(%rdi) -vmovdqa 992(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 960(%rdi) +vmovdqa 992(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 992(%rdi) -vmovdqa 1024(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 992(%rdi) +vmovdqa 1024(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1024(%rdi) -vmovdqa 1056(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1024(%rdi) +vmovdqa 1056(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1056(%rdi) -vmovdqa 1088(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1056(%rdi) +vmovdqa 1088(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1088(%rdi) -vmovdqa 1120(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1088(%rdi) +vmovdqa 1120(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1120(%rdi) -vmovdqa 1152(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1120(%rdi) +vmovdqa 1152(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1152(%rdi) -vmovdqa 1184(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1152(%rdi) +vmovdqa 1184(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1184(%rdi) -vmovdqa 1216(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1184(%rdi) +vmovdqa 1216(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1216(%rdi) -vmovdqa 1248(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1216(%rdi) +vmovdqa 1248(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1248(%rdi) -vmovdqa 1280(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1248(%rdi) +vmovdqa 1280(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1280(%rdi) -vmovdqa 1312(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1280(%rdi) +vmovdqa 1312(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1312(%rdi) -vmovdqa 1344(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1312(%rdi) +vmovdqa 1344(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1344(%rdi) -vmovdqa 1376(%rsi), %ymm1 -vpand %ymm6, %ymm1, %ymm1 -vpsrlw $12, %ymm1, %ymm0 -vpxor %ymm3, %ymm0, %ymm0 -vpsllw $13, %ymm0, %ymm0 -vpaddw %ymm1, %ymm0, %ymm0 -vpaddw %ymm4, %ymm0, %ymm0 -vpsrlw $8, %ymm0, %ymm5 +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1344(%rdi) +vmovdqa 1376(%rsi), %ymm0 +vpand %ymm6, %ymm0, %ymm0 +vpsrlw $12, %ymm0, %ymm1 +vpaddw %ymm0, %ymm1, %ymm0 +vpaddw %ymm0, %ymm5, %ymm0 +vpsrlw $8, %ymm0, %ymm1 vpand mask_ff(%rip), %ymm0, %ymm0 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_f(%rip), %ymm5, %ymm0 -vpsrlw $4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpand mask_3(%rip), %ymm5, %ymm0 -vpsrlw $2, %ymm5, %ymm5 -vpaddw %ymm5, %ymm0, %ymm5 -vpsubw mask_3(%rip), %ymm5, %ymm14 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_f(%rip), %ymm1, %ymm0 +vpsrlw $4, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm0 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm0, %ymm1 +vpsubw mask_3(%rip), %ymm1, %ymm14 vpsraw $15, %ymm14, %ymm15 vpandn %ymm14, %ymm15, %ymm0 -vpand %ymm15, %ymm5, %ymm14 -vpxor %ymm14, %ymm0, %ymm5 -vmovdqa %ymm5, 1376(%rdi) +vpand %ymm15, %ymm1, %ymm14 +vpxor %ymm14, %ymm0, %ymm1 +vmovdqa %ymm1, 1376(%rdi) ret diff --git a/crypto_kem/ntruhrss701/avx2/poly_s3_inv.c b/crypto_kem/ntruhrss701/avx2/poly_s3_inv.c new file mode 100644 index 00000000..4acd5a89 --- /dev/null +++ b/crypto_kem/ntruhrss701/avx2/poly_s3_inv.c @@ -0,0 +1,569 @@ +#include "poly.h" + +#include + +typedef signed char small; + +#define p 700 +#define ppad 768 +#define numvec 3 + +typedef __m256i vec256; + +/* +This code stores 768-coeff poly as vec256[3]. +Order of 256 coefficients in each vec256 +is optimized in light of costs of vector instructions: + 0,4,...,252 in 64-bit word; + 1,5,...,253 in 64-bit word; + 2,6,...,254 in 64-bit word; + 3,7,...,255 in 64-bit word. +*/ + +static inline void vec256_frombits(vec256 *v, const small *b) { + int i; + + for (i = 0; i < numvec; ++i) { + vec256 b0 = _mm256_loadu_si256((vec256 *) b); + b += 32; /* 0,1,...,31 */ + vec256 b1 = _mm256_loadu_si256((vec256 *) b); + b += 32; /* 32,33,... */ + vec256 b2 = _mm256_loadu_si256((vec256 *) b); + b += 32; + vec256 b3 = _mm256_loadu_si256((vec256 *) b); + b += 32; + vec256 b4 = _mm256_loadu_si256((vec256 *) b); + b += 32; + vec256 b5 = _mm256_loadu_si256((vec256 *) b); + b += 32; + vec256 b6 = _mm256_loadu_si256((vec256 *) b); + b += 32; + vec256 b7 = _mm256_loadu_si256((vec256 *) b); + b += 32; + + vec256 c0 = _mm256_unpacklo_epi32(b0, b1); /* 0 1 2 3 32 33 34 35 4 5 6 7 36 37 38 39 ... 55 */ + vec256 c1 = _mm256_unpackhi_epi32(b0, b1); /* 8 9 10 11 40 41 42 43 ... 63 */ + vec256 c2 = _mm256_unpacklo_epi32(b2, b3); + vec256 c3 = _mm256_unpackhi_epi32(b2, b3); + vec256 c4 = _mm256_unpacklo_epi32(b4, b5); + vec256 c5 = _mm256_unpackhi_epi32(b4, b5); + vec256 c6 = _mm256_unpacklo_epi32(b6, b7); + vec256 c7 = _mm256_unpackhi_epi32(b6, b7); + + vec256 d0 = c0 | _mm256_slli_epi32(c1, 2); /* 0 8, 1 9, 2 10, 3 11, 32 40, 33 41, ..., 55 63 */ + vec256 d2 = c2 | _mm256_slli_epi32(c3, 2); + vec256 d4 = c4 | _mm256_slli_epi32(c5, 2); + vec256 d6 = c6 | _mm256_slli_epi32(c7, 2); + + vec256 e0 = _mm256_unpacklo_epi64(d0, d2); + vec256 e2 = _mm256_unpackhi_epi64(d0, d2); + vec256 e4 = _mm256_unpacklo_epi64(d4, d6); + vec256 e6 = _mm256_unpackhi_epi64(d4, d6); + + vec256 f0 = e0 | _mm256_slli_epi32(e2, 1); + vec256 f4 = e4 | _mm256_slli_epi32(e6, 1); + + vec256 g0 = _mm256_permute2x128_si256(f0, f4, 0x20); + vec256 g4 = _mm256_permute2x128_si256(f0, f4, 0x31); + + vec256 h = g0 | _mm256_slli_epi32(g4, 4); + +#define TRANSPOSE _mm256_set_epi8( 31,27,23,19, 30,26,22,18, 29,25,21,17, 28,24,20,16, 15,11,7,3, 14,10,6,2, 13,9,5,1, 12,8,4,0 ) + h = _mm256_shuffle_epi8(h, TRANSPOSE); + h = _mm256_permute4x64_epi64(h, 0xd8); + h = _mm256_shuffle_epi32(h, 0xd8); + + *v++ = h; + } +} + +static inline void vec256_tobits(const vec256 *v, small *b) { + int i; + + for (i = 0; i < numvec; ++i) { + vec256 h = *v++; + + h = _mm256_shuffle_epi32(h, 0xd8); + h = _mm256_permute4x64_epi64(h, 0xd8); + h = _mm256_shuffle_epi8(h, TRANSPOSE); + + vec256 g0 = h & _mm256_set1_epi8(15); + vec256 g4 = _mm256_srli_epi32(h, 4) & _mm256_set1_epi8(15); + + vec256 f0 = _mm256_permute2x128_si256(g0, g4, 0x20); + vec256 f4 = _mm256_permute2x128_si256(g0, g4, 0x31); + + vec256 e0 = f0 & _mm256_set1_epi8(5); + vec256 e2 = _mm256_srli_epi32(f0, 1) & _mm256_set1_epi8(5); + vec256 e4 = f4 & _mm256_set1_epi8(5); + vec256 e6 = _mm256_srli_epi32(f4, 1) & _mm256_set1_epi8(5); + + vec256 d0 = _mm256_unpacklo_epi32(e0, e2); + vec256 d2 = _mm256_unpackhi_epi32(e0, e2); + vec256 d4 = _mm256_unpacklo_epi32(e4, e6); + vec256 d6 = _mm256_unpackhi_epi32(e4, e6); + + vec256 c0 = d0 & _mm256_set1_epi8(1); + vec256 c1 = _mm256_srli_epi32(d0, 2) & _mm256_set1_epi8(1); + vec256 c2 = d2 & _mm256_set1_epi8(1); + vec256 c3 = _mm256_srli_epi32(d2, 2) & _mm256_set1_epi8(1); + vec256 c4 = d4 & _mm256_set1_epi8(1); + vec256 c5 = _mm256_srli_epi32(d4, 2) & _mm256_set1_epi8(1); + vec256 c6 = d6 & _mm256_set1_epi8(1); + vec256 c7 = _mm256_srli_epi32(d6, 2) & _mm256_set1_epi8(1); + + vec256 b0 = _mm256_unpacklo_epi64(c0, c1); + vec256 b1 = _mm256_unpackhi_epi64(c0, c1); + vec256 b2 = _mm256_unpacklo_epi64(c2, c3); + vec256 b3 = _mm256_unpackhi_epi64(c2, c3); + vec256 b4 = _mm256_unpacklo_epi64(c4, c5); + vec256 b5 = _mm256_unpackhi_epi64(c4, c5); + vec256 b6 = _mm256_unpacklo_epi64(c6, c7); + vec256 b7 = _mm256_unpackhi_epi64(c6, c7); + + _mm256_storeu_si256((vec256 *) b, b0); + b += 32; + _mm256_storeu_si256((vec256 *) b, b1); + b += 32; + _mm256_storeu_si256((vec256 *) b, b2); + b += 32; + _mm256_storeu_si256((vec256 *) b, b3); + b += 32; + _mm256_storeu_si256((vec256 *) b, b4); + b += 32; + _mm256_storeu_si256((vec256 *) b, b5); + b += 32; + _mm256_storeu_si256((vec256 *) b, b6); + b += 32; + _mm256_storeu_si256((vec256 *) b, b7); + b += 32; + } +} + +static void vec256_init(vec256 *G0, vec256 *G1, const small *s) { + int i; + small srev[ppad + (ppad - p)]; + small si; + small g0[ppad]; + small g1[ppad]; + + for (i = 0; i < p; ++i) { + srev[ppad - 1 - i] = s[i]; + } + for (i = 0; i < ppad - p; ++i) { + srev[i] = 0; + } + for (i = p; i < ppad; ++i) { + srev[i + ppad - p] = 0; + } + + for (i = 0; i < ppad; ++i) { + si = srev[i + ppad - p]; + g0[i] = si & 1; + g1[i] = (si >> 1) & g0[i]; + } + + vec256_frombits(G0, g0); + vec256_frombits(G1, g1); +} + +static void vec256_final(small *out, const vec256 *V0, const vec256 *V1) { + int i; + small v0[ppad]; + small v1[ppad]; + small v[ppad]; + small vrev[ppad + (ppad - p)]; + + vec256_tobits(V0, v0); + vec256_tobits(V1, v1); + + for (i = 0; i < ppad; ++i) { + v[i] = v0[i] + 2 * v1[i] - 4 * (v0[i] & v1[i]); + } + + for (i = 0; i < ppad; ++i) { + vrev[i] = v[ppad - 1 - i]; + } + for (i = ppad; i < ppad + (ppad - p); ++i) { + vrev[i] = 0; + } + + for (i = 0; i < p; ++i) { + out[i] = vrev[i + ppad - p]; + } +} + +static inline int negative_mask(int x) { + return x >> 31; +} + +static inline void vec256_swap(vec256 *f, vec256 *g, int len, vec256 mask) { + vec256 flip; + int i; + + for (i = 0; i < len; ++i) { + flip = mask & (f[i] ^ g[i]); + f[i] ^= flip; + g[i] ^= flip; + } +} + +static inline void vec256_scale(vec256 *f0, vec256 *f1, const vec256 c0, const vec256 c1) { + int i; + + for (i = 0; i < numvec; ++i) { + vec256 f0i = f0[i]; + vec256 f1i = f1[i]; + + f0i &= c0; + f1i ^= c1; + f1i &= f0i; + + f0[i] = f0i; + f1[i] = f1i; + } +} + +static inline void vec256_eliminate(vec256 *f0, vec256 *f1, vec256 *g0, vec256 *g1, int len, const vec256 c0, const vec256 c1) { + int i; + + for (i = 0; i < len; ++i) { + vec256 f0i = f0[i]; + vec256 f1i = f1[i]; + vec256 g0i = g0[i]; + vec256 g1i = g1[i]; + vec256 t; + + f0i &= c0; + f1i ^= c1; + f1i &= f0i; + + t = g0i ^ f0i; + g0[i] = t | (g1i ^ f1i); + g1[i] = (g1i ^ f0i) & (f1i ^ t); + } +} + +static inline int vec256_bit0mask(vec256 *f) { + return -(_mm_cvtsi128_si32(_mm256_castsi256_si128(f[0])) & 1); +} + +static inline void vec256_divx_1(vec256 *f) { + vec256 f0 = f[0]; + + unsigned long long low0 = _mm_cvtsi128_si64(_mm256_castsi256_si128(f0)); + + low0 = low0 >> 1; + + f0 = _mm256_blend_epi32(f0, _mm256_set_epi64x(0, 0, 0, low0), 0x3); + + f[0] = _mm256_permute4x64_epi64(f0, 0x39); +} + +static inline void vec256_divx_2(vec256 *f) { + vec256 f0 = f[0]; + vec256 f1 = f[1]; + + unsigned long long low0 = _mm_cvtsi128_si64(_mm256_castsi256_si128(f0)); + unsigned long long low1 = _mm_cvtsi128_si64(_mm256_castsi256_si128(f1)); + + low0 = (low0 >> 1) | (low1 << 63); + low1 = low1 >> 1; + + f0 = _mm256_blend_epi32(f0, _mm256_set_epi64x(0, 0, 0, low0), 0x3); + f1 = _mm256_blend_epi32(f1, _mm256_set_epi64x(0, 0, 0, low1), 0x3); + + f[0] = _mm256_permute4x64_epi64(f0, 0x39); + f[1] = _mm256_permute4x64_epi64(f1, 0x39); +} + +static inline void vec256_divx_3(vec256 *f) { + vec256 f0 = f[0]; + vec256 f1 = f[1]; + vec256 f2 = f[2]; + + unsigned long long low0 = _mm_cvtsi128_si64(_mm256_castsi256_si128(f0)); + unsigned long long low1 = _mm_cvtsi128_si64(_mm256_castsi256_si128(f1)); + unsigned long long low2 = _mm_cvtsi128_si64(_mm256_castsi256_si128(f2)); + + low0 = (low0 >> 1) | (low1 << 63); + low1 = (low1 >> 1) | (low2 << 63); + low2 = low2 >> 1; + + f0 = _mm256_blend_epi32(f0, _mm256_set_epi64x(0, 0, 0, low0), 0x3); + f1 = _mm256_blend_epi32(f1, _mm256_set_epi64x(0, 0, 0, low1), 0x3); + f2 = _mm256_blend_epi32(f2, _mm256_set_epi64x(0, 0, 0, low2), 0x3); + + f[0] = _mm256_permute4x64_epi64(f0, 0x39); + f[1] = _mm256_permute4x64_epi64(f1, 0x39); + f[2] = _mm256_permute4x64_epi64(f2, 0x39); +} + +static inline void vec256_timesx_1(vec256 *f) { + vec256 f0 = _mm256_permute4x64_epi64(f[0], 0x93); + + unsigned long long low0 = _mm_cvtsi128_si64(_mm256_castsi256_si128(f0)); + + low0 = low0 << 1; + + f0 = _mm256_blend_epi32(f0, _mm256_set_epi64x(0, 0, 0, low0), 0x3); + + f[0] = f0; +} + +static inline void vec256_timesx_2(vec256 *f) { + vec256 f0 = _mm256_permute4x64_epi64(f[0], 0x93); + vec256 f1 = _mm256_permute4x64_epi64(f[1], 0x93); + + unsigned long long low0 = _mm_cvtsi128_si64(_mm256_castsi256_si128(f0)); + unsigned long long low1 = _mm_cvtsi128_si64(_mm256_castsi256_si128(f1)); + + low1 = (low1 << 1) | (low0 >> 63); + low0 = low0 << 1; + + f0 = _mm256_blend_epi32(f0, _mm256_set_epi64x(0, 0, 0, low0), 0x3); + f1 = _mm256_blend_epi32(f1, _mm256_set_epi64x(0, 0, 0, low1), 0x3); + + f[0] = f0; + f[1] = f1; +} + +static inline void vec256_timesx_3(vec256 *f) { + vec256 f0 = _mm256_permute4x64_epi64(f[0], 0x93); + vec256 f1 = _mm256_permute4x64_epi64(f[1], 0x93); + vec256 f2 = _mm256_permute4x64_epi64(f[2], 0x93); + + unsigned long long low0 = *(unsigned long long *) &f0; + unsigned long long low1 = *(unsigned long long *) &f1; + unsigned long long low2 = _mm_cvtsi128_si64(_mm256_castsi256_si128(f2)); + + low2 = (low2 << 1) | (low1 >> 63); + low1 = (low1 << 1) | (low0 >> 63); + low0 = low0 << 1; + + *(unsigned long long *) &f0 = low0; + *(unsigned long long *) &f1 = low1; + f2 = _mm256_blend_epi32(f2, _mm256_set_epi64x(0, 0, 0, low2), 0x3); + + f[0] = f0; + f[1] = f1; + f[2] = f2; +} + + +static int __poly_S3_inv(unsigned char *outbytes, const unsigned char *inbytes) { + small *out = (void *) outbytes; + small *in = (void *) inbytes; + vec256 F0[numvec]; + vec256 F1[numvec]; + vec256 G0[numvec]; + vec256 G1[numvec]; + vec256 V0[numvec]; + vec256 V1[numvec]; + vec256 R0[numvec]; + vec256 R1[numvec]; + vec256 c0vec, c1vec; + int loop; + int c0, c1; + int minusdelta = -1; + int swapmask; + vec256 swapvec; + + vec256_init(G0, G1, in); + F0[0] = _mm256_set_epi32(-1, -1, -1, -1, -1, -1, -1, -1); + F0[1] = _mm256_set_epi32(-1, -1, -1, -1, -1, -1, -1, -1); + F0[2] = _mm256_set_epi32(32767, -1, 32767, -1, 32767, -1, 65535, -1); + F1[0] = _mm256_set1_epi32(0); + F1[1] = _mm256_set1_epi32(0); + F1[2] = _mm256_set1_epi32(0); + + V0[0] = _mm256_set1_epi32(0); + V1[0] = _mm256_set1_epi32(0); + V0[1] = _mm256_set1_epi32(0); + V1[1] = _mm256_set1_epi32(0); + V0[2] = _mm256_set1_epi32(0); + V1[2] = _mm256_set1_epi32(0); + + R0[0] = _mm256_set_epi32(0, 0, 0, 0, 0, 0, 0, 1); + R1[0] = _mm256_set1_epi32(0); + R0[1] = _mm256_set1_epi32(0); + R1[1] = _mm256_set1_epi32(0); + R0[2] = _mm256_set1_epi32(0); + R1[2] = _mm256_set1_epi32(0); + + for (loop = 256; loop > 0; --loop) { + vec256_timesx_1(V0); + vec256_timesx_1(V1); + swapmask = negative_mask(minusdelta) & vec256_bit0mask(G0); + + c0 = vec256_bit0mask(F0) & vec256_bit0mask(G0); + c1 = vec256_bit0mask(F1) ^ vec256_bit0mask(G1); + c1 &= c0; + + minusdelta ^= swapmask & (minusdelta ^ -minusdelta); + minusdelta -= 1; + + swapvec = _mm256_set1_epi32(swapmask); + vec256_swap(F0, G0, 3, swapvec); + vec256_swap(F1, G1, 3, swapvec); + + c0vec = _mm256_set1_epi32(c0); + c1vec = _mm256_set1_epi32(c1); + + vec256_eliminate(F0, F1, G0, G1, 3, c0vec, c1vec); + vec256_divx_3(G0); + vec256_divx_3(G1); + + vec256_swap(V0, R0, 1, swapvec); + vec256_swap(V1, R1, 1, swapvec); + vec256_eliminate(V0, V1, R0, R1, 1, c0vec, c1vec); + } + + for (loop = 256; loop > 0; --loop) { + vec256_timesx_2(V0); + vec256_timesx_2(V1); + swapmask = negative_mask(minusdelta) & vec256_bit0mask(G0); + + c0 = vec256_bit0mask(F0) & vec256_bit0mask(G0); + c1 = vec256_bit0mask(F1) ^ vec256_bit0mask(G1); + c1 &= c0; + + minusdelta ^= swapmask & (minusdelta ^ -minusdelta); + minusdelta -= 1; + + swapvec = _mm256_set1_epi32(swapmask); + vec256_swap(F0, G0, 3, swapvec); + vec256_swap(F1, G1, 3, swapvec); + + c0vec = _mm256_set1_epi32(c0); + c1vec = _mm256_set1_epi32(c1); + + vec256_eliminate(F0, F1, G0, G1, 3, c0vec, c1vec); + vec256_divx_3(G0); + vec256_divx_3(G1); + + vec256_swap(V0, R0, 2, swapvec); + vec256_swap(V1, R1, 2, swapvec); + vec256_eliminate(V0, V1, R0, R1, 2, c0vec, c1vec); + } + + for (loop = 375; loop > 0; --loop) { + vec256_timesx_3(V0); + vec256_timesx_3(V1); + swapmask = negative_mask(minusdelta) & vec256_bit0mask(G0); + + c0 = vec256_bit0mask(F0) & vec256_bit0mask(G0); + c1 = vec256_bit0mask(F1) ^ vec256_bit0mask(G1); + c1 &= c0; + + minusdelta ^= swapmask & (minusdelta ^ -minusdelta); + minusdelta -= 1; + + swapvec = _mm256_set1_epi32(swapmask); + vec256_swap(F0, G0, 3, swapvec); + vec256_swap(F1, G1, 3, swapvec); + + c0vec = _mm256_set1_epi32(c0); + c1vec = _mm256_set1_epi32(c1); + + vec256_eliminate(F0, F1, G0, G1, 3, c0vec, c1vec); + vec256_divx_3(G0); + vec256_divx_3(G1); + + vec256_swap(V0, R0, 3, swapvec); + vec256_swap(V1, R1, 3, swapvec); + vec256_eliminate(V0, V1, R0, R1, 3, c0vec, c1vec); + } + + for (loop = 256; loop > 0; --loop) { + vec256_timesx_3(V0); + vec256_timesx_3(V1); + swapmask = negative_mask(minusdelta) & vec256_bit0mask(G0); + + c0 = vec256_bit0mask(F0) & vec256_bit0mask(G0); + c1 = vec256_bit0mask(F1) ^ vec256_bit0mask(G1); + c1 &= c0; + + minusdelta ^= swapmask & (minusdelta ^ -minusdelta); + minusdelta -= 1; + + swapvec = _mm256_set1_epi32(swapmask); + vec256_swap(F0, G0, 2, swapvec); + vec256_swap(F1, G1, 2, swapvec); + + c0vec = _mm256_set1_epi32(c0); + c1vec = _mm256_set1_epi32(c1); + + vec256_eliminate(F0, F1, G0, G1, 2, c0vec, c1vec); + vec256_divx_2(G0); + vec256_divx_2(G1); + + vec256_swap(V0, R0, 3, swapvec); + vec256_swap(V1, R1, 3, swapvec); + vec256_eliminate(V0, V1, R0, R1, 3, c0vec, c1vec); + } + + for (loop = 256; loop > 0; --loop) { + vec256_timesx_3(V0); + vec256_timesx_3(V1); + swapmask = negative_mask(minusdelta) & vec256_bit0mask(G0); + + c0 = vec256_bit0mask(F0) & vec256_bit0mask(G0); + c1 = vec256_bit0mask(F1) ^ vec256_bit0mask(G1); + c1 &= c0; + + minusdelta ^= swapmask & (minusdelta ^ -minusdelta); + minusdelta -= 1; + + swapvec = _mm256_set1_epi32(swapmask); + vec256_swap(F0, G0, 1, swapvec); + vec256_swap(F1, G1, 1, swapvec); + + c0vec = _mm256_set1_epi32(c0); + c1vec = _mm256_set1_epi32(c1); + + vec256_eliminate(F0, F1, G0, G1, 1, c0vec, c1vec); + vec256_divx_1(G0); + vec256_divx_1(G1); + + vec256_swap(V0, R0, 3, swapvec); + vec256_swap(V1, R1, 3, swapvec); + vec256_eliminate(V0, V1, R0, R1, 3, c0vec, c1vec); + } + + c0vec = _mm256_set1_epi32(vec256_bit0mask(F0)); + c1vec = _mm256_set1_epi32(vec256_bit0mask(F1)); + vec256_scale(V0, V1, c0vec, c1vec); + + vec256_final(out, V0, V1); + out[p] = negative_mask(minusdelta); + return 0; +} + +// This code is based on crypto_core/invhrss701/faster from SUPERCOP. The code was written as a case study +// for the paper "Fast constant-time gcd computation and modular inversion" by Daniel J. Bernstein and Bo-Yin Yang. +void PQCLEAN_NTRUHRSS701_AVX2_poly_S3_inv(poly *r_out, const poly *a) { + const unsigned char *in = (void *) a; + unsigned char *out = (void *) r_out; + + small input[ppad]; + small output[ppad]; + int i; + + /* XXX: obviously input/output format should be packed into bytes */ + + for (i = 0; i < p; ++i) { + small x = in[2 * i] & 3; /* 0 1 2 3 */ + x += 1; /* 0 1 2 3 4 5 6, offset by 1 */ + x &= (x - 3) >> 5; /* 0 1 2, offset by 1 */ + input[i] = x - 1; + } + /* XXX: merge with vec256_init */ + + __poly_S3_inv((unsigned char *)output, (unsigned char *)input); + + for (i = 0; i < p; ++i) { + out[2 * i] = (3 & output[i]) ^ ((3 & output[i]) >> 1); + out[2 * i + 1] = 0; + } +} diff --git a/crypto_kem/ntruhrss701/avx2/poly_s3_inv.s b/crypto_kem/ntruhrss701/avx2/poly_s3_inv.s deleted file mode 100644 index 2cffc9c7..00000000 --- a/crypto_kem/ntruhrss701/avx2/poly_s3_inv.s +++ /dev/null @@ -1,5449 +0,0 @@ -.data -.p2align 5 -mask_3: -.word 0x03 -.word 0x03 -.word 0x03 -.word 0x03 -.word 0x03 -.word 0x03 -.word 0x03 -.word 0x03 -.word 0x03 -.word 0x03 -.word 0x03 -.word 0x03 -.word 0x03 -.word 0x03 -.word 0x03 -.word 0x03 -low16: -.word 0xFFFF -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -const_all_1s: -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -const_1: -.word 1 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -const_64: -.word 64 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -const_all_but_1: -.word 0xFFFE -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -const_high_1: -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0x8000 -const_high_2: -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0xC000 -const_high_4: -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0xF000 -const_high_8: -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0xFF00 -const_high_16: -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0xFFFF -const_high_32: -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0xFFFF -.word 0xFFFF -const_high_64: -.word 0x0000 -.word 0x0000 -.word 0x0000 -.word 0x0000 -.word 0x0000 -.word 0x0000 -.word 0x0000 -.word 0x0000 -.word 0x0000 -.word 0x0000 -.word 0x0000 -.word 0x0000 -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -const_high_67: -.word 0x0000 -.word 0x0000 -.word 0x0000 -.word 0x0000 -.word 0x0000 -.word 0x0000 -.word 0x0000 -.word 0x0000 -.word 0x0000 -.word 0x0000 -.word 0x0000 -.word 0xE000 -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -const_all_but_high_1: -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0x7FFF -const_all_but_high_2: -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0x3FFF -const_all_but_high_4: -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0x0FFF -const_all_but_high_8: -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0x00FF -const_all_but_high_16: -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0x0000 -const_all_but_high_32: -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0x0000 -.word 0x0000 -const_all_but_high_64: -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0x0000 -.word 0x0000 -.word 0x0000 -.word 0x0000 -const_all_but_high_67: -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0x1FFF -.word 0 -.word 0 -.word 0 -.word 0 -const_all_but_high_68: -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0x0FFF -.word 0 -.word 0 -.word 0 -.word 0 -const_all_but_high_70: -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0x03FF -.word 0 -.word 0 -.word 0 -.word 0 -const_all_but_high_74: -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0x003F -.word 0 -.word 0 -.word 0 -.word 0 -const_all_but_high_82: -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0x3FFF -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -const_all_but_high_98: -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0xFFFF -.word 0x3FFF -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.text -.global PQCLEAN_NTRUHRSS701_AVX2_poly_S3_inv -.global _PQCLEAN_NTRUHRSS701_AVX2_poly_S3_inv -PQCLEAN_NTRUHRSS701_AVX2_poly_S3_inv: -_PQCLEAN_NTRUHRSS701_AVX2_poly_S3_inv: -push %r12 -push %r13 -push %r14 -mov %rsp, %r8 -andq $-32, %rsp -subq $768, %rsp -mov $281479271743489, %r9 -mov $562958543486978, %rdx -mov $0, %r10 -mov $0, %r11 -mov 0(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -or %rcx, %r10 -or %rax, %r11 -mov 8(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $4, %rcx -shl $4, %rax -or %rcx, %r10 -or %rax, %r11 -mov 16(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $8, %rcx -shl $8, %rax -or %rcx, %r10 -or %rax, %r11 -mov 24(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $12, %rcx -shl $12, %rax -or %rcx, %r10 -or %rax, %r11 -mov 32(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $16, %rcx -shl $16, %rax -or %rcx, %r10 -or %rax, %r11 -mov 40(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $20, %rcx -shl $20, %rax -or %rcx, %r10 -or %rax, %r11 -mov 48(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $24, %rcx -shl $24, %rax -or %rcx, %r10 -or %rax, %r11 -mov 56(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $28, %rcx -shl $28, %rax -or %rcx, %r10 -or %rax, %r11 -mov 64(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $32, %rcx -shl $32, %rax -or %rcx, %r10 -or %rax, %r11 -mov 72(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $36, %rcx -shl $36, %rax -or %rcx, %r10 -or %rax, %r11 -mov 80(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $40, %rcx -shl $40, %rax -or %rcx, %r10 -or %rax, %r11 -mov 88(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $44, %rcx -shl $44, %rax -or %rcx, %r10 -or %rax, %r11 -mov 96(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $48, %rcx -shl $48, %rax -or %rcx, %r10 -or %rax, %r11 -mov 104(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $52, %rcx -shl $52, %rax -or %rcx, %r10 -or %rax, %r11 -mov 112(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $56, %rcx -shl $56, %rax -or %rcx, %r10 -or %rax, %r11 -mov 120(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $60, %rcx -shl $60, %rax -or %rcx, %r10 -or %rax, %r11 -mov %r10, 0(%rsp) -mov %r11, 96(%rsp) -mov $0, %r10 -mov $0, %r11 -mov 128(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -or %rcx, %r10 -or %rax, %r11 -mov 136(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $4, %rcx -shl $4, %rax -or %rcx, %r10 -or %rax, %r11 -mov 144(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $8, %rcx -shl $8, %rax -or %rcx, %r10 -or %rax, %r11 -mov 152(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $12, %rcx -shl $12, %rax -or %rcx, %r10 -or %rax, %r11 -mov 160(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $16, %rcx -shl $16, %rax -or %rcx, %r10 -or %rax, %r11 -mov 168(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $20, %rcx -shl $20, %rax -or %rcx, %r10 -or %rax, %r11 -mov 176(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $24, %rcx -shl $24, %rax -or %rcx, %r10 -or %rax, %r11 -mov 184(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $28, %rcx -shl $28, %rax -or %rcx, %r10 -or %rax, %r11 -mov 192(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $32, %rcx -shl $32, %rax -or %rcx, %r10 -or %rax, %r11 -mov 200(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $36, %rcx -shl $36, %rax -or %rcx, %r10 -or %rax, %r11 -mov 208(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $40, %rcx -shl $40, %rax -or %rcx, %r10 -or %rax, %r11 -mov 216(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $44, %rcx -shl $44, %rax -or %rcx, %r10 -or %rax, %r11 -mov 224(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $48, %rcx -shl $48, %rax -or %rcx, %r10 -or %rax, %r11 -mov 232(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $52, %rcx -shl $52, %rax -or %rcx, %r10 -or %rax, %r11 -mov 240(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $56, %rcx -shl $56, %rax -or %rcx, %r10 -or %rax, %r11 -mov 248(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $60, %rcx -shl $60, %rax -or %rcx, %r10 -or %rax, %r11 -mov %r10, 8(%rsp) -mov %r11, 104(%rsp) -mov $0, %r10 -mov $0, %r11 -mov 256(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -or %rcx, %r10 -or %rax, %r11 -mov 264(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $4, %rcx -shl $4, %rax -or %rcx, %r10 -or %rax, %r11 -mov 272(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $8, %rcx -shl $8, %rax -or %rcx, %r10 -or %rax, %r11 -mov 280(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $12, %rcx -shl $12, %rax -or %rcx, %r10 -or %rax, %r11 -mov 288(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $16, %rcx -shl $16, %rax -or %rcx, %r10 -or %rax, %r11 -mov 296(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $20, %rcx -shl $20, %rax -or %rcx, %r10 -or %rax, %r11 -mov 304(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $24, %rcx -shl $24, %rax -or %rcx, %r10 -or %rax, %r11 -mov 312(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $28, %rcx -shl $28, %rax -or %rcx, %r10 -or %rax, %r11 -mov 320(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $32, %rcx -shl $32, %rax -or %rcx, %r10 -or %rax, %r11 -mov 328(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $36, %rcx -shl $36, %rax -or %rcx, %r10 -or %rax, %r11 -mov 336(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $40, %rcx -shl $40, %rax -or %rcx, %r10 -or %rax, %r11 -mov 344(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $44, %rcx -shl $44, %rax -or %rcx, %r10 -or %rax, %r11 -mov 352(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $48, %rcx -shl $48, %rax -or %rcx, %r10 -or %rax, %r11 -mov 360(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $52, %rcx -shl $52, %rax -or %rcx, %r10 -or %rax, %r11 -mov 368(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $56, %rcx -shl $56, %rax -or %rcx, %r10 -or %rax, %r11 -mov 376(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $60, %rcx -shl $60, %rax -or %rcx, %r10 -or %rax, %r11 -mov %r10, 16(%rsp) -mov %r11, 112(%rsp) -mov $0, %r10 -mov $0, %r11 -mov 384(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -or %rcx, %r10 -or %rax, %r11 -mov 392(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $4, %rcx -shl $4, %rax -or %rcx, %r10 -or %rax, %r11 -mov 400(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $8, %rcx -shl $8, %rax -or %rcx, %r10 -or %rax, %r11 -mov 408(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $12, %rcx -shl $12, %rax -or %rcx, %r10 -or %rax, %r11 -mov 416(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $16, %rcx -shl $16, %rax -or %rcx, %r10 -or %rax, %r11 -mov 424(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $20, %rcx -shl $20, %rax -or %rcx, %r10 -or %rax, %r11 -mov 432(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $24, %rcx -shl $24, %rax -or %rcx, %r10 -or %rax, %r11 -mov 440(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $28, %rcx -shl $28, %rax -or %rcx, %r10 -or %rax, %r11 -mov 448(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $32, %rcx -shl $32, %rax -or %rcx, %r10 -or %rax, %r11 -mov 456(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $36, %rcx -shl $36, %rax -or %rcx, %r10 -or %rax, %r11 -mov 464(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $40, %rcx -shl $40, %rax -or %rcx, %r10 -or %rax, %r11 -mov 472(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $44, %rcx -shl $44, %rax -or %rcx, %r10 -or %rax, %r11 -mov 480(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $48, %rcx -shl $48, %rax -or %rcx, %r10 -or %rax, %r11 -mov 488(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $52, %rcx -shl $52, %rax -or %rcx, %r10 -or %rax, %r11 -mov 496(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $56, %rcx -shl $56, %rax -or %rcx, %r10 -or %rax, %r11 -mov 504(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $60, %rcx -shl $60, %rax -or %rcx, %r10 -or %rax, %r11 -mov %r10, 24(%rsp) -mov %r11, 120(%rsp) -mov $0, %r10 -mov $0, %r11 -mov 512(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -or %rcx, %r10 -or %rax, %r11 -mov 520(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $4, %rcx -shl $4, %rax -or %rcx, %r10 -or %rax, %r11 -mov 528(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $8, %rcx -shl $8, %rax -or %rcx, %r10 -or %rax, %r11 -mov 536(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $12, %rcx -shl $12, %rax -or %rcx, %r10 -or %rax, %r11 -mov 544(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $16, %rcx -shl $16, %rax -or %rcx, %r10 -or %rax, %r11 -mov 552(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $20, %rcx -shl $20, %rax -or %rcx, %r10 -or %rax, %r11 -mov 560(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $24, %rcx -shl $24, %rax -or %rcx, %r10 -or %rax, %r11 -mov 568(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $28, %rcx -shl $28, %rax -or %rcx, %r10 -or %rax, %r11 -mov 576(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $32, %rcx -shl $32, %rax -or %rcx, %r10 -or %rax, %r11 -mov 584(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $36, %rcx -shl $36, %rax -or %rcx, %r10 -or %rax, %r11 -mov 592(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $40, %rcx -shl $40, %rax -or %rcx, %r10 -or %rax, %r11 -mov 600(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $44, %rcx -shl $44, %rax -or %rcx, %r10 -or %rax, %r11 -mov 608(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $48, %rcx -shl $48, %rax -or %rcx, %r10 -or %rax, %r11 -mov 616(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $52, %rcx -shl $52, %rax -or %rcx, %r10 -or %rax, %r11 -mov 624(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $56, %rcx -shl $56, %rax -or %rcx, %r10 -or %rax, %r11 -mov 632(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $60, %rcx -shl $60, %rax -or %rcx, %r10 -or %rax, %r11 -mov %r10, 32(%rsp) -mov %r11, 128(%rsp) -mov $0, %r10 -mov $0, %r11 -mov 640(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -or %rcx, %r10 -or %rax, %r11 -mov 648(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $4, %rcx -shl $4, %rax -or %rcx, %r10 -or %rax, %r11 -mov 656(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $8, %rcx -shl $8, %rax -or %rcx, %r10 -or %rax, %r11 -mov 664(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $12, %rcx -shl $12, %rax -or %rcx, %r10 -or %rax, %r11 -mov 672(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $16, %rcx -shl $16, %rax -or %rcx, %r10 -or %rax, %r11 -mov 680(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $20, %rcx -shl $20, %rax -or %rcx, %r10 -or %rax, %r11 -mov 688(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $24, %rcx -shl $24, %rax -or %rcx, %r10 -or %rax, %r11 -mov 696(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $28, %rcx -shl $28, %rax -or %rcx, %r10 -or %rax, %r11 -mov 704(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $32, %rcx -shl $32, %rax -or %rcx, %r10 -or %rax, %r11 -mov 712(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $36, %rcx -shl $36, %rax -or %rcx, %r10 -or %rax, %r11 -mov 720(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $40, %rcx -shl $40, %rax -or %rcx, %r10 -or %rax, %r11 -mov 728(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $44, %rcx -shl $44, %rax -or %rcx, %r10 -or %rax, %r11 -mov 736(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $48, %rcx -shl $48, %rax -or %rcx, %r10 -or %rax, %r11 -mov 744(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $52, %rcx -shl $52, %rax -or %rcx, %r10 -or %rax, %r11 -mov 752(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $56, %rcx -shl $56, %rax -or %rcx, %r10 -or %rax, %r11 -mov 760(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $60, %rcx -shl $60, %rax -or %rcx, %r10 -or %rax, %r11 -mov %r10, 40(%rsp) -mov %r11, 136(%rsp) -mov $0, %r10 -mov $0, %r11 -mov 768(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -or %rcx, %r10 -or %rax, %r11 -mov 776(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $4, %rcx -shl $4, %rax -or %rcx, %r10 -or %rax, %r11 -mov 784(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $8, %rcx -shl $8, %rax -or %rcx, %r10 -or %rax, %r11 -mov 792(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $12, %rcx -shl $12, %rax -or %rcx, %r10 -or %rax, %r11 -mov 800(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $16, %rcx -shl $16, %rax -or %rcx, %r10 -or %rax, %r11 -mov 808(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $20, %rcx -shl $20, %rax -or %rcx, %r10 -or %rax, %r11 -mov 816(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $24, %rcx -shl $24, %rax -or %rcx, %r10 -or %rax, %r11 -mov 824(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $28, %rcx -shl $28, %rax -or %rcx, %r10 -or %rax, %r11 -mov 832(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $32, %rcx -shl $32, %rax -or %rcx, %r10 -or %rax, %r11 -mov 840(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $36, %rcx -shl $36, %rax -or %rcx, %r10 -or %rax, %r11 -mov 848(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $40, %rcx -shl $40, %rax -or %rcx, %r10 -or %rax, %r11 -mov 856(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $44, %rcx -shl $44, %rax -or %rcx, %r10 -or %rax, %r11 -mov 864(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $48, %rcx -shl $48, %rax -or %rcx, %r10 -or %rax, %r11 -mov 872(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $52, %rcx -shl $52, %rax -or %rcx, %r10 -or %rax, %r11 -mov 880(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $56, %rcx -shl $56, %rax -or %rcx, %r10 -or %rax, %r11 -mov 888(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $60, %rcx -shl $60, %rax -or %rcx, %r10 -or %rax, %r11 -mov %r10, 48(%rsp) -mov %r11, 144(%rsp) -mov $0, %r10 -mov $0, %r11 -mov 896(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -or %rcx, %r10 -or %rax, %r11 -mov 904(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $4, %rcx -shl $4, %rax -or %rcx, %r10 -or %rax, %r11 -mov 912(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $8, %rcx -shl $8, %rax -or %rcx, %r10 -or %rax, %r11 -mov 920(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $12, %rcx -shl $12, %rax -or %rcx, %r10 -or %rax, %r11 -mov 928(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $16, %rcx -shl $16, %rax -or %rcx, %r10 -or %rax, %r11 -mov 936(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $20, %rcx -shl $20, %rax -or %rcx, %r10 -or %rax, %r11 -mov 944(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $24, %rcx -shl $24, %rax -or %rcx, %r10 -or %rax, %r11 -mov 952(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $28, %rcx -shl $28, %rax -or %rcx, %r10 -or %rax, %r11 -mov 960(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $32, %rcx -shl $32, %rax -or %rcx, %r10 -or %rax, %r11 -mov 968(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $36, %rcx -shl $36, %rax -or %rcx, %r10 -or %rax, %r11 -mov 976(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $40, %rcx -shl $40, %rax -or %rcx, %r10 -or %rax, %r11 -mov 984(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $44, %rcx -shl $44, %rax -or %rcx, %r10 -or %rax, %r11 -mov 992(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $48, %rcx -shl $48, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1000(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $52, %rcx -shl $52, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1008(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $56, %rcx -shl $56, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1016(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $60, %rcx -shl $60, %rax -or %rcx, %r10 -or %rax, %r11 -mov %r10, 56(%rsp) -mov %r11, 152(%rsp) -mov $0, %r10 -mov $0, %r11 -mov 1024(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1032(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $4, %rcx -shl $4, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1040(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $8, %rcx -shl $8, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1048(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $12, %rcx -shl $12, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1056(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $16, %rcx -shl $16, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1064(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $20, %rcx -shl $20, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1072(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $24, %rcx -shl $24, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1080(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $28, %rcx -shl $28, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1088(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $32, %rcx -shl $32, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1096(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $36, %rcx -shl $36, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1104(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $40, %rcx -shl $40, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1112(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $44, %rcx -shl $44, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1120(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $48, %rcx -shl $48, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1128(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $52, %rcx -shl $52, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1136(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $56, %rcx -shl $56, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1144(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $60, %rcx -shl $60, %rax -or %rcx, %r10 -or %rax, %r11 -mov %r10, 64(%rsp) -mov %r11, 160(%rsp) -mov $0, %r10 -mov $0, %r11 -mov 1152(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1160(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $4, %rcx -shl $4, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1168(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $8, %rcx -shl $8, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1176(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $12, %rcx -shl $12, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1184(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $16, %rcx -shl $16, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1192(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $20, %rcx -shl $20, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1200(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $24, %rcx -shl $24, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1208(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $28, %rcx -shl $28, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1216(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $32, %rcx -shl $32, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1224(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $36, %rcx -shl $36, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1232(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $40, %rcx -shl $40, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1240(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $44, %rcx -shl $44, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1248(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $48, %rcx -shl $48, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1256(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $52, %rcx -shl $52, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1264(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $56, %rcx -shl $56, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1272(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $60, %rcx -shl $60, %rax -or %rcx, %r10 -or %rax, %r11 -mov %r10, 72(%rsp) -mov %r11, 168(%rsp) -mov $0, %r10 -mov $0, %r11 -mov 1280(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1288(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $4, %rcx -shl $4, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1296(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $8, %rcx -shl $8, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1304(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $12, %rcx -shl $12, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1312(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $16, %rcx -shl $16, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1320(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $20, %rcx -shl $20, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1328(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $24, %rcx -shl $24, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1336(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $28, %rcx -shl $28, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1344(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $32, %rcx -shl $32, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1352(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $36, %rcx -shl $36, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1360(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $40, %rcx -shl $40, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1368(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $44, %rcx -shl $44, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1376(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $48, %rcx -shl $48, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1384(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $52, %rcx -shl $52, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1392(%rsi), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $56, %rcx -shl $56, %rax -or %rcx, %r10 -or %rax, %r11 -mov 1400(%rsi), %rax -and low16(%rip), %rax -pext %r9, %rax, %rcx -pext %rdx, %rax, %rax -shl $60, %rcx -shl $60, %rax -or %rcx, %r10 -or %rax, %r11 -mov %r10, 80(%rsp) -mov %r11, 176(%rsp) -vpxor %ymm11, %ymm11, %ymm11 -vmovdqa %ymm11, 416(%rsp) -vmovdqa %ymm11, 448(%rsp) -vmovdqa %ymm11, 480(%rsp) -vmovdqa %ymm11, 512(%rsp) -vmovdqa %ymm11, 544(%rsp) -mov $1, %r9 -vmovq %r9, %xmm1 -vmovdqa %ymm1, 384(%rsp) -vmovdqa %ymm11, 576(%rsp) -vmovdqa %ymm11, 608(%rsp) -vmovdqa %ymm11, 640(%rsp) -vmovdqa %ymm11, 672(%rsp) -vmovdqa %ymm11, 704(%rsp) -vmovdqa %ymm11, 736(%rsp) -vmovdqa const_all_1s(%rip), %ymm2 -vmovdqa %ymm11, 288(%rsp) -vmovdqa %ymm11, 320(%rsp) -vmovdqa %ymm11, 352(%rsp) -vmovdqa %ymm2, 192(%rsp) -vmovdqa %ymm2, 224(%rsp) -vmovdqa const_all_but_high_67(%rip), %ymm2 -vmovdqa %ymm2, 256(%rsp) -mov $700, %r9 -mov $700, %r10 -mov $0, %rax -mov $1, %rdx -vmovdqa 0(%rsp), %ymm0 -vmovdqa 32(%rsp), %ymm1 -vmovdqa 64(%rsp), %ymm2 -vmovdqa 96(%rsp), %ymm3 -vmovdqa 128(%rsp), %ymm4 -vmovdqa 160(%rsp), %ymm5 -mov $256, %ecx -poly_s3_inv_loop_0: -vpand 192(%rsp), %ymm0, %ymm10 -vpand 288(%rsp), %ymm3, %ymm15 -vpxor %ymm10, %ymm15, %ymm10 -vpand 192(%rsp), %ymm3, %ymm11 -vpand 288(%rsp), %ymm0, %ymm15 -vpxor %ymm11, %ymm15, %ymm11 -vpand %ymm10, %ymm11, %ymm15 -vpxor %ymm15, %ymm10, %ymm10 -vpxor %ymm15, %ymm11, %ymm11 -vpand const_1(%rip), %ymm11, %ymm11 -vpand const_1(%rip), %ymm10, %ymm10 -vpxor %ymm15, %ymm15, %ymm15 -vpsubq %ymm11, %ymm15, %ymm11 -vpsubq %ymm10, %ymm15, %ymm10 -vbroadcastsd %xmm11, %ymm11 -vbroadcastsd %xmm10, %ymm10 -neg %rdx -vmovq %rdx, %xmm12 -vbroadcastsd %xmm12, %ymm12 -vpand %ymm11, %ymm12, %ymm11 -vpand %ymm10, %ymm12, %ymm10 -vpor %ymm11, %ymm10, %ymm9 -mov %r9, %r12 -sub %r10, %r12 -shr $63, %r12 -neg %r12 -vmovq %r12, %xmm13 -vbroadcastsd %xmm13, %ymm13 -vpand %ymm13, %ymm9, %ymm9 -vmovq %xmm9, %r12 -mov %r9, %r13 -xor %r10, %r13 -and %r12, %r13 -xor %r13, %r10 -xor %r13, %r9 -vpxor 192(%rsp), %ymm0, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm0, %ymm15, %ymm0 -vpxor 192(%rsp), %ymm15, %ymm7 -vmovdqa %ymm7, 192(%rsp) -vpxor 288(%rsp), %ymm3, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm3, %ymm15, %ymm3 -vpxor 288(%rsp), %ymm15, %ymm8 -vmovdqa %ymm8, 288(%rsp) -vpand %ymm7, %ymm11, %ymm13 -vpand %ymm8, %ymm10, %ymm15 -vpxor %ymm13, %ymm15, %ymm13 -vpand %ymm8, %ymm11, %ymm14 -vpand %ymm7, %ymm10, %ymm15 -vpxor %ymm14, %ymm15, %ymm14 -vpand %ymm13, %ymm14, %ymm15 -vpxor %ymm15, %ymm13, %ymm13 -vpxor %ymm15, %ymm14, %ymm14 -vpand %ymm0, %ymm13, %ymm15 -vpxor %ymm0, %ymm13, %ymm0 -vpand %ymm3, %ymm14, %ymm13 -vpxor %ymm3, %ymm14, %ymm3 -vpxor %ymm3, %ymm15, %ymm3 -vpor %ymm0, %ymm13, %ymm0 -vpandn %ymm3, %ymm13, %ymm3 -vpand %ymm0, %ymm3, %ymm13 -vpxor %ymm0, %ymm13, %ymm0 -vpxor %ymm3, %ymm13, %ymm3 -vpxor 224(%rsp), %ymm1, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm1, %ymm15, %ymm1 -vpxor 224(%rsp), %ymm15, %ymm7 -vmovdqa %ymm7, 224(%rsp) -vpxor 320(%rsp), %ymm4, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm4, %ymm15, %ymm4 -vpxor 320(%rsp), %ymm15, %ymm8 -vmovdqa %ymm8, 320(%rsp) -vpand %ymm7, %ymm11, %ymm13 -vpand %ymm8, %ymm10, %ymm15 -vpxor %ymm13, %ymm15, %ymm13 -vpand %ymm8, %ymm11, %ymm14 -vpand %ymm7, %ymm10, %ymm15 -vpxor %ymm14, %ymm15, %ymm14 -vpand %ymm13, %ymm14, %ymm15 -vpxor %ymm15, %ymm13, %ymm13 -vpxor %ymm15, %ymm14, %ymm14 -vpand %ymm1, %ymm13, %ymm15 -vpxor %ymm1, %ymm13, %ymm1 -vpand %ymm4, %ymm14, %ymm13 -vpxor %ymm4, %ymm14, %ymm4 -vpxor %ymm4, %ymm15, %ymm4 -vpor %ymm1, %ymm13, %ymm1 -vpandn %ymm4, %ymm13, %ymm4 -vpand %ymm1, %ymm4, %ymm13 -vpxor %ymm1, %ymm13, %ymm1 -vpxor %ymm4, %ymm13, %ymm4 -vpxor 256(%rsp), %ymm2, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm2, %ymm15, %ymm2 -vpxor 256(%rsp), %ymm15, %ymm7 -vmovdqa %ymm7, 256(%rsp) -vpxor 352(%rsp), %ymm5, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm5, %ymm15, %ymm5 -vpxor 352(%rsp), %ymm15, %ymm8 -vmovdqa %ymm8, 352(%rsp) -vpand %ymm7, %ymm11, %ymm13 -vpand %ymm8, %ymm10, %ymm15 -vpxor %ymm13, %ymm15, %ymm13 -vpand %ymm8, %ymm11, %ymm14 -vpand %ymm7, %ymm10, %ymm15 -vpxor %ymm14, %ymm15, %ymm14 -vpand %ymm13, %ymm14, %ymm15 -vpxor %ymm15, %ymm13, %ymm13 -vpxor %ymm15, %ymm14, %ymm14 -vpand %ymm2, %ymm13, %ymm15 -vpxor %ymm2, %ymm13, %ymm2 -vpand %ymm5, %ymm14, %ymm13 -vpxor %ymm5, %ymm14, %ymm5 -vpxor %ymm5, %ymm15, %ymm5 -vpor %ymm2, %ymm13, %ymm2 -vpandn %ymm5, %ymm13, %ymm5 -vpand %ymm2, %ymm5, %ymm13 -vpxor %ymm2, %ymm13, %ymm2 -vpxor %ymm5, %ymm13, %ymm5 -vmovdqa 384(%rsp), %ymm6 -vpxor 576(%rsp), %ymm6, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm6, %ymm15, %ymm6 -vpxor 576(%rsp), %ymm15, %ymm8 -vmovdqa %ymm8, 576(%rsp) -vmovdqa 480(%rsp), %ymm7 -vpxor 672(%rsp), %ymm7, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm7, %ymm15, %ymm7 -vpxor 672(%rsp), %ymm15, %ymm14 -vmovdqa %ymm14, 672(%rsp) -vpand %ymm8, %ymm11, %ymm13 -vpand %ymm14, %ymm10, %ymm15 -vpxor %ymm13, %ymm15, %ymm13 -vpand %ymm14, %ymm11, %ymm14 -vpand %ymm8, %ymm10, %ymm15 -vpxor %ymm14, %ymm15, %ymm14 -vpand %ymm13, %ymm14, %ymm15 -vpxor %ymm15, %ymm13, %ymm13 -vpxor %ymm15, %ymm14, %ymm14 -vpand %ymm6, %ymm13, %ymm15 -vpxor %ymm6, %ymm13, %ymm6 -vpand %ymm7, %ymm14, %ymm13 -vpxor %ymm7, %ymm14, %ymm7 -vpxor %ymm7, %ymm15, %ymm7 -vpor %ymm6, %ymm13, %ymm6 -vpandn %ymm7, %ymm13, %ymm7 -vpand %ymm6, %ymm7, %ymm13 -vpxor %ymm6, %ymm13, %ymm6 -vpxor %ymm7, %ymm13, %ymm7 -vmovdqa %ymm6, 384(%rsp) -vmovdqa %ymm7, 480(%rsp) -vmovdqa 576(%rsp), %ymm6 -vpsllq $1, %ymm6, %ymm15 -vpsrlq $63, %ymm6, %ymm14 -vpermq $147, %ymm14, %ymm7 -vpxor %ymm15, %ymm7, %ymm7 -vpand const_all_but_1(%rip), %ymm7, %ymm7 -vpxor %ymm6, %ymm7, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm6, %ymm15, %ymm6 -vmovdqa %ymm6, 576(%rsp) -vpsrlq $1, %ymm2, %ymm15 -vpsllq $63, %ymm2, %ymm14 -vpermq $57, %ymm14, %ymm8 -vpxor %ymm15, %ymm8, %ymm8 -vpand const_high_1(%rip), %ymm8, %ymm13 -vpand const_all_but_high_67(%rip), %ymm8, %ymm8 -vpsrlq $1, %ymm1, %ymm15 -vpsllq $63, %ymm1, %ymm14 -vpermq $57, %ymm14, %ymm7 -vpxor %ymm15, %ymm7, %ymm7 -vpand const_high_1(%rip), %ymm7, %ymm15 -vpand const_all_but_high_1(%rip), %ymm7, %ymm7 -vpxor %ymm13, %ymm7, %ymm7 -vpsrlq $1, %ymm0, %ymm13 -vpsllq $63, %ymm0, %ymm14 -vpermq $57, %ymm14, %ymm6 -vpxor %ymm13, %ymm6, %ymm6 -vpand const_all_but_high_1(%rip), %ymm6, %ymm6 -vpxor %ymm15, %ymm6, %ymm6 -vpxor %ymm0, %ymm6, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm0, %ymm15, %ymm0 -vpxor %ymm1, %ymm7, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm1, %ymm15, %ymm1 -vpxor %ymm2, %ymm8, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm2, %ymm15, %ymm2 -vmovdqa 672(%rsp), %ymm6 -vpsllq $1, %ymm6, %ymm15 -vpsrlq $63, %ymm6, %ymm14 -vpermq $147, %ymm14, %ymm7 -vpxor %ymm15, %ymm7, %ymm7 -vpand const_all_but_1(%rip), %ymm7, %ymm7 -vpxor %ymm6, %ymm7, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm6, %ymm15, %ymm6 -vmovdqa %ymm6, 672(%rsp) -vpsrlq $1, %ymm5, %ymm15 -vpsllq $63, %ymm5, %ymm14 -vpermq $57, %ymm14, %ymm8 -vpxor %ymm15, %ymm8, %ymm8 -vpand const_high_1(%rip), %ymm8, %ymm13 -vpand const_all_but_high_67(%rip), %ymm8, %ymm8 -vpsrlq $1, %ymm4, %ymm15 -vpsllq $63, %ymm4, %ymm14 -vpermq $57, %ymm14, %ymm7 -vpxor %ymm15, %ymm7, %ymm7 -vpand const_high_1(%rip), %ymm7, %ymm15 -vpand const_all_but_high_1(%rip), %ymm7, %ymm7 -vpxor %ymm13, %ymm7, %ymm7 -vpsrlq $1, %ymm3, %ymm13 -vpsllq $63, %ymm3, %ymm14 -vpermq $57, %ymm14, %ymm6 -vpxor %ymm13, %ymm6, %ymm6 -vpand const_all_but_high_1(%rip), %ymm6, %ymm6 -vpxor %ymm15, %ymm6, %ymm6 -vpxor %ymm3, %ymm6, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm3, %ymm15, %ymm3 -vpxor %ymm4, %ymm7, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm4, %ymm15, %ymm4 -vpxor %ymm5, %ymm8, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm5, %ymm15, %ymm5 -add %rdx, %r9 -sub %rdx, %rax -mov %r9, %rdx -sub $1, %rdx -shr $63, %rdx -not %rdx -and $1, %rdx -dec %ecx -jns poly_s3_inv_loop_0 -mov $256, %ecx -poly_s3_inv_loop_1: -vpand 192(%rsp), %ymm0, %ymm10 -vpand 288(%rsp), %ymm3, %ymm15 -vpxor %ymm10, %ymm15, %ymm10 -vpand 192(%rsp), %ymm3, %ymm11 -vpand 288(%rsp), %ymm0, %ymm15 -vpxor %ymm11, %ymm15, %ymm11 -vpand %ymm10, %ymm11, %ymm15 -vpxor %ymm15, %ymm10, %ymm10 -vpxor %ymm15, %ymm11, %ymm11 -vpand const_1(%rip), %ymm11, %ymm11 -vpand const_1(%rip), %ymm10, %ymm10 -vpxor %ymm15, %ymm15, %ymm15 -vpsubq %ymm11, %ymm15, %ymm11 -vpsubq %ymm10, %ymm15, %ymm10 -vbroadcastsd %xmm11, %ymm11 -vbroadcastsd %xmm10, %ymm10 -neg %rdx -vmovq %rdx, %xmm12 -vbroadcastsd %xmm12, %ymm12 -vpand %ymm11, %ymm12, %ymm11 -vpand %ymm10, %ymm12, %ymm10 -vpor %ymm11, %ymm10, %ymm9 -mov %r9, %r12 -sub %r10, %r12 -shr $63, %r12 -neg %r12 -vmovq %r12, %xmm13 -vbroadcastsd %xmm13, %ymm13 -vpand %ymm13, %ymm9, %ymm9 -vmovq %xmm9, %r12 -mov %r9, %r13 -xor %r10, %r13 -and %r12, %r13 -xor %r13, %r10 -xor %r13, %r9 -vpxor 192(%rsp), %ymm0, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm0, %ymm15, %ymm0 -vpxor 192(%rsp), %ymm15, %ymm7 -vmovdqa %ymm7, 192(%rsp) -vpxor 288(%rsp), %ymm3, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm3, %ymm15, %ymm3 -vpxor 288(%rsp), %ymm15, %ymm8 -vmovdqa %ymm8, 288(%rsp) -vpand %ymm7, %ymm11, %ymm13 -vpand %ymm8, %ymm10, %ymm15 -vpxor %ymm13, %ymm15, %ymm13 -vpand %ymm8, %ymm11, %ymm14 -vpand %ymm7, %ymm10, %ymm15 -vpxor %ymm14, %ymm15, %ymm14 -vpand %ymm13, %ymm14, %ymm15 -vpxor %ymm15, %ymm13, %ymm13 -vpxor %ymm15, %ymm14, %ymm14 -vpand %ymm0, %ymm13, %ymm15 -vpxor %ymm0, %ymm13, %ymm0 -vpand %ymm3, %ymm14, %ymm13 -vpxor %ymm3, %ymm14, %ymm3 -vpxor %ymm3, %ymm15, %ymm3 -vpor %ymm0, %ymm13, %ymm0 -vpandn %ymm3, %ymm13, %ymm3 -vpand %ymm0, %ymm3, %ymm13 -vpxor %ymm0, %ymm13, %ymm0 -vpxor %ymm3, %ymm13, %ymm3 -vpxor 224(%rsp), %ymm1, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm1, %ymm15, %ymm1 -vpxor 224(%rsp), %ymm15, %ymm7 -vmovdqa %ymm7, 224(%rsp) -vpxor 320(%rsp), %ymm4, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm4, %ymm15, %ymm4 -vpxor 320(%rsp), %ymm15, %ymm8 -vmovdqa %ymm8, 320(%rsp) -vpand %ymm7, %ymm11, %ymm13 -vpand %ymm8, %ymm10, %ymm15 -vpxor %ymm13, %ymm15, %ymm13 -vpand %ymm8, %ymm11, %ymm14 -vpand %ymm7, %ymm10, %ymm15 -vpxor %ymm14, %ymm15, %ymm14 -vpand %ymm13, %ymm14, %ymm15 -vpxor %ymm15, %ymm13, %ymm13 -vpxor %ymm15, %ymm14, %ymm14 -vpand %ymm1, %ymm13, %ymm15 -vpxor %ymm1, %ymm13, %ymm1 -vpand %ymm4, %ymm14, %ymm13 -vpxor %ymm4, %ymm14, %ymm4 -vpxor %ymm4, %ymm15, %ymm4 -vpor %ymm1, %ymm13, %ymm1 -vpandn %ymm4, %ymm13, %ymm4 -vpand %ymm1, %ymm4, %ymm13 -vpxor %ymm1, %ymm13, %ymm1 -vpxor %ymm4, %ymm13, %ymm4 -vpxor 256(%rsp), %ymm2, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm2, %ymm15, %ymm2 -vpxor 256(%rsp), %ymm15, %ymm7 -vmovdqa %ymm7, 256(%rsp) -vpxor 352(%rsp), %ymm5, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm5, %ymm15, %ymm5 -vpxor 352(%rsp), %ymm15, %ymm8 -vmovdqa %ymm8, 352(%rsp) -vpand %ymm7, %ymm11, %ymm13 -vpand %ymm8, %ymm10, %ymm15 -vpxor %ymm13, %ymm15, %ymm13 -vpand %ymm8, %ymm11, %ymm14 -vpand %ymm7, %ymm10, %ymm15 -vpxor %ymm14, %ymm15, %ymm14 -vpand %ymm13, %ymm14, %ymm15 -vpxor %ymm15, %ymm13, %ymm13 -vpxor %ymm15, %ymm14, %ymm14 -vpand %ymm2, %ymm13, %ymm15 -vpxor %ymm2, %ymm13, %ymm2 -vpand %ymm5, %ymm14, %ymm13 -vpxor %ymm5, %ymm14, %ymm5 -vpxor %ymm5, %ymm15, %ymm5 -vpor %ymm2, %ymm13, %ymm2 -vpandn %ymm5, %ymm13, %ymm5 -vpand %ymm2, %ymm5, %ymm13 -vpxor %ymm2, %ymm13, %ymm2 -vpxor %ymm5, %ymm13, %ymm5 -vmovdqa 384(%rsp), %ymm6 -vpxor 576(%rsp), %ymm6, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm6, %ymm15, %ymm6 -vpxor 576(%rsp), %ymm15, %ymm8 -vmovdqa %ymm8, 576(%rsp) -vmovdqa 480(%rsp), %ymm7 -vpxor 672(%rsp), %ymm7, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm7, %ymm15, %ymm7 -vpxor 672(%rsp), %ymm15, %ymm14 -vmovdqa %ymm14, 672(%rsp) -vpand %ymm8, %ymm11, %ymm13 -vpand %ymm14, %ymm10, %ymm15 -vpxor %ymm13, %ymm15, %ymm13 -vpand %ymm14, %ymm11, %ymm14 -vpand %ymm8, %ymm10, %ymm15 -vpxor %ymm14, %ymm15, %ymm14 -vpand %ymm13, %ymm14, %ymm15 -vpxor %ymm15, %ymm13, %ymm13 -vpxor %ymm15, %ymm14, %ymm14 -vpand %ymm6, %ymm13, %ymm15 -vpxor %ymm6, %ymm13, %ymm6 -vpand %ymm7, %ymm14, %ymm13 -vpxor %ymm7, %ymm14, %ymm7 -vpxor %ymm7, %ymm15, %ymm7 -vpor %ymm6, %ymm13, %ymm6 -vpandn %ymm7, %ymm13, %ymm7 -vpand %ymm6, %ymm7, %ymm13 -vpxor %ymm6, %ymm13, %ymm6 -vpxor %ymm7, %ymm13, %ymm7 -vmovdqa %ymm6, 384(%rsp) -vmovdqa %ymm7, 480(%rsp) -vmovdqa 416(%rsp), %ymm6 -vpxor 608(%rsp), %ymm6, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm6, %ymm15, %ymm6 -vpxor 608(%rsp), %ymm15, %ymm8 -vmovdqa %ymm8, 608(%rsp) -vmovdqa 512(%rsp), %ymm7 -vpxor 704(%rsp), %ymm7, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm7, %ymm15, %ymm7 -vpxor 704(%rsp), %ymm15, %ymm14 -vmovdqa %ymm14, 704(%rsp) -vpand %ymm8, %ymm11, %ymm13 -vpand %ymm14, %ymm10, %ymm15 -vpxor %ymm13, %ymm15, %ymm13 -vpand %ymm14, %ymm11, %ymm14 -vpand %ymm8, %ymm10, %ymm15 -vpxor %ymm14, %ymm15, %ymm14 -vpand %ymm13, %ymm14, %ymm15 -vpxor %ymm15, %ymm13, %ymm13 -vpxor %ymm15, %ymm14, %ymm14 -vpand %ymm6, %ymm13, %ymm15 -vpxor %ymm6, %ymm13, %ymm6 -vpand %ymm7, %ymm14, %ymm13 -vpxor %ymm7, %ymm14, %ymm7 -vpxor %ymm7, %ymm15, %ymm7 -vpor %ymm6, %ymm13, %ymm6 -vpandn %ymm7, %ymm13, %ymm7 -vpand %ymm6, %ymm7, %ymm13 -vpxor %ymm6, %ymm13, %ymm6 -vpxor %ymm7, %ymm13, %ymm7 -vmovdqa %ymm6, 416(%rsp) -vmovdqa %ymm7, 512(%rsp) -vmovdqa 576(%rsp), %ymm6 -vmovdqa 608(%rsp), %ymm8 -vpsllq $1, %ymm6, %ymm15 -vpsrlq $63, %ymm6, %ymm14 -vpermq $147, %ymm14, %ymm7 -vpxor %ymm15, %ymm7, %ymm7 -vpand const_1(%rip), %ymm7, %ymm13 -vpand const_all_but_1(%rip), %ymm7, %ymm7 -vpsllq $1, %ymm8, %ymm15 -vpsrlq $63, %ymm8, %ymm14 -vpermq $147, %ymm14, %ymm9 -vpxor %ymm15, %ymm9, %ymm9 -vpand const_1(%rip), %ymm9, %ymm15 -vpand const_all_but_1(%rip), %ymm9, %ymm9 -vpxor %ymm13, %ymm9, %ymm9 -vpxor %ymm6, %ymm7, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm6, %ymm15, %ymm6 -vmovdqa %ymm6, 576(%rsp) -vpxor %ymm8, %ymm9, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm8, %ymm15, %ymm8 -vmovdqa %ymm8, 608(%rsp) -vpsrlq $1, %ymm2, %ymm15 -vpsllq $63, %ymm2, %ymm14 -vpermq $57, %ymm14, %ymm8 -vpxor %ymm15, %ymm8, %ymm8 -vpand const_high_1(%rip), %ymm8, %ymm13 -vpand const_all_but_high_67(%rip), %ymm8, %ymm8 -vpsrlq $1, %ymm1, %ymm15 -vpsllq $63, %ymm1, %ymm14 -vpermq $57, %ymm14, %ymm7 -vpxor %ymm15, %ymm7, %ymm7 -vpand const_high_1(%rip), %ymm7, %ymm15 -vpand const_all_but_high_1(%rip), %ymm7, %ymm7 -vpxor %ymm13, %ymm7, %ymm7 -vpsrlq $1, %ymm0, %ymm13 -vpsllq $63, %ymm0, %ymm14 -vpermq $57, %ymm14, %ymm6 -vpxor %ymm13, %ymm6, %ymm6 -vpand const_all_but_high_1(%rip), %ymm6, %ymm6 -vpxor %ymm15, %ymm6, %ymm6 -vpxor %ymm0, %ymm6, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm0, %ymm15, %ymm0 -vpxor %ymm1, %ymm7, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm1, %ymm15, %ymm1 -vpxor %ymm2, %ymm8, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm2, %ymm15, %ymm2 -vmovdqa 672(%rsp), %ymm6 -vmovdqa 704(%rsp), %ymm8 -vpsllq $1, %ymm6, %ymm15 -vpsrlq $63, %ymm6, %ymm14 -vpermq $147, %ymm14, %ymm7 -vpxor %ymm15, %ymm7, %ymm7 -vpand const_1(%rip), %ymm7, %ymm13 -vpand const_all_but_1(%rip), %ymm7, %ymm7 -vpsllq $1, %ymm8, %ymm15 -vpsrlq $63, %ymm8, %ymm14 -vpermq $147, %ymm14, %ymm9 -vpxor %ymm15, %ymm9, %ymm9 -vpand const_1(%rip), %ymm9, %ymm15 -vpand const_all_but_1(%rip), %ymm9, %ymm9 -vpxor %ymm13, %ymm9, %ymm9 -vpxor %ymm6, %ymm7, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm6, %ymm15, %ymm6 -vmovdqa %ymm6, 672(%rsp) -vpxor %ymm8, %ymm9, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm8, %ymm15, %ymm8 -vmovdqa %ymm8, 704(%rsp) -vpsrlq $1, %ymm5, %ymm15 -vpsllq $63, %ymm5, %ymm14 -vpermq $57, %ymm14, %ymm8 -vpxor %ymm15, %ymm8, %ymm8 -vpand const_high_1(%rip), %ymm8, %ymm13 -vpand const_all_but_high_67(%rip), %ymm8, %ymm8 -vpsrlq $1, %ymm4, %ymm15 -vpsllq $63, %ymm4, %ymm14 -vpermq $57, %ymm14, %ymm7 -vpxor %ymm15, %ymm7, %ymm7 -vpand const_high_1(%rip), %ymm7, %ymm15 -vpand const_all_but_high_1(%rip), %ymm7, %ymm7 -vpxor %ymm13, %ymm7, %ymm7 -vpsrlq $1, %ymm3, %ymm13 -vpsllq $63, %ymm3, %ymm14 -vpermq $57, %ymm14, %ymm6 -vpxor %ymm13, %ymm6, %ymm6 -vpand const_all_but_high_1(%rip), %ymm6, %ymm6 -vpxor %ymm15, %ymm6, %ymm6 -vpxor %ymm3, %ymm6, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm3, %ymm15, %ymm3 -vpxor %ymm4, %ymm7, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm4, %ymm15, %ymm4 -vpxor %ymm5, %ymm8, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm5, %ymm15, %ymm5 -add %rdx, %r9 -sub %rdx, %rax -mov %r9, %rdx -sub $1, %rdx -shr $63, %rdx -not %rdx -and $1, %rdx -dec %ecx -jns poly_s3_inv_loop_1 -mov $376, %ecx -poly_s3_inv_loop_2: -vpand 192(%rsp), %ymm0, %ymm10 -vpand 288(%rsp), %ymm3, %ymm15 -vpxor %ymm10, %ymm15, %ymm10 -vpand 192(%rsp), %ymm3, %ymm11 -vpand 288(%rsp), %ymm0, %ymm15 -vpxor %ymm11, %ymm15, %ymm11 -vpand %ymm10, %ymm11, %ymm15 -vpxor %ymm15, %ymm10, %ymm10 -vpxor %ymm15, %ymm11, %ymm11 -vpand const_1(%rip), %ymm11, %ymm11 -vpand const_1(%rip), %ymm10, %ymm10 -vpxor %ymm15, %ymm15, %ymm15 -vpsubq %ymm11, %ymm15, %ymm11 -vpsubq %ymm10, %ymm15, %ymm10 -vbroadcastsd %xmm11, %ymm11 -vbroadcastsd %xmm10, %ymm10 -neg %rdx -vmovq %rdx, %xmm12 -vbroadcastsd %xmm12, %ymm12 -vpand %ymm11, %ymm12, %ymm11 -vpand %ymm10, %ymm12, %ymm10 -vpor %ymm11, %ymm10, %ymm9 -mov %r9, %r12 -sub %r10, %r12 -shr $63, %r12 -neg %r12 -vmovq %r12, %xmm13 -vbroadcastsd %xmm13, %ymm13 -vpand %ymm13, %ymm9, %ymm9 -vmovq %xmm9, %r12 -mov %r9, %r13 -xor %r10, %r13 -and %r12, %r13 -xor %r13, %r10 -xor %r13, %r9 -vpxor 192(%rsp), %ymm0, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm0, %ymm15, %ymm0 -vpxor 192(%rsp), %ymm15, %ymm7 -vmovdqa %ymm7, 192(%rsp) -vpxor 288(%rsp), %ymm3, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm3, %ymm15, %ymm3 -vpxor 288(%rsp), %ymm15, %ymm8 -vmovdqa %ymm8, 288(%rsp) -vpand %ymm7, %ymm11, %ymm13 -vpand %ymm8, %ymm10, %ymm15 -vpxor %ymm13, %ymm15, %ymm13 -vpand %ymm8, %ymm11, %ymm14 -vpand %ymm7, %ymm10, %ymm15 -vpxor %ymm14, %ymm15, %ymm14 -vpand %ymm13, %ymm14, %ymm15 -vpxor %ymm15, %ymm13, %ymm13 -vpxor %ymm15, %ymm14, %ymm14 -vpand %ymm0, %ymm13, %ymm15 -vpxor %ymm0, %ymm13, %ymm0 -vpand %ymm3, %ymm14, %ymm13 -vpxor %ymm3, %ymm14, %ymm3 -vpxor %ymm3, %ymm15, %ymm3 -vpor %ymm0, %ymm13, %ymm0 -vpandn %ymm3, %ymm13, %ymm3 -vpand %ymm0, %ymm3, %ymm13 -vpxor %ymm0, %ymm13, %ymm0 -vpxor %ymm3, %ymm13, %ymm3 -vpxor 224(%rsp), %ymm1, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm1, %ymm15, %ymm1 -vpxor 224(%rsp), %ymm15, %ymm7 -vmovdqa %ymm7, 224(%rsp) -vpxor 320(%rsp), %ymm4, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm4, %ymm15, %ymm4 -vpxor 320(%rsp), %ymm15, %ymm8 -vmovdqa %ymm8, 320(%rsp) -vpand %ymm7, %ymm11, %ymm13 -vpand %ymm8, %ymm10, %ymm15 -vpxor %ymm13, %ymm15, %ymm13 -vpand %ymm8, %ymm11, %ymm14 -vpand %ymm7, %ymm10, %ymm15 -vpxor %ymm14, %ymm15, %ymm14 -vpand %ymm13, %ymm14, %ymm15 -vpxor %ymm15, %ymm13, %ymm13 -vpxor %ymm15, %ymm14, %ymm14 -vpand %ymm1, %ymm13, %ymm15 -vpxor %ymm1, %ymm13, %ymm1 -vpand %ymm4, %ymm14, %ymm13 -vpxor %ymm4, %ymm14, %ymm4 -vpxor %ymm4, %ymm15, %ymm4 -vpor %ymm1, %ymm13, %ymm1 -vpandn %ymm4, %ymm13, %ymm4 -vpand %ymm1, %ymm4, %ymm13 -vpxor %ymm1, %ymm13, %ymm1 -vpxor %ymm4, %ymm13, %ymm4 -vpxor 256(%rsp), %ymm2, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm2, %ymm15, %ymm2 -vpxor 256(%rsp), %ymm15, %ymm7 -vmovdqa %ymm7, 256(%rsp) -vpxor 352(%rsp), %ymm5, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm5, %ymm15, %ymm5 -vpxor 352(%rsp), %ymm15, %ymm8 -vmovdqa %ymm8, 352(%rsp) -vpand %ymm7, %ymm11, %ymm13 -vpand %ymm8, %ymm10, %ymm15 -vpxor %ymm13, %ymm15, %ymm13 -vpand %ymm8, %ymm11, %ymm14 -vpand %ymm7, %ymm10, %ymm15 -vpxor %ymm14, %ymm15, %ymm14 -vpand %ymm13, %ymm14, %ymm15 -vpxor %ymm15, %ymm13, %ymm13 -vpxor %ymm15, %ymm14, %ymm14 -vpand %ymm2, %ymm13, %ymm15 -vpxor %ymm2, %ymm13, %ymm2 -vpand %ymm5, %ymm14, %ymm13 -vpxor %ymm5, %ymm14, %ymm5 -vpxor %ymm5, %ymm15, %ymm5 -vpor %ymm2, %ymm13, %ymm2 -vpandn %ymm5, %ymm13, %ymm5 -vpand %ymm2, %ymm5, %ymm13 -vpxor %ymm2, %ymm13, %ymm2 -vpxor %ymm5, %ymm13, %ymm5 -vmovdqa 384(%rsp), %ymm6 -vpxor 576(%rsp), %ymm6, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm6, %ymm15, %ymm6 -vpxor 576(%rsp), %ymm15, %ymm8 -vmovdqa %ymm8, 576(%rsp) -vmovdqa 480(%rsp), %ymm7 -vpxor 672(%rsp), %ymm7, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm7, %ymm15, %ymm7 -vpxor 672(%rsp), %ymm15, %ymm14 -vmovdqa %ymm14, 672(%rsp) -vpand %ymm8, %ymm11, %ymm13 -vpand %ymm14, %ymm10, %ymm15 -vpxor %ymm13, %ymm15, %ymm13 -vpand %ymm14, %ymm11, %ymm14 -vpand %ymm8, %ymm10, %ymm15 -vpxor %ymm14, %ymm15, %ymm14 -vpand %ymm13, %ymm14, %ymm15 -vpxor %ymm15, %ymm13, %ymm13 -vpxor %ymm15, %ymm14, %ymm14 -vpand %ymm6, %ymm13, %ymm15 -vpxor %ymm6, %ymm13, %ymm6 -vpand %ymm7, %ymm14, %ymm13 -vpxor %ymm7, %ymm14, %ymm7 -vpxor %ymm7, %ymm15, %ymm7 -vpor %ymm6, %ymm13, %ymm6 -vpandn %ymm7, %ymm13, %ymm7 -vpand %ymm6, %ymm7, %ymm13 -vpxor %ymm6, %ymm13, %ymm6 -vpxor %ymm7, %ymm13, %ymm7 -vmovdqa %ymm6, 384(%rsp) -vmovdqa %ymm7, 480(%rsp) -vmovdqa 416(%rsp), %ymm6 -vpxor 608(%rsp), %ymm6, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm6, %ymm15, %ymm6 -vpxor 608(%rsp), %ymm15, %ymm8 -vmovdqa %ymm8, 608(%rsp) -vmovdqa 512(%rsp), %ymm7 -vpxor 704(%rsp), %ymm7, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm7, %ymm15, %ymm7 -vpxor 704(%rsp), %ymm15, %ymm14 -vmovdqa %ymm14, 704(%rsp) -vpand %ymm8, %ymm11, %ymm13 -vpand %ymm14, %ymm10, %ymm15 -vpxor %ymm13, %ymm15, %ymm13 -vpand %ymm14, %ymm11, %ymm14 -vpand %ymm8, %ymm10, %ymm15 -vpxor %ymm14, %ymm15, %ymm14 -vpand %ymm13, %ymm14, %ymm15 -vpxor %ymm15, %ymm13, %ymm13 -vpxor %ymm15, %ymm14, %ymm14 -vpand %ymm6, %ymm13, %ymm15 -vpxor %ymm6, %ymm13, %ymm6 -vpand %ymm7, %ymm14, %ymm13 -vpxor %ymm7, %ymm14, %ymm7 -vpxor %ymm7, %ymm15, %ymm7 -vpor %ymm6, %ymm13, %ymm6 -vpandn %ymm7, %ymm13, %ymm7 -vpand %ymm6, %ymm7, %ymm13 -vpxor %ymm6, %ymm13, %ymm6 -vpxor %ymm7, %ymm13, %ymm7 -vmovdqa %ymm6, 416(%rsp) -vmovdqa %ymm7, 512(%rsp) -vmovdqa 448(%rsp), %ymm6 -vpxor 640(%rsp), %ymm6, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm6, %ymm15, %ymm6 -vpxor 640(%rsp), %ymm15, %ymm8 -vmovdqa %ymm8, 640(%rsp) -vmovdqa 544(%rsp), %ymm7 -vpxor 736(%rsp), %ymm7, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm7, %ymm15, %ymm7 -vpxor 736(%rsp), %ymm15, %ymm14 -vmovdqa %ymm14, 736(%rsp) -vpand %ymm8, %ymm11, %ymm13 -vpand %ymm14, %ymm10, %ymm15 -vpxor %ymm13, %ymm15, %ymm13 -vpand %ymm14, %ymm11, %ymm14 -vpand %ymm8, %ymm10, %ymm15 -vpxor %ymm14, %ymm15, %ymm14 -vpand %ymm13, %ymm14, %ymm15 -vpxor %ymm15, %ymm13, %ymm13 -vpxor %ymm15, %ymm14, %ymm14 -vpand %ymm6, %ymm13, %ymm15 -vpxor %ymm6, %ymm13, %ymm6 -vpand %ymm7, %ymm14, %ymm13 -vpxor %ymm7, %ymm14, %ymm7 -vpxor %ymm7, %ymm15, %ymm7 -vpor %ymm6, %ymm13, %ymm6 -vpandn %ymm7, %ymm13, %ymm7 -vpand %ymm6, %ymm7, %ymm13 -vpxor %ymm6, %ymm13, %ymm6 -vpxor %ymm7, %ymm13, %ymm7 -vmovdqa %ymm6, 448(%rsp) -vmovdqa %ymm7, 544(%rsp) -vmovdqa 576(%rsp), %ymm6 -vmovdqa 608(%rsp), %ymm8 -vmovdqa 640(%rsp), %ymm10 -vpsllq $1, %ymm6, %ymm15 -vpsrlq $63, %ymm6, %ymm14 -vpermq $147, %ymm14, %ymm7 -vpxor %ymm15, %ymm7, %ymm7 -vpand const_1(%rip), %ymm7, %ymm13 -vpand const_all_but_1(%rip), %ymm7, %ymm7 -vpsllq $1, %ymm8, %ymm15 -vpsrlq $63, %ymm8, %ymm14 -vpermq $147, %ymm14, %ymm9 -vpxor %ymm15, %ymm9, %ymm9 -vpand const_1(%rip), %ymm9, %ymm15 -vpand const_all_but_1(%rip), %ymm9, %ymm9 -vpxor %ymm13, %ymm9, %ymm9 -vpsllq $1, %ymm10, %ymm13 -vpsrlq $63, %ymm10, %ymm14 -vpermq $147, %ymm14, %ymm11 -vpxor %ymm13, %ymm11, %ymm11 -vpand const_all_but_1(%rip), %ymm11, %ymm11 -vpxor %ymm15, %ymm11, %ymm11 -vpxor %ymm6, %ymm7, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm6, %ymm15, %ymm6 -vmovdqa %ymm6, 576(%rsp) -vpxor %ymm8, %ymm9, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm8, %ymm15, %ymm8 -vmovdqa %ymm8, 608(%rsp) -vpxor %ymm10, %ymm11, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm10, %ymm15, %ymm10 -vmovdqa %ymm10, 640(%rsp) -vpsrlq $1, %ymm2, %ymm15 -vpsllq $63, %ymm2, %ymm14 -vpermq $57, %ymm14, %ymm8 -vpxor %ymm15, %ymm8, %ymm8 -vpand const_high_1(%rip), %ymm8, %ymm13 -vpand const_all_but_high_67(%rip), %ymm8, %ymm8 -vpsrlq $1, %ymm1, %ymm15 -vpsllq $63, %ymm1, %ymm14 -vpermq $57, %ymm14, %ymm7 -vpxor %ymm15, %ymm7, %ymm7 -vpand const_high_1(%rip), %ymm7, %ymm15 -vpand const_all_but_high_1(%rip), %ymm7, %ymm7 -vpxor %ymm13, %ymm7, %ymm7 -vpsrlq $1, %ymm0, %ymm13 -vpsllq $63, %ymm0, %ymm14 -vpermq $57, %ymm14, %ymm6 -vpxor %ymm13, %ymm6, %ymm6 -vpand const_all_but_high_1(%rip), %ymm6, %ymm6 -vpxor %ymm15, %ymm6, %ymm6 -vpxor %ymm0, %ymm6, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm0, %ymm15, %ymm0 -vpxor %ymm1, %ymm7, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm1, %ymm15, %ymm1 -vpxor %ymm2, %ymm8, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm2, %ymm15, %ymm2 -vmovdqa 672(%rsp), %ymm6 -vmovdqa 704(%rsp), %ymm8 -vmovdqa 736(%rsp), %ymm10 -vpsllq $1, %ymm6, %ymm15 -vpsrlq $63, %ymm6, %ymm14 -vpermq $147, %ymm14, %ymm7 -vpxor %ymm15, %ymm7, %ymm7 -vpand const_1(%rip), %ymm7, %ymm13 -vpand const_all_but_1(%rip), %ymm7, %ymm7 -vpsllq $1, %ymm8, %ymm15 -vpsrlq $63, %ymm8, %ymm14 -vpermq $147, %ymm14, %ymm9 -vpxor %ymm15, %ymm9, %ymm9 -vpand const_1(%rip), %ymm9, %ymm15 -vpand const_all_but_1(%rip), %ymm9, %ymm9 -vpxor %ymm13, %ymm9, %ymm9 -vpsllq $1, %ymm10, %ymm13 -vpsrlq $63, %ymm10, %ymm14 -vpermq $147, %ymm14, %ymm11 -vpxor %ymm13, %ymm11, %ymm11 -vpand const_all_but_1(%rip), %ymm11, %ymm11 -vpxor %ymm15, %ymm11, %ymm11 -vpxor %ymm6, %ymm7, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm6, %ymm15, %ymm6 -vmovdqa %ymm6, 672(%rsp) -vpxor %ymm8, %ymm9, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm8, %ymm15, %ymm8 -vmovdqa %ymm8, 704(%rsp) -vpxor %ymm10, %ymm11, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm10, %ymm15, %ymm10 -vmovdqa %ymm10, 736(%rsp) -vpsrlq $1, %ymm5, %ymm15 -vpsllq $63, %ymm5, %ymm14 -vpermq $57, %ymm14, %ymm8 -vpxor %ymm15, %ymm8, %ymm8 -vpand const_high_1(%rip), %ymm8, %ymm13 -vpand const_all_but_high_67(%rip), %ymm8, %ymm8 -vpsrlq $1, %ymm4, %ymm15 -vpsllq $63, %ymm4, %ymm14 -vpermq $57, %ymm14, %ymm7 -vpxor %ymm15, %ymm7, %ymm7 -vpand const_high_1(%rip), %ymm7, %ymm15 -vpand const_all_but_high_1(%rip), %ymm7, %ymm7 -vpxor %ymm13, %ymm7, %ymm7 -vpsrlq $1, %ymm3, %ymm13 -vpsllq $63, %ymm3, %ymm14 -vpermq $57, %ymm14, %ymm6 -vpxor %ymm13, %ymm6, %ymm6 -vpand const_all_but_high_1(%rip), %ymm6, %ymm6 -vpxor %ymm15, %ymm6, %ymm6 -vpxor %ymm3, %ymm6, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm3, %ymm15, %ymm3 -vpxor %ymm4, %ymm7, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm4, %ymm15, %ymm4 -vpxor %ymm5, %ymm8, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm5, %ymm15, %ymm5 -add %rdx, %r9 -sub %rdx, %rax -mov %r9, %rdx -sub $1, %rdx -shr $63, %rdx -not %rdx -and $1, %rdx -dec %ecx -jns poly_s3_inv_loop_2 -mov $256, %ecx -poly_s3_inv_loop_3: -vpand 192(%rsp), %ymm0, %ymm10 -vpand 288(%rsp), %ymm3, %ymm15 -vpxor %ymm10, %ymm15, %ymm10 -vpand 192(%rsp), %ymm3, %ymm11 -vpand 288(%rsp), %ymm0, %ymm15 -vpxor %ymm11, %ymm15, %ymm11 -vpand %ymm10, %ymm11, %ymm15 -vpxor %ymm15, %ymm10, %ymm10 -vpxor %ymm15, %ymm11, %ymm11 -vpand const_1(%rip), %ymm11, %ymm11 -vpand const_1(%rip), %ymm10, %ymm10 -vpxor %ymm15, %ymm15, %ymm15 -vpsubq %ymm11, %ymm15, %ymm11 -vpsubq %ymm10, %ymm15, %ymm10 -vbroadcastsd %xmm11, %ymm11 -vbroadcastsd %xmm10, %ymm10 -neg %rdx -vmovq %rdx, %xmm12 -vbroadcastsd %xmm12, %ymm12 -vpand %ymm11, %ymm12, %ymm11 -vpand %ymm10, %ymm12, %ymm10 -vpor %ymm11, %ymm10, %ymm9 -mov %r9, %r12 -sub %r10, %r12 -shr $63, %r12 -neg %r12 -vmovq %r12, %xmm13 -vbroadcastsd %xmm13, %ymm13 -vpand %ymm13, %ymm9, %ymm9 -vmovq %xmm9, %r12 -mov %r9, %r13 -xor %r10, %r13 -and %r12, %r13 -xor %r13, %r10 -xor %r13, %r9 -vpxor 192(%rsp), %ymm0, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm0, %ymm15, %ymm0 -vpxor 192(%rsp), %ymm15, %ymm7 -vmovdqa %ymm7, 192(%rsp) -vpxor 288(%rsp), %ymm3, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm3, %ymm15, %ymm3 -vpxor 288(%rsp), %ymm15, %ymm8 -vmovdqa %ymm8, 288(%rsp) -vpand %ymm7, %ymm11, %ymm13 -vpand %ymm8, %ymm10, %ymm15 -vpxor %ymm13, %ymm15, %ymm13 -vpand %ymm8, %ymm11, %ymm14 -vpand %ymm7, %ymm10, %ymm15 -vpxor %ymm14, %ymm15, %ymm14 -vpand %ymm13, %ymm14, %ymm15 -vpxor %ymm15, %ymm13, %ymm13 -vpxor %ymm15, %ymm14, %ymm14 -vpand %ymm0, %ymm13, %ymm15 -vpxor %ymm0, %ymm13, %ymm0 -vpand %ymm3, %ymm14, %ymm13 -vpxor %ymm3, %ymm14, %ymm3 -vpxor %ymm3, %ymm15, %ymm3 -vpor %ymm0, %ymm13, %ymm0 -vpandn %ymm3, %ymm13, %ymm3 -vpand %ymm0, %ymm3, %ymm13 -vpxor %ymm0, %ymm13, %ymm0 -vpxor %ymm3, %ymm13, %ymm3 -vpxor 224(%rsp), %ymm1, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm1, %ymm15, %ymm1 -vpxor 224(%rsp), %ymm15, %ymm7 -vmovdqa %ymm7, 224(%rsp) -vpxor 320(%rsp), %ymm4, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm4, %ymm15, %ymm4 -vpxor 320(%rsp), %ymm15, %ymm8 -vmovdqa %ymm8, 320(%rsp) -vpand %ymm7, %ymm11, %ymm13 -vpand %ymm8, %ymm10, %ymm15 -vpxor %ymm13, %ymm15, %ymm13 -vpand %ymm8, %ymm11, %ymm14 -vpand %ymm7, %ymm10, %ymm15 -vpxor %ymm14, %ymm15, %ymm14 -vpand %ymm13, %ymm14, %ymm15 -vpxor %ymm15, %ymm13, %ymm13 -vpxor %ymm15, %ymm14, %ymm14 -vpand %ymm1, %ymm13, %ymm15 -vpxor %ymm1, %ymm13, %ymm1 -vpand %ymm4, %ymm14, %ymm13 -vpxor %ymm4, %ymm14, %ymm4 -vpxor %ymm4, %ymm15, %ymm4 -vpor %ymm1, %ymm13, %ymm1 -vpandn %ymm4, %ymm13, %ymm4 -vpand %ymm1, %ymm4, %ymm13 -vpxor %ymm1, %ymm13, %ymm1 -vpxor %ymm4, %ymm13, %ymm4 -vmovdqa 384(%rsp), %ymm6 -vpxor 576(%rsp), %ymm6, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm6, %ymm15, %ymm6 -vpxor 576(%rsp), %ymm15, %ymm8 -vmovdqa %ymm8, 576(%rsp) -vmovdqa 480(%rsp), %ymm7 -vpxor 672(%rsp), %ymm7, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm7, %ymm15, %ymm7 -vpxor 672(%rsp), %ymm15, %ymm14 -vmovdqa %ymm14, 672(%rsp) -vpand %ymm8, %ymm11, %ymm13 -vpand %ymm14, %ymm10, %ymm15 -vpxor %ymm13, %ymm15, %ymm13 -vpand %ymm14, %ymm11, %ymm14 -vpand %ymm8, %ymm10, %ymm15 -vpxor %ymm14, %ymm15, %ymm14 -vpand %ymm13, %ymm14, %ymm15 -vpxor %ymm15, %ymm13, %ymm13 -vpxor %ymm15, %ymm14, %ymm14 -vpand %ymm6, %ymm13, %ymm15 -vpxor %ymm6, %ymm13, %ymm6 -vpand %ymm7, %ymm14, %ymm13 -vpxor %ymm7, %ymm14, %ymm7 -vpxor %ymm7, %ymm15, %ymm7 -vpor %ymm6, %ymm13, %ymm6 -vpandn %ymm7, %ymm13, %ymm7 -vpand %ymm6, %ymm7, %ymm13 -vpxor %ymm6, %ymm13, %ymm6 -vpxor %ymm7, %ymm13, %ymm7 -vmovdqa %ymm6, 384(%rsp) -vmovdqa %ymm7, 480(%rsp) -vmovdqa 416(%rsp), %ymm6 -vpxor 608(%rsp), %ymm6, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm6, %ymm15, %ymm6 -vpxor 608(%rsp), %ymm15, %ymm8 -vmovdqa %ymm8, 608(%rsp) -vmovdqa 512(%rsp), %ymm7 -vpxor 704(%rsp), %ymm7, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm7, %ymm15, %ymm7 -vpxor 704(%rsp), %ymm15, %ymm14 -vmovdqa %ymm14, 704(%rsp) -vpand %ymm8, %ymm11, %ymm13 -vpand %ymm14, %ymm10, %ymm15 -vpxor %ymm13, %ymm15, %ymm13 -vpand %ymm14, %ymm11, %ymm14 -vpand %ymm8, %ymm10, %ymm15 -vpxor %ymm14, %ymm15, %ymm14 -vpand %ymm13, %ymm14, %ymm15 -vpxor %ymm15, %ymm13, %ymm13 -vpxor %ymm15, %ymm14, %ymm14 -vpand %ymm6, %ymm13, %ymm15 -vpxor %ymm6, %ymm13, %ymm6 -vpand %ymm7, %ymm14, %ymm13 -vpxor %ymm7, %ymm14, %ymm7 -vpxor %ymm7, %ymm15, %ymm7 -vpor %ymm6, %ymm13, %ymm6 -vpandn %ymm7, %ymm13, %ymm7 -vpand %ymm6, %ymm7, %ymm13 -vpxor %ymm6, %ymm13, %ymm6 -vpxor %ymm7, %ymm13, %ymm7 -vmovdqa %ymm6, 416(%rsp) -vmovdqa %ymm7, 512(%rsp) -vmovdqa 448(%rsp), %ymm6 -vpxor 640(%rsp), %ymm6, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm6, %ymm15, %ymm6 -vpxor 640(%rsp), %ymm15, %ymm8 -vmovdqa %ymm8, 640(%rsp) -vmovdqa 544(%rsp), %ymm7 -vpxor 736(%rsp), %ymm7, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm7, %ymm15, %ymm7 -vpxor 736(%rsp), %ymm15, %ymm14 -vmovdqa %ymm14, 736(%rsp) -vpand %ymm8, %ymm11, %ymm13 -vpand %ymm14, %ymm10, %ymm15 -vpxor %ymm13, %ymm15, %ymm13 -vpand %ymm14, %ymm11, %ymm14 -vpand %ymm8, %ymm10, %ymm15 -vpxor %ymm14, %ymm15, %ymm14 -vpand %ymm13, %ymm14, %ymm15 -vpxor %ymm15, %ymm13, %ymm13 -vpxor %ymm15, %ymm14, %ymm14 -vpand %ymm6, %ymm13, %ymm15 -vpxor %ymm6, %ymm13, %ymm6 -vpand %ymm7, %ymm14, %ymm13 -vpxor %ymm7, %ymm14, %ymm7 -vpxor %ymm7, %ymm15, %ymm7 -vpor %ymm6, %ymm13, %ymm6 -vpandn %ymm7, %ymm13, %ymm7 -vpand %ymm6, %ymm7, %ymm13 -vpxor %ymm6, %ymm13, %ymm6 -vpxor %ymm7, %ymm13, %ymm7 -vmovdqa %ymm6, 448(%rsp) -vmovdqa %ymm7, 544(%rsp) -vmovdqa 576(%rsp), %ymm6 -vmovdqa 608(%rsp), %ymm8 -vmovdqa 640(%rsp), %ymm10 -vpsllq $1, %ymm6, %ymm15 -vpsrlq $63, %ymm6, %ymm14 -vpermq $147, %ymm14, %ymm7 -vpxor %ymm15, %ymm7, %ymm7 -vpand const_1(%rip), %ymm7, %ymm13 -vpand const_all_but_1(%rip), %ymm7, %ymm7 -vpsllq $1, %ymm8, %ymm15 -vpsrlq $63, %ymm8, %ymm14 -vpermq $147, %ymm14, %ymm9 -vpxor %ymm15, %ymm9, %ymm9 -vpand const_1(%rip), %ymm9, %ymm15 -vpand const_all_but_1(%rip), %ymm9, %ymm9 -vpxor %ymm13, %ymm9, %ymm9 -vpsllq $1, %ymm10, %ymm13 -vpsrlq $63, %ymm10, %ymm14 -vpermq $147, %ymm14, %ymm11 -vpxor %ymm13, %ymm11, %ymm11 -vpand const_all_but_1(%rip), %ymm11, %ymm11 -vpxor %ymm15, %ymm11, %ymm11 -vpxor %ymm6, %ymm7, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm6, %ymm15, %ymm6 -vmovdqa %ymm6, 576(%rsp) -vpxor %ymm8, %ymm9, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm8, %ymm15, %ymm8 -vmovdqa %ymm8, 608(%rsp) -vpxor %ymm10, %ymm11, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm10, %ymm15, %ymm10 -vmovdqa %ymm10, 640(%rsp) -vpsrlq $1, %ymm1, %ymm15 -vpsllq $63, %ymm1, %ymm14 -vpermq $57, %ymm14, %ymm7 -vpxor %ymm15, %ymm7, %ymm7 -vpand const_high_1(%rip), %ymm7, %ymm15 -vpand const_all_but_high_1(%rip), %ymm7, %ymm7 -vpsrlq $1, %ymm0, %ymm13 -vpsllq $63, %ymm0, %ymm14 -vpermq $57, %ymm14, %ymm6 -vpxor %ymm13, %ymm6, %ymm6 -vpand const_all_but_high_1(%rip), %ymm6, %ymm6 -vpxor %ymm15, %ymm6, %ymm6 -vpxor %ymm0, %ymm6, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm0, %ymm15, %ymm0 -vpxor %ymm1, %ymm7, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm1, %ymm15, %ymm1 -vmovdqa 672(%rsp), %ymm6 -vmovdqa 704(%rsp), %ymm8 -vmovdqa 736(%rsp), %ymm10 -vpsllq $1, %ymm6, %ymm15 -vpsrlq $63, %ymm6, %ymm14 -vpermq $147, %ymm14, %ymm7 -vpxor %ymm15, %ymm7, %ymm7 -vpand const_1(%rip), %ymm7, %ymm13 -vpand const_all_but_1(%rip), %ymm7, %ymm7 -vpsllq $1, %ymm8, %ymm15 -vpsrlq $63, %ymm8, %ymm14 -vpermq $147, %ymm14, %ymm9 -vpxor %ymm15, %ymm9, %ymm9 -vpand const_1(%rip), %ymm9, %ymm15 -vpand const_all_but_1(%rip), %ymm9, %ymm9 -vpxor %ymm13, %ymm9, %ymm9 -vpsllq $1, %ymm10, %ymm13 -vpsrlq $63, %ymm10, %ymm14 -vpermq $147, %ymm14, %ymm11 -vpxor %ymm13, %ymm11, %ymm11 -vpand const_all_but_1(%rip), %ymm11, %ymm11 -vpxor %ymm15, %ymm11, %ymm11 -vpxor %ymm6, %ymm7, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm6, %ymm15, %ymm6 -vmovdqa %ymm6, 672(%rsp) -vpxor %ymm8, %ymm9, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm8, %ymm15, %ymm8 -vmovdqa %ymm8, 704(%rsp) -vpxor %ymm10, %ymm11, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm10, %ymm15, %ymm10 -vmovdqa %ymm10, 736(%rsp) -vpsrlq $1, %ymm4, %ymm15 -vpsllq $63, %ymm4, %ymm14 -vpermq $57, %ymm14, %ymm7 -vpxor %ymm15, %ymm7, %ymm7 -vpand const_high_1(%rip), %ymm7, %ymm15 -vpand const_all_but_high_1(%rip), %ymm7, %ymm7 -vpsrlq $1, %ymm3, %ymm13 -vpsllq $63, %ymm3, %ymm14 -vpermq $57, %ymm14, %ymm6 -vpxor %ymm13, %ymm6, %ymm6 -vpand const_all_but_high_1(%rip), %ymm6, %ymm6 -vpxor %ymm15, %ymm6, %ymm6 -vpxor %ymm3, %ymm6, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm3, %ymm15, %ymm3 -vpxor %ymm4, %ymm7, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm4, %ymm15, %ymm4 -add %rdx, %r9 -sub %rdx, %rax -mov %r9, %rdx -sub $1, %rdx -shr $63, %rdx -not %rdx -and $1, %rdx -dec %ecx -jns poly_s3_inv_loop_3 -mov $256, %ecx -poly_s3_inv_loop_4: -vpand 192(%rsp), %ymm0, %ymm10 -vpand 288(%rsp), %ymm3, %ymm15 -vpxor %ymm10, %ymm15, %ymm10 -vpand 192(%rsp), %ymm3, %ymm11 -vpand 288(%rsp), %ymm0, %ymm15 -vpxor %ymm11, %ymm15, %ymm11 -vpand %ymm10, %ymm11, %ymm15 -vpxor %ymm15, %ymm10, %ymm10 -vpxor %ymm15, %ymm11, %ymm11 -vpand const_1(%rip), %ymm11, %ymm11 -vpand const_1(%rip), %ymm10, %ymm10 -vpxor %ymm15, %ymm15, %ymm15 -vpsubq %ymm11, %ymm15, %ymm11 -vpsubq %ymm10, %ymm15, %ymm10 -vbroadcastsd %xmm11, %ymm11 -vbroadcastsd %xmm10, %ymm10 -neg %rdx -vmovq %rdx, %xmm12 -vbroadcastsd %xmm12, %ymm12 -vpand %ymm11, %ymm12, %ymm11 -vpand %ymm10, %ymm12, %ymm10 -vpor %ymm11, %ymm10, %ymm9 -mov %r9, %r12 -sub %r10, %r12 -shr $63, %r12 -neg %r12 -vmovq %r12, %xmm13 -vbroadcastsd %xmm13, %ymm13 -vpand %ymm13, %ymm9, %ymm9 -vmovq %xmm9, %r12 -mov %r9, %r13 -xor %r10, %r13 -and %r12, %r13 -xor %r13, %r10 -xor %r13, %r9 -vpxor 192(%rsp), %ymm0, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm0, %ymm15, %ymm0 -vpxor 192(%rsp), %ymm15, %ymm7 -vmovdqa %ymm7, 192(%rsp) -vpxor 288(%rsp), %ymm3, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm3, %ymm15, %ymm3 -vpxor 288(%rsp), %ymm15, %ymm8 -vmovdqa %ymm8, 288(%rsp) -vpand %ymm7, %ymm11, %ymm13 -vpand %ymm8, %ymm10, %ymm15 -vpxor %ymm13, %ymm15, %ymm13 -vpand %ymm8, %ymm11, %ymm14 -vpand %ymm7, %ymm10, %ymm15 -vpxor %ymm14, %ymm15, %ymm14 -vpand %ymm13, %ymm14, %ymm15 -vpxor %ymm15, %ymm13, %ymm13 -vpxor %ymm15, %ymm14, %ymm14 -vpand %ymm0, %ymm13, %ymm15 -vpxor %ymm0, %ymm13, %ymm0 -vpand %ymm3, %ymm14, %ymm13 -vpxor %ymm3, %ymm14, %ymm3 -vpxor %ymm3, %ymm15, %ymm3 -vpor %ymm0, %ymm13, %ymm0 -vpandn %ymm3, %ymm13, %ymm3 -vpand %ymm0, %ymm3, %ymm13 -vpxor %ymm0, %ymm13, %ymm0 -vpxor %ymm3, %ymm13, %ymm3 -vmovdqa 384(%rsp), %ymm6 -vpxor 576(%rsp), %ymm6, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm6, %ymm15, %ymm6 -vpxor 576(%rsp), %ymm15, %ymm8 -vmovdqa %ymm8, 576(%rsp) -vmovdqa 480(%rsp), %ymm7 -vpxor 672(%rsp), %ymm7, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm7, %ymm15, %ymm7 -vpxor 672(%rsp), %ymm15, %ymm14 -vmovdqa %ymm14, 672(%rsp) -vpand %ymm8, %ymm11, %ymm13 -vpand %ymm14, %ymm10, %ymm15 -vpxor %ymm13, %ymm15, %ymm13 -vpand %ymm14, %ymm11, %ymm14 -vpand %ymm8, %ymm10, %ymm15 -vpxor %ymm14, %ymm15, %ymm14 -vpand %ymm13, %ymm14, %ymm15 -vpxor %ymm15, %ymm13, %ymm13 -vpxor %ymm15, %ymm14, %ymm14 -vpand %ymm6, %ymm13, %ymm15 -vpxor %ymm6, %ymm13, %ymm6 -vpand %ymm7, %ymm14, %ymm13 -vpxor %ymm7, %ymm14, %ymm7 -vpxor %ymm7, %ymm15, %ymm7 -vpor %ymm6, %ymm13, %ymm6 -vpandn %ymm7, %ymm13, %ymm7 -vpand %ymm6, %ymm7, %ymm13 -vpxor %ymm6, %ymm13, %ymm6 -vpxor %ymm7, %ymm13, %ymm7 -vmovdqa %ymm6, 384(%rsp) -vmovdqa %ymm7, 480(%rsp) -vmovdqa 416(%rsp), %ymm6 -vpxor 608(%rsp), %ymm6, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm6, %ymm15, %ymm6 -vpxor 608(%rsp), %ymm15, %ymm8 -vmovdqa %ymm8, 608(%rsp) -vmovdqa 512(%rsp), %ymm7 -vpxor 704(%rsp), %ymm7, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm7, %ymm15, %ymm7 -vpxor 704(%rsp), %ymm15, %ymm14 -vmovdqa %ymm14, 704(%rsp) -vpand %ymm8, %ymm11, %ymm13 -vpand %ymm14, %ymm10, %ymm15 -vpxor %ymm13, %ymm15, %ymm13 -vpand %ymm14, %ymm11, %ymm14 -vpand %ymm8, %ymm10, %ymm15 -vpxor %ymm14, %ymm15, %ymm14 -vpand %ymm13, %ymm14, %ymm15 -vpxor %ymm15, %ymm13, %ymm13 -vpxor %ymm15, %ymm14, %ymm14 -vpand %ymm6, %ymm13, %ymm15 -vpxor %ymm6, %ymm13, %ymm6 -vpand %ymm7, %ymm14, %ymm13 -vpxor %ymm7, %ymm14, %ymm7 -vpxor %ymm7, %ymm15, %ymm7 -vpor %ymm6, %ymm13, %ymm6 -vpandn %ymm7, %ymm13, %ymm7 -vpand %ymm6, %ymm7, %ymm13 -vpxor %ymm6, %ymm13, %ymm6 -vpxor %ymm7, %ymm13, %ymm7 -vmovdqa %ymm6, 416(%rsp) -vmovdqa %ymm7, 512(%rsp) -vmovdqa 448(%rsp), %ymm6 -vpxor 640(%rsp), %ymm6, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm6, %ymm15, %ymm6 -vpxor 640(%rsp), %ymm15, %ymm8 -vmovdqa %ymm8, 640(%rsp) -vmovdqa 544(%rsp), %ymm7 -vpxor 736(%rsp), %ymm7, %ymm15 -vpand %ymm9, %ymm15, %ymm15 -vpxor %ymm7, %ymm15, %ymm7 -vpxor 736(%rsp), %ymm15, %ymm14 -vmovdqa %ymm14, 736(%rsp) -vpand %ymm8, %ymm11, %ymm13 -vpand %ymm14, %ymm10, %ymm15 -vpxor %ymm13, %ymm15, %ymm13 -vpand %ymm14, %ymm11, %ymm14 -vpand %ymm8, %ymm10, %ymm15 -vpxor %ymm14, %ymm15, %ymm14 -vpand %ymm13, %ymm14, %ymm15 -vpxor %ymm15, %ymm13, %ymm13 -vpxor %ymm15, %ymm14, %ymm14 -vpand %ymm6, %ymm13, %ymm15 -vpxor %ymm6, %ymm13, %ymm6 -vpand %ymm7, %ymm14, %ymm13 -vpxor %ymm7, %ymm14, %ymm7 -vpxor %ymm7, %ymm15, %ymm7 -vpor %ymm6, %ymm13, %ymm6 -vpandn %ymm7, %ymm13, %ymm7 -vpand %ymm6, %ymm7, %ymm13 -vpxor %ymm6, %ymm13, %ymm6 -vpxor %ymm7, %ymm13, %ymm7 -vmovdqa %ymm6, 448(%rsp) -vmovdqa %ymm7, 544(%rsp) -vmovdqa 576(%rsp), %ymm6 -vmovdqa 608(%rsp), %ymm8 -vmovdqa 640(%rsp), %ymm10 -vpsllq $1, %ymm6, %ymm15 -vpsrlq $63, %ymm6, %ymm14 -vpermq $147, %ymm14, %ymm7 -vpxor %ymm15, %ymm7, %ymm7 -vpand const_1(%rip), %ymm7, %ymm13 -vpand const_all_but_1(%rip), %ymm7, %ymm7 -vpsllq $1, %ymm8, %ymm15 -vpsrlq $63, %ymm8, %ymm14 -vpermq $147, %ymm14, %ymm9 -vpxor %ymm15, %ymm9, %ymm9 -vpand const_1(%rip), %ymm9, %ymm15 -vpand const_all_but_1(%rip), %ymm9, %ymm9 -vpxor %ymm13, %ymm9, %ymm9 -vpsllq $1, %ymm10, %ymm13 -vpsrlq $63, %ymm10, %ymm14 -vpermq $147, %ymm14, %ymm11 -vpxor %ymm13, %ymm11, %ymm11 -vpand const_all_but_1(%rip), %ymm11, %ymm11 -vpxor %ymm15, %ymm11, %ymm11 -vpxor %ymm6, %ymm7, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm6, %ymm15, %ymm6 -vmovdqa %ymm6, 576(%rsp) -vpxor %ymm8, %ymm9, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm8, %ymm15, %ymm8 -vmovdqa %ymm8, 608(%rsp) -vpxor %ymm10, %ymm11, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm10, %ymm15, %ymm10 -vmovdqa %ymm10, 640(%rsp) -vpsrlq $1, %ymm0, %ymm13 -vpsllq $63, %ymm0, %ymm14 -vpermq $57, %ymm14, %ymm6 -vpxor %ymm13, %ymm6, %ymm6 -vpand const_all_but_high_1(%rip), %ymm6, %ymm6 -vpxor %ymm0, %ymm6, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm0, %ymm15, %ymm0 -vmovdqa 672(%rsp), %ymm6 -vmovdqa 704(%rsp), %ymm8 -vmovdqa 736(%rsp), %ymm10 -vpsllq $1, %ymm6, %ymm15 -vpsrlq $63, %ymm6, %ymm14 -vpermq $147, %ymm14, %ymm7 -vpxor %ymm15, %ymm7, %ymm7 -vpand const_1(%rip), %ymm7, %ymm13 -vpand const_all_but_1(%rip), %ymm7, %ymm7 -vpsllq $1, %ymm8, %ymm15 -vpsrlq $63, %ymm8, %ymm14 -vpermq $147, %ymm14, %ymm9 -vpxor %ymm15, %ymm9, %ymm9 -vpand const_1(%rip), %ymm9, %ymm15 -vpand const_all_but_1(%rip), %ymm9, %ymm9 -vpxor %ymm13, %ymm9, %ymm9 -vpsllq $1, %ymm10, %ymm13 -vpsrlq $63, %ymm10, %ymm14 -vpermq $147, %ymm14, %ymm11 -vpxor %ymm13, %ymm11, %ymm11 -vpand const_all_but_1(%rip), %ymm11, %ymm11 -vpxor %ymm15, %ymm11, %ymm11 -vpxor %ymm6, %ymm7, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm6, %ymm15, %ymm6 -vmovdqa %ymm6, 672(%rsp) -vpxor %ymm8, %ymm9, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm8, %ymm15, %ymm8 -vmovdqa %ymm8, 704(%rsp) -vpxor %ymm10, %ymm11, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm10, %ymm15, %ymm10 -vmovdqa %ymm10, 736(%rsp) -vpsrlq $1, %ymm3, %ymm13 -vpsllq $63, %ymm3, %ymm14 -vpermq $57, %ymm14, %ymm6 -vpxor %ymm13, %ymm6, %ymm6 -vpand const_all_but_high_1(%rip), %ymm6, %ymm6 -vpxor %ymm3, %ymm6, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm3, %ymm15, %ymm3 -add %rdx, %r9 -sub %rdx, %rax -mov %r9, %rdx -sub $1, %rdx -shr $63, %rdx -not %rdx -and $1, %rdx -dec %ecx -jns poly_s3_inv_loop_4 -vpand const_1(%rip), %ymm0, %ymm0 -vpand const_1(%rip), %ymm3, %ymm3 -vpxor %ymm15, %ymm15, %ymm15 -vpsubq %ymm0, %ymm15, %ymm0 -vpsubq %ymm3, %ymm15, %ymm3 -vbroadcastsd %xmm0, %ymm0 -vbroadcastsd %xmm3, %ymm3 -vmovdqa 384(%rsp), %ymm6 -vmovdqa 416(%rsp), %ymm7 -vmovdqa 448(%rsp), %ymm8 -vmovdqa 480(%rsp), %ymm9 -vmovdqa 512(%rsp), %ymm10 -vmovdqa 544(%rsp), %ymm11 -vpand %ymm6, %ymm0, %ymm12 -vpand %ymm9, %ymm3, %ymm15 -vpxor %ymm12, %ymm15, %ymm12 -vpand %ymm6, %ymm3, %ymm13 -vpand %ymm9, %ymm0, %ymm15 -vpxor %ymm13, %ymm15, %ymm13 -vpand %ymm12, %ymm13, %ymm15 -vpxor %ymm15, %ymm12, %ymm12 -vpxor %ymm15, %ymm13, %ymm13 -vpand %ymm7, %ymm0, %ymm6 -vpand %ymm10, %ymm3, %ymm15 -vpxor %ymm6, %ymm15, %ymm6 -vpand %ymm7, %ymm3, %ymm9 -vpand %ymm10, %ymm0, %ymm15 -vpxor %ymm9, %ymm15, %ymm9 -vpand %ymm6, %ymm9, %ymm15 -vpxor %ymm15, %ymm6, %ymm6 -vpxor %ymm15, %ymm9, %ymm9 -vpand %ymm8, %ymm0, %ymm7 -vpand %ymm11, %ymm3, %ymm15 -vpxor %ymm7, %ymm15, %ymm7 -vpand %ymm8, %ymm3, %ymm10 -vpand %ymm11, %ymm0, %ymm15 -vpxor %ymm10, %ymm15, %ymm10 -vpand %ymm7, %ymm10, %ymm15 -vpxor %ymm15, %ymm7, %ymm7 -vpxor %ymm15, %ymm10, %ymm10 -vmovdqa %ymm12, 384(%rsp) -vmovdqa %ymm6, 416(%rsp) -vmovdqa %ymm7, 448(%rsp) -vmovdqa %ymm13, 480(%rsp) -vmovdqa %ymm9, 512(%rsp) -vmovdqa %ymm10, 544(%rsp) -mov %rax, %r12 -sub $702, %rax -mov %rax, %r13 -add $1, %rax -shr $63, %r13 -xor %r14, %r14 -sub %r13, %r14 -mov %rax, %rdx -xor %r12, %rax -and %r14, %rax -xor %rdx, %rax -vpxor %ymm11, %ymm11, %ymm11 -vmovdqa 384(%rsp), %ymm3 -vmovdqa 416(%rsp), %ymm4 -vmovdqa 448(%rsp), %ymm5 -vpsrlq $1, %ymm5, %ymm15 -vpsllq $63, %ymm5, %ymm14 -vpermq $57, %ymm14, %ymm2 -vpxor %ymm15, %ymm2, %ymm2 -vpand const_high_1(%rip), %ymm2, %ymm13 -vpand const_all_but_high_67(%rip), %ymm2, %ymm2 -vpsrlq $1, %ymm4, %ymm15 -vpsllq $63, %ymm4, %ymm14 -vpermq $57, %ymm14, %ymm1 -vpxor %ymm15, %ymm1, %ymm1 -vpand const_high_1(%rip), %ymm1, %ymm15 -vpand const_all_but_high_1(%rip), %ymm1, %ymm1 -vpxor %ymm13, %ymm1, %ymm1 -vpsrlq $1, %ymm3, %ymm13 -vpsllq $63, %ymm3, %ymm14 -vpermq $57, %ymm14, %ymm0 -vpxor %ymm13, %ymm0, %ymm0 -vpand const_high_1(%rip), %ymm0, %ymm13 -vpand const_all_but_high_1(%rip), %ymm0, %ymm0 -vpxor %ymm15, %ymm0, %ymm0 -vpermq $57, %ymm13, %ymm13 -vpsrlq $3, %ymm13, %ymm13 -vpxor %ymm13, %ymm2, %ymm2 -vmovq %rax, %xmm10 -vpand const_1(%rip), %ymm10, %ymm12 -vpsubq %ymm12, %ymm11, %ymm12 -vbroadcastsd %xmm12, %ymm12 -vpxor %ymm3, %ymm0, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm3, %ymm15, %ymm3 -vpxor %ymm4, %ymm1, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm4, %ymm15, %ymm4 -vpxor %ymm5, %ymm2, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm5, %ymm15, %ymm5 -vpsrlq $2, %ymm5, %ymm15 -vpsllq $62, %ymm5, %ymm14 -vpermq $57, %ymm14, %ymm2 -vpxor %ymm15, %ymm2, %ymm2 -vpand const_high_2(%rip), %ymm2, %ymm13 -vpand const_all_but_high_68(%rip), %ymm2, %ymm2 -vpsrlq $2, %ymm4, %ymm15 -vpsllq $62, %ymm4, %ymm14 -vpermq $57, %ymm14, %ymm1 -vpxor %ymm15, %ymm1, %ymm1 -vpand const_high_2(%rip), %ymm1, %ymm15 -vpand const_all_but_high_2(%rip), %ymm1, %ymm1 -vpxor %ymm13, %ymm1, %ymm1 -vpsrlq $2, %ymm3, %ymm13 -vpsllq $62, %ymm3, %ymm14 -vpermq $57, %ymm14, %ymm0 -vpxor %ymm13, %ymm0, %ymm0 -vpand const_high_2(%rip), %ymm0, %ymm13 -vpand const_all_but_high_2(%rip), %ymm0, %ymm0 -vpxor %ymm15, %ymm0, %ymm0 -vpermq $57, %ymm13, %ymm13 -vpsrlq $3, %ymm13, %ymm13 -vpxor %ymm13, %ymm2, %ymm2 -vpsrlq $1, %ymm10, %ymm10 -vpand const_1(%rip), %ymm10, %ymm12 -vpsubq %ymm12, %ymm11, %ymm12 -vbroadcastsd %xmm12, %ymm12 -vpxor %ymm3, %ymm0, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm3, %ymm15, %ymm3 -vpxor %ymm4, %ymm1, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm4, %ymm15, %ymm4 -vpxor %ymm5, %ymm2, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm5, %ymm15, %ymm5 -vpsrlq $4, %ymm5, %ymm15 -vpsllq $60, %ymm5, %ymm14 -vpermq $57, %ymm14, %ymm2 -vpxor %ymm15, %ymm2, %ymm2 -vpand const_high_4(%rip), %ymm2, %ymm13 -vpand const_all_but_high_70(%rip), %ymm2, %ymm2 -vpsrlq $4, %ymm4, %ymm15 -vpsllq $60, %ymm4, %ymm14 -vpermq $57, %ymm14, %ymm1 -vpxor %ymm15, %ymm1, %ymm1 -vpand const_high_4(%rip), %ymm1, %ymm15 -vpand const_all_but_high_4(%rip), %ymm1, %ymm1 -vpxor %ymm13, %ymm1, %ymm1 -vpsrlq $4, %ymm3, %ymm13 -vpsllq $60, %ymm3, %ymm14 -vpermq $57, %ymm14, %ymm0 -vpxor %ymm13, %ymm0, %ymm0 -vpand const_high_4(%rip), %ymm0, %ymm13 -vpand const_all_but_high_4(%rip), %ymm0, %ymm0 -vpxor %ymm15, %ymm0, %ymm0 -vpermq $57, %ymm13, %ymm13 -vpsrlq $3, %ymm13, %ymm13 -vpxor %ymm13, %ymm2, %ymm2 -vpsrlq $1, %ymm10, %ymm10 -vpand const_1(%rip), %ymm10, %ymm12 -vpsubq %ymm12, %ymm11, %ymm12 -vbroadcastsd %xmm12, %ymm12 -vpxor %ymm3, %ymm0, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm3, %ymm15, %ymm3 -vpxor %ymm4, %ymm1, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm4, %ymm15, %ymm4 -vpxor %ymm5, %ymm2, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm5, %ymm15, %ymm5 -vpsrlq $8, %ymm5, %ymm15 -vpsllq $56, %ymm5, %ymm14 -vpermq $57, %ymm14, %ymm2 -vpxor %ymm15, %ymm2, %ymm2 -vpand const_high_8(%rip), %ymm2, %ymm13 -vpand const_all_but_high_74(%rip), %ymm2, %ymm2 -vpsrlq $8, %ymm4, %ymm15 -vpsllq $56, %ymm4, %ymm14 -vpermq $57, %ymm14, %ymm1 -vpxor %ymm15, %ymm1, %ymm1 -vpand const_high_8(%rip), %ymm1, %ymm15 -vpand const_all_but_high_8(%rip), %ymm1, %ymm1 -vpxor %ymm13, %ymm1, %ymm1 -vpsrlq $8, %ymm3, %ymm13 -vpsllq $56, %ymm3, %ymm14 -vpermq $57, %ymm14, %ymm0 -vpxor %ymm13, %ymm0, %ymm0 -vpand const_high_8(%rip), %ymm0, %ymm13 -vpand const_all_but_high_8(%rip), %ymm0, %ymm0 -vpxor %ymm15, %ymm0, %ymm0 -vpermq $57, %ymm13, %ymm13 -vpsrlq $3, %ymm13, %ymm13 -vpxor %ymm13, %ymm2, %ymm2 -vpsrlq $1, %ymm10, %ymm10 -vpand const_1(%rip), %ymm10, %ymm12 -vpsubq %ymm12, %ymm11, %ymm12 -vbroadcastsd %xmm12, %ymm12 -vpxor %ymm3, %ymm0, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm3, %ymm15, %ymm3 -vpxor %ymm4, %ymm1, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm4, %ymm15, %ymm4 -vpxor %ymm5, %ymm2, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm5, %ymm15, %ymm5 -vpsrlq $16, %ymm5, %ymm15 -vpsllq $48, %ymm5, %ymm14 -vpermq $57, %ymm14, %ymm2 -vpxor %ymm15, %ymm2, %ymm2 -vpand const_high_16(%rip), %ymm2, %ymm13 -vpand const_all_but_high_82(%rip), %ymm2, %ymm2 -vpsrlq $16, %ymm4, %ymm15 -vpsllq $48, %ymm4, %ymm14 -vpermq $57, %ymm14, %ymm1 -vpxor %ymm15, %ymm1, %ymm1 -vpand const_high_16(%rip), %ymm1, %ymm15 -vpand const_all_but_high_16(%rip), %ymm1, %ymm1 -vpxor %ymm13, %ymm1, %ymm1 -vpsrlq $16, %ymm3, %ymm13 -vpsllq $48, %ymm3, %ymm14 -vpermq $57, %ymm14, %ymm0 -vpxor %ymm13, %ymm0, %ymm0 -vpand const_high_16(%rip), %ymm0, %ymm13 -vpand const_all_but_high_16(%rip), %ymm0, %ymm0 -vpxor %ymm15, %ymm0, %ymm0 -vpermq $57, %ymm13, %ymm13 -vpsrlq $3, %ymm13, %ymm13 -vpxor %ymm13, %ymm2, %ymm2 -vpsrlq $1, %ymm10, %ymm10 -vpand const_1(%rip), %ymm10, %ymm12 -vpsubq %ymm12, %ymm11, %ymm12 -vbroadcastsd %xmm12, %ymm12 -vpxor %ymm3, %ymm0, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm3, %ymm15, %ymm3 -vpxor %ymm4, %ymm1, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm4, %ymm15, %ymm4 -vpxor %ymm5, %ymm2, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm5, %ymm15, %ymm5 -vpsrlq $32, %ymm5, %ymm15 -vpsllq $32, %ymm5, %ymm14 -vpermq $57, %ymm14, %ymm2 -vpxor %ymm15, %ymm2, %ymm2 -vpand const_high_32(%rip), %ymm2, %ymm13 -vpand const_all_but_high_98(%rip), %ymm2, %ymm2 -vpsrlq $32, %ymm4, %ymm15 -vpsllq $32, %ymm4, %ymm14 -vpermq $57, %ymm14, %ymm1 -vpxor %ymm15, %ymm1, %ymm1 -vpand const_high_32(%rip), %ymm1, %ymm15 -vpand const_all_but_high_32(%rip), %ymm1, %ymm1 -vpxor %ymm13, %ymm1, %ymm1 -vpsrlq $32, %ymm3, %ymm13 -vpsllq $32, %ymm3, %ymm14 -vpermq $57, %ymm14, %ymm0 -vpxor %ymm13, %ymm0, %ymm0 -vpand const_high_32(%rip), %ymm0, %ymm13 -vpand const_all_but_high_32(%rip), %ymm0, %ymm0 -vpxor %ymm15, %ymm0, %ymm0 -vpermq $57, %ymm13, %ymm13 -vpsrlq $3, %ymm13, %ymm13 -vpxor %ymm13, %ymm2, %ymm2 -vpsrlq $1, %ymm10, %ymm10 -vpand const_1(%rip), %ymm10, %ymm12 -vpsubq %ymm12, %ymm11, %ymm12 -vbroadcastsd %xmm12, %ymm12 -vpxor %ymm3, %ymm0, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm3, %ymm15, %ymm3 -vpxor %ymm4, %ymm1, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm4, %ymm15, %ymm4 -vpxor %ymm5, %ymm2, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm5, %ymm15, %ymm5 -vpermq $57, %ymm5, %ymm15 -vpand const_high_64(%rip), %ymm15, %ymm14 -vpand const_all_but_high_64(%rip), %ymm15, %ymm2 -vpermq $57, %ymm4, %ymm15 -vpand const_high_64(%rip), %ymm15, %ymm13 -vpand const_all_but_high_64(%rip), %ymm15, %ymm1 -vpxor %ymm1, %ymm14, %ymm1 -vpermq $57, %ymm3, %ymm15 -vpand const_high_64(%rip), %ymm15, %ymm14 -vpand const_all_but_high_64(%rip), %ymm15, %ymm1 -vpxor %ymm0, %ymm13, %ymm0 -vpermq $57, %ymm13, %ymm14 -vpsrlq $3, %ymm14, %ymm14 -vpxor %ymm14, %ymm2, %ymm2 -vpermq $78, %ymm13, %ymm14 -vpsllq $61, %ymm14, %ymm14 -vpxor %ymm14, %ymm2, %ymm2 -vpsrlq $1, %ymm10, %ymm10 -vpand const_1(%rip), %ymm10, %ymm12 -vpsubq %ymm12, %ymm11, %ymm12 -vbroadcastsd %xmm12, %ymm12 -vpxor %ymm3, %ymm0, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm3, %ymm15, %ymm3 -vpxor %ymm4, %ymm1, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm4, %ymm15, %ymm4 -vpxor %ymm5, %ymm2, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm5, %ymm15, %ymm5 -vextracti128 $0, %ymm3, %xmm15 -vextracti128 $1, %ymm3, %xmm0 -vinserti128 $1, %xmm4, %ymm0, %ymm0 -vextracti128 $1, %ymm4, %xmm1 -vinserti128 $1, %xmm5, %ymm1, %ymm1 -vextracti128 $1, %ymm5, %xmm2 -vpsllq $61, %ymm15, %ymm14 -vpsrlq $3, %ymm15, %ymm13 -vpermq $147, %ymm13, %ymm15 -vpxor %ymm14, %ymm15, %ymm15 -vpxor %ymm15, %ymm2, %ymm2 -vpsrlq $1, %ymm10, %ymm10 -vpand const_1(%rip), %ymm10, %ymm12 -vpsubq %ymm12, %ymm11, %ymm12 -vbroadcastsd %xmm12, %ymm12 -vpxor %ymm3, %ymm0, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm3, %ymm15, %ymm3 -vpxor %ymm4, %ymm1, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm4, %ymm15, %ymm4 -vpxor %ymm5, %ymm2, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm5, %ymm15, %ymm5 -vmovdqa %ymm4, %ymm0 -vmovdqa %ymm5, %ymm1 -vpermq $57, %ymm3, %ymm15 -vpsrlq $3, %ymm15, %ymm14 -vpsllq $61, %ymm15, %ymm13 -vpermq $57, %ymm13, %ymm15 -vpxor %ymm14, %ymm15, %ymm15 -vpand const_all_but_high_67(%rip), %ymm15, %ymm2 -vpand const_high_67(%rip), %ymm15, %ymm15 -vpxor %ymm15, %ymm1, %ymm1 -vpsrlq $1, %ymm10, %ymm10 -vpand const_1(%rip), %ymm10, %ymm12 -vpsubq %ymm12, %ymm11, %ymm12 -vbroadcastsd %xmm12, %ymm12 -vpxor %ymm3, %ymm0, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm3, %ymm15, %ymm3 -vpxor %ymm4, %ymm1, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm4, %ymm15, %ymm4 -vpxor %ymm5, %ymm2, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm5, %ymm15, %ymm5 -vpermq $78, %ymm3, %ymm0 -vpsllq $61, %ymm0, %ymm14 -vpsrlq $3, %ymm0, %ymm13 -vpermq $147, %ymm13, %ymm13 -vpxor %ymm14, %ymm13, %ymm0 -vpand const_all_but_high_67(%rip), %ymm0, %ymm15 -vpand const_high_67(%rip), %ymm0, %ymm0 -vpermq $78, %ymm4, %ymm2 -vpsllq $61, %ymm2, %ymm14 -vpsrlq $3, %ymm2, %ymm13 -vpermq $147, %ymm13, %ymm13 -vpxor %ymm14, %ymm13, %ymm2 -vpand const_high_67(%rip), %ymm2, %ymm1 -vpand const_all_but_high_67(%rip), %ymm2, %ymm2 -vpxor %ymm15, %ymm1, %ymm1 -vpxor %ymm5, %ymm0, %ymm0 -vpsrlq $1, %ymm10, %ymm10 -vpand const_1(%rip), %ymm10, %ymm12 -vpsubq %ymm12, %ymm11, %ymm12 -vbroadcastsd %xmm12, %ymm12 -vpxor %ymm3, %ymm0, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm3, %ymm15, %ymm3 -vpxor %ymm4, %ymm1, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm4, %ymm15, %ymm4 -vpxor %ymm5, %ymm2, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm5, %ymm15, %ymm5 -vmovdqa %ymm3, 384(%rsp) -vmovdqa %ymm4, 416(%rsp) -vmovdqa %ymm5, 448(%rsp) -vmovdqa 480(%rsp), %ymm3 -vmovdqa 512(%rsp), %ymm4 -vmovdqa 544(%rsp), %ymm5 -vpsrlq $1, %ymm5, %ymm15 -vpsllq $63, %ymm5, %ymm14 -vpermq $57, %ymm14, %ymm2 -vpxor %ymm15, %ymm2, %ymm2 -vpand const_high_1(%rip), %ymm2, %ymm13 -vpand const_all_but_high_67(%rip), %ymm2, %ymm2 -vpsrlq $1, %ymm4, %ymm15 -vpsllq $63, %ymm4, %ymm14 -vpermq $57, %ymm14, %ymm1 -vpxor %ymm15, %ymm1, %ymm1 -vpand const_high_1(%rip), %ymm1, %ymm15 -vpand const_all_but_high_1(%rip), %ymm1, %ymm1 -vpxor %ymm13, %ymm1, %ymm1 -vpsrlq $1, %ymm3, %ymm13 -vpsllq $63, %ymm3, %ymm14 -vpermq $57, %ymm14, %ymm0 -vpxor %ymm13, %ymm0, %ymm0 -vpand const_high_1(%rip), %ymm0, %ymm13 -vpand const_all_but_high_1(%rip), %ymm0, %ymm0 -vpxor %ymm15, %ymm0, %ymm0 -vpermq $57, %ymm13, %ymm13 -vpsrlq $3, %ymm13, %ymm13 -vpxor %ymm13, %ymm2, %ymm2 -vmovq %rax, %xmm10 -vpand const_1(%rip), %ymm10, %ymm12 -vpsubq %ymm12, %ymm11, %ymm12 -vbroadcastsd %xmm12, %ymm12 -vpxor %ymm3, %ymm0, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm3, %ymm15, %ymm3 -vpxor %ymm4, %ymm1, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm4, %ymm15, %ymm4 -vpxor %ymm5, %ymm2, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm5, %ymm15, %ymm5 -vpsrlq $2, %ymm5, %ymm15 -vpsllq $62, %ymm5, %ymm14 -vpermq $57, %ymm14, %ymm2 -vpxor %ymm15, %ymm2, %ymm2 -vpand const_high_2(%rip), %ymm2, %ymm13 -vpand const_all_but_high_68(%rip), %ymm2, %ymm2 -vpsrlq $2, %ymm4, %ymm15 -vpsllq $62, %ymm4, %ymm14 -vpermq $57, %ymm14, %ymm1 -vpxor %ymm15, %ymm1, %ymm1 -vpand const_high_2(%rip), %ymm1, %ymm15 -vpand const_all_but_high_2(%rip), %ymm1, %ymm1 -vpxor %ymm13, %ymm1, %ymm1 -vpsrlq $2, %ymm3, %ymm13 -vpsllq $62, %ymm3, %ymm14 -vpermq $57, %ymm14, %ymm0 -vpxor %ymm13, %ymm0, %ymm0 -vpand const_high_2(%rip), %ymm0, %ymm13 -vpand const_all_but_high_2(%rip), %ymm0, %ymm0 -vpxor %ymm15, %ymm0, %ymm0 -vpermq $57, %ymm13, %ymm13 -vpsrlq $3, %ymm13, %ymm13 -vpxor %ymm13, %ymm2, %ymm2 -vpsrlq $1, %ymm10, %ymm10 -vpand const_1(%rip), %ymm10, %ymm12 -vpsubq %ymm12, %ymm11, %ymm12 -vbroadcastsd %xmm12, %ymm12 -vpxor %ymm3, %ymm0, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm3, %ymm15, %ymm3 -vpxor %ymm4, %ymm1, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm4, %ymm15, %ymm4 -vpxor %ymm5, %ymm2, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm5, %ymm15, %ymm5 -vpsrlq $4, %ymm5, %ymm15 -vpsllq $60, %ymm5, %ymm14 -vpermq $57, %ymm14, %ymm2 -vpxor %ymm15, %ymm2, %ymm2 -vpand const_high_4(%rip), %ymm2, %ymm13 -vpand const_all_but_high_70(%rip), %ymm2, %ymm2 -vpsrlq $4, %ymm4, %ymm15 -vpsllq $60, %ymm4, %ymm14 -vpermq $57, %ymm14, %ymm1 -vpxor %ymm15, %ymm1, %ymm1 -vpand const_high_4(%rip), %ymm1, %ymm15 -vpand const_all_but_high_4(%rip), %ymm1, %ymm1 -vpxor %ymm13, %ymm1, %ymm1 -vpsrlq $4, %ymm3, %ymm13 -vpsllq $60, %ymm3, %ymm14 -vpermq $57, %ymm14, %ymm0 -vpxor %ymm13, %ymm0, %ymm0 -vpand const_high_4(%rip), %ymm0, %ymm13 -vpand const_all_but_high_4(%rip), %ymm0, %ymm0 -vpxor %ymm15, %ymm0, %ymm0 -vpermq $57, %ymm13, %ymm13 -vpsrlq $3, %ymm13, %ymm13 -vpxor %ymm13, %ymm2, %ymm2 -vpsrlq $1, %ymm10, %ymm10 -vpand const_1(%rip), %ymm10, %ymm12 -vpsubq %ymm12, %ymm11, %ymm12 -vbroadcastsd %xmm12, %ymm12 -vpxor %ymm3, %ymm0, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm3, %ymm15, %ymm3 -vpxor %ymm4, %ymm1, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm4, %ymm15, %ymm4 -vpxor %ymm5, %ymm2, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm5, %ymm15, %ymm5 -vpsrlq $8, %ymm5, %ymm15 -vpsllq $56, %ymm5, %ymm14 -vpermq $57, %ymm14, %ymm2 -vpxor %ymm15, %ymm2, %ymm2 -vpand const_high_8(%rip), %ymm2, %ymm13 -vpand const_all_but_high_74(%rip), %ymm2, %ymm2 -vpsrlq $8, %ymm4, %ymm15 -vpsllq $56, %ymm4, %ymm14 -vpermq $57, %ymm14, %ymm1 -vpxor %ymm15, %ymm1, %ymm1 -vpand const_high_8(%rip), %ymm1, %ymm15 -vpand const_all_but_high_8(%rip), %ymm1, %ymm1 -vpxor %ymm13, %ymm1, %ymm1 -vpsrlq $8, %ymm3, %ymm13 -vpsllq $56, %ymm3, %ymm14 -vpermq $57, %ymm14, %ymm0 -vpxor %ymm13, %ymm0, %ymm0 -vpand const_high_8(%rip), %ymm0, %ymm13 -vpand const_all_but_high_8(%rip), %ymm0, %ymm0 -vpxor %ymm15, %ymm0, %ymm0 -vpermq $57, %ymm13, %ymm13 -vpsrlq $3, %ymm13, %ymm13 -vpxor %ymm13, %ymm2, %ymm2 -vpsrlq $1, %ymm10, %ymm10 -vpand const_1(%rip), %ymm10, %ymm12 -vpsubq %ymm12, %ymm11, %ymm12 -vbroadcastsd %xmm12, %ymm12 -vpxor %ymm3, %ymm0, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm3, %ymm15, %ymm3 -vpxor %ymm4, %ymm1, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm4, %ymm15, %ymm4 -vpxor %ymm5, %ymm2, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm5, %ymm15, %ymm5 -vpsrlq $16, %ymm5, %ymm15 -vpsllq $48, %ymm5, %ymm14 -vpermq $57, %ymm14, %ymm2 -vpxor %ymm15, %ymm2, %ymm2 -vpand const_high_16(%rip), %ymm2, %ymm13 -vpand const_all_but_high_82(%rip), %ymm2, %ymm2 -vpsrlq $16, %ymm4, %ymm15 -vpsllq $48, %ymm4, %ymm14 -vpermq $57, %ymm14, %ymm1 -vpxor %ymm15, %ymm1, %ymm1 -vpand const_high_16(%rip), %ymm1, %ymm15 -vpand const_all_but_high_16(%rip), %ymm1, %ymm1 -vpxor %ymm13, %ymm1, %ymm1 -vpsrlq $16, %ymm3, %ymm13 -vpsllq $48, %ymm3, %ymm14 -vpermq $57, %ymm14, %ymm0 -vpxor %ymm13, %ymm0, %ymm0 -vpand const_high_16(%rip), %ymm0, %ymm13 -vpand const_all_but_high_16(%rip), %ymm0, %ymm0 -vpxor %ymm15, %ymm0, %ymm0 -vpermq $57, %ymm13, %ymm13 -vpsrlq $3, %ymm13, %ymm13 -vpxor %ymm13, %ymm2, %ymm2 -vpsrlq $1, %ymm10, %ymm10 -vpand const_1(%rip), %ymm10, %ymm12 -vpsubq %ymm12, %ymm11, %ymm12 -vbroadcastsd %xmm12, %ymm12 -vpxor %ymm3, %ymm0, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm3, %ymm15, %ymm3 -vpxor %ymm4, %ymm1, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm4, %ymm15, %ymm4 -vpxor %ymm5, %ymm2, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm5, %ymm15, %ymm5 -vpsrlq $32, %ymm5, %ymm15 -vpsllq $32, %ymm5, %ymm14 -vpermq $57, %ymm14, %ymm2 -vpxor %ymm15, %ymm2, %ymm2 -vpand const_high_32(%rip), %ymm2, %ymm13 -vpand const_all_but_high_98(%rip), %ymm2, %ymm2 -vpsrlq $32, %ymm4, %ymm15 -vpsllq $32, %ymm4, %ymm14 -vpermq $57, %ymm14, %ymm1 -vpxor %ymm15, %ymm1, %ymm1 -vpand const_high_32(%rip), %ymm1, %ymm15 -vpand const_all_but_high_32(%rip), %ymm1, %ymm1 -vpxor %ymm13, %ymm1, %ymm1 -vpsrlq $32, %ymm3, %ymm13 -vpsllq $32, %ymm3, %ymm14 -vpermq $57, %ymm14, %ymm0 -vpxor %ymm13, %ymm0, %ymm0 -vpand const_high_32(%rip), %ymm0, %ymm13 -vpand const_all_but_high_32(%rip), %ymm0, %ymm0 -vpxor %ymm15, %ymm0, %ymm0 -vpermq $57, %ymm13, %ymm13 -vpsrlq $3, %ymm13, %ymm13 -vpxor %ymm13, %ymm2, %ymm2 -vpsrlq $1, %ymm10, %ymm10 -vpand const_1(%rip), %ymm10, %ymm12 -vpsubq %ymm12, %ymm11, %ymm12 -vbroadcastsd %xmm12, %ymm12 -vpxor %ymm3, %ymm0, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm3, %ymm15, %ymm3 -vpxor %ymm4, %ymm1, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm4, %ymm15, %ymm4 -vpxor %ymm5, %ymm2, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm5, %ymm15, %ymm5 -vpermq $57, %ymm5, %ymm15 -vpand const_high_64(%rip), %ymm15, %ymm14 -vpand const_all_but_high_64(%rip), %ymm15, %ymm2 -vpermq $57, %ymm4, %ymm15 -vpand const_high_64(%rip), %ymm15, %ymm13 -vpand const_all_but_high_64(%rip), %ymm15, %ymm1 -vpxor %ymm1, %ymm14, %ymm1 -vpermq $57, %ymm3, %ymm15 -vpand const_high_64(%rip), %ymm15, %ymm14 -vpand const_all_but_high_64(%rip), %ymm15, %ymm1 -vpxor %ymm0, %ymm13, %ymm0 -vpermq $57, %ymm13, %ymm14 -vpsrlq $3, %ymm14, %ymm14 -vpxor %ymm14, %ymm2, %ymm2 -vpermq $78, %ymm13, %ymm14 -vpsllq $61, %ymm14, %ymm14 -vpxor %ymm14, %ymm2, %ymm2 -vpsrlq $1, %ymm10, %ymm10 -vpand const_1(%rip), %ymm10, %ymm12 -vpsubq %ymm12, %ymm11, %ymm12 -vbroadcastsd %xmm12, %ymm12 -vpxor %ymm3, %ymm0, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm3, %ymm15, %ymm3 -vpxor %ymm4, %ymm1, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm4, %ymm15, %ymm4 -vpxor %ymm5, %ymm2, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm5, %ymm15, %ymm5 -vextracti128 $0, %ymm3, %xmm15 -vextracti128 $1, %ymm3, %xmm0 -vinserti128 $1, %xmm4, %ymm0, %ymm0 -vextracti128 $1, %ymm4, %xmm1 -vinserti128 $1, %xmm5, %ymm1, %ymm1 -vextracti128 $1, %ymm5, %xmm2 -vpsllq $61, %ymm15, %ymm14 -vpsrlq $3, %ymm15, %ymm13 -vpermq $147, %ymm13, %ymm15 -vpxor %ymm14, %ymm15, %ymm15 -vpxor %ymm15, %ymm2, %ymm2 -vpsrlq $1, %ymm10, %ymm10 -vpand const_1(%rip), %ymm10, %ymm12 -vpsubq %ymm12, %ymm11, %ymm12 -vbroadcastsd %xmm12, %ymm12 -vpxor %ymm3, %ymm0, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm3, %ymm15, %ymm3 -vpxor %ymm4, %ymm1, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm4, %ymm15, %ymm4 -vpxor %ymm5, %ymm2, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm5, %ymm15, %ymm5 -vmovdqa %ymm4, %ymm0 -vmovdqa %ymm5, %ymm1 -vpermq $57, %ymm3, %ymm15 -vpsrlq $3, %ymm15, %ymm14 -vpsllq $61, %ymm15, %ymm13 -vpermq $57, %ymm13, %ymm15 -vpxor %ymm14, %ymm15, %ymm15 -vpand const_all_but_high_67(%rip), %ymm15, %ymm2 -vpand const_high_67(%rip), %ymm15, %ymm15 -vpxor %ymm15, %ymm1, %ymm1 -vpsrlq $1, %ymm10, %ymm10 -vpand const_1(%rip), %ymm10, %ymm12 -vpsubq %ymm12, %ymm11, %ymm12 -vbroadcastsd %xmm12, %ymm12 -vpxor %ymm3, %ymm0, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm3, %ymm15, %ymm3 -vpxor %ymm4, %ymm1, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm4, %ymm15, %ymm4 -vpxor %ymm5, %ymm2, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm5, %ymm15, %ymm5 -vpermq $78, %ymm3, %ymm0 -vpsllq $61, %ymm0, %ymm14 -vpsrlq $3, %ymm0, %ymm13 -vpermq $147, %ymm13, %ymm13 -vpxor %ymm14, %ymm13, %ymm0 -vpand const_all_but_high_67(%rip), %ymm0, %ymm15 -vpand const_high_67(%rip), %ymm0, %ymm0 -vpermq $78, %ymm4, %ymm2 -vpsllq $61, %ymm2, %ymm14 -vpsrlq $3, %ymm2, %ymm13 -vpermq $147, %ymm13, %ymm13 -vpxor %ymm14, %ymm13, %ymm2 -vpand const_high_67(%rip), %ymm2, %ymm1 -vpand const_all_but_high_67(%rip), %ymm2, %ymm2 -vpxor %ymm15, %ymm1, %ymm1 -vpxor %ymm5, %ymm0, %ymm0 -vpsrlq $1, %ymm10, %ymm10 -vpand const_1(%rip), %ymm10, %ymm12 -vpsubq %ymm12, %ymm11, %ymm12 -vbroadcastsd %xmm12, %ymm12 -vpxor %ymm3, %ymm0, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm3, %ymm15, %ymm3 -vpxor %ymm4, %ymm1, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm4, %ymm15, %ymm4 -vpxor %ymm5, %ymm2, %ymm15 -vpand %ymm12, %ymm15, %ymm15 -vpxor %ymm5, %ymm15, %ymm5 -vmovdqa %ymm3, 480(%rsp) -vmovdqa %ymm4, 512(%rsp) -vmovdqa %ymm5, 544(%rsp) -mov $281479271743489, %r9 -mov $562958543486978, %rdx -mov 384(%rsp), %r10 -mov 480(%rsp), %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 0(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 8(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 16(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 24(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 32(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 40(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 48(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 56(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 64(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 72(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 80(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 88(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 96(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 104(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 112(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 120(%rdi) -mov 392(%rsp), %r10 -mov 488(%rsp), %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 128(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 136(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 144(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 152(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 160(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 168(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 176(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 184(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 192(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 200(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 208(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 216(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 224(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 232(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 240(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 248(%rdi) -mov 400(%rsp), %r10 -mov 496(%rsp), %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 256(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 264(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 272(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 280(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 288(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 296(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 304(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 312(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 320(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 328(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 336(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 344(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 352(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 360(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 368(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 376(%rdi) -mov 408(%rsp), %r10 -mov 504(%rsp), %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 384(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 392(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 400(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 408(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 416(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 424(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 432(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 440(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 448(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 456(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 464(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 472(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 480(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 488(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 496(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 504(%rdi) -mov 416(%rsp), %r10 -mov 512(%rsp), %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 512(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 520(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 528(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 536(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 544(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 552(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 560(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 568(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 576(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 584(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 592(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 600(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 608(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 616(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 624(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 632(%rdi) -mov 424(%rsp), %r10 -mov 520(%rsp), %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 640(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 648(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 656(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 664(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 672(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 680(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 688(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 696(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 704(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 712(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 720(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 728(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 736(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 744(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 752(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 760(%rdi) -mov 432(%rsp), %r10 -mov 528(%rsp), %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 768(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 776(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 784(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 792(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 800(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 808(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 816(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 824(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 832(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 840(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 848(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 856(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 864(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 872(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 880(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 888(%rdi) -mov 440(%rsp), %r10 -mov 536(%rsp), %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 896(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 904(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 912(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 920(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 928(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 936(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 944(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 952(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 960(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 968(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 976(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 984(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 992(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1000(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1008(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1016(%rdi) -mov 448(%rsp), %r10 -mov 544(%rsp), %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1024(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1032(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1040(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1048(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1056(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1064(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1072(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1080(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1088(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1096(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1104(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1112(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1120(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1128(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1136(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1144(%rdi) -mov 456(%rsp), %r10 -mov 552(%rsp), %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1152(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1160(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1168(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1176(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1184(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1192(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1200(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1208(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1216(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1224(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1232(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1240(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1248(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1256(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1264(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1272(%rdi) -mov 464(%rsp), %r10 -mov 560(%rsp), %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1280(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1288(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1296(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1304(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1312(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1320(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1328(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1336(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1344(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1352(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1360(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1368(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1376(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1384(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1392(%rdi) -shr $4, %r10 -shr $4, %r11 -pdep %r9, %r10, %r12 -pdep %rdx, %r11, %r13 -or %r12, %r13 -mov %r13, 1400(%rdi) -vmovdqa 1376(%rdi), %ymm0 -vpermq $3, %ymm0, %ymm0 -vpslld $17, %ymm0, %ymm0 -vpsrld $16, %ymm0, %ymm1 -vpor %ymm0, %ymm1, %ymm0 -vbroadcastss %xmm0, %ymm0 -vpaddw 0(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 0(%rdi) -vpaddw 32(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 32(%rdi) -vpaddw 64(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 64(%rdi) -vpaddw 96(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 96(%rdi) -vpaddw 128(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 128(%rdi) -vpaddw 160(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 160(%rdi) -vpaddw 192(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 192(%rdi) -vpaddw 224(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 224(%rdi) -vpaddw 256(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 256(%rdi) -vpaddw 288(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 288(%rdi) -vpaddw 320(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 320(%rdi) -vpaddw 352(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 352(%rdi) -vpaddw 384(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 384(%rdi) -vpaddw 416(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 416(%rdi) -vpaddw 448(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 448(%rdi) -vpaddw 480(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 480(%rdi) -vpaddw 512(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 512(%rdi) -vpaddw 544(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 544(%rdi) -vpaddw 576(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 576(%rdi) -vpaddw 608(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 608(%rdi) -vpaddw 640(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 640(%rdi) -vpaddw 672(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 672(%rdi) -vpaddw 704(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 704(%rdi) -vpaddw 736(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 736(%rdi) -vpaddw 768(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 768(%rdi) -vpaddw 800(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 800(%rdi) -vpaddw 832(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 832(%rdi) -vpaddw 864(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 864(%rdi) -vpaddw 896(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 896(%rdi) -vpaddw 928(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 928(%rdi) -vpaddw 960(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 960(%rdi) -vpaddw 992(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 992(%rdi) -vpaddw 1024(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 1024(%rdi) -vpaddw 1056(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 1056(%rdi) -vpaddw 1088(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 1088(%rdi) -vpaddw 1120(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 1120(%rdi) -vpaddw 1152(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 1152(%rdi) -vpaddw 1184(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 1184(%rdi) -vpaddw 1216(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 1216(%rdi) -vpaddw 1248(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 1248(%rdi) -vpaddw 1280(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 1280(%rdi) -vpaddw 1312(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 1312(%rdi) -vpaddw 1344(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 1344(%rdi) -vpaddw 1376(%rdi), %ymm0, %ymm1 -vpand mask_3(%rip), %ymm1, %ymm2 -vpsrlw $2, %ymm1, %ymm1 -vpaddw %ymm1, %ymm2, %ymm2 -vpsubw mask_3(%rip), %ymm2, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm1 -vpand %ymm15, %ymm2, %ymm14 -vpxor %ymm14, %ymm1, %ymm2 -vmovdqa %ymm2, 1376(%rdi) -mov %r8, %rsp -pop %r14 -pop %r13 -pop %r12 -ret diff --git a/crypto_kem/ntruhrss701/clean/owcpa.c b/crypto_kem/ntruhrss701/clean/owcpa.c index 68402ebc..b62c147d 100644 --- a/crypto_kem/ntruhrss701/clean/owcpa.c +++ b/crypto_kem/ntruhrss701/clean/owcpa.c @@ -2,21 +2,37 @@ #include "poly.h" #include "sample.h" +static int owcpa_check_ciphertext(const unsigned char *ciphertext) { + /* A ciphertext is log2(q)*(n-1) bits packed into bytes. */ + /* Check that any unused bits of the final byte are zero. */ + + uint16_t t = 0; + + t = ciphertext[NTRU_CIPHERTEXTBYTES - 1]; + t &= 0xff << (8 - (7 & (NTRU_LOGQ * NTRU_PACK_DEG))); + + /* We have 0 <= t < 256 */ + /* Return 0 on success (t=0), 1 on failure */ + return (int) (1 & ((~t + 1) >> 15)); +} + static int owcpa_check_r(const poly *r) { - /* Check that r is in message space. */ - /* Note: Assumes that r has coefficients in {0, 1, ..., q-1} */ + /* A valid r has coefficients in {0,1,q-1} and has r[N-1] = 0 */ + /* Note: We may assume that 0 <= r[i] <= q-1 for all i */ + int i; - uint64_t t = 0; + uint32_t t = 0; uint16_t c; - for (i = 0; i < NTRU_N; i++) { - c = MODQ(r->coeffs[i] + 1); - t |= c & (NTRU_Q - 4); /* 0 if c is in {0,1,2,3} */ - t |= (c + 1) & 0x4; /* 0 if c is in {0,1,2} */ + for (i = 0; i < NTRU_N - 1; i++) { + c = r->coeffs[i]; + t |= (c + 1) & (NTRU_Q - 4); /* 0 iff c is in {-1,0,1,2} */ + t |= (c + 2) & 4; /* 1 if c = 2, 0 if c is in {-1,0,1} */ } - t |= MODQ(r->coeffs[NTRU_N - 1]); /* Coefficient n-1 must be zero */ - t = (~t + 1); // two's complement - t >>= 63; - return (int) t; + t |= r->coeffs[NTRU_N - 1]; /* Coefficient n-1 must be zero */ + + /* We have 0 <= t < 2^16. */ + /* Return 0 on success (t=0), 1 on failure */ + return (int) (1 & ((~t + 1) >> 31)); } @@ -108,8 +124,8 @@ int PQCLEAN_NTRUHRSS701_CLEAN_owcpa_dec(unsigned char *rm, fail = 0; - /* Check that unused bits of last byte of ciphertext are zero */ - fail |= ciphertext[NTRU_CIPHERTEXTBYTES - 1] & (0xff << (8 - (7 & (NTRU_LOGQ * NTRU_PACK_DEG)))); + /* Check that the unused bits of the last byte of the ciphertext are zero */ + fail |= owcpa_check_ciphertext(ciphertext); /* For the IND-CCA2 KEM we must ensure that c = Enc(h, (r,m)). */ /* We can avoid re-computing r*h + Lift(m) as long as we check that */ diff --git a/crypto_kem/ntruhrss701/clean/poly_mod.c b/crypto_kem/ntruhrss701/clean/poly_mod.c index 01d174b1..820e206c 100644 --- a/crypto_kem/ntruhrss701/clean/poly_mod.c +++ b/crypto_kem/ntruhrss701/clean/poly_mod.c @@ -30,14 +30,22 @@ void PQCLEAN_NTRUHRSS701_CLEAN_poly_mod_q_Phi_n(poly *r) { } void PQCLEAN_NTRUHRSS701_CLEAN_poly_Rq_to_S3(poly *r, const poly *a) { - /* NOTE: Assumes input is in [0,Q-1]^N */ - /* Produces output in {0,1,2}^N */ int i; + uint16_t flag; - /* Center coeffs around 3Q: [0, Q-1] -> [3Q - Q/2, 3Q + Q/2) */ + /* The coefficients of a are stored as non-negative integers. */ + /* We must translate to representatives in [-q/2, q/2) before */ + /* reduction mod 3. */ for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = ((MODQ(a->coeffs[i]) >> (NTRU_LOGQ - 1)) ^ 3) << NTRU_LOGQ; - r->coeffs[i] += MODQ(a->coeffs[i]); + /* Need an explicit reduction mod q here */ + r->coeffs[i] = MODQ(a->coeffs[i]); + + /* flag = 1 if r[i] >= q/2 else 0 */ + flag = r->coeffs[i] >> (NTRU_LOGQ - 1); + + /* Now we will add (-q) mod 3 if r[i] >= q/2 */ + /* Note (-q) mod 3=(-2^k) mod 3=1<<(1-(k&1)) */ + r->coeffs[i] += flag << (1 - (NTRU_LOGQ & 1)); } PQCLEAN_NTRUHRSS701_CLEAN_poly_mod_3_Phi_n(r);