From 75368fee9dc82242a6f05ff1419e98b808db935d Mon Sep 17 00:00:00 2001 From: Kris Kwiatkowski Date: Tue, 5 Jul 2022 20:58:38 +0100 Subject: [PATCH] Remove not needed code --- CMakeLists.txt | 25 +- README.md | 29 +- public/pqc/pqc.h | 13 - src/capi/schemes.h | 23 - .../frodokem1344shake/clean/CMakeLists.txt | 10 - src/kem/frodo/frodokem1344shake/clean/api.h | 20 - .../frodo/frodokem1344shake/clean/common.h | 21 - src/kem/frodo/frodokem1344shake/clean/kem.c | 237 - .../frodokem1344shake/clean/matrix_shake.c | 108 - src/kem/frodo/frodokem1344shake/clean/noise.c | 35 - .../frodo/frodokem1344shake/clean/params.h | 27 - src/kem/frodo/frodokem1344shake/clean/util.c | 264 - .../frodokem640shake/clean/CMakeLists.txt | 10 - src/kem/frodo/frodokem640shake/clean/api.h | 20 - src/kem/frodo/frodokem640shake/clean/common.h | 21 - src/kem/frodo/frodokem640shake/clean/kem.c | 237 - .../frodokem640shake/clean/matrix_shake.c | 108 - src/kem/frodo/frodokem640shake/clean/noise.c | 35 - src/kem/frodo/frodokem640shake/clean/params.h | 27 - src/kem/frodo/frodokem640shake/clean/util.c | 264 - .../frodokem976shake/clean/CMakeLists.txt | 10 - src/kem/frodo/frodokem976shake/clean/api.h | 20 - src/kem/frodo/frodokem976shake/clean/common.h | 21 - src/kem/frodo/frodokem976shake/clean/kem.c | 237 - .../frodokem976shake/clean/matrix_shake.c | 108 - src/kem/frodo/frodokem976shake/clean/noise.c | 35 - src/kem/frodo/frodokem976shake/clean/params.h | 27 - src/kem/frodo/frodokem976shake/clean/util.c | 264 - .../ntru/ntruhps2048509/avx2/CMakeLists.txt | 32 - src/kem/ntru/ntruhps2048509/avx2/api.h | 19 - src/kem/ntru/ntruhps2048509/avx2/cmov.c | 11 - src/kem/ntru/ntruhps2048509/avx2/cmov.h | 10 - .../ntruhps2048509/avx2/crypto_sort_int32.c | 1218 -- .../ntruhps2048509/avx2/crypto_sort_int32.h | 11 - src/kem/ntru/ntruhps2048509/avx2/kem.c | 63 - src/kem/ntru/ntruhps2048509/avx2/owcpa.c | 183 - src/kem/ntru/ntruhps2048509/avx2/owcpa.h | 19 - src/kem/ntru/ntruhps2048509/avx2/pack3.c | 46 - src/kem/ntru/ntruhps2048509/avx2/packq.c | 93 - src/kem/ntru/ntruhps2048509/avx2/params.h | 37 - src/kem/ntru/ntruhps2048509/avx2/poly.c | 75 - src/kem/ntru/ntruhps2048509/avx2/poly.h | 41 - src/kem/ntru/ntruhps2048509/avx2/poly_lift.c | 11 - .../ntruhps2048509/avx2/poly_mod_3_Phi_n.s | 676 - .../ntruhps2048509/avx2/poly_mod_q_Phi_n.s | 80 - .../ntru/ntruhps2048509/avx2/poly_r2_inv.c | 80 - .../ntru/ntruhps2048509/avx2/poly_r2_inv.h | 20 - .../ntru/ntruhps2048509/avx2/poly_r2_mul.s | 285 - .../ntru/ntruhps2048509/avx2/poly_rq_mul.s | 5520 ------ .../ntru/ntruhps2048509/avx2/poly_rq_to_s3.s | 840 - .../ntru/ntruhps2048509/avx2/poly_s3_inv.c | 463 - src/kem/ntru/ntruhps2048509/avx2/sample.c | 45 - src/kem/ntru/ntruhps2048509/avx2/sample.h | 17 - src/kem/ntru/ntruhps2048509/avx2/sample_iid.c | 21 - .../avx2/square_126_509_shufbytes.s | 2854 --- .../avx2/square_15_509_shufbytes.s | 5125 ----- .../avx2/square_1_509_patience.s | 109 - .../avx2/square_252_509_shufbytes.s | 3992 ---- .../avx2/square_30_509_shufbytes.s | 4316 ----- .../avx2/square_3_509_patience.s | 272 - .../avx2/square_63_509_shufbytes.s | 4186 ---- .../avx2/square_6_509_patience.s | 296 - .../ntruhps2048509/avx2/vec32_sample_iid.s | 784 - .../ntru/ntruhps2048509/clean/CMakeLists.txt | 20 - src/kem/ntru/ntruhps2048509/clean/api.h | 19 - src/kem/ntru/ntruhps2048509/clean/cmov.c | 11 - src/kem/ntru/ntruhps2048509/clean/cmov.h | 10 - .../ntruhps2048509/clean/crypto_sort_int32.c | 86 - .../ntruhps2048509/clean/crypto_sort_int32.h | 11 - src/kem/ntru/ntruhps2048509/clean/kem.c | 63 - src/kem/ntru/ntruhps2048509/clean/owcpa.c | 183 - src/kem/ntru/ntruhps2048509/clean/owcpa.h | 19 - src/kem/ntru/ntruhps2048509/clean/pack3.c | 46 - src/kem/ntru/ntruhps2048509/clean/packq.c | 93 - src/kem/ntru/ntruhps2048509/clean/params.h | 37 - src/kem/ntru/ntruhps2048509/clean/poly.c | 75 - src/kem/ntru/ntruhps2048509/clean/poly.h | 39 - src/kem/ntru/ntruhps2048509/clean/poly_lift.c | 11 - src/kem/ntru/ntruhps2048509/clean/poly_mod.c | 53 - .../ntru/ntruhps2048509/clean/poly_r2_inv.c | 69 - .../ntru/ntruhps2048509/clean/poly_rq_mul.c | 284 - .../ntru/ntruhps2048509/clean/poly_s3_inv.c | 78 - src/kem/ntru/ntruhps2048509/clean/sample.c | 45 - src/kem/ntru/ntruhps2048509/clean/sample.h | 17 - .../ntru/ntruhps2048509/clean/sample_iid.c | 26 - .../ntru/ntruhps2048677/avx2/CMakeLists.txt | 34 - src/kem/ntru/ntruhps2048677/avx2/api.h | 19 - src/kem/ntru/ntruhps2048677/avx2/cmov.c | 11 - src/kem/ntru/ntruhps2048677/avx2/cmov.h | 10 - .../ntruhps2048677/avx2/crypto_sort_int32.c | 1218 -- .../ntruhps2048677/avx2/crypto_sort_int32.h | 11 - src/kem/ntru/ntruhps2048677/avx2/kem.c | 63 - src/kem/ntru/ntruhps2048677/avx2/owcpa.c | 183 - src/kem/ntru/ntruhps2048677/avx2/owcpa.h | 19 - src/kem/ntru/ntruhps2048677/avx2/pack3.c | 46 - src/kem/ntru/ntruhps2048677/avx2/packq.c | 93 - src/kem/ntru/ntruhps2048677/avx2/params.h | 37 - src/kem/ntru/ntruhps2048677/avx2/poly.c | 75 - src/kem/ntru/ntruhps2048677/avx2/poly.h | 41 - src/kem/ntru/ntruhps2048677/avx2/poly_lift.c | 11 - .../ntruhps2048677/avx2/poly_mod_3_Phi_n.s | 928 - .../ntruhps2048677/avx2/poly_mod_q_Phi_n.s | 104 - .../ntru/ntruhps2048677/avx2/poly_r2_inv.c | 73 - .../ntru/ntruhps2048677/avx2/poly_r2_inv.h | 23 - .../ntru/ntruhps2048677/avx2/poly_r2_mul.s | 466 - .../ntru/ntruhps2048677/avx2/poly_rq_mul.s | 7825 -------- .../ntru/ntruhps2048677/avx2/poly_rq_to_s3.s | 1116 -- .../ntru/ntruhps2048677/avx2/poly_s3_inv.c | 569 - src/kem/ntru/ntruhps2048677/avx2/sample.c | 45 - src/kem/ntru/ntruhps2048677/avx2/sample.h | 17 - src/kem/ntru/ntruhps2048677/avx2/sample_iid.c | 21 - .../avx2/square_10_677_shufbytes.s | 7189 ------- .../avx2/square_168_677_shufbytes.s | 7312 ------- .../avx2/square_1_677_patience.s | 134 - .../avx2/square_21_677_shufbytes.s | 6580 ------- .../avx2/square_2_677_patience.s | 235 - .../avx2/square_336_677_shufbytes.s | 6450 ------ .../avx2/square_3_677_patience.s | 452 - .../avx2/square_42_677_shufbytes.s | 8477 -------- .../avx2/square_5_677_patience.s | 1478 -- .../avx2/square_84_677_shufbytes.s | 6940 ------- .../ntruhps2048677/avx2/vec32_sample_iid.s | 1066 - .../ntru/ntruhps2048677/clean/CMakeLists.txt | 20 - src/kem/ntru/ntruhps2048677/clean/api.h | 19 - src/kem/ntru/ntruhps2048677/clean/cmov.c | 11 - src/kem/ntru/ntruhps2048677/clean/cmov.h | 10 - .../ntruhps2048677/clean/crypto_sort_int32.c | 86 - .../ntruhps2048677/clean/crypto_sort_int32.h | 11 - src/kem/ntru/ntruhps2048677/clean/kem.c | 63 - src/kem/ntru/ntruhps2048677/clean/owcpa.c | 183 - src/kem/ntru/ntruhps2048677/clean/owcpa.h | 19 - src/kem/ntru/ntruhps2048677/clean/pack3.c | 46 - src/kem/ntru/ntruhps2048677/clean/packq.c | 93 - src/kem/ntru/ntruhps2048677/clean/params.h | 37 - src/kem/ntru/ntruhps2048677/clean/poly.c | 75 - src/kem/ntru/ntruhps2048677/clean/poly.h | 39 - src/kem/ntru/ntruhps2048677/clean/poly_lift.c | 11 - src/kem/ntru/ntruhps2048677/clean/poly_mod.c | 53 - .../ntru/ntruhps2048677/clean/poly_r2_inv.c | 69 - .../ntru/ntruhps2048677/clean/poly_rq_mul.c | 284 - .../ntru/ntruhps2048677/clean/poly_s3_inv.c | 78 - src/kem/ntru/ntruhps2048677/clean/sample.c | 45 - src/kem/ntru/ntruhps2048677/clean/sample.h | 17 - .../ntru/ntruhps2048677/clean/sample_iid.c | 26 - .../ntru/ntruhps4096821/avx2/CMakeLists.txt | 33 - src/kem/ntru/ntruhps4096821/avx2/api.h | 19 - src/kem/ntru/ntruhps4096821/avx2/cmov.c | 11 - src/kem/ntru/ntruhps4096821/avx2/cmov.h | 10 - .../ntruhps4096821/avx2/crypto_sort_int32.c | 1218 -- .../ntruhps4096821/avx2/crypto_sort_int32.h | 11 - src/kem/ntru/ntruhps4096821/avx2/kem.c | 63 - src/kem/ntru/ntruhps4096821/avx2/owcpa.c | 183 - src/kem/ntru/ntruhps4096821/avx2/owcpa.h | 19 - src/kem/ntru/ntruhps4096821/avx2/pack3.c | 32 - src/kem/ntru/ntruhps4096821/avx2/packq.c | 36 - src/kem/ntru/ntruhps4096821/avx2/params.h | 37 - src/kem/ntru/ntruhps4096821/avx2/poly.c | 75 - src/kem/ntru/ntruhps4096821/avx2/poly.h | 41 - src/kem/ntru/ntruhps4096821/avx2/poly_lift.c | 11 - .../ntruhps4096821/avx2/poly_mod_3_Phi_n.s | 1064 - .../ntruhps4096821/avx2/poly_mod_q_Phi_n.s | 120 - .../ntru/ntruhps4096821/avx2/poly_r2_inv.c | 89 - .../ntru/ntruhps4096821/avx2/poly_r2_inv.h | 21 - .../ntru/ntruhps4096821/avx2/poly_r2_mul.s | 748 - .../ntru/ntruhps4096821/avx2/poly_rq_mul.s | 10652 ---------- .../ntru/ntruhps4096821/avx2/poly_rq_to_s3.s | 1353 -- .../ntru/ntruhps4096821/avx2/poly_s3_inv.c | 685 - src/kem/ntru/ntruhps4096821/avx2/sample.c | 45 - src/kem/ntru/ntruhps4096821/avx2/sample.h | 17 - src/kem/ntru/ntruhps4096821/avx2/sample_iid.c | 21 - .../avx2/square_102_821_shufbytes.s | 9577 --------- .../avx2/square_12_821_shufbytes.s | 10273 ---------- .../avx2/square_1_821_patience.s | 158 - .../avx2/square_204_821_shufbytes.s | 16127 ---------------- .../avx2/square_24_821_shufbytes.s | 9467 --------- .../avx2/square_3_821_patience.s | 524 - .../avx2/square_408_821_shufbytes.s | 6605 ------- .../avx2/square_51_821_shufbytes.s | 9993 ---------- .../avx2/square_6_821_patience.s | 841 - .../ntruhps4096821/avx2/vec32_sample_iid.s | 1222 -- .../ntru/ntruhps4096821/clean/CMakeLists.txt | 20 - src/kem/ntru/ntruhps4096821/clean/api.h | 19 - src/kem/ntru/ntruhps4096821/clean/cmov.c | 11 - src/kem/ntru/ntruhps4096821/clean/cmov.h | 10 - .../ntruhps4096821/clean/crypto_sort_int32.c | 86 - .../ntruhps4096821/clean/crypto_sort_int32.h | 11 - src/kem/ntru/ntruhps4096821/clean/kem.c | 63 - src/kem/ntru/ntruhps4096821/clean/owcpa.c | 183 - src/kem/ntru/ntruhps4096821/clean/owcpa.h | 19 - src/kem/ntru/ntruhps4096821/clean/pack3.c | 32 - src/kem/ntru/ntruhps4096821/clean/packq.c | 36 - src/kem/ntru/ntruhps4096821/clean/params.h | 37 - src/kem/ntru/ntruhps4096821/clean/poly.c | 75 - src/kem/ntru/ntruhps4096821/clean/poly.h | 39 - src/kem/ntru/ntruhps4096821/clean/poly_lift.c | 11 - src/kem/ntru/ntruhps4096821/clean/poly_mod.c | 53 - .../ntru/ntruhps4096821/clean/poly_r2_inv.c | 69 - .../ntru/ntruhps4096821/clean/poly_rq_mul.c | 284 - .../ntru/ntruhps4096821/clean/poly_s3_inv.c | 78 - src/kem/ntru/ntruhps4096821/clean/sample.c | 45 - src/kem/ntru/ntruhps4096821/clean/sample.h | 17 - .../ntru/ntruhps4096821/clean/sample_iid.c | 26 - src/kem/ntru/ntruhrss701/avx2/CMakeLists.txt | 33 - src/kem/ntru/ntruhrss701/avx2/api.h | 19 - src/kem/ntru/ntruhrss701/avx2/cmov.c | 11 - src/kem/ntru/ntruhrss701/avx2/cmov.h | 10 - src/kem/ntru/ntruhrss701/avx2/kem.c | 63 - src/kem/ntru/ntruhrss701/avx2/owcpa.c | 162 - src/kem/ntru/ntruhrss701/avx2/owcpa.h | 19 - src/kem/ntru/ntruhrss701/avx2/pack3.c | 32 - src/kem/ntru/ntruhrss701/avx2/packq.c | 98 - src/kem/ntru/ntruhrss701/avx2/params.h | 35 - src/kem/ntru/ntruhrss701/avx2/poly.c | 75 - src/kem/ntru/ntruhrss701/avx2/poly.h | 41 - src/kem/ntru/ntruhrss701/avx2/poly_lift.s | 3247 ---- .../ntru/ntruhrss701/avx2/poly_mod_3_Phi_n.s | 901 - .../ntru/ntruhrss701/avx2/poly_mod_q_Phi_n.s | 104 - src/kem/ntru/ntruhrss701/avx2/poly_r2_inv.c | 73 - src/kem/ntru/ntruhrss701/avx2/poly_r2_inv.h | 22 - src/kem/ntru/ntruhrss701/avx2/poly_r2_mul.s | 466 - src/kem/ntru/ntruhrss701/avx2/poly_rq_mul.s | 8320 -------- src/kem/ntru/ntruhrss701/avx2/poly_rq_to_s3.s | 1116 -- src/kem/ntru/ntruhrss701/avx2/poly_s3_inv.c | 569 - src/kem/ntru/ntruhrss701/avx2/sample.c | 46 - src/kem/ntru/ntruhrss701/avx2/sample.h | 16 - src/kem/ntru/ntruhrss701/avx2/sample_iid.c | 21 - .../avx2/square_12_701_shufbytes.s | 7204 ------- .../avx2/square_15_701_shufbytes.s | 12747 ------------ .../avx2/square_168_701_shufbytes.s | 7918 -------- .../ntruhrss701/avx2/square_1_701_patience.s | 137 - .../avx2/square_27_701_shufbytes.s | 5384 ------ .../avx2/square_336_701_shufbytes.s | 6738 ------- .../ntruhrss701/avx2/square_3_701_patience.s | 381 - .../avx2/square_42_701_shufbytes.s | 5974 ------ .../ntruhrss701/avx2/square_6_701_patience.s | 554 - .../avx2/square_84_701_shufbytes.s | 4655 ----- .../ntru/ntruhrss701/avx2/vec32_sample_iid.s | 1042 - src/kem/ntru/ntruhrss701/clean/CMakeLists.txt | 19 - src/kem/ntru/ntruhrss701/clean/api.h | 19 - src/kem/ntru/ntruhrss701/clean/cmov.c | 11 - src/kem/ntru/ntruhrss701/clean/cmov.h | 10 - src/kem/ntru/ntruhrss701/clean/kem.c | 63 - src/kem/ntru/ntruhrss701/clean/owcpa.c | 162 - src/kem/ntru/ntruhrss701/clean/owcpa.h | 19 - src/kem/ntru/ntruhrss701/clean/pack3.c | 32 - src/kem/ntru/ntruhrss701/clean/packq.c | 98 - src/kem/ntru/ntruhrss701/clean/params.h | 35 - src/kem/ntru/ntruhrss701/clean/poly.c | 75 - src/kem/ntru/ntruhrss701/clean/poly.h | 39 - src/kem/ntru/ntruhrss701/clean/poly_lift.c | 54 - src/kem/ntru/ntruhrss701/clean/poly_mod.c | 53 - src/kem/ntru/ntruhrss701/clean/poly_r2_inv.c | 69 - src/kem/ntru/ntruhrss701/clean/poly_rq_mul.c | 284 - src/kem/ntru/ntruhrss701/clean/poly_s3_inv.c | 78 - src/kem/ntru/ntruhrss701/clean/sample.c | 46 - src/kem/ntru/ntruhrss701/clean/sample.h | 16 - src/kem/ntru/ntruhrss701/clean/sample_iid.c | 26 - .../ntru_prime/ntrulpr653/avx2/CMakeLists.txt | 25 - src/kem/ntru_prime/ntrulpr653/avx2/api.h | 16 - .../avx2/crypto_core_multsntrup653.c | 314 - .../avx2/crypto_core_multsntrup653.h | 11 - .../avx2/crypto_core_multsntrup653_ntt.c | 927 - .../avx2/crypto_core_multsntrup653_ntt.h | 13 - .../ntrulpr653/avx2/crypto_decode_256x16.c | 11 - .../ntrulpr653/avx2/crypto_decode_256x16.h | 10 - .../ntrulpr653/avx2/crypto_decode_256x2.c | 27 - .../ntrulpr653/avx2/crypto_decode_256x2.h | 10 - .../ntrulpr653/avx2/crypto_decode_653x1541.c | 404 - .../ntrulpr653/avx2/crypto_decode_653x1541.h | 10 - .../ntrulpr653/avx2/crypto_decode_653x3.c | 65 - .../ntrulpr653/avx2/crypto_decode_653x3.h | 10 - .../ntrulpr653/avx2/crypto_decode_653xint16.c | 15 - .../ntrulpr653/avx2/crypto_decode_653xint16.h | 10 - .../ntrulpr653/avx2/crypto_decode_653xint32.c | 20 - .../ntrulpr653/avx2/crypto_decode_653xint32.h | 10 - .../ntrulpr653/avx2/crypto_encode_256x16.c | 10 - .../ntrulpr653/avx2/crypto_encode_256x16.h | 10 - .../ntrulpr653/avx2/crypto_encode_256x2.c | 88 - .../ntrulpr653/avx2/crypto_encode_256x2.h | 10 - .../ntrulpr653/avx2/crypto_encode_653x1541.c | 286 - .../ntrulpr653/avx2/crypto_encode_653x1541.h | 10 - .../avx2/crypto_encode_653x1541round.c | 288 - .../avx2/crypto_encode_653x1541round.h | 10 - .../ntrulpr653/avx2/crypto_encode_653x3.c | 64 - .../ntrulpr653/avx2/crypto_encode_653x3.h | 10 - .../ntrulpr653/avx2/crypto_encode_653xint16.c | 13 - .../ntrulpr653/avx2/crypto_encode_653xint16.h | 10 - .../ntrulpr653/avx2/crypto_sort_int32.c | 1215 -- .../ntrulpr653/avx2/crypto_sort_int32.h | 8 - .../ntrulpr653/avx2/crypto_sort_uint32.c | 18 - .../ntrulpr653/avx2/crypto_sort_uint32.h | 8 - .../ntrulpr653/avx2/crypto_stream_aes256ctr.c | 15 - .../ntrulpr653/avx2/crypto_stream_aes256ctr.h | 15 - .../ntrulpr653/avx2/crypto_verify_1025.c | 36 - .../ntrulpr653/avx2/crypto_verify_1025.h | 8 - src/kem/ntru_prime/ntrulpr653/avx2/kem.c | 287 - src/kem/ntru_prime/ntrulpr653/avx2/params.h | 63 - .../ntrulpr653/clean/CMakeLists.txt | 24 - src/kem/ntru_prime/ntrulpr653/clean/api.h | 16 - .../clean/crypto_core_multsntrup653.c | 60 - .../clean/crypto_core_multsntrup653.h | 11 - .../ntrulpr653/clean/crypto_decode_256x16.c | 11 - .../ntrulpr653/clean/crypto_decode_256x16.h | 10 - .../ntrulpr653/clean/crypto_decode_256x2.c | 10 - .../ntrulpr653/clean/crypto_decode_256x2.h | 10 - .../ntrulpr653/clean/crypto_decode_653x1541.c | 200 - .../ntrulpr653/clean/crypto_decode_653x1541.h | 10 - .../ntrulpr653/clean/crypto_decode_653x3.c | 24 - .../ntrulpr653/clean/crypto_decode_653x3.h | 10 - .../clean/crypto_decode_653xint16.c | 15 - .../clean/crypto_decode_653xint16.h | 10 - .../clean/crypto_decode_653xint32.c | 20 - .../clean/crypto_decode_653xint32.h | 10 - .../ntrulpr653/clean/crypto_encode_256x16.c | 10 - .../ntrulpr653/clean/crypto_encode_256x16.h | 10 - .../ntrulpr653/clean/crypto_encode_256x2.c | 13 - .../ntrulpr653/clean/crypto_encode_256x2.h | 10 - .../ntrulpr653/clean/crypto_encode_653x1541.c | 127 - .../ntrulpr653/clean/crypto_encode_653x1541.h | 10 - .../clean/crypto_encode_653x1541round.c | 17 - .../clean/crypto_encode_653x1541round.h | 10 - .../ntrulpr653/clean/crypto_encode_653x3.c | 21 - .../ntrulpr653/clean/crypto_encode_653x3.h | 10 - .../clean/crypto_encode_653xint16.c | 13 - .../clean/crypto_encode_653xint16.h | 10 - .../ntrulpr653/clean/crypto_sort_int32.c | 84 - .../ntrulpr653/clean/crypto_sort_int32.h | 8 - .../ntrulpr653/clean/crypto_sort_uint32.c | 18 - .../ntrulpr653/clean/crypto_sort_uint32.h | 8 - .../clean/crypto_stream_aes256ctr.c | 15 - .../clean/crypto_stream_aes256ctr.h | 15 - .../ntrulpr653/clean/crypto_verify_1025.c | 13 - .../ntrulpr653/clean/crypto_verify_1025.h | 8 - src/kem/ntru_prime/ntrulpr653/clean/kem.c | 287 - src/kem/ntru_prime/ntrulpr653/clean/params.h | 65 - .../ntru_prime/ntrulpr761/avx2/CMakeLists.txt | 25 - src/kem/ntru_prime/ntrulpr761/avx2/api.h | 16 - .../avx2/crypto_core_multsntrup761.c | 314 - .../avx2/crypto_core_multsntrup761.h | 11 - .../avx2/crypto_core_multsntrup761_ntt.c | 927 - .../avx2/crypto_core_multsntrup761_ntt.h | 13 - .../ntrulpr761/avx2/crypto_decode_256x16.c | 11 - .../ntrulpr761/avx2/crypto_decode_256x16.h | 10 - .../ntrulpr761/avx2/crypto_decode_256x2.c | 27 - .../ntrulpr761/avx2/crypto_decode_256x2.h | 10 - .../ntrulpr761/avx2/crypto_decode_761x1531.c | 432 - .../ntrulpr761/avx2/crypto_decode_761x1531.h | 10 - .../ntrulpr761/avx2/crypto_decode_761x3.c | 65 - .../ntrulpr761/avx2/crypto_decode_761x3.h | 10 - .../ntrulpr761/avx2/crypto_decode_761xint16.c | 15 - .../ntrulpr761/avx2/crypto_decode_761xint16.h | 10 - .../ntrulpr761/avx2/crypto_decode_761xint32.c | 20 - .../ntrulpr761/avx2/crypto_decode_761xint32.h | 10 - .../ntrulpr761/avx2/crypto_encode_256x16.c | 10 - .../ntrulpr761/avx2/crypto_encode_256x16.h | 10 - .../ntrulpr761/avx2/crypto_encode_256x2.c | 88 - .../ntrulpr761/avx2/crypto_encode_256x2.h | 10 - .../ntrulpr761/avx2/crypto_encode_761x1531.c | 301 - .../ntrulpr761/avx2/crypto_encode_761x1531.h | 10 - .../avx2/crypto_encode_761x1531round.c | 303 - .../avx2/crypto_encode_761x1531round.h | 10 - .../ntrulpr761/avx2/crypto_encode_761x3.c | 64 - .../ntrulpr761/avx2/crypto_encode_761x3.h | 10 - .../ntrulpr761/avx2/crypto_encode_761xint16.c | 13 - .../ntrulpr761/avx2/crypto_encode_761xint16.h | 10 - .../ntrulpr761/avx2/crypto_sort_int32.c | 1215 -- .../ntrulpr761/avx2/crypto_sort_int32.h | 8 - .../ntrulpr761/avx2/crypto_sort_uint32.c | 18 - .../ntrulpr761/avx2/crypto_sort_uint32.h | 8 - .../ntrulpr761/avx2/crypto_stream_aes256ctr.c | 15 - .../ntrulpr761/avx2/crypto_stream_aes256ctr.h | 15 - .../ntrulpr761/avx2/crypto_verify_1167.c | 36 - .../ntrulpr761/avx2/crypto_verify_1167.h | 8 - src/kem/ntru_prime/ntrulpr761/avx2/kem.c | 287 - src/kem/ntru_prime/ntrulpr761/avx2/params.h | 63 - .../ntrulpr761/clean/CMakeLists.txt | 24 - src/kem/ntru_prime/ntrulpr761/clean/api.h | 16 - .../clean/crypto_core_multsntrup761.c | 60 - .../clean/crypto_core_multsntrup761.h | 11 - .../ntrulpr761/clean/crypto_decode_256x16.c | 11 - .../ntrulpr761/clean/crypto_decode_256x16.h | 10 - .../ntrulpr761/clean/crypto_decode_256x2.c | 10 - .../ntrulpr761/clean/crypto_decode_256x2.h | 10 - .../ntrulpr761/clean/crypto_decode_761x1531.c | 211 - .../ntrulpr761/clean/crypto_decode_761x1531.h | 10 - .../ntrulpr761/clean/crypto_decode_761x3.c | 24 - .../ntrulpr761/clean/crypto_decode_761x3.h | 10 - .../clean/crypto_decode_761xint16.c | 15 - .../clean/crypto_decode_761xint16.h | 10 - .../clean/crypto_decode_761xint32.c | 20 - .../clean/crypto_decode_761xint32.h | 10 - .../ntrulpr761/clean/crypto_encode_256x16.c | 10 - .../ntrulpr761/clean/crypto_encode_256x16.h | 10 - .../ntrulpr761/clean/crypto_encode_256x2.c | 13 - .../ntrulpr761/clean/crypto_encode_256x2.h | 10 - .../ntrulpr761/clean/crypto_encode_761x1531.c | 119 - .../ntrulpr761/clean/crypto_encode_761x1531.h | 10 - .../clean/crypto_encode_761x1531round.c | 17 - .../clean/crypto_encode_761x1531round.h | 10 - .../ntrulpr761/clean/crypto_encode_761x3.c | 21 - .../ntrulpr761/clean/crypto_encode_761x3.h | 10 - .../clean/crypto_encode_761xint16.c | 13 - .../clean/crypto_encode_761xint16.h | 10 - .../ntrulpr761/clean/crypto_sort_int32.c | 84 - .../ntrulpr761/clean/crypto_sort_int32.h | 8 - .../ntrulpr761/clean/crypto_sort_uint32.c | 18 - .../ntrulpr761/clean/crypto_sort_uint32.h | 8 - .../clean/crypto_stream_aes256ctr.c | 15 - .../clean/crypto_stream_aes256ctr.h | 15 - .../ntrulpr761/clean/crypto_verify_1167.c | 13 - .../ntrulpr761/clean/crypto_verify_1167.h | 8 - src/kem/ntru_prime/ntrulpr761/clean/kem.c | 287 - src/kem/ntru_prime/ntrulpr761/clean/params.h | 65 - .../ntru_prime/ntrulpr857/avx2/CMakeLists.txt | 25 - src/kem/ntru_prime/ntrulpr857/avx2/api.h | 16 - .../avx2/crypto_core_multsntrup857.c | 421 - .../avx2/crypto_core_multsntrup857.h | 11 - .../avx2/crypto_core_multsntrup857_ntt.c | 927 - .../avx2/crypto_core_multsntrup857_ntt.h | 13 - .../ntrulpr857/avx2/crypto_decode_256x16.c | 11 - .../ntrulpr857/avx2/crypto_decode_256x16.h | 10 - .../ntrulpr857/avx2/crypto_decode_256x2.c | 27 - .../ntrulpr857/avx2/crypto_decode_256x2.h | 10 - .../ntrulpr857/avx2/crypto_decode_857x1723.c | 426 - .../ntrulpr857/avx2/crypto_decode_857x1723.h | 10 - .../ntrulpr857/avx2/crypto_decode_857x3.c | 65 - .../ntrulpr857/avx2/crypto_decode_857x3.h | 10 - .../ntrulpr857/avx2/crypto_decode_857xint16.c | 15 - .../ntrulpr857/avx2/crypto_decode_857xint16.h | 10 - .../ntrulpr857/avx2/crypto_decode_857xint32.c | 20 - .../ntrulpr857/avx2/crypto_decode_857xint32.h | 10 - .../ntrulpr857/avx2/crypto_encode_256x16.c | 10 - .../ntrulpr857/avx2/crypto_encode_256x16.h | 10 - .../ntrulpr857/avx2/crypto_encode_256x2.c | 88 - .../ntrulpr857/avx2/crypto_encode_256x2.h | 10 - .../ntrulpr857/avx2/crypto_encode_857x1723.c | 283 - .../ntrulpr857/avx2/crypto_encode_857x1723.h | 10 - .../avx2/crypto_encode_857x1723round.c | 285 - .../avx2/crypto_encode_857x1723round.h | 10 - .../ntrulpr857/avx2/crypto_encode_857x3.c | 64 - .../ntrulpr857/avx2/crypto_encode_857x3.h | 10 - .../ntrulpr857/avx2/crypto_encode_857xint16.c | 13 - .../ntrulpr857/avx2/crypto_encode_857xint16.h | 10 - .../ntrulpr857/avx2/crypto_sort_int32.c | 1215 -- .../ntrulpr857/avx2/crypto_sort_int32.h | 8 - .../ntrulpr857/avx2/crypto_sort_uint32.c | 18 - .../ntrulpr857/avx2/crypto_sort_uint32.h | 8 - .../ntrulpr857/avx2/crypto_stream_aes256ctr.c | 15 - .../ntrulpr857/avx2/crypto_stream_aes256ctr.h | 15 - .../ntrulpr857/avx2/crypto_verify_1312.c | 36 - .../ntrulpr857/avx2/crypto_verify_1312.h | 8 - src/kem/ntru_prime/ntrulpr857/avx2/kem.c | 287 - src/kem/ntru_prime/ntrulpr857/avx2/params.h | 63 - .../ntrulpr857/clean/CMakeLists.txt | 24 - src/kem/ntru_prime/ntrulpr857/clean/api.h | 16 - .../clean/crypto_core_multsntrup857.c | 60 - .../clean/crypto_core_multsntrup857.h | 11 - .../ntrulpr857/clean/crypto_decode_256x16.c | 11 - .../ntrulpr857/clean/crypto_decode_256x16.h | 10 - .../ntrulpr857/clean/crypto_decode_256x2.c | 10 - .../ntrulpr857/clean/crypto_decode_256x2.h | 10 - .../ntrulpr857/clean/crypto_decode_857x1723.c | 202 - .../ntrulpr857/clean/crypto_decode_857x1723.h | 10 - .../ntrulpr857/clean/crypto_decode_857x3.c | 24 - .../ntrulpr857/clean/crypto_decode_857x3.h | 10 - .../clean/crypto_decode_857xint16.c | 15 - .../clean/crypto_decode_857xint16.h | 10 - .../clean/crypto_decode_857xint32.c | 20 - .../clean/crypto_decode_857xint32.h | 10 - .../ntrulpr857/clean/crypto_encode_256x16.c | 10 - .../ntrulpr857/clean/crypto_encode_256x16.h | 10 - .../ntrulpr857/clean/crypto_encode_256x2.c | 13 - .../ntrulpr857/clean/crypto_encode_256x2.h | 10 - .../ntrulpr857/clean/crypto_encode_857x1723.c | 130 - .../ntrulpr857/clean/crypto_encode_857x1723.h | 10 - .../clean/crypto_encode_857x1723round.c | 17 - .../clean/crypto_encode_857x1723round.h | 10 - .../ntrulpr857/clean/crypto_encode_857x3.c | 21 - .../ntrulpr857/clean/crypto_encode_857x3.h | 10 - .../clean/crypto_encode_857xint16.c | 13 - .../clean/crypto_encode_857xint16.h | 10 - .../ntrulpr857/clean/crypto_sort_int32.c | 84 - .../ntrulpr857/clean/crypto_sort_int32.h | 8 - .../ntrulpr857/clean/crypto_sort_uint32.c | 18 - .../ntrulpr857/clean/crypto_sort_uint32.h | 8 - .../clean/crypto_stream_aes256ctr.c | 15 - .../clean/crypto_stream_aes256ctr.h | 15 - .../ntrulpr857/clean/crypto_verify_1312.c | 13 - .../ntrulpr857/clean/crypto_verify_1312.h | 8 - src/kem/ntru_prime/ntrulpr857/clean/kem.c | 287 - src/kem/ntru_prime/ntrulpr857/clean/params.h | 65 - src/kem/saber/firesaber/avx2/CMakeLists.txt | 13 - src/kem/saber/firesaber/avx2/SABER_indcpa.c | 125 - src/kem/saber/firesaber/avx2/SABER_indcpa.h | 13 - src/kem/saber/firesaber/avx2/SABER_params.h | 41 - src/kem/saber/firesaber/avx2/api.h | 18 - src/kem/saber/firesaber/avx2/cbd.c | 48 - src/kem/saber/firesaber/avx2/cbd.h | 16 - src/kem/saber/firesaber/avx2/kem.c | 77 - src/kem/saber/firesaber/avx2/pack_unpack.c | 151 - src/kem/saber/firesaber/avx2/pack_unpack.h | 28 - src/kem/saber/firesaber/avx2/poly.c | 62 - src/kem/saber/firesaber/avx2/poly.h | 38 - src/kem/saber/firesaber/avx2/poly_mul.c | 1496 -- src/kem/saber/firesaber/avx2/verify.c | 35 - src/kem/saber/firesaber/avx2/verify.h | 22 - src/kem/saber/firesaber/clean/CMakeLists.txt | 13 - src/kem/saber/firesaber/clean/SABER_indcpa.c | 113 - src/kem/saber/firesaber/clean/SABER_indcpa.h | 13 - src/kem/saber/firesaber/clean/SABER_params.h | 41 - src/kem/saber/firesaber/clean/api.h | 18 - src/kem/saber/firesaber/clean/cbd.c | 48 - src/kem/saber/firesaber/clean/cbd.h | 16 - src/kem/saber/firesaber/clean/kem.c | 77 - src/kem/saber/firesaber/clean/pack_unpack.c | 151 - src/kem/saber/firesaber/clean/pack_unpack.h | 28 - src/kem/saber/firesaber/clean/poly.c | 57 - src/kem/saber/firesaber/clean/poly.h | 23 - src/kem/saber/firesaber/clean/poly_mul.c | 248 - src/kem/saber/firesaber/clean/poly_mul.h | 3 - src/kem/saber/firesaber/clean/verify.c | 35 - src/kem/saber/firesaber/clean/verify.h | 22 - src/kem/saber/lightsaber/avx2/CMakeLists.txt | 13 - src/kem/saber/lightsaber/avx2/SABER_indcpa.c | 125 - src/kem/saber/lightsaber/avx2/SABER_indcpa.h | 13 - src/kem/saber/lightsaber/avx2/SABER_params.h | 41 - src/kem/saber/lightsaber/avx2/api.h | 18 - src/kem/saber/lightsaber/avx2/cbd.c | 48 - src/kem/saber/lightsaber/avx2/cbd.h | 16 - src/kem/saber/lightsaber/avx2/kem.c | 77 - src/kem/saber/lightsaber/avx2/pack_unpack.c | 155 - src/kem/saber/lightsaber/avx2/pack_unpack.h | 28 - src/kem/saber/lightsaber/avx2/poly.c | 62 - src/kem/saber/lightsaber/avx2/poly.h | 38 - src/kem/saber/lightsaber/avx2/poly_mul.c | 1496 -- src/kem/saber/lightsaber/avx2/verify.c | 35 - src/kem/saber/lightsaber/avx2/verify.h | 22 - src/kem/saber/lightsaber/clean/CMakeLists.txt | 14 - src/kem/saber/lightsaber/clean/SABER_indcpa.c | 113 - src/kem/saber/lightsaber/clean/SABER_indcpa.h | 13 - src/kem/saber/lightsaber/clean/SABER_params.h | 41 - src/kem/saber/lightsaber/clean/api.h | 18 - src/kem/saber/lightsaber/clean/cbd.c | 48 - src/kem/saber/lightsaber/clean/cbd.h | 16 - src/kem/saber/lightsaber/clean/kem.c | 77 - src/kem/saber/lightsaber/clean/pack_unpack.c | 155 - src/kem/saber/lightsaber/clean/pack_unpack.h | 28 - src/kem/saber/lightsaber/clean/poly.c | 57 - src/kem/saber/lightsaber/clean/poly.h | 23 - src/kem/saber/lightsaber/clean/poly_mul.c | 248 - src/kem/saber/lightsaber/clean/poly_mul.h | 3 - src/kem/saber/lightsaber/clean/verify.c | 35 - src/kem/saber/lightsaber/clean/verify.h | 22 - src/kem/saber/saber/avx2/CMakeLists.txt | 13 - src/kem/saber/saber/avx2/SABER_indcpa.c | 125 - src/kem/saber/saber/avx2/SABER_indcpa.h | 13 - src/kem/saber/saber/avx2/SABER_params.h | 41 - src/kem/saber/saber/avx2/api.h | 18 - src/kem/saber/saber/avx2/cbd.c | 48 - src/kem/saber/saber/avx2/cbd.h | 16 - src/kem/saber/saber/avx2/kem.c | 77 - src/kem/saber/saber/avx2/pack_unpack.c | 147 - src/kem/saber/saber/avx2/pack_unpack.h | 28 - src/kem/saber/saber/avx2/poly.c | 62 - src/kem/saber/saber/avx2/poly.h | 38 - src/kem/saber/saber/avx2/poly_mul.c | 1496 -- src/kem/saber/saber/avx2/verify.c | 35 - src/kem/saber/saber/avx2/verify.h | 22 - src/kem/saber/saber/clean/CMakeLists.txt | 13 - src/kem/saber/saber/clean/SABER_indcpa.c | 113 - src/kem/saber/saber/clean/SABER_indcpa.h | 13 - src/kem/saber/saber/clean/SABER_params.h | 41 - src/kem/saber/saber/clean/api.h | 18 - src/kem/saber/saber/clean/cbd.c | 48 - src/kem/saber/saber/clean/cbd.h | 16 - src/kem/saber/saber/clean/kem.c | 77 - src/kem/saber/saber/clean/pack_unpack.c | 147 - src/kem/saber/saber/clean/pack_unpack.h | 28 - src/kem/saber/saber/clean/poly.c | 57 - src/kem/saber/saber/clean/poly.h | 23 - src/kem/saber/saber/clean/poly_mul.c | 248 - src/kem/saber/saber/clean/poly_mul.h | 3 - src/kem/saber/saber/clean/verify.c | 35 - src/kem/saber/saber/clean/verify.h | 22 - test/katrunner/src/main.rs | 14 - 585 files changed, 16 insertions(+), 274457 deletions(-) delete mode 100644 src/kem/frodo/frodokem1344shake/clean/CMakeLists.txt delete mode 100644 src/kem/frodo/frodokem1344shake/clean/api.h delete mode 100644 src/kem/frodo/frodokem1344shake/clean/common.h delete mode 100644 src/kem/frodo/frodokem1344shake/clean/kem.c delete mode 100644 src/kem/frodo/frodokem1344shake/clean/matrix_shake.c delete mode 100644 src/kem/frodo/frodokem1344shake/clean/noise.c delete mode 100644 src/kem/frodo/frodokem1344shake/clean/params.h delete mode 100644 src/kem/frodo/frodokem1344shake/clean/util.c delete mode 100644 src/kem/frodo/frodokem640shake/clean/CMakeLists.txt delete mode 100644 src/kem/frodo/frodokem640shake/clean/api.h delete mode 100644 src/kem/frodo/frodokem640shake/clean/common.h delete mode 100644 src/kem/frodo/frodokem640shake/clean/kem.c delete mode 100644 src/kem/frodo/frodokem640shake/clean/matrix_shake.c delete mode 100644 src/kem/frodo/frodokem640shake/clean/noise.c delete mode 100644 src/kem/frodo/frodokem640shake/clean/params.h delete mode 100644 src/kem/frodo/frodokem640shake/clean/util.c delete mode 100644 src/kem/frodo/frodokem976shake/clean/CMakeLists.txt delete mode 100644 src/kem/frodo/frodokem976shake/clean/api.h delete mode 100644 src/kem/frodo/frodokem976shake/clean/common.h delete mode 100644 src/kem/frodo/frodokem976shake/clean/kem.c delete mode 100644 src/kem/frodo/frodokem976shake/clean/matrix_shake.c delete mode 100644 src/kem/frodo/frodokem976shake/clean/noise.c delete mode 100644 src/kem/frodo/frodokem976shake/clean/params.h delete mode 100644 src/kem/frodo/frodokem976shake/clean/util.c delete mode 100644 src/kem/ntru/ntruhps2048509/avx2/CMakeLists.txt delete mode 100644 src/kem/ntru/ntruhps2048509/avx2/api.h delete mode 100644 src/kem/ntru/ntruhps2048509/avx2/cmov.c delete mode 100644 src/kem/ntru/ntruhps2048509/avx2/cmov.h delete mode 100644 src/kem/ntru/ntruhps2048509/avx2/crypto_sort_int32.c delete mode 100644 src/kem/ntru/ntruhps2048509/avx2/crypto_sort_int32.h delete mode 100644 src/kem/ntru/ntruhps2048509/avx2/kem.c delete mode 100644 src/kem/ntru/ntruhps2048509/avx2/owcpa.c delete mode 100644 src/kem/ntru/ntruhps2048509/avx2/owcpa.h delete mode 100644 src/kem/ntru/ntruhps2048509/avx2/pack3.c delete mode 100644 src/kem/ntru/ntruhps2048509/avx2/packq.c delete mode 100644 src/kem/ntru/ntruhps2048509/avx2/params.h delete mode 100644 src/kem/ntru/ntruhps2048509/avx2/poly.c delete mode 100644 src/kem/ntru/ntruhps2048509/avx2/poly.h delete mode 100644 src/kem/ntru/ntruhps2048509/avx2/poly_lift.c delete mode 100644 src/kem/ntru/ntruhps2048509/avx2/poly_mod_3_Phi_n.s delete mode 100644 src/kem/ntru/ntruhps2048509/avx2/poly_mod_q_Phi_n.s delete mode 100644 src/kem/ntru/ntruhps2048509/avx2/poly_r2_inv.c delete mode 100644 src/kem/ntru/ntruhps2048509/avx2/poly_r2_inv.h delete mode 100644 src/kem/ntru/ntruhps2048509/avx2/poly_r2_mul.s delete mode 100644 src/kem/ntru/ntruhps2048509/avx2/poly_rq_mul.s delete mode 100644 src/kem/ntru/ntruhps2048509/avx2/poly_rq_to_s3.s delete mode 100644 src/kem/ntru/ntruhps2048509/avx2/poly_s3_inv.c delete mode 100644 src/kem/ntru/ntruhps2048509/avx2/sample.c delete mode 100644 src/kem/ntru/ntruhps2048509/avx2/sample.h delete mode 100644 src/kem/ntru/ntruhps2048509/avx2/sample_iid.c delete mode 100644 src/kem/ntru/ntruhps2048509/avx2/square_126_509_shufbytes.s delete mode 100644 src/kem/ntru/ntruhps2048509/avx2/square_15_509_shufbytes.s delete mode 100644 src/kem/ntru/ntruhps2048509/avx2/square_1_509_patience.s delete mode 100644 src/kem/ntru/ntruhps2048509/avx2/square_252_509_shufbytes.s delete mode 100644 src/kem/ntru/ntruhps2048509/avx2/square_30_509_shufbytes.s delete mode 100644 src/kem/ntru/ntruhps2048509/avx2/square_3_509_patience.s delete mode 100644 src/kem/ntru/ntruhps2048509/avx2/square_63_509_shufbytes.s delete mode 100644 src/kem/ntru/ntruhps2048509/avx2/square_6_509_patience.s delete mode 100644 src/kem/ntru/ntruhps2048509/avx2/vec32_sample_iid.s delete mode 100644 src/kem/ntru/ntruhps2048509/clean/CMakeLists.txt delete mode 100644 src/kem/ntru/ntruhps2048509/clean/api.h delete mode 100644 src/kem/ntru/ntruhps2048509/clean/cmov.c delete mode 100644 src/kem/ntru/ntruhps2048509/clean/cmov.h delete mode 100644 src/kem/ntru/ntruhps2048509/clean/crypto_sort_int32.c delete mode 100644 src/kem/ntru/ntruhps2048509/clean/crypto_sort_int32.h delete mode 100644 src/kem/ntru/ntruhps2048509/clean/kem.c delete mode 100644 src/kem/ntru/ntruhps2048509/clean/owcpa.c delete mode 100644 src/kem/ntru/ntruhps2048509/clean/owcpa.h delete mode 100644 src/kem/ntru/ntruhps2048509/clean/pack3.c delete mode 100644 src/kem/ntru/ntruhps2048509/clean/packq.c delete mode 100644 src/kem/ntru/ntruhps2048509/clean/params.h delete mode 100644 src/kem/ntru/ntruhps2048509/clean/poly.c delete mode 100644 src/kem/ntru/ntruhps2048509/clean/poly.h delete mode 100644 src/kem/ntru/ntruhps2048509/clean/poly_lift.c delete mode 100644 src/kem/ntru/ntruhps2048509/clean/poly_mod.c delete mode 100644 src/kem/ntru/ntruhps2048509/clean/poly_r2_inv.c delete mode 100644 src/kem/ntru/ntruhps2048509/clean/poly_rq_mul.c delete mode 100644 src/kem/ntru/ntruhps2048509/clean/poly_s3_inv.c delete mode 100644 src/kem/ntru/ntruhps2048509/clean/sample.c delete mode 100644 src/kem/ntru/ntruhps2048509/clean/sample.h delete mode 100644 src/kem/ntru/ntruhps2048509/clean/sample_iid.c delete mode 100644 src/kem/ntru/ntruhps2048677/avx2/CMakeLists.txt delete mode 100644 src/kem/ntru/ntruhps2048677/avx2/api.h delete mode 100644 src/kem/ntru/ntruhps2048677/avx2/cmov.c delete mode 100644 src/kem/ntru/ntruhps2048677/avx2/cmov.h delete mode 100644 src/kem/ntru/ntruhps2048677/avx2/crypto_sort_int32.c delete mode 100644 src/kem/ntru/ntruhps2048677/avx2/crypto_sort_int32.h delete mode 100644 src/kem/ntru/ntruhps2048677/avx2/kem.c delete mode 100644 src/kem/ntru/ntruhps2048677/avx2/owcpa.c delete mode 100644 src/kem/ntru/ntruhps2048677/avx2/owcpa.h delete mode 100644 src/kem/ntru/ntruhps2048677/avx2/pack3.c delete mode 100644 src/kem/ntru/ntruhps2048677/avx2/packq.c delete mode 100644 src/kem/ntru/ntruhps2048677/avx2/params.h delete mode 100644 src/kem/ntru/ntruhps2048677/avx2/poly.c delete mode 100644 src/kem/ntru/ntruhps2048677/avx2/poly.h delete mode 100644 src/kem/ntru/ntruhps2048677/avx2/poly_lift.c delete mode 100644 src/kem/ntru/ntruhps2048677/avx2/poly_mod_3_Phi_n.s delete mode 100644 src/kem/ntru/ntruhps2048677/avx2/poly_mod_q_Phi_n.s delete mode 100644 src/kem/ntru/ntruhps2048677/avx2/poly_r2_inv.c delete mode 100644 src/kem/ntru/ntruhps2048677/avx2/poly_r2_inv.h delete mode 100644 src/kem/ntru/ntruhps2048677/avx2/poly_r2_mul.s delete mode 100644 src/kem/ntru/ntruhps2048677/avx2/poly_rq_mul.s delete mode 100644 src/kem/ntru/ntruhps2048677/avx2/poly_rq_to_s3.s delete mode 100644 src/kem/ntru/ntruhps2048677/avx2/poly_s3_inv.c delete mode 100644 src/kem/ntru/ntruhps2048677/avx2/sample.c delete mode 100644 src/kem/ntru/ntruhps2048677/avx2/sample.h delete mode 100644 src/kem/ntru/ntruhps2048677/avx2/sample_iid.c delete mode 100644 src/kem/ntru/ntruhps2048677/avx2/square_10_677_shufbytes.s delete mode 100644 src/kem/ntru/ntruhps2048677/avx2/square_168_677_shufbytes.s delete mode 100644 src/kem/ntru/ntruhps2048677/avx2/square_1_677_patience.s delete mode 100644 src/kem/ntru/ntruhps2048677/avx2/square_21_677_shufbytes.s delete mode 100644 src/kem/ntru/ntruhps2048677/avx2/square_2_677_patience.s delete mode 100644 src/kem/ntru/ntruhps2048677/avx2/square_336_677_shufbytes.s delete mode 100644 src/kem/ntru/ntruhps2048677/avx2/square_3_677_patience.s delete mode 100644 src/kem/ntru/ntruhps2048677/avx2/square_42_677_shufbytes.s delete mode 100644 src/kem/ntru/ntruhps2048677/avx2/square_5_677_patience.s delete mode 100644 src/kem/ntru/ntruhps2048677/avx2/square_84_677_shufbytes.s delete mode 100644 src/kem/ntru/ntruhps2048677/avx2/vec32_sample_iid.s delete mode 100644 src/kem/ntru/ntruhps2048677/clean/CMakeLists.txt delete mode 100644 src/kem/ntru/ntruhps2048677/clean/api.h delete mode 100644 src/kem/ntru/ntruhps2048677/clean/cmov.c delete mode 100644 src/kem/ntru/ntruhps2048677/clean/cmov.h delete mode 100644 src/kem/ntru/ntruhps2048677/clean/crypto_sort_int32.c delete mode 100644 src/kem/ntru/ntruhps2048677/clean/crypto_sort_int32.h delete mode 100644 src/kem/ntru/ntruhps2048677/clean/kem.c delete mode 100644 src/kem/ntru/ntruhps2048677/clean/owcpa.c delete mode 100644 src/kem/ntru/ntruhps2048677/clean/owcpa.h delete mode 100644 src/kem/ntru/ntruhps2048677/clean/pack3.c delete mode 100644 src/kem/ntru/ntruhps2048677/clean/packq.c delete mode 100644 src/kem/ntru/ntruhps2048677/clean/params.h delete mode 100644 src/kem/ntru/ntruhps2048677/clean/poly.c delete mode 100644 src/kem/ntru/ntruhps2048677/clean/poly.h delete mode 100644 src/kem/ntru/ntruhps2048677/clean/poly_lift.c delete mode 100644 src/kem/ntru/ntruhps2048677/clean/poly_mod.c delete mode 100644 src/kem/ntru/ntruhps2048677/clean/poly_r2_inv.c delete mode 100644 src/kem/ntru/ntruhps2048677/clean/poly_rq_mul.c delete mode 100644 src/kem/ntru/ntruhps2048677/clean/poly_s3_inv.c delete mode 100644 src/kem/ntru/ntruhps2048677/clean/sample.c delete mode 100644 src/kem/ntru/ntruhps2048677/clean/sample.h delete mode 100644 src/kem/ntru/ntruhps2048677/clean/sample_iid.c delete mode 100644 src/kem/ntru/ntruhps4096821/avx2/CMakeLists.txt delete mode 100644 src/kem/ntru/ntruhps4096821/avx2/api.h delete mode 100644 src/kem/ntru/ntruhps4096821/avx2/cmov.c delete mode 100644 src/kem/ntru/ntruhps4096821/avx2/cmov.h delete mode 100644 src/kem/ntru/ntruhps4096821/avx2/crypto_sort_int32.c delete mode 100644 src/kem/ntru/ntruhps4096821/avx2/crypto_sort_int32.h delete mode 100644 src/kem/ntru/ntruhps4096821/avx2/kem.c delete mode 100644 src/kem/ntru/ntruhps4096821/avx2/owcpa.c delete mode 100644 src/kem/ntru/ntruhps4096821/avx2/owcpa.h delete mode 100644 src/kem/ntru/ntruhps4096821/avx2/pack3.c delete mode 100644 src/kem/ntru/ntruhps4096821/avx2/packq.c delete mode 100644 src/kem/ntru/ntruhps4096821/avx2/params.h delete mode 100644 src/kem/ntru/ntruhps4096821/avx2/poly.c delete mode 100644 src/kem/ntru/ntruhps4096821/avx2/poly.h delete mode 100644 src/kem/ntru/ntruhps4096821/avx2/poly_lift.c delete mode 100644 src/kem/ntru/ntruhps4096821/avx2/poly_mod_3_Phi_n.s delete mode 100644 src/kem/ntru/ntruhps4096821/avx2/poly_mod_q_Phi_n.s delete mode 100644 src/kem/ntru/ntruhps4096821/avx2/poly_r2_inv.c delete mode 100644 src/kem/ntru/ntruhps4096821/avx2/poly_r2_inv.h delete mode 100644 src/kem/ntru/ntruhps4096821/avx2/poly_r2_mul.s delete mode 100644 src/kem/ntru/ntruhps4096821/avx2/poly_rq_mul.s delete mode 100644 src/kem/ntru/ntruhps4096821/avx2/poly_rq_to_s3.s delete mode 100644 src/kem/ntru/ntruhps4096821/avx2/poly_s3_inv.c delete mode 100644 src/kem/ntru/ntruhps4096821/avx2/sample.c delete mode 100644 src/kem/ntru/ntruhps4096821/avx2/sample.h delete mode 100644 src/kem/ntru/ntruhps4096821/avx2/sample_iid.c delete mode 100644 src/kem/ntru/ntruhps4096821/avx2/square_102_821_shufbytes.s delete mode 100644 src/kem/ntru/ntruhps4096821/avx2/square_12_821_shufbytes.s delete mode 100644 src/kem/ntru/ntruhps4096821/avx2/square_1_821_patience.s delete mode 100644 src/kem/ntru/ntruhps4096821/avx2/square_204_821_shufbytes.s delete mode 100644 src/kem/ntru/ntruhps4096821/avx2/square_24_821_shufbytes.s delete mode 100644 src/kem/ntru/ntruhps4096821/avx2/square_3_821_patience.s delete mode 100644 src/kem/ntru/ntruhps4096821/avx2/square_408_821_shufbytes.s delete mode 100644 src/kem/ntru/ntruhps4096821/avx2/square_51_821_shufbytes.s delete mode 100644 src/kem/ntru/ntruhps4096821/avx2/square_6_821_patience.s delete mode 100644 src/kem/ntru/ntruhps4096821/avx2/vec32_sample_iid.s delete mode 100644 src/kem/ntru/ntruhps4096821/clean/CMakeLists.txt delete mode 100644 src/kem/ntru/ntruhps4096821/clean/api.h delete mode 100644 src/kem/ntru/ntruhps4096821/clean/cmov.c delete mode 100644 src/kem/ntru/ntruhps4096821/clean/cmov.h delete mode 100644 src/kem/ntru/ntruhps4096821/clean/crypto_sort_int32.c delete mode 100644 src/kem/ntru/ntruhps4096821/clean/crypto_sort_int32.h delete mode 100644 src/kem/ntru/ntruhps4096821/clean/kem.c delete mode 100644 src/kem/ntru/ntruhps4096821/clean/owcpa.c delete mode 100644 src/kem/ntru/ntruhps4096821/clean/owcpa.h delete mode 100644 src/kem/ntru/ntruhps4096821/clean/pack3.c delete mode 100644 src/kem/ntru/ntruhps4096821/clean/packq.c delete mode 100644 src/kem/ntru/ntruhps4096821/clean/params.h delete mode 100644 src/kem/ntru/ntruhps4096821/clean/poly.c delete mode 100644 src/kem/ntru/ntruhps4096821/clean/poly.h delete mode 100644 src/kem/ntru/ntruhps4096821/clean/poly_lift.c delete mode 100644 src/kem/ntru/ntruhps4096821/clean/poly_mod.c delete mode 100644 src/kem/ntru/ntruhps4096821/clean/poly_r2_inv.c delete mode 100644 src/kem/ntru/ntruhps4096821/clean/poly_rq_mul.c delete mode 100644 src/kem/ntru/ntruhps4096821/clean/poly_s3_inv.c delete mode 100644 src/kem/ntru/ntruhps4096821/clean/sample.c delete mode 100644 src/kem/ntru/ntruhps4096821/clean/sample.h delete mode 100644 src/kem/ntru/ntruhps4096821/clean/sample_iid.c delete mode 100644 src/kem/ntru/ntruhrss701/avx2/CMakeLists.txt delete mode 100644 src/kem/ntru/ntruhrss701/avx2/api.h delete mode 100644 src/kem/ntru/ntruhrss701/avx2/cmov.c delete mode 100644 src/kem/ntru/ntruhrss701/avx2/cmov.h delete mode 100644 src/kem/ntru/ntruhrss701/avx2/kem.c delete mode 100644 src/kem/ntru/ntruhrss701/avx2/owcpa.c delete mode 100644 src/kem/ntru/ntruhrss701/avx2/owcpa.h delete mode 100644 src/kem/ntru/ntruhrss701/avx2/pack3.c delete mode 100644 src/kem/ntru/ntruhrss701/avx2/packq.c delete mode 100644 src/kem/ntru/ntruhrss701/avx2/params.h delete mode 100644 src/kem/ntru/ntruhrss701/avx2/poly.c delete mode 100644 src/kem/ntru/ntruhrss701/avx2/poly.h delete mode 100644 src/kem/ntru/ntruhrss701/avx2/poly_lift.s delete mode 100644 src/kem/ntru/ntruhrss701/avx2/poly_mod_3_Phi_n.s delete mode 100644 src/kem/ntru/ntruhrss701/avx2/poly_mod_q_Phi_n.s delete mode 100644 src/kem/ntru/ntruhrss701/avx2/poly_r2_inv.c delete mode 100644 src/kem/ntru/ntruhrss701/avx2/poly_r2_inv.h delete mode 100644 src/kem/ntru/ntruhrss701/avx2/poly_r2_mul.s delete mode 100644 src/kem/ntru/ntruhrss701/avx2/poly_rq_mul.s delete mode 100644 src/kem/ntru/ntruhrss701/avx2/poly_rq_to_s3.s delete mode 100644 src/kem/ntru/ntruhrss701/avx2/poly_s3_inv.c delete mode 100644 src/kem/ntru/ntruhrss701/avx2/sample.c delete mode 100644 src/kem/ntru/ntruhrss701/avx2/sample.h delete mode 100644 src/kem/ntru/ntruhrss701/avx2/sample_iid.c delete mode 100644 src/kem/ntru/ntruhrss701/avx2/square_12_701_shufbytes.s delete mode 100644 src/kem/ntru/ntruhrss701/avx2/square_15_701_shufbytes.s delete mode 100644 src/kem/ntru/ntruhrss701/avx2/square_168_701_shufbytes.s delete mode 100644 src/kem/ntru/ntruhrss701/avx2/square_1_701_patience.s delete mode 100644 src/kem/ntru/ntruhrss701/avx2/square_27_701_shufbytes.s delete mode 100644 src/kem/ntru/ntruhrss701/avx2/square_336_701_shufbytes.s delete mode 100644 src/kem/ntru/ntruhrss701/avx2/square_3_701_patience.s delete mode 100644 src/kem/ntru/ntruhrss701/avx2/square_42_701_shufbytes.s delete mode 100644 src/kem/ntru/ntruhrss701/avx2/square_6_701_patience.s delete mode 100644 src/kem/ntru/ntruhrss701/avx2/square_84_701_shufbytes.s delete mode 100644 src/kem/ntru/ntruhrss701/avx2/vec32_sample_iid.s delete mode 100644 src/kem/ntru/ntruhrss701/clean/CMakeLists.txt delete mode 100644 src/kem/ntru/ntruhrss701/clean/api.h delete mode 100644 src/kem/ntru/ntruhrss701/clean/cmov.c delete mode 100644 src/kem/ntru/ntruhrss701/clean/cmov.h delete mode 100644 src/kem/ntru/ntruhrss701/clean/kem.c delete mode 100644 src/kem/ntru/ntruhrss701/clean/owcpa.c delete mode 100644 src/kem/ntru/ntruhrss701/clean/owcpa.h delete mode 100644 src/kem/ntru/ntruhrss701/clean/pack3.c delete mode 100644 src/kem/ntru/ntruhrss701/clean/packq.c delete mode 100644 src/kem/ntru/ntruhrss701/clean/params.h delete mode 100644 src/kem/ntru/ntruhrss701/clean/poly.c delete mode 100644 src/kem/ntru/ntruhrss701/clean/poly.h delete mode 100644 src/kem/ntru/ntruhrss701/clean/poly_lift.c delete mode 100644 src/kem/ntru/ntruhrss701/clean/poly_mod.c delete mode 100644 src/kem/ntru/ntruhrss701/clean/poly_r2_inv.c delete mode 100644 src/kem/ntru/ntruhrss701/clean/poly_rq_mul.c delete mode 100644 src/kem/ntru/ntruhrss701/clean/poly_s3_inv.c delete mode 100644 src/kem/ntru/ntruhrss701/clean/sample.c delete mode 100644 src/kem/ntru/ntruhrss701/clean/sample.h delete mode 100644 src/kem/ntru/ntruhrss701/clean/sample_iid.c delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/CMakeLists.txt delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/api.h delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/crypto_core_multsntrup653.c delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/crypto_core_multsntrup653.h delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/crypto_core_multsntrup653_ntt.c delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/crypto_core_multsntrup653_ntt.h delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_256x16.c delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_256x16.h delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_256x2.c delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_256x2.h delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_653x1541.c delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_653x1541.h delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_653x3.c delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_653x3.h delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_653xint16.c delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_653xint16.h delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_653xint32.c delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_653xint32.h delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_256x16.c delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_256x16.h delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_256x2.c delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_256x2.h delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_653x1541.c delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_653x1541.h delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_653x1541round.c delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_653x1541round.h delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_653x3.c delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_653x3.h delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_653xint16.c delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_653xint16.h delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/crypto_sort_int32.c delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/crypto_sort_int32.h delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/crypto_sort_uint32.c delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/crypto_sort_uint32.h delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/crypto_stream_aes256ctr.c delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/crypto_stream_aes256ctr.h delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/crypto_verify_1025.c delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/crypto_verify_1025.h delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/kem.c delete mode 100644 src/kem/ntru_prime/ntrulpr653/avx2/params.h delete mode 100644 src/kem/ntru_prime/ntrulpr653/clean/CMakeLists.txt delete mode 100644 src/kem/ntru_prime/ntrulpr653/clean/api.h delete mode 100644 src/kem/ntru_prime/ntrulpr653/clean/crypto_core_multsntrup653.c delete mode 100644 src/kem/ntru_prime/ntrulpr653/clean/crypto_core_multsntrup653.h delete mode 100644 src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_256x16.c delete mode 100644 src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_256x16.h delete mode 100644 src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_256x2.c delete mode 100644 src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_256x2.h delete mode 100644 src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_653x1541.c delete mode 100644 src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_653x1541.h delete mode 100644 src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_653x3.c delete mode 100644 src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_653x3.h delete mode 100644 src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_653xint16.c delete mode 100644 src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_653xint16.h delete mode 100644 src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_653xint32.c delete mode 100644 src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_653xint32.h delete mode 100644 src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_256x16.c delete mode 100644 src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_256x16.h delete mode 100644 src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_256x2.c delete mode 100644 src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_256x2.h delete mode 100644 src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_653x1541.c delete mode 100644 src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_653x1541.h delete mode 100644 src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_653x1541round.c delete mode 100644 src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_653x1541round.h delete mode 100644 src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_653x3.c delete mode 100644 src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_653x3.h delete mode 100644 src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_653xint16.c delete mode 100644 src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_653xint16.h delete mode 100644 src/kem/ntru_prime/ntrulpr653/clean/crypto_sort_int32.c delete mode 100644 src/kem/ntru_prime/ntrulpr653/clean/crypto_sort_int32.h delete mode 100644 src/kem/ntru_prime/ntrulpr653/clean/crypto_sort_uint32.c delete mode 100644 src/kem/ntru_prime/ntrulpr653/clean/crypto_sort_uint32.h delete mode 100644 src/kem/ntru_prime/ntrulpr653/clean/crypto_stream_aes256ctr.c delete mode 100644 src/kem/ntru_prime/ntrulpr653/clean/crypto_stream_aes256ctr.h delete mode 100644 src/kem/ntru_prime/ntrulpr653/clean/crypto_verify_1025.c delete mode 100644 src/kem/ntru_prime/ntrulpr653/clean/crypto_verify_1025.h delete mode 100644 src/kem/ntru_prime/ntrulpr653/clean/kem.c delete mode 100644 src/kem/ntru_prime/ntrulpr653/clean/params.h delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/CMakeLists.txt delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/api.h delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/crypto_core_multsntrup761.c delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/crypto_core_multsntrup761.h delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/crypto_core_multsntrup761_ntt.c delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/crypto_core_multsntrup761_ntt.h delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_256x16.c delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_256x16.h delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_256x2.c delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_256x2.h delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_761x1531.c delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_761x1531.h delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_761x3.c delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_761x3.h delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_761xint16.c delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_761xint16.h delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_761xint32.c delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_761xint32.h delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_256x16.c delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_256x16.h delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_256x2.c delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_256x2.h delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_761x1531.c delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_761x1531.h delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_761x1531round.c delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_761x1531round.h delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_761x3.c delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_761x3.h delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_761xint16.c delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_761xint16.h delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/crypto_sort_int32.c delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/crypto_sort_int32.h delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/crypto_sort_uint32.c delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/crypto_sort_uint32.h delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/crypto_stream_aes256ctr.c delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/crypto_stream_aes256ctr.h delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/crypto_verify_1167.c delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/crypto_verify_1167.h delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/kem.c delete mode 100644 src/kem/ntru_prime/ntrulpr761/avx2/params.h delete mode 100644 src/kem/ntru_prime/ntrulpr761/clean/CMakeLists.txt delete mode 100644 src/kem/ntru_prime/ntrulpr761/clean/api.h delete mode 100644 src/kem/ntru_prime/ntrulpr761/clean/crypto_core_multsntrup761.c delete mode 100644 src/kem/ntru_prime/ntrulpr761/clean/crypto_core_multsntrup761.h delete mode 100644 src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_256x16.c delete mode 100644 src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_256x16.h delete mode 100644 src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_256x2.c delete mode 100644 src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_256x2.h delete mode 100644 src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_761x1531.c delete mode 100644 src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_761x1531.h delete mode 100644 src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_761x3.c delete mode 100644 src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_761x3.h delete mode 100644 src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_761xint16.c delete mode 100644 src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_761xint16.h delete mode 100644 src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_761xint32.c delete mode 100644 src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_761xint32.h delete mode 100644 src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_256x16.c delete mode 100644 src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_256x16.h delete mode 100644 src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_256x2.c delete mode 100644 src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_256x2.h delete mode 100644 src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_761x1531.c delete mode 100644 src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_761x1531.h delete mode 100644 src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_761x1531round.c delete mode 100644 src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_761x1531round.h delete mode 100644 src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_761x3.c delete mode 100644 src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_761x3.h delete mode 100644 src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_761xint16.c delete mode 100644 src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_761xint16.h delete mode 100644 src/kem/ntru_prime/ntrulpr761/clean/crypto_sort_int32.c delete mode 100644 src/kem/ntru_prime/ntrulpr761/clean/crypto_sort_int32.h delete mode 100644 src/kem/ntru_prime/ntrulpr761/clean/crypto_sort_uint32.c delete mode 100644 src/kem/ntru_prime/ntrulpr761/clean/crypto_sort_uint32.h delete mode 100644 src/kem/ntru_prime/ntrulpr761/clean/crypto_stream_aes256ctr.c delete mode 100644 src/kem/ntru_prime/ntrulpr761/clean/crypto_stream_aes256ctr.h delete mode 100644 src/kem/ntru_prime/ntrulpr761/clean/crypto_verify_1167.c delete mode 100644 src/kem/ntru_prime/ntrulpr761/clean/crypto_verify_1167.h delete mode 100644 src/kem/ntru_prime/ntrulpr761/clean/kem.c delete mode 100644 src/kem/ntru_prime/ntrulpr761/clean/params.h delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/CMakeLists.txt delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/api.h delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/crypto_core_multsntrup857.c delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/crypto_core_multsntrup857.h delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/crypto_core_multsntrup857_ntt.c delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/crypto_core_multsntrup857_ntt.h delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_256x16.c delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_256x16.h delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_256x2.c delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_256x2.h delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_857x1723.c delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_857x1723.h delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_857x3.c delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_857x3.h delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_857xint16.c delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_857xint16.h delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_857xint32.c delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_857xint32.h delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_256x16.c delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_256x16.h delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_256x2.c delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_256x2.h delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_857x1723.c delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_857x1723.h delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_857x1723round.c delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_857x1723round.h delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_857x3.c delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_857x3.h delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_857xint16.c delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_857xint16.h delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/crypto_sort_int32.c delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/crypto_sort_int32.h delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/crypto_sort_uint32.c delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/crypto_sort_uint32.h delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/crypto_stream_aes256ctr.c delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/crypto_stream_aes256ctr.h delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/crypto_verify_1312.c delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/crypto_verify_1312.h delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/kem.c delete mode 100644 src/kem/ntru_prime/ntrulpr857/avx2/params.h delete mode 100644 src/kem/ntru_prime/ntrulpr857/clean/CMakeLists.txt delete mode 100644 src/kem/ntru_prime/ntrulpr857/clean/api.h delete mode 100644 src/kem/ntru_prime/ntrulpr857/clean/crypto_core_multsntrup857.c delete mode 100644 src/kem/ntru_prime/ntrulpr857/clean/crypto_core_multsntrup857.h delete mode 100644 src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_256x16.c delete mode 100644 src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_256x16.h delete mode 100644 src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_256x2.c delete mode 100644 src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_256x2.h delete mode 100644 src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_857x1723.c delete mode 100644 src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_857x1723.h delete mode 100644 src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_857x3.c delete mode 100644 src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_857x3.h delete mode 100644 src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_857xint16.c delete mode 100644 src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_857xint16.h delete mode 100644 src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_857xint32.c delete mode 100644 src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_857xint32.h delete mode 100644 src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_256x16.c delete mode 100644 src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_256x16.h delete mode 100644 src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_256x2.c delete mode 100644 src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_256x2.h delete mode 100644 src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_857x1723.c delete mode 100644 src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_857x1723.h delete mode 100644 src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_857x1723round.c delete mode 100644 src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_857x1723round.h delete mode 100644 src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_857x3.c delete mode 100644 src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_857x3.h delete mode 100644 src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_857xint16.c delete mode 100644 src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_857xint16.h delete mode 100644 src/kem/ntru_prime/ntrulpr857/clean/crypto_sort_int32.c delete mode 100644 src/kem/ntru_prime/ntrulpr857/clean/crypto_sort_int32.h delete mode 100644 src/kem/ntru_prime/ntrulpr857/clean/crypto_sort_uint32.c delete mode 100644 src/kem/ntru_prime/ntrulpr857/clean/crypto_sort_uint32.h delete mode 100644 src/kem/ntru_prime/ntrulpr857/clean/crypto_stream_aes256ctr.c delete mode 100644 src/kem/ntru_prime/ntrulpr857/clean/crypto_stream_aes256ctr.h delete mode 100644 src/kem/ntru_prime/ntrulpr857/clean/crypto_verify_1312.c delete mode 100644 src/kem/ntru_prime/ntrulpr857/clean/crypto_verify_1312.h delete mode 100644 src/kem/ntru_prime/ntrulpr857/clean/kem.c delete mode 100644 src/kem/ntru_prime/ntrulpr857/clean/params.h delete mode 100644 src/kem/saber/firesaber/avx2/CMakeLists.txt delete mode 100644 src/kem/saber/firesaber/avx2/SABER_indcpa.c delete mode 100644 src/kem/saber/firesaber/avx2/SABER_indcpa.h delete mode 100644 src/kem/saber/firesaber/avx2/SABER_params.h delete mode 100644 src/kem/saber/firesaber/avx2/api.h delete mode 100644 src/kem/saber/firesaber/avx2/cbd.c delete mode 100644 src/kem/saber/firesaber/avx2/cbd.h delete mode 100644 src/kem/saber/firesaber/avx2/kem.c delete mode 100644 src/kem/saber/firesaber/avx2/pack_unpack.c delete mode 100644 src/kem/saber/firesaber/avx2/pack_unpack.h delete mode 100644 src/kem/saber/firesaber/avx2/poly.c delete mode 100644 src/kem/saber/firesaber/avx2/poly.h delete mode 100644 src/kem/saber/firesaber/avx2/poly_mul.c delete mode 100644 src/kem/saber/firesaber/avx2/verify.c delete mode 100644 src/kem/saber/firesaber/avx2/verify.h delete mode 100644 src/kem/saber/firesaber/clean/CMakeLists.txt delete mode 100644 src/kem/saber/firesaber/clean/SABER_indcpa.c delete mode 100644 src/kem/saber/firesaber/clean/SABER_indcpa.h delete mode 100644 src/kem/saber/firesaber/clean/SABER_params.h delete mode 100644 src/kem/saber/firesaber/clean/api.h delete mode 100644 src/kem/saber/firesaber/clean/cbd.c delete mode 100644 src/kem/saber/firesaber/clean/cbd.h delete mode 100644 src/kem/saber/firesaber/clean/kem.c delete mode 100644 src/kem/saber/firesaber/clean/pack_unpack.c delete mode 100644 src/kem/saber/firesaber/clean/pack_unpack.h delete mode 100644 src/kem/saber/firesaber/clean/poly.c delete mode 100644 src/kem/saber/firesaber/clean/poly.h delete mode 100644 src/kem/saber/firesaber/clean/poly_mul.c delete mode 100644 src/kem/saber/firesaber/clean/poly_mul.h delete mode 100644 src/kem/saber/firesaber/clean/verify.c delete mode 100644 src/kem/saber/firesaber/clean/verify.h delete mode 100644 src/kem/saber/lightsaber/avx2/CMakeLists.txt delete mode 100644 src/kem/saber/lightsaber/avx2/SABER_indcpa.c delete mode 100644 src/kem/saber/lightsaber/avx2/SABER_indcpa.h delete mode 100644 src/kem/saber/lightsaber/avx2/SABER_params.h delete mode 100644 src/kem/saber/lightsaber/avx2/api.h delete mode 100644 src/kem/saber/lightsaber/avx2/cbd.c delete mode 100644 src/kem/saber/lightsaber/avx2/cbd.h delete mode 100644 src/kem/saber/lightsaber/avx2/kem.c delete mode 100644 src/kem/saber/lightsaber/avx2/pack_unpack.c delete mode 100644 src/kem/saber/lightsaber/avx2/pack_unpack.h delete mode 100644 src/kem/saber/lightsaber/avx2/poly.c delete mode 100644 src/kem/saber/lightsaber/avx2/poly.h delete mode 100644 src/kem/saber/lightsaber/avx2/poly_mul.c delete mode 100644 src/kem/saber/lightsaber/avx2/verify.c delete mode 100644 src/kem/saber/lightsaber/avx2/verify.h delete mode 100644 src/kem/saber/lightsaber/clean/CMakeLists.txt delete mode 100644 src/kem/saber/lightsaber/clean/SABER_indcpa.c delete mode 100644 src/kem/saber/lightsaber/clean/SABER_indcpa.h delete mode 100644 src/kem/saber/lightsaber/clean/SABER_params.h delete mode 100644 src/kem/saber/lightsaber/clean/api.h delete mode 100644 src/kem/saber/lightsaber/clean/cbd.c delete mode 100644 src/kem/saber/lightsaber/clean/cbd.h delete mode 100644 src/kem/saber/lightsaber/clean/kem.c delete mode 100644 src/kem/saber/lightsaber/clean/pack_unpack.c delete mode 100644 src/kem/saber/lightsaber/clean/pack_unpack.h delete mode 100644 src/kem/saber/lightsaber/clean/poly.c delete mode 100644 src/kem/saber/lightsaber/clean/poly.h delete mode 100644 src/kem/saber/lightsaber/clean/poly_mul.c delete mode 100644 src/kem/saber/lightsaber/clean/poly_mul.h delete mode 100644 src/kem/saber/lightsaber/clean/verify.c delete mode 100644 src/kem/saber/lightsaber/clean/verify.h delete mode 100644 src/kem/saber/saber/avx2/CMakeLists.txt delete mode 100644 src/kem/saber/saber/avx2/SABER_indcpa.c delete mode 100644 src/kem/saber/saber/avx2/SABER_indcpa.h delete mode 100644 src/kem/saber/saber/avx2/SABER_params.h delete mode 100644 src/kem/saber/saber/avx2/api.h delete mode 100644 src/kem/saber/saber/avx2/cbd.c delete mode 100644 src/kem/saber/saber/avx2/cbd.h delete mode 100644 src/kem/saber/saber/avx2/kem.c delete mode 100644 src/kem/saber/saber/avx2/pack_unpack.c delete mode 100644 src/kem/saber/saber/avx2/pack_unpack.h delete mode 100644 src/kem/saber/saber/avx2/poly.c delete mode 100644 src/kem/saber/saber/avx2/poly.h delete mode 100644 src/kem/saber/saber/avx2/poly_mul.c delete mode 100644 src/kem/saber/saber/avx2/verify.c delete mode 100644 src/kem/saber/saber/avx2/verify.h delete mode 100644 src/kem/saber/saber/clean/CMakeLists.txt delete mode 100644 src/kem/saber/saber/clean/SABER_indcpa.c delete mode 100644 src/kem/saber/saber/clean/SABER_indcpa.h delete mode 100644 src/kem/saber/saber/clean/SABER_params.h delete mode 100644 src/kem/saber/saber/clean/api.h delete mode 100644 src/kem/saber/saber/clean/cbd.c delete mode 100644 src/kem/saber/saber/clean/cbd.h delete mode 100644 src/kem/saber/saber/clean/kem.c delete mode 100644 src/kem/saber/saber/clean/pack_unpack.c delete mode 100644 src/kem/saber/saber/clean/pack_unpack.h delete mode 100644 src/kem/saber/saber/clean/poly.c delete mode 100644 src/kem/saber/saber/clean/poly.h delete mode 100644 src/kem/saber/saber/clean/poly_mul.c delete mode 100644 src/kem/saber/saber/clean/poly_mul.h delete mode 100644 src/kem/saber/saber/clean/verify.c delete mode 100644 src/kem/saber/saber/clean/verify.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 2e98620b..e1b887ce 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -167,7 +167,7 @@ FetchContent_Declare( gbench SOURCE_DIR ${PROJECT_SOURCE_DIR}/3rd/gbench GIT_REPOSITORY https://github.com/kriskwiatkowski/benchmark.git - GIT_TAG 49862ab56b6b7c3afd87b80bd5d787ed78ce3b96 + GIT_TAG hdc/release_crypto ) FetchContent_Populate(gbench) @@ -236,19 +236,6 @@ add_subdirectory(src/sign/sphincs/sphincs-sha256-192f-robust/clean) add_subdirectory(src/kem/kyber/kyber512/clean) add_subdirectory(src/kem/kyber/kyber768/clean) add_subdirectory(src/kem/kyber/kyber1024/clean) -add_subdirectory(src/kem/saber/lightsaber/clean) -add_subdirectory(src/kem/saber/firesaber/clean) -add_subdirectory(src/kem/saber/saber/clean) -add_subdirectory(src/kem/frodo/frodokem640shake/clean) -add_subdirectory(src/kem/frodo/frodokem976shake/clean) -add_subdirectory(src/kem/frodo/frodokem1344shake/clean) -add_subdirectory(src/kem/ntru/ntruhps4096821/clean) -add_subdirectory(src/kem/ntru/ntruhps2048509/clean) -add_subdirectory(src/kem/ntru/ntruhrss701/clean) -add_subdirectory(src/kem/ntru/ntruhps2048677/clean) -add_subdirectory(src/kem/ntru_prime/ntrulpr761/clean) -add_subdirectory(src/kem/ntru_prime/ntrulpr653/clean) -add_subdirectory(src/kem/ntru_prime/ntrulpr857/clean) add_subdirectory(src/kem/hqc/hqc-rmrs-128/clean) add_subdirectory(src/kem/hqc/hqc-rmrs-192/clean) add_subdirectory(src/kem/hqc/hqc-rmrs-256/clean) @@ -300,16 +287,6 @@ add_subdirectory(src/sign/sphincs/sphincs-sha256-256s-robust/avx2) add_subdirectory(src/kem/kyber/kyber512/avx2) add_subdirectory(src/kem/kyber/kyber768/avx2) add_subdirectory(src/kem/kyber/kyber1024/avx2) -add_subdirectory(src/kem/saber/lightsaber/avx2) -add_subdirectory(src/kem/saber/firesaber/avx2) -add_subdirectory(src/kem/saber/saber/avx2) -add_subdirectory(src/kem/ntru/ntruhps4096821/avx2) -add_subdirectory(src/kem/ntru/ntruhps2048509/avx2) -add_subdirectory(src/kem/ntru/ntruhrss701/avx2) -add_subdirectory(src/kem/ntru/ntruhps2048677/avx2) -add_subdirectory(src/kem/ntru_prime/ntrulpr761/avx2) -add_subdirectory(src/kem/ntru_prime/ntrulpr653/avx2) -add_subdirectory(src/kem/ntru_prime/ntrulpr857/avx2) add_subdirectory(src/kem/hqc/hqc-rmrs-128/avx2) add_subdirectory(src/kem/hqc/hqc-rmrs-192/avx2) add_subdirectory(src/kem/hqc/hqc-rmrs-256/avx2) diff --git a/README.md b/README.md index 76186dfb..7f2cde3c 100644 --- a/README.md +++ b/README.md @@ -8,20 +8,21 @@ Users shouldn't expect any level of security provided by this code. The library ## Supported schemes -| Name | NIST Round | x86 optimized | -|--------------------------|------------|---------------| -| Kyber | 3 | x | -| SABER | 3 | x | -| FrodoKEM | 3 | | -| Dilithium | 3 | x | -| Falcon | 3 | | -| SPHINCS+ SHA256/SHAKE256 | 3 | x | -| NTRU | 3 | x | -| NTRU Prime | 3 | x | -| HQC-RMRS | 3 | x | -| Rainbow | 3 | | -| SIKE/p434 | 3 | x | -| McEliece | 3 | | +| Name | x86 optimized | +|--------------------------|------------| +| Kyber | x | +| Dilithium | x | +| Falcon | | +| SPHINCS+ SHA256/SHAKE256 | x | + + +## Round 4 algorithms + +| Name | x86 optimized | +|--------------------------|------------| +| HQC-RMRS | x | +| SIKE/p434 | x | +| McEliece | | ## Building diff --git a/public/pqc/pqc.h b/public/pqc/pqc.h index 627fa3a5..8711030b 100644 --- a/public/pqc/pqc.h +++ b/public/pqc/pqc.h @@ -44,22 +44,9 @@ extern "C" { // Defines supported kem algorithm list. The resulting // ID of an algorithm is PQC_ALG_KEM_(NAME_AS_BELOW) #define PQC_SUPPORTED_KEMS(_)\ - _(FRODOKEM640SHAKE) \ - _(FRODOKEM976SHAKE) \ - _(FRODOKEM1344SHAKE) \ _(KYBER512) \ _(KYBER768) \ _(KYBER1024) \ - _(NTRUHPS2048509) \ - _(NTRUHPS4096821) \ - _(NTRUHRSS701) \ - _(NTRUHPS2048677) \ - _(NTRULPR761) \ - _(NTRULPR653) \ - _(NTRULPR857) \ - _(LIGHTSABER) \ - _(SABER) \ - _(FIRESABER) \ _(HQCRMRS128) \ _(HQCRMRS192) \ _(HQCRMRS256) \ diff --git a/src/capi/schemes.h b/src/capi/schemes.h index 02ff3acf..b7b9ba39 100644 --- a/src/capi/schemes.h +++ b/src/capi/schemes.h @@ -57,20 +57,6 @@ #include "sign/dilithium/dilithium5/clean/api.h" #include "sign/dilithium/dilithium5/avx2/api.h" #include "sign/falcon/api.h" -#include "kem/ntru/ntruhps4096821/clean/api.h" -#include "kem/ntru/ntruhps4096821/avx2/api.h" -#include "kem/ntru/ntruhps2048509/clean/api.h" -#include "kem/ntru/ntruhps2048509/avx2/api.h" -#include "kem/ntru/ntruhrss701/clean/api.h" -#include "kem/ntru/ntruhrss701/avx2/api.h" -#include "kem/ntru/ntruhps2048677/clean/api.h" -#include "kem/ntru/ntruhps2048677/avx2/api.h" -#include "kem/ntru_prime/ntrulpr761/clean/api.h" -#include "kem/ntru_prime/ntrulpr761/avx2/api.h" -#include "kem/ntru_prime/ntrulpr653/clean/api.h" -#include "kem/ntru_prime/ntrulpr653/avx2/api.h" -#include "kem/ntru_prime/ntrulpr857/clean/api.h" -#include "kem/ntru_prime/ntrulpr857/avx2/api.h" #include "kem/kyber/kyber768/clean/api.h" #include "kem/kyber/kyber768/avx2/api.h" #include "kem/kyber/kyber1024/clean/api.h" @@ -97,15 +83,6 @@ #include "kem/mceliece/mceliece6960119/clean/api.h" #include "kem/mceliece/mceliece348864/avx/api.h" #include "kem/mceliece/mceliece348864/clean/api.h" -#include "kem/frodo/frodokem976shake/clean/api.h" -#include "kem/frodo/frodokem1344shake/clean/api.h" -#include "kem/frodo/frodokem640shake/clean/api.h" -#include "kem/saber/lightsaber/clean/api.h" -#include "kem/saber/lightsaber/avx2/api.h" -#include "kem/saber/firesaber/clean/api.h" -#include "kem/saber/firesaber/avx2/api.h" -#include "kem/saber/saber/clean/api.h" -#include "kem/saber/saber/avx2/api.h" #include "kem/hqc/hqc-rmrs-128/clean/api.h" #include "kem/hqc/hqc-rmrs-192/clean/api.h" #include "kem/hqc/hqc-rmrs-256/clean/api.h" diff --git a/src/kem/frodo/frodokem1344shake/clean/CMakeLists.txt b/src/kem/frodo/frodokem1344shake/clean/CMakeLists.txt deleted file mode 100644 index 93fa2d48..00000000 --- a/src/kem/frodo/frodokem1344shake/clean/CMakeLists.txt +++ /dev/null @@ -1,10 +0,0 @@ -set( - SRC_CLEAN_FRODOKEM1344SHAKE - kem.c - matrix_shake.c - noise.c - util.c -) - -define_kem_alg(frodo1344shake_clean - PQCLEAN_FRODOKEM1344SHAKE_OPT "${SRC_CLEAN_FRODOKEM1344SHAKE}" "${CMAKE_CURRENT_SOURCE_DIR}") diff --git a/src/kem/frodo/frodokem1344shake/clean/api.h b/src/kem/frodo/frodokem1344shake/clean/api.h deleted file mode 100644 index b56f4118..00000000 --- a/src/kem/frodo/frodokem1344shake/clean/api.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef PQCLEAN_FRODOKEM1344SHAKE_CLEAN_API_H -#define PQCLEAN_FRODOKEM1344SHAKE_CLEAN_API_H - -#include -#include - -#define PQCLEAN_FRODOKEM1344SHAKE_CLEAN_CRYPTO_SECRETKEYBYTES 43088 // sizeof(s) + CRYPTO_PUBLICKEYBYTES + 2*PARAMS_N*PARAMS_NBAR + BYTES_PKHASH -#define PQCLEAN_FRODOKEM1344SHAKE_CLEAN_CRYPTO_PUBLICKEYBYTES 21520 // sizeof(seed_A) + (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 -#define PQCLEAN_FRODOKEM1344SHAKE_CLEAN_CRYPTO_BYTES 32 -#define PQCLEAN_FRODOKEM1344SHAKE_CLEAN_CRYPTO_CIPHERTEXTBYTES 21632 // (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 + (PARAMS_LOGQ*PARAMS_NBAR*PARAMS_NBAR)/8 - -#define PQCLEAN_FRODOKEM1344SHAKE_CLEAN_CRYPTO_ALGNAME "FrodoKEM-1344-SHAKE" - -int PQCLEAN_FRODOKEM1344SHAKE_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk); - -int PQCLEAN_FRODOKEM1344SHAKE_CLEAN_crypto_kem_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); - -int PQCLEAN_FRODOKEM1344SHAKE_CLEAN_crypto_kem_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); - -#endif diff --git a/src/kem/frodo/frodokem1344shake/clean/common.h b/src/kem/frodo/frodokem1344shake/clean/common.h deleted file mode 100644 index 2daf0da3..00000000 --- a/src/kem/frodo/frodokem1344shake/clean/common.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef COMMON_H -#define COMMON_H - -int PQCLEAN_FRODOKEM1344SHAKE_CLEAN_mul_add_as_plus_e(uint16_t *out, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A); -int PQCLEAN_FRODOKEM1344SHAKE_CLEAN_mul_add_sa_plus_e(uint16_t *out, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A); -void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_sample_n(uint16_t *s, size_t n); -void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_mul_bs(uint16_t *out, const uint16_t *b, const uint16_t *s); -void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_mul_add_sb_plus_e(uint16_t *out, const uint16_t *b, const uint16_t *s, const uint16_t *e); -void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_add(uint16_t *out, const uint16_t *a, const uint16_t *b); -void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_sub(uint16_t *out, const uint16_t *a, const uint16_t *b); -void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_key_encode(uint16_t *out, const uint16_t *in); -void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_key_decode(uint16_t *out, const uint16_t *in); -void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_pack(uint8_t *out, size_t outlen, const uint16_t *in, size_t inlen, uint8_t lsb); -void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_unpack(uint16_t *out, size_t outlen, const uint8_t *in, size_t inlen, uint8_t lsb); -int8_t PQCLEAN_FRODOKEM1344SHAKE_CLEAN_ct_verify(const uint16_t *a, const uint16_t *b, size_t len); -void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_ct_select(uint8_t *r, const uint8_t *a, const uint8_t *b, size_t len, int8_t selector); -void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes(uint8_t *mem, size_t n); -uint16_t PQCLEAN_FRODOKEM1344SHAKE_CLEAN_LE_TO_UINT16(uint16_t n); -uint16_t PQCLEAN_FRODOKEM1344SHAKE_CLEAN_UINT16_TO_LE(uint16_t n); - -#endif diff --git a/src/kem/frodo/frodokem1344shake/clean/kem.c b/src/kem/frodo/frodokem1344shake/clean/kem.c deleted file mode 100644 index 8374b5c3..00000000 --- a/src/kem/frodo/frodokem1344shake/clean/kem.c +++ /dev/null @@ -1,237 +0,0 @@ -/******************************************************************************************** -* FrodoKEM: Learning with Errors Key Encapsulation -* -* Abstract: Key Encapsulation Mechanism (KEM) based on Frodo -*********************************************************************************************/ - -#include -#include - -#include "fips202.h" -#include "randombytes.h" - -#include "api.h" -#include "common.h" -#include "params.h" - -int PQCLEAN_FRODOKEM1344SHAKE_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk) { - // FrodoKEM's key generation - // Outputs: public key pk ( BYTES_SEED_A + (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 bytes) - // secret key sk (CRYPTO_BYTES + BYTES_SEED_A + (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 + 2*PARAMS_N*PARAMS_NBAR + BYTES_PKHASH bytes) - uint8_t *pk_seedA = &pk[0]; - uint8_t *pk_b = &pk[BYTES_SEED_A]; - uint8_t *sk_s = &sk[0]; - uint8_t *sk_pk = &sk[CRYPTO_BYTES]; - uint8_t *sk_S = &sk[CRYPTO_BYTES + CRYPTO_PUBLICKEYBYTES]; - uint8_t *sk_pkh = &sk[CRYPTO_BYTES + CRYPTO_PUBLICKEYBYTES + 2 * PARAMS_N * PARAMS_NBAR]; - uint16_t B[PARAMS_N * PARAMS_NBAR] = {0}; - uint16_t S[2 * PARAMS_N * PARAMS_NBAR] = {0}; // contains secret data - uint16_t *E = &S[PARAMS_N * PARAMS_NBAR]; // contains secret data - uint8_t randomness[2 * CRYPTO_BYTES + BYTES_SEED_A]; // contains secret data via randomness_s and randomness_seedSE - uint8_t *randomness_s = &randomness[0]; // contains secret data - uint8_t *randomness_seedSE = &randomness[CRYPTO_BYTES]; // contains secret data - uint8_t *randomness_z = &randomness[2 * CRYPTO_BYTES]; - uint8_t shake_input_seedSE[1 + CRYPTO_BYTES]; // contains secret data - - // Generate the secret value s, the seed for S and E, and the seed for the seed for A. Add seed_A to the public key - randombytes(randomness, CRYPTO_BYTES + CRYPTO_BYTES + BYTES_SEED_A); - shake(pk_seedA, BYTES_SEED_A, randomness_z, BYTES_SEED_A); - - // Generate S and E, and compute B = A*S + E. Generate A on-the-fly - shake_input_seedSE[0] = 0x5F; - memcpy(&shake_input_seedSE[1], randomness_seedSE, CRYPTO_BYTES); - shake((uint8_t *)S, 2 * PARAMS_N * PARAMS_NBAR * sizeof(uint16_t), shake_input_seedSE, 1 + CRYPTO_BYTES); - for (size_t i = 0; i < 2 * PARAMS_N * PARAMS_NBAR; i++) { - S[i] = PQCLEAN_FRODOKEM1344SHAKE_CLEAN_LE_TO_UINT16(S[i]); - } - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_sample_n(S, PARAMS_N * PARAMS_NBAR); - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_sample_n(E, PARAMS_N * PARAMS_NBAR); - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_mul_add_as_plus_e(B, S, E, pk); - - // Encode the second part of the public key - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_pack(pk_b, CRYPTO_PUBLICKEYBYTES - BYTES_SEED_A, B, PARAMS_N * PARAMS_NBAR, PARAMS_LOGQ); - - // Add s, pk and S to the secret key - memcpy(sk_s, randomness_s, CRYPTO_BYTES); - memcpy(sk_pk, pk, CRYPTO_PUBLICKEYBYTES); - for (size_t i = 0; i < PARAMS_N * PARAMS_NBAR; i++) { - S[i] = PQCLEAN_FRODOKEM1344SHAKE_CLEAN_UINT16_TO_LE(S[i]); - } - memcpy(sk_S, S, 2 * PARAMS_N * PARAMS_NBAR); - - // Add H(pk) to the secret key - shake(sk_pkh, BYTES_PKHASH, pk, CRYPTO_PUBLICKEYBYTES); - - // Cleanup: - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes((uint8_t *)S, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes((uint8_t *)E, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes(randomness, 2 * CRYPTO_BYTES); - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes(shake_input_seedSE, 1 + CRYPTO_BYTES); - return 0; -} - - -int PQCLEAN_FRODOKEM1344SHAKE_CLEAN_crypto_kem_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk) { - // FrodoKEM's key encapsulation - const uint8_t *pk_seedA = &pk[0]; - const uint8_t *pk_b = &pk[BYTES_SEED_A]; - uint8_t *ct_c1 = &ct[0]; - uint8_t *ct_c2 = &ct[(PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8]; - uint16_t B[PARAMS_N * PARAMS_NBAR] = {0}; - uint16_t V[PARAMS_NBAR * PARAMS_NBAR] = {0}; // contains secret data - uint16_t C[PARAMS_NBAR * PARAMS_NBAR] = {0}; - uint16_t Bp[PARAMS_N * PARAMS_NBAR] = {0}; - uint16_t Sp[(2 * PARAMS_N + PARAMS_NBAR)*PARAMS_NBAR] = {0}; // contains secret data - uint16_t *Ep = &Sp[PARAMS_N * PARAMS_NBAR]; // contains secret data - uint16_t *Epp = &Sp[2 * PARAMS_N * PARAMS_NBAR]; // contains secret data - uint8_t G2in[BYTES_PKHASH + BYTES_MU]; // contains secret data via mu - uint8_t *pkh = &G2in[0]; - uint8_t *mu = &G2in[BYTES_PKHASH]; // contains secret data - uint8_t G2out[2 * CRYPTO_BYTES]; // contains secret data - uint8_t *seedSE = &G2out[0]; // contains secret data - uint8_t *k = &G2out[CRYPTO_BYTES]; // contains secret data - uint8_t Fin[CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES]; // contains secret data via Fin_k - uint8_t *Fin_ct = &Fin[0]; - uint8_t *Fin_k = &Fin[CRYPTO_CIPHERTEXTBYTES]; // contains secret data - uint8_t shake_input_seedSE[1 + CRYPTO_BYTES]; // contains secret data - - // pkh <- G_1(pk), generate random mu, compute (seedSE || k) = G_2(pkh || mu) - shake(pkh, BYTES_PKHASH, pk, CRYPTO_PUBLICKEYBYTES); - randombytes(mu, BYTES_MU); - shake(G2out, CRYPTO_BYTES + CRYPTO_BYTES, G2in, BYTES_PKHASH + BYTES_MU); - - // Generate Sp and Ep, and compute Bp = Sp*A + Ep. Generate A on-the-fly - shake_input_seedSE[0] = 0x96; - memcpy(&shake_input_seedSE[1], seedSE, CRYPTO_BYTES); - shake((uint8_t *)Sp, (2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR * sizeof(uint16_t), shake_input_seedSE, 1 + CRYPTO_BYTES); - for (size_t i = 0; i < (2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR; i++) { - Sp[i] = PQCLEAN_FRODOKEM1344SHAKE_CLEAN_LE_TO_UINT16(Sp[i]); - } - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_sample_n(Sp, PARAMS_N * PARAMS_NBAR); - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_sample_n(Ep, PARAMS_N * PARAMS_NBAR); - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_mul_add_sa_plus_e(Bp, Sp, Ep, pk_seedA); - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_pack(ct_c1, (PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8, Bp, PARAMS_N * PARAMS_NBAR, PARAMS_LOGQ); - - // Generate Epp, and compute V = Sp*B + Epp - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_sample_n(Epp, PARAMS_NBAR * PARAMS_NBAR); - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_unpack(B, PARAMS_N * PARAMS_NBAR, pk_b, CRYPTO_PUBLICKEYBYTES - BYTES_SEED_A, PARAMS_LOGQ); - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_mul_add_sb_plus_e(V, B, Sp, Epp); - - // Encode mu, and compute C = V + enc(mu) (mod q) - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_key_encode(C, (uint16_t *)mu); - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_add(C, V, C); - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_pack(ct_c2, (PARAMS_LOGQ * PARAMS_NBAR * PARAMS_NBAR) / 8, C, PARAMS_NBAR * PARAMS_NBAR, PARAMS_LOGQ); - - // Compute ss = F(ct||KK) - memcpy(Fin_ct, ct, CRYPTO_CIPHERTEXTBYTES); - memcpy(Fin_k, k, CRYPTO_BYTES); - shake(ss, CRYPTO_BYTES, Fin, CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES); - - // Cleanup: - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes((uint8_t *)V, PARAMS_NBAR * PARAMS_NBAR * sizeof(uint16_t)); - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes((uint8_t *)Sp, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes((uint8_t *)Ep, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes((uint8_t *)Epp, PARAMS_NBAR * PARAMS_NBAR * sizeof(uint16_t)); - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes(mu, BYTES_MU); - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes(G2out, 2 * CRYPTO_BYTES); - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes(Fin_k, CRYPTO_BYTES); - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes(shake_input_seedSE, 1 + CRYPTO_BYTES); - return 0; -} - - -int PQCLEAN_FRODOKEM1344SHAKE_CLEAN_crypto_kem_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk) { - // FrodoKEM's key decapsulation - uint16_t B[PARAMS_N * PARAMS_NBAR] = {0}; - uint16_t Bp[PARAMS_N * PARAMS_NBAR] = {0}; - uint16_t W[PARAMS_NBAR * PARAMS_NBAR] = {0}; // contains secret data - uint16_t C[PARAMS_NBAR * PARAMS_NBAR] = {0}; - uint16_t CC[PARAMS_NBAR * PARAMS_NBAR] = {0}; - uint16_t BBp[PARAMS_N * PARAMS_NBAR] = {0}; - uint16_t Sp[(2 * PARAMS_N + PARAMS_NBAR)*PARAMS_NBAR] = {0}; // contains secret data - uint16_t *Ep = &Sp[PARAMS_N * PARAMS_NBAR]; // contains secret data - uint16_t *Epp = &Sp[2 * PARAMS_N * PARAMS_NBAR]; // contains secret data - const uint8_t *ct_c1 = &ct[0]; - const uint8_t *ct_c2 = &ct[(PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8]; - const uint8_t *sk_s = &sk[0]; - const uint8_t *sk_pk = &sk[CRYPTO_BYTES]; - const uint8_t *sk_S = &sk[CRYPTO_BYTES + CRYPTO_PUBLICKEYBYTES]; - uint16_t S[PARAMS_N * PARAMS_NBAR]; // contains secret data - const uint8_t *sk_pkh = &sk[CRYPTO_BYTES + CRYPTO_PUBLICKEYBYTES + 2 * PARAMS_N * PARAMS_NBAR]; - const uint8_t *pk_seedA = &sk_pk[0]; - const uint8_t *pk_b = &sk_pk[BYTES_SEED_A]; - uint8_t G2in[BYTES_PKHASH + BYTES_MU]; // contains secret data via muprime - uint8_t *pkh = &G2in[0]; - uint8_t *muprime = &G2in[BYTES_PKHASH]; // contains secret data - uint8_t G2out[2 * CRYPTO_BYTES]; // contains secret data - uint8_t *seedSEprime = &G2out[0]; // contains secret data - uint8_t *kprime = &G2out[CRYPTO_BYTES]; // contains secret data - uint8_t Fin[CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES]; // contains secret data via Fin_k - uint8_t *Fin_ct = &Fin[0]; - uint8_t *Fin_k = &Fin[CRYPTO_CIPHERTEXTBYTES]; // contains secret data - uint8_t shake_input_seedSEprime[1 + CRYPTO_BYTES]; // contains secret data - - for (size_t i = 0; i < PARAMS_N * PARAMS_NBAR; i++) { - S[i] = sk_S[2 * i] | (sk_S[2 * i + 1] << 8); - } - - // Compute W = C - Bp*S (mod q), and decode the randomness mu - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_unpack(Bp, PARAMS_N * PARAMS_NBAR, ct_c1, (PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8, PARAMS_LOGQ); - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_unpack(C, PARAMS_NBAR * PARAMS_NBAR, ct_c2, (PARAMS_LOGQ * PARAMS_NBAR * PARAMS_NBAR) / 8, PARAMS_LOGQ); - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_mul_bs(W, Bp, S); - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_sub(W, C, W); - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_key_decode((uint16_t *)muprime, W); - - // Generate (seedSE' || k') = G_2(pkh || mu') - memcpy(pkh, sk_pkh, BYTES_PKHASH); - shake(G2out, CRYPTO_BYTES + CRYPTO_BYTES, G2in, BYTES_PKHASH + BYTES_MU); - - // Generate Sp and Ep, and compute BBp = Sp*A + Ep. Generate A on-the-fly - shake_input_seedSEprime[0] = 0x96; - memcpy(&shake_input_seedSEprime[1], seedSEprime, CRYPTO_BYTES); - shake((uint8_t *)Sp, (2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR * sizeof(uint16_t), shake_input_seedSEprime, 1 + CRYPTO_BYTES); - for (size_t i = 0; i < (2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR; i++) { - Sp[i] = PQCLEAN_FRODOKEM1344SHAKE_CLEAN_LE_TO_UINT16(Sp[i]); - } - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_sample_n(Sp, PARAMS_N * PARAMS_NBAR); - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_sample_n(Ep, PARAMS_N * PARAMS_NBAR); - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_mul_add_sa_plus_e(BBp, Sp, Ep, pk_seedA); - - // Generate Epp, and compute W = Sp*B + Epp - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_sample_n(Epp, PARAMS_NBAR * PARAMS_NBAR); - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_unpack(B, PARAMS_N * PARAMS_NBAR, pk_b, CRYPTO_PUBLICKEYBYTES - BYTES_SEED_A, PARAMS_LOGQ); - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_mul_add_sb_plus_e(W, B, Sp, Epp); - - // Encode mu, and compute CC = W + enc(mu') (mod q) - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_key_encode(CC, (uint16_t *)muprime); - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_add(CC, W, CC); - - // Prepare input to F - memcpy(Fin_ct, ct, CRYPTO_CIPHERTEXTBYTES); - - // Reducing BBp modulo q - for (size_t i = 0; i < PARAMS_N * PARAMS_NBAR; i++) { - BBp[i] = BBp[i] & ((1 << PARAMS_LOGQ) - 1); - } - - // If (Bp == BBp & C == CC) then ss = F(ct || k'), else ss = F(ct || s) - // Needs to avoid branching on secret data as per: - // Qian Guo, Thomas Johansson, Alexander Nilsson. A key-recovery timing attack on post-quantum - // primitives using the Fujisaki-Okamoto transformation and its application on FrodoKEM. In CRYPTO 2020. - int8_t selector = PQCLEAN_FRODOKEM1344SHAKE_CLEAN_ct_verify(Bp, BBp, PARAMS_N * PARAMS_NBAR) | PQCLEAN_FRODOKEM1344SHAKE_CLEAN_ct_verify(C, CC, PARAMS_NBAR * PARAMS_NBAR); - // If (selector == 0) then load k' to do ss = F(ct || k'), else if (selector == -1) load s to do ss = F(ct || s) - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_ct_select((uint8_t *)Fin_k, (uint8_t *)kprime, (uint8_t *)sk_s, CRYPTO_BYTES, selector); - shake(ss, CRYPTO_BYTES, Fin, CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES); - - // Cleanup: - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes((uint8_t *)W, PARAMS_NBAR * PARAMS_NBAR * sizeof(uint16_t)); - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes((uint8_t *)Sp, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes((uint8_t *)S, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes((uint8_t *)Ep, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes((uint8_t *)Epp, PARAMS_NBAR * PARAMS_NBAR * sizeof(uint16_t)); - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes(muprime, BYTES_MU); - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes(G2out, 2 * CRYPTO_BYTES); - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes(Fin_k, CRYPTO_BYTES); - PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes(shake_input_seedSEprime, 1 + CRYPTO_BYTES); - return 0; -} diff --git a/src/kem/frodo/frodokem1344shake/clean/matrix_shake.c b/src/kem/frodo/frodokem1344shake/clean/matrix_shake.c deleted file mode 100644 index f812bdd3..00000000 --- a/src/kem/frodo/frodokem1344shake/clean/matrix_shake.c +++ /dev/null @@ -1,108 +0,0 @@ -/******************************************************************************************** -* FrodoKEM: Learning with Errors Key Encapsulation -* -* Abstract: matrix arithmetic functions used by the KEM -*********************************************************************************************/ - -#include -#include - -#include "fips202.h" - -#include "api.h" -#include "common.h" -#include "params.h" - -int PQCLEAN_FRODOKEM1344SHAKE_CLEAN_mul_add_as_plus_e(uint16_t *out, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A) { - // Generate-and-multiply: generate matrix A (N x N) row-wise, multiply by s on the right. - // Inputs: s, e (N x N_BAR) - // Output: out = A*s + e (N x N_BAR) - int j, k; - uint16_t i; - int16_t a_row[4 * PARAMS_N]; - - for (i = 0; i < (PARAMS_N * PARAMS_NBAR); i += 2) { - *((uint32_t *)&out[i]) = *((uint32_t *)&e[i]); - } - - uint8_t seed_A_separated[2 + BYTES_SEED_A]; - uint16_t *seed_A_origin = (uint16_t *)&seed_A_separated; - memcpy(&seed_A_separated[2], seed_A, BYTES_SEED_A); - for (i = 0; i < PARAMS_N; i += 4) { - seed_A_origin[0] = PQCLEAN_FRODOKEM1344SHAKE_CLEAN_UINT16_TO_LE(i + 0); - shake128((unsigned char *)(a_row + 0 * PARAMS_N), (unsigned long long)(2 * PARAMS_N), seed_A_separated, 2 + BYTES_SEED_A); - seed_A_origin[0] = PQCLEAN_FRODOKEM1344SHAKE_CLEAN_UINT16_TO_LE(i + 1); - shake128((unsigned char *)(a_row + 1 * PARAMS_N), (unsigned long long)(2 * PARAMS_N), seed_A_separated, 2 + BYTES_SEED_A); - seed_A_origin[0] = PQCLEAN_FRODOKEM1344SHAKE_CLEAN_UINT16_TO_LE(i + 2); - shake128((unsigned char *)(a_row + 2 * PARAMS_N), (unsigned long long)(2 * PARAMS_N), seed_A_separated, 2 + BYTES_SEED_A); - seed_A_origin[0] = PQCLEAN_FRODOKEM1344SHAKE_CLEAN_UINT16_TO_LE(i + 3); - shake128((unsigned char *)(a_row + 3 * PARAMS_N), (unsigned long long)(2 * PARAMS_N), seed_A_separated, 2 + BYTES_SEED_A); - for (k = 0; k < 4 * PARAMS_N; k++) { - a_row[k] = PQCLEAN_FRODOKEM1344SHAKE_CLEAN_LE_TO_UINT16(a_row[k]); - } - for (k = 0; k < PARAMS_NBAR; k++) { - uint16_t sum[4] = {0}; - for (j = 0; j < PARAMS_N; j++) { // Matrix-vector multiplication - uint16_t sp = s[k * PARAMS_N + j]; - sum[0] += a_row[0 * PARAMS_N + j] * sp; // Go through four lines with same s - sum[1] += a_row[1 * PARAMS_N + j] * sp; - sum[2] += a_row[2 * PARAMS_N + j] * sp; - sum[3] += a_row[3 * PARAMS_N + j] * sp; - } - out[(i + 0)*PARAMS_NBAR + k] += sum[0]; - out[(i + 2)*PARAMS_NBAR + k] += sum[2]; - out[(i + 1)*PARAMS_NBAR + k] += sum[1]; - out[(i + 3)*PARAMS_NBAR + k] += sum[3]; - } - } - return 1; -} - - - - -int PQCLEAN_FRODOKEM1344SHAKE_CLEAN_mul_add_sa_plus_e(uint16_t *out, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A) { - // Generate-and-multiply: generate matrix A (N x N) column-wise, multiply by s' on the left. - // Inputs: s', e' (N_BAR x N) - // Output: out = s'*A + e' (N_BAR x N) - int i, j; - uint16_t kk; - for (i = 0; i < (PARAMS_N * PARAMS_NBAR); i += 2) { - *((uint32_t *)&out[i]) = *((uint32_t *)&e[i]); - } - - int t = 0; - uint16_t a_cols[4 * PARAMS_N]; - - int k; - uint8_t seed_A_separated[2 + BYTES_SEED_A]; - uint16_t *seed_A_origin = (uint16_t *)&seed_A_separated; - memcpy(&seed_A_separated[2], seed_A, BYTES_SEED_A); - for (kk = 0; kk < PARAMS_N; kk += 4) { - seed_A_origin[0] = PQCLEAN_FRODOKEM1344SHAKE_CLEAN_UINT16_TO_LE(kk + 0); - shake128((unsigned char *)(a_cols + 0 * PARAMS_N), (unsigned long long)(2 * PARAMS_N), seed_A_separated, 2 + BYTES_SEED_A); - seed_A_origin[0] = PQCLEAN_FRODOKEM1344SHAKE_CLEAN_UINT16_TO_LE(kk + 1); - shake128((unsigned char *)(a_cols + 1 * PARAMS_N), (unsigned long long)(2 * PARAMS_N), seed_A_separated, 2 + BYTES_SEED_A); - seed_A_origin[0] = PQCLEAN_FRODOKEM1344SHAKE_CLEAN_UINT16_TO_LE(kk + 2); - shake128((unsigned char *)(a_cols + 2 * PARAMS_N), (unsigned long long)(2 * PARAMS_N), seed_A_separated, 2 + BYTES_SEED_A); - seed_A_origin[0] = PQCLEAN_FRODOKEM1344SHAKE_CLEAN_UINT16_TO_LE(kk + 3); - shake128((unsigned char *)(a_cols + 3 * PARAMS_N), (unsigned long long)(2 * PARAMS_N), seed_A_separated, 2 + BYTES_SEED_A); - for (i = 0; i < 4 * PARAMS_N; i++) { - a_cols[i] = PQCLEAN_FRODOKEM1344SHAKE_CLEAN_LE_TO_UINT16(a_cols[i]); - } - - for (i = 0; i < PARAMS_NBAR; i++) { - uint16_t sum[PARAMS_N] = {0}; - for (j = 0; j < 4; j++) { - uint16_t sp = s[i * PARAMS_N + kk + j]; - for (k = 0; k < PARAMS_N; k++) { // Matrix-vector multiplication - sum[k] += (uint16_t)(sp * (uint32_t)a_cols[(t + j) * PARAMS_N + k]); - } - } - for (k = 0; k < PARAMS_N; k++) { - out[i * PARAMS_N + k] += sum[k]; - } - } - } - return 1; -} diff --git a/src/kem/frodo/frodokem1344shake/clean/noise.c b/src/kem/frodo/frodokem1344shake/clean/noise.c deleted file mode 100644 index 7e68616f..00000000 --- a/src/kem/frodo/frodokem1344shake/clean/noise.c +++ /dev/null @@ -1,35 +0,0 @@ -/******************************************************************************************** -* FrodoKEM: Learning with Errors Key Encapsulation -* -* Abstract: noise sampling functions -*********************************************************************************************/ - -#include - -#include "api.h" -#include "common.h" -#include "params.h" - -static const uint16_t CDF_TABLE[CDF_TABLE_LEN] = CDF_TABLE_DATA; - -void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_sample_n(uint16_t *s, size_t n) { - // Fills vector s with n samples from the noise distribution which requires 16 bits to sample. - // The distribution is specified by its CDF. - // Input: pseudo-random values (2*n bytes) passed in s. The input is overwritten by the output. - size_t i; - unsigned int j; - - for (i = 0; i < n; ++i) { - uint16_t sample = 0; - uint16_t prnd = s[i] >> 1; // Drop the least significant bit - uint16_t sign = s[i] & 0x1; // Pick the least significant bit - - // No need to compare with the last value. - for (j = 0; j < (unsigned int)(CDF_TABLE_LEN - 1); j++) { - // Constant time comparison: 1 if CDF_TABLE[j] < s, 0 otherwise. Uses the fact that CDF_TABLE[j] and s fit in 15 bits. - sample += (uint16_t)(CDF_TABLE[j] - prnd) >> 15; - } - // Assuming that sign is either 0 or 1, flips sample iff sign = 1 - s[i] = ((-sign) ^ sample) + sign; - } -} diff --git a/src/kem/frodo/frodokem1344shake/clean/params.h b/src/kem/frodo/frodokem1344shake/clean/params.h deleted file mode 100644 index ff3dccee..00000000 --- a/src/kem/frodo/frodokem1344shake/clean/params.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef PARAMS_H -#define PARAMS_H - -#define CRYPTO_SECRETKEYBYTES PQCLEAN_FRODOKEM1344SHAKE_CLEAN_CRYPTO_SECRETKEYBYTES -#define CRYPTO_PUBLICKEYBYTES PQCLEAN_FRODOKEM1344SHAKE_CLEAN_CRYPTO_PUBLICKEYBYTES -#define CRYPTO_BYTES PQCLEAN_FRODOKEM1344SHAKE_CLEAN_CRYPTO_BYTES -#define CRYPTO_CIPHERTEXTBYTES PQCLEAN_FRODOKEM1344SHAKE_CLEAN_CRYPTO_CIPHERTEXTBYTES - -#define PARAMS_N 1344 -#define PARAMS_NBAR 8 -#define PARAMS_LOGQ 16 -#define PARAMS_Q (1 << PARAMS_LOGQ) -#define PARAMS_EXTRACTED_BITS 4 -#define PARAMS_STRIPE_STEP 8 -#define PARAMS_PARALLEL 4 -#define BYTES_SEED_A 16 -#define BYTES_MU ((PARAMS_EXTRACTED_BITS * PARAMS_NBAR * PARAMS_NBAR) / 8) -#define BYTES_PKHASH CRYPTO_BYTES - -// Selecting SHAKE XOF function for the KEM and noise sampling -#define shake shake256 - -// CDF table -#define CDF_TABLE_DATA {9142, 23462, 30338, 32361, 32725, 32765, 32767} -#define CDF_TABLE_LEN 7 - -#endif diff --git a/src/kem/frodo/frodokem1344shake/clean/util.c b/src/kem/frodo/frodokem1344shake/clean/util.c deleted file mode 100644 index d7462df6..00000000 --- a/src/kem/frodo/frodokem1344shake/clean/util.c +++ /dev/null @@ -1,264 +0,0 @@ -/******************************************************************************************** -* FrodoKEM: Learning with Errors Key Encapsulation -* -* Abstract: additional functions for FrodoKEM -*********************************************************************************************/ - -#include -#include - -#include "api.h" -#include "common.h" -#include "params.h" - -static inline uint8_t min(uint8_t x, uint8_t y) { - if (x < y) { - return x; - } - return y; -} - -uint16_t PQCLEAN_FRODOKEM1344SHAKE_CLEAN_LE_TO_UINT16(uint16_t n) { - return (((uint8_t *) &n)[0] | (((uint8_t *) &n)[1] << 8)); -} - -uint16_t PQCLEAN_FRODOKEM1344SHAKE_CLEAN_UINT16_TO_LE(uint16_t n) { - uint16_t y; - uint8_t *z = (uint8_t *) &y; - z[0] = n & 0xFF; - z[1] = (n & 0xFF00) >> 8; - return y; -} - -void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_mul_bs(uint16_t *out, const uint16_t *b, const uint16_t *s) { - // Multiply by s on the right - // Inputs: b (N_BAR x N), s (N x N_BAR) - // Output: out = b*s (N_BAR x N_BAR) - int i, j, k; - - for (i = 0; i < PARAMS_NBAR; i++) { - for (j = 0; j < PARAMS_NBAR; j++) { - out[i * PARAMS_NBAR + j] = 0; - for (k = 0; k < PARAMS_N; k++) { - out[i * PARAMS_NBAR + j] += (uint16_t)(b[i * PARAMS_N + k] * (uint32_t)s[j * PARAMS_N + k]); - } - out[i * PARAMS_NBAR + j] = (uint32_t)(out[i * PARAMS_NBAR + j]) & ((1 << PARAMS_LOGQ) - 1); - } - } -} - - -void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_mul_add_sb_plus_e(uint16_t *out, const uint16_t *b, const uint16_t *s, const uint16_t *e) { - // Multiply by s on the left - // Inputs: b (N x N_BAR), s (N_BAR x N), e (N_BAR x N_BAR) - // Output: out = s*b + e (N_BAR x N_BAR) - int i, j, k; - - for (k = 0; k < PARAMS_NBAR; k++) { - for (i = 0; i < PARAMS_NBAR; i++) { - out[k * PARAMS_NBAR + i] = e[k * PARAMS_NBAR + i]; - for (j = 0; j < PARAMS_N; j++) { - out[k * PARAMS_NBAR + i] += (uint16_t)(s[k * PARAMS_N + j] * (uint32_t)b[j * PARAMS_NBAR + i]); - } - out[k * PARAMS_NBAR + i] = (uint32_t)(out[k * PARAMS_NBAR + i]) & ((1 << PARAMS_LOGQ) - 1); - } - } -} - - -void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_add(uint16_t *out, const uint16_t *a, const uint16_t *b) { - // Add a and b - // Inputs: a, b (N_BAR x N_BAR) - // Output: c = a + b - - for (size_t i = 0; i < (PARAMS_NBAR * PARAMS_NBAR); i++) { - out[i] = (a[i] + b[i]) & ((1 << PARAMS_LOGQ) - 1); - } -} - - -void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_sub(uint16_t *out, const uint16_t *a, const uint16_t *b) { - // Subtract a and b - // Inputs: a, b (N_BAR x N_BAR) - // Output: c = a - b - - for (size_t i = 0; i < (PARAMS_NBAR * PARAMS_NBAR); i++) { - out[i] = (a[i] - b[i]) & ((1 << PARAMS_LOGQ) - 1); - } -} - - -void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_key_encode(uint16_t *out, const uint16_t *in) { - // Encoding - unsigned int i, j, npieces_word = 8; - unsigned int nwords = (PARAMS_NBAR * PARAMS_NBAR) / 8; - uint64_t temp, mask = ((uint64_t)1 << PARAMS_EXTRACTED_BITS) - 1; - uint16_t *pos = out; - - for (i = 0; i < nwords; i++) { - temp = 0; - for (j = 0; j < PARAMS_EXTRACTED_BITS; j++) { - temp |= ((uint64_t)((uint8_t *)in)[i * PARAMS_EXTRACTED_BITS + j]) << (8 * j); - } - for (j = 0; j < npieces_word; j++) { - *pos = (uint16_t)((temp & mask) << (PARAMS_LOGQ - PARAMS_EXTRACTED_BITS)); - temp >>= PARAMS_EXTRACTED_BITS; - pos++; - } - } -} - - -void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_key_decode(uint16_t *out, const uint16_t *in) { - // Decoding - unsigned int i, j, index = 0, npieces_word = 8; - unsigned int nwords = (PARAMS_NBAR * PARAMS_NBAR) / 8; - uint16_t temp, maskex = ((uint16_t)1 << PARAMS_EXTRACTED_BITS) - 1, maskq = ((uint16_t)1 << PARAMS_LOGQ) - 1; - uint8_t *pos = (uint8_t *)out; - uint64_t templong; - - for (i = 0; i < nwords; i++) { - templong = 0; - for (j = 0; j < npieces_word; j++) { // temp = floor(in*2^{-11}+0.5) - temp = ((in[index] & maskq) + (1 << (PARAMS_LOGQ - PARAMS_EXTRACTED_BITS - 1))) >> (PARAMS_LOGQ - PARAMS_EXTRACTED_BITS); - templong |= ((uint64_t)(temp & maskex)) << (PARAMS_EXTRACTED_BITS * j); - index++; - } - for (j = 0; j < PARAMS_EXTRACTED_BITS; j++) { - pos[i * PARAMS_EXTRACTED_BITS + j] = (templong >> (8 * j)) & 0xFF; - } - } -} - - -void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_pack(uint8_t *out, size_t outlen, const uint16_t *in, size_t inlen, uint8_t lsb) { - // Pack the input uint16 vector into a char output vector, copying lsb bits from each input element. - // If inlen * lsb / 8 > outlen, only outlen * 8 bits are copied. - memset(out, 0, outlen); - - size_t i = 0; // whole bytes already filled in - size_t j = 0; // whole uint16_t already copied - uint16_t w = 0; // the leftover, not yet copied - uint8_t bits = 0; // the number of lsb in w - - while (i < outlen && (j < inlen || ((j == inlen) && (bits > 0)))) { - /* - in: | | |********|********| - ^ - j - w : | ****| - ^ - bits - out:|**|**|**|**|**|**|**|**|* | - ^^ - ib - */ - uint8_t b = 0; // bits in out[i] already filled in - while (b < 8) { - int nbits = min(8 - b, bits); - uint16_t mask = (1 << nbits) - 1; - uint8_t t = (uint8_t) ((w >> (bits - nbits)) & mask); // the bits to copy from w to out - out[i] = out[i] + (t << (8 - b - nbits)); - b += (uint8_t) nbits; - bits -= (uint8_t) nbits; - w &= ~(mask << bits); // not strictly necessary; mostly for debugging - - if (bits == 0) { - if (j < inlen) { - w = in[j]; - bits = lsb; - j++; - } else { - break; // the input vector is exhausted - } - } - } - if (b == 8) { // out[i] is filled in - i++; - } - } -} - - -void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_unpack(uint16_t *out, size_t outlen, const uint8_t *in, size_t inlen, uint8_t lsb) { - // Unpack the input char vector into a uint16_t output vector, copying lsb bits - // for each output element from input. outlen must be at least ceil(inlen * 8 / lsb). - memset(out, 0, outlen * sizeof(uint16_t)); - - size_t i = 0; // whole uint16_t already filled in - size_t j = 0; // whole bytes already copied - uint8_t w = 0; // the leftover, not yet copied - uint8_t bits = 0; // the number of lsb bits of w - - while (i < outlen && (j < inlen || ((j == inlen) && (bits > 0)))) { - /* - in: | | | | | | |**|**|... - ^ - j - w : | *| - ^ - bits - out:| *****| *****| *** | |... - ^ ^ - i b - */ - uint8_t b = 0; // bits in out[i] already filled in - while (b < lsb) { - int nbits = min(lsb - b, bits); - uint16_t mask = (1 << nbits) - 1; - uint8_t t = (w >> (bits - nbits)) & mask; // the bits to copy from w to out - out[i] = out[i] + (t << (lsb - b - nbits)); - b += (uint8_t) nbits; - bits -= (uint8_t) nbits; - w &= ~(mask << bits); // not strictly necessary; mostly for debugging - - if (bits == 0) { - if (j < inlen) { - w = in[j]; - bits = 8; - j++; - } else { - break; // the input vector is exhausted - } - } - } - if (b == lsb) { // out[i] is filled in - i++; - } - } -} - - -int8_t PQCLEAN_FRODOKEM1344SHAKE_CLEAN_ct_verify(const uint16_t *a, const uint16_t *b, size_t len) { - // Compare two arrays in constant time. - // Returns 0 if the byte arrays are equal, -1 otherwise. - uint16_t r = 0; - - for (size_t i = 0; i < len; i++) { - r |= a[i] ^ b[i]; - } - - r = (-(int16_t)(r >> 1) | -(int16_t)(r & 1)) >> (8 * sizeof(uint16_t) -1); - return (int8_t)r; -} - - -void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_ct_select(uint8_t *r, const uint8_t *a, const uint8_t *b, size_t len, int8_t selector) { - // Select one of the two input arrays to be moved to r - // If (selector == 0) then load r with a, else if (selector == -1) load r with b - - for (size_t i = 0; i < len; i++) { - r[i] = (~selector & a[i]) | (selector & b[i]); - } -} - - -void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes(uint8_t *mem, size_t n) { - // Clear 8-bit bytes from memory. "n" indicates the number of bytes to be zeroed. - // This function uses the volatile type qualifier to inform the compiler not to optimize out the memory clearing. - volatile uint8_t *v = mem; - - for (size_t i = 0; i < n; i++) { - v[i] = 0; - } -} diff --git a/src/kem/frodo/frodokem640shake/clean/CMakeLists.txt b/src/kem/frodo/frodokem640shake/clean/CMakeLists.txt deleted file mode 100644 index 001e257f..00000000 --- a/src/kem/frodo/frodokem640shake/clean/CMakeLists.txt +++ /dev/null @@ -1,10 +0,0 @@ -set( - SRC_CLEAN_FRODOKEM640SHAKE - kem.c - matrix_shake.c - noise.c - util.c -) - -define_kem_alg(frodo640shake_clean - PQCLEAN_FRODOKEM640SHAKE_OPT "${SRC_CLEAN_FRODOKEM640SHAKE}" "${CMAKE_CURRENT_SOURCE_DIR}") diff --git a/src/kem/frodo/frodokem640shake/clean/api.h b/src/kem/frodo/frodokem640shake/clean/api.h deleted file mode 100644 index 74bbdab2..00000000 --- a/src/kem/frodo/frodokem640shake/clean/api.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef PQCLEAN_FRODOKEM640SHAKE_CLEAN_API_H -#define PQCLEAN_FRODOKEM640SHAKE_CLEAN_API_H - -#include -#include - -#define PQCLEAN_FRODOKEM640SHAKE_CLEAN_CRYPTO_SECRETKEYBYTES 19888 // sizeof(s) + CRYPTO_PUBLICKEYBYTES + 2*PARAMS_N*PARAMS_NBAR + BYTES_PKHASH -#define PQCLEAN_FRODOKEM640SHAKE_CLEAN_CRYPTO_PUBLICKEYBYTES 9616 // sizeof(seed_A) + (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 -#define PQCLEAN_FRODOKEM640SHAKE_CLEAN_CRYPTO_BYTES 16 -#define PQCLEAN_FRODOKEM640SHAKE_CLEAN_CRYPTO_CIPHERTEXTBYTES 9720 // (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 + (PARAMS_LOGQ*PARAMS_NBAR*PARAMS_NBAR)/8 - -#define PQCLEAN_FRODOKEM640SHAKE_CLEAN_CRYPTO_ALGNAME "FrodoKEM-640-SHAKE" - -int PQCLEAN_FRODOKEM640SHAKE_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk); - -int PQCLEAN_FRODOKEM640SHAKE_CLEAN_crypto_kem_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); - -int PQCLEAN_FRODOKEM640SHAKE_CLEAN_crypto_kem_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); - -#endif diff --git a/src/kem/frodo/frodokem640shake/clean/common.h b/src/kem/frodo/frodokem640shake/clean/common.h deleted file mode 100644 index ddba6428..00000000 --- a/src/kem/frodo/frodokem640shake/clean/common.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef COMMON_H -#define COMMON_H - -int PQCLEAN_FRODOKEM640SHAKE_CLEAN_mul_add_as_plus_e(uint16_t *out, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A); -int PQCLEAN_FRODOKEM640SHAKE_CLEAN_mul_add_sa_plus_e(uint16_t *out, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A); -void PQCLEAN_FRODOKEM640SHAKE_CLEAN_sample_n(uint16_t *s, size_t n); -void PQCLEAN_FRODOKEM640SHAKE_CLEAN_mul_bs(uint16_t *out, const uint16_t *b, const uint16_t *s); -void PQCLEAN_FRODOKEM640SHAKE_CLEAN_mul_add_sb_plus_e(uint16_t *out, const uint16_t *b, const uint16_t *s, const uint16_t *e); -void PQCLEAN_FRODOKEM640SHAKE_CLEAN_add(uint16_t *out, const uint16_t *a, const uint16_t *b); -void PQCLEAN_FRODOKEM640SHAKE_CLEAN_sub(uint16_t *out, const uint16_t *a, const uint16_t *b); -void PQCLEAN_FRODOKEM640SHAKE_CLEAN_key_encode(uint16_t *out, const uint16_t *in); -void PQCLEAN_FRODOKEM640SHAKE_CLEAN_key_decode(uint16_t *out, const uint16_t *in); -void PQCLEAN_FRODOKEM640SHAKE_CLEAN_pack(uint8_t *out, size_t outlen, const uint16_t *in, size_t inlen, uint8_t lsb); -void PQCLEAN_FRODOKEM640SHAKE_CLEAN_unpack(uint16_t *out, size_t outlen, const uint8_t *in, size_t inlen, uint8_t lsb); -int8_t PQCLEAN_FRODOKEM640SHAKE_CLEAN_ct_verify(const uint16_t *a, const uint16_t *b, size_t len); -void PQCLEAN_FRODOKEM640SHAKE_CLEAN_ct_select(uint8_t *r, const uint8_t *a, const uint8_t *b, size_t len, int8_t selector); -void PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes(uint8_t *mem, size_t n); -uint16_t PQCLEAN_FRODOKEM640SHAKE_CLEAN_LE_TO_UINT16(uint16_t n); -uint16_t PQCLEAN_FRODOKEM640SHAKE_CLEAN_UINT16_TO_LE(uint16_t n); - -#endif diff --git a/src/kem/frodo/frodokem640shake/clean/kem.c b/src/kem/frodo/frodokem640shake/clean/kem.c deleted file mode 100644 index 40d5dd76..00000000 --- a/src/kem/frodo/frodokem640shake/clean/kem.c +++ /dev/null @@ -1,237 +0,0 @@ -/******************************************************************************************** -* FrodoKEM: Learning with Errors Key Encapsulation -* -* Abstract: Key Encapsulation Mechanism (KEM) based on Frodo -*********************************************************************************************/ - -#include -#include - -#include "fips202.h" -#include "randombytes.h" - -#include "api.h" -#include "common.h" -#include "params.h" - -int PQCLEAN_FRODOKEM640SHAKE_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk) { - // FrodoKEM's key generation - // Outputs: public key pk ( BYTES_SEED_A + (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 bytes) - // secret key sk (CRYPTO_BYTES + BYTES_SEED_A + (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 + 2*PARAMS_N*PARAMS_NBAR + BYTES_PKHASH bytes) - uint8_t *pk_seedA = &pk[0]; - uint8_t *pk_b = &pk[BYTES_SEED_A]; - uint8_t *sk_s = &sk[0]; - uint8_t *sk_pk = &sk[CRYPTO_BYTES]; - uint8_t *sk_S = &sk[CRYPTO_BYTES + CRYPTO_PUBLICKEYBYTES]; - uint8_t *sk_pkh = &sk[CRYPTO_BYTES + CRYPTO_PUBLICKEYBYTES + 2 * PARAMS_N * PARAMS_NBAR]; - uint16_t B[PARAMS_N * PARAMS_NBAR] = {0}; - uint16_t S[2 * PARAMS_N * PARAMS_NBAR] = {0}; // contains secret data - uint16_t *E = &S[PARAMS_N * PARAMS_NBAR]; // contains secret data - uint8_t randomness[2 * CRYPTO_BYTES + BYTES_SEED_A]; // contains secret data via randomness_s and randomness_seedSE - uint8_t *randomness_s = &randomness[0]; // contains secret data - uint8_t *randomness_seedSE = &randomness[CRYPTO_BYTES]; // contains secret data - uint8_t *randomness_z = &randomness[2 * CRYPTO_BYTES]; - uint8_t shake_input_seedSE[1 + CRYPTO_BYTES]; // contains secret data - - // Generate the secret value s, the seed for S and E, and the seed for the seed for A. Add seed_A to the public key - randombytes(randomness, CRYPTO_BYTES + CRYPTO_BYTES + BYTES_SEED_A); - shake(pk_seedA, BYTES_SEED_A, randomness_z, BYTES_SEED_A); - - // Generate S and E, and compute B = A*S + E. Generate A on-the-fly - shake_input_seedSE[0] = 0x5F; - memcpy(&shake_input_seedSE[1], randomness_seedSE, CRYPTO_BYTES); - shake((uint8_t *)S, 2 * PARAMS_N * PARAMS_NBAR * sizeof(uint16_t), shake_input_seedSE, 1 + CRYPTO_BYTES); - for (size_t i = 0; i < 2 * PARAMS_N * PARAMS_NBAR; i++) { - S[i] = PQCLEAN_FRODOKEM640SHAKE_CLEAN_LE_TO_UINT16(S[i]); - } - PQCLEAN_FRODOKEM640SHAKE_CLEAN_sample_n(S, PARAMS_N * PARAMS_NBAR); - PQCLEAN_FRODOKEM640SHAKE_CLEAN_sample_n(E, PARAMS_N * PARAMS_NBAR); - PQCLEAN_FRODOKEM640SHAKE_CLEAN_mul_add_as_plus_e(B, S, E, pk); - - // Encode the second part of the public key - PQCLEAN_FRODOKEM640SHAKE_CLEAN_pack(pk_b, CRYPTO_PUBLICKEYBYTES - BYTES_SEED_A, B, PARAMS_N * PARAMS_NBAR, PARAMS_LOGQ); - - // Add s, pk and S to the secret key - memcpy(sk_s, randomness_s, CRYPTO_BYTES); - memcpy(sk_pk, pk, CRYPTO_PUBLICKEYBYTES); - for (size_t i = 0; i < PARAMS_N * PARAMS_NBAR; i++) { - S[i] = PQCLEAN_FRODOKEM640SHAKE_CLEAN_UINT16_TO_LE(S[i]); - } - memcpy(sk_S, S, 2 * PARAMS_N * PARAMS_NBAR); - - // Add H(pk) to the secret key - shake(sk_pkh, BYTES_PKHASH, pk, CRYPTO_PUBLICKEYBYTES); - - // Cleanup: - PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes((uint8_t *)S, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); - PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes((uint8_t *)E, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); - PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes(randomness, 2 * CRYPTO_BYTES); - PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes(shake_input_seedSE, 1 + CRYPTO_BYTES); - return 0; -} - - -int PQCLEAN_FRODOKEM640SHAKE_CLEAN_crypto_kem_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk) { - // FrodoKEM's key encapsulation - const uint8_t *pk_seedA = &pk[0]; - const uint8_t *pk_b = &pk[BYTES_SEED_A]; - uint8_t *ct_c1 = &ct[0]; - uint8_t *ct_c2 = &ct[(PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8]; - uint16_t B[PARAMS_N * PARAMS_NBAR] = {0}; - uint16_t V[PARAMS_NBAR * PARAMS_NBAR] = {0}; // contains secret data - uint16_t C[PARAMS_NBAR * PARAMS_NBAR] = {0}; - uint16_t Bp[PARAMS_N * PARAMS_NBAR] = {0}; - uint16_t Sp[(2 * PARAMS_N + PARAMS_NBAR)*PARAMS_NBAR] = {0}; // contains secret data - uint16_t *Ep = &Sp[PARAMS_N * PARAMS_NBAR]; // contains secret data - uint16_t *Epp = &Sp[2 * PARAMS_N * PARAMS_NBAR]; // contains secret data - uint8_t G2in[BYTES_PKHASH + BYTES_MU]; // contains secret data via mu - uint8_t *pkh = &G2in[0]; - uint8_t *mu = &G2in[BYTES_PKHASH]; // contains secret data - uint8_t G2out[2 * CRYPTO_BYTES]; // contains secret data - uint8_t *seedSE = &G2out[0]; // contains secret data - uint8_t *k = &G2out[CRYPTO_BYTES]; // contains secret data - uint8_t Fin[CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES]; // contains secret data via Fin_k - uint8_t *Fin_ct = &Fin[0]; - uint8_t *Fin_k = &Fin[CRYPTO_CIPHERTEXTBYTES]; // contains secret data - uint8_t shake_input_seedSE[1 + CRYPTO_BYTES]; // contains secret data - - // pkh <- G_1(pk), generate random mu, compute (seedSE || k) = G_2(pkh || mu) - shake(pkh, BYTES_PKHASH, pk, CRYPTO_PUBLICKEYBYTES); - randombytes(mu, BYTES_MU); - shake(G2out, CRYPTO_BYTES + CRYPTO_BYTES, G2in, BYTES_PKHASH + BYTES_MU); - - // Generate Sp and Ep, and compute Bp = Sp*A + Ep. Generate A on-the-fly - shake_input_seedSE[0] = 0x96; - memcpy(&shake_input_seedSE[1], seedSE, CRYPTO_BYTES); - shake((uint8_t *)Sp, (2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR * sizeof(uint16_t), shake_input_seedSE, 1 + CRYPTO_BYTES); - for (size_t i = 0; i < (2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR; i++) { - Sp[i] = PQCLEAN_FRODOKEM640SHAKE_CLEAN_LE_TO_UINT16(Sp[i]); - } - PQCLEAN_FRODOKEM640SHAKE_CLEAN_sample_n(Sp, PARAMS_N * PARAMS_NBAR); - PQCLEAN_FRODOKEM640SHAKE_CLEAN_sample_n(Ep, PARAMS_N * PARAMS_NBAR); - PQCLEAN_FRODOKEM640SHAKE_CLEAN_mul_add_sa_plus_e(Bp, Sp, Ep, pk_seedA); - PQCLEAN_FRODOKEM640SHAKE_CLEAN_pack(ct_c1, (PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8, Bp, PARAMS_N * PARAMS_NBAR, PARAMS_LOGQ); - - // Generate Epp, and compute V = Sp*B + Epp - PQCLEAN_FRODOKEM640SHAKE_CLEAN_sample_n(Epp, PARAMS_NBAR * PARAMS_NBAR); - PQCLEAN_FRODOKEM640SHAKE_CLEAN_unpack(B, PARAMS_N * PARAMS_NBAR, pk_b, CRYPTO_PUBLICKEYBYTES - BYTES_SEED_A, PARAMS_LOGQ); - PQCLEAN_FRODOKEM640SHAKE_CLEAN_mul_add_sb_plus_e(V, B, Sp, Epp); - - // Encode mu, and compute C = V + enc(mu) (mod q) - PQCLEAN_FRODOKEM640SHAKE_CLEAN_key_encode(C, (uint16_t *)mu); - PQCLEAN_FRODOKEM640SHAKE_CLEAN_add(C, V, C); - PQCLEAN_FRODOKEM640SHAKE_CLEAN_pack(ct_c2, (PARAMS_LOGQ * PARAMS_NBAR * PARAMS_NBAR) / 8, C, PARAMS_NBAR * PARAMS_NBAR, PARAMS_LOGQ); - - // Compute ss = F(ct||KK) - memcpy(Fin_ct, ct, CRYPTO_CIPHERTEXTBYTES); - memcpy(Fin_k, k, CRYPTO_BYTES); - shake(ss, CRYPTO_BYTES, Fin, CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES); - - // Cleanup: - PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes((uint8_t *)V, PARAMS_NBAR * PARAMS_NBAR * sizeof(uint16_t)); - PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes((uint8_t *)Sp, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); - PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes((uint8_t *)Ep, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); - PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes((uint8_t *)Epp, PARAMS_NBAR * PARAMS_NBAR * sizeof(uint16_t)); - PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes(mu, BYTES_MU); - PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes(G2out, 2 * CRYPTO_BYTES); - PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes(Fin_k, CRYPTO_BYTES); - PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes(shake_input_seedSE, 1 + CRYPTO_BYTES); - return 0; -} - - -int PQCLEAN_FRODOKEM640SHAKE_CLEAN_crypto_kem_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk) { - // FrodoKEM's key decapsulation - uint16_t B[PARAMS_N * PARAMS_NBAR] = {0}; - uint16_t Bp[PARAMS_N * PARAMS_NBAR] = {0}; - uint16_t W[PARAMS_NBAR * PARAMS_NBAR] = {0}; // contains secret data - uint16_t C[PARAMS_NBAR * PARAMS_NBAR] = {0}; - uint16_t CC[PARAMS_NBAR * PARAMS_NBAR] = {0}; - uint16_t BBp[PARAMS_N * PARAMS_NBAR] = {0}; - uint16_t Sp[(2 * PARAMS_N + PARAMS_NBAR)*PARAMS_NBAR] = {0}; // contains secret data - uint16_t *Ep = &Sp[PARAMS_N * PARAMS_NBAR]; // contains secret data - uint16_t *Epp = &Sp[2 * PARAMS_N * PARAMS_NBAR]; // contains secret data - const uint8_t *ct_c1 = &ct[0]; - const uint8_t *ct_c2 = &ct[(PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8]; - const uint8_t *sk_s = &sk[0]; - const uint8_t *sk_pk = &sk[CRYPTO_BYTES]; - const uint8_t *sk_S = &sk[CRYPTO_BYTES + CRYPTO_PUBLICKEYBYTES]; - uint16_t S[PARAMS_N * PARAMS_NBAR]; // contains secret data - const uint8_t *sk_pkh = &sk[CRYPTO_BYTES + CRYPTO_PUBLICKEYBYTES + 2 * PARAMS_N * PARAMS_NBAR]; - const uint8_t *pk_seedA = &sk_pk[0]; - const uint8_t *pk_b = &sk_pk[BYTES_SEED_A]; - uint8_t G2in[BYTES_PKHASH + BYTES_MU]; // contains secret data via muprime - uint8_t *pkh = &G2in[0]; - uint8_t *muprime = &G2in[BYTES_PKHASH]; // contains secret data - uint8_t G2out[2 * CRYPTO_BYTES]; // contains secret data - uint8_t *seedSEprime = &G2out[0]; // contains secret data - uint8_t *kprime = &G2out[CRYPTO_BYTES]; // contains secret data - uint8_t Fin[CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES]; // contains secret data via Fin_k - uint8_t *Fin_ct = &Fin[0]; - uint8_t *Fin_k = &Fin[CRYPTO_CIPHERTEXTBYTES]; // contains secret data - uint8_t shake_input_seedSEprime[1 + CRYPTO_BYTES]; // contains secret data - - for (size_t i = 0; i < PARAMS_N * PARAMS_NBAR; i++) { - S[i] = sk_S[2 * i] | (sk_S[2 * i + 1] << 8); - } - - // Compute W = C - Bp*S (mod q), and decode the randomness mu - PQCLEAN_FRODOKEM640SHAKE_CLEAN_unpack(Bp, PARAMS_N * PARAMS_NBAR, ct_c1, (PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8, PARAMS_LOGQ); - PQCLEAN_FRODOKEM640SHAKE_CLEAN_unpack(C, PARAMS_NBAR * PARAMS_NBAR, ct_c2, (PARAMS_LOGQ * PARAMS_NBAR * PARAMS_NBAR) / 8, PARAMS_LOGQ); - PQCLEAN_FRODOKEM640SHAKE_CLEAN_mul_bs(W, Bp, S); - PQCLEAN_FRODOKEM640SHAKE_CLEAN_sub(W, C, W); - PQCLEAN_FRODOKEM640SHAKE_CLEAN_key_decode((uint16_t *)muprime, W); - - // Generate (seedSE' || k') = G_2(pkh || mu') - memcpy(pkh, sk_pkh, BYTES_PKHASH); - shake(G2out, CRYPTO_BYTES + CRYPTO_BYTES, G2in, BYTES_PKHASH + BYTES_MU); - - // Generate Sp and Ep, and compute BBp = Sp*A + Ep. Generate A on-the-fly - shake_input_seedSEprime[0] = 0x96; - memcpy(&shake_input_seedSEprime[1], seedSEprime, CRYPTO_BYTES); - shake((uint8_t *)Sp, (2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR * sizeof(uint16_t), shake_input_seedSEprime, 1 + CRYPTO_BYTES); - for (size_t i = 0; i < (2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR; i++) { - Sp[i] = PQCLEAN_FRODOKEM640SHAKE_CLEAN_LE_TO_UINT16(Sp[i]); - } - PQCLEAN_FRODOKEM640SHAKE_CLEAN_sample_n(Sp, PARAMS_N * PARAMS_NBAR); - PQCLEAN_FRODOKEM640SHAKE_CLEAN_sample_n(Ep, PARAMS_N * PARAMS_NBAR); - PQCLEAN_FRODOKEM640SHAKE_CLEAN_mul_add_sa_plus_e(BBp, Sp, Ep, pk_seedA); - - // Generate Epp, and compute W = Sp*B + Epp - PQCLEAN_FRODOKEM640SHAKE_CLEAN_sample_n(Epp, PARAMS_NBAR * PARAMS_NBAR); - PQCLEAN_FRODOKEM640SHAKE_CLEAN_unpack(B, PARAMS_N * PARAMS_NBAR, pk_b, CRYPTO_PUBLICKEYBYTES - BYTES_SEED_A, PARAMS_LOGQ); - PQCLEAN_FRODOKEM640SHAKE_CLEAN_mul_add_sb_plus_e(W, B, Sp, Epp); - - // Encode mu, and compute CC = W + enc(mu') (mod q) - PQCLEAN_FRODOKEM640SHAKE_CLEAN_key_encode(CC, (uint16_t *)muprime); - PQCLEAN_FRODOKEM640SHAKE_CLEAN_add(CC, W, CC); - - // Prepare input to F - memcpy(Fin_ct, ct, CRYPTO_CIPHERTEXTBYTES); - - // Reducing BBp modulo q - for (size_t i = 0; i < PARAMS_N * PARAMS_NBAR; i++) { - BBp[i] = BBp[i] & ((1 << PARAMS_LOGQ) - 1); - } - - // If (Bp == BBp & C == CC) then ss = F(ct || k'), else ss = F(ct || s) - // Needs to avoid branching on secret data as per: - // Qian Guo, Thomas Johansson, Alexander Nilsson. A key-recovery timing attack on post-quantum - // primitives using the Fujisaki-Okamoto transformation and its application on FrodoKEM. In CRYPTO 2020. - int8_t selector = PQCLEAN_FRODOKEM640SHAKE_CLEAN_ct_verify(Bp, BBp, PARAMS_N * PARAMS_NBAR) | PQCLEAN_FRODOKEM640SHAKE_CLEAN_ct_verify(C, CC, PARAMS_NBAR * PARAMS_NBAR); - // If (selector == 0) then load k' to do ss = F(ct || k'), else if (selector == -1) load s to do ss = F(ct || s) - PQCLEAN_FRODOKEM640SHAKE_CLEAN_ct_select((uint8_t *)Fin_k, (uint8_t *)kprime, (uint8_t *)sk_s, CRYPTO_BYTES, selector); - shake(ss, CRYPTO_BYTES, Fin, CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES); - - // Cleanup: - PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes((uint8_t *)W, PARAMS_NBAR * PARAMS_NBAR * sizeof(uint16_t)); - PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes((uint8_t *)Sp, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); - PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes((uint8_t *)S, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); - PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes((uint8_t *)Ep, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); - PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes((uint8_t *)Epp, PARAMS_NBAR * PARAMS_NBAR * sizeof(uint16_t)); - PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes(muprime, BYTES_MU); - PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes(G2out, 2 * CRYPTO_BYTES); - PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes(Fin_k, CRYPTO_BYTES); - PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes(shake_input_seedSEprime, 1 + CRYPTO_BYTES); - return 0; -} diff --git a/src/kem/frodo/frodokem640shake/clean/matrix_shake.c b/src/kem/frodo/frodokem640shake/clean/matrix_shake.c deleted file mode 100644 index 53815471..00000000 --- a/src/kem/frodo/frodokem640shake/clean/matrix_shake.c +++ /dev/null @@ -1,108 +0,0 @@ -/******************************************************************************************** -* FrodoKEM: Learning with Errors Key Encapsulation -* -* Abstract: matrix arithmetic functions used by the KEM -*********************************************************************************************/ - -#include -#include - -#include "fips202.h" - -#include "api.h" -#include "common.h" -#include "params.h" - -int PQCLEAN_FRODOKEM640SHAKE_CLEAN_mul_add_as_plus_e(uint16_t *out, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A) { - // Generate-and-multiply: generate matrix A (N x N) row-wise, multiply by s on the right. - // Inputs: s, e (N x N_BAR) - // Output: out = A*s + e (N x N_BAR) - int j, k; - uint16_t i; - int16_t a_row[4 * PARAMS_N]; - - for (i = 0; i < (PARAMS_N * PARAMS_NBAR); i += 2) { - *((uint32_t *)&out[i]) = *((uint32_t *)&e[i]); - } - - uint8_t seed_A_separated[2 + BYTES_SEED_A]; - uint16_t *seed_A_origin = (uint16_t *)&seed_A_separated; - memcpy(&seed_A_separated[2], seed_A, BYTES_SEED_A); - for (i = 0; i < PARAMS_N; i += 4) { - seed_A_origin[0] = PQCLEAN_FRODOKEM640SHAKE_CLEAN_UINT16_TO_LE(i + 0); - shake128((unsigned char *)(a_row + 0 * PARAMS_N), (unsigned long long)(2 * PARAMS_N), seed_A_separated, 2 + BYTES_SEED_A); - seed_A_origin[0] = PQCLEAN_FRODOKEM640SHAKE_CLEAN_UINT16_TO_LE(i + 1); - shake128((unsigned char *)(a_row + 1 * PARAMS_N), (unsigned long long)(2 * PARAMS_N), seed_A_separated, 2 + BYTES_SEED_A); - seed_A_origin[0] = PQCLEAN_FRODOKEM640SHAKE_CLEAN_UINT16_TO_LE(i + 2); - shake128((unsigned char *)(a_row + 2 * PARAMS_N), (unsigned long long)(2 * PARAMS_N), seed_A_separated, 2 + BYTES_SEED_A); - seed_A_origin[0] = PQCLEAN_FRODOKEM640SHAKE_CLEAN_UINT16_TO_LE(i + 3); - shake128((unsigned char *)(a_row + 3 * PARAMS_N), (unsigned long long)(2 * PARAMS_N), seed_A_separated, 2 + BYTES_SEED_A); - for (k = 0; k < 4 * PARAMS_N; k++) { - a_row[k] = PQCLEAN_FRODOKEM640SHAKE_CLEAN_LE_TO_UINT16(a_row[k]); - } - for (k = 0; k < PARAMS_NBAR; k++) { - uint16_t sum[4] = {0}; - for (j = 0; j < PARAMS_N; j++) { // Matrix-vector multiplication - uint16_t sp = s[k * PARAMS_N + j]; - sum[0] += a_row[0 * PARAMS_N + j] * sp; // Go through four lines with same s - sum[1] += a_row[1 * PARAMS_N + j] * sp; - sum[2] += a_row[2 * PARAMS_N + j] * sp; - sum[3] += a_row[3 * PARAMS_N + j] * sp; - } - out[(i + 0)*PARAMS_NBAR + k] += sum[0]; - out[(i + 2)*PARAMS_NBAR + k] += sum[2]; - out[(i + 1)*PARAMS_NBAR + k] += sum[1]; - out[(i + 3)*PARAMS_NBAR + k] += sum[3]; - } - } - return 1; -} - - - - -int PQCLEAN_FRODOKEM640SHAKE_CLEAN_mul_add_sa_plus_e(uint16_t *out, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A) { - // Generate-and-multiply: generate matrix A (N x N) column-wise, multiply by s' on the left. - // Inputs: s', e' (N_BAR x N) - // Output: out = s'*A + e' (N_BAR x N) - int i, j; - uint16_t kk; - for (i = 0; i < (PARAMS_N * PARAMS_NBAR); i += 2) { - *((uint32_t *)&out[i]) = *((uint32_t *)&e[i]); - } - - int t = 0; - uint16_t a_cols[4 * PARAMS_N]; - - int k; - uint8_t seed_A_separated[2 + BYTES_SEED_A]; - uint16_t *seed_A_origin = (uint16_t *)&seed_A_separated; - memcpy(&seed_A_separated[2], seed_A, BYTES_SEED_A); - for (kk = 0; kk < PARAMS_N; kk += 4) { - seed_A_origin[0] = PQCLEAN_FRODOKEM640SHAKE_CLEAN_UINT16_TO_LE(kk + 0); - shake128((unsigned char *)(a_cols + 0 * PARAMS_N), (unsigned long long)(2 * PARAMS_N), seed_A_separated, 2 + BYTES_SEED_A); - seed_A_origin[0] = PQCLEAN_FRODOKEM640SHAKE_CLEAN_UINT16_TO_LE(kk + 1); - shake128((unsigned char *)(a_cols + 1 * PARAMS_N), (unsigned long long)(2 * PARAMS_N), seed_A_separated, 2 + BYTES_SEED_A); - seed_A_origin[0] = PQCLEAN_FRODOKEM640SHAKE_CLEAN_UINT16_TO_LE(kk + 2); - shake128((unsigned char *)(a_cols + 2 * PARAMS_N), (unsigned long long)(2 * PARAMS_N), seed_A_separated, 2 + BYTES_SEED_A); - seed_A_origin[0] = PQCLEAN_FRODOKEM640SHAKE_CLEAN_UINT16_TO_LE(kk + 3); - shake128((unsigned char *)(a_cols + 3 * PARAMS_N), (unsigned long long)(2 * PARAMS_N), seed_A_separated, 2 + BYTES_SEED_A); - for (i = 0; i < 4 * PARAMS_N; i++) { - a_cols[i] = PQCLEAN_FRODOKEM640SHAKE_CLEAN_LE_TO_UINT16(a_cols[i]); - } - - for (i = 0; i < PARAMS_NBAR; i++) { - uint16_t sum[PARAMS_N] = {0}; - for (j = 0; j < 4; j++) { - uint16_t sp = s[i * PARAMS_N + kk + j]; - for (k = 0; k < PARAMS_N; k++) { // Matrix-vector multiplication - sum[k] += (uint16_t)(sp * (uint32_t)a_cols[(t + j) * PARAMS_N + k]); - } - } - for (k = 0; k < PARAMS_N; k++) { - out[i * PARAMS_N + k] += sum[k]; - } - } - } - return 1; -} diff --git a/src/kem/frodo/frodokem640shake/clean/noise.c b/src/kem/frodo/frodokem640shake/clean/noise.c deleted file mode 100644 index 9ca892e3..00000000 --- a/src/kem/frodo/frodokem640shake/clean/noise.c +++ /dev/null @@ -1,35 +0,0 @@ -/******************************************************************************************** -* FrodoKEM: Learning with Errors Key Encapsulation -* -* Abstract: noise sampling functions -*********************************************************************************************/ - -#include - -#include "api.h" -#include "common.h" -#include "params.h" - -static const uint16_t CDF_TABLE[CDF_TABLE_LEN] = CDF_TABLE_DATA; - -void PQCLEAN_FRODOKEM640SHAKE_CLEAN_sample_n(uint16_t *s, size_t n) { - // Fills vector s with n samples from the noise distribution which requires 16 bits to sample. - // The distribution is specified by its CDF. - // Input: pseudo-random values (2*n bytes) passed in s. The input is overwritten by the output. - size_t i; - unsigned int j; - - for (i = 0; i < n; ++i) { - uint16_t sample = 0; - uint16_t prnd = s[i] >> 1; // Drop the least significant bit - uint16_t sign = s[i] & 0x1; // Pick the least significant bit - - // No need to compare with the last value. - for (j = 0; j < (unsigned int)(CDF_TABLE_LEN - 1); j++) { - // Constant time comparison: 1 if CDF_TABLE[j] < s, 0 otherwise. Uses the fact that CDF_TABLE[j] and s fit in 15 bits. - sample += (uint16_t)(CDF_TABLE[j] - prnd) >> 15; - } - // Assuming that sign is either 0 or 1, flips sample iff sign = 1 - s[i] = ((-sign) ^ sample) + sign; - } -} diff --git a/src/kem/frodo/frodokem640shake/clean/params.h b/src/kem/frodo/frodokem640shake/clean/params.h deleted file mode 100644 index 81a30054..00000000 --- a/src/kem/frodo/frodokem640shake/clean/params.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef PARAMS_H -#define PARAMS_H - -#define CRYPTO_SECRETKEYBYTES PQCLEAN_FRODOKEM640SHAKE_CLEAN_CRYPTO_SECRETKEYBYTES -#define CRYPTO_PUBLICKEYBYTES PQCLEAN_FRODOKEM640SHAKE_CLEAN_CRYPTO_PUBLICKEYBYTES -#define CRYPTO_BYTES PQCLEAN_FRODOKEM640SHAKE_CLEAN_CRYPTO_BYTES -#define CRYPTO_CIPHERTEXTBYTES PQCLEAN_FRODOKEM640SHAKE_CLEAN_CRYPTO_CIPHERTEXTBYTES - -#define PARAMS_N 640 -#define PARAMS_NBAR 8 -#define PARAMS_LOGQ 15 -#define PARAMS_Q (1 << PARAMS_LOGQ) -#define PARAMS_EXTRACTED_BITS 2 -#define PARAMS_STRIPE_STEP 8 -#define PARAMS_PARALLEL 4 -#define BYTES_SEED_A 16 -#define BYTES_MU ((PARAMS_EXTRACTED_BITS * PARAMS_NBAR * PARAMS_NBAR) / 8) -#define BYTES_PKHASH CRYPTO_BYTES - -// Selecting SHAKE XOF function for the KEM and noise sampling -#define shake shake128 - -// CDF table -#define CDF_TABLE_DATA {4643, 13363, 20579, 25843, 29227, 31145, 32103, 32525, 32689, 32745, 32762, 32766, 32767} -#define CDF_TABLE_LEN 13 - -#endif diff --git a/src/kem/frodo/frodokem640shake/clean/util.c b/src/kem/frodo/frodokem640shake/clean/util.c deleted file mode 100644 index 67be6b76..00000000 --- a/src/kem/frodo/frodokem640shake/clean/util.c +++ /dev/null @@ -1,264 +0,0 @@ -/******************************************************************************************** -* FrodoKEM: Learning with Errors Key Encapsulation -* -* Abstract: additional functions for FrodoKEM -*********************************************************************************************/ - -#include -#include - -#include "api.h" -#include "common.h" -#include "params.h" - -static inline uint8_t min(uint8_t x, uint8_t y) { - if (x < y) { - return x; - } - return y; -} - -uint16_t PQCLEAN_FRODOKEM640SHAKE_CLEAN_LE_TO_UINT16(uint16_t n) { - return (((uint8_t *) &n)[0] | (((uint8_t *) &n)[1] << 8)); -} - -uint16_t PQCLEAN_FRODOKEM640SHAKE_CLEAN_UINT16_TO_LE(uint16_t n) { - uint16_t y; - uint8_t *z = (uint8_t *) &y; - z[0] = n & 0xFF; - z[1] = (n & 0xFF00) >> 8; - return y; -} - -void PQCLEAN_FRODOKEM640SHAKE_CLEAN_mul_bs(uint16_t *out, const uint16_t *b, const uint16_t *s) { - // Multiply by s on the right - // Inputs: b (N_BAR x N), s (N x N_BAR) - // Output: out = b*s (N_BAR x N_BAR) - int i, j, k; - - for (i = 0; i < PARAMS_NBAR; i++) { - for (j = 0; j < PARAMS_NBAR; j++) { - out[i * PARAMS_NBAR + j] = 0; - for (k = 0; k < PARAMS_N; k++) { - out[i * PARAMS_NBAR + j] += (uint16_t)(b[i * PARAMS_N + k] * (uint32_t)s[j * PARAMS_N + k]); - } - out[i * PARAMS_NBAR + j] = (uint32_t)(out[i * PARAMS_NBAR + j]) & ((1 << PARAMS_LOGQ) - 1); - } - } -} - - -void PQCLEAN_FRODOKEM640SHAKE_CLEAN_mul_add_sb_plus_e(uint16_t *out, const uint16_t *b, const uint16_t *s, const uint16_t *e) { - // Multiply by s on the left - // Inputs: b (N x N_BAR), s (N_BAR x N), e (N_BAR x N_BAR) - // Output: out = s*b + e (N_BAR x N_BAR) - int i, j, k; - - for (k = 0; k < PARAMS_NBAR; k++) { - for (i = 0; i < PARAMS_NBAR; i++) { - out[k * PARAMS_NBAR + i] = e[k * PARAMS_NBAR + i]; - for (j = 0; j < PARAMS_N; j++) { - out[k * PARAMS_NBAR + i] += (uint16_t)(s[k * PARAMS_N + j] * (uint32_t)b[j * PARAMS_NBAR + i]); - } - out[k * PARAMS_NBAR + i] = (uint32_t)(out[k * PARAMS_NBAR + i]) & ((1 << PARAMS_LOGQ) - 1); - } - } -} - - -void PQCLEAN_FRODOKEM640SHAKE_CLEAN_add(uint16_t *out, const uint16_t *a, const uint16_t *b) { - // Add a and b - // Inputs: a, b (N_BAR x N_BAR) - // Output: c = a + b - - for (size_t i = 0; i < (PARAMS_NBAR * PARAMS_NBAR); i++) { - out[i] = (a[i] + b[i]) & ((1 << PARAMS_LOGQ) - 1); - } -} - - -void PQCLEAN_FRODOKEM640SHAKE_CLEAN_sub(uint16_t *out, const uint16_t *a, const uint16_t *b) { - // Subtract a and b - // Inputs: a, b (N_BAR x N_BAR) - // Output: c = a - b - - for (size_t i = 0; i < (PARAMS_NBAR * PARAMS_NBAR); i++) { - out[i] = (a[i] - b[i]) & ((1 << PARAMS_LOGQ) - 1); - } -} - - -void PQCLEAN_FRODOKEM640SHAKE_CLEAN_key_encode(uint16_t *out, const uint16_t *in) { - // Encoding - unsigned int i, j, npieces_word = 8; - unsigned int nwords = (PARAMS_NBAR * PARAMS_NBAR) / 8; - uint64_t temp, mask = ((uint64_t)1 << PARAMS_EXTRACTED_BITS) - 1; - uint16_t *pos = out; - - for (i = 0; i < nwords; i++) { - temp = 0; - for (j = 0; j < PARAMS_EXTRACTED_BITS; j++) { - temp |= ((uint64_t)((uint8_t *)in)[i * PARAMS_EXTRACTED_BITS + j]) << (8 * j); - } - for (j = 0; j < npieces_word; j++) { - *pos = (uint16_t)((temp & mask) << (PARAMS_LOGQ - PARAMS_EXTRACTED_BITS)); - temp >>= PARAMS_EXTRACTED_BITS; - pos++; - } - } -} - - -void PQCLEAN_FRODOKEM640SHAKE_CLEAN_key_decode(uint16_t *out, const uint16_t *in) { - // Decoding - unsigned int i, j, index = 0, npieces_word = 8; - unsigned int nwords = (PARAMS_NBAR * PARAMS_NBAR) / 8; - uint16_t temp, maskex = ((uint16_t)1 << PARAMS_EXTRACTED_BITS) - 1, maskq = ((uint16_t)1 << PARAMS_LOGQ) - 1; - uint8_t *pos = (uint8_t *)out; - uint64_t templong; - - for (i = 0; i < nwords; i++) { - templong = 0; - for (j = 0; j < npieces_word; j++) { // temp = floor(in*2^{-11}+0.5) - temp = ((in[index] & maskq) + (1 << (PARAMS_LOGQ - PARAMS_EXTRACTED_BITS - 1))) >> (PARAMS_LOGQ - PARAMS_EXTRACTED_BITS); - templong |= ((uint64_t)(temp & maskex)) << (PARAMS_EXTRACTED_BITS * j); - index++; - } - for (j = 0; j < PARAMS_EXTRACTED_BITS; j++) { - pos[i * PARAMS_EXTRACTED_BITS + j] = (templong >> (8 * j)) & 0xFF; - } - } -} - - -void PQCLEAN_FRODOKEM640SHAKE_CLEAN_pack(uint8_t *out, size_t outlen, const uint16_t *in, size_t inlen, uint8_t lsb) { - // Pack the input uint16 vector into a char output vector, copying lsb bits from each input element. - // If inlen * lsb / 8 > outlen, only outlen * 8 bits are copied. - memset(out, 0, outlen); - - size_t i = 0; // whole bytes already filled in - size_t j = 0; // whole uint16_t already copied - uint16_t w = 0; // the leftover, not yet copied - uint8_t bits = 0; // the number of lsb in w - - while (i < outlen && (j < inlen || ((j == inlen) && (bits > 0)))) { - /* - in: | | |********|********| - ^ - j - w : | ****| - ^ - bits - out:|**|**|**|**|**|**|**|**|* | - ^^ - ib - */ - uint8_t b = 0; // bits in out[i] already filled in - while (b < 8) { - int nbits = min(8 - b, bits); - uint16_t mask = (1 << nbits) - 1; - uint8_t t = (uint8_t) ((w >> (bits - nbits)) & mask); // the bits to copy from w to out - out[i] = out[i] + (t << (8 - b - nbits)); - b += (uint8_t) nbits; - bits -= (uint8_t) nbits; - w &= ~(mask << bits); // not strictly necessary; mostly for debugging - - if (bits == 0) { - if (j < inlen) { - w = in[j]; - bits = lsb; - j++; - } else { - break; // the input vector is exhausted - } - } - } - if (b == 8) { // out[i] is filled in - i++; - } - } -} - - -void PQCLEAN_FRODOKEM640SHAKE_CLEAN_unpack(uint16_t *out, size_t outlen, const uint8_t *in, size_t inlen, uint8_t lsb) { - // Unpack the input char vector into a uint16_t output vector, copying lsb bits - // for each output element from input. outlen must be at least ceil(inlen * 8 / lsb). - memset(out, 0, outlen * sizeof(uint16_t)); - - size_t i = 0; // whole uint16_t already filled in - size_t j = 0; // whole bytes already copied - uint8_t w = 0; // the leftover, not yet copied - uint8_t bits = 0; // the number of lsb bits of w - - while (i < outlen && (j < inlen || ((j == inlen) && (bits > 0)))) { - /* - in: | | | | | | |**|**|... - ^ - j - w : | *| - ^ - bits - out:| *****| *****| *** | |... - ^ ^ - i b - */ - uint8_t b = 0; // bits in out[i] already filled in - while (b < lsb) { - int nbits = min(lsb - b, bits); - uint16_t mask = (1 << nbits) - 1; - uint8_t t = (w >> (bits - nbits)) & mask; // the bits to copy from w to out - out[i] = out[i] + (t << (lsb - b - nbits)); - b += (uint8_t) nbits; - bits -= (uint8_t) nbits; - w &= ~(mask << bits); // not strictly necessary; mostly for debugging - - if (bits == 0) { - if (j < inlen) { - w = in[j]; - bits = 8; - j++; - } else { - break; // the input vector is exhausted - } - } - } - if (b == lsb) { // out[i] is filled in - i++; - } - } -} - - -int8_t PQCLEAN_FRODOKEM640SHAKE_CLEAN_ct_verify(const uint16_t *a, const uint16_t *b, size_t len) { - // Compare two arrays in constant time. - // Returns 0 if the byte arrays are equal, -1 otherwise. - uint16_t r = 0; - - for (size_t i = 0; i < len; i++) { - r |= a[i] ^ b[i]; - } - - r = (-(int16_t)(r >> 1) | -(int16_t)(r & 1)) >> (8 * sizeof(uint16_t) -1); - return (int8_t)r; -} - - -void PQCLEAN_FRODOKEM640SHAKE_CLEAN_ct_select(uint8_t *r, const uint8_t *a, const uint8_t *b, size_t len, int8_t selector) { - // Select one of the two input arrays to be moved to r - // If (selector == 0) then load r with a, else if (selector == -1) load r with b - - for (size_t i = 0; i < len; i++) { - r[i] = (~selector & a[i]) | (selector & b[i]); - } -} - - -void PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes(uint8_t *mem, size_t n) { - // Clear 8-bit bytes from memory. "n" indicates the number of bytes to be zeroed. - // This function uses the volatile type qualifier to inform the compiler not to optimize out the memory clearing. - volatile uint8_t *v = mem; - - for (size_t i = 0; i < n; i++) { - v[i] = 0; - } -} diff --git a/src/kem/frodo/frodokem976shake/clean/CMakeLists.txt b/src/kem/frodo/frodokem976shake/clean/CMakeLists.txt deleted file mode 100644 index d1ecefa6..00000000 --- a/src/kem/frodo/frodokem976shake/clean/CMakeLists.txt +++ /dev/null @@ -1,10 +0,0 @@ -set( - SRC_CLEAN_FRODOKEM976SHAKE - kem.c - matrix_shake.c - noise.c - util.c -) - -define_kem_alg(frodo976shake_clean - PQCLEAN_FRODOKEM976SHAKE_OPT "${SRC_CLEAN_FRODOKEM976SHAKE}" "${CMAKE_CURRENT_SOURCE_DIR}") diff --git a/src/kem/frodo/frodokem976shake/clean/api.h b/src/kem/frodo/frodokem976shake/clean/api.h deleted file mode 100644 index b3393fe0..00000000 --- a/src/kem/frodo/frodokem976shake/clean/api.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef PQCLEAN_FRODOKEM976SHAKE_CLEAN_API_H -#define PQCLEAN_FRODOKEM976SHAKE_CLEAN_API_H - -#include -#include - -#define PQCLEAN_FRODOKEM976SHAKE_CLEAN_CRYPTO_SECRETKEYBYTES 31296 // sizeof(s) + CRYPTO_PUBLICKEYBYTES + 2*PARAMS_N*PARAMS_NBAR + BYTES_PKHASH -#define PQCLEAN_FRODOKEM976SHAKE_CLEAN_CRYPTO_PUBLICKEYBYTES 15632 // sizeof(seed_A) + (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 -#define PQCLEAN_FRODOKEM976SHAKE_CLEAN_CRYPTO_BYTES 24 -#define PQCLEAN_FRODOKEM976SHAKE_CLEAN_CRYPTO_CIPHERTEXTBYTES 15744 // (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 + (PARAMS_LOGQ*PARAMS_NBAR*PARAMS_NBAR)/8 - -#define PQCLEAN_FRODOKEM976SHAKE_CLEAN_CRYPTO_ALGNAME "FrodoKEM-976-SHAKE" - -int PQCLEAN_FRODOKEM976SHAKE_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk); - -int PQCLEAN_FRODOKEM976SHAKE_CLEAN_crypto_kem_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); - -int PQCLEAN_FRODOKEM976SHAKE_CLEAN_crypto_kem_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); - -#endif diff --git a/src/kem/frodo/frodokem976shake/clean/common.h b/src/kem/frodo/frodokem976shake/clean/common.h deleted file mode 100644 index eadc17c6..00000000 --- a/src/kem/frodo/frodokem976shake/clean/common.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef COMMON_H -#define COMMON_H - -int PQCLEAN_FRODOKEM976SHAKE_CLEAN_mul_add_as_plus_e(uint16_t *out, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A); -int PQCLEAN_FRODOKEM976SHAKE_CLEAN_mul_add_sa_plus_e(uint16_t *out, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A); -void PQCLEAN_FRODOKEM976SHAKE_CLEAN_sample_n(uint16_t *s, size_t n); -void PQCLEAN_FRODOKEM976SHAKE_CLEAN_mul_bs(uint16_t *out, const uint16_t *b, const uint16_t *s); -void PQCLEAN_FRODOKEM976SHAKE_CLEAN_mul_add_sb_plus_e(uint16_t *out, const uint16_t *b, const uint16_t *s, const uint16_t *e); -void PQCLEAN_FRODOKEM976SHAKE_CLEAN_add(uint16_t *out, const uint16_t *a, const uint16_t *b); -void PQCLEAN_FRODOKEM976SHAKE_CLEAN_sub(uint16_t *out, const uint16_t *a, const uint16_t *b); -void PQCLEAN_FRODOKEM976SHAKE_CLEAN_key_encode(uint16_t *out, const uint16_t *in); -void PQCLEAN_FRODOKEM976SHAKE_CLEAN_key_decode(uint16_t *out, const uint16_t *in); -void PQCLEAN_FRODOKEM976SHAKE_CLEAN_pack(uint8_t *out, size_t outlen, const uint16_t *in, size_t inlen, uint8_t lsb); -void PQCLEAN_FRODOKEM976SHAKE_CLEAN_unpack(uint16_t *out, size_t outlen, const uint8_t *in, size_t inlen, uint8_t lsb); -int8_t PQCLEAN_FRODOKEM976SHAKE_CLEAN_ct_verify(const uint16_t *a, const uint16_t *b, size_t len); -void PQCLEAN_FRODOKEM976SHAKE_CLEAN_ct_select(uint8_t *r, const uint8_t *a, const uint8_t *b, size_t len, int8_t selector); -void PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes(uint8_t *mem, size_t n); -uint16_t PQCLEAN_FRODOKEM976SHAKE_CLEAN_LE_TO_UINT16(uint16_t n); -uint16_t PQCLEAN_FRODOKEM976SHAKE_CLEAN_UINT16_TO_LE(uint16_t n); - -#endif diff --git a/src/kem/frodo/frodokem976shake/clean/kem.c b/src/kem/frodo/frodokem976shake/clean/kem.c deleted file mode 100644 index ec7c3b63..00000000 --- a/src/kem/frodo/frodokem976shake/clean/kem.c +++ /dev/null @@ -1,237 +0,0 @@ -/******************************************************************************************** -* FrodoKEM: Learning with Errors Key Encapsulation -* -* Abstract: Key Encapsulation Mechanism (KEM) based on Frodo -*********************************************************************************************/ - -#include -#include - -#include "fips202.h" -#include "randombytes.h" - -#include "api.h" -#include "common.h" -#include "params.h" - -int PQCLEAN_FRODOKEM976SHAKE_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk) { - // FrodoKEM's key generation - // Outputs: public key pk ( BYTES_SEED_A + (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 bytes) - // secret key sk (CRYPTO_BYTES + BYTES_SEED_A + (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 + 2*PARAMS_N*PARAMS_NBAR + BYTES_PKHASH bytes) - uint8_t *pk_seedA = &pk[0]; - uint8_t *pk_b = &pk[BYTES_SEED_A]; - uint8_t *sk_s = &sk[0]; - uint8_t *sk_pk = &sk[CRYPTO_BYTES]; - uint8_t *sk_S = &sk[CRYPTO_BYTES + CRYPTO_PUBLICKEYBYTES]; - uint8_t *sk_pkh = &sk[CRYPTO_BYTES + CRYPTO_PUBLICKEYBYTES + 2 * PARAMS_N * PARAMS_NBAR]; - uint16_t B[PARAMS_N * PARAMS_NBAR] = {0}; - uint16_t S[2 * PARAMS_N * PARAMS_NBAR] = {0}; // contains secret data - uint16_t *E = &S[PARAMS_N * PARAMS_NBAR]; // contains secret data - uint8_t randomness[2 * CRYPTO_BYTES + BYTES_SEED_A]; // contains secret data via randomness_s and randomness_seedSE - uint8_t *randomness_s = &randomness[0]; // contains secret data - uint8_t *randomness_seedSE = &randomness[CRYPTO_BYTES]; // contains secret data - uint8_t *randomness_z = &randomness[2 * CRYPTO_BYTES]; - uint8_t shake_input_seedSE[1 + CRYPTO_BYTES]; // contains secret data - - // Generate the secret value s, the seed for S and E, and the seed for the seed for A. Add seed_A to the public key - randombytes(randomness, CRYPTO_BYTES + CRYPTO_BYTES + BYTES_SEED_A); - shake(pk_seedA, BYTES_SEED_A, randomness_z, BYTES_SEED_A); - - // Generate S and E, and compute B = A*S + E. Generate A on-the-fly - shake_input_seedSE[0] = 0x5F; - memcpy(&shake_input_seedSE[1], randomness_seedSE, CRYPTO_BYTES); - shake((uint8_t *)S, 2 * PARAMS_N * PARAMS_NBAR * sizeof(uint16_t), shake_input_seedSE, 1 + CRYPTO_BYTES); - for (size_t i = 0; i < 2 * PARAMS_N * PARAMS_NBAR; i++) { - S[i] = PQCLEAN_FRODOKEM976SHAKE_CLEAN_LE_TO_UINT16(S[i]); - } - PQCLEAN_FRODOKEM976SHAKE_CLEAN_sample_n(S, PARAMS_N * PARAMS_NBAR); - PQCLEAN_FRODOKEM976SHAKE_CLEAN_sample_n(E, PARAMS_N * PARAMS_NBAR); - PQCLEAN_FRODOKEM976SHAKE_CLEAN_mul_add_as_plus_e(B, S, E, pk); - - // Encode the second part of the public key - PQCLEAN_FRODOKEM976SHAKE_CLEAN_pack(pk_b, CRYPTO_PUBLICKEYBYTES - BYTES_SEED_A, B, PARAMS_N * PARAMS_NBAR, PARAMS_LOGQ); - - // Add s, pk and S to the secret key - memcpy(sk_s, randomness_s, CRYPTO_BYTES); - memcpy(sk_pk, pk, CRYPTO_PUBLICKEYBYTES); - for (size_t i = 0; i < PARAMS_N * PARAMS_NBAR; i++) { - S[i] = PQCLEAN_FRODOKEM976SHAKE_CLEAN_UINT16_TO_LE(S[i]); - } - memcpy(sk_S, S, 2 * PARAMS_N * PARAMS_NBAR); - - // Add H(pk) to the secret key - shake(sk_pkh, BYTES_PKHASH, pk, CRYPTO_PUBLICKEYBYTES); - - // Cleanup: - PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes((uint8_t *)S, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); - PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes((uint8_t *)E, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); - PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes(randomness, 2 * CRYPTO_BYTES); - PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes(shake_input_seedSE, 1 + CRYPTO_BYTES); - return 0; -} - - -int PQCLEAN_FRODOKEM976SHAKE_CLEAN_crypto_kem_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk) { - // FrodoKEM's key encapsulation - const uint8_t *pk_seedA = &pk[0]; - const uint8_t *pk_b = &pk[BYTES_SEED_A]; - uint8_t *ct_c1 = &ct[0]; - uint8_t *ct_c2 = &ct[(PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8]; - uint16_t B[PARAMS_N * PARAMS_NBAR] = {0}; - uint16_t V[PARAMS_NBAR * PARAMS_NBAR] = {0}; // contains secret data - uint16_t C[PARAMS_NBAR * PARAMS_NBAR] = {0}; - uint16_t Bp[PARAMS_N * PARAMS_NBAR] = {0}; - uint16_t Sp[(2 * PARAMS_N + PARAMS_NBAR)*PARAMS_NBAR] = {0}; // contains secret data - uint16_t *Ep = &Sp[PARAMS_N * PARAMS_NBAR]; // contains secret data - uint16_t *Epp = &Sp[2 * PARAMS_N * PARAMS_NBAR]; // contains secret data - uint8_t G2in[BYTES_PKHASH + BYTES_MU]; // contains secret data via mu - uint8_t *pkh = &G2in[0]; - uint8_t *mu = &G2in[BYTES_PKHASH]; // contains secret data - uint8_t G2out[2 * CRYPTO_BYTES]; // contains secret data - uint8_t *seedSE = &G2out[0]; // contains secret data - uint8_t *k = &G2out[CRYPTO_BYTES]; // contains secret data - uint8_t Fin[CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES]; // contains secret data via Fin_k - uint8_t *Fin_ct = &Fin[0]; - uint8_t *Fin_k = &Fin[CRYPTO_CIPHERTEXTBYTES]; // contains secret data - uint8_t shake_input_seedSE[1 + CRYPTO_BYTES]; // contains secret data - - // pkh <- G_1(pk), generate random mu, compute (seedSE || k) = G_2(pkh || mu) - shake(pkh, BYTES_PKHASH, pk, CRYPTO_PUBLICKEYBYTES); - randombytes(mu, BYTES_MU); - shake(G2out, CRYPTO_BYTES + CRYPTO_BYTES, G2in, BYTES_PKHASH + BYTES_MU); - - // Generate Sp and Ep, and compute Bp = Sp*A + Ep. Generate A on-the-fly - shake_input_seedSE[0] = 0x96; - memcpy(&shake_input_seedSE[1], seedSE, CRYPTO_BYTES); - shake((uint8_t *)Sp, (2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR * sizeof(uint16_t), shake_input_seedSE, 1 + CRYPTO_BYTES); - for (size_t i = 0; i < (2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR; i++) { - Sp[i] = PQCLEAN_FRODOKEM976SHAKE_CLEAN_LE_TO_UINT16(Sp[i]); - } - PQCLEAN_FRODOKEM976SHAKE_CLEAN_sample_n(Sp, PARAMS_N * PARAMS_NBAR); - PQCLEAN_FRODOKEM976SHAKE_CLEAN_sample_n(Ep, PARAMS_N * PARAMS_NBAR); - PQCLEAN_FRODOKEM976SHAKE_CLEAN_mul_add_sa_plus_e(Bp, Sp, Ep, pk_seedA); - PQCLEAN_FRODOKEM976SHAKE_CLEAN_pack(ct_c1, (PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8, Bp, PARAMS_N * PARAMS_NBAR, PARAMS_LOGQ); - - // Generate Epp, and compute V = Sp*B + Epp - PQCLEAN_FRODOKEM976SHAKE_CLEAN_sample_n(Epp, PARAMS_NBAR * PARAMS_NBAR); - PQCLEAN_FRODOKEM976SHAKE_CLEAN_unpack(B, PARAMS_N * PARAMS_NBAR, pk_b, CRYPTO_PUBLICKEYBYTES - BYTES_SEED_A, PARAMS_LOGQ); - PQCLEAN_FRODOKEM976SHAKE_CLEAN_mul_add_sb_plus_e(V, B, Sp, Epp); - - // Encode mu, and compute C = V + enc(mu) (mod q) - PQCLEAN_FRODOKEM976SHAKE_CLEAN_key_encode(C, (uint16_t *)mu); - PQCLEAN_FRODOKEM976SHAKE_CLEAN_add(C, V, C); - PQCLEAN_FRODOKEM976SHAKE_CLEAN_pack(ct_c2, (PARAMS_LOGQ * PARAMS_NBAR * PARAMS_NBAR) / 8, C, PARAMS_NBAR * PARAMS_NBAR, PARAMS_LOGQ); - - // Compute ss = F(ct||KK) - memcpy(Fin_ct, ct, CRYPTO_CIPHERTEXTBYTES); - memcpy(Fin_k, k, CRYPTO_BYTES); - shake(ss, CRYPTO_BYTES, Fin, CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES); - - // Cleanup: - PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes((uint8_t *)V, PARAMS_NBAR * PARAMS_NBAR * sizeof(uint16_t)); - PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes((uint8_t *)Sp, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); - PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes((uint8_t *)Ep, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); - PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes((uint8_t *)Epp, PARAMS_NBAR * PARAMS_NBAR * sizeof(uint16_t)); - PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes(mu, BYTES_MU); - PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes(G2out, 2 * CRYPTO_BYTES); - PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes(Fin_k, CRYPTO_BYTES); - PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes(shake_input_seedSE, 1 + CRYPTO_BYTES); - return 0; -} - - -int PQCLEAN_FRODOKEM976SHAKE_CLEAN_crypto_kem_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk) { - // FrodoKEM's key decapsulation - uint16_t B[PARAMS_N * PARAMS_NBAR] = {0}; - uint16_t Bp[PARAMS_N * PARAMS_NBAR] = {0}; - uint16_t W[PARAMS_NBAR * PARAMS_NBAR] = {0}; // contains secret data - uint16_t C[PARAMS_NBAR * PARAMS_NBAR] = {0}; - uint16_t CC[PARAMS_NBAR * PARAMS_NBAR] = {0}; - uint16_t BBp[PARAMS_N * PARAMS_NBAR] = {0}; - uint16_t Sp[(2 * PARAMS_N + PARAMS_NBAR)*PARAMS_NBAR] = {0}; // contains secret data - uint16_t *Ep = &Sp[PARAMS_N * PARAMS_NBAR]; // contains secret data - uint16_t *Epp = &Sp[2 * PARAMS_N * PARAMS_NBAR]; // contains secret data - const uint8_t *ct_c1 = &ct[0]; - const uint8_t *ct_c2 = &ct[(PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8]; - const uint8_t *sk_s = &sk[0]; - const uint8_t *sk_pk = &sk[CRYPTO_BYTES]; - const uint8_t *sk_S = &sk[CRYPTO_BYTES + CRYPTO_PUBLICKEYBYTES]; - uint16_t S[PARAMS_N * PARAMS_NBAR]; // contains secret data - const uint8_t *sk_pkh = &sk[CRYPTO_BYTES + CRYPTO_PUBLICKEYBYTES + 2 * PARAMS_N * PARAMS_NBAR]; - const uint8_t *pk_seedA = &sk_pk[0]; - const uint8_t *pk_b = &sk_pk[BYTES_SEED_A]; - uint8_t G2in[BYTES_PKHASH + BYTES_MU]; // contains secret data via muprime - uint8_t *pkh = &G2in[0]; - uint8_t *muprime = &G2in[BYTES_PKHASH]; // contains secret data - uint8_t G2out[2 * CRYPTO_BYTES]; // contains secret data - uint8_t *seedSEprime = &G2out[0]; // contains secret data - uint8_t *kprime = &G2out[CRYPTO_BYTES]; // contains secret data - uint8_t Fin[CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES]; // contains secret data via Fin_k - uint8_t *Fin_ct = &Fin[0]; - uint8_t *Fin_k = &Fin[CRYPTO_CIPHERTEXTBYTES]; // contains secret data - uint8_t shake_input_seedSEprime[1 + CRYPTO_BYTES]; // contains secret data - - for (size_t i = 0; i < PARAMS_N * PARAMS_NBAR; i++) { - S[i] = sk_S[2 * i] | (sk_S[2 * i + 1] << 8); - } - - // Compute W = C - Bp*S (mod q), and decode the randomness mu - PQCLEAN_FRODOKEM976SHAKE_CLEAN_unpack(Bp, PARAMS_N * PARAMS_NBAR, ct_c1, (PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8, PARAMS_LOGQ); - PQCLEAN_FRODOKEM976SHAKE_CLEAN_unpack(C, PARAMS_NBAR * PARAMS_NBAR, ct_c2, (PARAMS_LOGQ * PARAMS_NBAR * PARAMS_NBAR) / 8, PARAMS_LOGQ); - PQCLEAN_FRODOKEM976SHAKE_CLEAN_mul_bs(W, Bp, S); - PQCLEAN_FRODOKEM976SHAKE_CLEAN_sub(W, C, W); - PQCLEAN_FRODOKEM976SHAKE_CLEAN_key_decode((uint16_t *)muprime, W); - - // Generate (seedSE' || k') = G_2(pkh || mu') - memcpy(pkh, sk_pkh, BYTES_PKHASH); - shake(G2out, CRYPTO_BYTES + CRYPTO_BYTES, G2in, BYTES_PKHASH + BYTES_MU); - - // Generate Sp and Ep, and compute BBp = Sp*A + Ep. Generate A on-the-fly - shake_input_seedSEprime[0] = 0x96; - memcpy(&shake_input_seedSEprime[1], seedSEprime, CRYPTO_BYTES); - shake((uint8_t *)Sp, (2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR * sizeof(uint16_t), shake_input_seedSEprime, 1 + CRYPTO_BYTES); - for (size_t i = 0; i < (2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR; i++) { - Sp[i] = PQCLEAN_FRODOKEM976SHAKE_CLEAN_LE_TO_UINT16(Sp[i]); - } - PQCLEAN_FRODOKEM976SHAKE_CLEAN_sample_n(Sp, PARAMS_N * PARAMS_NBAR); - PQCLEAN_FRODOKEM976SHAKE_CLEAN_sample_n(Ep, PARAMS_N * PARAMS_NBAR); - PQCLEAN_FRODOKEM976SHAKE_CLEAN_mul_add_sa_plus_e(BBp, Sp, Ep, pk_seedA); - - // Generate Epp, and compute W = Sp*B + Epp - PQCLEAN_FRODOKEM976SHAKE_CLEAN_sample_n(Epp, PARAMS_NBAR * PARAMS_NBAR); - PQCLEAN_FRODOKEM976SHAKE_CLEAN_unpack(B, PARAMS_N * PARAMS_NBAR, pk_b, CRYPTO_PUBLICKEYBYTES - BYTES_SEED_A, PARAMS_LOGQ); - PQCLEAN_FRODOKEM976SHAKE_CLEAN_mul_add_sb_plus_e(W, B, Sp, Epp); - - // Encode mu, and compute CC = W + enc(mu') (mod q) - PQCLEAN_FRODOKEM976SHAKE_CLEAN_key_encode(CC, (uint16_t *)muprime); - PQCLEAN_FRODOKEM976SHAKE_CLEAN_add(CC, W, CC); - - // Prepare input to F - memcpy(Fin_ct, ct, CRYPTO_CIPHERTEXTBYTES); - - // Reducing BBp modulo q - for (size_t i = 0; i < PARAMS_N * PARAMS_NBAR; i++) { - BBp[i] = BBp[i] & ((1 << PARAMS_LOGQ) - 1); - } - - // If (Bp == BBp & C == CC) then ss = F(ct || k'), else ss = F(ct || s) - // Needs to avoid branching on secret data as per: - // Qian Guo, Thomas Johansson, Alexander Nilsson. A key-recovery timing attack on post-quantum - // primitives using the Fujisaki-Okamoto transformation and its application on FrodoKEM. In CRYPTO 2020. - int8_t selector = PQCLEAN_FRODOKEM976SHAKE_CLEAN_ct_verify(Bp, BBp, PARAMS_N * PARAMS_NBAR) | PQCLEAN_FRODOKEM976SHAKE_CLEAN_ct_verify(C, CC, PARAMS_NBAR * PARAMS_NBAR); - // If (selector == 0) then load k' to do ss = F(ct || k'), else if (selector == -1) load s to do ss = F(ct || s) - PQCLEAN_FRODOKEM976SHAKE_CLEAN_ct_select((uint8_t *)Fin_k, (uint8_t *)kprime, (uint8_t *)sk_s, CRYPTO_BYTES, selector); - shake(ss, CRYPTO_BYTES, Fin, CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES); - - // Cleanup: - PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes((uint8_t *)W, PARAMS_NBAR * PARAMS_NBAR * sizeof(uint16_t)); - PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes((uint8_t *)Sp, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); - PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes((uint8_t *)S, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); - PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes((uint8_t *)Ep, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); - PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes((uint8_t *)Epp, PARAMS_NBAR * PARAMS_NBAR * sizeof(uint16_t)); - PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes(muprime, BYTES_MU); - PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes(G2out, 2 * CRYPTO_BYTES); - PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes(Fin_k, CRYPTO_BYTES); - PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes(shake_input_seedSEprime, 1 + CRYPTO_BYTES); - return 0; -} diff --git a/src/kem/frodo/frodokem976shake/clean/matrix_shake.c b/src/kem/frodo/frodokem976shake/clean/matrix_shake.c deleted file mode 100644 index ddd3e65a..00000000 --- a/src/kem/frodo/frodokem976shake/clean/matrix_shake.c +++ /dev/null @@ -1,108 +0,0 @@ -/******************************************************************************************** -* FrodoKEM: Learning with Errors Key Encapsulation -* -* Abstract: matrix arithmetic functions used by the KEM -*********************************************************************************************/ - -#include -#include - -#include "fips202.h" - -#include "api.h" -#include "common.h" -#include "params.h" - -int PQCLEAN_FRODOKEM976SHAKE_CLEAN_mul_add_as_plus_e(uint16_t *out, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A) { - // Generate-and-multiply: generate matrix A (N x N) row-wise, multiply by s on the right. - // Inputs: s, e (N x N_BAR) - // Output: out = A*s + e (N x N_BAR) - int j, k; - uint16_t i; - int16_t a_row[4 * PARAMS_N]; - - for (i = 0; i < (PARAMS_N * PARAMS_NBAR); i += 2) { - *((uint32_t *)&out[i]) = *((uint32_t *)&e[i]); - } - - uint8_t seed_A_separated[2 + BYTES_SEED_A]; - uint16_t *seed_A_origin = (uint16_t *)&seed_A_separated; - memcpy(&seed_A_separated[2], seed_A, BYTES_SEED_A); - for (i = 0; i < PARAMS_N; i += 4) { - seed_A_origin[0] = PQCLEAN_FRODOKEM976SHAKE_CLEAN_UINT16_TO_LE(i + 0); - shake128((unsigned char *)(a_row + 0 * PARAMS_N), (unsigned long long)(2 * PARAMS_N), seed_A_separated, 2 + BYTES_SEED_A); - seed_A_origin[0] = PQCLEAN_FRODOKEM976SHAKE_CLEAN_UINT16_TO_LE(i + 1); - shake128((unsigned char *)(a_row + 1 * PARAMS_N), (unsigned long long)(2 * PARAMS_N), seed_A_separated, 2 + BYTES_SEED_A); - seed_A_origin[0] = PQCLEAN_FRODOKEM976SHAKE_CLEAN_UINT16_TO_LE(i + 2); - shake128((unsigned char *)(a_row + 2 * PARAMS_N), (unsigned long long)(2 * PARAMS_N), seed_A_separated, 2 + BYTES_SEED_A); - seed_A_origin[0] = PQCLEAN_FRODOKEM976SHAKE_CLEAN_UINT16_TO_LE(i + 3); - shake128((unsigned char *)(a_row + 3 * PARAMS_N), (unsigned long long)(2 * PARAMS_N), seed_A_separated, 2 + BYTES_SEED_A); - for (k = 0; k < 4 * PARAMS_N; k++) { - a_row[k] = PQCLEAN_FRODOKEM976SHAKE_CLEAN_LE_TO_UINT16(a_row[k]); - } - for (k = 0; k < PARAMS_NBAR; k++) { - uint16_t sum[4] = {0}; - for (j = 0; j < PARAMS_N; j++) { // Matrix-vector multiplication - uint16_t sp = s[k * PARAMS_N + j]; - sum[0] += a_row[0 * PARAMS_N + j] * sp; // Go through four lines with same s - sum[1] += a_row[1 * PARAMS_N + j] * sp; - sum[2] += a_row[2 * PARAMS_N + j] * sp; - sum[3] += a_row[3 * PARAMS_N + j] * sp; - } - out[(i + 0)*PARAMS_NBAR + k] += sum[0]; - out[(i + 2)*PARAMS_NBAR + k] += sum[2]; - out[(i + 1)*PARAMS_NBAR + k] += sum[1]; - out[(i + 3)*PARAMS_NBAR + k] += sum[3]; - } - } - return 1; -} - - - - -int PQCLEAN_FRODOKEM976SHAKE_CLEAN_mul_add_sa_plus_e(uint16_t *out, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A) { - // Generate-and-multiply: generate matrix A (N x N) column-wise, multiply by s' on the left. - // Inputs: s', e' (N_BAR x N) - // Output: out = s'*A + e' (N_BAR x N) - int i, j; - uint16_t kk; - for (i = 0; i < (PARAMS_N * PARAMS_NBAR); i += 2) { - *((uint32_t *)&out[i]) = *((uint32_t *)&e[i]); - } - - int t = 0; - uint16_t a_cols[4 * PARAMS_N]; - - int k; - uint8_t seed_A_separated[2 + BYTES_SEED_A]; - uint16_t *seed_A_origin = (uint16_t *)&seed_A_separated; - memcpy(&seed_A_separated[2], seed_A, BYTES_SEED_A); - for (kk = 0; kk < PARAMS_N; kk += 4) { - seed_A_origin[0] = PQCLEAN_FRODOKEM976SHAKE_CLEAN_UINT16_TO_LE(kk + 0); - shake128((unsigned char *)(a_cols + 0 * PARAMS_N), (unsigned long long)(2 * PARAMS_N), seed_A_separated, 2 + BYTES_SEED_A); - seed_A_origin[0] = PQCLEAN_FRODOKEM976SHAKE_CLEAN_UINT16_TO_LE(kk + 1); - shake128((unsigned char *)(a_cols + 1 * PARAMS_N), (unsigned long long)(2 * PARAMS_N), seed_A_separated, 2 + BYTES_SEED_A); - seed_A_origin[0] = PQCLEAN_FRODOKEM976SHAKE_CLEAN_UINT16_TO_LE(kk + 2); - shake128((unsigned char *)(a_cols + 2 * PARAMS_N), (unsigned long long)(2 * PARAMS_N), seed_A_separated, 2 + BYTES_SEED_A); - seed_A_origin[0] = PQCLEAN_FRODOKEM976SHAKE_CLEAN_UINT16_TO_LE(kk + 3); - shake128((unsigned char *)(a_cols + 3 * PARAMS_N), (unsigned long long)(2 * PARAMS_N), seed_A_separated, 2 + BYTES_SEED_A); - for (i = 0; i < 4 * PARAMS_N; i++) { - a_cols[i] = PQCLEAN_FRODOKEM976SHAKE_CLEAN_LE_TO_UINT16(a_cols[i]); - } - - for (i = 0; i < PARAMS_NBAR; i++) { - uint16_t sum[PARAMS_N] = {0}; - for (j = 0; j < 4; j++) { - uint16_t sp = s[i * PARAMS_N + kk + j]; - for (k = 0; k < PARAMS_N; k++) { // Matrix-vector multiplication - sum[k] += (uint16_t)(sp * (uint32_t)a_cols[(t + j) * PARAMS_N + k]); - } - } - for (k = 0; k < PARAMS_N; k++) { - out[i * PARAMS_N + k] += sum[k]; - } - } - } - return 1; -} diff --git a/src/kem/frodo/frodokem976shake/clean/noise.c b/src/kem/frodo/frodokem976shake/clean/noise.c deleted file mode 100644 index 6223d7a8..00000000 --- a/src/kem/frodo/frodokem976shake/clean/noise.c +++ /dev/null @@ -1,35 +0,0 @@ -/******************************************************************************************** -* FrodoKEM: Learning with Errors Key Encapsulation -* -* Abstract: noise sampling functions -*********************************************************************************************/ - -#include - -#include "api.h" -#include "common.h" -#include "params.h" - -static const uint16_t CDF_TABLE[CDF_TABLE_LEN] = CDF_TABLE_DATA; - -void PQCLEAN_FRODOKEM976SHAKE_CLEAN_sample_n(uint16_t *s, size_t n) { - // Fills vector s with n samples from the noise distribution which requires 16 bits to sample. - // The distribution is specified by its CDF. - // Input: pseudo-random values (2*n bytes) passed in s. The input is overwritten by the output. - size_t i; - unsigned int j; - - for (i = 0; i < n; ++i) { - uint16_t sample = 0; - uint16_t prnd = s[i] >> 1; // Drop the least significant bit - uint16_t sign = s[i] & 0x1; // Pick the least significant bit - - // No need to compare with the last value. - for (j = 0; j < (unsigned int)(CDF_TABLE_LEN - 1); j++) { - // Constant time comparison: 1 if CDF_TABLE[j] < s, 0 otherwise. Uses the fact that CDF_TABLE[j] and s fit in 15 bits. - sample += (uint16_t)(CDF_TABLE[j] - prnd) >> 15; - } - // Assuming that sign is either 0 or 1, flips sample iff sign = 1 - s[i] = ((-sign) ^ sample) + sign; - } -} diff --git a/src/kem/frodo/frodokem976shake/clean/params.h b/src/kem/frodo/frodokem976shake/clean/params.h deleted file mode 100644 index 5181be70..00000000 --- a/src/kem/frodo/frodokem976shake/clean/params.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef PARAMS_H -#define PARAMS_H - -#define CRYPTO_SECRETKEYBYTES PQCLEAN_FRODOKEM976SHAKE_CLEAN_CRYPTO_SECRETKEYBYTES -#define CRYPTO_PUBLICKEYBYTES PQCLEAN_FRODOKEM976SHAKE_CLEAN_CRYPTO_PUBLICKEYBYTES -#define CRYPTO_BYTES PQCLEAN_FRODOKEM976SHAKE_CLEAN_CRYPTO_BYTES -#define CRYPTO_CIPHERTEXTBYTES PQCLEAN_FRODOKEM976SHAKE_CLEAN_CRYPTO_CIPHERTEXTBYTES - -#define PARAMS_N 976 -#define PARAMS_NBAR 8 -#define PARAMS_LOGQ 16 -#define PARAMS_Q (1 << PARAMS_LOGQ) -#define PARAMS_EXTRACTED_BITS 3 -#define PARAMS_STRIPE_STEP 8 -#define PARAMS_PARALLEL 4 -#define BYTES_SEED_A 16 -#define BYTES_MU ((PARAMS_EXTRACTED_BITS * PARAMS_NBAR * PARAMS_NBAR) / 8) -#define BYTES_PKHASH CRYPTO_BYTES - -// Selecting SHAKE XOF function for the KEM and noise sampling -#define shake shake256 - -// CDF table -#define CDF_TABLE_DATA {5638, 15915, 23689, 28571, 31116, 32217, 32613, 32731, 32760, 32766, 32767} -#define CDF_TABLE_LEN 11 - -#endif diff --git a/src/kem/frodo/frodokem976shake/clean/util.c b/src/kem/frodo/frodokem976shake/clean/util.c deleted file mode 100644 index a710a1bf..00000000 --- a/src/kem/frodo/frodokem976shake/clean/util.c +++ /dev/null @@ -1,264 +0,0 @@ -/******************************************************************************************** -* FrodoKEM: Learning with Errors Key Encapsulation -* -* Abstract: additional functions for FrodoKEM -*********************************************************************************************/ - -#include -#include - -#include "api.h" -#include "common.h" -#include "params.h" - -static inline uint8_t min(uint8_t x, uint8_t y) { - if (x < y) { - return x; - } - return y; -} - -uint16_t PQCLEAN_FRODOKEM976SHAKE_CLEAN_LE_TO_UINT16(uint16_t n) { - return (((uint8_t *) &n)[0] | (((uint8_t *) &n)[1] << 8)); -} - -uint16_t PQCLEAN_FRODOKEM976SHAKE_CLEAN_UINT16_TO_LE(uint16_t n) { - uint16_t y; - uint8_t *z = (uint8_t *) &y; - z[0] = n & 0xFF; - z[1] = (n & 0xFF00) >> 8; - return y; -} - -void PQCLEAN_FRODOKEM976SHAKE_CLEAN_mul_bs(uint16_t *out, const uint16_t *b, const uint16_t *s) { - // Multiply by s on the right - // Inputs: b (N_BAR x N), s (N x N_BAR) - // Output: out = b*s (N_BAR x N_BAR) - int i, j, k; - - for (i = 0; i < PARAMS_NBAR; i++) { - for (j = 0; j < PARAMS_NBAR; j++) { - out[i * PARAMS_NBAR + j] = 0; - for (k = 0; k < PARAMS_N; k++) { - out[i * PARAMS_NBAR + j] += (uint16_t)(b[i * PARAMS_N + k] * (uint32_t)s[j * PARAMS_N + k]); - } - out[i * PARAMS_NBAR + j] = (uint32_t)(out[i * PARAMS_NBAR + j]) & ((1 << PARAMS_LOGQ) - 1); - } - } -} - - -void PQCLEAN_FRODOKEM976SHAKE_CLEAN_mul_add_sb_plus_e(uint16_t *out, const uint16_t *b, const uint16_t *s, const uint16_t *e) { - // Multiply by s on the left - // Inputs: b (N x N_BAR), s (N_BAR x N), e (N_BAR x N_BAR) - // Output: out = s*b + e (N_BAR x N_BAR) - int i, j, k; - - for (k = 0; k < PARAMS_NBAR; k++) { - for (i = 0; i < PARAMS_NBAR; i++) { - out[k * PARAMS_NBAR + i] = e[k * PARAMS_NBAR + i]; - for (j = 0; j < PARAMS_N; j++) { - out[k * PARAMS_NBAR + i] += (uint16_t)(s[k * PARAMS_N + j] * (uint32_t)b[j * PARAMS_NBAR + i]); - } - out[k * PARAMS_NBAR + i] = (uint32_t)(out[k * PARAMS_NBAR + i]) & ((1 << PARAMS_LOGQ) - 1); - } - } -} - - -void PQCLEAN_FRODOKEM976SHAKE_CLEAN_add(uint16_t *out, const uint16_t *a, const uint16_t *b) { - // Add a and b - // Inputs: a, b (N_BAR x N_BAR) - // Output: c = a + b - - for (size_t i = 0; i < (PARAMS_NBAR * PARAMS_NBAR); i++) { - out[i] = (a[i] + b[i]) & ((1 << PARAMS_LOGQ) - 1); - } -} - - -void PQCLEAN_FRODOKEM976SHAKE_CLEAN_sub(uint16_t *out, const uint16_t *a, const uint16_t *b) { - // Subtract a and b - // Inputs: a, b (N_BAR x N_BAR) - // Output: c = a - b - - for (size_t i = 0; i < (PARAMS_NBAR * PARAMS_NBAR); i++) { - out[i] = (a[i] - b[i]) & ((1 << PARAMS_LOGQ) - 1); - } -} - - -void PQCLEAN_FRODOKEM976SHAKE_CLEAN_key_encode(uint16_t *out, const uint16_t *in) { - // Encoding - unsigned int i, j, npieces_word = 8; - unsigned int nwords = (PARAMS_NBAR * PARAMS_NBAR) / 8; - uint64_t temp, mask = ((uint64_t)1 << PARAMS_EXTRACTED_BITS) - 1; - uint16_t *pos = out; - - for (i = 0; i < nwords; i++) { - temp = 0; - for (j = 0; j < PARAMS_EXTRACTED_BITS; j++) { - temp |= ((uint64_t)((uint8_t *)in)[i * PARAMS_EXTRACTED_BITS + j]) << (8 * j); - } - for (j = 0; j < npieces_word; j++) { - *pos = (uint16_t)((temp & mask) << (PARAMS_LOGQ - PARAMS_EXTRACTED_BITS)); - temp >>= PARAMS_EXTRACTED_BITS; - pos++; - } - } -} - - -void PQCLEAN_FRODOKEM976SHAKE_CLEAN_key_decode(uint16_t *out, const uint16_t *in) { - // Decoding - unsigned int i, j, index = 0, npieces_word = 8; - unsigned int nwords = (PARAMS_NBAR * PARAMS_NBAR) / 8; - uint16_t temp, maskex = ((uint16_t)1 << PARAMS_EXTRACTED_BITS) - 1, maskq = ((uint16_t)1 << PARAMS_LOGQ) - 1; - uint8_t *pos = (uint8_t *)out; - uint64_t templong; - - for (i = 0; i < nwords; i++) { - templong = 0; - for (j = 0; j < npieces_word; j++) { // temp = floor(in*2^{-11}+0.5) - temp = ((in[index] & maskq) + (1 << (PARAMS_LOGQ - PARAMS_EXTRACTED_BITS - 1))) >> (PARAMS_LOGQ - PARAMS_EXTRACTED_BITS); - templong |= ((uint64_t)(temp & maskex)) << (PARAMS_EXTRACTED_BITS * j); - index++; - } - for (j = 0; j < PARAMS_EXTRACTED_BITS; j++) { - pos[i * PARAMS_EXTRACTED_BITS + j] = (templong >> (8 * j)) & 0xFF; - } - } -} - - -void PQCLEAN_FRODOKEM976SHAKE_CLEAN_pack(uint8_t *out, size_t outlen, const uint16_t *in, size_t inlen, uint8_t lsb) { - // Pack the input uint16 vector into a char output vector, copying lsb bits from each input element. - // If inlen * lsb / 8 > outlen, only outlen * 8 bits are copied. - memset(out, 0, outlen); - - size_t i = 0; // whole bytes already filled in - size_t j = 0; // whole uint16_t already copied - uint16_t w = 0; // the leftover, not yet copied - uint8_t bits = 0; // the number of lsb in w - - while (i < outlen && (j < inlen || ((j == inlen) && (bits > 0)))) { - /* - in: | | |********|********| - ^ - j - w : | ****| - ^ - bits - out:|**|**|**|**|**|**|**|**|* | - ^^ - ib - */ - uint8_t b = 0; // bits in out[i] already filled in - while (b < 8) { - int nbits = min(8 - b, bits); - uint16_t mask = (1 << nbits) - 1; - uint8_t t = (uint8_t) ((w >> (bits - nbits)) & mask); // the bits to copy from w to out - out[i] = out[i] + (t << (8 - b - nbits)); - b += (uint8_t) nbits; - bits -= (uint8_t) nbits; - w &= ~(mask << bits); // not strictly necessary; mostly for debugging - - if (bits == 0) { - if (j < inlen) { - w = in[j]; - bits = lsb; - j++; - } else { - break; // the input vector is exhausted - } - } - } - if (b == 8) { // out[i] is filled in - i++; - } - } -} - - -void PQCLEAN_FRODOKEM976SHAKE_CLEAN_unpack(uint16_t *out, size_t outlen, const uint8_t *in, size_t inlen, uint8_t lsb) { - // Unpack the input char vector into a uint16_t output vector, copying lsb bits - // for each output element from input. outlen must be at least ceil(inlen * 8 / lsb). - memset(out, 0, outlen * sizeof(uint16_t)); - - size_t i = 0; // whole uint16_t already filled in - size_t j = 0; // whole bytes already copied - uint8_t w = 0; // the leftover, not yet copied - uint8_t bits = 0; // the number of lsb bits of w - - while (i < outlen && (j < inlen || ((j == inlen) && (bits > 0)))) { - /* - in: | | | | | | |**|**|... - ^ - j - w : | *| - ^ - bits - out:| *****| *****| *** | |... - ^ ^ - i b - */ - uint8_t b = 0; // bits in out[i] already filled in - while (b < lsb) { - int nbits = min(lsb - b, bits); - uint16_t mask = (1 << nbits) - 1; - uint8_t t = (w >> (bits - nbits)) & mask; // the bits to copy from w to out - out[i] = out[i] + (t << (lsb - b - nbits)); - b += (uint8_t) nbits; - bits -= (uint8_t) nbits; - w &= ~(mask << bits); // not strictly necessary; mostly for debugging - - if (bits == 0) { - if (j < inlen) { - w = in[j]; - bits = 8; - j++; - } else { - break; // the input vector is exhausted - } - } - } - if (b == lsb) { // out[i] is filled in - i++; - } - } -} - - -int8_t PQCLEAN_FRODOKEM976SHAKE_CLEAN_ct_verify(const uint16_t *a, const uint16_t *b, size_t len) { - // Compare two arrays in constant time. - // Returns 0 if the byte arrays are equal, -1 otherwise. - uint16_t r = 0; - - for (size_t i = 0; i < len; i++) { - r |= a[i] ^ b[i]; - } - - r = (-(int16_t)(r >> 1) | -(int16_t)(r & 1)) >> (8 * sizeof(uint16_t) -1); - return (int8_t)r; -} - - -void PQCLEAN_FRODOKEM976SHAKE_CLEAN_ct_select(uint8_t *r, const uint8_t *a, const uint8_t *b, size_t len, int8_t selector) { - // Select one of the two input arrays to be moved to r - // If (selector == 0) then load r with a, else if (selector == -1) load r with b - - for (size_t i = 0; i < len; i++) { - r[i] = (~selector & a[i]) | (selector & b[i]); - } -} - - -void PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes(uint8_t *mem, size_t n) { - // Clear 8-bit bytes from memory. "n" indicates the number of bytes to be zeroed. - // This function uses the volatile type qualifier to inform the compiler not to optimize out the memory clearing. - volatile uint8_t *v = mem; - - for (size_t i = 0; i < n; i++) { - v[i] = 0; - } -} diff --git a/src/kem/ntru/ntruhps2048509/avx2/CMakeLists.txt b/src/kem/ntru/ntruhps2048509/avx2/CMakeLists.txt deleted file mode 100644 index 80193c5a..00000000 --- a/src/kem/ntru/ntruhps2048509/avx2/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -set( - SRC_AVX2_NTRUHPS2048509 - cmov.c - crypto_sort_int32.c - kem.c - owcpa.c - pack3.c - packq.c - poly.c - poly_lift.c - poly_mod_3_Phi_n.s - poly_mod_q_Phi_n.s - poly_r2_inv.c - poly_r2_mul.s - poly_rq_mul.s - poly_rq_to_s3.s - poly_s3_inv.c - sample.c - sample_iid.c - square_126_509_shufbytes.s - square_1_509_patience.s - square_15_509_shufbytes.s - square_252_509_shufbytes.s - square_30_509_shufbytes.s - square_3_509_patience.s - square_63_509_shufbytes.s - square_6_509_patience.s - vec32_sample_iid.s -) - -define_kem_alg(ntruhps2048509_avx2 - PQCLEAN_NTRUHPS2048509_AVX2 "${SRC_AVX2_NTRUHPS2048509}" "${CMAKE_CURRENT_SOURCE_DIR}") diff --git a/src/kem/ntru/ntruhps2048509/avx2/api.h b/src/kem/ntru/ntruhps2048509/avx2/api.h deleted file mode 100644 index 09b4de76..00000000 --- a/src/kem/ntru/ntruhps2048509/avx2/api.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef PQCLEAN_NTRUHPS2048509_AVX2_API_H -#define PQCLEAN_NTRUHPS2048509_AVX2_API_H - -#include - -#define PQCLEAN_NTRUHPS2048509_AVX2_CRYPTO_SECRETKEYBYTES 935 -#define PQCLEAN_NTRUHPS2048509_AVX2_CRYPTO_PUBLICKEYBYTES 699 -#define PQCLEAN_NTRUHPS2048509_AVX2_CRYPTO_CIPHERTEXTBYTES 699 -#define PQCLEAN_NTRUHPS2048509_AVX2_CRYPTO_BYTES 32 - -#define PQCLEAN_NTRUHPS2048509_AVX2_CRYPTO_ALGNAME "ntruhps2048509" - -int PQCLEAN_NTRUHPS2048509_AVX2_crypto_kem_keypair(uint8_t *pk, uint8_t *sk); - -int PQCLEAN_NTRUHPS2048509_AVX2_crypto_kem_enc(uint8_t *c, uint8_t *k, const uint8_t *pk); - -int PQCLEAN_NTRUHPS2048509_AVX2_crypto_kem_dec(uint8_t *k, const uint8_t *c, const uint8_t *sk); - -#endif diff --git a/src/kem/ntru/ntruhps2048509/avx2/cmov.c b/src/kem/ntru/ntruhps2048509/avx2/cmov.c deleted file mode 100644 index f87eb23f..00000000 --- a/src/kem/ntru/ntruhps2048509/avx2/cmov.c +++ /dev/null @@ -1,11 +0,0 @@ -#include "cmov.h" - -/* b = 1 means mov, b = 0 means don't mov*/ -void PQCLEAN_NTRUHPS2048509_AVX2_cmov(unsigned char *r, const unsigned char *x, size_t len, unsigned char b) { - size_t i; - - b = (~b + 1); - for (i = 0; i < len; i++) { - r[i] ^= b & (x[i] ^ r[i]); - } -} diff --git a/src/kem/ntru/ntruhps2048509/avx2/cmov.h b/src/kem/ntru/ntruhps2048509/avx2/cmov.h deleted file mode 100644 index fbb079c0..00000000 --- a/src/kem/ntru/ntruhps2048509/avx2/cmov.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef VERIFY_H -#define VERIFY_H - -#include "params.h" - -#include - -void PQCLEAN_NTRUHPS2048509_AVX2_cmov(unsigned char *r, const unsigned char *x, size_t len, unsigned char b); - -#endif diff --git a/src/kem/ntru/ntruhps2048509/avx2/crypto_sort_int32.c b/src/kem/ntru/ntruhps2048509/avx2/crypto_sort_int32.c deleted file mode 100644 index 44fa15bf..00000000 --- a/src/kem/ntru/ntruhps2048509/avx2/crypto_sort_int32.c +++ /dev/null @@ -1,1218 +0,0 @@ -// Based on supercop-20200820/crypto_sort/int32/avx2 - -#include "crypto_sort_int32.h" - -#include -#define int32 int32_t - -typedef __m256i int32x8; -#define int32x8_load(z) _mm256_loadu_si256((__m256i *) (z)) -#define int32x8_store(z,i) _mm256_storeu_si256((__m256i *) (z),(i)) -#define int32x8_min _mm256_min_epi32 -#define int32x8_max _mm256_max_epi32 - -#define int32x8_MINMAX(a,b) \ - do { \ - int32x8 c = int32x8_min((a),(b)); \ - (b) = int32x8_max((a),(b)); \ - (a) = c; \ - } while(0) - -static inline void int32_MINMAX(int32 *a, int32 *b) { - int32 ab = *b ^ *a; - int32 c = (int32)((int64_t) * b - (int64_t) * a); - c ^= ab & (c ^ *b); - c >>= 31; - c &= ab; - *a ^= c; - *b ^= c; -} - - -static void minmax_vector(int32 *x, int32 *y, size_t n) { - if ((long long) n < 8) { - while ((long long) n > 0) { - int32_MINMAX(x, y); - ++x; - ++y; - --n; - } - return; - } - if (n & 7) { - int32x8 x0 = int32x8_load(x + n - 8); - int32x8 y0 = int32x8_load(y + n - 8); - int32x8_MINMAX(x0, y0); - int32x8_store(x + n - 8, x0); - int32x8_store(y + n - 8, y0); - n &= ~7; - } - do { - int32x8 x0 = int32x8_load(x); - int32x8 y0 = int32x8_load(y); - int32x8_MINMAX(x0, y0); - int32x8_store(x, x0); - int32x8_store(y, y0); - x += 8; - y += 8; - n -= 8; - } while (n); -} - -/* stages 8,4,2,1 of size-16 bitonic merging */ - -static void merge16_finish(int32 *x, int32x8 x0, int32x8 x1, int flagdown) { - int32x8 b0, b1, c0, c1, mask; - - int32x8_MINMAX(x0, x1); - - b0 = _mm256_permute2x128_si256(x0, x1, 0x20); /* A0123B0123 */ - b1 = _mm256_permute2x128_si256(x0, x1, 0x31); /* A4567B4567 */ - - int32x8_MINMAX(b0, b1); - - c0 = _mm256_unpacklo_epi64(b0, b1); /* A0145B0145 */ - c1 = _mm256_unpackhi_epi64(b0, b1); /* A2367B2367 */ - - int32x8_MINMAX(c0, c1); - - b0 = _mm256_unpacklo_epi32(c0, c1); /* A0213B0213 */ - b1 = _mm256_unpackhi_epi32(c0, c1); /* A4657B4657 */ - - c0 = _mm256_unpacklo_epi64(b0, b1); /* A0246B0246 */ - c1 = _mm256_unpackhi_epi64(b0, b1); /* A1357B1357 */ - - int32x8_MINMAX(c0, c1); - - b0 = _mm256_unpacklo_epi32(c0, c1); /* A0123B0123 */ - b1 = _mm256_unpackhi_epi32(c0, c1); /* A4567B4567 */ - - x0 = _mm256_permute2x128_si256(b0, b1, 0x20); /* A01234567 */ - x1 = _mm256_permute2x128_si256(b0, b1, 0x31); /* A01234567 */ - - if (flagdown) { - mask = _mm256_set1_epi32(-1); - x0 ^= mask; - x1 ^= mask; - } - - int32x8_store(&x[0], x0); - int32x8_store(&x[8], x1); -} - -/* stages 64,32 of bitonic merging; n is multiple of 128 */ - -static void int32_twostages_32(int32 *x, size_t n) { - size_t i; - - while (n > 0) { - for (i = 0; i < 32; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + 32]); - int32x8 x2 = int32x8_load(&x[i + 64]); - int32x8 x3 = int32x8_load(&x[i + 96]); - - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - - int32x8_store(&x[i], x0); - int32x8_store(&x[i + 32], x1); - int32x8_store(&x[i + 64], x2); - int32x8_store(&x[i + 96], x3); - } - x += 128; - n -= 128; - } -} - -/* stages 4q,2q,q of bitonic merging */ - -static size_t int32_threestages(int32 *x, size_t n, size_t q) { - size_t k, i; - - for (k = 0; k + 8 * q <= n; k += 8 * q) { - for (i = k; i < k + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8 x4 = int32x8_load(&x[i + 4 * q]); - int32x8 x5 = int32x8_load(&x[i + 5 * q]); - int32x8 x6 = int32x8_load(&x[i + 6 * q]); - int32x8 x7 = int32x8_load(&x[i + 7 * q]); - - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - int32x8_store(&x[i + 4 * q], x4); - int32x8_store(&x[i + 5 * q], x5); - int32x8_store(&x[i + 6 * q], x6); - int32x8_store(&x[i + 7 * q], x7); - } - } - - return k; -} - -/* n is a power of 2; n >= 8; if n == 8 then flagdown */ - -// NOLINTNEXTLINE(google-readability-function-size) -static void int32_sort_2power(int32 *x, size_t n, int flagdown) { - size_t p, q, i, j, k; - int32x8 mask; - - if (n == 8) { - int32 x0 = x[0]; - int32 x1 = x[1]; - int32 x2 = x[2]; - int32 x3 = x[3]; - int32 x4 = x[4]; - int32 x5 = x[5]; - int32 x6 = x[6]; - int32 x7 = x[7]; - - /* odd-even sort instead of bitonic sort */ - - int32_MINMAX(&x1, &x0); - int32_MINMAX(&x3, &x2); - int32_MINMAX(&x2, &x0); - int32_MINMAX(&x3, &x1); - int32_MINMAX(&x2, &x1); - - int32_MINMAX(&x5, &x4); - int32_MINMAX(&x7, &x6); - int32_MINMAX(&x6, &x4); - int32_MINMAX(&x7, &x5); - int32_MINMAX(&x6, &x5); - - int32_MINMAX(&x4, &x0); - int32_MINMAX(&x6, &x2); - int32_MINMAX(&x4, &x2); - - int32_MINMAX(&x5, &x1); - int32_MINMAX(&x7, &x3); - int32_MINMAX(&x5, &x3); - - int32_MINMAX(&x2, &x1); - int32_MINMAX(&x4, &x3); - int32_MINMAX(&x6, &x5); - - x[0] = x0; - x[1] = x1; - x[2] = x2; - x[3] = x3; - x[4] = x4; - x[5] = x5; - x[6] = x6; - x[7] = x7; - return; - } - - if (n == 16) { - int32x8 x0, x1, b0, b1, c0, c1; - - x0 = int32x8_load(&x[0]); - x1 = int32x8_load(&x[8]); - - mask = _mm256_set_epi32(0, 0, -1, -1, 0, 0, -1, -1); - - x0 ^= mask; /* A01234567 */ - x1 ^= mask; /* B01234567 */ - - b0 = _mm256_unpacklo_epi32(x0, x1); /* AB0AB1AB4AB5 */ - b1 = _mm256_unpackhi_epi32(x0, x1); /* AB2AB3AB6AB7 */ - - c0 = _mm256_unpacklo_epi64(b0, b1); /* AB0AB2AB4AB6 */ - c1 = _mm256_unpackhi_epi64(b0, b1); /* AB1AB3AB5AB7 */ - - int32x8_MINMAX(c0, c1); - - mask = _mm256_set_epi32(0, 0, -1, -1, -1, -1, 0, 0); - c0 ^= mask; - c1 ^= mask; - - b0 = _mm256_unpacklo_epi32(c0, c1); /* A01B01A45B45 */ - b1 = _mm256_unpackhi_epi32(c0, c1); /* A23B23A67B67 */ - - int32x8_MINMAX(b0, b1); - - x0 = _mm256_unpacklo_epi64(b0, b1); /* A01234567 */ - x1 = _mm256_unpackhi_epi64(b0, b1); /* B01234567 */ - - b0 = _mm256_unpacklo_epi32(x0, x1); /* AB0AB1AB4AB5 */ - b1 = _mm256_unpackhi_epi32(x0, x1); /* AB2AB3AB6AB7 */ - - c0 = _mm256_unpacklo_epi64(b0, b1); /* AB0AB2AB4AB6 */ - c1 = _mm256_unpackhi_epi64(b0, b1); /* AB1AB3AB5AB7 */ - - int32x8_MINMAX(c0, c1); - - b0 = _mm256_unpacklo_epi32(c0, c1); /* A01B01A45B45 */ - b1 = _mm256_unpackhi_epi32(c0, c1); /* A23B23A67B67 */ - - b0 ^= mask; - b1 ^= mask; - - c0 = _mm256_permute2x128_si256(b0, b1, 0x20); /* A01B01A23B23 */ - c1 = _mm256_permute2x128_si256(b0, b1, 0x31); /* A45B45A67B67 */ - - int32x8_MINMAX(c0, c1); - - b0 = _mm256_permute2x128_si256(c0, c1, 0x20); /* A01B01A45B45 */ - b1 = _mm256_permute2x128_si256(c0, c1, 0x31); /* A23B23A67B67 */ - - int32x8_MINMAX(b0, b1); - - x0 = _mm256_unpacklo_epi64(b0, b1); /* A01234567 */ - x1 = _mm256_unpackhi_epi64(b0, b1); /* B01234567 */ - - b0 = _mm256_unpacklo_epi32(x0, x1); /* AB0AB1AB4AB5 */ - b1 = _mm256_unpackhi_epi32(x0, x1); /* AB2AB3AB6AB7 */ - - c0 = _mm256_unpacklo_epi64(b0, b1); /* AB0AB2AB4AB6 */ - c1 = _mm256_unpackhi_epi64(b0, b1); /* AB1AB3AB5AB7 */ - - int32x8_MINMAX(c0, c1); - - b0 = _mm256_unpacklo_epi32(c0, c1); /* A01B01A45B45 */ - b1 = _mm256_unpackhi_epi32(c0, c1); /* A23B23A67B67 */ - - x0 = _mm256_unpacklo_epi64(b0, b1); /* A01234567 */ - x1 = _mm256_unpackhi_epi64(b0, b1); /* B01234567 */ - - mask = _mm256_set1_epi32(-1); - if (flagdown) { - x1 ^= mask; - } else { - x0 ^= mask; - } - - merge16_finish(x, x0, x1, flagdown); - return; - } - - if (n == 32) { - int32x8 x0, x1, x2, x3; - - int32_sort_2power(x, 16, 1); - int32_sort_2power(x + 16, 16, 0); - - x0 = int32x8_load(&x[0]); - x1 = int32x8_load(&x[8]); - x2 = int32x8_load(&x[16]); - x3 = int32x8_load(&x[24]); - - if (flagdown) { - mask = _mm256_set1_epi32(-1); - x0 ^= mask; - x1 ^= mask; - x2 ^= mask; - x3 ^= mask; - } - - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - - merge16_finish(x, x0, x1, flagdown); - merge16_finish(x + 16, x2, x3, flagdown); - return; - } - - p = n >> 3; - for (i = 0; i < p; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x2 = int32x8_load(&x[i + 2 * p]); - int32x8 x4 = int32x8_load(&x[i + 4 * p]); - int32x8 x6 = int32x8_load(&x[i + 6 * p]); - - /* odd-even stage instead of bitonic stage */ - - int32x8_MINMAX(x4, x0); - int32x8_MINMAX(x6, x2); - int32x8_MINMAX(x2, x0); - int32x8_MINMAX(x6, x4); - int32x8_MINMAX(x2, x4); - - int32x8_store(&x[i], x0); - int32x8_store(&x[i + 2 * p], x2); - int32x8_store(&x[i + 4 * p], x4); - int32x8_store(&x[i + 6 * p], x6); - - int32x8 x1 = int32x8_load(&x[i + p]); - int32x8 x3 = int32x8_load(&x[i + 3 * p]); - int32x8 x5 = int32x8_load(&x[i + 5 * p]); - int32x8 x7 = int32x8_load(&x[i + 7 * p]); - - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x3, x7); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x5, x3); - - int32x8_store(&x[i + p], x1); - int32x8_store(&x[i + 3 * p], x3); - int32x8_store(&x[i + 5 * p], x5); - int32x8_store(&x[i + 7 * p], x7); - } - - if (n >= 128) { - int flip, flipflip; - - mask = _mm256_set1_epi32(-1); - - for (j = 0; j < n; j += 32) { - int32x8 x0 = int32x8_load(&x[j]); - int32x8 x1 = int32x8_load(&x[j + 16]); - x0 ^= mask; - x1 ^= mask; - int32x8_store(&x[j], x0); - int32x8_store(&x[j + 16], x1); - } - - p = 8; - for (;;) { /* for p in [8, 16, ..., n/16] */ - q = p >> 1; - while (q >= 128) { - int32_threestages(x, n, q >> 2); - q >>= 3; - } - if (q == 64) { - int32_twostages_32(x, n); - q = 16; - } - if (q == 32) { - q = 8; - for (k = 0; k < n; k += 8 * q) { - for (i = k; i < k + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8 x4 = int32x8_load(&x[i + 4 * q]); - int32x8 x5 = int32x8_load(&x[i + 5 * q]); - int32x8 x6 = int32x8_load(&x[i + 6 * q]); - int32x8 x7 = int32x8_load(&x[i + 7 * q]); - - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - int32x8_store(&x[i + 4 * q], x4); - int32x8_store(&x[i + 5 * q], x5); - int32x8_store(&x[i + 6 * q], x6); - int32x8_store(&x[i + 7 * q], x7); - } - } - q = 4; - } - if (q == 16) { - q = 8; - for (k = 0; k < n; k += 4 * q) { - for (i = k; i < k + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - } - } - q = 4; - } - if (q == 8) { - for (k = 0; k < n; k += q + q) { - int32x8 x0 = int32x8_load(&x[k]); - int32x8 x1 = int32x8_load(&x[k + q]); - - int32x8_MINMAX(x0, x1); - - int32x8_store(&x[k], x0); - int32x8_store(&x[k + q], x1); - } - } - - q = n >> 3; - flip = 0; - if (p << 1 == q) { - flip = 1; - } - flipflip = 1 - flip; - for (j = 0; j < q; j += p + p) { - for (k = j; k < j + p + p; k += p) { - for (i = k; i < k + p; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8 x4 = int32x8_load(&x[i + 4 * q]); - int32x8 x5 = int32x8_load(&x[i + 5 * q]); - int32x8 x6 = int32x8_load(&x[i + 6 * q]); - int32x8 x7 = int32x8_load(&x[i + 7 * q]); - - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - - if (flip) { - x0 ^= mask; - x1 ^= mask; - x2 ^= mask; - x3 ^= mask; - x4 ^= mask; - x5 ^= mask; - x6 ^= mask; - x7 ^= mask; - } - - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - int32x8_store(&x[i + 4 * q], x4); - int32x8_store(&x[i + 5 * q], x5); - int32x8_store(&x[i + 6 * q], x6); - int32x8_store(&x[i + 7 * q], x7); - } - flip ^= 1; - } - flip ^= flipflip; - } - - if (p << 4 == n) { - break; - } - p <<= 1; - } - } - - for (p = 4; p >= 1; p >>= 1) { - int32 *z = x; - int32 *target = x + n; - if (p == 4) { - mask = _mm256_set_epi32(0, 0, 0, 0, -1, -1, -1, -1); - while (z != target) { - int32x8 x0 = int32x8_load(&z[0]); - int32x8 x1 = int32x8_load(&z[8]); - x0 ^= mask; - x1 ^= mask; - int32x8_store(&z[0], x0); - int32x8_store(&z[8], x1); - z += 16; - } - } else if (p == 2) { - mask = _mm256_set_epi32(0, 0, -1, -1, -1, -1, 0, 0); - while (z != target) { - int32x8 x0 = int32x8_load(&z[0]); - int32x8 x1 = int32x8_load(&z[8]); - x0 ^= mask; - x1 ^= mask; - int32x8 b0 = _mm256_permute2x128_si256(x0, x1, 0x20); - int32x8 b1 = _mm256_permute2x128_si256(x0, x1, 0x31); - int32x8_MINMAX(b0, b1); - int32x8 c0 = _mm256_permute2x128_si256(b0, b1, 0x20); - int32x8 c1 = _mm256_permute2x128_si256(b0, b1, 0x31); - int32x8_store(&z[0], c0); - int32x8_store(&z[8], c1); - z += 16; - } - } else { /* p == 1 */ - mask = _mm256_set_epi32(0, -1, -1, 0, 0, -1, -1, 0); - while (z != target) { - int32x8 x0 = int32x8_load(&z[0]); - int32x8 x1 = int32x8_load(&z[8]); - x0 ^= mask; - x1 ^= mask; - int32x8 b0 = _mm256_permute2x128_si256(x0, x1, 0x20); /* A0123B0123 */ - int32x8 b1 = _mm256_permute2x128_si256(x0, x1, 0x31); /* A4567B4567 */ - int32x8 c0 = _mm256_unpacklo_epi64(b0, b1); /* A0145B0145 */ - int32x8 c1 = _mm256_unpackhi_epi64(b0, b1); /* A2367B2367 */ - int32x8_MINMAX(c0, c1); - int32x8 d0 = _mm256_unpacklo_epi64(c0, c1); /* A0123B0123 */ - int32x8 d1 = _mm256_unpackhi_epi64(c0, c1); /* A4567B4567 */ - int32x8_MINMAX(d0, d1); - int32x8 e0 = _mm256_permute2x128_si256(d0, d1, 0x20); - int32x8 e1 = _mm256_permute2x128_si256(d0, d1, 0x31); - int32x8_store(&z[0], e0); - int32x8_store(&z[8], e1); - z += 16; - } - } - - q = n >> 4; - while (q >= 128 || q == 32) { - int32_threestages(x, n, q >> 2); - q >>= 3; - } - while (q >= 16) { - q >>= 1; - for (j = 0; j < n; j += 4 * q) { - for (k = j; k < j + q; k += 8) { - int32x8 x0 = int32x8_load(&x[k]); - int32x8 x1 = int32x8_load(&x[k + q]); - int32x8 x2 = int32x8_load(&x[k + 2 * q]); - int32x8 x3 = int32x8_load(&x[k + 3 * q]); - - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - - int32x8_store(&x[k], x0); - int32x8_store(&x[k + q], x1); - int32x8_store(&x[k + 2 * q], x2); - int32x8_store(&x[k + 3 * q], x3); - } - } - q >>= 1; - } - if (q == 8) { - for (j = 0; j < n; j += 2 * q) { - int32x8 x0 = int32x8_load(&x[j]); - int32x8 x1 = int32x8_load(&x[j + q]); - - int32x8_MINMAX(x0, x1); - - int32x8_store(&x[j], x0); - int32x8_store(&x[j + q], x1); - } - } - - q = n >> 3; - for (k = 0; k < q; k += 8) { - int32x8 x0 = int32x8_load(&x[k]); - int32x8 x1 = int32x8_load(&x[k + q]); - int32x8 x2 = int32x8_load(&x[k + 2 * q]); - int32x8 x3 = int32x8_load(&x[k + 3 * q]); - int32x8 x4 = int32x8_load(&x[k + 4 * q]); - int32x8 x5 = int32x8_load(&x[k + 5 * q]); - int32x8 x6 = int32x8_load(&x[k + 6 * q]); - int32x8 x7 = int32x8_load(&x[k + 7 * q]); - - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - - int32x8_store(&x[k], x0); - int32x8_store(&x[k + q], x1); - int32x8_store(&x[k + 2 * q], x2); - int32x8_store(&x[k + 3 * q], x3); - int32x8_store(&x[k + 4 * q], x4); - int32x8_store(&x[k + 5 * q], x5); - int32x8_store(&x[k + 6 * q], x6); - int32x8_store(&x[k + 7 * q], x7); - } - } - - /* everything is still masked with _mm256_set_epi32(0,-1,0,-1,0,-1,0,-1); */ - mask = _mm256_set1_epi32(-1); - - for (i = 0; i < n; i += 64) { - int32x8 a0 = int32x8_load(&x[i]); - int32x8 a1 = int32x8_load(&x[i + 8]); - int32x8 a2 = int32x8_load(&x[i + 16]); - int32x8 a3 = int32x8_load(&x[i + 24]); - int32x8 a4 = int32x8_load(&x[i + 32]); - int32x8 a5 = int32x8_load(&x[i + 40]); - int32x8 a6 = int32x8_load(&x[i + 48]); - int32x8 a7 = int32x8_load(&x[i + 56]); - - int32x8 b0 = _mm256_unpacklo_epi32(a0, a1); /* AB0AB1AB4AB5 */ - int32x8 b1 = _mm256_unpackhi_epi32(a0, a1); /* AB2AB3AB6AB7 */ - int32x8 b2 = _mm256_unpacklo_epi32(a2, a3); /* CD0CD1CD4CD5 */ - int32x8 b3 = _mm256_unpackhi_epi32(a2, a3); /* CD2CD3CD6CD7 */ - int32x8 b4 = _mm256_unpacklo_epi32(a4, a5); /* EF0EF1EF4EF5 */ - int32x8 b5 = _mm256_unpackhi_epi32(a4, a5); /* EF2EF3EF6EF7 */ - int32x8 b6 = _mm256_unpacklo_epi32(a6, a7); /* GH0GH1GH4GH5 */ - int32x8 b7 = _mm256_unpackhi_epi32(a6, a7); /* GH2GH3GH6GH7 */ - - int32x8 c0 = _mm256_unpacklo_epi64(b0, b2); /* ABCD0ABCD4 */ - int32x8 c1 = _mm256_unpacklo_epi64(b1, b3); /* ABCD2ABCD6 */ - int32x8 c2 = _mm256_unpackhi_epi64(b0, b2); /* ABCD1ABCD5 */ - int32x8 c3 = _mm256_unpackhi_epi64(b1, b3); /* ABCD3ABCD7 */ - int32x8 c4 = _mm256_unpacklo_epi64(b4, b6); /* EFGH0EFGH4 */ - int32x8 c5 = _mm256_unpacklo_epi64(b5, b7); /* EFGH2EFGH6 */ - int32x8 c6 = _mm256_unpackhi_epi64(b4, b6); /* EFGH1EFGH5 */ - int32x8 c7 = _mm256_unpackhi_epi64(b5, b7); /* EFGH3EFGH7 */ - - if (flagdown) { - c2 ^= mask; - c3 ^= mask; - c6 ^= mask; - c7 ^= mask; - } else { - c0 ^= mask; - c1 ^= mask; - c4 ^= mask; - c5 ^= mask; - } - - int32x8 d0 = _mm256_permute2x128_si256(c0, c4, 0x20); /* ABCDEFGH0 */ - int32x8 d1 = _mm256_permute2x128_si256(c2, c6, 0x20); /* ABCDEFGH1 */ - int32x8 d2 = _mm256_permute2x128_si256(c1, c5, 0x20); /* ABCDEFGH2 */ - int32x8 d3 = _mm256_permute2x128_si256(c3, c7, 0x20); /* ABCDEFGH5 */ - int32x8 d4 = _mm256_permute2x128_si256(c0, c4, 0x31); /* ABCDEFGH4 */ - int32x8 d5 = _mm256_permute2x128_si256(c2, c6, 0x31); /* ABCDEFGH3 */ - int32x8 d6 = _mm256_permute2x128_si256(c1, c5, 0x31); /* ABCDEFGH6 */ - int32x8 d7 = _mm256_permute2x128_si256(c3, c7, 0x31); /* ABCDEFGH7 */ - - int32x8_MINMAX(d0, d1); - int32x8_MINMAX(d2, d3); - int32x8_MINMAX(d4, d5); - int32x8_MINMAX(d6, d7); - int32x8_MINMAX(d0, d2); - int32x8_MINMAX(d1, d3); - int32x8_MINMAX(d4, d6); - int32x8_MINMAX(d5, d7); - int32x8_MINMAX(d0, d4); - int32x8_MINMAX(d1, d5); - int32x8_MINMAX(d2, d6); - int32x8_MINMAX(d3, d7); - - int32x8 e0 = _mm256_unpacklo_epi32(d0, d1); - int32x8 e1 = _mm256_unpackhi_epi32(d0, d1); - int32x8 e2 = _mm256_unpacklo_epi32(d2, d3); - int32x8 e3 = _mm256_unpackhi_epi32(d2, d3); - int32x8 e4 = _mm256_unpacklo_epi32(d4, d5); - int32x8 e5 = _mm256_unpackhi_epi32(d4, d5); - int32x8 e6 = _mm256_unpacklo_epi32(d6, d7); - int32x8 e7 = _mm256_unpackhi_epi32(d6, d7); - - int32x8 f0 = _mm256_unpacklo_epi64(e0, e2); - int32x8 f1 = _mm256_unpacklo_epi64(e1, e3); - int32x8 f2 = _mm256_unpackhi_epi64(e0, e2); - int32x8 f3 = _mm256_unpackhi_epi64(e1, e3); - int32x8 f4 = _mm256_unpacklo_epi64(e4, e6); - int32x8 f5 = _mm256_unpacklo_epi64(e5, e7); - int32x8 f6 = _mm256_unpackhi_epi64(e4, e6); - int32x8 f7 = _mm256_unpackhi_epi64(e5, e7); - - int32x8 g0 = _mm256_permute2x128_si256(f0, f4, 0x20); - int32x8 g1 = _mm256_permute2x128_si256(f2, f6, 0x20); - int32x8 g2 = _mm256_permute2x128_si256(f1, f5, 0x20); - int32x8 g3 = _mm256_permute2x128_si256(f3, f7, 0x20); - int32x8 g4 = _mm256_permute2x128_si256(f0, f4, 0x31); - int32x8 g5 = _mm256_permute2x128_si256(f2, f6, 0x31); - int32x8 g6 = _mm256_permute2x128_si256(f1, f5, 0x31); - int32x8 g7 = _mm256_permute2x128_si256(f3, f7, 0x31); - - int32x8_store(&x[i], g0); - int32x8_store(&x[i + 8], g1); - int32x8_store(&x[i + 16], g2); - int32x8_store(&x[i + 24], g3); - int32x8_store(&x[i + 32], g4); - int32x8_store(&x[i + 40], g5); - int32x8_store(&x[i + 48], g6); - int32x8_store(&x[i + 56], g7); - } - - q = n >> 4; - while (q >= 128 || q == 32) { - q >>= 2; - for (j = 0; j < n; j += 8 * q) { - for (i = j; i < j + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8 x4 = int32x8_load(&x[i + 4 * q]); - int32x8 x5 = int32x8_load(&x[i + 5 * q]); - int32x8 x6 = int32x8_load(&x[i + 6 * q]); - int32x8 x7 = int32x8_load(&x[i + 7 * q]); - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - int32x8_store(&x[i + 4 * q], x4); - int32x8_store(&x[i + 5 * q], x5); - int32x8_store(&x[i + 6 * q], x6); - int32x8_store(&x[i + 7 * q], x7); - } - } - q >>= 1; - } - while (q >= 16) { - q >>= 1; - for (j = 0; j < n; j += 4 * q) { - for (i = j; i < j + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - } - } - q >>= 1; - } - if (q == 8) { - for (j = 0; j < n; j += q + q) { - int32x8 x0 = int32x8_load(&x[j]); - int32x8 x1 = int32x8_load(&x[j + q]); - int32x8_MINMAX(x0, x1); - int32x8_store(&x[j], x0); - int32x8_store(&x[j + q], x1); - } - } - - q = n >> 3; - for (i = 0; i < q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8 x4 = int32x8_load(&x[i + 4 * q]); - int32x8 x5 = int32x8_load(&x[i + 5 * q]); - int32x8 x6 = int32x8_load(&x[i + 6 * q]); - int32x8 x7 = int32x8_load(&x[i + 7 * q]); - - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - - int32x8 b0 = _mm256_unpacklo_epi32(x0, x4); /* AE0AE1AE4AE5 */ - int32x8 b1 = _mm256_unpackhi_epi32(x0, x4); /* AE2AE3AE6AE7 */ - int32x8 b2 = _mm256_unpacklo_epi32(x1, x5); /* BF0BF1BF4BF5 */ - int32x8 b3 = _mm256_unpackhi_epi32(x1, x5); /* BF2BF3BF6BF7 */ - int32x8 b4 = _mm256_unpacklo_epi32(x2, x6); /* CG0CG1CG4CG5 */ - int32x8 b5 = _mm256_unpackhi_epi32(x2, x6); /* CG2CG3CG6CG7 */ - int32x8 b6 = _mm256_unpacklo_epi32(x3, x7); /* DH0DH1DH4DH5 */ - int32x8 b7 = _mm256_unpackhi_epi32(x3, x7); /* DH2DH3DH6DH7 */ - - int32x8 c0 = _mm256_unpacklo_epi64(b0, b4); /* AECG0AECG4 */ - int32x8 c1 = _mm256_unpacklo_epi64(b1, b5); /* AECG2AECG6 */ - int32x8 c2 = _mm256_unpackhi_epi64(b0, b4); /* AECG1AECG5 */ - int32x8 c3 = _mm256_unpackhi_epi64(b1, b5); /* AECG3AECG7 */ - int32x8 c4 = _mm256_unpacklo_epi64(b2, b6); /* BFDH0BFDH4 */ - int32x8 c5 = _mm256_unpacklo_epi64(b3, b7); /* BFDH2BFDH6 */ - int32x8 c6 = _mm256_unpackhi_epi64(b2, b6); /* BFDH1BFDH5 */ - int32x8 c7 = _mm256_unpackhi_epi64(b3, b7); /* BFDH3BFDH7 */ - - int32x8 d0 = _mm256_permute2x128_si256(c0, c4, 0x20); /* AECGBFDH0 */ - int32x8 d1 = _mm256_permute2x128_si256(c1, c5, 0x20); /* AECGBFDH2 */ - int32x8 d2 = _mm256_permute2x128_si256(c2, c6, 0x20); /* AECGBFDH1 */ - int32x8 d3 = _mm256_permute2x128_si256(c3, c7, 0x20); /* AECGBFDH3 */ - int32x8 d4 = _mm256_permute2x128_si256(c0, c4, 0x31); /* AECGBFDH4 */ - int32x8 d5 = _mm256_permute2x128_si256(c1, c5, 0x31); /* AECGBFDH6 */ - int32x8 d6 = _mm256_permute2x128_si256(c2, c6, 0x31); /* AECGBFDH5 */ - int32x8 d7 = _mm256_permute2x128_si256(c3, c7, 0x31); /* AECGBFDH7 */ - - if (flagdown) { - d0 ^= mask; - d1 ^= mask; - d2 ^= mask; - d3 ^= mask; - d4 ^= mask; - d5 ^= mask; - d6 ^= mask; - d7 ^= mask; - } - - int32x8_store(&x[i], d0); - int32x8_store(&x[i + q], d4); - int32x8_store(&x[i + 2 * q], d1); - int32x8_store(&x[i + 3 * q], d5); - int32x8_store(&x[i + 4 * q], d2); - int32x8_store(&x[i + 5 * q], d6); - int32x8_store(&x[i + 6 * q], d3); - int32x8_store(&x[i + 7 * q], d7); - } -} - -void PQCLEAN_NTRUHPS2048509_AVX2_crypto_sort_int32(int32 *x, size_t n) { - size_t q, i, j; - - if (n <= 8) { - if (n == 8) { - int32_MINMAX(&x[0], &x[1]); - int32_MINMAX(&x[1], &x[2]); - int32_MINMAX(&x[2], &x[3]); - int32_MINMAX(&x[3], &x[4]); - int32_MINMAX(&x[4], &x[5]); - int32_MINMAX(&x[5], &x[6]); - int32_MINMAX(&x[6], &x[7]); - } - if (n >= 7) { - int32_MINMAX(&x[0], &x[1]); - int32_MINMAX(&x[1], &x[2]); - int32_MINMAX(&x[2], &x[3]); - int32_MINMAX(&x[3], &x[4]); - int32_MINMAX(&x[4], &x[5]); - int32_MINMAX(&x[5], &x[6]); - } - if (n >= 6) { - int32_MINMAX(&x[0], &x[1]); - int32_MINMAX(&x[1], &x[2]); - int32_MINMAX(&x[2], &x[3]); - int32_MINMAX(&x[3], &x[4]); - int32_MINMAX(&x[4], &x[5]); - } - if (n >= 5) { - int32_MINMAX(&x[0], &x[1]); - int32_MINMAX(&x[1], &x[2]); - int32_MINMAX(&x[2], &x[3]); - int32_MINMAX(&x[3], &x[4]); - } - if (n >= 4) { - int32_MINMAX(&x[0], &x[1]); - int32_MINMAX(&x[1], &x[2]); - int32_MINMAX(&x[2], &x[3]); - } - if (n >= 3) { - int32_MINMAX(&x[0], &x[1]); - int32_MINMAX(&x[1], &x[2]); - } - if (n >= 2) { - int32_MINMAX(&x[0], &x[1]); - } - return; - } - - if (!(n & (n - 1))) { - int32_sort_2power(x, n, 0); - return; - } - - q = 8; - while (q < n - q) { - q += q; - } - /* n > q >= 8 */ - - if (q <= 128) { /* n <= 256 */ - int32x8 y[32]; - for (i = q >> 3; i < q >> 2; ++i) { - y[i] = _mm256_set1_epi32(0x7fffffff); - } - for (i = 0; i < n; ++i) { - ((int32 *) y)[i] = x[i]; - } - int32_sort_2power((int32 *) y, 2 * q, 0); - for (i = 0; i < n; ++i) { - x[i] = ((int32 *) y)[i]; - } - return; - } - - int32_sort_2power(x, q, 1); - PQCLEAN_NTRUHPS2048509_AVX2_crypto_sort_int32(x + q, n - q); - - while (q >= 64) { - q >>= 2; - j = int32_threestages(x, n, q); - minmax_vector(x + j, x + j + 4 * q, n - 4 * q - j); - if (j + 4 * q <= n) { - for (i = j; i < j + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - } - j += 4 * q; - } - minmax_vector(x + j, x + j + 2 * q, n - 2 * q - j); - if (j + 2 * q <= n) { - for (i = j; i < j + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8_MINMAX(x0, x1); - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - } - j += 2 * q; - } - minmax_vector(x + j, x + j + q, n - q - j); - q >>= 1; - } - if (q == 32) { - j = 0; - for (; j + 64 <= n; j += 64) { - int32x8 x0 = int32x8_load(&x[j]); - int32x8 x1 = int32x8_load(&x[j + 8]); - int32x8 x2 = int32x8_load(&x[j + 16]); - int32x8 x3 = int32x8_load(&x[j + 24]); - int32x8 x4 = int32x8_load(&x[j + 32]); - int32x8 x5 = int32x8_load(&x[j + 40]); - int32x8 x6 = int32x8_load(&x[j + 48]); - int32x8 x7 = int32x8_load(&x[j + 56]); - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - int32x8 a0 = _mm256_permute2x128_si256(x0, x1, 0x20); - int32x8 a1 = _mm256_permute2x128_si256(x0, x1, 0x31); - int32x8 a2 = _mm256_permute2x128_si256(x2, x3, 0x20); - int32x8 a3 = _mm256_permute2x128_si256(x2, x3, 0x31); - int32x8 a4 = _mm256_permute2x128_si256(x4, x5, 0x20); - int32x8 a5 = _mm256_permute2x128_si256(x4, x5, 0x31); - int32x8 a6 = _mm256_permute2x128_si256(x6, x7, 0x20); - int32x8 a7 = _mm256_permute2x128_si256(x6, x7, 0x31); - int32x8_MINMAX(a0, a1); - int32x8_MINMAX(a2, a3); - int32x8_MINMAX(a4, a5); - int32x8_MINMAX(a6, a7); - int32x8 b0 = _mm256_permute2x128_si256(a0, a1, 0x20); - int32x8 b1 = _mm256_permute2x128_si256(a0, a1, 0x31); - int32x8 b2 = _mm256_permute2x128_si256(a2, a3, 0x20); - int32x8 b3 = _mm256_permute2x128_si256(a2, a3, 0x31); - int32x8 b4 = _mm256_permute2x128_si256(a4, a5, 0x20); - int32x8 b5 = _mm256_permute2x128_si256(a4, a5, 0x31); - int32x8 b6 = _mm256_permute2x128_si256(a6, a7, 0x20); - int32x8 b7 = _mm256_permute2x128_si256(a6, a7, 0x31); - int32x8 c0 = _mm256_unpacklo_epi64(b0, b1); - int32x8 c1 = _mm256_unpackhi_epi64(b0, b1); - int32x8 c2 = _mm256_unpacklo_epi64(b2, b3); - int32x8 c3 = _mm256_unpackhi_epi64(b2, b3); - int32x8 c4 = _mm256_unpacklo_epi64(b4, b5); - int32x8 c5 = _mm256_unpackhi_epi64(b4, b5); - int32x8 c6 = _mm256_unpacklo_epi64(b6, b7); - int32x8 c7 = _mm256_unpackhi_epi64(b6, b7); - int32x8_MINMAX(c0, c1); - int32x8_MINMAX(c2, c3); - int32x8_MINMAX(c4, c5); - int32x8_MINMAX(c6, c7); - int32x8 d0 = _mm256_unpacklo_epi32(c0, c1); - int32x8 d1 = _mm256_unpackhi_epi32(c0, c1); - int32x8 d2 = _mm256_unpacklo_epi32(c2, c3); - int32x8 d3 = _mm256_unpackhi_epi32(c2, c3); - int32x8 d4 = _mm256_unpacklo_epi32(c4, c5); - int32x8 d5 = _mm256_unpackhi_epi32(c4, c5); - int32x8 d6 = _mm256_unpacklo_epi32(c6, c7); - int32x8 d7 = _mm256_unpackhi_epi32(c6, c7); - int32x8 e0 = _mm256_unpacklo_epi64(d0, d1); - int32x8 e1 = _mm256_unpackhi_epi64(d0, d1); - int32x8 e2 = _mm256_unpacklo_epi64(d2, d3); - int32x8 e3 = _mm256_unpackhi_epi64(d2, d3); - int32x8 e4 = _mm256_unpacklo_epi64(d4, d5); - int32x8 e5 = _mm256_unpackhi_epi64(d4, d5); - int32x8 e6 = _mm256_unpacklo_epi64(d6, d7); - int32x8 e7 = _mm256_unpackhi_epi64(d6, d7); - int32x8_MINMAX(e0, e1); - int32x8_MINMAX(e2, e3); - int32x8_MINMAX(e4, e5); - int32x8_MINMAX(e6, e7); - int32x8 f0 = _mm256_unpacklo_epi32(e0, e1); - int32x8 f1 = _mm256_unpackhi_epi32(e0, e1); - int32x8 f2 = _mm256_unpacklo_epi32(e2, e3); - int32x8 f3 = _mm256_unpackhi_epi32(e2, e3); - int32x8 f4 = _mm256_unpacklo_epi32(e4, e5); - int32x8 f5 = _mm256_unpackhi_epi32(e4, e5); - int32x8 f6 = _mm256_unpacklo_epi32(e6, e7); - int32x8 f7 = _mm256_unpackhi_epi32(e6, e7); - int32x8_store(&x[j], f0); - int32x8_store(&x[j + 8], f1); - int32x8_store(&x[j + 16], f2); - int32x8_store(&x[j + 24], f3); - int32x8_store(&x[j + 32], f4); - int32x8_store(&x[j + 40], f5); - int32x8_store(&x[j + 48], f6); - int32x8_store(&x[j + 56], f7); - } - minmax_vector(x + j, x + j + 32, n - 32 - j); - goto continue16; - } - if (q == 16) { - j = 0; -continue16: - for (; j + 32 <= n; j += 32) { - int32x8 x0 = int32x8_load(&x[j]); - int32x8 x1 = int32x8_load(&x[j + 8]); - int32x8 x2 = int32x8_load(&x[j + 16]); - int32x8 x3 = int32x8_load(&x[j + 24]); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8 a0 = _mm256_permute2x128_si256(x0, x1, 0x20); - int32x8 a1 = _mm256_permute2x128_si256(x0, x1, 0x31); - int32x8 a2 = _mm256_permute2x128_si256(x2, x3, 0x20); - int32x8 a3 = _mm256_permute2x128_si256(x2, x3, 0x31); - int32x8_MINMAX(a0, a1); - int32x8_MINMAX(a2, a3); - int32x8 b0 = _mm256_permute2x128_si256(a0, a1, 0x20); - int32x8 b1 = _mm256_permute2x128_si256(a0, a1, 0x31); - int32x8 b2 = _mm256_permute2x128_si256(a2, a3, 0x20); - int32x8 b3 = _mm256_permute2x128_si256(a2, a3, 0x31); - int32x8 c0 = _mm256_unpacklo_epi64(b0, b1); - int32x8 c1 = _mm256_unpackhi_epi64(b0, b1); - int32x8 c2 = _mm256_unpacklo_epi64(b2, b3); - int32x8 c3 = _mm256_unpackhi_epi64(b2, b3); - int32x8_MINMAX(c0, c1); - int32x8_MINMAX(c2, c3); - int32x8 d0 = _mm256_unpacklo_epi32(c0, c1); - int32x8 d1 = _mm256_unpackhi_epi32(c0, c1); - int32x8 d2 = _mm256_unpacklo_epi32(c2, c3); - int32x8 d3 = _mm256_unpackhi_epi32(c2, c3); - int32x8 e0 = _mm256_unpacklo_epi64(d0, d1); - int32x8 e1 = _mm256_unpackhi_epi64(d0, d1); - int32x8 e2 = _mm256_unpacklo_epi64(d2, d3); - int32x8 e3 = _mm256_unpackhi_epi64(d2, d3); - int32x8_MINMAX(e0, e1); - int32x8_MINMAX(e2, e3); - int32x8 f0 = _mm256_unpacklo_epi32(e0, e1); - int32x8 f1 = _mm256_unpackhi_epi32(e0, e1); - int32x8 f2 = _mm256_unpacklo_epi32(e2, e3); - int32x8 f3 = _mm256_unpackhi_epi32(e2, e3); - int32x8_store(&x[j], f0); - int32x8_store(&x[j + 8], f1); - int32x8_store(&x[j + 16], f2); - int32x8_store(&x[j + 24], f3); - } - minmax_vector(x + j, x + j + 16, n - 16 - j); - goto continue8; - } - /* q == 8 */ - j = 0; -continue8: - for (; j + 16 <= n; j += 16) { - int32x8 x0 = int32x8_load(&x[j]); - int32x8 x1 = int32x8_load(&x[j + 8]); - int32x8_MINMAX(x0, x1); - int32x8_store(&x[j], x0); - int32x8_store(&x[j + 8], x1); - int32x8 a0 = _mm256_permute2x128_si256(x0, x1, 0x20); /* x0123y0123 */ - int32x8 a1 = _mm256_permute2x128_si256(x0, x1, 0x31); /* x4567y4567 */ - int32x8_MINMAX(a0, a1); - int32x8 b0 = _mm256_permute2x128_si256(a0, a1, 0x20); /* x01234567 */ - int32x8 b1 = _mm256_permute2x128_si256(a0, a1, 0x31); /* y01234567 */ - int32x8 c0 = _mm256_unpacklo_epi64(b0, b1); /* x01y01x45y45 */ - int32x8 c1 = _mm256_unpackhi_epi64(b0, b1); /* x23y23x67y67 */ - int32x8_MINMAX(c0, c1); - int32x8 d0 = _mm256_unpacklo_epi32(c0, c1); /* x02x13x46x57 */ - int32x8 d1 = _mm256_unpackhi_epi32(c0, c1); /* y02y13y46y57 */ - int32x8 e0 = _mm256_unpacklo_epi64(d0, d1); /* x02y02x46y46 */ - int32x8 e1 = _mm256_unpackhi_epi64(d0, d1); /* x13y13x57y57 */ - int32x8_MINMAX(e0, e1); - int32x8 f0 = _mm256_unpacklo_epi32(e0, e1); /* x01234567 */ - int32x8 f1 = _mm256_unpackhi_epi32(e0, e1); /* y01234567 */ - int32x8_store(&x[j], f0); - int32x8_store(&x[j + 8], f1); - } - minmax_vector(x + j, x + j + 8, n - 8 - j); - if (j + 8 <= n) { - int32_MINMAX(&x[j], &x[j + 4]); - int32_MINMAX(&x[j + 1], &x[j + 5]); - int32_MINMAX(&x[j + 2], &x[j + 6]); - int32_MINMAX(&x[j + 3], &x[j + 7]); - int32_MINMAX(&x[j], &x[j + 2]); - int32_MINMAX(&x[j + 1], &x[j + 3]); - int32_MINMAX(&x[j], &x[j + 1]); - int32_MINMAX(&x[j + 2], &x[j + 3]); - int32_MINMAX(&x[j + 4], &x[j + 6]); - int32_MINMAX(&x[j + 5], &x[j + 7]); - int32_MINMAX(&x[j + 4], &x[j + 5]); - int32_MINMAX(&x[j + 6], &x[j + 7]); - j += 8; - } - minmax_vector(x + j, x + j + 4, n - 4 - j); - if (j + 4 <= n) { - int32_MINMAX(&x[j], &x[j + 2]); - int32_MINMAX(&x[j + 1], &x[j + 3]); - int32_MINMAX(&x[j], &x[j + 1]); - int32_MINMAX(&x[j + 2], &x[j + 3]); - j += 4; - } - if (j + 3 <= n) { - int32_MINMAX(&x[j], &x[j + 2]); - } - if (j + 2 <= n) { - int32_MINMAX(&x[j], &x[j + 1]); - } -} diff --git a/src/kem/ntru/ntruhps2048509/avx2/crypto_sort_int32.h b/src/kem/ntru/ntruhps2048509/avx2/crypto_sort_int32.h deleted file mode 100644 index 5a121e16..00000000 --- a/src/kem/ntru/ntruhps2048509/avx2/crypto_sort_int32.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef CRYPTO_SORT -#define CRYPTO_SORT - -#include "params.h" - -#include -#include - -void PQCLEAN_NTRUHPS2048509_AVX2_crypto_sort_int32(int32_t *x, size_t n); - -#endif diff --git a/src/kem/ntru/ntruhps2048509/avx2/kem.c b/src/kem/ntru/ntruhps2048509/avx2/kem.c deleted file mode 100644 index eccc0c1c..00000000 --- a/src/kem/ntru/ntruhps2048509/avx2/kem.c +++ /dev/null @@ -1,63 +0,0 @@ -#include "api.h" -#include "cmov.h" -#include "fips202.h" -#include "owcpa.h" -#include "params.h" -#include "randombytes.h" -#include "sample.h" - -// API FUNCTIONS -int PQCLEAN_NTRUHPS2048509_AVX2_crypto_kem_keypair(uint8_t *pk, uint8_t *sk) { - uint8_t seed[NTRU_SAMPLE_FG_BYTES]; - - randombytes(seed, NTRU_SAMPLE_FG_BYTES); - PQCLEAN_NTRUHPS2048509_AVX2_owcpa_keypair(pk, sk, seed); - - randombytes(sk + NTRU_OWCPA_SECRETKEYBYTES, NTRU_PRFKEYBYTES); - - return 0; -} - -int PQCLEAN_NTRUHPS2048509_AVX2_crypto_kem_enc(uint8_t *c, uint8_t *k, const uint8_t *pk) { - poly r, m; - uint8_t rm[NTRU_OWCPA_MSGBYTES]; - uint8_t rm_seed[NTRU_SAMPLE_RM_BYTES]; - - randombytes(rm_seed, NTRU_SAMPLE_RM_BYTES); - - PQCLEAN_NTRUHPS2048509_AVX2_sample_rm(&r, &m, rm_seed); - - PQCLEAN_NTRUHPS2048509_AVX2_poly_S3_tobytes(rm, &r); - PQCLEAN_NTRUHPS2048509_AVX2_poly_S3_tobytes(rm + NTRU_PACK_TRINARY_BYTES, &m); - sha3_256(k, rm, NTRU_OWCPA_MSGBYTES); - - PQCLEAN_NTRUHPS2048509_AVX2_poly_Z3_to_Zq(&r); - PQCLEAN_NTRUHPS2048509_AVX2_owcpa_enc(c, &r, &m, pk); - - return 0; -} - -int PQCLEAN_NTRUHPS2048509_AVX2_crypto_kem_dec(uint8_t *k, const uint8_t *c, const uint8_t *sk) { - int i, fail; - uint8_t rm[NTRU_OWCPA_MSGBYTES]; - uint8_t buf[NTRU_PRFKEYBYTES + NTRU_CIPHERTEXTBYTES]; - - fail = PQCLEAN_NTRUHPS2048509_AVX2_owcpa_dec(rm, c, sk); - /* If fail = 0 then c = Enc(h, rm). There is no need to re-encapsulate. */ - /* See comment in PQCLEAN_NTRUHPS2048509_AVX2_owcpa_dec for details. */ - - sha3_256(k, rm, NTRU_OWCPA_MSGBYTES); - - /* shake(secret PRF key || input ciphertext) */ - for (i = 0; i < NTRU_PRFKEYBYTES; i++) { - buf[i] = sk[i + NTRU_OWCPA_SECRETKEYBYTES]; - } - for (i = 0; i < NTRU_CIPHERTEXTBYTES; i++) { - buf[NTRU_PRFKEYBYTES + i] = c[i]; - } - sha3_256(rm, buf, NTRU_PRFKEYBYTES + NTRU_CIPHERTEXTBYTES); - - PQCLEAN_NTRUHPS2048509_AVX2_cmov(k, rm, NTRU_SHAREDKEYBYTES, (unsigned char) fail); - - return 0; -} diff --git a/src/kem/ntru/ntruhps2048509/avx2/owcpa.c b/src/kem/ntru/ntruhps2048509/avx2/owcpa.c deleted file mode 100644 index 0bb43436..00000000 --- a/src/kem/ntru/ntruhps2048509/avx2/owcpa.c +++ /dev/null @@ -1,183 +0,0 @@ -#include "owcpa.h" -#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) { - /* 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; - uint32_t t = 0; - uint16_t c; - 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 |= 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, 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; - uint32_t t = 0; - uint16_t ps = 0; - uint16_t ms = 0; - for (i = 0; i < NTRU_N; i++) { - ps += m->coeffs[i] & 1; - ms += m->coeffs[i] & 2; - } - 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, - unsigned char *sk, - const unsigned char seed[NTRU_SAMPLE_FG_BYTES]) { - int i; - - poly x1, x2, x3, x4, x5; - - poly *f = &x1, *g = &x2, *invf_mod3 = &x3; - poly *gf = &x3, *invgf = &x4, *tmp = &x5; - poly *invh = &x3, *h = &x3; - - PQCLEAN_NTRUHPS2048509_AVX2_sample_fg(f, g, seed); - - PQCLEAN_NTRUHPS2048509_AVX2_poly_S3_inv(invf_mod3, f); - PQCLEAN_NTRUHPS2048509_AVX2_poly_S3_tobytes(sk, f); - PQCLEAN_NTRUHPS2048509_AVX2_poly_S3_tobytes(sk + NTRU_PACK_TRINARY_BYTES, invf_mod3); - - /* Lift coeffs of f and g from Z_p to Z_q */ - PQCLEAN_NTRUHPS2048509_AVX2_poly_Z3_to_Zq(f); - PQCLEAN_NTRUHPS2048509_AVX2_poly_Z3_to_Zq(g); - - - /* g = 3*g */ - for (i = 0; i < NTRU_N; i++) { - g->coeffs[i] = 3 * g->coeffs[i]; - } - - PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_mul(gf, g, f); - - PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_inv(invgf, gf); - - PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_mul(tmp, invgf, f); - PQCLEAN_NTRUHPS2048509_AVX2_poly_Sq_mul(invh, tmp, f); - PQCLEAN_NTRUHPS2048509_AVX2_poly_Sq_tobytes(sk + 2 * NTRU_PACK_TRINARY_BYTES, invh); - - PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_mul(tmp, invgf, g); - PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_mul(h, tmp, g); - PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_sum_zero_tobytes(pk, h); -} - - -void PQCLEAN_NTRUHPS2048509_AVX2_owcpa_enc(unsigned char *c, - const poly *r, - const poly *m, - const unsigned char *pk) { - int i; - poly x1, x2; - poly *h = &x1, *liftm = &x1; - poly *ct = &x2; - - PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_sum_zero_frombytes(h, pk); - - PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_mul(ct, r, h); - - PQCLEAN_NTRUHPS2048509_AVX2_poly_lift(liftm, m); - for (i = 0; i < NTRU_N; i++) { - ct->coeffs[i] = ct->coeffs[i] + liftm->coeffs[i]; - } - - PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_sum_zero_tobytes(c, ct); -} - -int PQCLEAN_NTRUHPS2048509_AVX2_owcpa_dec(unsigned char *rm, - const unsigned char *ciphertext, - const unsigned char *secretkey) { - int i; - int fail; - poly x1, x2, x3, x4; - - poly *c = &x1, *f = &x2, *cf = &x3; - poly *mf = &x2, *finv3 = &x3, *m = &x4; - poly *liftm = &x2, *invh = &x3, *r = &x4; - poly *b = &x1; - - PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_sum_zero_frombytes(c, ciphertext); - PQCLEAN_NTRUHPS2048509_AVX2_poly_S3_frombytes(f, secretkey); - PQCLEAN_NTRUHPS2048509_AVX2_poly_Z3_to_Zq(f); - - PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_mul(cf, c, f); - PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_to_S3(mf, cf); - - PQCLEAN_NTRUHPS2048509_AVX2_poly_S3_frombytes(finv3, secretkey + NTRU_PACK_TRINARY_BYTES); - PQCLEAN_NTRUHPS2048509_AVX2_poly_S3_mul(m, mf, finv3); - PQCLEAN_NTRUHPS2048509_AVX2_poly_S3_tobytes(rm + NTRU_PACK_TRINARY_BYTES, m); - - fail = 0; - - /* 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 */ - /* r (defined as b/h mod (q, Phi_n)) and m are in the message space. */ - /* (m can take any value in S3 in NTRU_HRSS) */ - fail |= owcpa_check_m(m); - - /* b = c - Lift(m) mod (q, x^n - 1) */ - PQCLEAN_NTRUHPS2048509_AVX2_poly_lift(liftm, m); - for (i = 0; i < NTRU_N; i++) { - b->coeffs[i] = c->coeffs[i] - liftm->coeffs[i]; - } - - /* r = b / h mod (q, Phi_n) */ - PQCLEAN_NTRUHPS2048509_AVX2_poly_Sq_frombytes(invh, secretkey + 2 * NTRU_PACK_TRINARY_BYTES); - PQCLEAN_NTRUHPS2048509_AVX2_poly_Sq_mul(r, b, invh); - - /* NOTE: Our definition of r as b/h mod (q, Phi_n) follows Figure 4 of */ - /* [Sch18] https://eprint.iacr.org/2018/1174/20181203:032458. */ - /* This differs from Figure 10 of Saito--Xagawa--Yamakawa */ - /* [SXY17] https://eprint.iacr.org/2017/1005/20180516:055500 */ - /* where r gets a final reduction modulo p. */ - /* We need this change to use Proposition 1 of [Sch18]. */ - - /* Proposition 1 of [Sch18] shows that re-encryption with (r,m) yields c. */ - /* if and only if fail==0 after the following call to owcpa_check_r */ - /* The procedure given in Fig. 8 of [Sch18] can be skipped because we have */ - /* c(1) = 0 due to the use of poly_Rq_sum_zero_{to,from}bytes. */ - fail |= owcpa_check_r(r); - - PQCLEAN_NTRUHPS2048509_AVX2_poly_trinary_Zq_to_Z3(r); - PQCLEAN_NTRUHPS2048509_AVX2_poly_S3_tobytes(rm, r); - - return fail; -} diff --git a/src/kem/ntru/ntruhps2048509/avx2/owcpa.h b/src/kem/ntru/ntruhps2048509/avx2/owcpa.h deleted file mode 100644 index 51b60a9c..00000000 --- a/src/kem/ntru/ntruhps2048509/avx2/owcpa.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef OWCPA_H -#define OWCPA_H - -#include "params.h" -#include "poly.h" - -void PQCLEAN_NTRUHPS2048509_AVX2_owcpa_keypair(unsigned char *pk, - unsigned char *sk, - const unsigned char seed[NTRU_SAMPLE_FG_BYTES]); - -void PQCLEAN_NTRUHPS2048509_AVX2_owcpa_enc(unsigned char *c, - const poly *r, - const poly *m, - const unsigned char *pk); - -int PQCLEAN_NTRUHPS2048509_AVX2_owcpa_dec(unsigned char *rm, - const unsigned char *ciphertext, - const unsigned char *secretkey); -#endif diff --git a/src/kem/ntru/ntruhps2048509/avx2/pack3.c b/src/kem/ntru/ntruhps2048509/avx2/pack3.c deleted file mode 100644 index bb0ecde1..00000000 --- a/src/kem/ntru/ntruhps2048509/avx2/pack3.c +++ /dev/null @@ -1,46 +0,0 @@ -#include "poly.h" - -void PQCLEAN_NTRUHPS2048509_AVX2_poly_S3_tobytes(unsigned char msg[NTRU_OWCPA_MSGBYTES], const poly *a) { - int i; - unsigned char c; - int j; - - for (i = 0; i < NTRU_PACK_DEG / 5; i++) { - c = a->coeffs[5 * i + 4] & 255; - c = (3 * c + a->coeffs[5 * i + 3]) & 255; - c = (3 * c + a->coeffs[5 * i + 2]) & 255; - c = (3 * c + a->coeffs[5 * i + 1]) & 255; - c = (3 * c + a->coeffs[5 * i + 0]) & 255; - msg[i] = c; - } - i = NTRU_PACK_DEG / 5; - c = 0; - for (j = NTRU_PACK_DEG - (5 * i) - 1; j >= 0; j--) { - c = (3 * c + a->coeffs[5 * i + j]) & 255; - } - msg[i] = c; -} - -void PQCLEAN_NTRUHPS2048509_AVX2_poly_S3_frombytes(poly *r, const unsigned char msg[NTRU_OWCPA_MSGBYTES]) { - int i; - unsigned char c; - int j; - - for (i = 0; i < NTRU_PACK_DEG / 5; i++) { - c = msg[i]; - r->coeffs[5 * i + 0] = c; - r->coeffs[5 * i + 1] = c * 171 >> 9; // this is division by 3 - r->coeffs[5 * i + 2] = c * 57 >> 9; // division by 3^2 - r->coeffs[5 * i + 3] = c * 19 >> 9; // division by 3^3 - r->coeffs[5 * i + 4] = c * 203 >> 14; // etc. - } - i = NTRU_PACK_DEG / 5; - c = msg[i]; - for (j = 0; (5 * i + j) < NTRU_PACK_DEG; j++) { - r->coeffs[5 * i + j] = c; - c = c * 171 >> 9; - } - r->coeffs[NTRU_N - 1] = 0; - PQCLEAN_NTRUHPS2048509_AVX2_poly_mod_3_Phi_n(r); -} - diff --git a/src/kem/ntru/ntruhps2048509/avx2/packq.c b/src/kem/ntru/ntruhps2048509/avx2/packq.c deleted file mode 100644 index 74b438aa..00000000 --- a/src/kem/ntru/ntruhps2048509/avx2/packq.c +++ /dev/null @@ -1,93 +0,0 @@ -#include "poly.h" - -void PQCLEAN_NTRUHPS2048509_AVX2_poly_Sq_tobytes(unsigned char *r, const poly *a) { - int i, j; - uint16_t t[8]; - - for (i = 0; i < NTRU_PACK_DEG / 8; i++) { - for (j = 0; j < 8; j++) { - t[j] = MODQ(a->coeffs[8 * i + j]); - } - - r[11 * i + 0] = (unsigned char) ( t[0] & 0xff); - r[11 * i + 1] = (unsigned char) ((t[0] >> 8) | ((t[1] & 0x1f) << 3)); - r[11 * i + 2] = (unsigned char) ((t[1] >> 5) | ((t[2] & 0x03) << 6)); - r[11 * i + 3] = (unsigned char) ((t[2] >> 2) & 0xff); - r[11 * i + 4] = (unsigned char) ((t[2] >> 10) | ((t[3] & 0x7f) << 1)); - r[11 * i + 5] = (unsigned char) ((t[3] >> 7) | ((t[4] & 0x0f) << 4)); - r[11 * i + 6] = (unsigned char) ((t[4] >> 4) | ((t[5] & 0x01) << 7)); - r[11 * i + 7] = (unsigned char) ((t[5] >> 1) & 0xff); - r[11 * i + 8] = (unsigned char) ((t[5] >> 9) | ((t[6] & 0x3f) << 2)); - r[11 * i + 9] = (unsigned char) ((t[6] >> 6) | ((t[7] & 0x07) << 5)); - r[11 * i + 10] = (unsigned char) ((t[7] >> 3)); - } - - for (j = 0; j < NTRU_PACK_DEG - 8 * i; j++) { - t[j] = MODQ(a->coeffs[8 * i + j]); - } - for (; j < 8; j++) { - t[j] = 0; - } - - switch (NTRU_PACK_DEG & 0x07) { - // cases 0 and 6 are impossible since 2 generates (Z/n)* and - // p mod 8 in {1, 7} implies that 2 is a quadratic residue. - case 4: - r[11 * i + 0] = (unsigned char) (t[0] & 0xff); - r[11 * i + 1] = (unsigned char) (t[0] >> 8) | ((t[1] & 0x1f) << 3); - r[11 * i + 2] = (unsigned char) (t[1] >> 5) | ((t[2] & 0x03) << 6); - r[11 * i + 3] = (unsigned char) (t[2] >> 2) & 0xff; - r[11 * i + 4] = (unsigned char) (t[2] >> 10) | ((t[3] & 0x7f) << 1); - r[11 * i + 5] = (unsigned char) (t[3] >> 7) | ((t[4] & 0x0f) << 4); - break; - case 2: - r[11 * i + 0] = (unsigned char) (t[0] & 0xff); - r[11 * i + 1] = (unsigned char) (t[0] >> 8) | ((t[1] & 0x1f) << 3); - r[11 * i + 2] = (unsigned char) (t[1] >> 5) | ((t[2] & 0x03) << 6); - break; - } -} - -void PQCLEAN_NTRUHPS2048509_AVX2_poly_Sq_frombytes(poly *r, const unsigned char *a) { - int i; - for (i = 0; i < NTRU_PACK_DEG / 8; i++) { - r->coeffs[8 * i + 0] = (a[11 * i + 0] >> 0) | (((uint16_t)a[11 * i + 1] & 0x07) << 8); - r->coeffs[8 * i + 1] = (a[11 * i + 1] >> 3) | (((uint16_t)a[11 * i + 2] & 0x3f) << 5); - r->coeffs[8 * i + 2] = (a[11 * i + 2] >> 6) | (((uint16_t)a[11 * i + 3] & 0xff) << 2) | (((uint16_t)a[11 * i + 4] & 0x01) << 10); - r->coeffs[8 * i + 3] = (a[11 * i + 4] >> 1) | (((uint16_t)a[11 * i + 5] & 0x0f) << 7); - r->coeffs[8 * i + 4] = (a[11 * i + 5] >> 4) | (((uint16_t)a[11 * i + 6] & 0x7f) << 4); - r->coeffs[8 * i + 5] = (a[11 * i + 6] >> 7) | (((uint16_t)a[11 * i + 7] & 0xff) << 1) | (((uint16_t)a[11 * i + 8] & 0x03) << 9); - r->coeffs[8 * i + 6] = (a[11 * i + 8] >> 2) | (((uint16_t)a[11 * i + 9] & 0x1f) << 6); - r->coeffs[8 * i + 7] = (a[11 * i + 9] >> 5) | (((uint16_t)a[11 * i + 10] & 0xff) << 3); - } - switch (NTRU_PACK_DEG & 0x07) { - // cases 0 and 6 are impossible since 2 generates (Z/n)* and - // p mod 8 in {1, 7} implies that 2 is a quadratic residue. - case 4: - r->coeffs[8 * i + 0] = (a[11 * i + 0] >> 0) | (((uint16_t)a[11 * i + 1] & 0x07) << 8); - r->coeffs[8 * i + 1] = (a[11 * i + 1] >> 3) | (((uint16_t)a[11 * i + 2] & 0x3f) << 5); - r->coeffs[8 * i + 2] = (a[11 * i + 2] >> 6) | (((uint16_t)a[11 * i + 3] & 0xff) << 2) | (((uint16_t)a[11 * i + 4] & 0x01) << 10); - r->coeffs[8 * i + 3] = (a[11 * i + 4] >> 1) | (((uint16_t)a[11 * i + 5] & 0x0f) << 7); - break; - case 2: - r->coeffs[8 * i + 0] = (a[11 * i + 0] >> 0) | (((uint16_t)a[11 * i + 1] & 0x07) << 8); - r->coeffs[8 * i + 1] = (a[11 * i + 1] >> 3) | (((uint16_t)a[11 * i + 2] & 0x3f) << 5); - break; - } - r->coeffs[NTRU_N - 1] = 0; -} - -void PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_sum_zero_tobytes(unsigned char *r, const poly *a) { - PQCLEAN_NTRUHPS2048509_AVX2_poly_Sq_tobytes(r, a); -} - -void PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_sum_zero_frombytes(poly *r, const unsigned char *a) { - int i; - PQCLEAN_NTRUHPS2048509_AVX2_poly_Sq_frombytes(r, a); - - /* Set r[n-1] so that the sum of coefficients is zero mod q */ - r->coeffs[NTRU_N - 1] = 0; - for (i = 0; i < NTRU_PACK_DEG; i++) { - r->coeffs[NTRU_N - 1] -= r->coeffs[i]; - } -} diff --git a/src/kem/ntru/ntruhps2048509/avx2/params.h b/src/kem/ntru/ntruhps2048509/avx2/params.h deleted file mode 100644 index 4f461494..00000000 --- a/src/kem/ntru/ntruhps2048509/avx2/params.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef PARAMS_H -#define PARAMS_H - -#define NTRU_HPS -#define NTRU_N 509 -#define NTRU_LOGQ 11 - - -/* Do not modify below this line */ - -#define PAD32(X) ((((X) + 31)/32)*32) - -#define NTRU_Q (1 << NTRU_LOGQ) -#define NTRU_WEIGHT (NTRU_Q/8 - 2) - -#define NTRU_SEEDBYTES 32 -#define NTRU_PRFKEYBYTES 32 -#define NTRU_SHAREDKEYBYTES 32 - -#define NTRU_SAMPLE_IID_BYTES (NTRU_N-1) -#define NTRU_SAMPLE_FT_BYTES ((30*(NTRU_N-1)+7)/8) -#define NTRU_SAMPLE_FG_BYTES (NTRU_SAMPLE_IID_BYTES+NTRU_SAMPLE_FT_BYTES) -#define NTRU_SAMPLE_RM_BYTES (NTRU_SAMPLE_IID_BYTES+NTRU_SAMPLE_FT_BYTES) - -#define NTRU_PACK_DEG (NTRU_N-1) -#define NTRU_PACK_TRINARY_BYTES ((NTRU_PACK_DEG+4)/5) - -#define NTRU_OWCPA_MSGBYTES (2*NTRU_PACK_TRINARY_BYTES) -#define NTRU_OWCPA_PUBLICKEYBYTES ((NTRU_LOGQ*NTRU_PACK_DEG+7)/8) -#define NTRU_OWCPA_SECRETKEYBYTES (2*NTRU_PACK_TRINARY_BYTES + NTRU_OWCPA_PUBLICKEYBYTES) -#define NTRU_OWCPA_BYTES ((NTRU_LOGQ*NTRU_PACK_DEG+7)/8) - -#define NTRU_PUBLICKEYBYTES (NTRU_OWCPA_PUBLICKEYBYTES) -#define NTRU_SECRETKEYBYTES (NTRU_OWCPA_SECRETKEYBYTES + NTRU_PRFKEYBYTES) -#define NTRU_CIPHERTEXTBYTES (NTRU_OWCPA_BYTES) - -#endif diff --git a/src/kem/ntru/ntruhps2048509/avx2/poly.c b/src/kem/ntru/ntruhps2048509/avx2/poly.c deleted file mode 100644 index 6a72e3e4..00000000 --- a/src/kem/ntru/ntruhps2048509/avx2/poly.c +++ /dev/null @@ -1,75 +0,0 @@ -#include "poly.h" - -/* Map {0, 1, 2} -> {0,1,q-1} in place */ -void PQCLEAN_NTRUHPS2048509_AVX2_poly_Z3_to_Zq(poly *r) { - int i; - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = r->coeffs[i] | ((-(r->coeffs[i] >> 1)) & (NTRU_Q - 1)); - } -} - -/* Map {0, 1, q-1} -> {0,1,2} in place */ -void PQCLEAN_NTRUHPS2048509_AVX2_poly_trinary_Zq_to_Z3(poly *r) { - int i; - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = MODQ(r->coeffs[i]); - r->coeffs[i] = 3 & (r->coeffs[i] ^ (r->coeffs[i] >> (NTRU_LOGQ - 1))); - } -} - -void PQCLEAN_NTRUHPS2048509_AVX2_poly_Sq_mul(poly *r, const poly *a, const poly *b) { - PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_mul(r, a, b); - PQCLEAN_NTRUHPS2048509_AVX2_poly_mod_q_Phi_n(r); -} - -void PQCLEAN_NTRUHPS2048509_AVX2_poly_S3_mul(poly *r, const poly *a, const poly *b) { - int i; - - /* Our S3 multiplications do not overflow mod q, */ - /* so we can re-purpose PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_mul, as long as we */ - /* follow with an explicit reduction mod q. */ - PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_mul(r, a, b); - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = MODQ(r->coeffs[i]); - } - PQCLEAN_NTRUHPS2048509_AVX2_poly_mod_3_Phi_n(r); -} - -static void PQCLEAN_NTRUHPS2048509_AVX2_poly_R2_inv_to_Rq_inv(poly *r, const poly *ai, const poly *a) { - - int i; - poly b, c; - poly s; - - // for 0..4 - // ai = ai * (2 - a*ai) mod q - for (i = 0; i < NTRU_N; i++) { - b.coeffs[i] = -(a->coeffs[i]); - } - - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = ai->coeffs[i]; - } - - PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_mul(&c, r, &b); - c.coeffs[0] += 2; // c = 2 - a*ai - PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_mul(&s, &c, r); // s = ai*c - - PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_mul(&c, &s, &b); - c.coeffs[0] += 2; // c = 2 - a*s - PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_mul(r, &c, &s); // r = s*c - - PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_mul(&c, r, &b); - c.coeffs[0] += 2; // c = 2 - a*r - PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_mul(&s, &c, r); // s = r*c - - PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_mul(&c, &s, &b); - c.coeffs[0] += 2; // c = 2 - a*s - PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_mul(r, &c, &s); // r = s*c -} - -void PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_inv(poly *r, const poly *a) { - poly ai2; - PQCLEAN_NTRUHPS2048509_AVX2_poly_R2_inv(&ai2, a); - PQCLEAN_NTRUHPS2048509_AVX2_poly_R2_inv_to_Rq_inv(r, &ai2, a); -} diff --git a/src/kem/ntru/ntruhps2048509/avx2/poly.h b/src/kem/ntru/ntruhps2048509/avx2/poly.h deleted file mode 100644 index 61631def..00000000 --- a/src/kem/ntru/ntruhps2048509/avx2/poly.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef POLY_H -#define POLY_H - -#include -#include - -#include "params.h" - -#define MODQ(X) ((X) & (NTRU_Q-1)) - -typedef union { /* align to 32 byte boundary for vmovdqa */ - uint16_t coeffs[PAD32(NTRU_N)]; - __m256i coeffs_x16[PAD32(NTRU_N) / 16]; -} poly; - -void PQCLEAN_NTRUHPS2048509_AVX2_poly_mod_3_Phi_n(poly *r); -void PQCLEAN_NTRUHPS2048509_AVX2_poly_mod_q_Phi_n(poly *r); - -void PQCLEAN_NTRUHPS2048509_AVX2_poly_Sq_tobytes(unsigned char *r, const poly *a); -void PQCLEAN_NTRUHPS2048509_AVX2_poly_Sq_frombytes(poly *r, const unsigned char *a); - -void PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_sum_zero_tobytes(unsigned char *r, const poly *a); -void PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_sum_zero_frombytes(poly *r, const unsigned char *a); - -void PQCLEAN_NTRUHPS2048509_AVX2_poly_S3_tobytes(unsigned char msg[NTRU_PACK_TRINARY_BYTES], const poly *a); -void PQCLEAN_NTRUHPS2048509_AVX2_poly_S3_frombytes(poly *r, const unsigned char msg[NTRU_PACK_TRINARY_BYTES]); - -void PQCLEAN_NTRUHPS2048509_AVX2_poly_Sq_mul(poly *r, const poly *a, const poly *b); -void PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_mul(poly *r, const poly *a, const poly *b); -void PQCLEAN_NTRUHPS2048509_AVX2_poly_S3_mul(poly *r, const poly *a, const poly *b); -void PQCLEAN_NTRUHPS2048509_AVX2_poly_lift(poly *r, const poly *a); -void PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_to_S3(poly *r, const poly *a); - -void PQCLEAN_NTRUHPS2048509_AVX2_poly_R2_inv(poly *r, const poly *a); -void PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_inv(poly *r, const poly *a); -void PQCLEAN_NTRUHPS2048509_AVX2_poly_S3_inv(poly *r, const poly *a); - -void PQCLEAN_NTRUHPS2048509_AVX2_poly_Z3_to_Zq(poly *r); -void PQCLEAN_NTRUHPS2048509_AVX2_poly_trinary_Zq_to_Z3(poly *r); - -#endif diff --git a/src/kem/ntru/ntruhps2048509/avx2/poly_lift.c b/src/kem/ntru/ntruhps2048509/avx2/poly_lift.c deleted file mode 100644 index 0a71c537..00000000 --- a/src/kem/ntru/ntruhps2048509/avx2/poly_lift.c +++ /dev/null @@ -1,11 +0,0 @@ -#include "poly.h" - -void PQCLEAN_NTRUHPS2048509_AVX2_poly_lift(poly *r, const poly *a) { - int i; - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = a->coeffs[i]; - } - PQCLEAN_NTRUHPS2048509_AVX2_poly_Z3_to_Zq(r); -} - - diff --git a/src/kem/ntru/ntruhps2048509/avx2/poly_mod_3_Phi_n.s b/src/kem/ntru/ntruhps2048509/avx2/poly_mod_3_Phi_n.s deleted file mode 100644 index a7b9af04..00000000 --- a/src/kem/ntru/ntruhps2048509/avx2/poly_mod_3_Phi_n.s +++ /dev/null @@ -1,676 +0,0 @@ -.data -.p2align 5 -mask_ff: -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -mask_f: -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -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 -.text -.global PQCLEAN_NTRUHPS2048509_AVX2_poly_mod_3_Phi_n -.global _PQCLEAN_NTRUHPS2048509_AVX2_poly_mod_3_Phi_n -PQCLEAN_NTRUHPS2048509_AVX2_poly_mod_3_Phi_n: -_PQCLEAN_NTRUHPS2048509_AVX2_poly_mod_3_Phi_n: -vmovdqa 992(%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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -movw $0, 1018(%rdi) -movw $0, 1020(%rdi) -movw $0, 1022(%rdi) -ret diff --git a/src/kem/ntru/ntruhps2048509/avx2/poly_mod_q_Phi_n.s b/src/kem/ntru/ntruhps2048509/avx2/poly_mod_q_Phi_n.s deleted file mode 100644 index 5cccff8d..00000000 --- a/src/kem/ntru/ntruhps2048509/avx2/poly_mod_q_Phi_n.s +++ /dev/null @@ -1,80 +0,0 @@ -.data -.p2align 5 -.text -.global PQCLEAN_NTRUHPS2048509_AVX2_poly_mod_q_Phi_n -.global _PQCLEAN_NTRUHPS2048509_AVX2_poly_mod_q_Phi_n -PQCLEAN_NTRUHPS2048509_AVX2_poly_mod_q_Phi_n: -_PQCLEAN_NTRUHPS2048509_AVX2_poly_mod_q_Phi_n: -vmovdqa 992(%rdi), %ymm0 -vpermq $3, %ymm0, %ymm0 -vpslld $16, %ymm0, %ymm0 -vpsrld $16, %ymm0, %ymm1 -vpor %ymm0, %ymm1, %ymm0 -vbroadcastss %xmm0, %ymm0 -vxorpd %ymm1, %ymm1, %ymm1 -vpsubw %ymm0, %ymm1, %ymm0 -vpaddw 0(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 0(%rdi) -vpaddw 32(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 32(%rdi) -vpaddw 64(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 64(%rdi) -vpaddw 96(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 96(%rdi) -vpaddw 128(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 128(%rdi) -vpaddw 160(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 160(%rdi) -vpaddw 192(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 192(%rdi) -vpaddw 224(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 224(%rdi) -vpaddw 256(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 256(%rdi) -vpaddw 288(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 288(%rdi) -vpaddw 320(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 320(%rdi) -vpaddw 352(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 352(%rdi) -vpaddw 384(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 384(%rdi) -vpaddw 416(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 416(%rdi) -vpaddw 448(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 448(%rdi) -vpaddw 480(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 480(%rdi) -vpaddw 512(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 512(%rdi) -vpaddw 544(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 544(%rdi) -vpaddw 576(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 576(%rdi) -vpaddw 608(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 608(%rdi) -vpaddw 640(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 640(%rdi) -vpaddw 672(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 672(%rdi) -vpaddw 704(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 704(%rdi) -vpaddw 736(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 736(%rdi) -vpaddw 768(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 768(%rdi) -vpaddw 800(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 800(%rdi) -vpaddw 832(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 832(%rdi) -vpaddw 864(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 864(%rdi) -vpaddw 896(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 896(%rdi) -vpaddw 928(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 928(%rdi) -vpaddw 960(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 960(%rdi) -vpaddw 992(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 992(%rdi) -ret diff --git a/src/kem/ntru/ntruhps2048509/avx2/poly_r2_inv.c b/src/kem/ntru/ntruhps2048509/avx2/poly_r2_inv.c deleted file mode 100644 index 435a88e6..00000000 --- a/src/kem/ntru/ntruhps2048509/avx2/poly_r2_inv.c +++ /dev/null @@ -1,80 +0,0 @@ -#include - -#include "poly_r2_inv.h" -#include "poly.h" - -// Using pdep/pext for these two functions is faster but not a lot since they work on uint64_t which means -// we can only do 4 coefficients at a time. Per byte (where we store 8 coefficients) we will thus need 2 pdeps/pexts -// and an additional shift. In the case of tobytes we also need a logical or. -// On AMD Ryzen pdep/pext are quite slow and the naive solution (looping through and setting each bit individually) -// is preferred. -void PQCLEAN_NTRUHPS2048509_AVX2_poly_R2_tobytes(unsigned char *out, const poly *a) { - // Since pext works on a uint64_t we view the coefficient pointer as a 64-bit pointer - // so that we can extract 4 coefficient at a time. It also makes arithmetic a little easier. - uint64_t *coeff_pointer = (void *) a->coeffs; - - int i; - for (i = 0; i < 63; i++) { - out[i] = _pext_u64(coeff_pointer[2 * i], 0x1000100010001); - out[i] |= _pext_u64(coeff_pointer[2 * i + 1], 0x1000100010001) << 4; - } - out[i] = _pext_u64(coeff_pointer[2 * 63], 0x1000100010001); - out[i] |= _pext_u64(coeff_pointer[2 * 63 + 1], 0x1) << 4; -} - -void PQCLEAN_NTRUHPS2048509_AVX2_poly_R2_frombytes(poly *a, const unsigned char *in) { - // Since pdep results in a uint64_t we view the coefficient pointer as a 64-bit pointer - // so that we can store 4 coefficient at a time. It also makes arithmetic a little easier. - uint64_t *coeff_pointer = (void *) a->coeffs; - - int i; - for (i = 0; i < 63; i++) { - coeff_pointer[2 * i] = _pdep_u64(in[i], 0x1000100010001); - coeff_pointer[2 * i + 1] = _pdep_u64(in[i] >> 4, 0x1000100010001); - } - // From the last byte we only want 5 bits (since we have 509 total, not 512). - coeff_pointer[2 * 63] = _pdep_u64(in[i], 0x1000100010001); - coeff_pointer[2 * 63 + 1] = _pdep_u64(in[i] >> 4, 0x1); -} - -void PQCLEAN_NTRUHPS2048509_AVX2_poly_R2_inv(poly *r, const poly *a) { - union { - unsigned char s[64]; - __m256i s_x32[2]; - } squares[13]; -#define s(x) squares[(x)].s - - // This relies on the following addition chain: - // 1, 2, 3, 6, 12, 15, 30, 60, 63, 126, 252, 504, 507 - - PQCLEAN_NTRUHPS2048509_AVX2_poly_R2_tobytes(s(0), a); // TODO alignment - - PQCLEAN_NTRUHPS2048509_AVX2_square_1_509(s(1), s(0)); - PQCLEAN_NTRUHPS2048509_AVX2_poly_R2_mul(s(1), s(1), s(0)); - PQCLEAN_NTRUHPS2048509_AVX2_square_1_509(s(2), s(1)); - PQCLEAN_NTRUHPS2048509_AVX2_poly_R2_mul(s(2), s(2), s(0)); - PQCLEAN_NTRUHPS2048509_AVX2_square_3_509(s(3), s(2)); - PQCLEAN_NTRUHPS2048509_AVX2_poly_R2_mul(s(3), s(3), s(2)); - PQCLEAN_NTRUHPS2048509_AVX2_square_6_509(s(4), s(3)); - PQCLEAN_NTRUHPS2048509_AVX2_poly_R2_mul(s(4), s(4), s(3)); - PQCLEAN_NTRUHPS2048509_AVX2_square_3_509(s(5), s(4)); - PQCLEAN_NTRUHPS2048509_AVX2_poly_R2_mul(s(5), s(5), s(2)); - PQCLEAN_NTRUHPS2048509_AVX2_square_15_509(s(6), s(5)); - PQCLEAN_NTRUHPS2048509_AVX2_poly_R2_mul(s(6), s(6), s(5)); - PQCLEAN_NTRUHPS2048509_AVX2_square_30_509(s(7), s(6)); - PQCLEAN_NTRUHPS2048509_AVX2_poly_R2_mul(s(7), s(7), s(6)); - PQCLEAN_NTRUHPS2048509_AVX2_square_3_509(s(8), s(7)); - PQCLEAN_NTRUHPS2048509_AVX2_poly_R2_mul(s(8), s(8), s(2)); - PQCLEAN_NTRUHPS2048509_AVX2_square_63_509(s(9), s(8)); - PQCLEAN_NTRUHPS2048509_AVX2_poly_R2_mul(s(9), s(9), s(8)); - PQCLEAN_NTRUHPS2048509_AVX2_square_126_509(s(10), s(9)); - PQCLEAN_NTRUHPS2048509_AVX2_poly_R2_mul(s(10), s(10), s(9)); - PQCLEAN_NTRUHPS2048509_AVX2_square_252_509(s(11), s(10)); - PQCLEAN_NTRUHPS2048509_AVX2_poly_R2_mul(s(11), s(11), s(10)); - PQCLEAN_NTRUHPS2048509_AVX2_square_3_509(s(12), s(11)); - PQCLEAN_NTRUHPS2048509_AVX2_poly_R2_mul(s(12), s(12), s(2)); - PQCLEAN_NTRUHPS2048509_AVX2_square_1_509(s(0), s(12)); - - PQCLEAN_NTRUHPS2048509_AVX2_poly_R2_frombytes(r, s(0)); -#undef s -} diff --git a/src/kem/ntru/ntruhps2048509/avx2/poly_r2_inv.h b/src/kem/ntru/ntruhps2048509/avx2/poly_r2_inv.h deleted file mode 100644 index 2499a631..00000000 --- a/src/kem/ntru/ntruhps2048509/avx2/poly_r2_inv.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef POLY_R2_INV_H -#define POLY_R2_INV_H - -#include "poly.h" - -void PQCLEAN_NTRUHPS2048509_AVX2_poly_R2_tobytes(unsigned char *out, const poly *a); -void PQCLEAN_NTRUHPS2048509_AVX2_poly_R2_frombytes(poly *a, const unsigned char *in); - -extern void PQCLEAN_NTRUHPS2048509_AVX2_square_1_509(unsigned char *out, const unsigned char *a); -extern void PQCLEAN_NTRUHPS2048509_AVX2_square_3_509(unsigned char *out, const unsigned char *a); -extern void PQCLEAN_NTRUHPS2048509_AVX2_square_6_509(unsigned char *out, const unsigned char *a); -extern void PQCLEAN_NTRUHPS2048509_AVX2_square_15_509(unsigned char *out, const unsigned char *a); -extern void PQCLEAN_NTRUHPS2048509_AVX2_square_30_509(unsigned char *out, const unsigned char *a); -extern void PQCLEAN_NTRUHPS2048509_AVX2_square_63_509(unsigned char *out, const unsigned char *a); -extern void PQCLEAN_NTRUHPS2048509_AVX2_square_126_509(unsigned char *out, const unsigned char *a); -extern void PQCLEAN_NTRUHPS2048509_AVX2_square_252_509(unsigned char *out, const unsigned char *a); - -extern void PQCLEAN_NTRUHPS2048509_AVX2_poly_R2_mul(unsigned char *out, const unsigned char *a, - const unsigned char *b); -#endif diff --git a/src/kem/ntru/ntruhps2048509/avx2/poly_r2_mul.s b/src/kem/ntru/ntruhps2048509/avx2/poly_r2_mul.s deleted file mode 100644 index 435f1c5a..00000000 --- a/src/kem/ntru/ntruhps2048509/avx2/poly_r2_mul.s +++ /dev/null @@ -1,285 +0,0 @@ -.data -.p2align 5 -mask1100: -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -mask0110: -.word 0 -.word 0 -.word 0 -.word 0 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 0 -.word 0 -.word 0 -.word 0 -mask0011: -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -mask1000: -.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 65535 -.word 65535 -.word 65535 -.word 65535 -mask0111: -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 0 -.word 0 -.word 0 -.word 0 -low253: -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 8191 -.text -.global PQCLEAN_NTRUHPS2048509_AVX2_poly_R2_mul -.global _PQCLEAN_NTRUHPS2048509_AVX2_poly_R2_mul -PQCLEAN_NTRUHPS2048509_AVX2_poly_R2_mul: -_PQCLEAN_NTRUHPS2048509_AVX2_poly_R2_mul: -vmovdqa 0(%rsi), %ymm0 -vmovdqa 32(%rsi), %ymm1 -vmovdqa 0(%rdx), %ymm3 -vmovdqa 32(%rdx), %ymm4 -vpxor %ymm0, %ymm1, %ymm6 -vpxor %ymm3, %ymm4, %ymm7 -vextracti128 $1, %ymm0, %xmm11 -vextracti128 $1, %ymm3, %xmm12 -vpclmulqdq $1, %xmm11, %xmm12, %xmm5 -vpclmulqdq $16, %xmm11, %xmm12, %xmm14 -vpclmulqdq $17, %xmm11, %xmm12, %xmm15 -vpxor %xmm5, %xmm14, %xmm14 -vpclmulqdq $0, %xmm11, %xmm12, %xmm5 -vpermq $16, %ymm14, %ymm14 -vinserti128 $1, %xmm15, %ymm15, %ymm15 -vpand mask0011(%rip), %ymm5, %ymm5 -vpand mask0110(%rip), %ymm14, %ymm14 -vpand mask1100(%rip), %ymm15, %ymm15 -vpxor %ymm5, %ymm14, %ymm14 -vpxor %ymm14, %ymm15, %ymm5 -vpxor %xmm0, %xmm11, %xmm11 -vpxor %xmm3, %xmm12, %xmm12 -vpclmulqdq $1, %xmm11, %xmm12, %xmm13 -vpclmulqdq $16, %xmm11, %xmm12, %xmm14 -vpclmulqdq $17, %xmm11, %xmm12, %xmm15 -vpxor %xmm13, %xmm14, %xmm14 -vpclmulqdq $0, %xmm11, %xmm12, %xmm13 -vpermq $16, %ymm14, %ymm14 -vinserti128 $1, %xmm15, %ymm15, %ymm15 -vpand mask0011(%rip), %ymm13, %ymm13 -vpand mask0110(%rip), %ymm14, %ymm14 -vpand mask1100(%rip), %ymm15, %ymm15 -vpxor %ymm13, %ymm14, %ymm14 -vpxor %ymm14, %ymm15, %ymm13 -vpclmulqdq $1, %xmm0, %xmm3, %xmm2 -vpclmulqdq $16, %xmm0, %xmm3, %xmm14 -vpclmulqdq $17, %xmm0, %xmm3, %xmm15 -vpxor %xmm2, %xmm14, %xmm14 -vpclmulqdq $0, %xmm0, %xmm3, %xmm2 -vpermq $16, %ymm14, %ymm14 -vinserti128 $1, %xmm15, %ymm15, %ymm15 -vpand mask0011(%rip), %ymm2, %ymm2 -vpand mask0110(%rip), %ymm14, %ymm14 -vpand mask1100(%rip), %ymm15, %ymm15 -vpxor %ymm2, %ymm14, %ymm14 -vpxor %ymm14, %ymm15, %ymm2 -vpxor %ymm13, %ymm5, %ymm13 -vpxor %ymm13, %ymm2, %ymm13 -vpxor %ymm11, %ymm11, %ymm11 -vextracti128 $1, %ymm13, %xmm11 -vpxor %ymm5, %ymm11, %ymm5 -vpxor %ymm11, %ymm11, %ymm11 -vinserti128 $1, %xmm13, %ymm11, %ymm11 -vpxor %ymm11, %ymm2, %ymm2 -vextracti128 $1, %ymm1, %xmm11 -vextracti128 $1, %ymm4, %xmm12 -vpclmulqdq $1, %xmm11, %xmm12, %xmm9 -vpclmulqdq $16, %xmm11, %xmm12, %xmm14 -vpclmulqdq $17, %xmm11, %xmm12, %xmm15 -vpxor %xmm9, %xmm14, %xmm14 -vpclmulqdq $0, %xmm11, %xmm12, %xmm9 -vpermq $16, %ymm14, %ymm14 -vinserti128 $1, %xmm15, %ymm15, %ymm15 -vpand mask0011(%rip), %ymm9, %ymm9 -vpand mask0110(%rip), %ymm14, %ymm14 -vpand mask1100(%rip), %ymm15, %ymm15 -vpxor %ymm9, %ymm14, %ymm14 -vpxor %ymm14, %ymm15, %ymm9 -vpxor %xmm1, %xmm11, %xmm11 -vpxor %xmm4, %xmm12, %xmm12 -vpclmulqdq $1, %xmm11, %xmm12, %xmm13 -vpclmulqdq $16, %xmm11, %xmm12, %xmm14 -vpclmulqdq $17, %xmm11, %xmm12, %xmm15 -vpxor %xmm13, %xmm14, %xmm14 -vpclmulqdq $0, %xmm11, %xmm12, %xmm13 -vpermq $16, %ymm14, %ymm14 -vinserti128 $1, %xmm15, %ymm15, %ymm15 -vpand mask0011(%rip), %ymm13, %ymm13 -vpand mask0110(%rip), %ymm14, %ymm14 -vpand mask1100(%rip), %ymm15, %ymm15 -vpxor %ymm13, %ymm14, %ymm14 -vpxor %ymm14, %ymm15, %ymm13 -vpclmulqdq $1, %xmm1, %xmm4, %xmm8 -vpclmulqdq $16, %xmm1, %xmm4, %xmm14 -vpclmulqdq $17, %xmm1, %xmm4, %xmm15 -vpxor %xmm8, %xmm14, %xmm14 -vpclmulqdq $0, %xmm1, %xmm4, %xmm8 -vpermq $16, %ymm14, %ymm14 -vinserti128 $1, %xmm15, %ymm15, %ymm15 -vpand mask0011(%rip), %ymm8, %ymm8 -vpand mask0110(%rip), %ymm14, %ymm14 -vpand mask1100(%rip), %ymm15, %ymm15 -vpxor %ymm8, %ymm14, %ymm14 -vpxor %ymm14, %ymm15, %ymm8 -vpxor %ymm13, %ymm9, %ymm13 -vpxor %ymm13, %ymm8, %ymm13 -vpxor %ymm11, %ymm11, %ymm11 -vextracti128 $1, %ymm13, %xmm11 -vpxor %ymm9, %ymm11, %ymm9 -vpxor %ymm11, %ymm11, %ymm11 -vinserti128 $1, %xmm13, %ymm11, %ymm11 -vpxor %ymm11, %ymm8, %ymm8 -vextracti128 $1, %ymm6, %xmm11 -vextracti128 $1, %ymm7, %xmm12 -vpclmulqdq $1, %xmm11, %xmm12, %xmm1 -vpclmulqdq $16, %xmm11, %xmm12, %xmm14 -vpclmulqdq $17, %xmm11, %xmm12, %xmm15 -vpxor %xmm1, %xmm14, %xmm14 -vpclmulqdq $0, %xmm11, %xmm12, %xmm1 -vpermq $16, %ymm14, %ymm14 -vinserti128 $1, %xmm15, %ymm15, %ymm15 -vpand mask0011(%rip), %ymm1, %ymm1 -vpand mask0110(%rip), %ymm14, %ymm14 -vpand mask1100(%rip), %ymm15, %ymm15 -vpxor %ymm1, %ymm14, %ymm14 -vpxor %ymm14, %ymm15, %ymm1 -vpxor %xmm6, %xmm11, %xmm11 -vpxor %xmm7, %xmm12, %xmm12 -vpclmulqdq $1, %xmm11, %xmm12, %xmm13 -vpclmulqdq $16, %xmm11, %xmm12, %xmm14 -vpclmulqdq $17, %xmm11, %xmm12, %xmm15 -vpxor %xmm13, %xmm14, %xmm14 -vpclmulqdq $0, %xmm11, %xmm12, %xmm13 -vpermq $16, %ymm14, %ymm14 -vinserti128 $1, %xmm15, %ymm15, %ymm15 -vpand mask0011(%rip), %ymm13, %ymm13 -vpand mask0110(%rip), %ymm14, %ymm14 -vpand mask1100(%rip), %ymm15, %ymm15 -vpxor %ymm13, %ymm14, %ymm14 -vpxor %ymm14, %ymm15, %ymm13 -vpclmulqdq $1, %xmm6, %xmm7, %xmm0 -vpclmulqdq $16, %xmm6, %xmm7, %xmm14 -vpclmulqdq $17, %xmm6, %xmm7, %xmm15 -vpxor %xmm0, %xmm14, %xmm14 -vpclmulqdq $0, %xmm6, %xmm7, %xmm0 -vpermq $16, %ymm14, %ymm14 -vinserti128 $1, %xmm15, %ymm15, %ymm15 -vpand mask0011(%rip), %ymm0, %ymm0 -vpand mask0110(%rip), %ymm14, %ymm14 -vpand mask1100(%rip), %ymm15, %ymm15 -vpxor %ymm0, %ymm14, %ymm14 -vpxor %ymm14, %ymm15, %ymm0 -vpxor %ymm13, %ymm1, %ymm13 -vpxor %ymm13, %ymm0, %ymm13 -vpxor %ymm11, %ymm11, %ymm11 -vextracti128 $1, %ymm13, %xmm11 -vpxor %ymm1, %ymm11, %ymm1 -vpxor %ymm11, %ymm11, %ymm11 -vinserti128 $1, %xmm13, %ymm11, %ymm11 -vpxor %ymm11, %ymm0, %ymm0 -vpxor %ymm0, %ymm2, %ymm0 -vpxor %ymm0, %ymm8, %ymm0 -vpxor %ymm1, %ymm5, %ymm1 -vpxor %ymm1, %ymm9, %ymm1 -vpxor %ymm0, %ymm5, %ymm5 -vpxor %ymm1, %ymm8, %ymm8 -vpand mask1000(%rip), %ymm5, %ymm13 -vpand mask0111(%rip), %ymm8, %ymm12 -vpxor %ymm12, %ymm13, %ymm12 -vpsrlq $61, %ymm12, %ymm12 -vpermq $147, %ymm12, %ymm12 -vpxor %ymm12, %ymm2, %ymm2 -vpsllq $3, %ymm8, %ymm12 -vpxor %ymm12, %ymm2, %ymm2 -vpand mask1000(%rip), %ymm8, %ymm13 -vpand mask0111(%rip), %ymm9, %ymm12 -vpxor %ymm12, %ymm13, %ymm12 -vpsrlq $61, %ymm12, %ymm12 -vpermq $147, %ymm12, %ymm12 -vpxor %ymm12, %ymm5, %ymm5 -vpsllq $3, %ymm9, %ymm12 -vpxor %ymm12, %ymm5, %ymm5 -vpand low253(%rip), %ymm5, %ymm5 -vmovdqa %ymm2, 0(%rdi) -vmovdqa %ymm5, 32(%rdi) -ret diff --git a/src/kem/ntru/ntruhps2048509/avx2/poly_rq_mul.s b/src/kem/ntru/ntruhps2048509/avx2/poly_rq_mul.s deleted file mode 100644 index a45cc3af..00000000 --- a/src/kem/ntru/ntruhps2048509/avx2/poly_rq_mul.s +++ /dev/null @@ -1,5520 +0,0 @@ -.data -.p2align 5 -mask_low13words: -.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 0x0 -.word 0x0 -.word 0x0 -const3: -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -const9: -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -const0: -.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 0 -const729: -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -const3_inv: -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -const5_inv: -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -shuf48_16: -.byte 10 -.byte 11 -.byte 12 -.byte 13 -.byte 14 -.byte 15 -.byte 0 -.byte 1 -.byte 2 -.byte 3 -.byte 4 -.byte 5 -.byte 6 -.byte 7 -.byte 8 -.byte 9 -.byte 10 -.byte 11 -.byte 12 -.byte 13 -.byte 14 -.byte 15 -.byte 0 -.byte 1 -.byte 2 -.byte 3 -.byte 4 -.byte 5 -.byte 6 -.byte 7 -.byte 8 -.byte 9 -shufmin5_mask3: -.byte 10 -.byte 11 -.byte 12 -.byte 13 -.byte 14 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -mask32_to_16: -.word 0xffff -.word 0x0 -.word 0xffff -.word 0x0 -.word 0xffff -.word 0x0 -.word 0xffff -.word 0x0 -.word 0xffff -.word 0x0 -.word 0xffff -.word 0x0 -.word 0xffff -.word 0x0 -.word 0xffff -.word 0x0 -mask5_3_5_3: -.word 0 -.word 0 -.word 0 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 0 -.word 0 -.word 0 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -mask3_5_3_5: -.word 65535 -.word 65535 -.word 65535 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 65535 -.word 65535 -.word 65535 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -mask_keephigh: -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.text -.global PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_mul -.global _PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_mul -PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_mul: -_PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_mul: -push %r12 -mov %rsp, %r8 -andq $-32, %rsp -subq $4096, %rsp -mov %rsp, %rax -subq $4096, %rsp -mov %rsp, %r11 -subq $8192, %rsp -mov %rsp, %r12 -subq $512, %rsp -vmovdqa const3(%rip), %ymm3 -vmovdqa 0(%rsi), %ymm0 -vmovdqa 64(%rsi), %ymm1 -vmovdqa 128(%rsi), %ymm2 -vmovdqa 192(%rsi), %ymm12 -vmovdqa 768(%rsi), %ymm4 -vmovdqa 832(%rsi), %ymm5 -vmovdqa 896(%rsi), %ymm6 -vmovdqa 960(%rsi), %ymm7 -vmovdqa 256(%rsi), %ymm8 -vmovdqa 320(%rsi), %ymm9 -vmovdqa 384(%rsi), %ymm10 -vmovdqa 448(%rsi), %ymm11 -vmovdqa %ymm0, 0(%rax) -vmovdqa %ymm1, 64(%rax) -vpaddw %ymm0, %ymm1, %ymm14 -vmovdqa %ymm14, 128(%rax) -vmovdqa %ymm2, 192(%rax) -vmovdqa %ymm12, 256(%rax) -vpaddw %ymm2, %ymm12, %ymm14 -vmovdqa %ymm14, 320(%rax) -vpaddw %ymm0, %ymm2, %ymm14 -vmovdqa %ymm14, 384(%rax) -vpaddw %ymm1, %ymm12, %ymm15 -vmovdqa %ymm15, 448(%rax) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 512(%rax) -vmovdqa %ymm4, 3456(%rax) -vmovdqa %ymm5, 3520(%rax) -vpaddw %ymm4, %ymm5, %ymm14 -vmovdqa %ymm14, 3584(%rax) -vmovdqa %ymm6, 3648(%rax) -vmovdqa %ymm7, 3712(%rax) -vpaddw %ymm6, %ymm7, %ymm14 -vmovdqa %ymm14, 3776(%rax) -vpaddw %ymm4, %ymm6, %ymm14 -vmovdqa %ymm14, 3840(%rax) -vpaddw %ymm5, %ymm7, %ymm15 -vmovdqa %ymm15, 3904(%rax) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3968(%rax) -vmovdqa %ymm0, 0(%rsp) -vmovdqa %ymm1, 32(%rsp) -vmovdqa %ymm2, 64(%rsp) -vmovdqa %ymm12, 96(%rsp) -vmovdqa %ymm8, 128(%rsp) -vmovdqa %ymm9, 160(%rsp) -vmovdqa %ymm10, 192(%rsp) -vmovdqa %ymm11, 224(%rsp) -vmovdqa 512(%rsi), %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm1 -vpaddw 128(%rsp), %ymm4, %ymm2 -vpaddw %ymm2, %ymm1, %ymm8 -vpsubw %ymm2, %ymm1, %ymm12 -vmovdqa %ymm0, 256(%rsp) -vmovdqa 576(%rsi), %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm1 -vpaddw 160(%rsp), %ymm5, %ymm2 -vpaddw %ymm2, %ymm1, %ymm9 -vpsubw %ymm2, %ymm1, %ymm13 -vmovdqa %ymm0, 288(%rsp) -vmovdqa 640(%rsi), %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm1 -vpaddw 192(%rsp), %ymm6, %ymm2 -vpaddw %ymm2, %ymm1, %ymm10 -vpsubw %ymm2, %ymm1, %ymm14 -vmovdqa %ymm0, 320(%rsp) -vmovdqa 704(%rsi), %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm1 -vpaddw 224(%rsp), %ymm7, %ymm2 -vpaddw %ymm2, %ymm1, %ymm11 -vpsubw %ymm2, %ymm1, %ymm15 -vmovdqa %ymm0, 352(%rsp) -vmovdqa %ymm8, 576(%rax) -vmovdqa %ymm9, 640(%rax) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 704(%rax) -vmovdqa %ymm10, 768(%rax) -vmovdqa %ymm11, 832(%rax) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 896(%rax) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 960(%rax) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 1024(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 1088(%rax) -vmovdqa %ymm12, 1152(%rax) -vmovdqa %ymm13, 1216(%rax) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 1280(%rax) -vmovdqa %ymm14, 1344(%rax) -vmovdqa %ymm15, 1408(%rax) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 1472(%rax) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 1536(%rax) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 1600(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 1664(%rax) -vmovdqa 256(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm4, %ymm1 -vpaddw 128(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm8 -vpsubw %ymm1, %ymm0, %ymm12 -vmovdqa 288(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm5, %ymm1 -vpaddw 160(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm9 -vpsubw %ymm1, %ymm0, %ymm13 -vmovdqa 320(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm6, %ymm1 -vpaddw 192(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm10 -vpsubw %ymm1, %ymm0, %ymm14 -vmovdqa 352(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm7, %ymm1 -vpaddw 224(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm11 -vpsubw %ymm1, %ymm0, %ymm15 -vmovdqa %ymm8, 1728(%rax) -vmovdqa %ymm9, 1792(%rax) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 1856(%rax) -vmovdqa %ymm10, 1920(%rax) -vmovdqa %ymm11, 1984(%rax) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 2048(%rax) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 2112(%rax) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 2176(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 2240(%rax) -vmovdqa %ymm12, 2304(%rax) -vmovdqa %ymm13, 2368(%rax) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 2432(%rax) -vmovdqa %ymm14, 2496(%rax) -vmovdqa %ymm15, 2560(%rax) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 2624(%rax) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 2688(%rax) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 2752(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 2816(%rax) -vpmullw %ymm3, %ymm4, %ymm0 -vpaddw 256(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 128(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm12 -vpmullw %ymm3, %ymm5, %ymm0 -vpaddw 288(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 160(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm13 -vpmullw %ymm3, %ymm6, %ymm0 -vpaddw 320(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 192(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm14 -vpmullw %ymm3, %ymm7, %ymm0 -vpaddw 352(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 224(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm15 -vmovdqa %ymm12, 2880(%rax) -vmovdqa %ymm13, 2944(%rax) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 3008(%rax) -vmovdqa %ymm14, 3072(%rax) -vmovdqa %ymm15, 3136(%rax) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 3200(%rax) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 3264(%rax) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 3328(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 3392(%rax) -vmovdqa 32(%rsi), %ymm0 -vmovdqa 96(%rsi), %ymm1 -vmovdqa 160(%rsi), %ymm2 -vmovdqa 224(%rsi), %ymm12 -vmovdqa 800(%rsi), %ymm4 -vmovdqa 864(%rsi), %ymm5 -vmovdqa 928(%rsi), %ymm6 -vmovdqa 992(%rsi), %ymm7 -vpand mask_low13words(%rip), %ymm7, %ymm7 -vmovdqa 288(%rsi), %ymm8 -vmovdqa 352(%rsi), %ymm9 -vmovdqa 416(%rsi), %ymm10 -vmovdqa 480(%rsi), %ymm11 -vmovdqa %ymm0, 32(%rax) -vmovdqa %ymm1, 96(%rax) -vpaddw %ymm0, %ymm1, %ymm14 -vmovdqa %ymm14, 160(%rax) -vmovdqa %ymm2, 224(%rax) -vmovdqa %ymm12, 288(%rax) -vpaddw %ymm2, %ymm12, %ymm14 -vmovdqa %ymm14, 352(%rax) -vpaddw %ymm0, %ymm2, %ymm14 -vmovdqa %ymm14, 416(%rax) -vpaddw %ymm1, %ymm12, %ymm15 -vmovdqa %ymm15, 480(%rax) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 544(%rax) -vmovdqa %ymm4, 3488(%rax) -vmovdqa %ymm5, 3552(%rax) -vpaddw %ymm4, %ymm5, %ymm14 -vmovdqa %ymm14, 3616(%rax) -vmovdqa %ymm6, 3680(%rax) -vmovdqa %ymm7, 3744(%rax) -vpaddw %ymm6, %ymm7, %ymm14 -vmovdqa %ymm14, 3808(%rax) -vpaddw %ymm4, %ymm6, %ymm14 -vmovdqa %ymm14, 3872(%rax) -vpaddw %ymm5, %ymm7, %ymm15 -vmovdqa %ymm15, 3936(%rax) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4000(%rax) -vmovdqa %ymm0, 0(%rsp) -vmovdqa %ymm1, 32(%rsp) -vmovdqa %ymm2, 64(%rsp) -vmovdqa %ymm12, 96(%rsp) -vmovdqa %ymm8, 128(%rsp) -vmovdqa %ymm9, 160(%rsp) -vmovdqa %ymm10, 192(%rsp) -vmovdqa %ymm11, 224(%rsp) -vmovdqa 544(%rsi), %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm1 -vpaddw 128(%rsp), %ymm4, %ymm2 -vpaddw %ymm2, %ymm1, %ymm8 -vpsubw %ymm2, %ymm1, %ymm12 -vmovdqa %ymm0, 256(%rsp) -vmovdqa 608(%rsi), %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm1 -vpaddw 160(%rsp), %ymm5, %ymm2 -vpaddw %ymm2, %ymm1, %ymm9 -vpsubw %ymm2, %ymm1, %ymm13 -vmovdqa %ymm0, 288(%rsp) -vmovdqa 672(%rsi), %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm1 -vpaddw 192(%rsp), %ymm6, %ymm2 -vpaddw %ymm2, %ymm1, %ymm10 -vpsubw %ymm2, %ymm1, %ymm14 -vmovdqa %ymm0, 320(%rsp) -vmovdqa 736(%rsi), %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm1 -vpaddw 224(%rsp), %ymm7, %ymm2 -vpaddw %ymm2, %ymm1, %ymm11 -vpsubw %ymm2, %ymm1, %ymm15 -vmovdqa %ymm0, 352(%rsp) -vmovdqa %ymm8, 608(%rax) -vmovdqa %ymm9, 672(%rax) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 736(%rax) -vmovdqa %ymm10, 800(%rax) -vmovdqa %ymm11, 864(%rax) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 928(%rax) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 992(%rax) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 1056(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 1120(%rax) -vmovdqa %ymm12, 1184(%rax) -vmovdqa %ymm13, 1248(%rax) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 1312(%rax) -vmovdqa %ymm14, 1376(%rax) -vmovdqa %ymm15, 1440(%rax) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 1504(%rax) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 1568(%rax) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 1632(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 1696(%rax) -vmovdqa 256(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm4, %ymm1 -vpaddw 128(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm8 -vpsubw %ymm1, %ymm0, %ymm12 -vmovdqa 288(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm5, %ymm1 -vpaddw 160(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm9 -vpsubw %ymm1, %ymm0, %ymm13 -vmovdqa 320(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm6, %ymm1 -vpaddw 192(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm10 -vpsubw %ymm1, %ymm0, %ymm14 -vmovdqa 352(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm7, %ymm1 -vpaddw 224(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm11 -vpsubw %ymm1, %ymm0, %ymm15 -vmovdqa %ymm8, 1760(%rax) -vmovdqa %ymm9, 1824(%rax) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 1888(%rax) -vmovdqa %ymm10, 1952(%rax) -vmovdqa %ymm11, 2016(%rax) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 2080(%rax) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 2144(%rax) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 2208(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 2272(%rax) -vmovdqa %ymm12, 2336(%rax) -vmovdqa %ymm13, 2400(%rax) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 2464(%rax) -vmovdqa %ymm14, 2528(%rax) -vmovdqa %ymm15, 2592(%rax) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 2656(%rax) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 2720(%rax) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 2784(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 2848(%rax) -vpmullw %ymm3, %ymm4, %ymm0 -vpaddw 256(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 128(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm12 -vpmullw %ymm3, %ymm5, %ymm0 -vpaddw 288(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 160(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm13 -vpmullw %ymm3, %ymm6, %ymm0 -vpaddw 320(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 192(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm14 -vpmullw %ymm3, %ymm7, %ymm0 -vpaddw 352(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 224(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm15 -vmovdqa %ymm12, 2912(%rax) -vmovdqa %ymm13, 2976(%rax) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 3040(%rax) -vmovdqa %ymm14, 3104(%rax) -vmovdqa %ymm15, 3168(%rax) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 3232(%rax) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 3296(%rax) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 3360(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 3424(%rax) -vmovdqa 0(%rdx), %ymm0 -vmovdqa 64(%rdx), %ymm1 -vmovdqa 128(%rdx), %ymm2 -vmovdqa 192(%rdx), %ymm12 -vmovdqa 768(%rdx), %ymm4 -vmovdqa 832(%rdx), %ymm5 -vmovdqa 896(%rdx), %ymm6 -vmovdqa 960(%rdx), %ymm7 -vmovdqa 256(%rdx), %ymm8 -vmovdqa 320(%rdx), %ymm9 -vmovdqa 384(%rdx), %ymm10 -vmovdqa 448(%rdx), %ymm11 -vmovdqa %ymm0, 0(%r11) -vmovdqa %ymm1, 64(%r11) -vpaddw %ymm0, %ymm1, %ymm14 -vmovdqa %ymm14, 128(%r11) -vmovdqa %ymm2, 192(%r11) -vmovdqa %ymm12, 256(%r11) -vpaddw %ymm2, %ymm12, %ymm14 -vmovdqa %ymm14, 320(%r11) -vpaddw %ymm0, %ymm2, %ymm14 -vmovdqa %ymm14, 384(%r11) -vpaddw %ymm1, %ymm12, %ymm15 -vmovdqa %ymm15, 448(%r11) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 512(%r11) -vmovdqa %ymm4, 3456(%r11) -vmovdqa %ymm5, 3520(%r11) -vpaddw %ymm4, %ymm5, %ymm14 -vmovdqa %ymm14, 3584(%r11) -vmovdqa %ymm6, 3648(%r11) -vmovdqa %ymm7, 3712(%r11) -vpaddw %ymm6, %ymm7, %ymm14 -vmovdqa %ymm14, 3776(%r11) -vpaddw %ymm4, %ymm6, %ymm14 -vmovdqa %ymm14, 3840(%r11) -vpaddw %ymm5, %ymm7, %ymm15 -vmovdqa %ymm15, 3904(%r11) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3968(%r11) -vmovdqa %ymm0, 0(%rsp) -vmovdqa %ymm1, 32(%rsp) -vmovdqa %ymm2, 64(%rsp) -vmovdqa %ymm12, 96(%rsp) -vmovdqa %ymm8, 128(%rsp) -vmovdqa %ymm9, 160(%rsp) -vmovdqa %ymm10, 192(%rsp) -vmovdqa %ymm11, 224(%rsp) -vmovdqa 512(%rdx), %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm1 -vpaddw 128(%rsp), %ymm4, %ymm2 -vpaddw %ymm2, %ymm1, %ymm8 -vpsubw %ymm2, %ymm1, %ymm12 -vmovdqa %ymm0, 256(%rsp) -vmovdqa 576(%rdx), %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm1 -vpaddw 160(%rsp), %ymm5, %ymm2 -vpaddw %ymm2, %ymm1, %ymm9 -vpsubw %ymm2, %ymm1, %ymm13 -vmovdqa %ymm0, 288(%rsp) -vmovdqa 640(%rdx), %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm1 -vpaddw 192(%rsp), %ymm6, %ymm2 -vpaddw %ymm2, %ymm1, %ymm10 -vpsubw %ymm2, %ymm1, %ymm14 -vmovdqa %ymm0, 320(%rsp) -vmovdqa 704(%rdx), %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm1 -vpaddw 224(%rsp), %ymm7, %ymm2 -vpaddw %ymm2, %ymm1, %ymm11 -vpsubw %ymm2, %ymm1, %ymm15 -vmovdqa %ymm0, 352(%rsp) -vmovdqa %ymm8, 576(%r11) -vmovdqa %ymm9, 640(%r11) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 704(%r11) -vmovdqa %ymm10, 768(%r11) -vmovdqa %ymm11, 832(%r11) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 896(%r11) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 960(%r11) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 1024(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 1088(%r11) -vmovdqa %ymm12, 1152(%r11) -vmovdqa %ymm13, 1216(%r11) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 1280(%r11) -vmovdqa %ymm14, 1344(%r11) -vmovdqa %ymm15, 1408(%r11) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 1472(%r11) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 1536(%r11) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 1600(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 1664(%r11) -vmovdqa 256(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm4, %ymm1 -vpaddw 128(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm8 -vpsubw %ymm1, %ymm0, %ymm12 -vmovdqa 288(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm5, %ymm1 -vpaddw 160(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm9 -vpsubw %ymm1, %ymm0, %ymm13 -vmovdqa 320(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm6, %ymm1 -vpaddw 192(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm10 -vpsubw %ymm1, %ymm0, %ymm14 -vmovdqa 352(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm7, %ymm1 -vpaddw 224(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm11 -vpsubw %ymm1, %ymm0, %ymm15 -vmovdqa %ymm8, 1728(%r11) -vmovdqa %ymm9, 1792(%r11) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 1856(%r11) -vmovdqa %ymm10, 1920(%r11) -vmovdqa %ymm11, 1984(%r11) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 2048(%r11) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 2112(%r11) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 2176(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 2240(%r11) -vmovdqa %ymm12, 2304(%r11) -vmovdqa %ymm13, 2368(%r11) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 2432(%r11) -vmovdqa %ymm14, 2496(%r11) -vmovdqa %ymm15, 2560(%r11) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 2624(%r11) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 2688(%r11) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 2752(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 2816(%r11) -vpmullw %ymm3, %ymm4, %ymm0 -vpaddw 256(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 128(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm12 -vpmullw %ymm3, %ymm5, %ymm0 -vpaddw 288(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 160(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm13 -vpmullw %ymm3, %ymm6, %ymm0 -vpaddw 320(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 192(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm14 -vpmullw %ymm3, %ymm7, %ymm0 -vpaddw 352(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 224(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm15 -vmovdqa %ymm12, 2880(%r11) -vmovdqa %ymm13, 2944(%r11) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 3008(%r11) -vmovdqa %ymm14, 3072(%r11) -vmovdqa %ymm15, 3136(%r11) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 3200(%r11) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 3264(%r11) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 3328(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 3392(%r11) -vmovdqa 32(%rdx), %ymm0 -vmovdqa 96(%rdx), %ymm1 -vmovdqa 160(%rdx), %ymm2 -vmovdqa 224(%rdx), %ymm12 -vmovdqa 800(%rdx), %ymm4 -vmovdqa 864(%rdx), %ymm5 -vmovdqa 928(%rdx), %ymm6 -vmovdqa 992(%rdx), %ymm7 -vpand mask_low13words(%rip), %ymm7, %ymm7 -vmovdqa 288(%rdx), %ymm8 -vmovdqa 352(%rdx), %ymm9 -vmovdqa 416(%rdx), %ymm10 -vmovdqa 480(%rdx), %ymm11 -vmovdqa %ymm0, 32(%r11) -vmovdqa %ymm1, 96(%r11) -vpaddw %ymm0, %ymm1, %ymm14 -vmovdqa %ymm14, 160(%r11) -vmovdqa %ymm2, 224(%r11) -vmovdqa %ymm12, 288(%r11) -vpaddw %ymm2, %ymm12, %ymm14 -vmovdqa %ymm14, 352(%r11) -vpaddw %ymm0, %ymm2, %ymm14 -vmovdqa %ymm14, 416(%r11) -vpaddw %ymm1, %ymm12, %ymm15 -vmovdqa %ymm15, 480(%r11) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 544(%r11) -vmovdqa %ymm4, 3488(%r11) -vmovdqa %ymm5, 3552(%r11) -vpaddw %ymm4, %ymm5, %ymm14 -vmovdqa %ymm14, 3616(%r11) -vmovdqa %ymm6, 3680(%r11) -vmovdqa %ymm7, 3744(%r11) -vpaddw %ymm6, %ymm7, %ymm14 -vmovdqa %ymm14, 3808(%r11) -vpaddw %ymm4, %ymm6, %ymm14 -vmovdqa %ymm14, 3872(%r11) -vpaddw %ymm5, %ymm7, %ymm15 -vmovdqa %ymm15, 3936(%r11) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4000(%r11) -vmovdqa %ymm0, 0(%rsp) -vmovdqa %ymm1, 32(%rsp) -vmovdqa %ymm2, 64(%rsp) -vmovdqa %ymm12, 96(%rsp) -vmovdqa %ymm8, 128(%rsp) -vmovdqa %ymm9, 160(%rsp) -vmovdqa %ymm10, 192(%rsp) -vmovdqa %ymm11, 224(%rsp) -vmovdqa 544(%rdx), %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm1 -vpaddw 128(%rsp), %ymm4, %ymm2 -vpaddw %ymm2, %ymm1, %ymm8 -vpsubw %ymm2, %ymm1, %ymm12 -vmovdqa %ymm0, 256(%rsp) -vmovdqa 608(%rdx), %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm1 -vpaddw 160(%rsp), %ymm5, %ymm2 -vpaddw %ymm2, %ymm1, %ymm9 -vpsubw %ymm2, %ymm1, %ymm13 -vmovdqa %ymm0, 288(%rsp) -vmovdqa 672(%rdx), %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm1 -vpaddw 192(%rsp), %ymm6, %ymm2 -vpaddw %ymm2, %ymm1, %ymm10 -vpsubw %ymm2, %ymm1, %ymm14 -vmovdqa %ymm0, 320(%rsp) -vmovdqa 736(%rdx), %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm1 -vpaddw 224(%rsp), %ymm7, %ymm2 -vpaddw %ymm2, %ymm1, %ymm11 -vpsubw %ymm2, %ymm1, %ymm15 -vmovdqa %ymm0, 352(%rsp) -vmovdqa %ymm8, 608(%r11) -vmovdqa %ymm9, 672(%r11) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 736(%r11) -vmovdqa %ymm10, 800(%r11) -vmovdqa %ymm11, 864(%r11) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 928(%r11) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 992(%r11) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 1056(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 1120(%r11) -vmovdqa %ymm12, 1184(%r11) -vmovdqa %ymm13, 1248(%r11) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 1312(%r11) -vmovdqa %ymm14, 1376(%r11) -vmovdqa %ymm15, 1440(%r11) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 1504(%r11) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 1568(%r11) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 1632(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 1696(%r11) -vmovdqa 256(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm4, %ymm1 -vpaddw 128(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm8 -vpsubw %ymm1, %ymm0, %ymm12 -vmovdqa 288(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm5, %ymm1 -vpaddw 160(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm9 -vpsubw %ymm1, %ymm0, %ymm13 -vmovdqa 320(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm6, %ymm1 -vpaddw 192(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm10 -vpsubw %ymm1, %ymm0, %ymm14 -vmovdqa 352(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm7, %ymm1 -vpaddw 224(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm11 -vpsubw %ymm1, %ymm0, %ymm15 -vmovdqa %ymm8, 1760(%r11) -vmovdqa %ymm9, 1824(%r11) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 1888(%r11) -vmovdqa %ymm10, 1952(%r11) -vmovdqa %ymm11, 2016(%r11) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 2080(%r11) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 2144(%r11) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 2208(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 2272(%r11) -vmovdqa %ymm12, 2336(%r11) -vmovdqa %ymm13, 2400(%r11) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 2464(%r11) -vmovdqa %ymm14, 2528(%r11) -vmovdqa %ymm15, 2592(%r11) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 2656(%r11) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 2720(%r11) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 2784(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 2848(%r11) -vpmullw %ymm3, %ymm4, %ymm0 -vpaddw 256(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 128(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm12 -vpmullw %ymm3, %ymm5, %ymm0 -vpaddw 288(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 160(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm13 -vpmullw %ymm3, %ymm6, %ymm0 -vpaddw 320(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 192(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm14 -vpmullw %ymm3, %ymm7, %ymm0 -vpaddw 352(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 224(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm15 -vmovdqa %ymm12, 2912(%r11) -vmovdqa %ymm13, 2976(%r11) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 3040(%r11) -vmovdqa %ymm14, 3104(%r11) -vmovdqa %ymm15, 3168(%r11) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 3232(%r11) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 3296(%r11) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 3360(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 3424(%r11) -subq $6656, %rsp -mov $4, %ecx -karatsuba_loop_1: -mov %rsp, %r9 -mov %rsp, %r10 -subq $32, %rsp -vmovdqa 0(%rax), %ymm0 -vmovdqa 128(%rax), %ymm1 -vmovdqa 256(%rax), %ymm2 -vmovdqa 384(%rax), %ymm3 -vpunpcklwd 64(%rax), %ymm0, %ymm4 -vpunpckhwd 64(%rax), %ymm0, %ymm5 -vpunpcklwd 192(%rax), %ymm1, %ymm6 -vpunpckhwd 192(%rax), %ymm1, %ymm7 -vpunpcklwd 320(%rax), %ymm2, %ymm8 -vpunpckhwd 320(%rax), %ymm2, %ymm9 -vpunpcklwd 448(%rax), %ymm3, %ymm10 -vpunpckhwd 448(%rax), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 512(%rax), %ymm0 -vmovdqa 640(%rax), %ymm1 -vmovdqa 768(%rax), %ymm2 -vmovdqa 896(%rax), %ymm3 -vpunpcklwd 576(%rax), %ymm0, %ymm12 -vpunpckhwd 576(%rax), %ymm0, %ymm13 -vpunpcklwd 704(%rax), %ymm1, %ymm14 -vpunpckhwd 704(%rax), %ymm1, %ymm15 -vpunpcklwd 832(%rax), %ymm2, %ymm0 -vpunpckhwd 832(%rax), %ymm2, %ymm1 -vpunpcklwd 960(%rax), %ymm3, %ymm2 -vpunpckhwd 960(%rax), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 0(%r9) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 32(%r9) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 64(%r9) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 96(%r9) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 128(%r9) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 160(%r9) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 192(%r9) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 256(%r9) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 288(%r9) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 320(%r9) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 352(%r9) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 384(%r9) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 416(%r9) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 448(%r9) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 224(%r9) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 480(%r9) -vmovdqa 32(%rax), %ymm0 -vmovdqa 160(%rax), %ymm1 -vmovdqa 288(%rax), %ymm2 -vmovdqa 416(%rax), %ymm3 -vpunpcklwd 96(%rax), %ymm0, %ymm4 -vpunpckhwd 96(%rax), %ymm0, %ymm5 -vpunpcklwd 224(%rax), %ymm1, %ymm6 -vpunpckhwd 224(%rax), %ymm1, %ymm7 -vpunpcklwd 352(%rax), %ymm2, %ymm8 -vpunpckhwd 352(%rax), %ymm2, %ymm9 -vpunpcklwd 480(%rax), %ymm3, %ymm10 -vpunpckhwd 480(%rax), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 544(%rax), %ymm0 -vmovdqa 672(%rax), %ymm1 -vmovdqa 800(%rax), %ymm2 -vmovdqa 928(%rax), %ymm3 -vpunpcklwd 608(%rax), %ymm0, %ymm12 -vpunpckhwd 608(%rax), %ymm0, %ymm13 -vpunpcklwd 736(%rax), %ymm1, %ymm14 -vpunpckhwd 736(%rax), %ymm1, %ymm15 -vpunpcklwd 864(%rax), %ymm2, %ymm0 -vpunpckhwd 864(%rax), %ymm2, %ymm1 -vpunpcklwd 992(%rax), %ymm3, %ymm2 -vpunpckhwd 992(%rax), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 512(%r9) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 544(%r9) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 576(%r9) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 608(%r9) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 640(%r9) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 672(%r9) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 704(%r9) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 768(%r9) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 800(%r9) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 832(%r9) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 864(%r9) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 896(%r9) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 928(%r9) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 960(%r9) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 736(%r9) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 992(%r9) -addq $32, %rsp -subq $32, %rsp -vmovdqa 0(%r11), %ymm0 -vmovdqa 128(%r11), %ymm1 -vmovdqa 256(%r11), %ymm2 -vmovdqa 384(%r11), %ymm3 -vpunpcklwd 64(%r11), %ymm0, %ymm4 -vpunpckhwd 64(%r11), %ymm0, %ymm5 -vpunpcklwd 192(%r11), %ymm1, %ymm6 -vpunpckhwd 192(%r11), %ymm1, %ymm7 -vpunpcklwd 320(%r11), %ymm2, %ymm8 -vpunpckhwd 320(%r11), %ymm2, %ymm9 -vpunpcklwd 448(%r11), %ymm3, %ymm10 -vpunpckhwd 448(%r11), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 512(%r11), %ymm0 -vmovdqa 640(%r11), %ymm1 -vmovdqa 768(%r11), %ymm2 -vmovdqa 896(%r11), %ymm3 -vpunpcklwd 576(%r11), %ymm0, %ymm12 -vpunpckhwd 576(%r11), %ymm0, %ymm13 -vpunpcklwd 704(%r11), %ymm1, %ymm14 -vpunpckhwd 704(%r11), %ymm1, %ymm15 -vpunpcklwd 832(%r11), %ymm2, %ymm0 -vpunpckhwd 832(%r11), %ymm2, %ymm1 -vpunpcklwd 960(%r11), %ymm3, %ymm2 -vpunpckhwd 960(%r11), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 1024(%r9) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 1056(%r9) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 1088(%r9) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 1120(%r9) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 1152(%r9) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 1184(%r9) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 1216(%r9) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 1280(%r9) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 1312(%r9) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 1344(%r9) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 1376(%r9) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 1408(%r9) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 1440(%r9) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 1472(%r9) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 1248(%r9) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 1504(%r9) -vmovdqa 32(%r11), %ymm0 -vmovdqa 160(%r11), %ymm1 -vmovdqa 288(%r11), %ymm2 -vmovdqa 416(%r11), %ymm3 -vpunpcklwd 96(%r11), %ymm0, %ymm4 -vpunpckhwd 96(%r11), %ymm0, %ymm5 -vpunpcklwd 224(%r11), %ymm1, %ymm6 -vpunpckhwd 224(%r11), %ymm1, %ymm7 -vpunpcklwd 352(%r11), %ymm2, %ymm8 -vpunpckhwd 352(%r11), %ymm2, %ymm9 -vpunpcklwd 480(%r11), %ymm3, %ymm10 -vpunpckhwd 480(%r11), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 544(%r11), %ymm0 -vmovdqa 672(%r11), %ymm1 -vmovdqa 800(%r11), %ymm2 -vmovdqa 928(%r11), %ymm3 -vpunpcklwd 608(%r11), %ymm0, %ymm12 -vpunpckhwd 608(%r11), %ymm0, %ymm13 -vpunpcklwd 736(%r11), %ymm1, %ymm14 -vpunpckhwd 736(%r11), %ymm1, %ymm15 -vpunpcklwd 864(%r11), %ymm2, %ymm0 -vpunpckhwd 864(%r11), %ymm2, %ymm1 -vpunpcklwd 992(%r11), %ymm3, %ymm2 -vpunpckhwd 992(%r11), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 1536(%r9) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 1568(%r9) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 1600(%r9) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 1632(%r9) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 1664(%r9) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 1696(%r9) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 1728(%r9) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 1792(%r9) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 1824(%r9) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 1856(%r9) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 1888(%r9) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 1920(%r9) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 1952(%r9) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 1984(%r9) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 1760(%r9) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 2016(%r9) -addq $32, %rsp -innerloop_1: -vmovdqa 0(%r9), %ymm0 -vmovdqa 1024(%r9), %ymm4 -vmovdqa 32(%r9), %ymm1 -vmovdqa 1056(%r9), %ymm5 -vmovdqa 64(%r9), %ymm2 -vmovdqa 1088(%r9), %ymm6 -vmovdqa 96(%r9), %ymm3 -vmovdqa 1120(%r9), %ymm7 -vpmullw %ymm0, %ymm4, %ymm12 -vmovdqa %ymm12, 2048(%r10) -vpmullw %ymm0, %ymm5, %ymm13 -vpmullw %ymm1, %ymm4, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 2080(%r10) -vpmullw %ymm0, %ymm6, %ymm12 -vpmullw %ymm1, %ymm5, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm4, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 2112(%r10) -vpmullw %ymm0, %ymm7, %ymm13 -vpmullw %ymm1, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm5, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm4, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 2144(%r10) -vpmullw %ymm1, %ymm7, %ymm12 -vpmullw %ymm2, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm5, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 2176(%r10) -vpmullw %ymm2, %ymm7, %ymm13 -vpmullw %ymm3, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 2208(%r10) -vpmullw %ymm3, %ymm7, %ymm12 -vmovdqa %ymm12, 2240(%r10) -vmovdqa 128(%r9), %ymm0 -vmovdqa 1152(%r9), %ymm4 -vmovdqa 160(%r9), %ymm1 -vmovdqa 1184(%r9), %ymm5 -vmovdqa 192(%r9), %ymm2 -vmovdqa 1216(%r9), %ymm6 -vmovdqa 224(%r9), %ymm3 -vmovdqa 1248(%r9), %ymm7 -vpmullw %ymm0, %ymm4, %ymm12 -vmovdqa %ymm12, 2304(%r10) -vpmullw %ymm0, %ymm5, %ymm13 -vpmullw %ymm1, %ymm4, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 2336(%r10) -vpmullw %ymm0, %ymm6, %ymm12 -vpmullw %ymm1, %ymm5, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm4, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 2368(%r10) -vpmullw %ymm0, %ymm7, %ymm13 -vpmullw %ymm1, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm5, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm4, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 2400(%r10) -vpmullw %ymm1, %ymm7, %ymm12 -vpmullw %ymm2, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm5, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 2432(%r10) -vpmullw %ymm2, %ymm7, %ymm13 -vpmullw %ymm3, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 2464(%r10) -vpmullw %ymm3, %ymm7, %ymm12 -vmovdqa %ymm12, 2496(%r10) -vpaddw 0(%r9), %ymm0, %ymm0 -vpaddw 1024(%r9), %ymm4, %ymm4 -vpaddw 32(%r9), %ymm1, %ymm1 -vpaddw 1056(%r9), %ymm5, %ymm5 -vpaddw 64(%r9), %ymm2, %ymm2 -vpaddw 1088(%r9), %ymm6, %ymm6 -vpaddw 96(%r9), %ymm3, %ymm3 -vpaddw 1120(%r9), %ymm7, %ymm7 -vpmullw %ymm0, %ymm4, %ymm9 -vpmullw %ymm0, %ymm5, %ymm10 -vpmullw %ymm1, %ymm4, %ymm8 -vpaddw %ymm8, %ymm10, %ymm10 -vpmullw %ymm0, %ymm6, %ymm11 -vpmullw %ymm1, %ymm5, %ymm8 -vpaddw %ymm8, %ymm11, %ymm11 -vpmullw %ymm2, %ymm4, %ymm8 -vpaddw %ymm8, %ymm11, %ymm11 -vpmullw %ymm0, %ymm7, %ymm12 -vpmullw %ymm1, %ymm6, %ymm8 -vpaddw %ymm8, %ymm12, %ymm12 -vpmullw %ymm2, %ymm5, %ymm8 -vpaddw %ymm8, %ymm12, %ymm12 -vpmullw %ymm3, %ymm4, %ymm8 -vpaddw %ymm8, %ymm12, %ymm12 -vpmullw %ymm1, %ymm7, %ymm13 -vpmullw %ymm2, %ymm6, %ymm8 -vpaddw %ymm8, %ymm13, %ymm13 -vpmullw %ymm3, %ymm5, %ymm8 -vpaddw %ymm8, %ymm13, %ymm13 -vpmullw %ymm2, %ymm7, %ymm14 -vpmullw %ymm3, %ymm6, %ymm8 -vpaddw %ymm8, %ymm14, %ymm14 -vpmullw %ymm3, %ymm7, %ymm15 -vpsubw 2048(%r10), %ymm9, %ymm9 -vmovdqa 2304(%r10), %ymm3 -vpsubw %ymm3, %ymm9, %ymm9 -vpsubw 2080(%r10), %ymm10, %ymm10 -vmovdqa 2336(%r10), %ymm4 -vpsubw %ymm4, %ymm10, %ymm10 -vpsubw 2112(%r10), %ymm11, %ymm11 -vmovdqa 2368(%r10), %ymm5 -vpsubw %ymm5, %ymm11, %ymm11 -vpsubw 2144(%r10), %ymm12, %ymm12 -vpsubw 2400(%r10), %ymm12, %ymm12 -vmovdqa 2176(%r10), %ymm0 -vpsubw %ymm0, %ymm13, %ymm13 -vpsubw 2432(%r10), %ymm13, %ymm13 -vmovdqa 2208(%r10), %ymm1 -vpsubw %ymm1, %ymm14, %ymm14 -vpsubw 2464(%r10), %ymm14, %ymm14 -vmovdqa 2240(%r10), %ymm2 -vpsubw %ymm2, %ymm15, %ymm15 -vpsubw 2496(%r10), %ymm15, %ymm15 -vpaddw %ymm0, %ymm9, %ymm9 -vmovdqa %ymm9, 2176(%r10) -vpaddw %ymm1, %ymm10, %ymm10 -vmovdqa %ymm10, 2208(%r10) -vpaddw %ymm2, %ymm11, %ymm11 -vmovdqa %ymm11, 2240(%r10) -vmovdqa %ymm12, 2272(%r10) -vpaddw %ymm3, %ymm13, %ymm13 -vmovdqa %ymm13, 2304(%r10) -vpaddw %ymm4, %ymm14, %ymm14 -vmovdqa %ymm14, 2336(%r10) -vpaddw %ymm5, %ymm15, %ymm15 -vmovdqa %ymm15, 2368(%r10) -vmovdqa 256(%r9), %ymm0 -vmovdqa 1280(%r9), %ymm4 -vmovdqa 288(%r9), %ymm1 -vmovdqa 1312(%r9), %ymm5 -vmovdqa 320(%r9), %ymm2 -vmovdqa 1344(%r9), %ymm6 -vmovdqa 352(%r9), %ymm3 -vmovdqa 1376(%r9), %ymm7 -vpmullw %ymm0, %ymm4, %ymm12 -vmovdqa %ymm12, 2560(%r10) -vpmullw %ymm0, %ymm5, %ymm13 -vpmullw %ymm1, %ymm4, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 2592(%r10) -vpmullw %ymm0, %ymm6, %ymm12 -vpmullw %ymm1, %ymm5, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm4, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 2624(%r10) -vpmullw %ymm0, %ymm7, %ymm13 -vpmullw %ymm1, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm5, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm4, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 2656(%r10) -vpmullw %ymm1, %ymm7, %ymm12 -vpmullw %ymm2, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm5, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 2688(%r10) -vpmullw %ymm2, %ymm7, %ymm13 -vpmullw %ymm3, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 2720(%r10) -vpmullw %ymm3, %ymm7, %ymm12 -vmovdqa %ymm12, 2752(%r10) -vmovdqa 384(%r9), %ymm0 -vmovdqa 1408(%r9), %ymm4 -vmovdqa 416(%r9), %ymm1 -vmovdqa 1440(%r9), %ymm5 -vmovdqa 448(%r9), %ymm2 -vmovdqa 1472(%r9), %ymm6 -vmovdqa 480(%r9), %ymm3 -vmovdqa 1504(%r9), %ymm7 -vpmullw %ymm0, %ymm4, %ymm12 -vmovdqa %ymm12, 2816(%r10) -vpmullw %ymm0, %ymm5, %ymm13 -vpmullw %ymm1, %ymm4, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 2848(%r10) -vpmullw %ymm0, %ymm6, %ymm12 -vpmullw %ymm1, %ymm5, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm4, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 2880(%r10) -vpmullw %ymm0, %ymm7, %ymm13 -vpmullw %ymm1, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm5, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm4, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 2912(%r10) -vpmullw %ymm1, %ymm7, %ymm12 -vpmullw %ymm2, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm5, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 2944(%r10) -vpmullw %ymm2, %ymm7, %ymm13 -vpmullw %ymm3, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 2976(%r10) -vpmullw %ymm3, %ymm7, %ymm12 -vmovdqa %ymm12, 3008(%r10) -vpaddw 256(%r9), %ymm0, %ymm0 -vpaddw 1280(%r9), %ymm4, %ymm4 -vpaddw 288(%r9), %ymm1, %ymm1 -vpaddw 1312(%r9), %ymm5, %ymm5 -vpaddw 320(%r9), %ymm2, %ymm2 -vpaddw 1344(%r9), %ymm6, %ymm6 -vpaddw 352(%r9), %ymm3, %ymm3 -vpaddw 1376(%r9), %ymm7, %ymm7 -vpmullw %ymm0, %ymm4, %ymm9 -vpmullw %ymm0, %ymm5, %ymm10 -vpmullw %ymm1, %ymm4, %ymm8 -vpaddw %ymm8, %ymm10, %ymm10 -vpmullw %ymm0, %ymm6, %ymm11 -vpmullw %ymm1, %ymm5, %ymm8 -vpaddw %ymm8, %ymm11, %ymm11 -vpmullw %ymm2, %ymm4, %ymm8 -vpaddw %ymm8, %ymm11, %ymm11 -vpmullw %ymm0, %ymm7, %ymm12 -vpmullw %ymm1, %ymm6, %ymm8 -vpaddw %ymm8, %ymm12, %ymm12 -vpmullw %ymm2, %ymm5, %ymm8 -vpaddw %ymm8, %ymm12, %ymm12 -vpmullw %ymm3, %ymm4, %ymm8 -vpaddw %ymm8, %ymm12, %ymm12 -vpmullw %ymm1, %ymm7, %ymm13 -vpmullw %ymm2, %ymm6, %ymm8 -vpaddw %ymm8, %ymm13, %ymm13 -vpmullw %ymm3, %ymm5, %ymm8 -vpaddw %ymm8, %ymm13, %ymm13 -vpmullw %ymm2, %ymm7, %ymm14 -vpmullw %ymm3, %ymm6, %ymm8 -vpaddw %ymm8, %ymm14, %ymm14 -vpmullw %ymm3, %ymm7, %ymm15 -vpsubw 2560(%r10), %ymm9, %ymm9 -vmovdqa 2816(%r10), %ymm3 -vpsubw %ymm3, %ymm9, %ymm9 -vpsubw 2592(%r10), %ymm10, %ymm10 -vmovdqa 2848(%r10), %ymm4 -vpsubw %ymm4, %ymm10, %ymm10 -vpsubw 2624(%r10), %ymm11, %ymm11 -vmovdqa 2880(%r10), %ymm5 -vpsubw %ymm5, %ymm11, %ymm11 -vpsubw 2656(%r10), %ymm12, %ymm12 -vpsubw 2912(%r10), %ymm12, %ymm12 -vmovdqa 2688(%r10), %ymm0 -vpsubw %ymm0, %ymm13, %ymm13 -vpsubw 2944(%r10), %ymm13, %ymm13 -vmovdqa 2720(%r10), %ymm1 -vpsubw %ymm1, %ymm14, %ymm14 -vpsubw 2976(%r10), %ymm14, %ymm14 -vmovdqa 2752(%r10), %ymm2 -vpsubw %ymm2, %ymm15, %ymm15 -vpsubw 3008(%r10), %ymm15, %ymm15 -vpaddw %ymm0, %ymm9, %ymm9 -vmovdqa %ymm9, 2688(%r10) -vpaddw %ymm1, %ymm10, %ymm10 -vmovdqa %ymm10, 2720(%r10) -vpaddw %ymm2, %ymm11, %ymm11 -vmovdqa %ymm11, 2752(%r10) -vmovdqa %ymm12, 2784(%r10) -vpaddw %ymm3, %ymm13, %ymm13 -vmovdqa %ymm13, 2816(%r10) -vpaddw %ymm4, %ymm14, %ymm14 -vmovdqa %ymm14, 2848(%r10) -vpaddw %ymm5, %ymm15, %ymm15 -vmovdqa %ymm15, 2880(%r10) -vmovdqa 0(%r9), %ymm0 -vmovdqa 1024(%r9), %ymm4 -vpaddw 256(%r9), %ymm0, %ymm0 -vpaddw 1280(%r9), %ymm4, %ymm4 -vmovdqa 32(%r9), %ymm1 -vmovdqa 1056(%r9), %ymm5 -vpaddw 288(%r9), %ymm1, %ymm1 -vpaddw 1312(%r9), %ymm5, %ymm5 -vmovdqa 64(%r9), %ymm2 -vmovdqa 1088(%r9), %ymm6 -vpaddw 320(%r9), %ymm2, %ymm2 -vpaddw 1344(%r9), %ymm6, %ymm6 -vmovdqa 96(%r9), %ymm3 -vmovdqa 1120(%r9), %ymm7 -vpaddw 352(%r9), %ymm3, %ymm3 -vpaddw 1376(%r9), %ymm7, %ymm7 -vpmullw %ymm0, %ymm4, %ymm12 -vmovdqa %ymm12, 4096(%rsp) -vpmullw %ymm0, %ymm5, %ymm13 -vpmullw %ymm1, %ymm4, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 4128(%rsp) -vpmullw %ymm0, %ymm6, %ymm12 -vpmullw %ymm1, %ymm5, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm4, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 4160(%rsp) -vpmullw %ymm0, %ymm7, %ymm13 -vpmullw %ymm1, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm5, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm4, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 4192(%rsp) -vpmullw %ymm1, %ymm7, %ymm12 -vpmullw %ymm2, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm5, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 4224(%rsp) -vpmullw %ymm2, %ymm7, %ymm13 -vpmullw %ymm3, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 4256(%rsp) -vpmullw %ymm3, %ymm7, %ymm12 -vmovdqa %ymm12, 4288(%rsp) -vmovdqa 128(%r9), %ymm0 -vmovdqa 1152(%r9), %ymm4 -vpaddw 384(%r9), %ymm0, %ymm0 -vpaddw 1408(%r9), %ymm4, %ymm4 -vmovdqa 160(%r9), %ymm1 -vmovdqa 1184(%r9), %ymm5 -vpaddw 416(%r9), %ymm1, %ymm1 -vpaddw 1440(%r9), %ymm5, %ymm5 -vmovdqa 192(%r9), %ymm2 -vmovdqa 1216(%r9), %ymm6 -vpaddw 448(%r9), %ymm2, %ymm2 -vpaddw 1472(%r9), %ymm6, %ymm6 -vmovdqa 224(%r9), %ymm3 -vmovdqa 1248(%r9), %ymm7 -vpaddw 480(%r9), %ymm3, %ymm3 -vpaddw 1504(%r9), %ymm7, %ymm7 -vpmullw %ymm0, %ymm4, %ymm12 -vmovdqa %ymm12, 4352(%rsp) -vpmullw %ymm0, %ymm5, %ymm13 -vpmullw %ymm1, %ymm4, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 4384(%rsp) -vpmullw %ymm0, %ymm6, %ymm12 -vpmullw %ymm1, %ymm5, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm4, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 4416(%rsp) -vpmullw %ymm0, %ymm7, %ymm13 -vpmullw %ymm1, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm5, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm4, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 4448(%rsp) -vpmullw %ymm1, %ymm7, %ymm12 -vpmullw %ymm2, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm5, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 4480(%rsp) -vpmullw %ymm2, %ymm7, %ymm13 -vpmullw %ymm3, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 4512(%rsp) -vpmullw %ymm3, %ymm7, %ymm12 -vmovdqa %ymm12, 4544(%rsp) -vpaddw 0(%r9), %ymm0, %ymm0 -vpaddw 1024(%r9), %ymm4, %ymm4 -vpaddw 256(%r9), %ymm0, %ymm0 -vpaddw 1280(%r9), %ymm4, %ymm4 -vpaddw 32(%r9), %ymm1, %ymm1 -vpaddw 1056(%r9), %ymm5, %ymm5 -vpaddw 288(%r9), %ymm1, %ymm1 -vpaddw 1312(%r9), %ymm5, %ymm5 -vpaddw 64(%r9), %ymm2, %ymm2 -vpaddw 1088(%r9), %ymm6, %ymm6 -vpaddw 320(%r9), %ymm2, %ymm2 -vpaddw 1344(%r9), %ymm6, %ymm6 -vpaddw 96(%r9), %ymm3, %ymm3 -vpaddw 1120(%r9), %ymm7, %ymm7 -vpaddw 352(%r9), %ymm3, %ymm3 -vpaddw 1376(%r9), %ymm7, %ymm7 -vpmullw %ymm0, %ymm4, %ymm9 -vpmullw %ymm0, %ymm5, %ymm10 -vpmullw %ymm1, %ymm4, %ymm8 -vpaddw %ymm8, %ymm10, %ymm10 -vpmullw %ymm0, %ymm6, %ymm11 -vpmullw %ymm1, %ymm5, %ymm8 -vpaddw %ymm8, %ymm11, %ymm11 -vpmullw %ymm2, %ymm4, %ymm8 -vpaddw %ymm8, %ymm11, %ymm11 -vpmullw %ymm0, %ymm7, %ymm12 -vpmullw %ymm1, %ymm6, %ymm8 -vpaddw %ymm8, %ymm12, %ymm12 -vpmullw %ymm2, %ymm5, %ymm8 -vpaddw %ymm8, %ymm12, %ymm12 -vpmullw %ymm3, %ymm4, %ymm8 -vpaddw %ymm8, %ymm12, %ymm12 -vpmullw %ymm1, %ymm7, %ymm13 -vpmullw %ymm2, %ymm6, %ymm8 -vpaddw %ymm8, %ymm13, %ymm13 -vpmullw %ymm3, %ymm5, %ymm8 -vpaddw %ymm8, %ymm13, %ymm13 -vpmullw %ymm2, %ymm7, %ymm14 -vpmullw %ymm3, %ymm6, %ymm8 -vpaddw %ymm8, %ymm14, %ymm14 -vpmullw %ymm3, %ymm7, %ymm15 -vpsubw 4096(%rsp), %ymm9, %ymm9 -vmovdqa 4352(%rsp), %ymm3 -vpsubw %ymm3, %ymm9, %ymm9 -vpsubw 4128(%rsp), %ymm10, %ymm10 -vmovdqa 4384(%rsp), %ymm4 -vpsubw %ymm4, %ymm10, %ymm10 -vpsubw 4160(%rsp), %ymm11, %ymm11 -vmovdqa 4416(%rsp), %ymm5 -vpsubw %ymm5, %ymm11, %ymm11 -vpsubw 4192(%rsp), %ymm12, %ymm12 -vpsubw 4448(%rsp), %ymm12, %ymm12 -vmovdqa 4224(%rsp), %ymm0 -vpsubw %ymm0, %ymm13, %ymm13 -vpsubw 4480(%rsp), %ymm13, %ymm13 -vmovdqa 4256(%rsp), %ymm1 -vpsubw %ymm1, %ymm14, %ymm14 -vpsubw 4512(%rsp), %ymm14, %ymm14 -vmovdqa 4288(%rsp), %ymm2 -vpsubw %ymm2, %ymm15, %ymm15 -vpsubw 4544(%rsp), %ymm15, %ymm15 -vpaddw %ymm0, %ymm9, %ymm9 -vmovdqa %ymm9, 4224(%rsp) -vpaddw %ymm1, %ymm10, %ymm10 -vmovdqa %ymm10, 4256(%rsp) -vpaddw %ymm2, %ymm11, %ymm11 -vmovdqa %ymm11, 4288(%rsp) -vmovdqa %ymm12, 4320(%rsp) -vpaddw %ymm3, %ymm13, %ymm13 -vmovdqa %ymm13, 4352(%rsp) -vpaddw %ymm4, %ymm14, %ymm14 -vmovdqa %ymm14, 4384(%rsp) -vpaddw %ymm5, %ymm15, %ymm15 -vmovdqa %ymm15, 4416(%rsp) -vmovdqa 4320(%rsp), %ymm0 -vpsubw 2272(%r10), %ymm0, %ymm0 -vpsubw 2784(%r10), %ymm0, %ymm0 -vmovdqa %ymm0, 2528(%r10) -vmovdqa 2304(%r10), %ymm0 -vpsubw 2560(%r10), %ymm0, %ymm0 -vmovdqa 4352(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 2816(%r10), %ymm1, %ymm1 -vpsubw 2048(%r10), %ymm0, %ymm0 -vpaddw 4096(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 2304(%r10) -vmovdqa %ymm1, 2560(%r10) -vmovdqa 2336(%r10), %ymm0 -vpsubw 2592(%r10), %ymm0, %ymm0 -vmovdqa 4384(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 2848(%r10), %ymm1, %ymm1 -vpsubw 2080(%r10), %ymm0, %ymm0 -vpaddw 4128(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 2336(%r10) -vmovdqa %ymm1, 2592(%r10) -vmovdqa 2368(%r10), %ymm0 -vpsubw 2624(%r10), %ymm0, %ymm0 -vmovdqa 4416(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 2880(%r10), %ymm1, %ymm1 -vpsubw 2112(%r10), %ymm0, %ymm0 -vpaddw 4160(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 2368(%r10) -vmovdqa %ymm1, 2624(%r10) -vmovdqa 2400(%r10), %ymm0 -vpsubw 2656(%r10), %ymm0, %ymm0 -vmovdqa 4448(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 2912(%r10), %ymm1, %ymm1 -vpsubw 2144(%r10), %ymm0, %ymm0 -vpaddw 4192(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 2400(%r10) -vmovdqa %ymm1, 2656(%r10) -vmovdqa 2432(%r10), %ymm0 -vpsubw 2688(%r10), %ymm0, %ymm0 -vmovdqa 4480(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 2944(%r10), %ymm1, %ymm1 -vpsubw 2176(%r10), %ymm0, %ymm0 -vpaddw 4224(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 2432(%r10) -vmovdqa %ymm1, 2688(%r10) -vmovdqa 2464(%r10), %ymm0 -vpsubw 2720(%r10), %ymm0, %ymm0 -vmovdqa 4512(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 2976(%r10), %ymm1, %ymm1 -vpsubw 2208(%r10), %ymm0, %ymm0 -vpaddw 4256(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 2464(%r10) -vmovdqa %ymm1, 2720(%r10) -vmovdqa 2496(%r10), %ymm0 -vpsubw 2752(%r10), %ymm0, %ymm0 -vmovdqa 4544(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 3008(%r10), %ymm1, %ymm1 -vpsubw 2240(%r10), %ymm0, %ymm0 -vpaddw 4288(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 2496(%r10) -vmovdqa %ymm1, 2752(%r10) -neg %ecx -jns done_1 -add $512, %r9 -add $1024, %r10 -jmp innerloop_1 -done_1: -sub $512, %r9 -sub $1024, %r10 -vmovdqa 0(%r9), %ymm0 -vpaddw 512(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 4608(%rsp) -vmovdqa 1024(%r9), %ymm0 -vpaddw 1536(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 5120(%rsp) -vmovdqa 32(%r9), %ymm0 -vpaddw 544(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 4640(%rsp) -vmovdqa 1056(%r9), %ymm0 -vpaddw 1568(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 5152(%rsp) -vmovdqa 64(%r9), %ymm0 -vpaddw 576(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 4672(%rsp) -vmovdqa 1088(%r9), %ymm0 -vpaddw 1600(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 5184(%rsp) -vmovdqa 96(%r9), %ymm0 -vpaddw 608(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 4704(%rsp) -vmovdqa 1120(%r9), %ymm0 -vpaddw 1632(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 5216(%rsp) -vmovdqa 128(%r9), %ymm0 -vpaddw 640(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 4736(%rsp) -vmovdqa 1152(%r9), %ymm0 -vpaddw 1664(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 5248(%rsp) -vmovdqa 160(%r9), %ymm0 -vpaddw 672(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 4768(%rsp) -vmovdqa 1184(%r9), %ymm0 -vpaddw 1696(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 5280(%rsp) -vmovdqa 192(%r9), %ymm0 -vpaddw 704(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 4800(%rsp) -vmovdqa 1216(%r9), %ymm0 -vpaddw 1728(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 5312(%rsp) -vmovdqa 224(%r9), %ymm0 -vpaddw 736(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 4832(%rsp) -vmovdqa 1248(%r9), %ymm0 -vpaddw 1760(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 5344(%rsp) -vmovdqa 256(%r9), %ymm0 -vpaddw 768(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 4864(%rsp) -vmovdqa 1280(%r9), %ymm0 -vpaddw 1792(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 5376(%rsp) -vmovdqa 288(%r9), %ymm0 -vpaddw 800(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 4896(%rsp) -vmovdqa 1312(%r9), %ymm0 -vpaddw 1824(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 5408(%rsp) -vmovdqa 320(%r9), %ymm0 -vpaddw 832(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 4928(%rsp) -vmovdqa 1344(%r9), %ymm0 -vpaddw 1856(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 5440(%rsp) -vmovdqa 352(%r9), %ymm0 -vpaddw 864(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 4960(%rsp) -vmovdqa 1376(%r9), %ymm0 -vpaddw 1888(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 5472(%rsp) -vmovdqa 384(%r9), %ymm0 -vpaddw 896(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 4992(%rsp) -vmovdqa 1408(%r9), %ymm0 -vpaddw 1920(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 5504(%rsp) -vmovdqa 416(%r9), %ymm0 -vpaddw 928(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 5024(%rsp) -vmovdqa 1440(%r9), %ymm0 -vpaddw 1952(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 5536(%rsp) -vmovdqa 448(%r9), %ymm0 -vpaddw 960(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 5056(%rsp) -vmovdqa 1472(%r9), %ymm0 -vpaddw 1984(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 5568(%rsp) -vmovdqa 480(%r9), %ymm0 -vpaddw 992(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 5088(%rsp) -vmovdqa 1504(%r9), %ymm0 -vpaddw 2016(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 5600(%rsp) -vmovdqa 4608(%rsp), %ymm0 -vmovdqa 5120(%rsp), %ymm4 -vmovdqa 4640(%rsp), %ymm1 -vmovdqa 5152(%rsp), %ymm5 -vmovdqa 4672(%rsp), %ymm2 -vmovdqa 5184(%rsp), %ymm6 -vmovdqa 4704(%rsp), %ymm3 -vmovdqa 5216(%rsp), %ymm7 -vpmullw %ymm0, %ymm4, %ymm12 -vmovdqa %ymm12, 5632(%rsp) -vpmullw %ymm0, %ymm5, %ymm13 -vpmullw %ymm1, %ymm4, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 5664(%rsp) -vpmullw %ymm0, %ymm6, %ymm12 -vpmullw %ymm1, %ymm5, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm4, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 5696(%rsp) -vpmullw %ymm0, %ymm7, %ymm13 -vpmullw %ymm1, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm5, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm4, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 5728(%rsp) -vpmullw %ymm1, %ymm7, %ymm12 -vpmullw %ymm2, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm5, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 5760(%rsp) -vpmullw %ymm2, %ymm7, %ymm13 -vpmullw %ymm3, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 5792(%rsp) -vpmullw %ymm3, %ymm7, %ymm12 -vmovdqa %ymm12, 5824(%rsp) -vmovdqa 4736(%rsp), %ymm0 -vmovdqa 5248(%rsp), %ymm4 -vmovdqa 4768(%rsp), %ymm1 -vmovdqa 5280(%rsp), %ymm5 -vmovdqa 4800(%rsp), %ymm2 -vmovdqa 5312(%rsp), %ymm6 -vmovdqa 4832(%rsp), %ymm3 -vmovdqa 5344(%rsp), %ymm7 -vpmullw %ymm0, %ymm4, %ymm12 -vmovdqa %ymm12, 5888(%rsp) -vpmullw %ymm0, %ymm5, %ymm13 -vpmullw %ymm1, %ymm4, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 5920(%rsp) -vpmullw %ymm0, %ymm6, %ymm12 -vpmullw %ymm1, %ymm5, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm4, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 5952(%rsp) -vpmullw %ymm0, %ymm7, %ymm13 -vpmullw %ymm1, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm5, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm4, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 5984(%rsp) -vpmullw %ymm1, %ymm7, %ymm12 -vpmullw %ymm2, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm5, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 6016(%rsp) -vpmullw %ymm2, %ymm7, %ymm13 -vpmullw %ymm3, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 6048(%rsp) -vpmullw %ymm3, %ymm7, %ymm12 -vmovdqa %ymm12, 6080(%rsp) -vpaddw 4608(%rsp), %ymm0, %ymm0 -vpaddw 5120(%rsp), %ymm4, %ymm4 -vpaddw 4640(%rsp), %ymm1, %ymm1 -vpaddw 5152(%rsp), %ymm5, %ymm5 -vpaddw 4672(%rsp), %ymm2, %ymm2 -vpaddw 5184(%rsp), %ymm6, %ymm6 -vpaddw 4704(%rsp), %ymm3, %ymm3 -vpaddw 5216(%rsp), %ymm7, %ymm7 -vpmullw %ymm0, %ymm4, %ymm9 -vpmullw %ymm0, %ymm5, %ymm10 -vpmullw %ymm1, %ymm4, %ymm8 -vpaddw %ymm8, %ymm10, %ymm10 -vpmullw %ymm0, %ymm6, %ymm11 -vpmullw %ymm1, %ymm5, %ymm8 -vpaddw %ymm8, %ymm11, %ymm11 -vpmullw %ymm2, %ymm4, %ymm8 -vpaddw %ymm8, %ymm11, %ymm11 -vpmullw %ymm0, %ymm7, %ymm12 -vpmullw %ymm1, %ymm6, %ymm8 -vpaddw %ymm8, %ymm12, %ymm12 -vpmullw %ymm2, %ymm5, %ymm8 -vpaddw %ymm8, %ymm12, %ymm12 -vpmullw %ymm3, %ymm4, %ymm8 -vpaddw %ymm8, %ymm12, %ymm12 -vpmullw %ymm1, %ymm7, %ymm13 -vpmullw %ymm2, %ymm6, %ymm8 -vpaddw %ymm8, %ymm13, %ymm13 -vpmullw %ymm3, %ymm5, %ymm8 -vpaddw %ymm8, %ymm13, %ymm13 -vpmullw %ymm2, %ymm7, %ymm14 -vpmullw %ymm3, %ymm6, %ymm8 -vpaddw %ymm8, %ymm14, %ymm14 -vpmullw %ymm3, %ymm7, %ymm15 -vpsubw 5632(%rsp), %ymm9, %ymm9 -vmovdqa 5888(%rsp), %ymm3 -vpsubw %ymm3, %ymm9, %ymm9 -vpsubw 5664(%rsp), %ymm10, %ymm10 -vmovdqa 5920(%rsp), %ymm4 -vpsubw %ymm4, %ymm10, %ymm10 -vpsubw 5696(%rsp), %ymm11, %ymm11 -vmovdqa 5952(%rsp), %ymm5 -vpsubw %ymm5, %ymm11, %ymm11 -vpsubw 5728(%rsp), %ymm12, %ymm12 -vpsubw 5984(%rsp), %ymm12, %ymm12 -vmovdqa 5760(%rsp), %ymm0 -vpsubw %ymm0, %ymm13, %ymm13 -vpsubw 6016(%rsp), %ymm13, %ymm13 -vmovdqa 5792(%rsp), %ymm1 -vpsubw %ymm1, %ymm14, %ymm14 -vpsubw 6048(%rsp), %ymm14, %ymm14 -vmovdqa 5824(%rsp), %ymm2 -vpsubw %ymm2, %ymm15, %ymm15 -vpsubw 6080(%rsp), %ymm15, %ymm15 -vpaddw %ymm0, %ymm9, %ymm9 -vmovdqa %ymm9, 5760(%rsp) -vpaddw %ymm1, %ymm10, %ymm10 -vmovdqa %ymm10, 5792(%rsp) -vpaddw %ymm2, %ymm11, %ymm11 -vmovdqa %ymm11, 5824(%rsp) -vmovdqa %ymm12, 5856(%rsp) -vpaddw %ymm3, %ymm13, %ymm13 -vmovdqa %ymm13, 5888(%rsp) -vpaddw %ymm4, %ymm14, %ymm14 -vmovdqa %ymm14, 5920(%rsp) -vpaddw %ymm5, %ymm15, %ymm15 -vmovdqa %ymm15, 5952(%rsp) -vmovdqa 4864(%rsp), %ymm0 -vmovdqa 5376(%rsp), %ymm4 -vmovdqa 4896(%rsp), %ymm1 -vmovdqa 5408(%rsp), %ymm5 -vmovdqa 4928(%rsp), %ymm2 -vmovdqa 5440(%rsp), %ymm6 -vmovdqa 4960(%rsp), %ymm3 -vmovdqa 5472(%rsp), %ymm7 -vpmullw %ymm0, %ymm4, %ymm12 -vmovdqa %ymm12, 6144(%rsp) -vpmullw %ymm0, %ymm5, %ymm13 -vpmullw %ymm1, %ymm4, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 6176(%rsp) -vpmullw %ymm0, %ymm6, %ymm12 -vpmullw %ymm1, %ymm5, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm4, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 6208(%rsp) -vpmullw %ymm0, %ymm7, %ymm13 -vpmullw %ymm1, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm5, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm4, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 6240(%rsp) -vpmullw %ymm1, %ymm7, %ymm12 -vpmullw %ymm2, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm5, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 6272(%rsp) -vpmullw %ymm2, %ymm7, %ymm13 -vpmullw %ymm3, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 6304(%rsp) -vpmullw %ymm3, %ymm7, %ymm12 -vmovdqa %ymm12, 6336(%rsp) -vmovdqa 4992(%rsp), %ymm0 -vmovdqa 5504(%rsp), %ymm4 -vmovdqa 5024(%rsp), %ymm1 -vmovdqa 5536(%rsp), %ymm5 -vmovdqa 5056(%rsp), %ymm2 -vmovdqa 5568(%rsp), %ymm6 -vmovdqa 5088(%rsp), %ymm3 -vmovdqa 5600(%rsp), %ymm7 -vpmullw %ymm0, %ymm4, %ymm12 -vmovdqa %ymm12, 6400(%rsp) -vpmullw %ymm0, %ymm5, %ymm13 -vpmullw %ymm1, %ymm4, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 6432(%rsp) -vpmullw %ymm0, %ymm6, %ymm12 -vpmullw %ymm1, %ymm5, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm4, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 6464(%rsp) -vpmullw %ymm0, %ymm7, %ymm13 -vpmullw %ymm1, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm5, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm4, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 6496(%rsp) -vpmullw %ymm1, %ymm7, %ymm12 -vpmullw %ymm2, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm5, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 6528(%rsp) -vpmullw %ymm2, %ymm7, %ymm13 -vpmullw %ymm3, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 6560(%rsp) -vpmullw %ymm3, %ymm7, %ymm12 -vmovdqa %ymm12, 6592(%rsp) -vpaddw 4864(%rsp), %ymm0, %ymm0 -vpaddw 5376(%rsp), %ymm4, %ymm4 -vpaddw 4896(%rsp), %ymm1, %ymm1 -vpaddw 5408(%rsp), %ymm5, %ymm5 -vpaddw 4928(%rsp), %ymm2, %ymm2 -vpaddw 5440(%rsp), %ymm6, %ymm6 -vpaddw 4960(%rsp), %ymm3, %ymm3 -vpaddw 5472(%rsp), %ymm7, %ymm7 -vpmullw %ymm0, %ymm4, %ymm9 -vpmullw %ymm0, %ymm5, %ymm10 -vpmullw %ymm1, %ymm4, %ymm8 -vpaddw %ymm8, %ymm10, %ymm10 -vpmullw %ymm0, %ymm6, %ymm11 -vpmullw %ymm1, %ymm5, %ymm8 -vpaddw %ymm8, %ymm11, %ymm11 -vpmullw %ymm2, %ymm4, %ymm8 -vpaddw %ymm8, %ymm11, %ymm11 -vpmullw %ymm0, %ymm7, %ymm12 -vpmullw %ymm1, %ymm6, %ymm8 -vpaddw %ymm8, %ymm12, %ymm12 -vpmullw %ymm2, %ymm5, %ymm8 -vpaddw %ymm8, %ymm12, %ymm12 -vpmullw %ymm3, %ymm4, %ymm8 -vpaddw %ymm8, %ymm12, %ymm12 -vpmullw %ymm1, %ymm7, %ymm13 -vpmullw %ymm2, %ymm6, %ymm8 -vpaddw %ymm8, %ymm13, %ymm13 -vpmullw %ymm3, %ymm5, %ymm8 -vpaddw %ymm8, %ymm13, %ymm13 -vpmullw %ymm2, %ymm7, %ymm14 -vpmullw %ymm3, %ymm6, %ymm8 -vpaddw %ymm8, %ymm14, %ymm14 -vpmullw %ymm3, %ymm7, %ymm15 -vpsubw 6144(%rsp), %ymm9, %ymm9 -vmovdqa 6400(%rsp), %ymm3 -vpsubw %ymm3, %ymm9, %ymm9 -vpsubw 6176(%rsp), %ymm10, %ymm10 -vmovdqa 6432(%rsp), %ymm4 -vpsubw %ymm4, %ymm10, %ymm10 -vpsubw 6208(%rsp), %ymm11, %ymm11 -vmovdqa 6464(%rsp), %ymm5 -vpsubw %ymm5, %ymm11, %ymm11 -vpsubw 6240(%rsp), %ymm12, %ymm12 -vpsubw 6496(%rsp), %ymm12, %ymm12 -vmovdqa 6272(%rsp), %ymm0 -vpsubw %ymm0, %ymm13, %ymm13 -vpsubw 6528(%rsp), %ymm13, %ymm13 -vmovdqa 6304(%rsp), %ymm1 -vpsubw %ymm1, %ymm14, %ymm14 -vpsubw 6560(%rsp), %ymm14, %ymm14 -vmovdqa 6336(%rsp), %ymm2 -vpsubw %ymm2, %ymm15, %ymm15 -vpsubw 6592(%rsp), %ymm15, %ymm15 -vpaddw %ymm0, %ymm9, %ymm9 -vmovdqa %ymm9, 6272(%rsp) -vpaddw %ymm1, %ymm10, %ymm10 -vmovdqa %ymm10, 6304(%rsp) -vpaddw %ymm2, %ymm11, %ymm11 -vmovdqa %ymm11, 6336(%rsp) -vmovdqa %ymm12, 6368(%rsp) -vpaddw %ymm3, %ymm13, %ymm13 -vmovdqa %ymm13, 6400(%rsp) -vpaddw %ymm4, %ymm14, %ymm14 -vmovdqa %ymm14, 6432(%rsp) -vpaddw %ymm5, %ymm15, %ymm15 -vmovdqa %ymm15, 6464(%rsp) -vmovdqa 4608(%rsp), %ymm0 -vmovdqa 5120(%rsp), %ymm4 -vpaddw 4864(%rsp), %ymm0, %ymm0 -vpaddw 5376(%rsp), %ymm4, %ymm4 -vmovdqa 4640(%rsp), %ymm1 -vmovdqa 5152(%rsp), %ymm5 -vpaddw 4896(%rsp), %ymm1, %ymm1 -vpaddw 5408(%rsp), %ymm5, %ymm5 -vmovdqa 4672(%rsp), %ymm2 -vmovdqa 5184(%rsp), %ymm6 -vpaddw 4928(%rsp), %ymm2, %ymm2 -vpaddw 5440(%rsp), %ymm6, %ymm6 -vmovdqa 4704(%rsp), %ymm3 -vmovdqa 5216(%rsp), %ymm7 -vpaddw 4960(%rsp), %ymm3, %ymm3 -vpaddw 5472(%rsp), %ymm7, %ymm7 -vpmullw %ymm0, %ymm4, %ymm12 -vmovdqa %ymm12, 4096(%rsp) -vpmullw %ymm0, %ymm5, %ymm13 -vpmullw %ymm1, %ymm4, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 4128(%rsp) -vpmullw %ymm0, %ymm6, %ymm12 -vpmullw %ymm1, %ymm5, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm4, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 4160(%rsp) -vpmullw %ymm0, %ymm7, %ymm13 -vpmullw %ymm1, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm5, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm4, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 4192(%rsp) -vpmullw %ymm1, %ymm7, %ymm12 -vpmullw %ymm2, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm5, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 4224(%rsp) -vpmullw %ymm2, %ymm7, %ymm13 -vpmullw %ymm3, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 4256(%rsp) -vpmullw %ymm3, %ymm7, %ymm12 -vmovdqa %ymm12, 4288(%rsp) -vmovdqa 4736(%rsp), %ymm0 -vmovdqa 5248(%rsp), %ymm4 -vpaddw 4992(%rsp), %ymm0, %ymm0 -vpaddw 5504(%rsp), %ymm4, %ymm4 -vmovdqa 4768(%rsp), %ymm1 -vmovdqa 5280(%rsp), %ymm5 -vpaddw 5024(%rsp), %ymm1, %ymm1 -vpaddw 5536(%rsp), %ymm5, %ymm5 -vmovdqa 4800(%rsp), %ymm2 -vmovdqa 5312(%rsp), %ymm6 -vpaddw 5056(%rsp), %ymm2, %ymm2 -vpaddw 5568(%rsp), %ymm6, %ymm6 -vmovdqa 4832(%rsp), %ymm3 -vmovdqa 5344(%rsp), %ymm7 -vpaddw 5088(%rsp), %ymm3, %ymm3 -vpaddw 5600(%rsp), %ymm7, %ymm7 -vpmullw %ymm0, %ymm4, %ymm12 -vmovdqa %ymm12, 4352(%rsp) -vpmullw %ymm0, %ymm5, %ymm13 -vpmullw %ymm1, %ymm4, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 4384(%rsp) -vpmullw %ymm0, %ymm6, %ymm12 -vpmullw %ymm1, %ymm5, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm4, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 4416(%rsp) -vpmullw %ymm0, %ymm7, %ymm13 -vpmullw %ymm1, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm5, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm4, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 4448(%rsp) -vpmullw %ymm1, %ymm7, %ymm12 -vpmullw %ymm2, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm5, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 4480(%rsp) -vpmullw %ymm2, %ymm7, %ymm13 -vpmullw %ymm3, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 4512(%rsp) -vpmullw %ymm3, %ymm7, %ymm12 -vmovdqa %ymm12, 4544(%rsp) -vpaddw 4608(%rsp), %ymm0, %ymm0 -vpaddw 5120(%rsp), %ymm4, %ymm4 -vpaddw 4864(%rsp), %ymm0, %ymm0 -vpaddw 5376(%rsp), %ymm4, %ymm4 -vpaddw 4640(%rsp), %ymm1, %ymm1 -vpaddw 5152(%rsp), %ymm5, %ymm5 -vpaddw 4896(%rsp), %ymm1, %ymm1 -vpaddw 5408(%rsp), %ymm5, %ymm5 -vpaddw 4672(%rsp), %ymm2, %ymm2 -vpaddw 5184(%rsp), %ymm6, %ymm6 -vpaddw 4928(%rsp), %ymm2, %ymm2 -vpaddw 5440(%rsp), %ymm6, %ymm6 -vpaddw 4704(%rsp), %ymm3, %ymm3 -vpaddw 5216(%rsp), %ymm7, %ymm7 -vpaddw 4960(%rsp), %ymm3, %ymm3 -vpaddw 5472(%rsp), %ymm7, %ymm7 -vpmullw %ymm0, %ymm4, %ymm9 -vpmullw %ymm0, %ymm5, %ymm10 -vpmullw %ymm1, %ymm4, %ymm8 -vpaddw %ymm8, %ymm10, %ymm10 -vpmullw %ymm0, %ymm6, %ymm11 -vpmullw %ymm1, %ymm5, %ymm8 -vpaddw %ymm8, %ymm11, %ymm11 -vpmullw %ymm2, %ymm4, %ymm8 -vpaddw %ymm8, %ymm11, %ymm11 -vpmullw %ymm0, %ymm7, %ymm12 -vpmullw %ymm1, %ymm6, %ymm8 -vpaddw %ymm8, %ymm12, %ymm12 -vpmullw %ymm2, %ymm5, %ymm8 -vpaddw %ymm8, %ymm12, %ymm12 -vpmullw %ymm3, %ymm4, %ymm8 -vpaddw %ymm8, %ymm12, %ymm12 -vpmullw %ymm1, %ymm7, %ymm13 -vpmullw %ymm2, %ymm6, %ymm8 -vpaddw %ymm8, %ymm13, %ymm13 -vpmullw %ymm3, %ymm5, %ymm8 -vpaddw %ymm8, %ymm13, %ymm13 -vpmullw %ymm2, %ymm7, %ymm14 -vpmullw %ymm3, %ymm6, %ymm8 -vpaddw %ymm8, %ymm14, %ymm14 -vpmullw %ymm3, %ymm7, %ymm15 -vpsubw 4096(%rsp), %ymm9, %ymm9 -vmovdqa 4352(%rsp), %ymm3 -vpsubw %ymm3, %ymm9, %ymm9 -vpsubw 4128(%rsp), %ymm10, %ymm10 -vmovdqa 4384(%rsp), %ymm4 -vpsubw %ymm4, %ymm10, %ymm10 -vpsubw 4160(%rsp), %ymm11, %ymm11 -vmovdqa 4416(%rsp), %ymm5 -vpsubw %ymm5, %ymm11, %ymm11 -vpsubw 4192(%rsp), %ymm12, %ymm12 -vpsubw 4448(%rsp), %ymm12, %ymm12 -vmovdqa 4224(%rsp), %ymm0 -vpsubw %ymm0, %ymm13, %ymm13 -vpsubw 4480(%rsp), %ymm13, %ymm13 -vmovdqa 4256(%rsp), %ymm1 -vpsubw %ymm1, %ymm14, %ymm14 -vpsubw 4512(%rsp), %ymm14, %ymm14 -vmovdqa 4288(%rsp), %ymm2 -vpsubw %ymm2, %ymm15, %ymm15 -vpsubw 4544(%rsp), %ymm15, %ymm15 -vpaddw %ymm0, %ymm9, %ymm9 -vmovdqa %ymm9, 4224(%rsp) -vpaddw %ymm1, %ymm10, %ymm10 -vmovdqa %ymm10, 4256(%rsp) -vpaddw %ymm2, %ymm11, %ymm11 -vmovdqa %ymm11, 4288(%rsp) -vmovdqa %ymm12, 4320(%rsp) -vpaddw %ymm3, %ymm13, %ymm13 -vmovdqa %ymm13, 4352(%rsp) -vpaddw %ymm4, %ymm14, %ymm14 -vmovdqa %ymm14, 4384(%rsp) -vpaddw %ymm5, %ymm15, %ymm15 -vmovdqa %ymm15, 4416(%rsp) -vmovdqa 5888(%rsp), %ymm0 -vpsubw 6144(%rsp), %ymm0, %ymm0 -vmovdqa 4352(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 6400(%rsp), %ymm1, %ymm6 -vpsubw 5632(%rsp), %ymm0, %ymm0 -vpaddw 4096(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 5888(%rsp) -vmovdqa 5920(%rsp), %ymm0 -vpsubw 6176(%rsp), %ymm0, %ymm0 -vmovdqa 4384(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 6432(%rsp), %ymm1, %ymm7 -vpsubw 5664(%rsp), %ymm0, %ymm0 -vpaddw 4128(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 5920(%rsp) -vmovdqa 5952(%rsp), %ymm0 -vpsubw 6208(%rsp), %ymm0, %ymm0 -vmovdqa 4416(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 6464(%rsp), %ymm1, %ymm8 -vpsubw 5696(%rsp), %ymm0, %ymm0 -vpaddw 4160(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 5952(%rsp) -vmovdqa 5984(%rsp), %ymm0 -vpsubw 6240(%rsp), %ymm0, %ymm0 -vmovdqa 4448(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 6496(%rsp), %ymm1, %ymm9 -vpsubw 5728(%rsp), %ymm0, %ymm0 -vpaddw 4192(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 5984(%rsp) -vmovdqa 6016(%rsp), %ymm0 -vpsubw 6272(%rsp), %ymm0, %ymm0 -vmovdqa 4480(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 6528(%rsp), %ymm1, %ymm10 -vpsubw 5760(%rsp), %ymm0, %ymm0 -vpaddw 4224(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 6016(%rsp) -vmovdqa 6048(%rsp), %ymm0 -vpsubw 6304(%rsp), %ymm0, %ymm0 -vmovdqa 4512(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 6560(%rsp), %ymm1, %ymm11 -vpsubw 5792(%rsp), %ymm0, %ymm0 -vpaddw 4256(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 6048(%rsp) -vmovdqa 6080(%rsp), %ymm0 -vpsubw 6336(%rsp), %ymm0, %ymm0 -vmovdqa 4544(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 6592(%rsp), %ymm1, %ymm12 -vpsubw 5824(%rsp), %ymm0, %ymm0 -vpaddw 4288(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 6080(%rsp) -vmovdqa 4320(%rsp), %ymm0 -vpsubw 5856(%rsp), %ymm0, %ymm0 -vpsubw 6368(%rsp), %ymm0, %ymm0 -vpsubw 2528(%r10), %ymm0, %ymm0 -vpsubw 3552(%r10), %ymm0, %ymm0 -vmovdqa %ymm0, 3040(%r10) -vmovdqa 2560(%r10), %ymm0 -vpsubw 3072(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm6, %ymm6 -vpsubw 3584(%r10), %ymm6, %ymm6 -vpsubw 2048(%r10), %ymm0, %ymm0 -vpaddw 5632(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 2560(%r10) -vmovdqa %ymm6, 3072(%r10) -vmovdqa 2592(%r10), %ymm0 -vpsubw 3104(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm7, %ymm7 -vpsubw 3616(%r10), %ymm7, %ymm7 -vpsubw 2080(%r10), %ymm0, %ymm0 -vpaddw 5664(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 2592(%r10) -vmovdqa %ymm7, 3104(%r10) -vmovdqa 2624(%r10), %ymm0 -vpsubw 3136(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm8, %ymm8 -vpsubw 3648(%r10), %ymm8, %ymm8 -vpsubw 2112(%r10), %ymm0, %ymm0 -vpaddw 5696(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 2624(%r10) -vmovdqa %ymm8, 3136(%r10) -vmovdqa 2656(%r10), %ymm0 -vpsubw 3168(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm9, %ymm9 -vpsubw 3680(%r10), %ymm9, %ymm9 -vpsubw 2144(%r10), %ymm0, %ymm0 -vpaddw 5728(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 2656(%r10) -vmovdqa %ymm9, 3168(%r10) -vmovdqa 2688(%r10), %ymm0 -vpsubw 3200(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm10, %ymm10 -vpsubw 3712(%r10), %ymm10, %ymm10 -vpsubw 2176(%r10), %ymm0, %ymm0 -vpaddw 5760(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 2688(%r10) -vmovdqa %ymm10, 3200(%r10) -vmovdqa 2720(%r10), %ymm0 -vpsubw 3232(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm11, %ymm11 -vpsubw 3744(%r10), %ymm11, %ymm11 -vpsubw 2208(%r10), %ymm0, %ymm0 -vpaddw 5792(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 2720(%r10) -vmovdqa %ymm11, 3232(%r10) -vmovdqa 2752(%r10), %ymm0 -vpsubw 3264(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm12, %ymm12 -vpsubw 3776(%r10), %ymm12, %ymm12 -vpsubw 2240(%r10), %ymm0, %ymm0 -vpaddw 5824(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 2752(%r10) -vmovdqa %ymm12, 3264(%r10) -vmovdqa 2784(%r10), %ymm0 -vpsubw 3296(%r10), %ymm0, %ymm0 -vmovdqa 6368(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 3808(%r10), %ymm1, %ymm1 -vpsubw 2272(%r10), %ymm0, %ymm0 -vpaddw 5856(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 2784(%r10) -vmovdqa %ymm1, 3296(%r10) -vmovdqa 2816(%r10), %ymm0 -vpsubw 3328(%r10), %ymm0, %ymm0 -vmovdqa 6400(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 3840(%r10), %ymm1, %ymm1 -vpsubw 2304(%r10), %ymm0, %ymm0 -vpaddw 5888(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 2816(%r10) -vmovdqa %ymm1, 3328(%r10) -vmovdqa 2848(%r10), %ymm0 -vpsubw 3360(%r10), %ymm0, %ymm0 -vmovdqa 6432(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 3872(%r10), %ymm1, %ymm1 -vpsubw 2336(%r10), %ymm0, %ymm0 -vpaddw 5920(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 2848(%r10) -vmovdqa %ymm1, 3360(%r10) -vmovdqa 2880(%r10), %ymm0 -vpsubw 3392(%r10), %ymm0, %ymm0 -vmovdqa 6464(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 3904(%r10), %ymm1, %ymm1 -vpsubw 2368(%r10), %ymm0, %ymm0 -vpaddw 5952(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 2880(%r10) -vmovdqa %ymm1, 3392(%r10) -vmovdqa 2912(%r10), %ymm0 -vpsubw 3424(%r10), %ymm0, %ymm0 -vmovdqa 6496(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 3936(%r10), %ymm1, %ymm1 -vpsubw 2400(%r10), %ymm0, %ymm0 -vpaddw 5984(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 2912(%r10) -vmovdqa %ymm1, 3424(%r10) -vmovdqa 2944(%r10), %ymm0 -vpsubw 3456(%r10), %ymm0, %ymm0 -vmovdqa 6528(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 3968(%r10), %ymm1, %ymm1 -vpsubw 2432(%r10), %ymm0, %ymm0 -vpaddw 6016(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 2944(%r10) -vmovdqa %ymm1, 3456(%r10) -vmovdqa 2976(%r10), %ymm0 -vpsubw 3488(%r10), %ymm0, %ymm0 -vmovdqa 6560(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 4000(%r10), %ymm1, %ymm1 -vpsubw 2464(%r10), %ymm0, %ymm0 -vpaddw 6048(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 2976(%r10) -vmovdqa %ymm1, 3488(%r10) -vmovdqa 3008(%r10), %ymm0 -vpsubw 3520(%r10), %ymm0, %ymm0 -vmovdqa 6592(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 4032(%r10), %ymm1, %ymm1 -vpsubw 2496(%r10), %ymm0, %ymm0 -vpaddw 6080(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3008(%r10) -vmovdqa %ymm1, 3520(%r10) -vpxor %ymm1, %ymm1, %ymm1 -vmovdqa %ymm1, 4064(%r10) -subq $32, %rsp -vmovdqa 2048(%r10), %ymm0 -vmovdqa 2112(%r10), %ymm1 -vmovdqa 2176(%r10), %ymm2 -vmovdqa 2240(%r10), %ymm3 -vpunpcklwd 2080(%r10), %ymm0, %ymm4 -vpunpckhwd 2080(%r10), %ymm0, %ymm5 -vpunpcklwd 2144(%r10), %ymm1, %ymm6 -vpunpckhwd 2144(%r10), %ymm1, %ymm7 -vpunpcklwd 2208(%r10), %ymm2, %ymm8 -vpunpckhwd 2208(%r10), %ymm2, %ymm9 -vpunpcklwd 2272(%r10), %ymm3, %ymm10 -vpunpckhwd 2272(%r10), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 2304(%r10), %ymm0 -vmovdqa 2368(%r10), %ymm1 -vmovdqa 2432(%r10), %ymm2 -vmovdqa 2496(%r10), %ymm3 -vpunpcklwd 2336(%r10), %ymm0, %ymm12 -vpunpckhwd 2336(%r10), %ymm0, %ymm13 -vpunpcklwd 2400(%r10), %ymm1, %ymm14 -vpunpckhwd 2400(%r10), %ymm1, %ymm15 -vpunpcklwd 2464(%r10), %ymm2, %ymm0 -vpunpckhwd 2464(%r10), %ymm2, %ymm1 -vpunpcklwd 2528(%r10), %ymm3, %ymm2 -vpunpckhwd 2528(%r10), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 0(%r12) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 128(%r12) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 256(%r12) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 384(%r12) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 512(%r12) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 640(%r12) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 768(%r12) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 1024(%r12) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 1152(%r12) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 1280(%r12) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 1408(%r12) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 1536(%r12) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 1664(%r12) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 1792(%r12) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 896(%r12) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 1920(%r12) -vmovdqa 2560(%r10), %ymm0 -vmovdqa 2624(%r10), %ymm1 -vmovdqa 2688(%r10), %ymm2 -vmovdqa 2752(%r10), %ymm3 -vpunpcklwd 2592(%r10), %ymm0, %ymm4 -vpunpckhwd 2592(%r10), %ymm0, %ymm5 -vpunpcklwd 2656(%r10), %ymm1, %ymm6 -vpunpckhwd 2656(%r10), %ymm1, %ymm7 -vpunpcklwd 2720(%r10), %ymm2, %ymm8 -vpunpckhwd 2720(%r10), %ymm2, %ymm9 -vpunpcklwd 2784(%r10), %ymm3, %ymm10 -vpunpckhwd 2784(%r10), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 2816(%r10), %ymm0 -vmovdqa 2880(%r10), %ymm1 -vmovdqa 2944(%r10), %ymm2 -vmovdqa 3008(%r10), %ymm3 -vpunpcklwd 2848(%r10), %ymm0, %ymm12 -vpunpckhwd 2848(%r10), %ymm0, %ymm13 -vpunpcklwd 2912(%r10), %ymm1, %ymm14 -vpunpckhwd 2912(%r10), %ymm1, %ymm15 -vpunpcklwd 2976(%r10), %ymm2, %ymm0 -vpunpckhwd 2976(%r10), %ymm2, %ymm1 -vpunpcklwd 3040(%r10), %ymm3, %ymm2 -vpunpckhwd 3040(%r10), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 32(%r12) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 160(%r12) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 288(%r12) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 416(%r12) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 544(%r12) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 672(%r12) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 800(%r12) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 1056(%r12) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 1184(%r12) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 1312(%r12) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 1440(%r12) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 1568(%r12) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 1696(%r12) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 1824(%r12) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 928(%r12) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 1952(%r12) -vmovdqa 3072(%r10), %ymm0 -vmovdqa 3136(%r10), %ymm1 -vmovdqa 3200(%r10), %ymm2 -vmovdqa 3264(%r10), %ymm3 -vpunpcklwd 3104(%r10), %ymm0, %ymm4 -vpunpckhwd 3104(%r10), %ymm0, %ymm5 -vpunpcklwd 3168(%r10), %ymm1, %ymm6 -vpunpckhwd 3168(%r10), %ymm1, %ymm7 -vpunpcklwd 3232(%r10), %ymm2, %ymm8 -vpunpckhwd 3232(%r10), %ymm2, %ymm9 -vpunpcklwd 3296(%r10), %ymm3, %ymm10 -vpunpckhwd 3296(%r10), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 3328(%r10), %ymm0 -vmovdqa 3392(%r10), %ymm1 -vmovdqa 3456(%r10), %ymm2 -vmovdqa 3520(%r10), %ymm3 -vpunpcklwd 3360(%r10), %ymm0, %ymm12 -vpunpckhwd 3360(%r10), %ymm0, %ymm13 -vpunpcklwd 3424(%r10), %ymm1, %ymm14 -vpunpckhwd 3424(%r10), %ymm1, %ymm15 -vpunpcklwd 3488(%r10), %ymm2, %ymm0 -vpunpckhwd 3488(%r10), %ymm2, %ymm1 -vpunpcklwd 3552(%r10), %ymm3, %ymm2 -vpunpckhwd 3552(%r10), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 64(%r12) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 192(%r12) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 320(%r12) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 448(%r12) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 576(%r12) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 704(%r12) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 832(%r12) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 1088(%r12) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 1216(%r12) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 1344(%r12) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 1472(%r12) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 1600(%r12) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 1728(%r12) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 1856(%r12) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 960(%r12) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 1984(%r12) -vmovdqa 3584(%r10), %ymm0 -vmovdqa 3648(%r10), %ymm1 -vmovdqa 3712(%r10), %ymm2 -vmovdqa 3776(%r10), %ymm3 -vpunpcklwd 3616(%r10), %ymm0, %ymm4 -vpunpckhwd 3616(%r10), %ymm0, %ymm5 -vpunpcklwd 3680(%r10), %ymm1, %ymm6 -vpunpckhwd 3680(%r10), %ymm1, %ymm7 -vpunpcklwd 3744(%r10), %ymm2, %ymm8 -vpunpckhwd 3744(%r10), %ymm2, %ymm9 -vpunpcklwd 3808(%r10), %ymm3, %ymm10 -vpunpckhwd 3808(%r10), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 3840(%r10), %ymm0 -vmovdqa 3904(%r10), %ymm1 -vmovdqa 3968(%r10), %ymm2 -vmovdqa 4032(%r10), %ymm3 -vpunpcklwd 3872(%r10), %ymm0, %ymm12 -vpunpckhwd 3872(%r10), %ymm0, %ymm13 -vpunpcklwd 3936(%r10), %ymm1, %ymm14 -vpunpckhwd 3936(%r10), %ymm1, %ymm15 -vpunpcklwd 4000(%r10), %ymm2, %ymm0 -vpunpckhwd 4000(%r10), %ymm2, %ymm1 -vpunpcklwd 4064(%r10), %ymm3, %ymm2 -vpunpckhwd 4064(%r10), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 96(%r12) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 224(%r12) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 352(%r12) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 480(%r12) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 608(%r12) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 736(%r12) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 864(%r12) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 1120(%r12) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 1248(%r12) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 1376(%r12) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 1504(%r12) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 1632(%r12) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 1760(%r12) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 1888(%r12) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 992(%r12) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 2016(%r12) -addq $32, %rsp -add $1024, %rax -add $1024, %r11 -add $2048, %r12 -dec %ecx -jnz karatsuba_loop_1 -sub $8192, %r12 -add $6656, %rsp -subq $2400, %rsp -vpxor %ymm0, %ymm0, %ymm0 -vmovdqa %ymm0, 1792(%rsp) -vmovdqa %ymm0, 1824(%rsp) -vmovdqa %ymm0, 1856(%rsp) -vmovdqa %ymm0, 1888(%rsp) -vmovdqa %ymm0, 1920(%rsp) -vmovdqa %ymm0, 1952(%rsp) -vmovdqa %ymm0, 1984(%rsp) -vmovdqa %ymm0, 2016(%rsp) -vmovdqa %ymm0, 2048(%rsp) -vmovdqa %ymm0, 2080(%rsp) -vmovdqa %ymm0, 2112(%rsp) -vmovdqa %ymm0, 2144(%rsp) -vmovdqa %ymm0, 2176(%rsp) -vmovdqa %ymm0, 2208(%rsp) -vmovdqa %ymm0, 2240(%rsp) -vmovdqa %ymm0, 2272(%rsp) -vmovdqa %ymm0, 2304(%rsp) -vmovdqa %ymm0, 2336(%rsp) -vmovdqa %ymm0, 2368(%rsp) -vmovdqa %ymm0, 2400(%rsp) -vmovdqa %ymm0, 2432(%rsp) -vmovdqa %ymm0, 2464(%rsp) -vmovdqa %ymm0, 2496(%rsp) -vmovdqa %ymm0, 2528(%rsp) -vmovdqa %ymm0, 2560(%rsp) -vmovdqa %ymm0, 2592(%rsp) -vmovdqa %ymm0, 2624(%rsp) -vmovdqa %ymm0, 2656(%rsp) -vmovdqa %ymm0, 2688(%rsp) -vmovdqa %ymm0, 2720(%rsp) -vmovdqa %ymm0, 2752(%rsp) -vmovdqa %ymm0, 2784(%rsp) -vmovdqa const729(%rip), %ymm15 -vmovdqa const3_inv(%rip), %ymm14 -vmovdqa const5_inv(%rip), %ymm13 -vmovdqa const9(%rip), %ymm12 -vmovdqa 64(%r12), %ymm0 -vpsubw 128(%r12), %ymm0, %ymm0 -vmovdqa 320(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 192(%r12), %ymm1, %ymm1 -vpsubw 0(%r12), %ymm0, %ymm0 -vpaddw 256(%r12), %ymm0, %ymm0 -vmovdqa 448(%r12), %ymm2 -vpsubw 512(%r12), %ymm2, %ymm2 -vmovdqa 704(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 576(%r12), %ymm3, %ymm3 -vpsubw 384(%r12), %ymm2, %ymm2 -vpaddw 640(%r12), %ymm2, %ymm2 -vmovdqa 832(%r12), %ymm4 -vpsubw 896(%r12), %ymm4, %ymm4 -vmovdqa 1088(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 960(%r12), %ymm5, %ymm5 -vpsubw 768(%r12), %ymm4, %ymm4 -vpaddw 1024(%r12), %ymm4, %ymm4 -vpsubw 384(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 0(%r12), %ymm1, %ymm1 -vpaddw 768(%r12), %ymm1, %ymm1 -vmovdqa 192(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 960(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 576(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 0(%r12), %ymm8 -vmovdqa 576(%r12), %ymm9 -vmovdqa %ymm8, 0(%rsp) -vmovdqa %ymm0, 32(%rsp) -vmovdqa %ymm1, 64(%rsp) -vmovdqa %ymm7, 96(%rsp) -vmovdqa %ymm5, 128(%rsp) -vmovdqa %ymm2, 160(%rsp) -vmovdqa %ymm3, 192(%rsp) -vmovdqa %ymm9, 224(%rsp) -vmovdqa 1216(%r12), %ymm0 -vpsubw 1280(%r12), %ymm0, %ymm0 -vmovdqa 1472(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 1344(%r12), %ymm1, %ymm1 -vpsubw 1152(%r12), %ymm0, %ymm0 -vpaddw 1408(%r12), %ymm0, %ymm0 -vmovdqa 1600(%r12), %ymm2 -vpsubw 1664(%r12), %ymm2, %ymm2 -vmovdqa 1856(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 1728(%r12), %ymm3, %ymm3 -vpsubw 1536(%r12), %ymm2, %ymm2 -vpaddw 1792(%r12), %ymm2, %ymm2 -vmovdqa 1984(%r12), %ymm4 -vpsubw 2048(%r12), %ymm4, %ymm4 -vmovdqa 2240(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 2112(%r12), %ymm5, %ymm5 -vpsubw 1920(%r12), %ymm4, %ymm4 -vpaddw 2176(%r12), %ymm4, %ymm4 -vpsubw 1536(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 1152(%r12), %ymm1, %ymm1 -vpaddw 1920(%r12), %ymm1, %ymm1 -vmovdqa 1344(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 2112(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 1728(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 1152(%r12), %ymm8 -vmovdqa 1728(%r12), %ymm9 -vmovdqa %ymm8, 256(%rsp) -vmovdqa %ymm0, 288(%rsp) -vmovdqa %ymm1, 320(%rsp) -vmovdqa %ymm7, 352(%rsp) -vmovdqa %ymm5, 384(%rsp) -vmovdqa %ymm2, 416(%rsp) -vmovdqa %ymm3, 448(%rsp) -vmovdqa %ymm9, 480(%rsp) -vmovdqa 2368(%r12), %ymm0 -vpsubw 2432(%r12), %ymm0, %ymm0 -vmovdqa 2624(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 2496(%r12), %ymm1, %ymm1 -vpsubw 2304(%r12), %ymm0, %ymm0 -vpaddw 2560(%r12), %ymm0, %ymm0 -vmovdqa 2752(%r12), %ymm2 -vpsubw 2816(%r12), %ymm2, %ymm2 -vmovdqa 3008(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 2880(%r12), %ymm3, %ymm3 -vpsubw 2688(%r12), %ymm2, %ymm2 -vpaddw 2944(%r12), %ymm2, %ymm2 -vmovdqa 3136(%r12), %ymm4 -vpsubw 3200(%r12), %ymm4, %ymm4 -vmovdqa 3392(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 3264(%r12), %ymm5, %ymm5 -vpsubw 3072(%r12), %ymm4, %ymm4 -vpaddw 3328(%r12), %ymm4, %ymm4 -vpsubw 2688(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 2304(%r12), %ymm1, %ymm1 -vpaddw 3072(%r12), %ymm1, %ymm1 -vmovdqa 2496(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 3264(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 2880(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 2304(%r12), %ymm8 -vmovdqa 2880(%r12), %ymm9 -vmovdqa %ymm8, 512(%rsp) -vmovdqa %ymm0, 544(%rsp) -vmovdqa %ymm1, 576(%rsp) -vmovdqa %ymm7, 608(%rsp) -vmovdqa %ymm5, 640(%rsp) -vmovdqa %ymm2, 672(%rsp) -vmovdqa %ymm3, 704(%rsp) -vmovdqa %ymm9, 736(%rsp) -vmovdqa 3520(%r12), %ymm0 -vpsubw 3584(%r12), %ymm0, %ymm0 -vmovdqa 3776(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 3648(%r12), %ymm1, %ymm1 -vpsubw 3456(%r12), %ymm0, %ymm0 -vpaddw 3712(%r12), %ymm0, %ymm0 -vmovdqa 3904(%r12), %ymm2 -vpsubw 3968(%r12), %ymm2, %ymm2 -vmovdqa 4160(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 4032(%r12), %ymm3, %ymm3 -vpsubw 3840(%r12), %ymm2, %ymm2 -vpaddw 4096(%r12), %ymm2, %ymm2 -vmovdqa 4288(%r12), %ymm4 -vpsubw 4352(%r12), %ymm4, %ymm4 -vmovdqa 4544(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 4416(%r12), %ymm5, %ymm5 -vpsubw 4224(%r12), %ymm4, %ymm4 -vpaddw 4480(%r12), %ymm4, %ymm4 -vpsubw 3840(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 3456(%r12), %ymm1, %ymm1 -vpaddw 4224(%r12), %ymm1, %ymm1 -vmovdqa 3648(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 4416(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 4032(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 3456(%r12), %ymm8 -vmovdqa 4032(%r12), %ymm9 -vmovdqa %ymm8, 768(%rsp) -vmovdqa %ymm0, 800(%rsp) -vmovdqa %ymm1, 832(%rsp) -vmovdqa %ymm7, 864(%rsp) -vmovdqa %ymm5, 896(%rsp) -vmovdqa %ymm2, 928(%rsp) -vmovdqa %ymm3, 960(%rsp) -vmovdqa %ymm9, 992(%rsp) -vmovdqa 4672(%r12), %ymm0 -vpsubw 4736(%r12), %ymm0, %ymm0 -vmovdqa 4928(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 4800(%r12), %ymm1, %ymm1 -vpsubw 4608(%r12), %ymm0, %ymm0 -vpaddw 4864(%r12), %ymm0, %ymm0 -vmovdqa 5056(%r12), %ymm2 -vpsubw 5120(%r12), %ymm2, %ymm2 -vmovdqa 5312(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 5184(%r12), %ymm3, %ymm3 -vpsubw 4992(%r12), %ymm2, %ymm2 -vpaddw 5248(%r12), %ymm2, %ymm2 -vmovdqa 5440(%r12), %ymm4 -vpsubw 5504(%r12), %ymm4, %ymm4 -vmovdqa 5696(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 5568(%r12), %ymm5, %ymm5 -vpsubw 5376(%r12), %ymm4, %ymm4 -vpaddw 5632(%r12), %ymm4, %ymm4 -vpsubw 4992(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 4608(%r12), %ymm1, %ymm1 -vpaddw 5376(%r12), %ymm1, %ymm1 -vmovdqa 4800(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 5568(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 5184(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 4608(%r12), %ymm8 -vmovdqa 5184(%r12), %ymm9 -vmovdqa %ymm8, 1024(%rsp) -vmovdqa %ymm0, 1056(%rsp) -vmovdqa %ymm1, 1088(%rsp) -vmovdqa %ymm7, 1120(%rsp) -vmovdqa %ymm5, 1152(%rsp) -vmovdqa %ymm2, 1184(%rsp) -vmovdqa %ymm3, 1216(%rsp) -vmovdqa %ymm9, 1248(%rsp) -vmovdqa 5824(%r12), %ymm0 -vpsubw 5888(%r12), %ymm0, %ymm0 -vmovdqa 6080(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 5952(%r12), %ymm1, %ymm1 -vpsubw 5760(%r12), %ymm0, %ymm0 -vpaddw 6016(%r12), %ymm0, %ymm0 -vmovdqa 6208(%r12), %ymm2 -vpsubw 6272(%r12), %ymm2, %ymm2 -vmovdqa 6464(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 6336(%r12), %ymm3, %ymm3 -vpsubw 6144(%r12), %ymm2, %ymm2 -vpaddw 6400(%r12), %ymm2, %ymm2 -vmovdqa 6592(%r12), %ymm4 -vpsubw 6656(%r12), %ymm4, %ymm4 -vmovdqa 6848(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 6720(%r12), %ymm5, %ymm5 -vpsubw 6528(%r12), %ymm4, %ymm4 -vpaddw 6784(%r12), %ymm4, %ymm4 -vpsubw 6144(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 5760(%r12), %ymm1, %ymm1 -vpaddw 6528(%r12), %ymm1, %ymm1 -vmovdqa 5952(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 6720(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 6336(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 5760(%r12), %ymm8 -vmovdqa 6336(%r12), %ymm9 -vmovdqa %ymm8, 1280(%rsp) -vmovdqa %ymm0, 1312(%rsp) -vmovdqa %ymm1, 1344(%rsp) -vmovdqa %ymm7, 1376(%rsp) -vmovdqa %ymm5, 1408(%rsp) -vmovdqa %ymm2, 1440(%rsp) -vmovdqa %ymm3, 1472(%rsp) -vmovdqa %ymm9, 1504(%rsp) -vmovdqa 6976(%r12), %ymm0 -vpsubw 7040(%r12), %ymm0, %ymm0 -vmovdqa 7232(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 7104(%r12), %ymm1, %ymm1 -vpsubw 6912(%r12), %ymm0, %ymm0 -vpaddw 7168(%r12), %ymm0, %ymm0 -vmovdqa 7360(%r12), %ymm2 -vpsubw 7424(%r12), %ymm2, %ymm2 -vmovdqa 7616(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 7488(%r12), %ymm3, %ymm3 -vpsubw 7296(%r12), %ymm2, %ymm2 -vpaddw 7552(%r12), %ymm2, %ymm2 -vmovdqa 7744(%r12), %ymm4 -vpsubw 7808(%r12), %ymm4, %ymm4 -vmovdqa 8000(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 7872(%r12), %ymm5, %ymm5 -vpsubw 7680(%r12), %ymm4, %ymm4 -vpaddw 7936(%r12), %ymm4, %ymm4 -vpsubw 7296(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 6912(%r12), %ymm1, %ymm1 -vpaddw 7680(%r12), %ymm1, %ymm1 -vmovdqa 7104(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 7872(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 7488(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 6912(%r12), %ymm8 -vmovdqa 7488(%r12), %ymm9 -vmovdqa %ymm8, 1536(%rsp) -vmovdqa %ymm0, 1568(%rsp) -vmovdqa %ymm1, 1600(%rsp) -vmovdqa %ymm7, 1632(%rsp) -vmovdqa %ymm5, 1664(%rsp) -vmovdqa %ymm2, 1696(%rsp) -vmovdqa %ymm3, 1728(%rsp) -vmovdqa %ymm9, 1760(%rsp) -vmovdqa 0(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm10 -vpunpckhwd const0(%rip), %ymm11, %ymm9 -vpslld $1, %ymm10, %ymm10 -vpslld $1, %ymm9, %ymm9 -vmovdqa 256(%rsp), %ymm8 -vpunpcklwd const0(%rip), %ymm8, %ymm7 -vpunpckhwd const0(%rip), %ymm8, %ymm8 -vmovdqa 512(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm7, %ymm4 -vpaddd %ymm6, %ymm8, %ymm3 -vpsubd %ymm10, %ymm4, %ymm4 -vpsubd %ymm9, %ymm3, %ymm3 -vpsubd %ymm5, %ymm7, %ymm5 -vpsubd %ymm6, %ymm8, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1536(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm8 -vpunpckhwd const0(%rip), %ymm5, %ymm7 -vpslld $1, %ymm8, %ymm8 -vpslld $1, %ymm7, %ymm7 -vpsubd %ymm8, %ymm4, %ymm4 -vpsubd %ymm7, %ymm3, %ymm3 -vpsrld $1, %ymm4, %ymm4 -vpsrld $1, %ymm3, %ymm3 -vpand mask32_to_16(%rip), %ymm4, %ymm4 -vpand mask32_to_16(%rip), %ymm3, %ymm3 -vpackusdw %ymm3, %ymm4, %ymm3 -vmovdqa 768(%rsp), %ymm4 -vpaddw 1024(%rsp), %ymm4, %ymm7 -vpsubw 1024(%rsp), %ymm4, %ymm4 -vpsrlw $2, %ymm4, %ymm4 -vpsubw %ymm6, %ymm4, %ymm4 -vpmullw %ymm14, %ymm4, %ymm4 -vpsllw $1, %ymm11, %ymm8 -vpsubw %ymm8, %ymm7, %ymm8 -vpsllw $7, %ymm5, %ymm7 -vpsubw %ymm7, %ymm8, %ymm7 -vpsrlw $3, %ymm7, %ymm7 -vpsubw %ymm3, %ymm7, %ymm7 -vmovdqa 1280(%rsp), %ymm8 -vpsubw %ymm11, %ymm8, %ymm8 -vpmullw %ymm15, %ymm5, %ymm9 -vpsubw %ymm9, %ymm8, %ymm9 -vpmullw %ymm14, %ymm7, %ymm7 -vpsubw %ymm7, %ymm3, %ymm3 -vpmullw %ymm12, %ymm7, %ymm8 -vpaddw %ymm8, %ymm3, %ymm8 -vpmullw %ymm12, %ymm8, %ymm8 -vpsubw %ymm8, %ymm9, %ymm8 -vpmullw %ymm14, %ymm8, %ymm8 -vpsubw %ymm6, %ymm8, %ymm8 -vpsrlw $3, %ymm8, %ymm8 -vpsubw %ymm4, %ymm8, %ymm8 -vpsubw %ymm8, %ymm4, %ymm4 -vpsubw %ymm4, %ymm6, %ymm6 -vpmullw %ymm13, %ymm8, %ymm8 -vpsubw %ymm8, %ymm6, %ymm6 -vpshufb shuf48_16(%rip), %ymm7, %ymm7 -vpand mask3_5_3_5(%rip), %ymm7, %ymm9 -vpand mask5_3_5_3(%rip), %ymm7, %ymm7 -vpermq $206, %ymm9, %ymm9 -vpand mask_keephigh(%rip), %ymm9, %ymm10 -vpor %ymm10, %ymm7, %ymm7 -vpaddw %ymm7, %ymm11, %ymm11 -vmovdqa %xmm9, 2048(%rsp) -vpshufb shuf48_16(%rip), %ymm8, %ymm8 -vpand mask3_5_3_5(%rip), %ymm8, %ymm9 -vpand mask5_3_5_3(%rip), %ymm8, %ymm8 -vpermq $206, %ymm9, %ymm9 -vpand mask_keephigh(%rip), %ymm9, %ymm10 -vpor %ymm10, %ymm8, %ymm8 -vpaddw %ymm8, %ymm6, %ymm6 -vmovdqa %xmm9, 2304(%rsp) -vpshufb shuf48_16(%rip), %ymm5, %ymm5 -vpand mask3_5_3_5(%rip), %ymm5, %ymm9 -vpand mask5_3_5_3(%rip), %ymm5, %ymm5 -vpermq $206, %ymm9, %ymm9 -vpand mask_keephigh(%rip), %ymm9, %ymm10 -vpor %ymm10, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vmovdqa %xmm9, 2560(%rsp) -vmovdqa %ymm11, 0(%rdi) -vmovdqa %ymm6, 256(%rdi) -vmovdqa %ymm3, 512(%rdi) -vmovdqa %ymm4, 768(%rdi) -vmovdqa 32(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm8 -vpunpckhwd const0(%rip), %ymm5, %ymm7 -vpslld $1, %ymm8, %ymm8 -vpslld $1, %ymm7, %ymm7 -vmovdqa 288(%rsp), %ymm4 -vpunpcklwd const0(%rip), %ymm4, %ymm3 -vpunpckhwd const0(%rip), %ymm4, %ymm4 -vmovdqa 544(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm3, %ymm9 -vpaddd %ymm6, %ymm4, %ymm10 -vpsubd %ymm8, %ymm9, %ymm9 -vpsubd %ymm7, %ymm10, %ymm10 -vpsubd %ymm11, %ymm3, %ymm11 -vpsubd %ymm6, %ymm4, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1568(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm4 -vpunpckhwd const0(%rip), %ymm11, %ymm3 -vpslld $1, %ymm4, %ymm4 -vpslld $1, %ymm3, %ymm3 -vpsubd %ymm4, %ymm9, %ymm9 -vpsubd %ymm3, %ymm10, %ymm10 -vpsrld $1, %ymm9, %ymm9 -vpsrld $1, %ymm10, %ymm10 -vpand mask32_to_16(%rip), %ymm9, %ymm9 -vpand mask32_to_16(%rip), %ymm10, %ymm10 -vpackusdw %ymm10, %ymm9, %ymm10 -vmovdqa 800(%rsp), %ymm9 -vpaddw 1056(%rsp), %ymm9, %ymm3 -vpsubw 1056(%rsp), %ymm9, %ymm9 -vpsrlw $2, %ymm9, %ymm9 -vpsubw %ymm6, %ymm9, %ymm9 -vpmullw %ymm14, %ymm9, %ymm9 -vpsllw $1, %ymm5, %ymm4 -vpsubw %ymm4, %ymm3, %ymm4 -vpsllw $7, %ymm11, %ymm3 -vpsubw %ymm3, %ymm4, %ymm3 -vpsrlw $3, %ymm3, %ymm3 -vpsubw %ymm10, %ymm3, %ymm3 -vmovdqa 1312(%rsp), %ymm4 -vpsubw %ymm5, %ymm4, %ymm4 -vpmullw %ymm15, %ymm11, %ymm7 -vpsubw %ymm7, %ymm4, %ymm7 -vpmullw %ymm14, %ymm3, %ymm3 -vpsubw %ymm3, %ymm10, %ymm10 -vpmullw %ymm12, %ymm3, %ymm4 -vpaddw %ymm4, %ymm10, %ymm4 -vpmullw %ymm12, %ymm4, %ymm4 -vpsubw %ymm4, %ymm7, %ymm4 -vpmullw %ymm14, %ymm4, %ymm4 -vpsubw %ymm6, %ymm4, %ymm4 -vpsrlw $3, %ymm4, %ymm4 -vpsubw %ymm9, %ymm4, %ymm4 -vpsubw %ymm4, %ymm9, %ymm9 -vpsubw %ymm9, %ymm6, %ymm6 -vpmullw %ymm13, %ymm4, %ymm4 -vpsubw %ymm4, %ymm6, %ymm6 -vpshufb shuf48_16(%rip), %ymm3, %ymm3 -vpand mask3_5_3_5(%rip), %ymm3, %ymm7 -vpand mask5_3_5_3(%rip), %ymm3, %ymm3 -vpermq $206, %ymm7, %ymm7 -vpand mask_keephigh(%rip), %ymm7, %ymm8 -vpor %ymm8, %ymm3, %ymm3 -vpaddw %ymm3, %ymm5, %ymm5 -vmovdqa %xmm7, 2080(%rsp) -vpshufb shuf48_16(%rip), %ymm4, %ymm4 -vpand mask3_5_3_5(%rip), %ymm4, %ymm7 -vpand mask5_3_5_3(%rip), %ymm4, %ymm4 -vpermq $206, %ymm7, %ymm7 -vpand mask_keephigh(%rip), %ymm7, %ymm8 -vpor %ymm8, %ymm4, %ymm4 -vpaddw %ymm4, %ymm6, %ymm6 -vmovdqa %xmm7, 2336(%rsp) -vpshufb shuf48_16(%rip), %ymm11, %ymm11 -vpand mask3_5_3_5(%rip), %ymm11, %ymm7 -vpand mask5_3_5_3(%rip), %ymm11, %ymm11 -vpermq $206, %ymm7, %ymm7 -vpand mask_keephigh(%rip), %ymm7, %ymm8 -vpor %ymm8, %ymm11, %ymm11 -vpaddw %ymm11, %ymm10, %ymm10 -vmovdqa %xmm7, 2592(%rsp) -vmovdqa %ymm5, 64(%rdi) -vmovdqa %ymm6, 320(%rdi) -vmovdqa %ymm10, 576(%rdi) -vmovdqa %ymm9, 832(%rdi) -vmovdqa 64(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm4 -vpunpckhwd const0(%rip), %ymm11, %ymm3 -vpslld $1, %ymm4, %ymm4 -vpslld $1, %ymm3, %ymm3 -vmovdqa 320(%rsp), %ymm9 -vpunpcklwd const0(%rip), %ymm9, %ymm10 -vpunpckhwd const0(%rip), %ymm9, %ymm9 -vmovdqa 576(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm10, %ymm7 -vpaddd %ymm6, %ymm9, %ymm8 -vpsubd %ymm4, %ymm7, %ymm7 -vpsubd %ymm3, %ymm8, %ymm8 -vpsubd %ymm5, %ymm10, %ymm5 -vpsubd %ymm6, %ymm9, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1600(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm9 -vpunpckhwd const0(%rip), %ymm5, %ymm10 -vpslld $1, %ymm9, %ymm9 -vpslld $1, %ymm10, %ymm10 -vpsubd %ymm9, %ymm7, %ymm7 -vpsubd %ymm10, %ymm8, %ymm8 -vpsrld $1, %ymm7, %ymm7 -vpsrld $1, %ymm8, %ymm8 -vpand mask32_to_16(%rip), %ymm7, %ymm7 -vpand mask32_to_16(%rip), %ymm8, %ymm8 -vpackusdw %ymm8, %ymm7, %ymm8 -vmovdqa 832(%rsp), %ymm7 -vpaddw 1088(%rsp), %ymm7, %ymm10 -vpsubw 1088(%rsp), %ymm7, %ymm7 -vpsrlw $2, %ymm7, %ymm7 -vpsubw %ymm6, %ymm7, %ymm7 -vpmullw %ymm14, %ymm7, %ymm7 -vpsllw $1, %ymm11, %ymm9 -vpsubw %ymm9, %ymm10, %ymm9 -vpsllw $7, %ymm5, %ymm10 -vpsubw %ymm10, %ymm9, %ymm10 -vpsrlw $3, %ymm10, %ymm10 -vpsubw %ymm8, %ymm10, %ymm10 -vmovdqa 1344(%rsp), %ymm9 -vpsubw %ymm11, %ymm9, %ymm9 -vpmullw %ymm15, %ymm5, %ymm3 -vpsubw %ymm3, %ymm9, %ymm3 -vpmullw %ymm14, %ymm10, %ymm10 -vpsubw %ymm10, %ymm8, %ymm8 -vpmullw %ymm12, %ymm10, %ymm9 -vpaddw %ymm9, %ymm8, %ymm9 -vpmullw %ymm12, %ymm9, %ymm9 -vpsubw %ymm9, %ymm3, %ymm9 -vpmullw %ymm14, %ymm9, %ymm9 -vpsubw %ymm6, %ymm9, %ymm9 -vpsrlw $3, %ymm9, %ymm9 -vpsubw %ymm7, %ymm9, %ymm9 -vpsubw %ymm9, %ymm7, %ymm7 -vpsubw %ymm7, %ymm6, %ymm6 -vpmullw %ymm13, %ymm9, %ymm9 -vpsubw %ymm9, %ymm6, %ymm6 -vpshufb shuf48_16(%rip), %ymm10, %ymm10 -vpand mask3_5_3_5(%rip), %ymm10, %ymm3 -vpand mask5_3_5_3(%rip), %ymm10, %ymm10 -vpermq $206, %ymm3, %ymm3 -vpand mask_keephigh(%rip), %ymm3, %ymm4 -vpor %ymm4, %ymm10, %ymm10 -vpaddw %ymm10, %ymm11, %ymm11 -vmovdqa %xmm3, 2112(%rsp) -vpshufb shuf48_16(%rip), %ymm9, %ymm9 -vpand mask3_5_3_5(%rip), %ymm9, %ymm3 -vpand mask5_3_5_3(%rip), %ymm9, %ymm9 -vpermq $206, %ymm3, %ymm3 -vpand mask_keephigh(%rip), %ymm3, %ymm4 -vpor %ymm4, %ymm9, %ymm9 -vpaddw %ymm9, %ymm6, %ymm6 -vmovdqa %xmm3, 2368(%rsp) -vpshufb shuf48_16(%rip), %ymm5, %ymm5 -vpand mask3_5_3_5(%rip), %ymm5, %ymm3 -vpand mask5_3_5_3(%rip), %ymm5, %ymm5 -vpermq $206, %ymm3, %ymm3 -vpand mask_keephigh(%rip), %ymm3, %ymm4 -vpor %ymm4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm8, %ymm8 -vmovdqa %xmm3, 2624(%rsp) -vmovdqa %ymm11, 128(%rdi) -vmovdqa %ymm6, 384(%rdi) -vmovdqa %ymm8, 640(%rdi) -vmovdqa %ymm7, 896(%rdi) -vmovdqa 96(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm9 -vpunpckhwd const0(%rip), %ymm5, %ymm10 -vpslld $1, %ymm9, %ymm9 -vpslld $1, %ymm10, %ymm10 -vmovdqa 352(%rsp), %ymm7 -vpunpcklwd const0(%rip), %ymm7, %ymm8 -vpunpckhwd const0(%rip), %ymm7, %ymm7 -vmovdqa 608(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm8, %ymm3 -vpaddd %ymm6, %ymm7, %ymm4 -vpsubd %ymm9, %ymm3, %ymm3 -vpsubd %ymm10, %ymm4, %ymm4 -vpsubd %ymm11, %ymm8, %ymm11 -vpsubd %ymm6, %ymm7, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1632(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm7 -vpunpckhwd const0(%rip), %ymm11, %ymm8 -vpslld $1, %ymm7, %ymm7 -vpslld $1, %ymm8, %ymm8 -vpsubd %ymm7, %ymm3, %ymm3 -vpsubd %ymm8, %ymm4, %ymm4 -vpsrld $1, %ymm3, %ymm3 -vpsrld $1, %ymm4, %ymm4 -vpand mask32_to_16(%rip), %ymm3, %ymm3 -vpand mask32_to_16(%rip), %ymm4, %ymm4 -vpackusdw %ymm4, %ymm3, %ymm4 -vmovdqa 864(%rsp), %ymm3 -vpaddw 1120(%rsp), %ymm3, %ymm8 -vpsubw 1120(%rsp), %ymm3, %ymm3 -vpsrlw $2, %ymm3, %ymm3 -vpsubw %ymm6, %ymm3, %ymm3 -vpmullw %ymm14, %ymm3, %ymm3 -vpsllw $1, %ymm5, %ymm7 -vpsubw %ymm7, %ymm8, %ymm7 -vpsllw $7, %ymm11, %ymm8 -vpsubw %ymm8, %ymm7, %ymm8 -vpsrlw $3, %ymm8, %ymm8 -vpsubw %ymm4, %ymm8, %ymm8 -vmovdqa 1376(%rsp), %ymm7 -vpsubw %ymm5, %ymm7, %ymm7 -vpmullw %ymm15, %ymm11, %ymm10 -vpsubw %ymm10, %ymm7, %ymm10 -vpmullw %ymm14, %ymm8, %ymm8 -vpsubw %ymm8, %ymm4, %ymm4 -vpmullw %ymm12, %ymm8, %ymm7 -vpaddw %ymm7, %ymm4, %ymm7 -vpmullw %ymm12, %ymm7, %ymm7 -vpsubw %ymm7, %ymm10, %ymm7 -vpmullw %ymm14, %ymm7, %ymm7 -vpsubw %ymm6, %ymm7, %ymm7 -vpsrlw $3, %ymm7, %ymm7 -vpsubw %ymm3, %ymm7, %ymm7 -vpsubw %ymm7, %ymm3, %ymm3 -vpsubw %ymm3, %ymm6, %ymm6 -vpmullw %ymm13, %ymm7, %ymm7 -vpsubw %ymm7, %ymm6, %ymm6 -vpshufb shuf48_16(%rip), %ymm8, %ymm8 -vpand mask3_5_3_5(%rip), %ymm8, %ymm10 -vpand mask5_3_5_3(%rip), %ymm8, %ymm8 -vpermq $206, %ymm10, %ymm10 -vpand mask_keephigh(%rip), %ymm10, %ymm9 -vpor %ymm9, %ymm8, %ymm8 -vpaddw %ymm8, %ymm5, %ymm5 -vmovdqa %xmm10, 2144(%rsp) -vpshufb shuf48_16(%rip), %ymm7, %ymm7 -vpand mask3_5_3_5(%rip), %ymm7, %ymm10 -vpand mask5_3_5_3(%rip), %ymm7, %ymm7 -vpermq $206, %ymm10, %ymm10 -vpand mask_keephigh(%rip), %ymm10, %ymm9 -vpor %ymm9, %ymm7, %ymm7 -vpaddw %ymm7, %ymm6, %ymm6 -vmovdqa %xmm10, 2400(%rsp) -vpshufb shuf48_16(%rip), %ymm11, %ymm11 -vpand mask3_5_3_5(%rip), %ymm11, %ymm10 -vpand mask5_3_5_3(%rip), %ymm11, %ymm11 -vpermq $206, %ymm10, %ymm10 -vpand mask_keephigh(%rip), %ymm10, %ymm9 -vpor %ymm9, %ymm11, %ymm11 -vpaddw %ymm11, %ymm4, %ymm4 -vmovdqa %xmm10, 2656(%rsp) -vmovdqa %ymm5, 192(%rdi) -vmovdqa %ymm6, 448(%rdi) -vmovdqa %ymm4, 704(%rdi) -vmovdqa %ymm3, 960(%rdi) -vmovdqa 128(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm7 -vpunpckhwd const0(%rip), %ymm11, %ymm8 -vpslld $1, %ymm7, %ymm7 -vpslld $1, %ymm8, %ymm8 -vmovdqa 384(%rsp), %ymm3 -vpunpcklwd const0(%rip), %ymm3, %ymm4 -vpunpckhwd const0(%rip), %ymm3, %ymm3 -vmovdqa 640(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm4, %ymm10 -vpaddd %ymm6, %ymm3, %ymm9 -vpsubd %ymm7, %ymm10, %ymm10 -vpsubd %ymm8, %ymm9, %ymm9 -vpsubd %ymm5, %ymm4, %ymm5 -vpsubd %ymm6, %ymm3, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1664(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm3 -vpunpckhwd const0(%rip), %ymm5, %ymm4 -vpslld $1, %ymm3, %ymm3 -vpslld $1, %ymm4, %ymm4 -vpsubd %ymm3, %ymm10, %ymm10 -vpsubd %ymm4, %ymm9, %ymm9 -vpsrld $1, %ymm10, %ymm10 -vpsrld $1, %ymm9, %ymm9 -vpand mask32_to_16(%rip), %ymm10, %ymm10 -vpand mask32_to_16(%rip), %ymm9, %ymm9 -vpackusdw %ymm9, %ymm10, %ymm9 -vmovdqa 896(%rsp), %ymm10 -vpaddw 1152(%rsp), %ymm10, %ymm4 -vpsubw 1152(%rsp), %ymm10, %ymm10 -vpsrlw $2, %ymm10, %ymm10 -vpsubw %ymm6, %ymm10, %ymm10 -vpmullw %ymm14, %ymm10, %ymm10 -vpsllw $1, %ymm11, %ymm3 -vpsubw %ymm3, %ymm4, %ymm3 -vpsllw $7, %ymm5, %ymm4 -vpsubw %ymm4, %ymm3, %ymm4 -vpsrlw $3, %ymm4, %ymm4 -vpsubw %ymm9, %ymm4, %ymm4 -vmovdqa 1408(%rsp), %ymm3 -vpsubw %ymm11, %ymm3, %ymm3 -vpmullw %ymm15, %ymm5, %ymm8 -vpsubw %ymm8, %ymm3, %ymm8 -vpmullw %ymm14, %ymm4, %ymm4 -vpsubw %ymm4, %ymm9, %ymm9 -vpmullw %ymm12, %ymm4, %ymm3 -vpaddw %ymm3, %ymm9, %ymm3 -vpmullw %ymm12, %ymm3, %ymm3 -vpsubw %ymm3, %ymm8, %ymm3 -vpmullw %ymm14, %ymm3, %ymm3 -vpsubw %ymm6, %ymm3, %ymm3 -vpsrlw $3, %ymm3, %ymm3 -vpsubw %ymm10, %ymm3, %ymm3 -vpsubw %ymm3, %ymm10, %ymm10 -vpsubw %ymm10, %ymm6, %ymm6 -vpmullw %ymm13, %ymm3, %ymm3 -vpsubw %ymm3, %ymm6, %ymm6 -vmovdqa 256(%rdi), %ymm8 -vmovdqa 512(%rdi), %ymm7 -vmovdqa 768(%rdi), %ymm2 -vpaddw %ymm11, %ymm8, %ymm11 -vpaddw %ymm6, %ymm7, %ymm6 -vpaddw %ymm9, %ymm2, %ymm9 -vpshufb shuf48_16(%rip), %ymm10, %ymm10 -vpand mask3_5_3_5(%rip), %ymm10, %ymm2 -vpand mask5_3_5_3(%rip), %ymm10, %ymm10 -vpermq $206, %ymm2, %ymm2 -vpand mask_keephigh(%rip), %ymm2, %ymm7 -vpor %ymm7, %ymm10, %ymm10 -vmovdqa 0(%rdi), %ymm7 -vpaddw %ymm10, %ymm7, %ymm7 -vmovdqa %ymm7, 0(%rdi) -vmovdqa %xmm2, 1920(%rsp) -vpshufb shuf48_16(%rip), %ymm4, %ymm4 -vpand mask3_5_3_5(%rip), %ymm4, %ymm2 -vpand mask5_3_5_3(%rip), %ymm4, %ymm4 -vpermq $206, %ymm2, %ymm2 -vpand mask_keephigh(%rip), %ymm2, %ymm7 -vpor %ymm7, %ymm4, %ymm4 -vpaddw %ymm4, %ymm11, %ymm11 -vmovdqa %xmm2, 2176(%rsp) -vpshufb shuf48_16(%rip), %ymm3, %ymm3 -vpand mask3_5_3_5(%rip), %ymm3, %ymm2 -vpand mask5_3_5_3(%rip), %ymm3, %ymm3 -vpermq $206, %ymm2, %ymm2 -vpand mask_keephigh(%rip), %ymm2, %ymm7 -vpor %ymm7, %ymm3, %ymm3 -vpaddw %ymm3, %ymm6, %ymm6 -vmovdqa %xmm2, 2432(%rsp) -vpshufb shuf48_16(%rip), %ymm5, %ymm5 -vpand mask3_5_3_5(%rip), %ymm5, %ymm2 -vpand mask5_3_5_3(%rip), %ymm5, %ymm5 -vpermq $206, %ymm2, %ymm2 -vpand mask_keephigh(%rip), %ymm2, %ymm7 -vpor %ymm7, %ymm5, %ymm5 -vpaddw %ymm5, %ymm9, %ymm9 -vmovdqa %xmm2, 2688(%rsp) -vmovdqa %ymm11, 256(%rdi) -vmovdqa %ymm6, 512(%rdi) -vmovdqa %ymm9, 768(%rdi) -vmovdqa 160(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm3 -vpunpckhwd const0(%rip), %ymm5, %ymm4 -vpslld $1, %ymm3, %ymm3 -vpslld $1, %ymm4, %ymm4 -vmovdqa 416(%rsp), %ymm10 -vpunpcklwd const0(%rip), %ymm10, %ymm9 -vpunpckhwd const0(%rip), %ymm10, %ymm10 -vmovdqa 672(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm9, %ymm2 -vpaddd %ymm6, %ymm10, %ymm7 -vpsubd %ymm3, %ymm2, %ymm2 -vpsubd %ymm4, %ymm7, %ymm7 -vpsubd %ymm11, %ymm9, %ymm11 -vpsubd %ymm6, %ymm10, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1696(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm10 -vpunpckhwd const0(%rip), %ymm11, %ymm9 -vpslld $1, %ymm10, %ymm10 -vpslld $1, %ymm9, %ymm9 -vpsubd %ymm10, %ymm2, %ymm2 -vpsubd %ymm9, %ymm7, %ymm7 -vpsrld $1, %ymm2, %ymm2 -vpsrld $1, %ymm7, %ymm7 -vpand mask32_to_16(%rip), %ymm2, %ymm2 -vpand mask32_to_16(%rip), %ymm7, %ymm7 -vpackusdw %ymm7, %ymm2, %ymm7 -vmovdqa 928(%rsp), %ymm2 -vpaddw 1184(%rsp), %ymm2, %ymm9 -vpsubw 1184(%rsp), %ymm2, %ymm2 -vpsrlw $2, %ymm2, %ymm2 -vpsubw %ymm6, %ymm2, %ymm2 -vpmullw %ymm14, %ymm2, %ymm2 -vpsllw $1, %ymm5, %ymm10 -vpsubw %ymm10, %ymm9, %ymm10 -vpsllw $7, %ymm11, %ymm9 -vpsubw %ymm9, %ymm10, %ymm9 -vpsrlw $3, %ymm9, %ymm9 -vpsubw %ymm7, %ymm9, %ymm9 -vmovdqa 1440(%rsp), %ymm10 -vpsubw %ymm5, %ymm10, %ymm10 -vpmullw %ymm15, %ymm11, %ymm4 -vpsubw %ymm4, %ymm10, %ymm4 -vpmullw %ymm14, %ymm9, %ymm9 -vpsubw %ymm9, %ymm7, %ymm7 -vpmullw %ymm12, %ymm9, %ymm10 -vpaddw %ymm10, %ymm7, %ymm10 -vpmullw %ymm12, %ymm10, %ymm10 -vpsubw %ymm10, %ymm4, %ymm10 -vpmullw %ymm14, %ymm10, %ymm10 -vpsubw %ymm6, %ymm10, %ymm10 -vpsrlw $3, %ymm10, %ymm10 -vpsubw %ymm2, %ymm10, %ymm10 -vpsubw %ymm10, %ymm2, %ymm2 -vpsubw %ymm2, %ymm6, %ymm6 -vpmullw %ymm13, %ymm10, %ymm10 -vpsubw %ymm10, %ymm6, %ymm6 -vmovdqa 320(%rdi), %ymm4 -vmovdqa 576(%rdi), %ymm3 -vmovdqa 832(%rdi), %ymm8 -vpaddw %ymm5, %ymm4, %ymm5 -vpaddw %ymm6, %ymm3, %ymm6 -vpaddw %ymm7, %ymm8, %ymm7 -vpshufb shuf48_16(%rip), %ymm2, %ymm2 -vpand mask3_5_3_5(%rip), %ymm2, %ymm8 -vpand mask5_3_5_3(%rip), %ymm2, %ymm2 -vpermq $206, %ymm8, %ymm8 -vpand mask_keephigh(%rip), %ymm8, %ymm3 -vpor %ymm3, %ymm2, %ymm2 -vmovdqa 64(%rdi), %ymm3 -vpaddw %ymm2, %ymm3, %ymm3 -vmovdqa %ymm3, 64(%rdi) -vmovdqa %xmm8, 1952(%rsp) -vpshufb shuf48_16(%rip), %ymm9, %ymm9 -vpand mask3_5_3_5(%rip), %ymm9, %ymm8 -vpand mask5_3_5_3(%rip), %ymm9, %ymm9 -vpermq $206, %ymm8, %ymm8 -vpand mask_keephigh(%rip), %ymm8, %ymm3 -vpor %ymm3, %ymm9, %ymm9 -vpaddw %ymm9, %ymm5, %ymm5 -vmovdqa %xmm8, 2208(%rsp) -vpshufb shuf48_16(%rip), %ymm10, %ymm10 -vpand mask3_5_3_5(%rip), %ymm10, %ymm8 -vpand mask5_3_5_3(%rip), %ymm10, %ymm10 -vpermq $206, %ymm8, %ymm8 -vpand mask_keephigh(%rip), %ymm8, %ymm3 -vpor %ymm3, %ymm10, %ymm10 -vpaddw %ymm10, %ymm6, %ymm6 -vmovdqa %xmm8, 2464(%rsp) -vpshufb shuf48_16(%rip), %ymm11, %ymm11 -vpand mask3_5_3_5(%rip), %ymm11, %ymm8 -vpand mask5_3_5_3(%rip), %ymm11, %ymm11 -vpermq $206, %ymm8, %ymm8 -vpand mask_keephigh(%rip), %ymm8, %ymm3 -vpor %ymm3, %ymm11, %ymm11 -vpaddw %ymm11, %ymm7, %ymm7 -vmovdqa %xmm8, 2720(%rsp) -vmovdqa %ymm5, 320(%rdi) -vmovdqa %ymm6, 576(%rdi) -vmovdqa %ymm7, 832(%rdi) -vmovdqa 192(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm10 -vpunpckhwd const0(%rip), %ymm11, %ymm9 -vpslld $1, %ymm10, %ymm10 -vpslld $1, %ymm9, %ymm9 -vmovdqa 448(%rsp), %ymm2 -vpunpcklwd const0(%rip), %ymm2, %ymm7 -vpunpckhwd const0(%rip), %ymm2, %ymm2 -vmovdqa 704(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm7, %ymm8 -vpaddd %ymm6, %ymm2, %ymm3 -vpsubd %ymm10, %ymm8, %ymm8 -vpsubd %ymm9, %ymm3, %ymm3 -vpsubd %ymm5, %ymm7, %ymm5 -vpsubd %ymm6, %ymm2, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1728(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm2 -vpunpckhwd const0(%rip), %ymm5, %ymm7 -vpslld $1, %ymm2, %ymm2 -vpslld $1, %ymm7, %ymm7 -vpsubd %ymm2, %ymm8, %ymm8 -vpsubd %ymm7, %ymm3, %ymm3 -vpsrld $1, %ymm8, %ymm8 -vpsrld $1, %ymm3, %ymm3 -vpand mask32_to_16(%rip), %ymm8, %ymm8 -vpand mask32_to_16(%rip), %ymm3, %ymm3 -vpackusdw %ymm3, %ymm8, %ymm3 -vmovdqa 960(%rsp), %ymm8 -vpaddw 1216(%rsp), %ymm8, %ymm7 -vpsubw 1216(%rsp), %ymm8, %ymm8 -vpsrlw $2, %ymm8, %ymm8 -vpsubw %ymm6, %ymm8, %ymm8 -vpmullw %ymm14, %ymm8, %ymm8 -vpsllw $1, %ymm11, %ymm2 -vpsubw %ymm2, %ymm7, %ymm2 -vpsllw $7, %ymm5, %ymm7 -vpsubw %ymm7, %ymm2, %ymm7 -vpsrlw $3, %ymm7, %ymm7 -vpsubw %ymm3, %ymm7, %ymm7 -vmovdqa 1472(%rsp), %ymm2 -vpsubw %ymm11, %ymm2, %ymm2 -vpmullw %ymm15, %ymm5, %ymm9 -vpsubw %ymm9, %ymm2, %ymm9 -vpmullw %ymm14, %ymm7, %ymm7 -vpsubw %ymm7, %ymm3, %ymm3 -vpmullw %ymm12, %ymm7, %ymm2 -vpaddw %ymm2, %ymm3, %ymm2 -vpmullw %ymm12, %ymm2, %ymm2 -vpsubw %ymm2, %ymm9, %ymm2 -vpmullw %ymm14, %ymm2, %ymm2 -vpsubw %ymm6, %ymm2, %ymm2 -vpsrlw $3, %ymm2, %ymm2 -vpsubw %ymm8, %ymm2, %ymm2 -vpsubw %ymm2, %ymm8, %ymm8 -vpsubw %ymm8, %ymm6, %ymm6 -vpmullw %ymm13, %ymm2, %ymm2 -vpsubw %ymm2, %ymm6, %ymm6 -vmovdqa 384(%rdi), %ymm9 -vmovdqa 640(%rdi), %ymm10 -vmovdqa 896(%rdi), %ymm4 -vpaddw %ymm11, %ymm9, %ymm11 -vpaddw %ymm6, %ymm10, %ymm6 -vpaddw %ymm3, %ymm4, %ymm3 -vpshufb shuf48_16(%rip), %ymm8, %ymm8 -vpand mask3_5_3_5(%rip), %ymm8, %ymm4 -vpand mask5_3_5_3(%rip), %ymm8, %ymm8 -vpermq $206, %ymm4, %ymm4 -vpand mask_keephigh(%rip), %ymm4, %ymm10 -vpor %ymm10, %ymm8, %ymm8 -vmovdqa 128(%rdi), %ymm10 -vpaddw %ymm8, %ymm10, %ymm10 -vmovdqa %ymm10, 128(%rdi) -vmovdqa %xmm4, 1984(%rsp) -vpshufb shuf48_16(%rip), %ymm7, %ymm7 -vpand mask3_5_3_5(%rip), %ymm7, %ymm4 -vpand mask5_3_5_3(%rip), %ymm7, %ymm7 -vpermq $206, %ymm4, %ymm4 -vpand mask_keephigh(%rip), %ymm4, %ymm10 -vpor %ymm10, %ymm7, %ymm7 -vpaddw %ymm7, %ymm11, %ymm11 -vmovdqa %xmm4, 2240(%rsp) -vpshufb shuf48_16(%rip), %ymm2, %ymm2 -vpand mask3_5_3_5(%rip), %ymm2, %ymm4 -vpand mask5_3_5_3(%rip), %ymm2, %ymm2 -vpermq $206, %ymm4, %ymm4 -vpand mask_keephigh(%rip), %ymm4, %ymm10 -vpor %ymm10, %ymm2, %ymm2 -vpaddw %ymm2, %ymm6, %ymm6 -vmovdqa %xmm4, 2496(%rsp) -vpshufb shuf48_16(%rip), %ymm5, %ymm5 -vpand mask3_5_3_5(%rip), %ymm5, %ymm4 -vpand mask5_3_5_3(%rip), %ymm5, %ymm5 -vpermq $206, %ymm4, %ymm4 -vpand mask_keephigh(%rip), %ymm4, %ymm10 -vpor %ymm10, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vmovdqa %xmm4, 2752(%rsp) -vmovdqa %ymm11, 384(%rdi) -vmovdqa %ymm6, 640(%rdi) -vmovdqa %ymm3, 896(%rdi) -vmovdqa 224(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm2 -vpunpckhwd const0(%rip), %ymm5, %ymm7 -vpslld $1, %ymm2, %ymm2 -vpslld $1, %ymm7, %ymm7 -vmovdqa 480(%rsp), %ymm8 -vpunpcklwd const0(%rip), %ymm8, %ymm3 -vpunpckhwd const0(%rip), %ymm8, %ymm8 -vmovdqa 736(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm3, %ymm4 -vpaddd %ymm6, %ymm8, %ymm10 -vpsubd %ymm2, %ymm4, %ymm4 -vpsubd %ymm7, %ymm10, %ymm10 -vpsubd %ymm11, %ymm3, %ymm11 -vpsubd %ymm6, %ymm8, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1760(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm8 -vpunpckhwd const0(%rip), %ymm11, %ymm3 -vpslld $1, %ymm8, %ymm8 -vpslld $1, %ymm3, %ymm3 -vpsubd %ymm8, %ymm4, %ymm4 -vpsubd %ymm3, %ymm10, %ymm10 -vpsrld $1, %ymm4, %ymm4 -vpsrld $1, %ymm10, %ymm10 -vpand mask32_to_16(%rip), %ymm4, %ymm4 -vpand mask32_to_16(%rip), %ymm10, %ymm10 -vpackusdw %ymm10, %ymm4, %ymm10 -vmovdqa 992(%rsp), %ymm4 -vpaddw 1248(%rsp), %ymm4, %ymm3 -vpsubw 1248(%rsp), %ymm4, %ymm4 -vpsrlw $2, %ymm4, %ymm4 -vpsubw %ymm6, %ymm4, %ymm4 -vpmullw %ymm14, %ymm4, %ymm4 -vpsllw $1, %ymm5, %ymm8 -vpsubw %ymm8, %ymm3, %ymm8 -vpsllw $7, %ymm11, %ymm3 -vpsubw %ymm3, %ymm8, %ymm3 -vpsrlw $3, %ymm3, %ymm3 -vpsubw %ymm10, %ymm3, %ymm3 -vmovdqa 1504(%rsp), %ymm8 -vpsubw %ymm5, %ymm8, %ymm8 -vpmullw %ymm15, %ymm11, %ymm7 -vpsubw %ymm7, %ymm8, %ymm7 -vpmullw %ymm14, %ymm3, %ymm3 -vpsubw %ymm3, %ymm10, %ymm10 -vpmullw %ymm12, %ymm3, %ymm8 -vpaddw %ymm8, %ymm10, %ymm8 -vpmullw %ymm12, %ymm8, %ymm8 -vpsubw %ymm8, %ymm7, %ymm8 -vpmullw %ymm14, %ymm8, %ymm8 -vpsubw %ymm6, %ymm8, %ymm8 -vpsrlw $3, %ymm8, %ymm8 -vpsubw %ymm4, %ymm8, %ymm8 -vpsubw %ymm8, %ymm4, %ymm4 -vpsubw %ymm4, %ymm6, %ymm6 -vpmullw %ymm13, %ymm8, %ymm8 -vpsubw %ymm8, %ymm6, %ymm6 -vmovdqa 448(%rdi), %ymm7 -vmovdqa 704(%rdi), %ymm2 -vmovdqa 960(%rdi), %ymm9 -vpaddw %ymm5, %ymm7, %ymm5 -vpaddw %ymm6, %ymm2, %ymm6 -vpaddw %ymm10, %ymm9, %ymm10 -vpshufb shuf48_16(%rip), %ymm4, %ymm4 -vpand mask3_5_3_5(%rip), %ymm4, %ymm9 -vpand mask5_3_5_3(%rip), %ymm4, %ymm4 -vpermq $206, %ymm9, %ymm9 -vpand mask_keephigh(%rip), %ymm9, %ymm2 -vpor %ymm2, %ymm4, %ymm4 -vmovdqa 192(%rdi), %ymm2 -vpaddw %ymm4, %ymm2, %ymm2 -vmovdqa %ymm2, 192(%rdi) -vmovdqa %xmm9, 2016(%rsp) -vpshufb shuf48_16(%rip), %ymm3, %ymm3 -vpand mask3_5_3_5(%rip), %ymm3, %ymm9 -vpand mask5_3_5_3(%rip), %ymm3, %ymm3 -vpermq $206, %ymm9, %ymm9 -vpand mask_keephigh(%rip), %ymm9, %ymm2 -vpor %ymm2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm5, %ymm5 -vmovdqa %xmm9, 2272(%rsp) -vpshufb shuf48_16(%rip), %ymm8, %ymm8 -vpand mask3_5_3_5(%rip), %ymm8, %ymm9 -vpand mask5_3_5_3(%rip), %ymm8, %ymm8 -vpermq $206, %ymm9, %ymm9 -vpand mask_keephigh(%rip), %ymm9, %ymm2 -vpor %ymm2, %ymm8, %ymm8 -vpaddw %ymm8, %ymm6, %ymm6 -vmovdqa %xmm9, 2528(%rsp) -vpshufb shuf48_16(%rip), %ymm11, %ymm11 -vpand mask3_5_3_5(%rip), %ymm11, %ymm9 -vpand mask5_3_5_3(%rip), %ymm11, %ymm11 -vpermq $206, %ymm9, %ymm9 -vpand mask_keephigh(%rip), %ymm9, %ymm2 -vpor %ymm2, %ymm11, %ymm11 -vpaddw %ymm11, %ymm10, %ymm10 -vmovdqa %xmm9, 2784(%rsp) -vmovdqa %ymm5, 448(%rdi) -vmovdqa %ymm6, 704(%rdi) -vmovdqa %ymm10, 960(%rdi) -vmovdqa 96(%r12), %ymm0 -vpsubw 160(%r12), %ymm0, %ymm0 -vmovdqa 352(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 224(%r12), %ymm1, %ymm1 -vpsubw 32(%r12), %ymm0, %ymm0 -vpaddw 288(%r12), %ymm0, %ymm0 -vmovdqa 480(%r12), %ymm2 -vpsubw 544(%r12), %ymm2, %ymm2 -vmovdqa 736(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 608(%r12), %ymm3, %ymm3 -vpsubw 416(%r12), %ymm2, %ymm2 -vpaddw 672(%r12), %ymm2, %ymm2 -vmovdqa 864(%r12), %ymm4 -vpsubw 928(%r12), %ymm4, %ymm4 -vmovdqa 1120(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 992(%r12), %ymm5, %ymm5 -vpsubw 800(%r12), %ymm4, %ymm4 -vpaddw 1056(%r12), %ymm4, %ymm4 -vpsubw 416(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 32(%r12), %ymm1, %ymm1 -vpaddw 800(%r12), %ymm1, %ymm1 -vmovdqa 224(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 992(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 608(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 32(%r12), %ymm8 -vmovdqa 608(%r12), %ymm9 -vmovdqa %ymm8, 0(%rsp) -vmovdqa %ymm0, 32(%rsp) -vmovdqa %ymm1, 64(%rsp) -vmovdqa %ymm7, 96(%rsp) -vmovdqa %ymm5, 128(%rsp) -vmovdqa %ymm2, 160(%rsp) -vmovdqa %ymm3, 192(%rsp) -vmovdqa %ymm9, 224(%rsp) -vmovdqa 1248(%r12), %ymm0 -vpsubw 1312(%r12), %ymm0, %ymm0 -vmovdqa 1504(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 1376(%r12), %ymm1, %ymm1 -vpsubw 1184(%r12), %ymm0, %ymm0 -vpaddw 1440(%r12), %ymm0, %ymm0 -vmovdqa 1632(%r12), %ymm2 -vpsubw 1696(%r12), %ymm2, %ymm2 -vmovdqa 1888(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 1760(%r12), %ymm3, %ymm3 -vpsubw 1568(%r12), %ymm2, %ymm2 -vpaddw 1824(%r12), %ymm2, %ymm2 -vmovdqa 2016(%r12), %ymm4 -vpsubw 2080(%r12), %ymm4, %ymm4 -vmovdqa 2272(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 2144(%r12), %ymm5, %ymm5 -vpsubw 1952(%r12), %ymm4, %ymm4 -vpaddw 2208(%r12), %ymm4, %ymm4 -vpsubw 1568(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 1184(%r12), %ymm1, %ymm1 -vpaddw 1952(%r12), %ymm1, %ymm1 -vmovdqa 1376(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 2144(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 1760(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 1184(%r12), %ymm8 -vmovdqa 1760(%r12), %ymm9 -vmovdqa %ymm8, 256(%rsp) -vmovdqa %ymm0, 288(%rsp) -vmovdqa %ymm1, 320(%rsp) -vmovdqa %ymm7, 352(%rsp) -vmovdqa %ymm5, 384(%rsp) -vmovdqa %ymm2, 416(%rsp) -vmovdqa %ymm3, 448(%rsp) -vmovdqa %ymm9, 480(%rsp) -vmovdqa 2400(%r12), %ymm0 -vpsubw 2464(%r12), %ymm0, %ymm0 -vmovdqa 2656(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 2528(%r12), %ymm1, %ymm1 -vpsubw 2336(%r12), %ymm0, %ymm0 -vpaddw 2592(%r12), %ymm0, %ymm0 -vmovdqa 2784(%r12), %ymm2 -vpsubw 2848(%r12), %ymm2, %ymm2 -vmovdqa 3040(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 2912(%r12), %ymm3, %ymm3 -vpsubw 2720(%r12), %ymm2, %ymm2 -vpaddw 2976(%r12), %ymm2, %ymm2 -vmovdqa 3168(%r12), %ymm4 -vpsubw 3232(%r12), %ymm4, %ymm4 -vmovdqa 3424(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 3296(%r12), %ymm5, %ymm5 -vpsubw 3104(%r12), %ymm4, %ymm4 -vpaddw 3360(%r12), %ymm4, %ymm4 -vpsubw 2720(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 2336(%r12), %ymm1, %ymm1 -vpaddw 3104(%r12), %ymm1, %ymm1 -vmovdqa 2528(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 3296(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 2912(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 2336(%r12), %ymm8 -vmovdqa 2912(%r12), %ymm9 -vmovdqa %ymm8, 512(%rsp) -vmovdqa %ymm0, 544(%rsp) -vmovdqa %ymm1, 576(%rsp) -vmovdqa %ymm7, 608(%rsp) -vmovdqa %ymm5, 640(%rsp) -vmovdqa %ymm2, 672(%rsp) -vmovdqa %ymm3, 704(%rsp) -vmovdqa %ymm9, 736(%rsp) -vmovdqa 3552(%r12), %ymm0 -vpsubw 3616(%r12), %ymm0, %ymm0 -vmovdqa 3808(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 3680(%r12), %ymm1, %ymm1 -vpsubw 3488(%r12), %ymm0, %ymm0 -vpaddw 3744(%r12), %ymm0, %ymm0 -vmovdqa 3936(%r12), %ymm2 -vpsubw 4000(%r12), %ymm2, %ymm2 -vmovdqa 4192(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 4064(%r12), %ymm3, %ymm3 -vpsubw 3872(%r12), %ymm2, %ymm2 -vpaddw 4128(%r12), %ymm2, %ymm2 -vmovdqa 4320(%r12), %ymm4 -vpsubw 4384(%r12), %ymm4, %ymm4 -vmovdqa 4576(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 4448(%r12), %ymm5, %ymm5 -vpsubw 4256(%r12), %ymm4, %ymm4 -vpaddw 4512(%r12), %ymm4, %ymm4 -vpsubw 3872(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 3488(%r12), %ymm1, %ymm1 -vpaddw 4256(%r12), %ymm1, %ymm1 -vmovdqa 3680(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 4448(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 4064(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 3488(%r12), %ymm8 -vmovdqa 4064(%r12), %ymm9 -vmovdqa %ymm8, 768(%rsp) -vmovdqa %ymm0, 800(%rsp) -vmovdqa %ymm1, 832(%rsp) -vmovdqa %ymm7, 864(%rsp) -vmovdqa %ymm5, 896(%rsp) -vmovdqa %ymm2, 928(%rsp) -vmovdqa %ymm3, 960(%rsp) -vmovdqa %ymm9, 992(%rsp) -vmovdqa 4704(%r12), %ymm0 -vpsubw 4768(%r12), %ymm0, %ymm0 -vmovdqa 4960(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 4832(%r12), %ymm1, %ymm1 -vpsubw 4640(%r12), %ymm0, %ymm0 -vpaddw 4896(%r12), %ymm0, %ymm0 -vmovdqa 5088(%r12), %ymm2 -vpsubw 5152(%r12), %ymm2, %ymm2 -vmovdqa 5344(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 5216(%r12), %ymm3, %ymm3 -vpsubw 5024(%r12), %ymm2, %ymm2 -vpaddw 5280(%r12), %ymm2, %ymm2 -vmovdqa 5472(%r12), %ymm4 -vpsubw 5536(%r12), %ymm4, %ymm4 -vmovdqa 5728(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 5600(%r12), %ymm5, %ymm5 -vpsubw 5408(%r12), %ymm4, %ymm4 -vpaddw 5664(%r12), %ymm4, %ymm4 -vpsubw 5024(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 4640(%r12), %ymm1, %ymm1 -vpaddw 5408(%r12), %ymm1, %ymm1 -vmovdqa 4832(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 5600(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 5216(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 4640(%r12), %ymm8 -vmovdqa 5216(%r12), %ymm9 -vmovdqa %ymm8, 1024(%rsp) -vmovdqa %ymm0, 1056(%rsp) -vmovdqa %ymm1, 1088(%rsp) -vmovdqa %ymm7, 1120(%rsp) -vmovdqa %ymm5, 1152(%rsp) -vmovdqa %ymm2, 1184(%rsp) -vmovdqa %ymm3, 1216(%rsp) -vmovdqa %ymm9, 1248(%rsp) -vmovdqa 5856(%r12), %ymm0 -vpsubw 5920(%r12), %ymm0, %ymm0 -vmovdqa 6112(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 5984(%r12), %ymm1, %ymm1 -vpsubw 5792(%r12), %ymm0, %ymm0 -vpaddw 6048(%r12), %ymm0, %ymm0 -vmovdqa 6240(%r12), %ymm2 -vpsubw 6304(%r12), %ymm2, %ymm2 -vmovdqa 6496(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 6368(%r12), %ymm3, %ymm3 -vpsubw 6176(%r12), %ymm2, %ymm2 -vpaddw 6432(%r12), %ymm2, %ymm2 -vmovdqa 6624(%r12), %ymm4 -vpsubw 6688(%r12), %ymm4, %ymm4 -vmovdqa 6880(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 6752(%r12), %ymm5, %ymm5 -vpsubw 6560(%r12), %ymm4, %ymm4 -vpaddw 6816(%r12), %ymm4, %ymm4 -vpsubw 6176(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 5792(%r12), %ymm1, %ymm1 -vpaddw 6560(%r12), %ymm1, %ymm1 -vmovdqa 5984(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 6752(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 6368(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 5792(%r12), %ymm8 -vmovdqa 6368(%r12), %ymm9 -vmovdqa %ymm8, 1280(%rsp) -vmovdqa %ymm0, 1312(%rsp) -vmovdqa %ymm1, 1344(%rsp) -vmovdqa %ymm7, 1376(%rsp) -vmovdqa %ymm5, 1408(%rsp) -vmovdqa %ymm2, 1440(%rsp) -vmovdqa %ymm3, 1472(%rsp) -vmovdqa %ymm9, 1504(%rsp) -vmovdqa 7008(%r12), %ymm0 -vpsubw 7072(%r12), %ymm0, %ymm0 -vmovdqa 7264(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 7136(%r12), %ymm1, %ymm1 -vpsubw 6944(%r12), %ymm0, %ymm0 -vpaddw 7200(%r12), %ymm0, %ymm0 -vmovdqa 7392(%r12), %ymm2 -vpsubw 7456(%r12), %ymm2, %ymm2 -vmovdqa 7648(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 7520(%r12), %ymm3, %ymm3 -vpsubw 7328(%r12), %ymm2, %ymm2 -vpaddw 7584(%r12), %ymm2, %ymm2 -vmovdqa 7776(%r12), %ymm4 -vpsubw 7840(%r12), %ymm4, %ymm4 -vmovdqa 8032(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 7904(%r12), %ymm5, %ymm5 -vpsubw 7712(%r12), %ymm4, %ymm4 -vpaddw 7968(%r12), %ymm4, %ymm4 -vpsubw 7328(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 6944(%r12), %ymm1, %ymm1 -vpaddw 7712(%r12), %ymm1, %ymm1 -vmovdqa 7136(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 7904(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 7520(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 6944(%r12), %ymm8 -vmovdqa 7520(%r12), %ymm9 -vmovdqa %ymm8, 1536(%rsp) -vmovdqa %ymm0, 1568(%rsp) -vmovdqa %ymm1, 1600(%rsp) -vmovdqa %ymm7, 1632(%rsp) -vmovdqa %ymm5, 1664(%rsp) -vmovdqa %ymm2, 1696(%rsp) -vmovdqa %ymm3, 1728(%rsp) -vmovdqa %ymm9, 1760(%rsp) -vmovdqa 0(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm8 -vpunpckhwd const0(%rip), %ymm11, %ymm3 -vpslld $1, %ymm8, %ymm8 -vpslld $1, %ymm3, %ymm3 -vmovdqa 256(%rsp), %ymm4 -vpunpcklwd const0(%rip), %ymm4, %ymm10 -vpunpckhwd const0(%rip), %ymm4, %ymm4 -vmovdqa 512(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm10, %ymm9 -vpaddd %ymm6, %ymm4, %ymm2 -vpsubd %ymm8, %ymm9, %ymm9 -vpsubd %ymm3, %ymm2, %ymm2 -vpsubd %ymm5, %ymm10, %ymm5 -vpsubd %ymm6, %ymm4, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1536(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm4 -vpunpckhwd const0(%rip), %ymm5, %ymm10 -vpslld $1, %ymm4, %ymm4 -vpslld $1, %ymm10, %ymm10 -vpsubd %ymm4, %ymm9, %ymm9 -vpsubd %ymm10, %ymm2, %ymm2 -vpsrld $1, %ymm9, %ymm9 -vpsrld $1, %ymm2, %ymm2 -vpand mask32_to_16(%rip), %ymm9, %ymm9 -vpand mask32_to_16(%rip), %ymm2, %ymm2 -vpackusdw %ymm2, %ymm9, %ymm2 -vmovdqa 768(%rsp), %ymm9 -vpaddw 1024(%rsp), %ymm9, %ymm10 -vpsubw 1024(%rsp), %ymm9, %ymm9 -vpsrlw $2, %ymm9, %ymm9 -vpsubw %ymm6, %ymm9, %ymm9 -vpmullw %ymm14, %ymm9, %ymm9 -vpsllw $1, %ymm11, %ymm4 -vpsubw %ymm4, %ymm10, %ymm4 -vpsllw $7, %ymm5, %ymm10 -vpsubw %ymm10, %ymm4, %ymm10 -vpsrlw $3, %ymm10, %ymm10 -vpsubw %ymm2, %ymm10, %ymm10 -vmovdqa 1280(%rsp), %ymm4 -vpsubw %ymm11, %ymm4, %ymm4 -vpmullw %ymm15, %ymm5, %ymm3 -vpsubw %ymm3, %ymm4, %ymm3 -vpmullw %ymm14, %ymm10, %ymm10 -vpsubw %ymm10, %ymm2, %ymm2 -vpmullw %ymm12, %ymm10, %ymm4 -vpaddw %ymm4, %ymm2, %ymm4 -vpmullw %ymm12, %ymm4, %ymm4 -vpsubw %ymm4, %ymm3, %ymm4 -vpmullw %ymm14, %ymm4, %ymm4 -vpsubw %ymm6, %ymm4, %ymm4 -vpsrlw $3, %ymm4, %ymm4 -vpsubw %ymm9, %ymm4, %ymm4 -vpsubw %ymm4, %ymm9, %ymm9 -vpsubw %ymm9, %ymm6, %ymm6 -vpmullw %ymm13, %ymm4, %ymm4 -vpsubw %ymm4, %ymm6, %ymm6 -vpshufb shuf48_16(%rip), %ymm10, %ymm10 -vpand mask3_5_3_5(%rip), %ymm10, %ymm3 -vpand mask5_3_5_3(%rip), %ymm10, %ymm10 -vpermq $206, %ymm3, %ymm3 -vpand mask_keephigh(%rip), %ymm3, %ymm8 -vpor %ymm8, %ymm10, %ymm10 -vpaddw 2048(%rsp), %ymm11, %ymm11 -vpaddw %ymm10, %ymm11, %ymm11 -vmovdqa %xmm3, 2048(%rsp) -vpshufb shuf48_16(%rip), %ymm4, %ymm4 -vpand mask3_5_3_5(%rip), %ymm4, %ymm3 -vpand mask5_3_5_3(%rip), %ymm4, %ymm4 -vpermq $206, %ymm3, %ymm3 -vpand mask_keephigh(%rip), %ymm3, %ymm8 -vpor %ymm8, %ymm4, %ymm4 -vpaddw 2304(%rsp), %ymm6, %ymm6 -vpaddw %ymm4, %ymm6, %ymm6 -vmovdqa %xmm3, 2304(%rsp) -vpshufb shuf48_16(%rip), %ymm5, %ymm5 -vpand mask3_5_3_5(%rip), %ymm5, %ymm3 -vpand mask5_3_5_3(%rip), %ymm5, %ymm5 -vpermq $206, %ymm3, %ymm3 -vpand mask_keephigh(%rip), %ymm3, %ymm8 -vpor %ymm8, %ymm5, %ymm5 -vpaddw 2560(%rsp), %ymm2, %ymm2 -vpaddw %ymm5, %ymm2, %ymm2 -vmovdqa %xmm3, 2560(%rsp) -vmovdqa %ymm11, 32(%rdi) -vmovdqa %ymm6, 288(%rdi) -vmovdqa %ymm2, 544(%rdi) -vmovdqa %ymm9, 800(%rdi) -vmovdqa 32(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm4 -vpunpckhwd const0(%rip), %ymm5, %ymm10 -vpslld $1, %ymm4, %ymm4 -vpslld $1, %ymm10, %ymm10 -vmovdqa 288(%rsp), %ymm9 -vpunpcklwd const0(%rip), %ymm9, %ymm2 -vpunpckhwd const0(%rip), %ymm9, %ymm9 -vmovdqa 544(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm2, %ymm3 -vpaddd %ymm6, %ymm9, %ymm8 -vpsubd %ymm4, %ymm3, %ymm3 -vpsubd %ymm10, %ymm8, %ymm8 -vpsubd %ymm11, %ymm2, %ymm11 -vpsubd %ymm6, %ymm9, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1568(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm9 -vpunpckhwd const0(%rip), %ymm11, %ymm2 -vpslld $1, %ymm9, %ymm9 -vpslld $1, %ymm2, %ymm2 -vpsubd %ymm9, %ymm3, %ymm3 -vpsubd %ymm2, %ymm8, %ymm8 -vpsrld $1, %ymm3, %ymm3 -vpsrld $1, %ymm8, %ymm8 -vpand mask32_to_16(%rip), %ymm3, %ymm3 -vpand mask32_to_16(%rip), %ymm8, %ymm8 -vpackusdw %ymm8, %ymm3, %ymm8 -vmovdqa 800(%rsp), %ymm3 -vpaddw 1056(%rsp), %ymm3, %ymm2 -vpsubw 1056(%rsp), %ymm3, %ymm3 -vpsrlw $2, %ymm3, %ymm3 -vpsubw %ymm6, %ymm3, %ymm3 -vpmullw %ymm14, %ymm3, %ymm3 -vpsllw $1, %ymm5, %ymm9 -vpsubw %ymm9, %ymm2, %ymm9 -vpsllw $7, %ymm11, %ymm2 -vpsubw %ymm2, %ymm9, %ymm2 -vpsrlw $3, %ymm2, %ymm2 -vpsubw %ymm8, %ymm2, %ymm2 -vmovdqa 1312(%rsp), %ymm9 -vpsubw %ymm5, %ymm9, %ymm9 -vpmullw %ymm15, %ymm11, %ymm10 -vpsubw %ymm10, %ymm9, %ymm10 -vpmullw %ymm14, %ymm2, %ymm2 -vpsubw %ymm2, %ymm8, %ymm8 -vpmullw %ymm12, %ymm2, %ymm9 -vpaddw %ymm9, %ymm8, %ymm9 -vpmullw %ymm12, %ymm9, %ymm9 -vpsubw %ymm9, %ymm10, %ymm9 -vpmullw %ymm14, %ymm9, %ymm9 -vpsubw %ymm6, %ymm9, %ymm9 -vpsrlw $3, %ymm9, %ymm9 -vpsubw %ymm3, %ymm9, %ymm9 -vpsubw %ymm9, %ymm3, %ymm3 -vpsubw %ymm3, %ymm6, %ymm6 -vpmullw %ymm13, %ymm9, %ymm9 -vpsubw %ymm9, %ymm6, %ymm6 -vpshufb shuf48_16(%rip), %ymm2, %ymm2 -vpand mask3_5_3_5(%rip), %ymm2, %ymm10 -vpand mask5_3_5_3(%rip), %ymm2, %ymm2 -vpermq $206, %ymm10, %ymm10 -vpand mask_keephigh(%rip), %ymm10, %ymm4 -vpor %ymm4, %ymm2, %ymm2 -vpaddw 2080(%rsp), %ymm5, %ymm5 -vpaddw %ymm2, %ymm5, %ymm5 -vmovdqa %xmm10, 2080(%rsp) -vpshufb shuf48_16(%rip), %ymm9, %ymm9 -vpand mask3_5_3_5(%rip), %ymm9, %ymm10 -vpand mask5_3_5_3(%rip), %ymm9, %ymm9 -vpermq $206, %ymm10, %ymm10 -vpand mask_keephigh(%rip), %ymm10, %ymm4 -vpor %ymm4, %ymm9, %ymm9 -vpaddw 2336(%rsp), %ymm6, %ymm6 -vpaddw %ymm9, %ymm6, %ymm6 -vmovdqa %xmm10, 2336(%rsp) -vpshufb shuf48_16(%rip), %ymm11, %ymm11 -vpand mask3_5_3_5(%rip), %ymm11, %ymm10 -vpand mask5_3_5_3(%rip), %ymm11, %ymm11 -vpermq $206, %ymm10, %ymm10 -vpand mask_keephigh(%rip), %ymm10, %ymm4 -vpor %ymm4, %ymm11, %ymm11 -vpaddw 2592(%rsp), %ymm8, %ymm8 -vpaddw %ymm11, %ymm8, %ymm8 -vmovdqa %xmm10, 2592(%rsp) -vmovdqa %ymm5, 96(%rdi) -vmovdqa %ymm6, 352(%rdi) -vmovdqa %ymm8, 608(%rdi) -vmovdqa %ymm3, 864(%rdi) -vmovdqa 64(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm9 -vpunpckhwd const0(%rip), %ymm11, %ymm2 -vpslld $1, %ymm9, %ymm9 -vpslld $1, %ymm2, %ymm2 -vmovdqa 320(%rsp), %ymm3 -vpunpcklwd const0(%rip), %ymm3, %ymm8 -vpunpckhwd const0(%rip), %ymm3, %ymm3 -vmovdqa 576(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm8, %ymm10 -vpaddd %ymm6, %ymm3, %ymm4 -vpsubd %ymm9, %ymm10, %ymm10 -vpsubd %ymm2, %ymm4, %ymm4 -vpsubd %ymm5, %ymm8, %ymm5 -vpsubd %ymm6, %ymm3, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1600(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm3 -vpunpckhwd const0(%rip), %ymm5, %ymm8 -vpslld $1, %ymm3, %ymm3 -vpslld $1, %ymm8, %ymm8 -vpsubd %ymm3, %ymm10, %ymm10 -vpsubd %ymm8, %ymm4, %ymm4 -vpsrld $1, %ymm10, %ymm10 -vpsrld $1, %ymm4, %ymm4 -vpand mask32_to_16(%rip), %ymm10, %ymm10 -vpand mask32_to_16(%rip), %ymm4, %ymm4 -vpackusdw %ymm4, %ymm10, %ymm4 -vmovdqa 832(%rsp), %ymm10 -vpaddw 1088(%rsp), %ymm10, %ymm8 -vpsubw 1088(%rsp), %ymm10, %ymm10 -vpsrlw $2, %ymm10, %ymm10 -vpsubw %ymm6, %ymm10, %ymm10 -vpmullw %ymm14, %ymm10, %ymm10 -vpsllw $1, %ymm11, %ymm3 -vpsubw %ymm3, %ymm8, %ymm3 -vpsllw $7, %ymm5, %ymm8 -vpsubw %ymm8, %ymm3, %ymm8 -vpsrlw $3, %ymm8, %ymm8 -vpsubw %ymm4, %ymm8, %ymm8 -vmovdqa 1344(%rsp), %ymm3 -vpsubw %ymm11, %ymm3, %ymm3 -vpmullw %ymm15, %ymm5, %ymm2 -vpsubw %ymm2, %ymm3, %ymm2 -vpmullw %ymm14, %ymm8, %ymm8 -vpsubw %ymm8, %ymm4, %ymm4 -vpmullw %ymm12, %ymm8, %ymm3 -vpaddw %ymm3, %ymm4, %ymm3 -vpmullw %ymm12, %ymm3, %ymm3 -vpsubw %ymm3, %ymm2, %ymm3 -vpmullw %ymm14, %ymm3, %ymm3 -vpsubw %ymm6, %ymm3, %ymm3 -vpsrlw $3, %ymm3, %ymm3 -vpsubw %ymm10, %ymm3, %ymm3 -vpsubw %ymm3, %ymm10, %ymm10 -vpsubw %ymm10, %ymm6, %ymm6 -vpmullw %ymm13, %ymm3, %ymm3 -vpsubw %ymm3, %ymm6, %ymm6 -vpshufb shuf48_16(%rip), %ymm8, %ymm8 -vpand mask3_5_3_5(%rip), %ymm8, %ymm2 -vpand mask5_3_5_3(%rip), %ymm8, %ymm8 -vpermq $206, %ymm2, %ymm2 -vpand mask_keephigh(%rip), %ymm2, %ymm9 -vpor %ymm9, %ymm8, %ymm8 -vpaddw 2112(%rsp), %ymm11, %ymm11 -vpaddw %ymm8, %ymm11, %ymm11 -vmovdqa %xmm2, 2112(%rsp) -vpshufb shuf48_16(%rip), %ymm3, %ymm3 -vpand mask3_5_3_5(%rip), %ymm3, %ymm2 -vpand mask5_3_5_3(%rip), %ymm3, %ymm3 -vpermq $206, %ymm2, %ymm2 -vpand mask_keephigh(%rip), %ymm2, %ymm9 -vpor %ymm9, %ymm3, %ymm3 -vpaddw 2368(%rsp), %ymm6, %ymm6 -vpaddw %ymm3, %ymm6, %ymm6 -vmovdqa %xmm2, 2368(%rsp) -vpshufb shuf48_16(%rip), %ymm5, %ymm5 -vpand mask3_5_3_5(%rip), %ymm5, %ymm2 -vpand mask5_3_5_3(%rip), %ymm5, %ymm5 -vpermq $206, %ymm2, %ymm2 -vpand mask_keephigh(%rip), %ymm2, %ymm9 -vpor %ymm9, %ymm5, %ymm5 -vpaddw 2624(%rsp), %ymm4, %ymm4 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa %xmm2, 2624(%rsp) -vmovdqa %ymm11, 160(%rdi) -vmovdqa %ymm6, 416(%rdi) -vmovdqa %ymm4, 672(%rdi) -vmovdqa %ymm10, 928(%rdi) -vmovdqa 96(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm3 -vpunpckhwd const0(%rip), %ymm5, %ymm8 -vpslld $1, %ymm3, %ymm3 -vpslld $1, %ymm8, %ymm8 -vmovdqa 352(%rsp), %ymm10 -vpunpcklwd const0(%rip), %ymm10, %ymm4 -vpunpckhwd const0(%rip), %ymm10, %ymm10 -vmovdqa 608(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm4, %ymm2 -vpaddd %ymm6, %ymm10, %ymm9 -vpsubd %ymm3, %ymm2, %ymm2 -vpsubd %ymm8, %ymm9, %ymm9 -vpsubd %ymm11, %ymm4, %ymm11 -vpsubd %ymm6, %ymm10, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1632(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm10 -vpunpckhwd const0(%rip), %ymm11, %ymm4 -vpslld $1, %ymm10, %ymm10 -vpslld $1, %ymm4, %ymm4 -vpsubd %ymm10, %ymm2, %ymm2 -vpsubd %ymm4, %ymm9, %ymm9 -vpsrld $1, %ymm2, %ymm2 -vpsrld $1, %ymm9, %ymm9 -vpand mask32_to_16(%rip), %ymm2, %ymm2 -vpand mask32_to_16(%rip), %ymm9, %ymm9 -vpackusdw %ymm9, %ymm2, %ymm9 -vmovdqa 864(%rsp), %ymm2 -vpaddw 1120(%rsp), %ymm2, %ymm4 -vpsubw 1120(%rsp), %ymm2, %ymm2 -vpsrlw $2, %ymm2, %ymm2 -vpsubw %ymm6, %ymm2, %ymm2 -vpmullw %ymm14, %ymm2, %ymm2 -vpsllw $1, %ymm5, %ymm10 -vpsubw %ymm10, %ymm4, %ymm10 -vpsllw $7, %ymm11, %ymm4 -vpsubw %ymm4, %ymm10, %ymm4 -vpsrlw $3, %ymm4, %ymm4 -vpsubw %ymm9, %ymm4, %ymm4 -vmovdqa 1376(%rsp), %ymm10 -vpsubw %ymm5, %ymm10, %ymm10 -vpmullw %ymm15, %ymm11, %ymm8 -vpsubw %ymm8, %ymm10, %ymm8 -vpmullw %ymm14, %ymm4, %ymm4 -vpsubw %ymm4, %ymm9, %ymm9 -vpmullw %ymm12, %ymm4, %ymm10 -vpaddw %ymm10, %ymm9, %ymm10 -vpmullw %ymm12, %ymm10, %ymm10 -vpsubw %ymm10, %ymm8, %ymm10 -vpmullw %ymm14, %ymm10, %ymm10 -vpsubw %ymm6, %ymm10, %ymm10 -vpsrlw $3, %ymm10, %ymm10 -vpsubw %ymm2, %ymm10, %ymm10 -vpsubw %ymm10, %ymm2, %ymm2 -vpsubw %ymm2, %ymm6, %ymm6 -vpmullw %ymm13, %ymm10, %ymm10 -vpsubw %ymm10, %ymm6, %ymm6 -vpshufb shuf48_16(%rip), %ymm4, %ymm4 -vpand mask3_5_3_5(%rip), %ymm4, %ymm8 -vpand mask5_3_5_3(%rip), %ymm4, %ymm4 -vpermq $206, %ymm8, %ymm8 -vpand mask_keephigh(%rip), %ymm8, %ymm3 -vpor %ymm3, %ymm4, %ymm4 -vpaddw 2144(%rsp), %ymm5, %ymm5 -vpaddw %ymm4, %ymm5, %ymm5 -vmovdqa %xmm8, 2144(%rsp) -vpshufb shuf48_16(%rip), %ymm10, %ymm10 -vpand mask3_5_3_5(%rip), %ymm10, %ymm8 -vpand mask5_3_5_3(%rip), %ymm10, %ymm10 -vpermq $206, %ymm8, %ymm8 -vpand mask_keephigh(%rip), %ymm8, %ymm3 -vpor %ymm3, %ymm10, %ymm10 -vpaddw 2400(%rsp), %ymm6, %ymm6 -vpaddw %ymm10, %ymm6, %ymm6 -vmovdqa %xmm8, 2400(%rsp) -vpshufb shuf48_16(%rip), %ymm11, %ymm11 -vpand mask3_5_3_5(%rip), %ymm11, %ymm8 -vpand mask5_3_5_3(%rip), %ymm11, %ymm11 -vpermq $206, %ymm8, %ymm8 -vpand mask_keephigh(%rip), %ymm8, %ymm3 -vpor %ymm3, %ymm11, %ymm11 -vpaddw 2656(%rsp), %ymm9, %ymm9 -vpaddw %ymm11, %ymm9, %ymm9 -vmovdqa %xmm8, 2656(%rsp) -vmovdqa %ymm5, 224(%rdi) -vextracti128 $1, %ymm5, %xmm5 -vpshufb shufmin5_mask3(%rip), %ymm5, %ymm5 -vmovdqa %xmm5, 1792(%rsp) -vmovdqa %ymm6, 480(%rdi) -vextracti128 $1, %ymm6, %xmm6 -vpshufb shufmin5_mask3(%rip), %ymm6, %ymm6 -vmovdqa %xmm6, 1824(%rsp) -vmovdqa %ymm9, 736(%rdi) -vextracti128 $1, %ymm9, %xmm9 -vpshufb shufmin5_mask3(%rip), %ymm9, %ymm9 -vmovdqa %xmm9, 1856(%rsp) -vmovdqa %ymm2, 992(%rdi) -vextracti128 $1, %ymm2, %xmm2 -vpshufb shufmin5_mask3(%rip), %ymm2, %ymm2 -vmovdqa %xmm2, 1888(%rsp) -vmovdqa 128(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm10 -vpunpckhwd const0(%rip), %ymm11, %ymm4 -vpslld $1, %ymm10, %ymm10 -vpslld $1, %ymm4, %ymm4 -vmovdqa 384(%rsp), %ymm2 -vpunpcklwd const0(%rip), %ymm2, %ymm9 -vpunpckhwd const0(%rip), %ymm2, %ymm2 -vmovdqa 640(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm9, %ymm8 -vpaddd %ymm6, %ymm2, %ymm3 -vpsubd %ymm10, %ymm8, %ymm8 -vpsubd %ymm4, %ymm3, %ymm3 -vpsubd %ymm5, %ymm9, %ymm5 -vpsubd %ymm6, %ymm2, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1664(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm2 -vpunpckhwd const0(%rip), %ymm5, %ymm9 -vpslld $1, %ymm2, %ymm2 -vpslld $1, %ymm9, %ymm9 -vpsubd %ymm2, %ymm8, %ymm8 -vpsubd %ymm9, %ymm3, %ymm3 -vpsrld $1, %ymm8, %ymm8 -vpsrld $1, %ymm3, %ymm3 -vpand mask32_to_16(%rip), %ymm8, %ymm8 -vpand mask32_to_16(%rip), %ymm3, %ymm3 -vpackusdw %ymm3, %ymm8, %ymm3 -vmovdqa 896(%rsp), %ymm8 -vpaddw 1152(%rsp), %ymm8, %ymm9 -vpsubw 1152(%rsp), %ymm8, %ymm8 -vpsrlw $2, %ymm8, %ymm8 -vpsubw %ymm6, %ymm8, %ymm8 -vpmullw %ymm14, %ymm8, %ymm8 -vpsllw $1, %ymm11, %ymm2 -vpsubw %ymm2, %ymm9, %ymm2 -vpsllw $7, %ymm5, %ymm9 -vpsubw %ymm9, %ymm2, %ymm9 -vpsrlw $3, %ymm9, %ymm9 -vpsubw %ymm3, %ymm9, %ymm9 -vmovdqa 1408(%rsp), %ymm2 -vpsubw %ymm11, %ymm2, %ymm2 -vpmullw %ymm15, %ymm5, %ymm4 -vpsubw %ymm4, %ymm2, %ymm4 -vpmullw %ymm14, %ymm9, %ymm9 -vpsubw %ymm9, %ymm3, %ymm3 -vpmullw %ymm12, %ymm9, %ymm2 -vpaddw %ymm2, %ymm3, %ymm2 -vpmullw %ymm12, %ymm2, %ymm2 -vpsubw %ymm2, %ymm4, %ymm2 -vpmullw %ymm14, %ymm2, %ymm2 -vpsubw %ymm6, %ymm2, %ymm2 -vpsrlw $3, %ymm2, %ymm2 -vpsubw %ymm8, %ymm2, %ymm2 -vpsubw %ymm2, %ymm8, %ymm8 -vpsubw %ymm8, %ymm6, %ymm6 -vpmullw %ymm13, %ymm2, %ymm2 -vpsubw %ymm2, %ymm6, %ymm6 -vmovdqa 288(%rdi), %ymm4 -vmovdqa 544(%rdi), %ymm10 -vmovdqa 800(%rdi), %ymm7 -vpaddw %ymm11, %ymm4, %ymm11 -vpaddw %ymm6, %ymm10, %ymm6 -vpaddw %ymm3, %ymm7, %ymm3 -vpshufb shuf48_16(%rip), %ymm8, %ymm8 -vpand mask3_5_3_5(%rip), %ymm8, %ymm7 -vpand mask5_3_5_3(%rip), %ymm8, %ymm8 -vpermq $206, %ymm7, %ymm7 -vpand mask_keephigh(%rip), %ymm7, %ymm10 -vpor %ymm10, %ymm8, %ymm8 -vmovdqa 32(%rdi), %ymm10 -vpaddw 1920(%rsp), %ymm10, %ymm10 -vpaddw %ymm8, %ymm10, %ymm10 -vmovdqa %ymm10, 32(%rdi) -vmovdqa %xmm7, 1920(%rsp) -vpshufb shuf48_16(%rip), %ymm9, %ymm9 -vpand mask3_5_3_5(%rip), %ymm9, %ymm7 -vpand mask5_3_5_3(%rip), %ymm9, %ymm9 -vpermq $206, %ymm7, %ymm7 -vpand mask_keephigh(%rip), %ymm7, %ymm10 -vpor %ymm10, %ymm9, %ymm9 -vpaddw 2176(%rsp), %ymm11, %ymm11 -vpaddw %ymm9, %ymm11, %ymm11 -vmovdqa %xmm7, 2176(%rsp) -vpshufb shuf48_16(%rip), %ymm2, %ymm2 -vpand mask3_5_3_5(%rip), %ymm2, %ymm7 -vpand mask5_3_5_3(%rip), %ymm2, %ymm2 -vpermq $206, %ymm7, %ymm7 -vpand mask_keephigh(%rip), %ymm7, %ymm10 -vpor %ymm10, %ymm2, %ymm2 -vpaddw 2432(%rsp), %ymm6, %ymm6 -vpaddw %ymm2, %ymm6, %ymm6 -vmovdqa %xmm7, 2432(%rsp) -vpshufb shuf48_16(%rip), %ymm5, %ymm5 -vpand mask3_5_3_5(%rip), %ymm5, %ymm7 -vpand mask5_3_5_3(%rip), %ymm5, %ymm5 -vpermq $206, %ymm7, %ymm7 -vpand mask_keephigh(%rip), %ymm7, %ymm10 -vpor %ymm10, %ymm5, %ymm5 -vpaddw 2688(%rsp), %ymm3, %ymm3 -vpaddw %ymm5, %ymm3, %ymm3 -vmovdqa %xmm7, 2688(%rsp) -vmovdqa %ymm11, 288(%rdi) -vmovdqa %ymm6, 544(%rdi) -vmovdqa %ymm3, 800(%rdi) -vmovdqa 160(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm2 -vpunpckhwd const0(%rip), %ymm5, %ymm9 -vpslld $1, %ymm2, %ymm2 -vpslld $1, %ymm9, %ymm9 -vmovdqa 416(%rsp), %ymm8 -vpunpcklwd const0(%rip), %ymm8, %ymm3 -vpunpckhwd const0(%rip), %ymm8, %ymm8 -vmovdqa 672(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm3, %ymm7 -vpaddd %ymm6, %ymm8, %ymm10 -vpsubd %ymm2, %ymm7, %ymm7 -vpsubd %ymm9, %ymm10, %ymm10 -vpsubd %ymm11, %ymm3, %ymm11 -vpsubd %ymm6, %ymm8, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1696(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm8 -vpunpckhwd const0(%rip), %ymm11, %ymm3 -vpslld $1, %ymm8, %ymm8 -vpslld $1, %ymm3, %ymm3 -vpsubd %ymm8, %ymm7, %ymm7 -vpsubd %ymm3, %ymm10, %ymm10 -vpsrld $1, %ymm7, %ymm7 -vpsrld $1, %ymm10, %ymm10 -vpand mask32_to_16(%rip), %ymm7, %ymm7 -vpand mask32_to_16(%rip), %ymm10, %ymm10 -vpackusdw %ymm10, %ymm7, %ymm10 -vmovdqa 928(%rsp), %ymm7 -vpaddw 1184(%rsp), %ymm7, %ymm3 -vpsubw 1184(%rsp), %ymm7, %ymm7 -vpsrlw $2, %ymm7, %ymm7 -vpsubw %ymm6, %ymm7, %ymm7 -vpmullw %ymm14, %ymm7, %ymm7 -vpsllw $1, %ymm5, %ymm8 -vpsubw %ymm8, %ymm3, %ymm8 -vpsllw $7, %ymm11, %ymm3 -vpsubw %ymm3, %ymm8, %ymm3 -vpsrlw $3, %ymm3, %ymm3 -vpsubw %ymm10, %ymm3, %ymm3 -vmovdqa 1440(%rsp), %ymm8 -vpsubw %ymm5, %ymm8, %ymm8 -vpmullw %ymm15, %ymm11, %ymm9 -vpsubw %ymm9, %ymm8, %ymm9 -vpmullw %ymm14, %ymm3, %ymm3 -vpsubw %ymm3, %ymm10, %ymm10 -vpmullw %ymm12, %ymm3, %ymm8 -vpaddw %ymm8, %ymm10, %ymm8 -vpmullw %ymm12, %ymm8, %ymm8 -vpsubw %ymm8, %ymm9, %ymm8 -vpmullw %ymm14, %ymm8, %ymm8 -vpsubw %ymm6, %ymm8, %ymm8 -vpsrlw $3, %ymm8, %ymm8 -vpsubw %ymm7, %ymm8, %ymm8 -vpsubw %ymm8, %ymm7, %ymm7 -vpsubw %ymm7, %ymm6, %ymm6 -vpmullw %ymm13, %ymm8, %ymm8 -vpsubw %ymm8, %ymm6, %ymm6 -vmovdqa 352(%rdi), %ymm9 -vmovdqa 608(%rdi), %ymm2 -vmovdqa 864(%rdi), %ymm4 -vpaddw %ymm5, %ymm9, %ymm5 -vpaddw %ymm6, %ymm2, %ymm6 -vpaddw %ymm10, %ymm4, %ymm10 -vpshufb shuf48_16(%rip), %ymm7, %ymm7 -vpand mask3_5_3_5(%rip), %ymm7, %ymm4 -vpand mask5_3_5_3(%rip), %ymm7, %ymm7 -vpermq $206, %ymm4, %ymm4 -vpand mask_keephigh(%rip), %ymm4, %ymm2 -vpor %ymm2, %ymm7, %ymm7 -vmovdqa 96(%rdi), %ymm2 -vpaddw 1952(%rsp), %ymm2, %ymm2 -vpaddw %ymm7, %ymm2, %ymm2 -vmovdqa %ymm2, 96(%rdi) -vmovdqa %xmm4, 1952(%rsp) -vpshufb shuf48_16(%rip), %ymm3, %ymm3 -vpand mask3_5_3_5(%rip), %ymm3, %ymm4 -vpand mask5_3_5_3(%rip), %ymm3, %ymm3 -vpermq $206, %ymm4, %ymm4 -vpand mask_keephigh(%rip), %ymm4, %ymm2 -vpor %ymm2, %ymm3, %ymm3 -vpaddw 2208(%rsp), %ymm5, %ymm5 -vpaddw %ymm3, %ymm5, %ymm5 -vmovdqa %xmm4, 2208(%rsp) -vpshufb shuf48_16(%rip), %ymm8, %ymm8 -vpand mask3_5_3_5(%rip), %ymm8, %ymm4 -vpand mask5_3_5_3(%rip), %ymm8, %ymm8 -vpermq $206, %ymm4, %ymm4 -vpand mask_keephigh(%rip), %ymm4, %ymm2 -vpor %ymm2, %ymm8, %ymm8 -vpaddw 2464(%rsp), %ymm6, %ymm6 -vpaddw %ymm8, %ymm6, %ymm6 -vmovdqa %xmm4, 2464(%rsp) -vpshufb shuf48_16(%rip), %ymm11, %ymm11 -vpand mask3_5_3_5(%rip), %ymm11, %ymm4 -vpand mask5_3_5_3(%rip), %ymm11, %ymm11 -vpermq $206, %ymm4, %ymm4 -vpand mask_keephigh(%rip), %ymm4, %ymm2 -vpor %ymm2, %ymm11, %ymm11 -vpaddw 2720(%rsp), %ymm10, %ymm10 -vpaddw %ymm11, %ymm10, %ymm10 -vmovdqa %xmm4, 2720(%rsp) -vmovdqa %ymm5, 352(%rdi) -vmovdqa %ymm6, 608(%rdi) -vmovdqa %ymm10, 864(%rdi) -vmovdqa 192(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm8 -vpunpckhwd const0(%rip), %ymm11, %ymm3 -vpslld $1, %ymm8, %ymm8 -vpslld $1, %ymm3, %ymm3 -vmovdqa 448(%rsp), %ymm7 -vpunpcklwd const0(%rip), %ymm7, %ymm10 -vpunpckhwd const0(%rip), %ymm7, %ymm7 -vmovdqa 704(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm10, %ymm4 -vpaddd %ymm6, %ymm7, %ymm2 -vpsubd %ymm8, %ymm4, %ymm4 -vpsubd %ymm3, %ymm2, %ymm2 -vpsubd %ymm5, %ymm10, %ymm5 -vpsubd %ymm6, %ymm7, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1728(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm7 -vpunpckhwd const0(%rip), %ymm5, %ymm10 -vpslld $1, %ymm7, %ymm7 -vpslld $1, %ymm10, %ymm10 -vpsubd %ymm7, %ymm4, %ymm4 -vpsubd %ymm10, %ymm2, %ymm2 -vpsrld $1, %ymm4, %ymm4 -vpsrld $1, %ymm2, %ymm2 -vpand mask32_to_16(%rip), %ymm4, %ymm4 -vpand mask32_to_16(%rip), %ymm2, %ymm2 -vpackusdw %ymm2, %ymm4, %ymm2 -vmovdqa 960(%rsp), %ymm4 -vpaddw 1216(%rsp), %ymm4, %ymm10 -vpsubw 1216(%rsp), %ymm4, %ymm4 -vpsrlw $2, %ymm4, %ymm4 -vpsubw %ymm6, %ymm4, %ymm4 -vpmullw %ymm14, %ymm4, %ymm4 -vpsllw $1, %ymm11, %ymm7 -vpsubw %ymm7, %ymm10, %ymm7 -vpsllw $7, %ymm5, %ymm10 -vpsubw %ymm10, %ymm7, %ymm10 -vpsrlw $3, %ymm10, %ymm10 -vpsubw %ymm2, %ymm10, %ymm10 -vmovdqa 1472(%rsp), %ymm7 -vpsubw %ymm11, %ymm7, %ymm7 -vpmullw %ymm15, %ymm5, %ymm3 -vpsubw %ymm3, %ymm7, %ymm3 -vpmullw %ymm14, %ymm10, %ymm10 -vpsubw %ymm10, %ymm2, %ymm2 -vpmullw %ymm12, %ymm10, %ymm7 -vpaddw %ymm7, %ymm2, %ymm7 -vpmullw %ymm12, %ymm7, %ymm7 -vpsubw %ymm7, %ymm3, %ymm7 -vpmullw %ymm14, %ymm7, %ymm7 -vpsubw %ymm6, %ymm7, %ymm7 -vpsrlw $3, %ymm7, %ymm7 -vpsubw %ymm4, %ymm7, %ymm7 -vpsubw %ymm7, %ymm4, %ymm4 -vpsubw %ymm4, %ymm6, %ymm6 -vpmullw %ymm13, %ymm7, %ymm7 -vpsubw %ymm7, %ymm6, %ymm6 -vmovdqa 416(%rdi), %ymm3 -vmovdqa 672(%rdi), %ymm8 -vmovdqa 928(%rdi), %ymm9 -vpaddw %ymm11, %ymm3, %ymm11 -vpaddw %ymm6, %ymm8, %ymm6 -vpaddw %ymm2, %ymm9, %ymm2 -vpshufb shuf48_16(%rip), %ymm4, %ymm4 -vpand mask3_5_3_5(%rip), %ymm4, %ymm9 -vpand mask5_3_5_3(%rip), %ymm4, %ymm4 -vpermq $206, %ymm9, %ymm9 -vpand mask_keephigh(%rip), %ymm9, %ymm8 -vpor %ymm8, %ymm4, %ymm4 -vmovdqa 160(%rdi), %ymm8 -vpaddw 1984(%rsp), %ymm8, %ymm8 -vpaddw %ymm4, %ymm8, %ymm8 -vmovdqa %ymm8, 160(%rdi) -vmovdqa %xmm9, 1984(%rsp) -vpshufb shuf48_16(%rip), %ymm10, %ymm10 -vpand mask3_5_3_5(%rip), %ymm10, %ymm9 -vpand mask5_3_5_3(%rip), %ymm10, %ymm10 -vpermq $206, %ymm9, %ymm9 -vpand mask_keephigh(%rip), %ymm9, %ymm8 -vpor %ymm8, %ymm10, %ymm10 -vpaddw 2240(%rsp), %ymm11, %ymm11 -vpaddw %ymm10, %ymm11, %ymm11 -vmovdqa %xmm9, 2240(%rsp) -vpshufb shuf48_16(%rip), %ymm7, %ymm7 -vpand mask3_5_3_5(%rip), %ymm7, %ymm9 -vpand mask5_3_5_3(%rip), %ymm7, %ymm7 -vpermq $206, %ymm9, %ymm9 -vpand mask_keephigh(%rip), %ymm9, %ymm8 -vpor %ymm8, %ymm7, %ymm7 -vpaddw 2496(%rsp), %ymm6, %ymm6 -vpaddw %ymm7, %ymm6, %ymm6 -vmovdqa %xmm9, 2496(%rsp) -vpshufb shuf48_16(%rip), %ymm5, %ymm5 -vpand mask3_5_3_5(%rip), %ymm5, %ymm9 -vpand mask5_3_5_3(%rip), %ymm5, %ymm5 -vpermq $206, %ymm9, %ymm9 -vpand mask_keephigh(%rip), %ymm9, %ymm8 -vpor %ymm8, %ymm5, %ymm5 -vpaddw 2752(%rsp), %ymm2, %ymm2 -vpaddw %ymm5, %ymm2, %ymm2 -vmovdqa %xmm9, 2752(%rsp) -vmovdqa %ymm11, 416(%rdi) -vmovdqa %ymm6, 672(%rdi) -vmovdqa %ymm2, 928(%rdi) -vmovdqa 224(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm7 -vpunpckhwd const0(%rip), %ymm5, %ymm10 -vpslld $1, %ymm7, %ymm7 -vpslld $1, %ymm10, %ymm10 -vmovdqa 480(%rsp), %ymm4 -vpunpcklwd const0(%rip), %ymm4, %ymm2 -vpunpckhwd const0(%rip), %ymm4, %ymm4 -vmovdqa 736(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm2, %ymm9 -vpaddd %ymm6, %ymm4, %ymm8 -vpsubd %ymm7, %ymm9, %ymm9 -vpsubd %ymm10, %ymm8, %ymm8 -vpsubd %ymm11, %ymm2, %ymm11 -vpsubd %ymm6, %ymm4, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1760(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm4 -vpunpckhwd const0(%rip), %ymm11, %ymm2 -vpslld $1, %ymm4, %ymm4 -vpslld $1, %ymm2, %ymm2 -vpsubd %ymm4, %ymm9, %ymm9 -vpsubd %ymm2, %ymm8, %ymm8 -vpsrld $1, %ymm9, %ymm9 -vpsrld $1, %ymm8, %ymm8 -vpand mask32_to_16(%rip), %ymm9, %ymm9 -vpand mask32_to_16(%rip), %ymm8, %ymm8 -vpackusdw %ymm8, %ymm9, %ymm8 -vmovdqa 992(%rsp), %ymm9 -vpaddw 1248(%rsp), %ymm9, %ymm2 -vpsubw 1248(%rsp), %ymm9, %ymm9 -vpsrlw $2, %ymm9, %ymm9 -vpsubw %ymm6, %ymm9, %ymm9 -vpmullw %ymm14, %ymm9, %ymm9 -vpsllw $1, %ymm5, %ymm4 -vpsubw %ymm4, %ymm2, %ymm4 -vpsllw $7, %ymm11, %ymm2 -vpsubw %ymm2, %ymm4, %ymm2 -vpsrlw $3, %ymm2, %ymm2 -vpsubw %ymm8, %ymm2, %ymm2 -vmovdqa 1504(%rsp), %ymm4 -vpsubw %ymm5, %ymm4, %ymm4 -vpmullw %ymm15, %ymm11, %ymm10 -vpsubw %ymm10, %ymm4, %ymm10 -vpmullw %ymm14, %ymm2, %ymm2 -vpsubw %ymm2, %ymm8, %ymm8 -vpmullw %ymm12, %ymm2, %ymm4 -vpaddw %ymm4, %ymm8, %ymm4 -vpmullw %ymm12, %ymm4, %ymm4 -vpsubw %ymm4, %ymm10, %ymm4 -vpmullw %ymm14, %ymm4, %ymm4 -vpsubw %ymm6, %ymm4, %ymm4 -vpsrlw $3, %ymm4, %ymm4 -vpsubw %ymm9, %ymm4, %ymm4 -vpsubw %ymm4, %ymm9, %ymm9 -vpsubw %ymm9, %ymm6, %ymm6 -vpmullw %ymm13, %ymm4, %ymm4 -vpsubw %ymm4, %ymm6, %ymm6 -vextracti128 $1, %ymm8, %xmm10 -vpshufb shufmin5_mask3(%rip), %ymm10, %ymm10 -vmovdqa %ymm10, 2816(%rsp) -vextracti128 $1, %ymm9, %xmm10 -vpshufb shufmin5_mask3(%rip), %ymm10, %ymm10 -vmovdqa %ymm10, 2848(%rsp) -vextracti128 $1, %ymm2, %xmm10 -vpshufb shufmin5_mask3(%rip), %ymm10, %ymm10 -vmovdqa %ymm10, 2880(%rsp) -vmovdqa 480(%rdi), %ymm10 -vmovdqa 736(%rdi), %ymm7 -vmovdqa 992(%rdi), %ymm3 -vpaddw %ymm5, %ymm10, %ymm5 -vpaddw %ymm6, %ymm7, %ymm6 -vpaddw %ymm8, %ymm3, %ymm8 -vpshufb shuf48_16(%rip), %ymm9, %ymm9 -vpand mask3_5_3_5(%rip), %ymm9, %ymm3 -vpand mask5_3_5_3(%rip), %ymm9, %ymm9 -vpermq $206, %ymm3, %ymm3 -vpand mask_keephigh(%rip), %ymm3, %ymm7 -vpor %ymm7, %ymm9, %ymm9 -vmovdqa 224(%rdi), %ymm7 -vpaddw 2016(%rsp), %ymm7, %ymm7 -vpaddw %ymm9, %ymm7, %ymm7 -vmovdqa %ymm7, 224(%rdi) -vextracti128 $1, %ymm7, %xmm7 -vpshufb shufmin5_mask3(%rip), %ymm7, %ymm7 -vmovdqa %xmm7, 1792(%rsp) -vmovdqa %xmm3, 2016(%rsp) -vpshufb shuf48_16(%rip), %ymm2, %ymm2 -vpand mask3_5_3_5(%rip), %ymm2, %ymm3 -vpand mask5_3_5_3(%rip), %ymm2, %ymm2 -vpermq $206, %ymm3, %ymm3 -vpand mask_keephigh(%rip), %ymm3, %ymm7 -vpor %ymm7, %ymm2, %ymm2 -vpaddw 2272(%rsp), %ymm5, %ymm5 -vpaddw %ymm2, %ymm5, %ymm5 -vmovdqa %xmm3, 2272(%rsp) -vpshufb shuf48_16(%rip), %ymm4, %ymm4 -vpand mask3_5_3_5(%rip), %ymm4, %ymm3 -vpand mask5_3_5_3(%rip), %ymm4, %ymm4 -vpermq $206, %ymm3, %ymm3 -vpand mask_keephigh(%rip), %ymm3, %ymm7 -vpor %ymm7, %ymm4, %ymm4 -vpaddw 2528(%rsp), %ymm6, %ymm6 -vpaddw %ymm4, %ymm6, %ymm6 -vmovdqa %xmm3, 2528(%rsp) -vpshufb shuf48_16(%rip), %ymm11, %ymm11 -vpand mask3_5_3_5(%rip), %ymm11, %ymm3 -vpand mask5_3_5_3(%rip), %ymm11, %ymm11 -vpermq $206, %ymm3, %ymm3 -vpand mask_keephigh(%rip), %ymm3, %ymm7 -vpor %ymm7, %ymm11, %ymm11 -vpaddw 2784(%rsp), %ymm8, %ymm8 -vpaddw %ymm11, %ymm8, %ymm8 -vmovdqa %xmm3, 2784(%rsp) -vmovdqa %ymm5, 480(%rdi) -vmovdqa %ymm6, 736(%rdi) -vmovdqa %ymm8, 992(%rdi) -vmovdqa 0(%rdi), %ymm11 -vpaddw 1888(%rsp), %ymm11, %ymm11 -vpaddw 2816(%rsp), %ymm11, %ymm11 -vmovdqa %ymm11, 0(%rdi) -vmovdqa 256(%rdi), %ymm11 -vpaddw 2528(%rsp), %ymm11, %ymm11 -vpaddw 2848(%rsp), %ymm11, %ymm11 -vmovdqa %ymm11, 256(%rdi) -vmovdqa 512(%rdi), %ymm11 -vpaddw 2784(%rsp), %ymm11, %ymm11 -vpaddw 2880(%rsp), %ymm11, %ymm11 -vmovdqa %ymm11, 512(%rdi) -vmovdqa 64(%rdi), %ymm11 -vpaddw 2048(%rsp), %ymm11, %ymm11 -vpaddw 1920(%rsp), %ymm11, %ymm11 -vmovdqa %ymm11, 64(%rdi) -vmovdqa 320(%rdi), %ymm11 -vpaddw 2304(%rsp), %ymm11, %ymm11 -vmovdqa %ymm11, 320(%rdi) -vmovdqa 576(%rdi), %ymm11 -vpaddw 2560(%rsp), %ymm11, %ymm11 -vmovdqa %ymm11, 576(%rdi) -vmovdqa 128(%rdi), %ymm11 -vpaddw 2080(%rsp), %ymm11, %ymm11 -vpaddw 1952(%rsp), %ymm11, %ymm11 -vmovdqa %ymm11, 128(%rdi) -vmovdqa 384(%rdi), %ymm11 -vpaddw 2336(%rsp), %ymm11, %ymm11 -vmovdqa %ymm11, 384(%rdi) -vmovdqa 640(%rdi), %ymm11 -vpaddw 2592(%rsp), %ymm11, %ymm11 -vmovdqa %ymm11, 640(%rdi) -vmovdqa 192(%rdi), %ymm11 -vpaddw 2112(%rsp), %ymm11, %ymm11 -vpaddw 1984(%rsp), %ymm11, %ymm11 -vmovdqa %ymm11, 192(%rdi) -vmovdqa 448(%rdi), %ymm11 -vpaddw 2368(%rsp), %ymm11, %ymm11 -vmovdqa %ymm11, 448(%rdi) -vmovdqa 704(%rdi), %ymm11 -vpaddw 2624(%rsp), %ymm11, %ymm11 -vmovdqa %ymm11, 704(%rdi) -vmovdqa 256(%rdi), %ymm11 -vpaddw 2144(%rsp), %ymm11, %ymm11 -vmovdqa %ymm11, 256(%rdi) -vmovdqa 512(%rdi), %ymm11 -vpaddw 2400(%rsp), %ymm11, %ymm11 -vmovdqa %ymm11, 512(%rdi) -vmovdqa 768(%rdi), %ymm11 -vpaddw 2656(%rsp), %ymm11, %ymm11 -vmovdqa %ymm11, 768(%rdi) -vmovdqa 320(%rdi), %ymm11 -vpaddw 2176(%rsp), %ymm11, %ymm11 -vmovdqa %ymm11, 320(%rdi) -vmovdqa 576(%rdi), %ymm11 -vpaddw 2432(%rsp), %ymm11, %ymm11 -vmovdqa %ymm11, 576(%rdi) -vmovdqa 832(%rdi), %ymm11 -vpaddw 2688(%rsp), %ymm11, %ymm11 -vmovdqa %ymm11, 832(%rdi) -vmovdqa 384(%rdi), %ymm11 -vpaddw 2208(%rsp), %ymm11, %ymm11 -vmovdqa %ymm11, 384(%rdi) -vmovdqa 640(%rdi), %ymm11 -vpaddw 2464(%rsp), %ymm11, %ymm11 -vmovdqa %ymm11, 640(%rdi) -vmovdqa 896(%rdi), %ymm11 -vpaddw 2720(%rsp), %ymm11, %ymm11 -vmovdqa %ymm11, 896(%rdi) -vmovdqa 448(%rdi), %ymm11 -vpaddw 2240(%rsp), %ymm11, %ymm11 -vmovdqa %ymm11, 448(%rdi) -vmovdqa 704(%rdi), %ymm11 -vpaddw 2496(%rsp), %ymm11, %ymm11 -vmovdqa %ymm11, 704(%rdi) -vmovdqa 960(%rdi), %ymm11 -vpaddw 2752(%rsp), %ymm11, %ymm11 -vmovdqa %ymm11, 960(%rdi) -mov %r8, %rsp -pop %r12 -ret diff --git a/src/kem/ntru/ntruhps2048509/avx2/poly_rq_to_s3.s b/src/kem/ntru/ntruhps2048509/avx2/poly_rq_to_s3.s deleted file mode 100644 index 0ee58c97..00000000 --- a/src/kem/ntru/ntruhps2048509/avx2/poly_rq_to_s3.s +++ /dev/null @@ -1,840 +0,0 @@ -.data -.p2align 5 -mask_modq: -.word 2047 -.word 2047 -.word 2047 -.word 2047 -.word 2047 -.word 2047 -.word 2047 -.word 2047 -.word 2047 -.word 2047 -.word 2047 -.word 2047 -.word 2047 -.word 2047 -.word 2047 -.word 2047 -mask_ff: -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -mask_f: -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -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 -.text -.global PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_to_S3 -.global _PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_to_S3 -PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_to_S3: -_PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_to_S3: -vmovdqa mask_modq(%rip), %ymm6 -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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %ymm1, %ymm14 -vpxor %ymm14, %ymm0, %ymm1 -vmovdqa %ymm1, 992(%rdi) -ret diff --git a/src/kem/ntru/ntruhps2048509/avx2/poly_s3_inv.c b/src/kem/ntru/ntruhps2048509/avx2/poly_s3_inv.c deleted file mode 100644 index 774b356e..00000000 --- a/src/kem/ntru/ntruhps2048509/avx2/poly_s3_inv.c +++ /dev/null @@ -1,463 +0,0 @@ -#include "poly.h" - -#include - -typedef signed char small; - -#define p 508 -#define ppad 512 -#define numvec 2 - -typedef __m256i vec256; - -/* -This code stores 512-coeff poly as vec256[2]. -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_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 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(2147483647, -1, 2147483647, -1, 2147483647, -1, -1, -1); - F1[0] = _mm256_set1_epi32(0); - F1[1] = _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); - - 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); - - 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, 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, 1, swapvec); - vec256_swap(V1, R1, 1, swapvec); - vec256_eliminate(V0, V1, R0, R1, 1, c0vec, c1vec); - } - - for (loop = 503; 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, 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, 2, swapvec); - vec256_swap(V1, R1, 2, swapvec); - vec256_eliminate(V0, V1, R0, R1, 2, 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, 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, 2, swapvec); - vec256_swap(V1, R1, 2, swapvec); - vec256_eliminate(V0, V1, R0, R1, 2, 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_NTRUHPS2048509_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/src/kem/ntru/ntruhps2048509/avx2/sample.c b/src/kem/ntru/ntruhps2048509/avx2/sample.c deleted file mode 100644 index 07d5e8f8..00000000 --- a/src/kem/ntru/ntruhps2048509/avx2/sample.c +++ /dev/null @@ -1,45 +0,0 @@ -#include "sample.h" - -void PQCLEAN_NTRUHPS2048509_AVX2_sample_fg(poly *f, poly *g, const unsigned char uniformbytes[NTRU_SAMPLE_FG_BYTES]) { - - PQCLEAN_NTRUHPS2048509_AVX2_sample_iid(f, uniformbytes); - PQCLEAN_NTRUHPS2048509_AVX2_sample_fixed_type(g, uniformbytes + NTRU_SAMPLE_IID_BYTES); -} - -void PQCLEAN_NTRUHPS2048509_AVX2_sample_rm(poly *r, poly *m, const unsigned char uniformbytes[NTRU_SAMPLE_RM_BYTES]) { - - PQCLEAN_NTRUHPS2048509_AVX2_sample_iid(r, uniformbytes); - PQCLEAN_NTRUHPS2048509_AVX2_sample_fixed_type(m, uniformbytes + NTRU_SAMPLE_IID_BYTES); -} - - -void PQCLEAN_NTRUHPS2048509_AVX2_sample_fixed_type(poly *r, const unsigned char u[NTRU_SAMPLE_FT_BYTES]) { - // Assumes NTRU_SAMPLE_FT_BYTES = ceil(30*(n-1)/8) - - int32_t s[NTRU_N - 1]; - int i; - - // Use 30 bits of u per word - for (i = 0; i < (NTRU_N - 1) / 4; i++) { - s[4 * i + 0] = (u[15 * i + 0] << 2) + (u[15 * i + 1] << 10) + (u[15 * i + 2] << 18) + ((uint32_t) u[15 * i + 3] << 26); - s[4 * i + 1] = ((u[15 * i + 3] & 0xc0) >> 4) + (u[15 * i + 4] << 4) + (u[15 * i + 5] << 12) + (u[15 * i + 6] << 20) + ((uint32_t) u[15 * i + 7] << 28); - s[4 * i + 2] = ((u[15 * i + 7] & 0xf0) >> 2) + (u[15 * i + 8] << 6) + (u[15 * i + 9] << 14) + (u[15 * i + 10] << 22) + ((uint32_t) u[15 * i + 11] << 30); - s[4 * i + 3] = (u[15 * i + 11] & 0xfc) + (u[15 * i + 12] << 8) + (u[15 * i + 13] << 16) + ((uint32_t) u[15 * i + 14] << 24); - } - - for (i = 0; i < NTRU_WEIGHT / 2; i++) { - s[i] |= 1; - } - - for (i = NTRU_WEIGHT / 2; i < NTRU_WEIGHT; i++) { - s[i] |= 2; - } - - PQCLEAN_NTRUHPS2048509_AVX2_crypto_sort_int32(s, NTRU_N - 1); - - for (i = 0; i < NTRU_N - 1; i++) { - r->coeffs[i] = ((uint16_t) (s[i] & 3)); - } - - r->coeffs[NTRU_N - 1] = 0; -} diff --git a/src/kem/ntru/ntruhps2048509/avx2/sample.h b/src/kem/ntru/ntruhps2048509/avx2/sample.h deleted file mode 100644 index 5c29211e..00000000 --- a/src/kem/ntru/ntruhps2048509/avx2/sample.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef SAMPLE_H -#define SAMPLE_H - -#include "params.h" -#include "poly.h" - -#include "crypto_sort_int32.h" - -void PQCLEAN_NTRUHPS2048509_AVX2_sample_fg(poly *f, poly *g, const unsigned char uniformbytes[NTRU_SAMPLE_FG_BYTES]); -void PQCLEAN_NTRUHPS2048509_AVX2_sample_rm(poly *r, poly *m, const unsigned char uniformbytes[NTRU_SAMPLE_RM_BYTES]); - -void PQCLEAN_NTRUHPS2048509_AVX2_sample_iid(poly *r, const unsigned char uniformbytes[NTRU_SAMPLE_IID_BYTES]); - -void PQCLEAN_NTRUHPS2048509_AVX2_sample_fixed_type(poly *r, const unsigned char uniformbytes[NTRU_SAMPLE_FT_BYTES]); - - -#endif diff --git a/src/kem/ntru/ntruhps2048509/avx2/sample_iid.c b/src/kem/ntru/ntruhps2048509/avx2/sample_iid.c deleted file mode 100644 index 49650e7d..00000000 --- a/src/kem/ntru/ntruhps2048509/avx2/sample_iid.c +++ /dev/null @@ -1,21 +0,0 @@ -#include - -#include "sample.h" - -extern void PQCLEAN_NTRUHPS2048509_AVX2_vec32_sample_iid(poly *r, const unsigned char uniformbytes[PAD32(NTRU_SAMPLE_IID_BYTES)]); - -void PQCLEAN_NTRUHPS2048509_AVX2_sample_iid(poly *r, const unsigned char uniformbytes[NTRU_SAMPLE_IID_BYTES]) { - int i; - union { /* align to 32 byte boundary for vmovdqa */ - unsigned char b[PAD32(NTRU_SAMPLE_IID_BYTES)]; - __m256i b_x32[PAD32(NTRU_SAMPLE_IID_BYTES) / 32]; - } buffer; - - for (i = 0; i < NTRU_SAMPLE_IID_BYTES; i++) { - buffer.b[i] = uniformbytes[i]; - } - for (i = NTRU_SAMPLE_IID_BYTES; i < PAD32(NTRU_SAMPLE_IID_BYTES); i++) { - buffer.b[i] = 0; - } - PQCLEAN_NTRUHPS2048509_AVX2_vec32_sample_iid(r, buffer.b); -} diff --git a/src/kem/ntru/ntruhps2048509/avx2/square_126_509_shufbytes.s b/src/kem/ntru/ntruhps2048509/avx2/square_126_509_shufbytes.s deleted file mode 100644 index 0b5240f7..00000000 --- a/src/kem/ntru/ntruhps2048509/avx2/square_126_509_shufbytes.s +++ /dev/null @@ -1,2854 +0,0 @@ -.data -.p2align 5 -mask_0_1: -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 7 -.byte 6 -.byte 255 -.byte 6 -.byte 5 -.byte 4 -.byte 255 -.byte 4 -.byte 3 -.byte 255 -.byte 3 -.byte 2 -.byte 1 -.byte 255 - -mask_1_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_2_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x4008 -.word 0x200 -.word 0x8010 -.word 0x400 -.word 0x20 -.word 0x801 -.word 0x40 - -mask_3_1: -.byte 15 -.byte 14 -.byte 255 -.byte 14 -.byte 13 -.byte 255 -.byte 13 -.byte 12 -.byte 11 -.byte 255 -.byte 11 -.byte 10 -.byte 9 -.byte 255 -.byte 9 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_4_1: -.word 0x8010 -.word 0x400 -.word 0x20 -.word 0x801 -.word 0x40 -.word 0x1002 -.word 0x80 -.word 0x2004 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_5_1: -.byte 5 -.byte 255 -.byte 5 -.byte 4 -.byte 3 -.byte 255 -.byte 3 -.byte 2 -.byte 1 -.byte 255 -.byte 1 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 13 -.byte 255 -.byte 13 -.byte 12 -.byte 11 -.byte 255 -.byte 11 -.byte 10 -.byte 9 -.byte 255 -.byte 9 -.byte 8 -.byte 255 -.byte 8 -.byte 7 - -mask_6_1: -.word 0x20 -.word 0x801 -.word 0x40 -.word 0x1002 -.word 0x80 -.word 0x2004 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_7_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2004 -.word 0x100 -.word 0x4008 -.word 0x200 -.word 0x8010 -.word 0x400 -.word 0x20 -.word 0x801 - -mask_8_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_9_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_10_1: -.byte 255 -.byte 11 -.byte 10 -.byte 255 -.byte 10 -.byte 9 -.byte 8 -.byte 255 -.byte 8 -.byte 7 -.byte 6 -.byte 255 -.byte 6 -.byte 5 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 14 -.byte 255 -.byte 14 -.byte 13 -.byte 255 - -mask_11_1: -.word 0x400 -.word 0x20 -.word 0x801 -.word 0x40 -.word 0x1002 -.word 0x80 -.word 0x2004 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_12_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8010 -.word 0x400 -.word 0x20 - -mask_13_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 3 -.byte 255 -.byte 3 -.byte 2 -.byte 1 -.byte 255 -.byte 1 -.byte 0 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_14_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4008 -.word 0x200 -.word 0x8010 -.word 0x400 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_15_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_16_1: -.byte 3 -.byte 2 -.byte 1 -.byte 255 -.byte 15 -.byte 0 -.byte 15 -.byte 14 -.byte 13 -.byte 255 -.byte 13 -.byte 12 -.byte 11 -.byte 255 -.byte 11 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_17_1: -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x801 -.word 0x40 -.word 0x1002 -.word 0x80 -.word 0x2004 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_18_1: -.word 0x1002 -.word 0x80 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_19_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_20_1: -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_21_1: -.byte 1 -.byte 0 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 9 -.byte 8 -.byte 255 -.byte 8 -.byte 7 -.byte 6 -.byte 255 -.byte 6 -.byte 5 -.byte 255 -.byte 5 -.byte 4 -.byte 3 -.byte 255 - -mask_22_1: -.word 0x8010 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x4008 -.word 0x200 -.word 0x8010 -.word 0x400 -.word 0x20 -.word 0x801 -.word 0x40 - -mask_23_1: -.byte 8 -.byte 255 -.byte 8 -.byte 7 -.byte 6 -.byte 255 -.byte 6 -.byte 5 -.byte 255 -.byte 5 -.byte 4 -.byte 3 -.byte 255 -.byte 3 -.byte 2 -.byte 1 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_24_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_25_1: -.word 0x40 -.word 0x1002 -.word 0x80 -.word 0x2004 -.word 0x100 -.word 0x4008 -.word 0x200 -.word 0x8010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_26_1: -.byte 255 -.byte 7 -.byte 6 -.byte 5 -.byte 255 -.byte 5 -.byte 4 -.byte 255 -.byte 4 -.byte 3 -.byte 2 -.byte 255 -.byte 2 -.byte 1 -.byte 0 -.byte 255 -.byte 255 -.byte 15 -.byte 0 -.byte 15 -.byte 14 -.byte 13 -.byte 255 -.byte 13 -.byte 12 -.byte 11 -.byte 255 -.byte 11 -.byte 10 -.byte 255 -.byte 10 -.byte 9 - -mask_27_1: -.word 0x200 -.word 0x8010 -.word 0x400 -.word 0x20 -.word 0x801 -.word 0x40 -.word 0x1002 -.word 0x80 -.word 0x2000 -.word 0x100 -.word 0x4008 -.word 0x200 -.word 0x8010 -.word 0x400 -.word 0x20 -.word 0x801 - -mask_28_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_29_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_30_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_31_1: -.byte 15 -.byte 14 -.byte 13 -.byte 255 -.byte 13 -.byte 12 -.byte 11 -.byte 255 -.byte 11 -.byte 10 -.byte 255 -.byte 10 -.byte 9 -.byte 8 -.byte 255 -.byte 8 -.byte 5 -.byte 255 -.byte 5 -.byte 4 -.byte 255 -.byte 4 -.byte 3 -.byte 2 -.byte 255 -.byte 2 -.byte 1 -.byte 0 -.byte 255 -.byte 0 -.byte 255 -.byte 255 - -mask_32_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x2004 -.word 0x100 -.word 0x4008 -.word 0x200 -.word 0x8010 -.word 0x400 -.word 0x0 - -mask_33_1: -.word 0x801 -.word 0x40 -.word 0x1002 -.word 0x80 -.word 0x2004 -.word 0x100 -.word 0x4008 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_34_1: -.byte 13 -.byte 12 -.byte 255 -.byte 12 -.byte 11 -.byte 10 -.byte 255 -.byte 10 -.byte 9 -.byte 255 -.byte 9 -.byte 8 -.byte 7 -.byte 255 -.byte 7 -.byte 6 -.byte 7 -.byte 6 -.byte 255 -.byte 6 -.byte 5 -.byte 255 -.byte 5 -.byte 4 -.byte 3 -.byte 255 -.byte 3 -.byte 2 -.byte 1 -.byte 255 -.byte 15 -.byte 255 - -mask_35_1: -.word 0x4008 -.word 0x200 -.word 0x8010 -.word 0x400 -.word 0x20 -.word 0x801 -.word 0x40 -.word 0x1002 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 - -mask_36_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8010 -.word 0x400 -.word 0x20 -.word 0x801 -.word 0x40 -.word 0x1002 -.word 0x80 -.word 0x0 - -mask_37_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 - -mask_38_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 - -mask_39_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 15 -.byte 14 -.byte 13 -.byte 12 -.byte 11 -.byte 10 -.byte 255 -.byte 10 -.byte 9 -.byte 255 -.byte 9 -.byte 8 -.byte 7 -.byte 255 -.byte 7 -.byte 6 -.byte 5 -.byte 255 -.byte 5 - -mask_40_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1002 -.word 0x80 -.word 0x2004 -.word 0x100 -.word 0x4008 -.word 0x200 -.word 0x8010 -.word 0x400 - -mask_41_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x100 -.word 0x4008 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_42_1: -.byte 4 -.byte 255 -.byte 4 -.byte 3 -.byte 2 -.byte 255 -.byte 2 -.byte 15 -.byte 0 -.byte 15 -.byte 14 -.byte 255 -.byte 14 -.byte 13 -.byte 12 -.byte 255 -.byte 255 -.byte 13 -.byte 12 -.byte 11 -.byte 255 -.byte 11 -.byte 10 -.byte 255 -.byte 10 -.byte 9 -.byte 8 -.byte 255 -.byte 8 -.byte 7 -.byte 6 -.byte 255 - -mask_43_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x400 -.word 0x20 -.word 0x801 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_44_1: -.word 0x20 -.word 0x801 -.word 0x40 -.word 0x2 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x8010 -.word 0x400 -.word 0x20 -.word 0x801 -.word 0x40 -.word 0x1002 -.word 0x80 - -mask_45_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_46_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_47_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 2 -.byte 255 -.byte 2 -.byte 15 -.byte 0 -.byte 15 -.byte 14 -.byte 255 -.byte 14 -.byte 13 -.byte 12 -.byte 255 -.byte 12 -.byte 11 -.byte 10 - -mask_48_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x2004 -.word 0x100 -.word 0x4008 -.word 0x200 -.word 0x8010 - -mask_49_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4008 -.word 0x200 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_50_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_51_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_52_1: -.byte 255 -.byte 10 -.byte 9 -.byte 255 -.byte 9 -.byte 8 -.byte 7 -.byte 255 -.byte 7 -.byte 6 -.byte 5 -.byte 255 -.byte 5 -.byte 4 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 15 -.byte 14 -.byte 13 -.byte 255 -.byte 13 -.byte 12 - -mask_53_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_54_1: -.word 0x400 -.word 0x20 -.word 0x801 -.word 0x40 -.word 0x1002 -.word 0x80 -.word 0x2004 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x801 -.word 0x40 -.word 0x1002 - -mask_55_1: -.byte 13 -.byte 255 -.byte 13 -.byte 12 -.byte 255 -.byte 12 -.byte 11 -.byte 10 -.byte 255 -.byte 10 -.byte 9 -.byte 8 -.byte 255 -.byte 8 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_56_1: -.word 0x80 -.word 0x2004 -.word 0x100 -.word 0x4008 -.word 0x200 -.word 0x8010 -.word 0x400 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_57_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 6 -.byte 5 -.byte 255 -.byte 5 -.byte 4 -.byte 3 -.byte 255 -.byte 3 -.byte 2 -.byte 255 -.byte 2 -.byte 1 -.byte 0 -.byte 255 -.byte 0 - -mask_58_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x801 -.word 0x40 -.word 0x1002 -.word 0x80 -.word 0x2004 -.word 0x100 -.word 0x4008 -.word 0x200 - -mask_59_1: -.byte 255 -.byte 5 -.byte 4 -.byte 3 -.byte 255 -.byte 3 -.byte 2 -.byte 255 -.byte 2 -.byte 15 -.byte 0 -.byte 15 -.byte 14 -.byte 13 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_60_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x200 -.word 0x8010 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_61_1: -.word 0x200 -.word 0x8010 -.word 0x400 -.word 0x20 -.word 0x1 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_62_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_63_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_64_1: -.byte 4 -.byte 3 -.byte 2 -.byte 255 -.byte 2 -.byte 1 -.byte 255 -.byte 1 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 12 -.byte 11 -.byte 10 -.byte 255 -.byte 10 -.byte 9 -.byte 8 -.byte 255 -.byte 8 -.byte 7 -.byte 255 -.byte 7 -.byte 6 -.byte 5 - -mask_65_1: -.word 0x1002 -.word 0x80 -.word 0x2004 -.word 0x100 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x801 -.word 0x40 -.word 0x1002 -.word 0x80 -.word 0x2004 -.word 0x100 -.word 0x4008 - -mask_66_1: -.byte 11 -.byte 10 -.byte 255 -.byte 10 -.byte 9 -.byte 8 -.byte 255 -.byte 8 -.byte 7 -.byte 255 -.byte 7 -.byte 6 -.byte 5 -.byte 255 -.byte 5 -.byte 4 -.byte 255 -.byte 2 -.byte 1 -.byte 255 -.byte 1 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_67_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x20 -.word 0x801 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_68_1: -.word 0x4008 -.word 0x200 -.word 0x8010 -.word 0x400 -.word 0x20 -.word 0x801 -.word 0x40 -.word 0x1002 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_69_1: -.byte 9 -.byte 255 -.byte 9 -.byte 8 -.byte 7 -.byte 255 -.byte 7 -.byte 6 -.byte 255 -.byte 6 -.byte 5 -.byte 4 -.byte 255 -.byte 4 -.byte 3 -.byte 2 -.byte 3 -.byte 255 -.byte 3 -.byte 2 -.byte 255 -.byte 2 -.byte 15 -.byte 0 -.byte 15 -.byte 14 -.byte 13 -.byte 255 -.byte 13 -.byte 12 -.byte 255 -.byte 12 - -mask_70_1: -.word 0x40 -.word 0x1002 -.word 0x80 -.word 0x2004 -.word 0x100 -.word 0x4008 -.word 0x200 -.word 0x8010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x1002 -.word 0x80 -.word 0x2004 -.word 0x100 - -mask_71_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x2004 -.word 0x100 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_72_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_73_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_74_1: -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 15 -.byte 14 -.byte 13 -.byte 255 -.byte 13 -.byte 12 -.byte 255 -.byte 12 -.byte 11 -.byte 10 -.byte 255 -.byte 8 -.byte 7 -.byte 255 -.byte 7 -.byte 6 -.byte 255 -.byte 6 -.byte 5 -.byte 4 -.byte 255 -.byte 4 -.byte 3 -.byte 2 -.byte 255 -.byte 2 -.byte 1 - -mask_75_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8010 -.word 0x400 -.word 0x20 -.word 0x801 -.word 0x40 -.word 0x1002 -.word 0x80 -.word 0x2004 - -mask_76_1: -.word 0x0 -.word 0x4000 -.word 0x200 -.word 0x8010 -.word 0x400 -.word 0x20 -.word 0x801 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_77_1: -.byte 255 -.byte 15 -.byte 14 -.byte 255 -.byte 14 -.byte 13 -.byte 12 -.byte 255 -.byte 12 -.byte 11 -.byte 255 -.byte 11 -.byte 10 -.byte 9 -.byte 255 -.byte 9 -.byte 10 -.byte 9 -.byte 8 -.byte 255 -.byte 8 -.byte 7 -.byte 255 -.byte 7 -.byte 6 -.byte 5 -.byte 255 -.byte 5 -.byte 4 -.byte 3 -.byte 255 -.byte 3 - -mask_78_1: -.word 0x800 -.word 0x40 -.word 0x1002 -.word 0x80 -.word 0x2004 -.word 0x100 -.word 0x4008 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_79_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1002 -.word 0x80 -.word 0x2004 -.word 0x100 -.word 0x4008 -.word 0x200 -.word 0x8010 -.word 0x400 - -mask_80_1: -.byte 255 -.byte 1 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_81_1: -.word 0x100 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_82_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 13 -.byte 12 -.byte 255 -.byte 12 -.byte 11 -.byte 255 -.byte 11 -.byte 10 -.byte 9 -.byte 255 -.byte 9 -.byte 8 -.byte 7 -.byte 255 - -mask_83_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x200 -.word 0x8010 -.word 0x400 -.word 0x20 -.word 0x801 -.word 0x40 -.word 0x1002 -.word 0x80 - -mask_84_1: -.byte 7 -.byte 6 -.byte 255 -.byte 6 -.byte 5 -.byte 4 -.byte 255 -.byte 4 -.byte 3 -.byte 2 -.byte 255 -.byte 2 -.byte 1 -.byte 255 -.byte 15 -.byte 14 -.byte 15 -.byte 255 -.byte 15 -.byte 14 -.byte 13 -.byte 255 -.byte 13 -.byte 12 -.byte 255 -.byte 12 -.byte 11 -.byte 10 -.byte 255 -.byte 10 -.byte 9 -.byte 255 - -mask_85_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4008 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_86_1: -.word 0x2004 -.word 0x100 -.word 0x4008 -.word 0x200 -.word 0x8010 -.word 0x400 -.word 0x20 -.word 0x0 -.word 0x40 -.word 0x1002 -.word 0x80 -.word 0x2004 -.word 0x100 -.word 0x4008 -.word 0x200 -.word 0x10 - -mask_87_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_88_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x801 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_89_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 5 -.byte 4 -.byte 255 -.byte 4 -.byte 3 -.byte 2 -.byte 255 -.byte 2 -.byte 1 -.byte 255 -.byte 15 -.byte 14 -.byte 255 -.byte 14 -.byte 13 - -mask_90_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x40 -.word 0x1002 - -mask_91_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x801 -.word 0x40 -.word 0x1002 -.word 0x80 -.word 0x2004 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_92_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 0 -.byte 255 -.byte 255 -.byte 255 - -mask_93_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x8 -.word 0x0 - -mask_94_1: -.byte 12 -.byte 255 -.byte 12 -.byte 11 -.byte 255 -.byte 11 -.byte 10 -.byte 9 -.byte 255 -.byte 9 -.byte 8 -.byte 7 -.byte 255 -.byte 7 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 15 - -mask_95_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 - -mask_96_1: -.word 0x80 -.word 0x2004 -.word 0x100 -.word 0x4008 -.word 0x200 -.word 0x8010 -.word 0x400 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x200 - -mask_97_1: -.byte 255 -.byte 3 -.byte 2 -.byte 1 -.byte 255 -.byte 1 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 11 -.byte 10 -.byte 9 -.byte 255 -.byte 9 -.byte 8 -.byte 7 -.byte 255 -.byte 7 -.byte 6 -.byte 255 -.byte 6 -.byte 5 -.byte 255 - -mask_98_1: -.word 0x100 -.word 0x4008 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_99_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x801 -.word 0x40 -.word 0x1002 -.word 0x80 -.word 0x2004 -.word 0x100 -.word 0x8 - -mask_100_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 14 -.byte 255 -.byte 14 -.byte 13 -.byte 12 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_101_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4008 -.word 0x200 -.word 0x8010 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_102_1: -.byte 9 -.byte 8 -.byte 255 -.byte 8 -.byte 7 -.byte 6 -.byte 255 -.byte 6 -.byte 5 -.byte 4 -.byte 255 -.byte 4 -.byte 3 -.byte 255 -.byte 3 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 14 -.byte 255 -.byte 14 -.byte 13 -.byte 12 -.byte 255 -.byte 12 -.byte 11 -.byte 255 -.byte 11 - -mask_103_1: -.word 0x2004 -.word 0x100 -.word 0x4008 -.word 0x200 -.word 0x8010 -.word 0x400 -.word 0x20 -.word 0x801 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_104_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x40 -.word 0x1002 -.word 0x80 -.word 0x2004 -.word 0x100 - -mask_105_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 1 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_106_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_107_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -.text -.global PQCLEAN_NTRUHPS2048509_AVX2_square_126_509 -.global _PQCLEAN_NTRUHPS2048509_AVX2_square_126_509 -PQCLEAN_NTRUHPS2048509_AVX2_square_126_509: -_PQCLEAN_NTRUHPS2048509_AVX2_square_126_509: -vmovdqa 0(%rsi), %ymm0 -vpshufb mask_0_1(%rip), %ymm0, %ymm4 -vpand mask_1_1(%rip), %ymm4, %ymm1 -vpand mask_2_1(%rip), %ymm4, %ymm2 -vpermq $78, %ymm0, %ymm7 -vpshufb mask_3_1(%rip), %ymm7, %ymm4 -vpand mask_4_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsrlq $63, %ymm0, %ymm4 -vpsllq $1, %ymm0, %ymm3 -vpermq $147, %ymm4, %ymm5 -vpxor %ymm3, %ymm5, %ymm5 -vpshufb mask_5_1(%rip), %ymm5, %ymm4 -vpand mask_6_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_7_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_8_1(%rip), %ymm7, %ymm4 -vpand mask_9_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsllq $1, %ymm5, %ymm6 -vpshufb mask_10_1(%rip), %ymm6, %ymm4 -vpand mask_11_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_12_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm7 -vpshufb mask_13_1(%rip), %ymm7, %ymm4 -vpand mask_14_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_15_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsrlq $62, %ymm5, %ymm4 -vpsllq $2, %ymm5, %ymm3 -vpermq $147, %ymm4, %ymm6 -vpxor %ymm3, %ymm6, %ymm6 -vpshufb mask_16_1(%rip), %ymm6, %ymm4 -vpand mask_17_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_18_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_19_1(%rip), %ymm6, %ymm4 -vpand mask_20_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm7 -vpshufb mask_21_1(%rip), %ymm7, %ymm4 -vpand mask_22_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpsllq $1, %ymm6, %ymm5 -vpshufb mask_23_1(%rip), %ymm5, %ymm4 -vpand mask_24_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_25_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_26_1(%rip), %ymm7, %ymm4 -vpand mask_27_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_28_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_29_1(%rip), %ymm7, %ymm4 -vpand mask_30_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsrlq $62, %ymm6, %ymm4 -vpsllq $2, %ymm6, %ymm3 -vpermq $147, %ymm4, %ymm5 -vpxor %ymm3, %ymm5, %ymm5 -vpshufb mask_31_1(%rip), %ymm5, %ymm4 -vpand mask_32_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_33_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_34_1(%rip), %ymm7, %ymm4 -vpand mask_35_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_36_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_37_1(%rip), %ymm7, %ymm4 -vpand mask_38_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsllq $1, %ymm5, %ymm6 -vpshufb mask_39_1(%rip), %ymm6, %ymm4 -vpand mask_40_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_41_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm7 -vpshufb mask_42_1(%rip), %ymm7, %ymm4 -vpand mask_43_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_44_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_45_1(%rip), %ymm7, %ymm4 -vpand mask_46_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsllq $2, %ymm5, %ymm6 -vpshufb mask_47_1(%rip), %ymm6, %ymm4 -vpand mask_48_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_49_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_50_1(%rip), %ymm6, %ymm4 -vpand mask_51_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm7 -vpshufb mask_52_1(%rip), %ymm7, %ymm4 -vpand mask_53_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_54_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vmovdqa 32(%rsi), %ymm0 -vpshufb mask_55_1(%rip), %ymm0, %ymm4 -vpand mask_56_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpermq $78, %ymm0, %ymm7 -vpshufb mask_57_1(%rip), %ymm7, %ymm4 -vpand mask_58_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpsllq $1, %ymm0, %ymm5 -vpshufb mask_59_1(%rip), %ymm5, %ymm4 -vpand mask_60_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_61_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_62_1(%rip), %ymm5, %ymm4 -vpand mask_63_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_64_1(%rip), %ymm7, %ymm4 -vpand mask_65_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpsllq $2, %ymm0, %ymm5 -vpshufb mask_66_1(%rip), %ymm5, %ymm4 -vpand mask_67_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_68_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_69_1(%rip), %ymm7, %ymm4 -vpand mask_70_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_71_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_72_1(%rip), %ymm7, %ymm4 -vpand mask_73_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsrlq $61, %ymm0, %ymm4 -vpsllq $3, %ymm0, %ymm3 -vpermq $147, %ymm4, %ymm5 -vpxor %ymm3, %ymm5, %ymm5 -vpshufb mask_74_1(%rip), %ymm5, %ymm4 -vpand mask_75_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_76_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_77_1(%rip), %ymm7, %ymm4 -vpand mask_78_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_79_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_80_1(%rip), %ymm7, %ymm4 -vpand mask_81_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsrlq $63, %ymm5, %ymm4 -vpsllq $1, %ymm5, %ymm3 -vpermq $147, %ymm4, %ymm6 -vpxor %ymm3, %ymm6, %ymm6 -vpshufb mask_82_1(%rip), %ymm6, %ymm4 -vpand mask_83_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpermq $78, %ymm6, %ymm7 -vpshufb mask_84_1(%rip), %ymm7, %ymm4 -vpand mask_85_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_86_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_87_1(%rip), %ymm7, %ymm4 -vpand mask_88_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsrlq $63, %ymm6, %ymm4 -vpsllq $1, %ymm6, %ymm3 -vpermq $147, %ymm4, %ymm5 -vpxor %ymm3, %ymm5, %ymm5 -vpshufb mask_89_1(%rip), %ymm5, %ymm4 -vpand mask_90_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_91_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_92_1(%rip), %ymm5, %ymm4 -vpand mask_93_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_94_1(%rip), %ymm7, %ymm4 -vpand mask_95_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_96_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsrlq $63, %ymm5, %ymm4 -vpsllq $1, %ymm5, %ymm3 -vpermq $147, %ymm4, %ymm6 -vpxor %ymm3, %ymm6, %ymm6 -vpshufb mask_97_1(%rip), %ymm6, %ymm4 -vpand mask_98_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_99_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm7 -vpshufb mask_100_1(%rip), %ymm7, %ymm4 -vpand mask_101_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsrlq $63, %ymm6, %ymm4 -vpsllq $1, %ymm6, %ymm3 -vpermq $147, %ymm4, %ymm5 -vpxor %ymm3, %ymm5, %ymm5 -vpshufb mask_102_1(%rip), %ymm5, %ymm4 -vpand mask_103_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_104_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_105_1(%rip), %ymm7, %ymm4 -vpand mask_106_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_107_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vmovdqa %ymm1, 0(%rdi) -vmovdqa %ymm2, 32(%rdi) -ret diff --git a/src/kem/ntru/ntruhps2048509/avx2/square_15_509_shufbytes.s b/src/kem/ntru/ntruhps2048509/avx2/square_15_509_shufbytes.s deleted file mode 100644 index 1d8150f2..00000000 --- a/src/kem/ntru/ntruhps2048509/avx2/square_15_509_shufbytes.s +++ /dev/null @@ -1,5125 +0,0 @@ -.data -.p2align 5 -mask_0_1: -.byte 0 -.byte 15 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 8 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 15 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 8 -.byte 9 -.byte 255 -.byte 255 -.byte 255 - -mask_1_1: -.word 0x401 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x108 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x401 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x108 -.word 0x0 -.word 0x0 - -mask_2_1: -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 - -mask_3_1: -.byte 7 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_4_1: -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 - -mask_5_1: -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_6_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_7_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 - -mask_8_1: -.byte 255 -.byte 6 -.byte 14 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 8 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 2 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_9_1: -.word 0x8000 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x840 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_10_1: -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x420 -.word 0x0 -.word 0x0 - -mask_11_1: -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_12_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_13_1: -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_14_1: -.byte 255 -.byte 1 -.byte 2 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 9 -.byte 3 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 2 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 9 -.byte 3 -.byte 255 -.byte 255 - -mask_15_1: -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2 -.word 0x0 - -mask_16_1: -.word 0x0 -.word 0x420 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x420 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 - -mask_17_1: -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 - -mask_18_1: -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_19_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 - -mask_20_1: -.byte 255 -.byte 255 -.byte 0 -.byte 8 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 8 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 9 -.byte 3 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 3 -.byte 11 -.byte 255 -.byte 255 -.byte 255 - -mask_21_1: -.word 0x0 -.word 0x108 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x840 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 - -mask_22_1: -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x8 -.word 0x0 - -mask_23_1: -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_24_1: -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 - -mask_25_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_26_1: -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_27_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_28_1: -.byte 255 -.byte 255 -.byte 2 -.byte 3 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 10 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 3 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 10 -.byte 4 -.byte 255 - -mask_29_1: -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x420 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x420 -.word 0x0 - -mask_30_1: -.word 0x0 -.word 0x4000 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 - -mask_31_1: -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 - -mask_32_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_33_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 - -mask_34_1: -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 9 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 9 -.byte 3 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 4 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 11 -.byte 12 -.byte 255 -.byte 255 - -mask_35_1: -.word 0x0 -.word 0x1000 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x1 -.word 0x0 - -mask_36_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x210 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 - -mask_37_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 - -mask_38_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_39_1: -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 - -mask_40_1: -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 11 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 11 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 11 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 11 -.byte 5 - -mask_41_1: -.word 0x0 -.word 0x800 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x8 - -mask_42_1: -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 - -mask_43_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_44_1: -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_45_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 10 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 4 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 5 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 12 -.byte 6 -.byte 255 - -mask_46_1: -.word 0x0 -.word 0x0 -.word 0x420 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x210 -.word 0x0 - -mask_47_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x210 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 - -mask_48_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 - -mask_49_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_50_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 - -mask_51_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 12 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 12 -.byte 6 -.byte 14 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 12 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 12 - -mask_52_1: -.word 0x0 -.word 0x0 -.word 0x210 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x210 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1080 - -mask_53_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x108 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_54_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_55_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_56_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 11 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 6 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 13 -.byte 7 - -mask_57_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x4 - -mask_58_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x840 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 - -mask_59_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_60_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_61_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_62_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 13 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 7 -.byte 6 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 13 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_63_1: -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_64_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x840 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_65_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_66_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_67_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_68_1: -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 12 -.byte 6 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 14 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 14 - -mask_69_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x108 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x840 - -mask_70_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x108 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_71_1: -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_72_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_73_1: -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_74_1: -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 14 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 6 -.byte 14 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 14 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_75_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x840 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x108 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x840 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_76_1: -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 - -mask_77_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_78_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_79_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x80 -.word 0x0 -.word 0x0 - -mask_80_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_81_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_82_1: -.byte 13 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 7 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 15 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 - -mask_83_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x8000 - -mask_84_1: -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_85_1: -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_86_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_87_1: -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_88_1: -.byte 15 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 15 -.byte 9 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 15 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 15 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_89_1: -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x10 -.word 0x0 -.word 0x0 - -mask_90_1: -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 - -mask_91_1: -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_92_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_93_1: -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 - -mask_94_1: -.byte 6 -.byte 14 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 2 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 2 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_95_1: -.word 0x840 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_96_1: -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2 -.word 0x0 -.word 0x0 - -mask_97_1: -.byte 255 -.byte 0 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_98_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_99_1: -.word 0x2000 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_100_1: -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 0 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 14 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 0 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 14 -.byte 8 - -mask_101_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2 - -mask_102_1: -.word 0x0 -.word 0x0 -.word 0x401 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x401 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 - -mask_103_1: -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 - -mask_104_1: -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_105_1: -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2008 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 - -mask_106_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 13 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 13 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 14 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 1 -.byte 255 -.byte 255 - -mask_107_1: -.word 0x0 -.word 0x0 -.word 0x108 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x840 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 - -mask_108_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 - -mask_109_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 8 -.byte 255 -.byte 255 - -mask_110_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 - -mask_111_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 - -mask_112_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 15 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 15 - -mask_113_1: -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x420 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x401 - -mask_114_1: -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_115_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 1 - -mask_116_1: -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 - -mask_117_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 - -mask_118_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 14 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 14 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 8 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 8 -.byte 2 -.byte 255 - -mask_119_1: -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x108 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x840 -.word 0x0 - -mask_120_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 - -mask_121_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 - -mask_122_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_123_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2008 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 - -mask_124_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_125_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_126_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 8 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 2 -.byte 10 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 8 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 - -mask_127_1: -.word 0x0 -.word 0x0 -.word 0x840 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x840 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 - -mask_128_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x420 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_129_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 - -mask_130_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 - -mask_131_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_132_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 15 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 9 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 9 -.byte 3 - -mask_133_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x401 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x108 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x10 - -mask_134_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 - -mask_135_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_136_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_137_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_138_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_139_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_140_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 9 -.byte 3 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 3 -.byte 9 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 9 -.byte 3 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_141_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_142_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x1 -.word 0x0 -.word 0x0 - -mask_143_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_144_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_145_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_146_1: -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 2 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 10 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 - -mask_147_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x420 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 - -mask_148_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x420 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_149_1: -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 - -mask_150_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 - -mask_151_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_152_1: -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 4 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 2 -.byte 10 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 4 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_153_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x420 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_154_1: -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x210 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x210 -.word 0x0 -.word 0x0 - -mask_155_1: -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_156_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_157_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_158_1: -.byte 9 -.byte 3 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 3 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 11 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_159_1: -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_160_1: -.word 0x800 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_161_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_162_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_163_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_164_1: -.byte 11 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 5 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 11 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 5 -.byte 13 -.byte 255 -.byte 255 -.byte 255 - -mask_165_1: -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 - -mask_166_1: -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x4 -.word 0x0 - -mask_167_1: -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_168_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 - -mask_169_1: -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_170_1: -.byte 255 -.byte 3 -.byte 4 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 11 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 12 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 12 -.byte 6 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_171_1: -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x210 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1080 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_172_1: -.word 0x0 -.word 0x210 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x108 -.word 0x0 -.word 0x0 - -mask_173_1: -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_174_1: -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_175_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_176_1: -.byte 4 -.byte 12 -.byte 6 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 6 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 12 -.byte 6 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 6 -.byte 14 -.byte 255 -.byte 255 - -mask_177_1: -.word 0x1080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 - -mask_178_1: -.word 0x0 -.word 0x108 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x840 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x108 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x840 -.word 0x0 - -mask_179_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_180_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 - -mask_181_1: -.byte 255 -.byte 255 -.byte 4 -.byte 5 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 12 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 13 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 7 -.byte 15 -.byte 255 -.byte 255 -.byte 255 - -mask_182_1: -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x210 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 - -mask_183_1: -.word 0x0 -.word 0x2000 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2 -.word 0x0 - -mask_184_1: -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_185_1: -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 - -mask_186_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_187_1: -.byte 255 -.byte 255 -.byte 6 -.byte 7 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 14 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 7 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 14 -.byte 15 -.byte 255 - -mask_188_1: -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x108 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x108 -.word 0x0 - -mask_189_1: -.word 0x0 -.word 0x1000 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 - -mask_190_1: -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 - -mask_191_1: -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_192_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 - -mask_193_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 - -mask_194_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 - -mask_195_1: -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 6 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 13 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 14 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 1 -.byte 255 -.byte 255 -.byte 255 - -mask_196_1: -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x840 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 - -mask_197_1: -.word 0x0 -.word 0x0 -.word 0x840 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 - -mask_198_1: -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 8 -.byte 255 -.byte 255 -.byte 255 - -mask_199_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 - -mask_200_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 - -.text -.global PQCLEAN_NTRUHPS2048509_AVX2_square_15_509 -.global _PQCLEAN_NTRUHPS2048509_AVX2_square_15_509 -PQCLEAN_NTRUHPS2048509_AVX2_square_15_509: -_PQCLEAN_NTRUHPS2048509_AVX2_square_15_509: -vmovdqa 0(%rsi), %ymm0 -vpshufb mask_0_1(%rip), %ymm0, %ymm4 -vpand mask_1_1(%rip), %ymm4, %ymm1 -vpand mask_2_1(%rip), %ymm4, %ymm2 -vpshufb mask_3_1(%rip), %ymm0, %ymm4 -vpand mask_4_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_5_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_6_1(%rip), %ymm0, %ymm4 -vpand mask_7_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm0, %ymm7 -vpshufb mask_8_1(%rip), %ymm7, %ymm4 -vpand mask_9_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_10_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_11_1(%rip), %ymm7, %ymm4 -vpand mask_12_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_13_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsrlq $63, %ymm0, %ymm4 -vpsllq $1, %ymm0, %ymm3 -vpermq $147, %ymm4, %ymm5 -vpxor %ymm3, %ymm5, %ymm5 -vpshufb mask_14_1(%rip), %ymm5, %ymm4 -vpand mask_15_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_16_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_17_1(%rip), %ymm5, %ymm4 -vpand mask_18_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_19_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_20_1(%rip), %ymm7, %ymm4 -vpand mask_21_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_22_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_23_1(%rip), %ymm7, %ymm4 -vpand mask_24_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_25_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_26_1(%rip), %ymm7, %ymm4 -vpand mask_27_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsllq $1, %ymm5, %ymm6 -vpshufb mask_28_1(%rip), %ymm6, %ymm4 -vpand mask_29_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_30_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_31_1(%rip), %ymm6, %ymm4 -vpand mask_32_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_33_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm7 -vpshufb mask_34_1(%rip), %ymm7, %ymm4 -vpand mask_35_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_36_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_37_1(%rip), %ymm7, %ymm4 -vpand mask_38_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_39_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsllq $2, %ymm5, %ymm6 -vpshufb mask_40_1(%rip), %ymm6, %ymm4 -vpand mask_41_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_42_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_43_1(%rip), %ymm6, %ymm4 -vpand mask_44_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm7 -vpshufb mask_45_1(%rip), %ymm7, %ymm4 -vpand mask_46_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_47_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_48_1(%rip), %ymm7, %ymm4 -vpand mask_49_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_50_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsllq $3, %ymm5, %ymm6 -vpshufb mask_51_1(%rip), %ymm6, %ymm4 -vpand mask_52_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_53_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_54_1(%rip), %ymm6, %ymm4 -vpand mask_55_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm7 -vpshufb mask_56_1(%rip), %ymm7, %ymm4 -vpand mask_57_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_58_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_59_1(%rip), %ymm7, %ymm4 -vpand mask_60_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_61_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsllq $4, %ymm5, %ymm6 -vpshufb mask_62_1(%rip), %ymm6, %ymm4 -vpand mask_63_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_64_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_65_1(%rip), %ymm6, %ymm4 -vpand mask_66_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_67_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm7 -vpshufb mask_68_1(%rip), %ymm7, %ymm4 -vpand mask_69_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_70_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_71_1(%rip), %ymm7, %ymm4 -vpand mask_72_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_73_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsrlq $59, %ymm5, %ymm4 -vpsllq $5, %ymm5, %ymm3 -vpermq $147, %ymm4, %ymm6 -vpxor %ymm3, %ymm6, %ymm6 -vpshufb mask_74_1(%rip), %ymm6, %ymm4 -vpand mask_75_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_76_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_77_1(%rip), %ymm6, %ymm4 -vpand mask_78_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_79_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_80_1(%rip), %ymm6, %ymm4 -vpand mask_81_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm7 -vpshufb mask_82_1(%rip), %ymm7, %ymm4 -vpand mask_83_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_84_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_85_1(%rip), %ymm7, %ymm4 -vpand mask_86_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_87_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsllq $1, %ymm6, %ymm5 -vpshufb mask_88_1(%rip), %ymm5, %ymm4 -vpand mask_89_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_90_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_91_1(%rip), %ymm5, %ymm4 -vpand mask_92_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_93_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_94_1(%rip), %ymm7, %ymm4 -vpand mask_95_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_96_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_97_1(%rip), %ymm7, %ymm4 -vpand mask_98_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_99_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vmovdqa 32(%rsi), %ymm0 -vpshufb mask_100_1(%rip), %ymm0, %ymm4 -vpand mask_101_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_102_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_103_1(%rip), %ymm0, %ymm4 -vpand mask_104_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_105_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm0, %ymm7 -vpshufb mask_106_1(%rip), %ymm7, %ymm4 -vpand mask_107_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_108_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_109_1(%rip), %ymm7, %ymm4 -vpand mask_110_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_111_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsrlq $63, %ymm0, %ymm4 -vpsllq $1, %ymm0, %ymm3 -vpermq $147, %ymm4, %ymm5 -vpxor %ymm3, %ymm5, %ymm5 -vpshufb mask_112_1(%rip), %ymm5, %ymm4 -vpand mask_113_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_114_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_115_1(%rip), %ymm5, %ymm4 -vpand mask_116_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_117_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_118_1(%rip), %ymm7, %ymm4 -vpand mask_119_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_120_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_121_1(%rip), %ymm7, %ymm4 -vpand mask_122_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_123_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_124_1(%rip), %ymm7, %ymm4 -vpand mask_125_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsrlq $63, %ymm5, %ymm4 -vpsllq $1, %ymm5, %ymm3 -vpermq $147, %ymm4, %ymm6 -vpxor %ymm3, %ymm6, %ymm6 -vpshufb mask_126_1(%rip), %ymm6, %ymm4 -vpand mask_127_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_128_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_129_1(%rip), %ymm6, %ymm4 -vpand mask_130_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_131_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm7 -vpshufb mask_132_1(%rip), %ymm7, %ymm4 -vpand mask_133_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_134_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_135_1(%rip), %ymm7, %ymm4 -vpand mask_136_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_137_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_138_1(%rip), %ymm7, %ymm4 -vpand mask_139_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsllq $1, %ymm6, %ymm5 -vpshufb mask_140_1(%rip), %ymm5, %ymm4 -vpand mask_141_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_142_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_143_1(%rip), %ymm5, %ymm4 -vpand mask_144_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_145_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_146_1(%rip), %ymm7, %ymm4 -vpand mask_147_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_148_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_149_1(%rip), %ymm7, %ymm4 -vpand mask_150_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_151_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsllq $2, %ymm6, %ymm5 -vpshufb mask_152_1(%rip), %ymm5, %ymm4 -vpand mask_153_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_154_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_155_1(%rip), %ymm5, %ymm4 -vpand mask_156_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_157_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_158_1(%rip), %ymm7, %ymm4 -vpand mask_159_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_160_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_161_1(%rip), %ymm7, %ymm4 -vpand mask_162_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_163_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsllq $3, %ymm6, %ymm5 -vpshufb mask_164_1(%rip), %ymm5, %ymm4 -vpand mask_165_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_166_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_167_1(%rip), %ymm5, %ymm4 -vpand mask_168_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_169_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_170_1(%rip), %ymm7, %ymm4 -vpand mask_171_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_172_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_173_1(%rip), %ymm7, %ymm4 -vpand mask_174_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_175_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsllq $4, %ymm6, %ymm5 -vpshufb mask_176_1(%rip), %ymm5, %ymm4 -vpand mask_177_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_178_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_179_1(%rip), %ymm5, %ymm4 -vpand mask_180_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_181_1(%rip), %ymm7, %ymm4 -vpand mask_182_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_183_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_184_1(%rip), %ymm7, %ymm4 -vpand mask_185_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_186_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsrlq $59, %ymm6, %ymm4 -vpsllq $5, %ymm6, %ymm3 -vpermq $147, %ymm4, %ymm5 -vpxor %ymm3, %ymm5, %ymm5 -vpshufb mask_187_1(%rip), %ymm5, %ymm4 -vpand mask_188_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_189_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_190_1(%rip), %ymm5, %ymm4 -vpand mask_191_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_192_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_193_1(%rip), %ymm5, %ymm4 -vpand mask_194_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_195_1(%rip), %ymm7, %ymm4 -vpand mask_196_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_197_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_198_1(%rip), %ymm7, %ymm4 -vpand mask_199_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_200_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vmovdqa %ymm1, 0(%rdi) -vmovdqa %ymm2, 32(%rdi) -ret diff --git a/src/kem/ntru/ntruhps2048509/avx2/square_1_509_patience.s b/src/kem/ntru/ntruhps2048509/avx2/square_1_509_patience.s deleted file mode 100644 index 7f00ea04..00000000 --- a/src/kem/ntru/ntruhps2048509/avx2/square_1_509_patience.s +++ /dev/null @@ -1,109 +0,0 @@ -.data -.p2align 5 -.text -.global PQCLEAN_NTRUHPS2048509_AVX2_square_1_509 -.global _PQCLEAN_NTRUHPS2048509_AVX2_square_1_509 -PQCLEAN_NTRUHPS2048509_AVX2_square_1_509: -_PQCLEAN_NTRUHPS2048509_AVX2_square_1_509: -push %r15 -push %r14 -push %r13 -push %r12 -push %rbx -push %rbp -mov 0(%rsi), %r11 -mov %r11, %r10 -and $-0x1, %r10 -mov $0x5555555555555555, %rbp -pdep %rbp, %r10, %r10 -mov %r10, 0(%rdi) -mov $0xffffffff00000000, %rbx -pext %rbx, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 8(%rdi) -mov 8(%rsi), %r11 -mov %r11, %r10 -and $-0x1, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 16(%rdi) -pext %rbx, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 24(%rdi) -mov 16(%rsi), %r11 -mov %r11, %r10 -and $-0x1, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 32(%rdi) -pext %rbx, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 40(%rdi) -mov 24(%rsi), %r11 -mov %r11, %r10 -rol $2, %r10 -and $0x2, %r10 -xor %r10, 0(%rdi) -mov %r11, %r10 -and $-0x1, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 48(%rdi) -mov $0x7fffffff00000000, %r12 -pext %r12, %r11, %r10 -mov $0x1555555555555555, %r13 -pdep %r13, %r10, %r10 -mov %r10, 56(%rdi) -mov 32(%rsi), %r11 -mov %r11, %r10 -and $0x7fffffff, %r10 -mov $0xaaaaaaaaaaaaaaa8, %r14 -pdep %r14, %r10, %r10 -xor %r10, 0(%rdi) -mov $0x7fffffff80000000, %r15 -pext %r15, %r11, %r10 -mov $0xaaaaaaaaaaaaaaaa, %r9 -pdep %r9, %r10, %r10 -xor %r10, 8(%rdi) -mov %r11, %r10 -rol $2, %r10 -and $0x2, %r10 -xor %r10, 16(%rdi) -mov 40(%rsi), %r11 -mov %r11, %r10 -and $0x7fffffff, %r10 -pdep %r14, %r10, %r10 -xor %r10, 16(%rdi) -pext %r15, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 24(%rdi) -mov %r11, %r10 -rol $2, %r10 -and $0x2, %r10 -xor %r10, 32(%rdi) -mov 48(%rsi), %r11 -mov %r11, %r10 -and $0x7fffffff, %r10 -pdep %r14, %r10, %r10 -xor %r10, 32(%rdi) -pext %r15, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 40(%rdi) -mov %r11, %r10 -rol $2, %r10 -and $0x2, %r10 -xor %r10, 48(%rdi) -mov 56(%rsi), %r11 -mov %r11, %r10 -and $0x7fffffff, %r10 -pdep %r14, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x1fffffff80000000, %r8 -pext %r8, %r11, %r10 -mov $0xaaaaaaaaaaaaaaa, %rdx -pdep %rdx, %r10, %r10 -xor %r10, 56(%rdi) -pop %rbp -pop %rbx -pop %r12 -pop %r13 -pop %r14 -pop %r15 -ret diff --git a/src/kem/ntru/ntruhps2048509/avx2/square_252_509_shufbytes.s b/src/kem/ntru/ntruhps2048509/avx2/square_252_509_shufbytes.s deleted file mode 100644 index d4b94ca2..00000000 --- a/src/kem/ntru/ntruhps2048509/avx2/square_252_509_shufbytes.s +++ /dev/null @@ -1,3992 +0,0 @@ -.data -.p2align 5 -mask_0_1: -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_1_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x202 -.word 0x202 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x404 -.word 0x404 -.word 0x0 -.word 0x0 - -mask_2_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_3_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x808 -.word 0x808 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1010 -.word 0x1010 -.word 0x0 -.word 0x0 - -mask_4_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 - -mask_5_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x202 -.word 0x202 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x404 -.word 0x404 - -mask_6_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 - -mask_7_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x808 -.word 0x808 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1010 -.word 0x1010 - -mask_8_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_9_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4040 -.word 0x4040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x8080 -.word 0x80 -.word 0x0 -.word 0x0 - -mask_10_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 - -mask_11_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_12_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x101 -.word 0x101 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x202 -.word 0x2 -.word 0x0 -.word 0x0 - -mask_13_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 2 - -mask_14_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4040 -.word 0x4040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x8080 -.word 0x80 - -mask_15_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 - -mask_16_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 255 - -mask_17_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x101 -.word 0x101 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x202 -.word 0x2 - -mask_18_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_19_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x808 -.word 0x808 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1010 -.word 0x1010 -.word 0x0 -.word 0x0 - -mask_20_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_21_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_22_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2020 -.word 0x2020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4040 -.word 0x40 -.word 0x0 -.word 0x0 - -mask_23_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 13 -.byte 9 -.byte 5 -.byte 1 - -mask_24_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x808 -.word 0x808 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1010 -.word 0x1010 - -mask_25_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 - -mask_26_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 7 -.byte 3 -.byte 255 - -mask_27_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2020 -.word 0x2020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4040 -.word 0x40 - -mask_28_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 12 -.byte 8 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_29_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x100 -.word 0x101 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x202 -.word 0x202 -.word 0x0 -.word 0x0 - -mask_30_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_31_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_32_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x404 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x808 -.word 0x808 -.word 0x0 -.word 0x0 - -mask_33_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 - -mask_34_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x101 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x202 -.word 0x202 - -mask_35_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_36_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 - -mask_37_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x404 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x808 -.word 0x808 - -mask_38_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_39_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2020 -.word 0x2020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4040 -.word 0x4040 -.word 0x0 -.word 0x0 - -mask_40_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_41_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_42_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8080 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x101 -.word 0x101 -.word 0x0 -.word 0x0 - -mask_43_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 - -mask_44_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2020 -.word 0x2020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4040 -.word 0x4040 - -mask_45_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_46_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 - -mask_47_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8080 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x101 -.word 0x101 - -mask_48_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_49_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x404 -.word 0x404 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x808 -.word 0x808 -.word 0x0 -.word 0x0 - -mask_50_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_51_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1010 -.word 0x1010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2020 -.word 0x2020 -.word 0x0 -.word 0x0 - -mask_52_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 - -mask_53_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x404 -.word 0x404 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x808 -.word 0x808 - -mask_54_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 255 - -mask_55_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1010 -.word 0x1010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2020 -.word 0x20 - -mask_56_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 - -mask_57_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8080 -.word 0x8080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x101 -.word 0x1 -.word 0x0 - -mask_58_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_59_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_60_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x202 -.word 0x202 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x404 -.word 0x0 -.word 0x0 - -mask_61_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 12 -.byte 8 -.byte 4 - -mask_62_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8080 -.word 0x8080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x100 -.word 0x101 - -mask_63_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 - -mask_64_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 6 -.byte 2 - -mask_65_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x202 -.word 0x202 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x404 - -mask_66_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_67_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1010 -.word 0x1010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2020 -.word 0x2020 -.word 0x0 -.word 0x0 - -mask_68_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_69_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_70_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4040 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8080 -.word 0x80 -.word 0x0 -.word 0x0 - -mask_71_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 13 -.byte 9 -.byte 5 -.byte 1 - -mask_72_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1010 -.word 0x1010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2020 -.word 0x2020 - -mask_73_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 - -mask_74_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 7 -.byte 3 -.byte 255 - -mask_75_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4040 -.word 0x4040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8080 -.word 0x80 - -mask_76_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_77_1: -.word 0x0 -.word 0x0 -.word 0x202 -.word 0x202 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x404 -.word 0x404 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_78_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_79_1: -.word 0x0 -.word 0x0 -.word 0x808 -.word 0x808 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1010 -.word 0x1010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_80_1: -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_81_1: -.word 0x202 -.word 0x202 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x404 -.word 0x404 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_82_1: -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_83_1: -.word 0x808 -.word 0x808 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1010 -.word 0x1010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_84_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 7 -.byte 3 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_85_1: -.word 0x0 -.word 0x0 -.word 0x4040 -.word 0x4040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8080 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_86_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_87_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_88_1: -.word 0x0 -.word 0x0 -.word 0x101 -.word 0x101 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x202 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_89_1: -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_90_1: -.word 0x4040 -.word 0x4040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x8080 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_91_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_92_1: -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_93_1: -.word 0x101 -.word 0x101 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x202 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_94_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_95_1: -.word 0x0 -.word 0x0 -.word 0x808 -.word 0x808 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1010 -.word 0x1010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_96_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_97_1: -.word 0x0 -.word 0x0 -.word 0x2020 -.word 0x2020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4040 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_98_1: -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_99_1: -.word 0x808 -.word 0x808 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1010 -.word 0x1010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_100_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_101_1: -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_102_1: -.word 0x2020 -.word 0x2020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4040 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_103_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 12 -.byte 8 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_104_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x101 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x202 -.word 0x202 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_105_1: -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_106_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_107_1: -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x404 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x808 -.word 0x808 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_108_1: -.byte 14 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_109_1: -.word 0x100 -.word 0x101 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x202 -.word 0x202 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_110_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_111_1: -.byte 255 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_112_1: -.word 0x400 -.word 0x404 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x808 -.word 0x808 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_113_1: -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 - -mask_114_1: -.word 0x0 -.word 0x0 -.word 0x2020 -.word 0x2020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4040 -.word 0x4040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 - -mask_115_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_116_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_117_1: -.word 0x0 -.word 0x0 -.word 0x8080 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x101 -.word 0x101 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_118_1: -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_119_1: -.word 0x2020 -.word 0x2020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4040 -.word 0x4040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_120_1: -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_121_1: -.word 0x8080 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x101 -.word 0x101 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_122_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_123_1: -.word 0x0 -.word 0x0 -.word 0x404 -.word 0x404 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x808 -.word 0x808 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_124_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_125_1: -.word 0x0 -.word 0x0 -.word 0x1010 -.word 0x1010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2020 -.word 0x2020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_126_1: -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_127_1: -.word 0x404 -.word 0x404 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x808 -.word 0x808 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_128_1: -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_129_1: -.word 0x1010 -.word 0x1010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2020 -.word 0x2020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_130_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_131_1: -.word 0x0 -.word 0x0 -.word 0x8080 -.word 0x8080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x101 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_132_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_133_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_134_1: -.word 0x0 -.word 0x0 -.word 0x202 -.word 0x202 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x404 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_135_1: -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 12 -.byte 8 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_136_1: -.word 0x8080 -.word 0x8080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x100 -.word 0x101 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_137_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_138_1: -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_139_1: -.word 0x202 -.word 0x202 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x404 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_140_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_141_1: -.word 0x0 -.word 0x0 -.word 0x1010 -.word 0x1010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2020 -.word 0x2020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_142_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_143_1: -.word 0x0 -.word 0x0 -.word 0x4040 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8080 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_144_1: -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_145_1: -.word 0x1010 -.word 0x1010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2020 -.word 0x2020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_146_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_147_1: -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_148_1: -.word 0x4040 -.word 0x4040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8080 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -.text -.global PQCLEAN_NTRUHPS2048509_AVX2_square_252_509 -.global _PQCLEAN_NTRUHPS2048509_AVX2_square_252_509 -PQCLEAN_NTRUHPS2048509_AVX2_square_252_509: -_PQCLEAN_NTRUHPS2048509_AVX2_square_252_509: -vmovdqa 0(%rsi), %ymm0 -vpshufb mask_0_1(%rip), %ymm0, %ymm4 -vpand mask_1_1(%rip), %ymm4, %ymm1 -vpshufb mask_2_1(%rip), %ymm0, %ymm4 -vpand mask_3_1(%rip), %ymm4, %ymm2 -vpermq $78, %ymm0, %ymm7 -vpshufb mask_4_1(%rip), %ymm7, %ymm4 -vpand mask_5_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpshufb mask_6_1(%rip), %ymm7, %ymm4 -vpand mask_7_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsllq $1, %ymm0, %ymm5 -vpshufb mask_8_1(%rip), %ymm5, %ymm4 -vpand mask_9_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_10_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_11_1(%rip), %ymm5, %ymm4 -vpand mask_12_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_13_1(%rip), %ymm7, %ymm4 -vpand mask_14_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_15_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_16_1(%rip), %ymm7, %ymm4 -vpand mask_17_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsllq $2, %ymm0, %ymm5 -vpshufb mask_18_1(%rip), %ymm5, %ymm4 -vpand mask_19_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_20_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_21_1(%rip), %ymm5, %ymm4 -vpand mask_22_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_23_1(%rip), %ymm7, %ymm4 -vpand mask_24_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_25_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_26_1(%rip), %ymm7, %ymm4 -vpand mask_27_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsrlq $61, %ymm0, %ymm4 -vpsllq $3, %ymm0, %ymm3 -vpermq $147, %ymm4, %ymm5 -vpxor %ymm3, %ymm5, %ymm5 -vpshufb mask_28_1(%rip), %ymm5, %ymm4 -vpand mask_29_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_30_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_31_1(%rip), %ymm5, %ymm4 -vpand mask_32_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_33_1(%rip), %ymm7, %ymm4 -vpand mask_34_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_35_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_36_1(%rip), %ymm7, %ymm4 -vpand mask_37_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsllq $1, %ymm5, %ymm6 -vpshufb mask_38_1(%rip), %ymm6, %ymm4 -vpand mask_39_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_40_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_41_1(%rip), %ymm6, %ymm4 -vpand mask_42_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm7 -vpshufb mask_43_1(%rip), %ymm7, %ymm4 -vpand mask_44_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_45_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_46_1(%rip), %ymm7, %ymm4 -vpand mask_47_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsllq $2, %ymm5, %ymm6 -vpshufb mask_48_1(%rip), %ymm6, %ymm4 -vpand mask_49_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpshufb mask_50_1(%rip), %ymm6, %ymm4 -vpand mask_51_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm7 -vpshufb mask_52_1(%rip), %ymm7, %ymm4 -vpand mask_53_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpshufb mask_54_1(%rip), %ymm7, %ymm4 -vpand mask_55_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsrlq $61, %ymm5, %ymm4 -vpsllq $3, %ymm5, %ymm3 -vpermq $147, %ymm4, %ymm6 -vpxor %ymm3, %ymm6, %ymm6 -vpshufb mask_56_1(%rip), %ymm6, %ymm4 -vpand mask_57_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_58_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_59_1(%rip), %ymm6, %ymm4 -vpand mask_60_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm7 -vpshufb mask_61_1(%rip), %ymm7, %ymm4 -vpand mask_62_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_63_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_64_1(%rip), %ymm7, %ymm4 -vpand mask_65_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsllq $1, %ymm6, %ymm5 -vpshufb mask_66_1(%rip), %ymm5, %ymm4 -vpand mask_67_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_68_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_69_1(%rip), %ymm5, %ymm4 -vpand mask_70_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_71_1(%rip), %ymm7, %ymm4 -vpand mask_72_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_73_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_74_1(%rip), %ymm7, %ymm4 -vpand mask_75_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vmovdqa 32(%rsi), %ymm0 -vpshufb mask_76_1(%rip), %ymm0, %ymm4 -vpand mask_77_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpshufb mask_78_1(%rip), %ymm0, %ymm4 -vpand mask_79_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm0, %ymm7 -vpshufb mask_80_1(%rip), %ymm7, %ymm4 -vpand mask_81_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpshufb mask_82_1(%rip), %ymm7, %ymm4 -vpand mask_83_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsllq $1, %ymm0, %ymm5 -vpshufb mask_84_1(%rip), %ymm5, %ymm4 -vpand mask_85_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_86_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_87_1(%rip), %ymm5, %ymm4 -vpand mask_88_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_89_1(%rip), %ymm7, %ymm4 -vpand mask_90_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_91_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_92_1(%rip), %ymm7, %ymm4 -vpand mask_93_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsllq $2, %ymm0, %ymm5 -vpshufb mask_94_1(%rip), %ymm5, %ymm4 -vpand mask_95_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpshufb mask_96_1(%rip), %ymm5, %ymm4 -vpand mask_97_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_98_1(%rip), %ymm7, %ymm4 -vpand mask_99_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_100_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_101_1(%rip), %ymm7, %ymm4 -vpand mask_102_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsrlq $61, %ymm0, %ymm4 -vpsllq $3, %ymm0, %ymm3 -vpermq $147, %ymm4, %ymm5 -vpxor %ymm3, %ymm5, %ymm5 -vpshufb mask_103_1(%rip), %ymm5, %ymm4 -vpand mask_104_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_105_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_106_1(%rip), %ymm5, %ymm4 -vpand mask_107_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_108_1(%rip), %ymm7, %ymm4 -vpand mask_109_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_110_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_111_1(%rip), %ymm7, %ymm4 -vpand mask_112_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsllq $1, %ymm5, %ymm6 -vpshufb mask_113_1(%rip), %ymm6, %ymm4 -vpand mask_114_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_115_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_116_1(%rip), %ymm6, %ymm4 -vpand mask_117_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm7 -vpshufb mask_118_1(%rip), %ymm7, %ymm4 -vpand mask_119_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpshufb mask_120_1(%rip), %ymm7, %ymm4 -vpand mask_121_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsllq $2, %ymm5, %ymm6 -vpshufb mask_122_1(%rip), %ymm6, %ymm4 -vpand mask_123_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpshufb mask_124_1(%rip), %ymm6, %ymm4 -vpand mask_125_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm7 -vpshufb mask_126_1(%rip), %ymm7, %ymm4 -vpand mask_127_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpshufb mask_128_1(%rip), %ymm7, %ymm4 -vpand mask_129_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsrlq $61, %ymm5, %ymm4 -vpsllq $3, %ymm5, %ymm3 -vpermq $147, %ymm4, %ymm6 -vpxor %ymm3, %ymm6, %ymm6 -vpshufb mask_130_1(%rip), %ymm6, %ymm4 -vpand mask_131_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_132_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_133_1(%rip), %ymm6, %ymm4 -vpand mask_134_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm7 -vpshufb mask_135_1(%rip), %ymm7, %ymm4 -vpand mask_136_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_137_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_138_1(%rip), %ymm7, %ymm4 -vpand mask_139_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsllq $1, %ymm6, %ymm5 -vpshufb mask_140_1(%rip), %ymm5, %ymm4 -vpand mask_141_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpshufb mask_142_1(%rip), %ymm5, %ymm4 -vpand mask_143_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_144_1(%rip), %ymm7, %ymm4 -vpand mask_145_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_146_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_147_1(%rip), %ymm7, %ymm4 -vpand mask_148_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vmovdqa %ymm1, 0(%rdi) -vmovdqa %ymm2, 32(%rdi) -ret diff --git a/src/kem/ntru/ntruhps2048509/avx2/square_30_509_shufbytes.s b/src/kem/ntru/ntruhps2048509/avx2/square_30_509_shufbytes.s deleted file mode 100644 index c83a1a07..00000000 --- a/src/kem/ntru/ntruhps2048509/avx2/square_30_509_shufbytes.s +++ /dev/null @@ -1,4316 +0,0 @@ -.data -.p2align 5 -mask_0_1: -.byte 0 -.byte 255 -.byte 7 -.byte 255 -.byte 14 -.byte 8 -.byte 255 -.byte 15 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 10 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 13 -.byte 7 -.byte 255 -.byte 14 -.byte 255 -.byte 255 - -mask_1_1: -.word 0x1 -.word 0x8 -.word 0x40 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x80 -.word 0x0 -.word 0x0 - -mask_2_1: -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x2000 -.word 0x0 - -mask_3_1: -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_4_1: -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_5_1: -.byte 3 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 7 -.byte 1 -.byte 255 -.byte 15 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 11 -.byte 5 -.byte 255 - -mask_6_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x800 -.word 0x4000 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x400 -.word 0x2000 -.word 0x0 - -mask_7_1: -.word 0x1 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x1 - -mask_8_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_9_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_10_1: -.byte 4 -.byte 255 -.byte 11 -.byte 5 -.byte 255 -.byte 12 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 3 -.byte 255 -.byte 10 -.byte 4 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_11_1: -.word 0x4 -.word 0x20 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x2 -.word 0x10 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_12_1: -.word 0x0 -.word 0x100 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x200 -.word 0x1000 -.word 0x0 -.word 0x0 - -mask_13_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_14_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x80 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_15_1: -.byte 7 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 0 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 8 -.byte 255 -.byte 15 -.byte 9 -.byte 255 - -mask_16_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x2000 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x200 -.word 0x1000 -.word 0x8000 -.word 0x0 - -mask_17_1: -.word 0x4 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 - -mask_18_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_19_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 - -mask_20_1: -.byte 8 -.byte 255 -.byte 15 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 1 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 7 -.byte 1 -.byte 255 -.byte 15 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 4 -.byte 255 - -mask_21_1: -.word 0x10 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x8 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x20 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x2 - -mask_22_1: -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 - -mask_23_1: -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_24_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_25_1: -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 14 -.byte 8 -.byte 255 -.byte 15 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 8 -.byte 2 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 12 -.byte 6 -.byte 255 -.byte 13 -.byte 255 - -mask_26_1: -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x200 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x4000 -.word 0x0 -.word 0x0 - -mask_27_1: -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x10 - -mask_28_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_29_1: -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_30_1: -.byte 12 -.byte 6 -.byte 255 -.byte 13 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 11 -.byte 5 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 8 -.byte 255 - -mask_31_1: -.word 0x40 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x8 - -mask_32_1: -.word 0x200 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_33_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 - -mask_34_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 - -mask_35_1: -.byte 15 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 9 -.byte 3 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 - -mask_36_1: -.word 0x0 -.word 0x200 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x100 -.word 0x800 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x400 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_37_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x8 -.word 0x0 - -mask_38_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_39_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x4000 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_40_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_41_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_42_1: -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 1 -.byte 255 -.byte 8 -.byte 2 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 12 -.byte 6 - -mask_43_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x10 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x20 - -mask_44_1: -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x200 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 - -mask_45_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_46_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_47_1: -.byte 255 -.byte 1 -.byte 255 -.byte 8 -.byte 255 -.byte 15 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 13 -.byte 7 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 3 - -mask_48_1: -.word 0x100 -.word 0x800 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x400 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x100 - -mask_49_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x20 -.word 0x0 - -mask_50_1: -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_51_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_52_1: -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_53_1: -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 10 - -mask_54_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x10 -.word 0x0 - -mask_55_1: -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 - -mask_56_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 - -mask_57_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_58_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 - -mask_59_1: -.byte 255 -.byte 5 -.byte 255 -.byte 12 -.byte 6 -.byte 255 -.byte 13 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 3 -.byte 255 -.byte 10 -.byte 4 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 - -mask_60_1: -.word 0x400 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x800 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 - -mask_61_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x10 -.word 0x0 -.word 0x0 - -mask_62_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_63_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_64_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 14 -.byte 8 -.byte 255 -.byte 15 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 2 -.byte 255 -.byte 9 -.byte 3 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 13 -.byte 7 -.byte 255 -.byte 14 - -mask_65_1: -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x20 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x2 -.word 0x10 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x40 -.word 0x0 - -mask_66_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x1000 - -mask_67_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_68_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_69_1: -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 1 -.byte 255 -.byte 15 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 11 - -mask_70_1: -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x200 -.word 0x1000 - -mask_71_1: -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 - -mask_72_1: -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_73_1: -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_74_1: -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 15 -.byte 255 -.byte 6 -.byte 0 -.byte 255 -.byte 14 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 10 -.byte 4 -.byte 255 -.byte 11 -.byte 255 -.byte 255 - -mask_75_1: -.word 0x0 -.word 0x2 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x8 -.word 0x40 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x20 -.word 0x0 -.word 0x0 - -mask_76_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x800 -.word 0x0 - -mask_77_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_78_1: -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x40 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_79_1: -.byte 255 -.byte 13 -.byte 7 -.byte 255 -.byte 14 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 11 -.byte 5 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 8 -.byte 255 -.byte 15 - -mask_80_1: -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x800 -.word 0x4000 - -mask_81_1: -.word 0x0 -.word 0x2 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_82_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 - -mask_83_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 - -mask_84_1: -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 8 -.byte 255 -.byte 15 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 7 -.byte 255 -.byte 14 -.byte 8 -.byte 255 -.byte 255 - -mask_85_1: -.word 0x0 -.word 0x1 -.word 0x8 -.word 0x40 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x4 -.word 0x20 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x10 -.word 0x80 -.word 0x0 - -mask_86_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 - -mask_87_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_88_1: -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 - -mask_89_1: -.byte 255 -.byte 10 -.byte 4 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 1 -.byte 255 -.byte 8 -.byte 2 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 12 - -mask_90_1: -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x2000 - -mask_91_1: -.word 0x0 -.word 0x1 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_92_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_93_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_94_1: -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 12 -.byte 6 -.byte 255 -.byte 13 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 9 -.byte 255 -.byte 7 -.byte 1 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 11 -.byte 5 -.byte 255 -.byte 12 -.byte 255 -.byte 0 - -mask_95_1: -.word 0x0 -.word 0x4 -.word 0x20 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x80 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x40 -.word 0x0 -.word 0x8000 - -mask_96_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x1000 -.word 0x0 - -mask_97_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_98_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_99_1: -.byte 255 -.byte 14 -.byte 8 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 9 -.byte 255 -.byte 255 - -mask_100_1: -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x200 -.word 0x1000 -.word 0x0 - -mask_101_1: -.word 0x0 -.word 0x4 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_102_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 - -mask_103_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 - -mask_104_1: -.byte 2 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 12 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 8 -.byte 2 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_105_1: -.word 0x2 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x8 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_106_1: -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x800 -.word 0x0 -.word 0x0 - -mask_107_1: -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_108_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_109_1: -.byte 5 -.byte 255 -.byte 12 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 15 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 9 -.byte 3 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 13 -.byte 7 -.byte 255 - -mask_110_1: -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x400 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x1000 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x4000 -.word 0x0 - -mask_111_1: -.word 0x2 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 - -mask_112_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_113_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_114_1: -.byte 6 -.byte 255 -.byte 13 -.byte 7 -.byte 255 -.byte 14 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 12 -.byte 6 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 2 -.byte 255 - -mask_115_1: -.word 0x8 -.word 0x40 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x1 - -mask_116_1: -.word 0x0 -.word 0x200 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x2000 -.word 0x0 -.word 0x0 - -mask_117_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_118_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_119_1: -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 10 -.byte 4 -.byte 255 -.byte 11 -.byte 255 - -mask_120_1: -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x100 -.word 0x4000 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x400 -.word 0x2000 -.word 0x0 -.word 0x0 - -mask_121_1: -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x8 - -mask_122_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_123_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_124_1: -.byte 10 -.byte 4 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 2 -.byte 255 -.byte 9 -.byte 3 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 - -mask_125_1: -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x10 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 - -mask_126_1: -.word 0x100 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x200 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_127_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_128_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_129_1: -.byte 13 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 14 -.byte 8 -.byte 255 -.byte 15 -.byte 255 - -mask_130_1: -.word 0x0 -.word 0x100 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x400 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x8000 -.word 0x0 -.word 0x0 - -mask_131_1: -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x20 - -mask_132_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_133_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_134_1: -.byte 14 -.byte 8 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 0 -.byte 255 -.byte 14 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 10 -.byte 255 - -mask_135_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x10 - -mask_136_1: -.word 0x400 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_137_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 - -mask_138_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 - -mask_139_1: -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 13 -.byte 7 -.byte 255 -.byte 14 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 10 -.byte 1 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 11 -.byte 5 -.byte 255 -.byte 12 -.byte 255 -.byte 0 -.byte 255 - -mask_140_1: -.word 0x0 -.word 0x400 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x800 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x80 - -mask_141_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x10 -.word 0x0 - -mask_142_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_143_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_144_1: -.byte 255 -.byte 12 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 15 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 3 -.byte 255 -.byte 10 -.byte 4 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 7 -.byte 255 -.byte 14 -.byte 8 - -mask_145_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x4 -.word 0x20 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x8 -.word 0x40 - -mask_146_1: -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x400 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 - -mask_147_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 - -mask_148_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 - -mask_149_1: -.byte 255 -.byte 3 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 8 -.byte 2 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 - -mask_150_1: -.word 0x200 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x800 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x400 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 - -mask_151_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x8 -.word 0x0 -.word 0x0 - -mask_152_1: -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_153_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x4000 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_154_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 0 -.byte 255 -.byte 7 -.byte 1 -.byte 255 -.byte 15 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 11 -.byte 5 -.byte 255 -.byte 12 - -mask_155_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x10 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x1 -.word 0x8 -.word 0x40 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x20 -.word 0x0 - -mask_156_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x800 - -mask_157_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_158_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_159_1: -.byte 255 -.byte 7 -.byte 255 -.byte 14 -.byte 8 -.byte 255 -.byte 15 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 12 -.byte 6 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 9 - -mask_160_1: -.word 0x800 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x800 - -mask_161_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x20 -.word 0x0 -.word 0x0 - -mask_162_1: -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_163_1: -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -.text -.global PQCLEAN_NTRUHPS2048509_AVX2_square_30_509 -.global _PQCLEAN_NTRUHPS2048509_AVX2_square_30_509 -PQCLEAN_NTRUHPS2048509_AVX2_square_30_509: -_PQCLEAN_NTRUHPS2048509_AVX2_square_30_509: -vmovdqa 0(%rsi), %ymm0 -vpshufb mask_0_1(%rip), %ymm0, %ymm4 -vpand mask_1_1(%rip), %ymm4, %ymm1 -vpand mask_2_1(%rip), %ymm4, %ymm2 -vpshufb mask_3_1(%rip), %ymm0, %ymm4 -vpand mask_4_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm0, %ymm7 -vpshufb mask_5_1(%rip), %ymm7, %ymm4 -vpand mask_6_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_7_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_8_1(%rip), %ymm7, %ymm4 -vpand mask_9_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsllq $1, %ymm0, %ymm5 -vpshufb mask_10_1(%rip), %ymm5, %ymm4 -vpand mask_11_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_12_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_13_1(%rip), %ymm5, %ymm4 -vpand mask_14_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_15_1(%rip), %ymm7, %ymm4 -vpand mask_16_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_17_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_18_1(%rip), %ymm7, %ymm4 -vpand mask_19_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsrlq $62, %ymm0, %ymm4 -vpsllq $2, %ymm0, %ymm3 -vpermq $147, %ymm4, %ymm5 -vpxor %ymm3, %ymm5, %ymm5 -vpshufb mask_20_1(%rip), %ymm5, %ymm4 -vpand mask_21_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_22_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_23_1(%rip), %ymm5, %ymm4 -vpand mask_24_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_25_1(%rip), %ymm7, %ymm4 -vpand mask_26_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_27_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_28_1(%rip), %ymm7, %ymm4 -vpand mask_29_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsrlq $63, %ymm5, %ymm4 -vpsllq $1, %ymm5, %ymm3 -vpermq $147, %ymm4, %ymm6 -vpxor %ymm3, %ymm6, %ymm6 -vpshufb mask_30_1(%rip), %ymm6, %ymm4 -vpand mask_31_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_32_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_33_1(%rip), %ymm6, %ymm4 -vpand mask_34_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm7 -vpshufb mask_35_1(%rip), %ymm7, %ymm4 -vpand mask_36_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_37_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_38_1(%rip), %ymm7, %ymm4 -vpand mask_39_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_40_1(%rip), %ymm7, %ymm4 -vpand mask_41_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsllq $1, %ymm6, %ymm5 -vpshufb mask_42_1(%rip), %ymm5, %ymm4 -vpand mask_43_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_44_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_45_1(%rip), %ymm5, %ymm4 -vpand mask_46_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_47_1(%rip), %ymm7, %ymm4 -vpand mask_48_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_49_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_50_1(%rip), %ymm7, %ymm4 -vpand mask_51_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_52_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsllq $2, %ymm6, %ymm5 -vpshufb mask_53_1(%rip), %ymm5, %ymm4 -vpand mask_54_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_55_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_56_1(%rip), %ymm5, %ymm4 -vpand mask_57_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_58_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_59_1(%rip), %ymm7, %ymm4 -vpand mask_60_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_61_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_62_1(%rip), %ymm7, %ymm4 -vpand mask_63_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsrlq $61, %ymm6, %ymm4 -vpsllq $3, %ymm6, %ymm3 -vpermq $147, %ymm4, %ymm5 -vpxor %ymm3, %ymm5, %ymm5 -vpshufb mask_64_1(%rip), %ymm5, %ymm4 -vpand mask_65_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_66_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_67_1(%rip), %ymm5, %ymm4 -vpand mask_68_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_69_1(%rip), %ymm7, %ymm4 -vpand mask_70_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_71_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_72_1(%rip), %ymm7, %ymm4 -vpand mask_73_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsrlq $63, %ymm5, %ymm4 -vpsllq $1, %ymm5, %ymm3 -vpermq $147, %ymm4, %ymm6 -vpxor %ymm3, %ymm6, %ymm6 -vpshufb mask_74_1(%rip), %ymm6, %ymm4 -vpand mask_75_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_76_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_77_1(%rip), %ymm6, %ymm4 -vpand mask_78_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm7 -vpshufb mask_79_1(%rip), %ymm7, %ymm4 -vpand mask_80_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_81_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_82_1(%rip), %ymm7, %ymm4 -vpand mask_83_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vmovdqa 32(%rsi), %ymm0 -vpshufb mask_84_1(%rip), %ymm0, %ymm4 -vpand mask_85_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_86_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_87_1(%rip), %ymm0, %ymm4 -vpand mask_88_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm0, %ymm7 -vpshufb mask_89_1(%rip), %ymm7, %ymm4 -vpand mask_90_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_91_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_92_1(%rip), %ymm7, %ymm4 -vpand mask_93_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsllq $1, %ymm0, %ymm5 -vpshufb mask_94_1(%rip), %ymm5, %ymm4 -vpand mask_95_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_96_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_97_1(%rip), %ymm5, %ymm4 -vpand mask_98_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_99_1(%rip), %ymm7, %ymm4 -vpand mask_100_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_101_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_102_1(%rip), %ymm7, %ymm4 -vpand mask_103_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsllq $2, %ymm0, %ymm5 -vpshufb mask_104_1(%rip), %ymm5, %ymm4 -vpand mask_105_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_106_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_107_1(%rip), %ymm5, %ymm4 -vpand mask_108_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_109_1(%rip), %ymm7, %ymm4 -vpand mask_110_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_111_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_112_1(%rip), %ymm7, %ymm4 -vpand mask_113_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsllq $3, %ymm0, %ymm5 -vpshufb mask_114_1(%rip), %ymm5, %ymm4 -vpand mask_115_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_116_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_117_1(%rip), %ymm5, %ymm4 -vpand mask_118_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_119_1(%rip), %ymm7, %ymm4 -vpand mask_120_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_121_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_122_1(%rip), %ymm7, %ymm4 -vpand mask_123_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsrlq $60, %ymm0, %ymm4 -vpsllq $4, %ymm0, %ymm3 -vpermq $147, %ymm4, %ymm5 -vpxor %ymm3, %ymm5, %ymm5 -vpshufb mask_124_1(%rip), %ymm5, %ymm4 -vpand mask_125_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_126_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_127_1(%rip), %ymm5, %ymm4 -vpand mask_128_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_129_1(%rip), %ymm7, %ymm4 -vpand mask_130_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_131_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_132_1(%rip), %ymm7, %ymm4 -vpand mask_133_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsrlq $63, %ymm5, %ymm4 -vpsllq $1, %ymm5, %ymm3 -vpermq $147, %ymm4, %ymm6 -vpxor %ymm3, %ymm6, %ymm6 -vpshufb mask_134_1(%rip), %ymm6, %ymm4 -vpand mask_135_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_136_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_137_1(%rip), %ymm6, %ymm4 -vpand mask_138_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm7 -vpshufb mask_139_1(%rip), %ymm7, %ymm4 -vpand mask_140_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_141_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_142_1(%rip), %ymm7, %ymm4 -vpand mask_143_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsrlq $63, %ymm6, %ymm4 -vpsllq $1, %ymm6, %ymm3 -vpermq $147, %ymm4, %ymm5 -vpxor %ymm3, %ymm5, %ymm5 -vpshufb mask_144_1(%rip), %ymm5, %ymm4 -vpand mask_145_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_146_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_147_1(%rip), %ymm5, %ymm4 -vpand mask_148_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_149_1(%rip), %ymm7, %ymm4 -vpand mask_150_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_151_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_152_1(%rip), %ymm7, %ymm4 -vpand mask_153_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsllq $1, %ymm5, %ymm6 -vpshufb mask_154_1(%rip), %ymm6, %ymm4 -vpand mask_155_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_156_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_157_1(%rip), %ymm6, %ymm4 -vpand mask_158_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm7 -vpshufb mask_159_1(%rip), %ymm7, %ymm4 -vpand mask_160_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_161_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_162_1(%rip), %ymm7, %ymm4 -vpand mask_163_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vmovdqa %ymm1, 0(%rdi) -vmovdqa %ymm2, 32(%rdi) -ret diff --git a/src/kem/ntru/ntruhps2048509/avx2/square_3_509_patience.s b/src/kem/ntru/ntruhps2048509/avx2/square_3_509_patience.s deleted file mode 100644 index 470b69e2..00000000 --- a/src/kem/ntru/ntruhps2048509/avx2/square_3_509_patience.s +++ /dev/null @@ -1,272 +0,0 @@ -.data -.p2align 5 -.text -.global PQCLEAN_NTRUHPS2048509_AVX2_square_3_509 -.global _PQCLEAN_NTRUHPS2048509_AVX2_square_3_509 -PQCLEAN_NTRUHPS2048509_AVX2_square_3_509: -_PQCLEAN_NTRUHPS2048509_AVX2_square_3_509: -push %r15 -push %r14 -push %r13 -push %r12 -push %rbx -push %rbp -mov 0(%rsi), %r11 -mov %r11, %r10 -and $0xff, %r10 -mov $0x101010101010101, %rbp -pdep %rbp, %r10, %r10 -mov %r10, 0(%rdi) -mov $0xff00, %rbx -pext %rbx, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 8(%rdi) -mov $0xff0000, %r12 -pext %r12, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 16(%rdi) -mov $0xff000000, %r13 -pext %r13, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 24(%rdi) -mov $0xff00000000, %r14 -pext %r14, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 32(%rdi) -mov $0xff0000000000, %r15 -pext %r15, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 40(%rdi) -mov $0xff000000000000, %r9 -pext %r9, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 48(%rdi) -mov $0xff00000000000000, %r8 -pext %r8, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 56(%rdi) -mov 8(%rsi), %r11 -mov %r11, %r10 -and $0xff, %r10 -mov $0x808080808080808, %rdx -pdep %rdx, %r10, %r10 -xor %r10, 0(%rdi) -pext %rbx, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 8(%rdi) -pext %r12, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 16(%rdi) -pext %r13, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 24(%rdi) -pext %r14, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 32(%rdi) -pext %r15, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 40(%rdi) -pext %r9, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 48(%rdi) -pext %r8, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 56(%rdi) -mov 16(%rsi), %r11 -mov $0x80000000000000ff, %rcx -pext %rcx, %r11, %r10 -mov $0x9010101010101010, %rax -pdep %rax, %r10, %r10 -rol $2, %r10 -xor %r10, 0(%rdi) -pext %rbx, %r11, %r10 -mov $0x4040404040404040, %rbp -pdep %rbp, %r10, %r10 -xor %r10, 8(%rdi) -pext %r12, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 16(%rdi) -pext %r13, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 24(%rdi) -pext %r14, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 32(%rdi) -pext %r15, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 40(%rdi) -pext %r9, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x7f00000000000000, %r8 -pext %r8, %r11, %r10 -mov $0x40404040404040, %rdx -pdep %rdx, %r10, %r10 -xor %r10, 56(%rdi) -mov 24(%rsi), %r11 -mov $0x800000000000007f, %rcx -pext %rcx, %r11, %r10 -mov $0x8010101010101010, %rax -pdep %rax, %r10, %r10 -rol $5, %r10 -xor %r10, 0(%rdi) -mov $0x7f80, %rbx -pext %rbx, %r11, %r10 -mov $0x202020202020202, %r12 -pdep %r12, %r10, %r10 -xor %r10, 8(%rdi) -mov $0x7f8000, %r13 -pext %r13, %r11, %r10 -pdep %r12, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x7f800000, %r14 -pext %r14, %r11, %r10 -pdep %r12, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x7f80000000, %r15 -pext %r15, %r11, %r10 -pdep %r12, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x7f8000000000, %r9 -pext %r9, %r11, %r10 -pdep %r12, %r10, %r10 -xor %r10, 40(%rdi) -mov $0x7f800000000000, %rbp -pext %rbp, %r11, %r10 -pdep %r12, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x7f80000000000000, %r8 -pext %r8, %r11, %r10 -pdep %r12, %r10, %r10 -xor %r10, 56(%rdi) -mov 32(%rsi), %r11 -pext %rcx, %r11, %r10 -pdep %rax, %r10, %r10 -rol $8, %r10 -xor %r10, 0(%rdi) -pext %rbx, %r11, %r10 -mov $0x1010101010101010, %rdx -pdep %rdx, %r10, %r10 -xor %r10, 8(%rdi) -pext %r13, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 16(%rdi) -pext %r14, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 24(%rdi) -pext %r15, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 32(%rdi) -pext %r9, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 40(%rdi) -pext %rbp, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 48(%rdi) -pext %r8, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 56(%rdi) -mov 40(%rsi), %r11 -mov $0xc00000000000007f, %r12 -pext %r12, %r11, %r10 -mov $0x8090101010101010, %rcx -pdep %rcx, %r10, %r10 -rol $11, %r10 -xor %r10, 0(%rdi) -pext %rbx, %r11, %r10 -mov $0x8080808080808080, %rax -pdep %rax, %r10, %r10 -xor %r10, 8(%rdi) -pext %r13, %r11, %r10 -pdep %rax, %r10, %r10 -xor %r10, 16(%rdi) -pext %r14, %r11, %r10 -pdep %rax, %r10, %r10 -xor %r10, 24(%rdi) -pext %r15, %r11, %r10 -pdep %rax, %r10, %r10 -xor %r10, 32(%rdi) -pext %r9, %r11, %r10 -pdep %rax, %r10, %r10 -xor %r10, 40(%rdi) -pext %rbp, %r11, %r10 -pdep %rax, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x3f80000000000000, %r8 -pext %r8, %r11, %r10 -mov $0x80808080808080, %rdx -pdep %rdx, %r10, %r10 -xor %r10, 56(%rdi) -mov 48(%rsi), %r11 -mov $0xc00000000000003f, %r12 -pext %r12, %r11, %r10 -mov $0x8080101010101010, %rcx -pdep %rcx, %r10, %r10 -rol $14, %r10 -xor %r10, 0(%rdi) -mov $0x3fc0, %rbx -pext %rbx, %r11, %r10 -mov $0x404040404040404, %r13 -pdep %r13, %r10, %r10 -xor %r10, 8(%rdi) -mov $0x3fc000, %r14 -pext %r14, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x3fc00000, %r15 -pext %r15, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x3fc0000000, %r9 -pext %r9, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x3fc000000000, %rbp -pext %rbp, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 40(%rdi) -mov $0x3fc00000000000, %rax -pext %rax, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x3fc0000000000000, %r8 -pext %r8, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 56(%rdi) -mov 56(%rsi), %r11 -mov %r11, %r10 -and $0x3f, %r10 -mov $0x2020202020200000, %rdx -pdep %rdx, %r10, %r10 -xor %r10, 0(%rdi) -pext %rbx, %r11, %r10 -mov $0x2020202020202020, %r12 -pdep %r12, %r10, %r10 -xor %r10, 8(%rdi) -pext %r14, %r11, %r10 -pdep %r12, %r10, %r10 -xor %r10, 16(%rdi) -pext %r15, %r11, %r10 -pdep %r12, %r10, %r10 -xor %r10, 24(%rdi) -pext %r9, %r11, %r10 -pdep %r12, %r10, %r10 -xor %r10, 32(%rdi) -pext %rbp, %r11, %r10 -pdep %r12, %r10, %r10 -xor %r10, 40(%rdi) -pext %rax, %r11, %r10 -pdep %r12, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x1fc0000000000000, %rcx -pext %rcx, %r11, %r10 -mov $0x20202020202020, %r8 -pdep %r8, %r10, %r10 -xor %r10, 56(%rdi) -pop %rbp -pop %rbx -pop %r12 -pop %r13 -pop %r14 -pop %r15 -ret diff --git a/src/kem/ntru/ntruhps2048509/avx2/square_63_509_shufbytes.s b/src/kem/ntru/ntruhps2048509/avx2/square_63_509_shufbytes.s deleted file mode 100644 index 9f90cb1b..00000000 --- a/src/kem/ntru/ntruhps2048509/avx2/square_63_509_shufbytes.s +++ /dev/null @@ -1,4186 +0,0 @@ -.data -.p2align 5 -mask_0_1: -.byte 0 -.byte 255 -.byte 13 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 1 -.byte 255 -.byte 7 -.byte 15 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 14 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 2 - -mask_1_1: -.word 0x1 -.word 0x10 -.word 0x80 -.word 0x800 -.word 0x4000 -.word 0x0 -.word 0x4 -.word 0x20 -.word 0x200 -.word 0x2000 -.word 0x0 -.word 0x1 -.word 0x10 -.word 0x80 -.word 0x800 -.word 0x4000 - -mask_2_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_3_1: -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 - -mask_4_1: -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x100 -.word 0x0 - -mask_5_1: -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 11 - -mask_6_1: -.word 0x2 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x400 -.word 0x0 - -mask_7_1: -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x800 - -mask_8_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_9_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_10_1: -.byte 255 -.byte 14 -.byte 255 -.byte 1 -.byte 9 -.byte 255 -.byte 15 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 14 -.byte 255 -.byte 1 -.byte 9 -.byte 255 -.byte 15 -.byte 255 -.byte 2 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 - -mask_11_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x80 - -mask_12_1: -.word 0x400 -.word 0x2000 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x40 -.word 0x400 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_13_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 - -mask_14_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 - -mask_15_1: -.byte 255 -.byte 5 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 13 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 0 -.byte 255 - -mask_16_1: -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x40 - -mask_17_1: -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1000 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_18_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 - -mask_19_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 - -mask_20_1: -.byte 3 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 3 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 11 -.byte 255 -.byte 255 - -mask_21_1: -.word 0x20 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x400 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 - -mask_22_1: -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2000 -.word 0x0 - -mask_23_1: -.byte 13 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 15 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 13 -.byte 255 -.byte 0 -.byte 8 -.byte 255 -.byte 14 -.byte 255 -.byte 8 -.byte 255 -.byte 255 - -mask_24_1: -.word 0x40 -.word 0x200 -.word 0x2000 -.word 0x0 -.word 0x1 -.word 0x10 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8000 -.word 0x0 - -mask_25_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x20 -.word 0x200 -.word 0x0 -.word 0x0 - -mask_26_1: -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 - -mask_27_1: -.word 0x8 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 - -mask_28_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 14 - -mask_29_1: -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1000 -.word 0x8000 -.word 0x0 -.word 0x8 -.word 0x80 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x2 -.word 0x20 -.word 0x100 -.word 0x1000 - -mask_30_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 - -mask_31_1: -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x10 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x200 - -mask_32_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_33_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_34_1: -.byte 255 -.byte 1 -.byte 9 -.byte 255 -.byte 15 -.byte 255 -.byte 2 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 7 -.byte 15 -.byte 255 -.byte 2 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 - -mask_35_1: -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x40 -.word 0x400 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x800 - -mask_36_1: -.word 0x8000 -.word 0x0 -.word 0x8 -.word 0x40 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 - -mask_37_1: -.byte 255 -.byte 7 -.byte 255 -.byte 13 -.byte 255 -.byte 0 -.byte 8 -.byte 255 -.byte 14 -.byte 255 -.byte 1 -.byte 9 -.byte 255 -.byte 15 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 13 -.byte 255 -.byte 0 -.byte 8 -.byte 255 -.byte 14 -.byte 255 -.byte 1 -.byte 9 -.byte 255 -.byte 15 -.byte 255 - -mask_38_1: -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 - -mask_39_1: -.word 0x0 -.word 0x800 -.word 0x4000 -.word 0x0 -.word 0x4 -.word 0x20 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x80 -.word 0x800 -.word 0x4000 -.word 0x0 -.word 0x4 - -mask_40_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_41_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_42_1: -.byte 255 -.byte 10 -.byte 255 -.byte 4 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 - -mask_43_1: -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x10 - -mask_44_1: -.word 0x100 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_45_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 - -mask_46_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x2 - -mask_47_1: -.byte 15 -.byte 255 -.byte 2 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 3 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 - -mask_48_1: -.word 0x8 -.word 0x40 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x1000 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2000 -.word 0x0 - -mask_49_1: -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 - -mask_50_1: -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_51_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_52_1: -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 5 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 13 -.byte 255 -.byte 255 - -mask_53_1: -.word 0x0 -.word 0x80 -.word 0x400 -.word 0x4000 -.word 0x0 -.word 0x2 -.word 0x20 -.word 0x100 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 - -mask_54_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x400 -.word 0x0 - -mask_55_1: -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_56_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_57_1: -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_58_1: -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 0 - -mask_59_1: -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x200 - -mask_60_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_61_1: -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 - -mask_62_1: -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 - -mask_63_1: -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 14 -.byte 255 -.byte 1 -.byte 9 -.byte 255 -.byte 15 -.byte 255 -.byte 2 -.byte 10 -.byte 255 -.byte 13 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 1 -.byte 255 -.byte 7 -.byte 15 -.byte 255 -.byte 2 -.byte 255 -.byte 8 -.byte 255 - -mask_64_1: -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x10 -.word 0x80 -.word 0x800 -.word 0x4000 -.word 0x0 -.word 0x4 -.word 0x20 -.word 0x0 - -mask_65_1: -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x80 -.word 0x800 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x40 - -mask_66_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_67_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_68_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_69_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_70_1: -.byte 11 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 14 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 13 -.byte 255 -.byte 0 -.byte 8 -.byte 255 - -mask_71_1: -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x4 - -mask_72_1: -.word 0x20 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x400 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1000 -.word 0x8000 -.word 0x0 - -mask_73_1: -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_74_1: -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_75_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_76_1: -.byte 255 -.byte 3 -.byte 255 -.byte 9 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 4 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 1 -.byte 9 -.byte 255 -.byte 15 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_77_1: -.word 0x100 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 - -mask_78_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_79_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_80_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 - -mask_81_1: -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 7 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 - -mask_82_1: -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1000 -.word 0x0 - -mask_83_1: -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x100 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 - -mask_84_1: -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 - -mask_85_1: -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x200 -.word 0x0 - -mask_86_1: -.byte 4 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 12 -.byte 255 -.byte 6 -.byte 255 -.byte 2 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 12 - -mask_87_1: -.word 0x4 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x80 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8000 - -mask_88_1: -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 - -mask_89_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 - -mask_90_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 - -mask_91_1: -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 10 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 - -mask_92_1: -.word 0x4000 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x100 - -mask_93_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 - -mask_94_1: -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_95_1: -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_96_1: -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 13 -.byte 255 -.byte 0 -.byte 255 -.byte 6 -.byte 14 -.byte 255 -.byte 1 -.byte 255 -.byte 7 -.byte 15 -.byte 255 -.byte 11 -.byte 255 -.byte 5 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 13 -.byte 255 - -mask_97_1: -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x20 -.word 0x200 -.word 0x1000 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 - -mask_98_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x20 - -mask_99_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 - -mask_100_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 - -mask_101_1: -.byte 255 -.byte 255 -.byte 3 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 13 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 13 -.byte 255 - -mask_102_1: -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x100 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x2 - -mask_103_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4000 -.word 0x0 - -mask_104_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_105_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_106_1: -.byte 7 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 8 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 3 -.byte 255 - -mask_107_1: -.word 0x80 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1000 -.word 0x8000 -.word 0x0 -.word 0x4 -.word 0x40 -.word 0x200 -.word 0x2000 -.word 0x0 -.word 0x1 - -mask_108_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_109_1: -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_110_1: -.word 0x10 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x200 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 - -mask_111_1: -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 6 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 12 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 7 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 - -mask_112_1: -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x100 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2000 - -mask_113_1: -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x80 -.word 0x0 - -mask_114_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 - -mask_115_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x400 - -mask_116_1: -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 11 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 15 -.byte 255 -.byte 2 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 11 -.byte 255 -.byte 255 - -mask_117_1: -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x200 -.word 0x0 - -mask_118_1: -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x20 -.word 0x0 -.word 0x1000 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 - -mask_119_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_120_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_121_1: -.byte 255 -.byte 1 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 1 -.byte 255 -.byte 7 -.byte 15 -.byte 255 -.byte 2 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 9 -.byte 255 - -mask_122_1: -.word 0x800 -.word 0x8000 -.word 0x0 -.word 0x4 -.word 0x40 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x10 -.word 0x100 -.word 0x800 -.word 0x8000 -.word 0x0 -.word 0x4 -.word 0x0 - -mask_123_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 - -mask_124_1: -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_125_1: -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_126_1: -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 13 -.byte 255 -.byte 0 -.byte 255 -.byte 6 -.byte 4 -.byte 255 -.byte 10 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 5 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 - -mask_127_1: -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x400 -.word 0x2000 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x20 - -mask_128_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 - -mask_129_1: -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_130_1: -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_131_1: -.byte 9 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 12 -.byte 255 -.byte 9 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_132_1: -.word 0x10 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x200 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 - -mask_133_1: -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_134_1: -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_135_1: -.word 0x2 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 - -mask_136_1: -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 13 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 8 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 14 -.byte 255 -.byte 255 - -mask_137_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x80 -.word 0x400 -.word 0x4000 -.word 0x0 - -mask_138_1: -.word 0x4 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_139_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 - -mask_140_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x800 -.word 0x0 - -mask_141_1: -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 11 -.byte 255 -.byte 5 -.byte 0 -.byte 255 -.byte 12 -.byte 255 -.byte 6 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 12 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 13 - -mask_142_1: -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x180 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x80 -.word 0x0 - -mask_143_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x100 - -mask_144_1: -.byte 255 -.byte 7 -.byte 15 -.byte 255 -.byte 2 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 7 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 15 -.byte 255 -.byte 2 -.byte 10 - -mask_145_1: -.word 0x0 -.word 0x2 -.word 0x10 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x20 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x400 - -mask_146_1: -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x80 - -mask_147_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_148_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 - -mask_149_1: -.byte 5 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 14 -.byte 255 -.byte 1 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 15 -.byte 255 -.byte 5 -.byte 13 -.byte 255 -.byte 0 -.byte 255 -.byte 6 -.byte 14 -.byte 255 -.byte 1 -.byte 255 -.byte 7 -.byte 15 -.byte 255 -.byte 2 -.byte 255 - -mask_150_1: -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x8 -.word 0x80 -.word 0x400 -.word 0x4000 -.word 0x0 -.word 0x4 -.word 0x20 -.word 0x200 -.word 0x1000 -.word 0x0 -.word 0x1 -.word 0x8 - -mask_151_1: -.word 0x40 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 - -mask_152_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_153_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_154_1: -.byte 15 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 10 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 11 -.byte 255 - -mask_155_1: -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 - -mask_156_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x1 - -mask_157_1: -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_158_1: -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -.text -.global PQCLEAN_NTRUHPS2048509_AVX2_square_63_509 -.global _PQCLEAN_NTRUHPS2048509_AVX2_square_63_509 -PQCLEAN_NTRUHPS2048509_AVX2_square_63_509: -_PQCLEAN_NTRUHPS2048509_AVX2_square_63_509: -vmovdqa 0(%rsi), %ymm0 -vpshufb mask_0_1(%rip), %ymm0, %ymm4 -vpand mask_1_1(%rip), %ymm4, %ymm1 -vpand mask_2_1(%rip), %ymm4, %ymm2 -vpshufb mask_3_1(%rip), %ymm0, %ymm4 -vpand mask_4_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm0, %ymm7 -vpshufb mask_5_1(%rip), %ymm7, %ymm4 -vpand mask_6_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_7_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_8_1(%rip), %ymm7, %ymm4 -vpand mask_9_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsrlq $63, %ymm0, %ymm4 -vpsllq $1, %ymm0, %ymm3 -vpermq $147, %ymm4, %ymm5 -vpxor %ymm3, %ymm5, %ymm5 -vpshufb mask_10_1(%rip), %ymm5, %ymm4 -vpand mask_11_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_12_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_13_1(%rip), %ymm5, %ymm4 -vpand mask_14_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_15_1(%rip), %ymm7, %ymm4 -vpand mask_16_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_17_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_18_1(%rip), %ymm7, %ymm4 -vpand mask_19_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsrlq $63, %ymm5, %ymm4 -vpsllq $1, %ymm5, %ymm3 -vpermq $147, %ymm4, %ymm6 -vpxor %ymm3, %ymm6, %ymm6 -vpshufb mask_20_1(%rip), %ymm6, %ymm4 -vpand mask_21_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_22_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm7 -vpshufb mask_23_1(%rip), %ymm7, %ymm4 -vpand mask_24_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_25_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_26_1(%rip), %ymm7, %ymm4 -vpand mask_27_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsllq $1, %ymm6, %ymm5 -vpshufb mask_28_1(%rip), %ymm5, %ymm4 -vpand mask_29_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpshufb mask_30_1(%rip), %ymm5, %ymm4 -vpand mask_31_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_32_1(%rip), %ymm5, %ymm4 -vpand mask_33_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_34_1(%rip), %ymm7, %ymm4 -vpand mask_35_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_36_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsrlq $62, %ymm6, %ymm4 -vpsllq $2, %ymm6, %ymm3 -vpermq $147, %ymm4, %ymm5 -vpxor %ymm3, %ymm5, %ymm5 -vpshufb mask_37_1(%rip), %ymm5, %ymm4 -vpand mask_38_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_39_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_40_1(%rip), %ymm5, %ymm4 -vpand mask_41_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_42_1(%rip), %ymm7, %ymm4 -vpand mask_43_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_44_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_45_1(%rip), %ymm7, %ymm4 -vpand mask_46_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsrlq $63, %ymm5, %ymm4 -vpsllq $1, %ymm5, %ymm3 -vpermq $147, %ymm4, %ymm6 -vpxor %ymm3, %ymm6, %ymm6 -vpshufb mask_47_1(%rip), %ymm6, %ymm4 -vpand mask_48_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_49_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_50_1(%rip), %ymm6, %ymm4 -vpand mask_51_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm7 -vpshufb mask_52_1(%rip), %ymm7, %ymm4 -vpand mask_53_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_54_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_55_1(%rip), %ymm7, %ymm4 -vpand mask_56_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_57_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsllq $1, %ymm6, %ymm5 -vpshufb mask_58_1(%rip), %ymm5, %ymm4 -vpand mask_59_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_60_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_61_1(%rip), %ymm5, %ymm4 -vpand mask_62_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_63_1(%rip), %ymm7, %ymm4 -vpand mask_64_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_65_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_66_1(%rip), %ymm7, %ymm4 -vpand mask_67_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_68_1(%rip), %ymm7, %ymm4 -vpand mask_69_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsrlq $62, %ymm6, %ymm4 -vpsllq $2, %ymm6, %ymm3 -vpermq $147, %ymm4, %ymm5 -vpxor %ymm3, %ymm5, %ymm5 -vpshufb mask_70_1(%rip), %ymm5, %ymm4 -vpand mask_71_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_72_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_73_1(%rip), %ymm5, %ymm4 -vpand mask_74_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_75_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_76_1(%rip), %ymm7, %ymm4 -vpand mask_77_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_78_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_79_1(%rip), %ymm7, %ymm4 -vpand mask_80_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vmovdqa 32(%rsi), %ymm0 -vpshufb mask_81_1(%rip), %ymm0, %ymm4 -vpand mask_82_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_83_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_84_1(%rip), %ymm0, %ymm4 -vpand mask_85_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm0, %ymm7 -vpshufb mask_86_1(%rip), %ymm7, %ymm4 -vpand mask_87_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_88_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_89_1(%rip), %ymm7, %ymm4 -vpand mask_90_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsllq $1, %ymm0, %ymm5 -vpshufb mask_91_1(%rip), %ymm5, %ymm4 -vpand mask_92_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_93_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_94_1(%rip), %ymm5, %ymm4 -vpand mask_95_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_96_1(%rip), %ymm7, %ymm4 -vpand mask_97_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_98_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_99_1(%rip), %ymm7, %ymm4 -vpand mask_100_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsllq $2, %ymm0, %ymm5 -vpshufb mask_101_1(%rip), %ymm5, %ymm4 -vpand mask_102_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_103_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_104_1(%rip), %ymm5, %ymm4 -vpand mask_105_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_106_1(%rip), %ymm7, %ymm4 -vpand mask_107_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_108_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_109_1(%rip), %ymm7, %ymm4 -vpand mask_110_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsllq $3, %ymm0, %ymm5 -vpshufb mask_111_1(%rip), %ymm5, %ymm4 -vpand mask_112_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_113_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_114_1(%rip), %ymm5, %ymm4 -vpand mask_115_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_116_1(%rip), %ymm7, %ymm4 -vpand mask_117_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_118_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_119_1(%rip), %ymm7, %ymm4 -vpand mask_120_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsrlq $60, %ymm0, %ymm4 -vpsllq $4, %ymm0, %ymm3 -vpermq $147, %ymm4, %ymm5 -vpxor %ymm3, %ymm5, %ymm5 -vpshufb mask_121_1(%rip), %ymm5, %ymm4 -vpand mask_122_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_123_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_124_1(%rip), %ymm5, %ymm4 -vpand mask_125_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_126_1(%rip), %ymm7, %ymm4 -vpand mask_127_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_128_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_129_1(%rip), %ymm7, %ymm4 -vpand mask_130_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsllq $1, %ymm5, %ymm6 -vpshufb mask_131_1(%rip), %ymm6, %ymm4 -vpand mask_132_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_133_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_134_1(%rip), %ymm6, %ymm4 -vpand mask_135_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm7 -vpshufb mask_136_1(%rip), %ymm7, %ymm4 -vpand mask_137_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_138_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_139_1(%rip), %ymm7, %ymm4 -vpand mask_140_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsrlq $62, %ymm5, %ymm4 -vpsllq $2, %ymm5, %ymm3 -vpermq $147, %ymm4, %ymm6 -vpxor %ymm3, %ymm6, %ymm6 -vpshufb mask_141_1(%rip), %ymm6, %ymm4 -vpand mask_142_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_143_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm7 -vpshufb mask_144_1(%rip), %ymm7, %ymm4 -vpand mask_145_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_146_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_147_1(%rip), %ymm7, %ymm4 -vpand mask_148_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpsllq $1, %ymm6, %ymm5 -vpshufb mask_149_1(%rip), %ymm5, %ymm4 -vpand mask_150_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_151_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_152_1(%rip), %ymm5, %ymm4 -vpand mask_153_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpermq $78, %ymm5, %ymm7 -vpshufb mask_154_1(%rip), %ymm7, %ymm4 -vpand mask_155_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm1, %ymm1 -vpand mask_156_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vpshufb mask_157_1(%rip), %ymm7, %ymm4 -vpand mask_158_1(%rip), %ymm4, %ymm3 -vpxor %ymm3, %ymm2, %ymm2 -vmovdqa %ymm1, 0(%rdi) -vmovdqa %ymm2, 32(%rdi) -ret diff --git a/src/kem/ntru/ntruhps2048509/avx2/square_6_509_patience.s b/src/kem/ntru/ntruhps2048509/avx2/square_6_509_patience.s deleted file mode 100644 index 8bb3005e..00000000 --- a/src/kem/ntru/ntruhps2048509/avx2/square_6_509_patience.s +++ /dev/null @@ -1,296 +0,0 @@ -.data -.p2align 5 -.text -.global PQCLEAN_NTRUHPS2048509_AVX2_square_6_509 -.global _PQCLEAN_NTRUHPS2048509_AVX2_square_6_509 -PQCLEAN_NTRUHPS2048509_AVX2_square_6_509: -_PQCLEAN_NTRUHPS2048509_AVX2_square_6_509: -push %r15 -push %r14 -push %r13 -push %r12 -push %rbx -push %rbp -mov 0(%rsi), %r11 -mov $0x101010101010101, %rbp -pext %rbp, %r11, %r10 -mov $0x249249, %rbx -pdep %rbx, %r10, %r10 -mov %r10, 0(%rdi) -mov $0x202020202020202, %r12 -pext %r12, %r11, %r10 -pdep %rbx, %r10, %r10 -mov %r10, 8(%rdi) -mov $0x404040404040404, %r13 -pext %r13, %r11, %r10 -pdep %rbx, %r10, %r10 -mov %r10, 16(%rdi) -mov $0x808080808080808, %r14 -pext %r14, %r11, %r10 -pdep %rbx, %r10, %r10 -mov %r10, 24(%rdi) -mov $0x1010101010101010, %r15 -pext %r15, %r11, %r10 -pdep %rbx, %r10, %r10 -mov %r10, 32(%rdi) -mov $0x2020202020202020, %r9 -pext %r9, %r11, %r10 -pdep %rbx, %r10, %r10 -mov %r10, 40(%rdi) -mov $0x4040404040404040, %r8 -pext %r8, %r11, %r10 -pdep %rbx, %r10, %r10 -mov %r10, 48(%rdi) -mov $0x8080808080808080, %rdx -pext %rdx, %r11, %r10 -pdep %rbx, %r10, %r10 -mov %r10, 56(%rdi) -mov 8(%rsi), %r11 -pext %rbp, %r11, %r10 -mov $0x249249000000, %rcx -pdep %rcx, %r10, %r10 -xor %r10, 0(%rdi) -pext %r12, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 8(%rdi) -pext %r13, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 16(%rdi) -pext %r14, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 24(%rdi) -pext %r15, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 32(%rdi) -pext %r9, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 40(%rdi) -pext %r8, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 48(%rdi) -pext %rdx, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 56(%rdi) -mov 16(%rsi), %r11 -mov $0x8080810101010101, %rax -pext %rax, %r11, %r10 -mov $0x9249248000000000, %rbx -pdep %rbx, %r10, %r10 -rol $9, %r10 -xor %r10, 0(%rdi) -mov $0x101020202020202, %rbp -pext %rbp, %r11, %r10 -mov $0x9249240000000000, %r12 -pdep %r12, %r10, %r10 -rol $6, %r10 -xor %r10, 8(%rdi) -mov $0x202040404040404, %r13 -pext %r13, %r11, %r10 -pdep %r12, %r10, %r10 -rol $6, %r10 -xor %r10, 16(%rdi) -mov $0x404080808080808, %r14 -pext %r14, %r11, %r10 -pdep %r12, %r10, %r10 -rol $6, %r10 -xor %r10, 24(%rdi) -mov $0x808101010101010, %r15 -pext %r15, %r11, %r10 -pdep %r12, %r10, %r10 -rol $6, %r10 -xor %r10, 32(%rdi) -mov $0x1010202020202020, %r9 -pext %r9, %r11, %r10 -pdep %r12, %r10, %r10 -rol $6, %r10 -xor %r10, 40(%rdi) -mov $0x2020404040404040, %r8 -pext %r8, %r11, %r10 -pdep %r12, %r10, %r10 -rol $6, %r10 -xor %r10, 48(%rdi) -mov $0x4040008080808080, %rdx -pext %rdx, %r11, %r10 -mov $0x9049240000000000, %rcx -pdep %rcx, %r10, %r10 -rol $6, %r10 -xor %r10, 56(%rdi) -mov 24(%rsi), %r11 -mov $0x8080808080808080, %rax -pext %rax, %r11, %r10 -mov $0x124924800, %rbx -pdep %rbx, %r10, %r10 -xor %r10, 0(%rdi) -mov $0x101010101010101, %rbp -pext %rbp, %r11, %r10 -mov $0x24924900, %r13 -pdep %r13, %r10, %r10 -xor %r10, 8(%rdi) -mov $0x202020202020202, %r14 -pext %r14, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x404040404040404, %r15 -pext %r15, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x808080808080808, %r9 -pext %r9, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x1010101010101010, %r8 -pext %r8, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 40(%rdi) -mov $0x2020202020202020, %r12 -pext %r12, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x4040404040404040, %rdx -pext %rdx, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 56(%rdi) -mov 32(%rsi), %r11 -pext %rax, %r11, %r10 -mov $0x124924800000000, %rcx -pdep %rcx, %r10, %r10 -xor %r10, 0(%rdi) -pext %rbp, %r11, %r10 -mov $0x24924900000000, %rbx -pdep %rbx, %r10, %r10 -xor %r10, 8(%rdi) -pext %r14, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 16(%rdi) -pext %r15, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 24(%rdi) -pext %r9, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 32(%rdi) -pext %r8, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 40(%rdi) -pext %r12, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 48(%rdi) -pext %rdx, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 56(%rdi) -mov 40(%rsi), %r11 -mov $0x4040404040408080, %r13 -pext %r13, %r11, %r10 -mov $0x9249240000000000, %rax -pdep %rax, %r10, %r10 -rol $17, %r10 -xor %r10, 0(%rdi) -mov $0x8080808080810101, %rcx -pext %rcx, %r11, %r10 -mov $0x9249248000000000, %rbp -pdep %rbp, %r10, %r10 -rol $17, %r10 -xor %r10, 8(%rdi) -mov $0x101010101020202, %r14 -pext %r14, %r11, %r10 -pdep %rax, %r10, %r10 -rol $14, %r10 -xor %r10, 16(%rdi) -mov $0x202020202040404, %r15 -pext %r15, %r11, %r10 -pdep %rax, %r10, %r10 -rol $14, %r10 -xor %r10, 24(%rdi) -mov $0x404040404080808, %r9 -pext %r9, %r11, %r10 -pdep %rax, %r10, %r10 -rol $14, %r10 -xor %r10, 32(%rdi) -mov $0x808080808101010, %r8 -pext %r8, %r11, %r10 -pdep %rax, %r10, %r10 -rol $14, %r10 -xor %r10, 40(%rdi) -mov $0x1010101010202020, %r12 -pext %r12, %r11, %r10 -pdep %rax, %r10, %r10 -rol $14, %r10 -xor %r10, 48(%rdi) -mov $0x2020202020004040, %rdx -pext %rdx, %r11, %r10 -mov $0x9248240000000000, %rbx -pdep %rbx, %r10, %r10 -rol $14, %r10 -xor %r10, 56(%rdi) -mov 48(%rsi), %r11 -mov $0x4040404040404040, %r13 -pext %r13, %r11, %r10 -mov $0x12492480000, %rcx -pdep %rcx, %r10, %r10 -xor %r10, 0(%rdi) -mov $0x8080808080808080, %rbp -pext %rbp, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 8(%rdi) -mov $0x101010101010101, %r14 -pext %r14, %r11, %r10 -mov $0x2492490000, %r15 -pdep %r15, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x202020202020202, %r9 -pext %r9, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x404040404040404, %r8 -pext %r8, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x808080808080808, %r12 -pext %r12, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 40(%rdi) -mov $0x1010101010101010, %rax -pext %rax, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x2020202020202020, %rdx -pext %rdx, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 56(%rdi) -mov 56(%rsi), %r11 -mov $0x40404040404040, %rbx -pext %rbx, %r11, %r10 -mov $0x2492480000000000, %r13 -pdep %r13, %r10, %r10 -xor %r10, 0(%rdi) -mov $0x80808080808080, %rbp -pext %rbp, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 8(%rdi) -pext %r14, %r11, %r10 -mov $0x2492490000000000, %rcx -pdep %rcx, %r10, %r10 -xor %r10, 16(%rdi) -pext %r9, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 24(%rdi) -pext %r8, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 32(%rdi) -pext %r12, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 40(%rdi) -pext %rax, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x20202020202020, %rdx -pext %rdx, %r11, %r10 -mov $0x492490000000000, %r15 -pdep %r15, %r10, %r10 -xor %r10, 56(%rdi) -pop %rbp -pop %rbx -pop %r12 -pop %r13 -pop %r14 -pop %r15 -ret diff --git a/src/kem/ntru/ntruhps2048509/avx2/vec32_sample_iid.s b/src/kem/ntru/ntruhps2048509/avx2/vec32_sample_iid.s deleted file mode 100644 index 580c5eb7..00000000 --- a/src/kem/ntru/ntruhps2048509/avx2/vec32_sample_iid.s +++ /dev/null @@ -1,784 +0,0 @@ -.data -.p2align 5 -cast8_to_16: -.byte 255 -.byte 0 -.byte 255 -.byte 1 -.byte 255 -.byte 2 -.byte 255 -.byte 3 -.byte 255 -.byte 4 -.byte 255 -.byte 5 -.byte 255 -.byte 6 -.byte 255 -.byte 7 -.byte 255 -.byte 0 -.byte 255 -.byte 1 -.byte 255 -.byte 2 -.byte 255 -.byte 3 -.byte 255 -.byte 4 -.byte 255 -.byte 5 -.byte 255 -.byte 6 -.byte 255 -.byte 7 -mask_ff: -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -mask_f: -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -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 -.text -.global PQCLEAN_NTRUHPS2048509_AVX2_vec32_sample_iid -.global _PQCLEAN_NTRUHPS2048509_AVX2_vec32_sample_iid -PQCLEAN_NTRUHPS2048509_AVX2_vec32_sample_iid: -_PQCLEAN_NTRUHPS2048509_AVX2_vec32_sample_iid: -vmovdqa 0(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 32(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 64(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 96(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 128(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 160(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 192(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 224(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 256(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 288(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 320(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 352(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 384(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 416(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 448(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 480(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -movw $0, 1016(%rdi) -movw $0, 1018(%rdi) -movw $0, 1020(%rdi) -movw $0, 1022(%rdi) -ret diff --git a/src/kem/ntru/ntruhps2048509/clean/CMakeLists.txt b/src/kem/ntru/ntruhps2048509/clean/CMakeLists.txt deleted file mode 100644 index ecdd6514..00000000 --- a/src/kem/ntru/ntruhps2048509/clean/CMakeLists.txt +++ /dev/null @@ -1,20 +0,0 @@ -set( - SRC_CLEAN_NTRUHPS2048509 - cmov.c - crypto_sort_int32.c - kem.c - owcpa.c - pack3.c - packq.c - poly.c - poly_lift.c - poly_mod.c - poly_r2_inv.c - poly_rq_mul.c - poly_s3_inv.c - sample.c - sample_iid.c -) - -define_kem_alg(ntruhps2048509_clean - PQCLEAN_NTRUHPS2048509_CLEAN "${SRC_CLEAN_NTRUHPS2048509}" "${CMAKE_CURRENT_SOURCE_DIR}") diff --git a/src/kem/ntru/ntruhps2048509/clean/api.h b/src/kem/ntru/ntruhps2048509/clean/api.h deleted file mode 100644 index 50fe48d3..00000000 --- a/src/kem/ntru/ntruhps2048509/clean/api.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef PQCLEAN_NTRUHPS2048509_CLEAN_API_H -#define PQCLEAN_NTRUHPS2048509_CLEAN_API_H - -#include - -#define PQCLEAN_NTRUHPS2048509_CLEAN_CRYPTO_SECRETKEYBYTES 935 -#define PQCLEAN_NTRUHPS2048509_CLEAN_CRYPTO_PUBLICKEYBYTES 699 -#define PQCLEAN_NTRUHPS2048509_CLEAN_CRYPTO_CIPHERTEXTBYTES 699 -#define PQCLEAN_NTRUHPS2048509_CLEAN_CRYPTO_BYTES 32 - -#define PQCLEAN_NTRUHPS2048509_CLEAN_CRYPTO_ALGNAME "ntruhps2048509" - -int PQCLEAN_NTRUHPS2048509_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk); - -int PQCLEAN_NTRUHPS2048509_CLEAN_crypto_kem_enc(uint8_t *c, uint8_t *k, const uint8_t *pk); - -int PQCLEAN_NTRUHPS2048509_CLEAN_crypto_kem_dec(uint8_t *k, const uint8_t *c, const uint8_t *sk); - -#endif diff --git a/src/kem/ntru/ntruhps2048509/clean/cmov.c b/src/kem/ntru/ntruhps2048509/clean/cmov.c deleted file mode 100644 index 6676796b..00000000 --- a/src/kem/ntru/ntruhps2048509/clean/cmov.c +++ /dev/null @@ -1,11 +0,0 @@ -#include "cmov.h" - -/* b = 1 means mov, b = 0 means don't mov*/ -void PQCLEAN_NTRUHPS2048509_CLEAN_cmov(unsigned char *r, const unsigned char *x, size_t len, unsigned char b) { - size_t i; - - b = (~b + 1); - for (i = 0; i < len; i++) { - r[i] ^= b & (x[i] ^ r[i]); - } -} diff --git a/src/kem/ntru/ntruhps2048509/clean/cmov.h b/src/kem/ntru/ntruhps2048509/clean/cmov.h deleted file mode 100644 index 11706220..00000000 --- a/src/kem/ntru/ntruhps2048509/clean/cmov.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef VERIFY_H -#define VERIFY_H - -#include "params.h" - -#include - -void PQCLEAN_NTRUHPS2048509_CLEAN_cmov(unsigned char *r, const unsigned char *x, size_t len, unsigned char b); - -#endif diff --git a/src/kem/ntru/ntruhps2048509/clean/crypto_sort_int32.c b/src/kem/ntru/ntruhps2048509/clean/crypto_sort_int32.c deleted file mode 100644 index 97b47545..00000000 --- a/src/kem/ntru/ntruhps2048509/clean/crypto_sort_int32.c +++ /dev/null @@ -1,86 +0,0 @@ -// Based on supercop-20190110/crypto_sort/int32/x86 - -#include "crypto_sort_int32.h" - -#include -#define int32 int32_t - -#define int32_MINMAX(a,b) \ - do { \ - int32_t ab = (b) ^ (a); \ - int32_t c = (int32_t)((int64_t)(b) - (int64_t)(a)); \ - c ^= ab & (c ^ (b)); \ - c >>= 31; \ - c &= ab; \ - (a) ^= c; \ - (b) ^= c; \ - } while(0) - -/* assume 2 <= n <= 0x40000000 */ -void PQCLEAN_NTRUHPS2048509_CLEAN_crypto_sort_int32(int32 *array, size_t n) { - size_t top, p, q, r, i, j; - int32 *x = array; - - top = 1; - while (top < n - top) { - top += top; - } - - for (p = top; p >= 1; p >>= 1) { - i = 0; - while (i + 2 * p <= n) { - for (j = i; j < i + p; ++j) { - int32_MINMAX(x[j], x[j + p]); - } - i += 2 * p; - } - for (j = i; j < n - p; ++j) { - int32_MINMAX(x[j], x[j + p]); - } - - i = 0; - j = 0; - for (q = top; q > p; q >>= 1) { - if (j != i) { - for (;;) { - if (j == n - q) { - goto done; - } - int32 a = x[j + p]; - for (r = q; r > p; r >>= 1) { - int32_MINMAX(a, x[j + r]); - } - x[j + p] = a; - ++j; - if (j == i + p) { - i += 2 * p; - break; - } - } - } - while (i + p <= n - q) { - for (j = i; j < i + p; ++j) { - int32 a = x[j + p]; - for (r = q; r > p; r >>= 1) { - int32_MINMAX(a, x[j + r]); - } - x[j + p] = a; - } - i += 2 * p; - } - /* now i + p > n - q */ - j = i; - while (j < n - q) { - int32 a = x[j + p]; - for (r = q; r > p; r >>= 1) { - int32_MINMAX(a, x[j + r]); - } - x[j + p] = a; - ++j; - } - -done: - ; - } - } -} diff --git a/src/kem/ntru/ntruhps2048509/clean/crypto_sort_int32.h b/src/kem/ntru/ntruhps2048509/clean/crypto_sort_int32.h deleted file mode 100644 index c571e6ab..00000000 --- a/src/kem/ntru/ntruhps2048509/clean/crypto_sort_int32.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef CRYPTO_SORT -#define CRYPTO_SORT - -#include "params.h" - -#include -#include - -void PQCLEAN_NTRUHPS2048509_CLEAN_crypto_sort_int32(int32_t *array, size_t n); - -#endif diff --git a/src/kem/ntru/ntruhps2048509/clean/kem.c b/src/kem/ntru/ntruhps2048509/clean/kem.c deleted file mode 100644 index 00831572..00000000 --- a/src/kem/ntru/ntruhps2048509/clean/kem.c +++ /dev/null @@ -1,63 +0,0 @@ -#include "api.h" -#include "cmov.h" -#include "fips202.h" -#include "owcpa.h" -#include "params.h" -#include "randombytes.h" -#include "sample.h" - -// API FUNCTIONS -int PQCLEAN_NTRUHPS2048509_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk) { - uint8_t seed[NTRU_SAMPLE_FG_BYTES]; - - randombytes(seed, NTRU_SAMPLE_FG_BYTES); - PQCLEAN_NTRUHPS2048509_CLEAN_owcpa_keypair(pk, sk, seed); - - randombytes(sk + NTRU_OWCPA_SECRETKEYBYTES, NTRU_PRFKEYBYTES); - - return 0; -} - -int PQCLEAN_NTRUHPS2048509_CLEAN_crypto_kem_enc(uint8_t *c, uint8_t *k, const uint8_t *pk) { - poly r, m; - uint8_t rm[NTRU_OWCPA_MSGBYTES]; - uint8_t rm_seed[NTRU_SAMPLE_RM_BYTES]; - - randombytes(rm_seed, NTRU_SAMPLE_RM_BYTES); - - PQCLEAN_NTRUHPS2048509_CLEAN_sample_rm(&r, &m, rm_seed); - - PQCLEAN_NTRUHPS2048509_CLEAN_poly_S3_tobytes(rm, &r); - PQCLEAN_NTRUHPS2048509_CLEAN_poly_S3_tobytes(rm + NTRU_PACK_TRINARY_BYTES, &m); - sha3_256(k, rm, NTRU_OWCPA_MSGBYTES); - - PQCLEAN_NTRUHPS2048509_CLEAN_poly_Z3_to_Zq(&r); - PQCLEAN_NTRUHPS2048509_CLEAN_owcpa_enc(c, &r, &m, pk); - - return 0; -} - -int PQCLEAN_NTRUHPS2048509_CLEAN_crypto_kem_dec(uint8_t *k, const uint8_t *c, const uint8_t *sk) { - int i, fail; - uint8_t rm[NTRU_OWCPA_MSGBYTES]; - uint8_t buf[NTRU_PRFKEYBYTES + NTRU_CIPHERTEXTBYTES]; - - fail = PQCLEAN_NTRUHPS2048509_CLEAN_owcpa_dec(rm, c, sk); - /* If fail = 0 then c = Enc(h, rm). There is no need to re-encapsulate. */ - /* See comment in PQCLEAN_NTRUHPS2048509_CLEAN_owcpa_dec for details. */ - - sha3_256(k, rm, NTRU_OWCPA_MSGBYTES); - - /* shake(secret PRF key || input ciphertext) */ - for (i = 0; i < NTRU_PRFKEYBYTES; i++) { - buf[i] = sk[i + NTRU_OWCPA_SECRETKEYBYTES]; - } - for (i = 0; i < NTRU_CIPHERTEXTBYTES; i++) { - buf[NTRU_PRFKEYBYTES + i] = c[i]; - } - sha3_256(rm, buf, NTRU_PRFKEYBYTES + NTRU_CIPHERTEXTBYTES); - - PQCLEAN_NTRUHPS2048509_CLEAN_cmov(k, rm, NTRU_SHAREDKEYBYTES, (unsigned char) fail); - - return 0; -} diff --git a/src/kem/ntru/ntruhps2048509/clean/owcpa.c b/src/kem/ntru/ntruhps2048509/clean/owcpa.c deleted file mode 100644 index c2b169be..00000000 --- a/src/kem/ntru/ntruhps2048509/clean/owcpa.c +++ /dev/null @@ -1,183 +0,0 @@ -#include "owcpa.h" -#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) { - /* 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; - uint32_t t = 0; - uint16_t c; - 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 |= 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, 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; - uint32_t t = 0; - uint16_t ps = 0; - uint16_t ms = 0; - for (i = 0; i < NTRU_N; i++) { - ps += m->coeffs[i] & 1; - ms += m->coeffs[i] & 2; - } - 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, - unsigned char *sk, - const unsigned char seed[NTRU_SAMPLE_FG_BYTES]) { - int i; - - poly x1, x2, x3, x4, x5; - - poly *f = &x1, *g = &x2, *invf_mod3 = &x3; - poly *gf = &x3, *invgf = &x4, *tmp = &x5; - poly *invh = &x3, *h = &x3; - - PQCLEAN_NTRUHPS2048509_CLEAN_sample_fg(f, g, seed); - - PQCLEAN_NTRUHPS2048509_CLEAN_poly_S3_inv(invf_mod3, f); - PQCLEAN_NTRUHPS2048509_CLEAN_poly_S3_tobytes(sk, f); - PQCLEAN_NTRUHPS2048509_CLEAN_poly_S3_tobytes(sk + NTRU_PACK_TRINARY_BYTES, invf_mod3); - - /* Lift coeffs of f and g from Z_p to Z_q */ - PQCLEAN_NTRUHPS2048509_CLEAN_poly_Z3_to_Zq(f); - PQCLEAN_NTRUHPS2048509_CLEAN_poly_Z3_to_Zq(g); - - - /* g = 3*g */ - for (i = 0; i < NTRU_N; i++) { - g->coeffs[i] = 3 * g->coeffs[i]; - } - - PQCLEAN_NTRUHPS2048509_CLEAN_poly_Rq_mul(gf, g, f); - - PQCLEAN_NTRUHPS2048509_CLEAN_poly_Rq_inv(invgf, gf); - - PQCLEAN_NTRUHPS2048509_CLEAN_poly_Rq_mul(tmp, invgf, f); - PQCLEAN_NTRUHPS2048509_CLEAN_poly_Sq_mul(invh, tmp, f); - PQCLEAN_NTRUHPS2048509_CLEAN_poly_Sq_tobytes(sk + 2 * NTRU_PACK_TRINARY_BYTES, invh); - - PQCLEAN_NTRUHPS2048509_CLEAN_poly_Rq_mul(tmp, invgf, g); - PQCLEAN_NTRUHPS2048509_CLEAN_poly_Rq_mul(h, tmp, g); - PQCLEAN_NTRUHPS2048509_CLEAN_poly_Rq_sum_zero_tobytes(pk, h); -} - - -void PQCLEAN_NTRUHPS2048509_CLEAN_owcpa_enc(unsigned char *c, - const poly *r, - const poly *m, - const unsigned char *pk) { - int i; - poly x1, x2; - poly *h = &x1, *liftm = &x1; - poly *ct = &x2; - - PQCLEAN_NTRUHPS2048509_CLEAN_poly_Rq_sum_zero_frombytes(h, pk); - - PQCLEAN_NTRUHPS2048509_CLEAN_poly_Rq_mul(ct, r, h); - - PQCLEAN_NTRUHPS2048509_CLEAN_poly_lift(liftm, m); - for (i = 0; i < NTRU_N; i++) { - ct->coeffs[i] = ct->coeffs[i] + liftm->coeffs[i]; - } - - PQCLEAN_NTRUHPS2048509_CLEAN_poly_Rq_sum_zero_tobytes(c, ct); -} - -int PQCLEAN_NTRUHPS2048509_CLEAN_owcpa_dec(unsigned char *rm, - const unsigned char *ciphertext, - const unsigned char *secretkey) { - int i; - int fail; - poly x1, x2, x3, x4; - - poly *c = &x1, *f = &x2, *cf = &x3; - poly *mf = &x2, *finv3 = &x3, *m = &x4; - poly *liftm = &x2, *invh = &x3, *r = &x4; - poly *b = &x1; - - PQCLEAN_NTRUHPS2048509_CLEAN_poly_Rq_sum_zero_frombytes(c, ciphertext); - PQCLEAN_NTRUHPS2048509_CLEAN_poly_S3_frombytes(f, secretkey); - PQCLEAN_NTRUHPS2048509_CLEAN_poly_Z3_to_Zq(f); - - PQCLEAN_NTRUHPS2048509_CLEAN_poly_Rq_mul(cf, c, f); - PQCLEAN_NTRUHPS2048509_CLEAN_poly_Rq_to_S3(mf, cf); - - PQCLEAN_NTRUHPS2048509_CLEAN_poly_S3_frombytes(finv3, secretkey + NTRU_PACK_TRINARY_BYTES); - PQCLEAN_NTRUHPS2048509_CLEAN_poly_S3_mul(m, mf, finv3); - PQCLEAN_NTRUHPS2048509_CLEAN_poly_S3_tobytes(rm + NTRU_PACK_TRINARY_BYTES, m); - - fail = 0; - - /* 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 */ - /* r (defined as b/h mod (q, Phi_n)) and m are in the message space. */ - /* (m can take any value in S3 in NTRU_HRSS) */ - fail |= owcpa_check_m(m); - - /* b = c - Lift(m) mod (q, x^n - 1) */ - PQCLEAN_NTRUHPS2048509_CLEAN_poly_lift(liftm, m); - for (i = 0; i < NTRU_N; i++) { - b->coeffs[i] = c->coeffs[i] - liftm->coeffs[i]; - } - - /* r = b / h mod (q, Phi_n) */ - PQCLEAN_NTRUHPS2048509_CLEAN_poly_Sq_frombytes(invh, secretkey + 2 * NTRU_PACK_TRINARY_BYTES); - PQCLEAN_NTRUHPS2048509_CLEAN_poly_Sq_mul(r, b, invh); - - /* NOTE: Our definition of r as b/h mod (q, Phi_n) follows Figure 4 of */ - /* [Sch18] https://eprint.iacr.org/2018/1174/20181203:032458. */ - /* This differs from Figure 10 of Saito--Xagawa--Yamakawa */ - /* [SXY17] https://eprint.iacr.org/2017/1005/20180516:055500 */ - /* where r gets a final reduction modulo p. */ - /* We need this change to use Proposition 1 of [Sch18]. */ - - /* Proposition 1 of [Sch18] shows that re-encryption with (r,m) yields c. */ - /* if and only if fail==0 after the following call to owcpa_check_r */ - /* The procedure given in Fig. 8 of [Sch18] can be skipped because we have */ - /* c(1) = 0 due to the use of poly_Rq_sum_zero_{to,from}bytes. */ - fail |= owcpa_check_r(r); - - PQCLEAN_NTRUHPS2048509_CLEAN_poly_trinary_Zq_to_Z3(r); - PQCLEAN_NTRUHPS2048509_CLEAN_poly_S3_tobytes(rm, r); - - return fail; -} diff --git a/src/kem/ntru/ntruhps2048509/clean/owcpa.h b/src/kem/ntru/ntruhps2048509/clean/owcpa.h deleted file mode 100644 index 7350df8f..00000000 --- a/src/kem/ntru/ntruhps2048509/clean/owcpa.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef OWCPA_H -#define OWCPA_H - -#include "params.h" -#include "poly.h" - -void PQCLEAN_NTRUHPS2048509_CLEAN_owcpa_keypair(unsigned char *pk, - unsigned char *sk, - const unsigned char seed[NTRU_SAMPLE_FG_BYTES]); - -void PQCLEAN_NTRUHPS2048509_CLEAN_owcpa_enc(unsigned char *c, - const poly *r, - const poly *m, - const unsigned char *pk); - -int PQCLEAN_NTRUHPS2048509_CLEAN_owcpa_dec(unsigned char *rm, - const unsigned char *ciphertext, - const unsigned char *secretkey); -#endif diff --git a/src/kem/ntru/ntruhps2048509/clean/pack3.c b/src/kem/ntru/ntruhps2048509/clean/pack3.c deleted file mode 100644 index a6607bf1..00000000 --- a/src/kem/ntru/ntruhps2048509/clean/pack3.c +++ /dev/null @@ -1,46 +0,0 @@ -#include "poly.h" - -void PQCLEAN_NTRUHPS2048509_CLEAN_poly_S3_tobytes(unsigned char msg[NTRU_OWCPA_MSGBYTES], const poly *a) { - int i; - unsigned char c; - int j; - - for (i = 0; i < NTRU_PACK_DEG / 5; i++) { - c = a->coeffs[5 * i + 4] & 255; - c = (3 * c + a->coeffs[5 * i + 3]) & 255; - c = (3 * c + a->coeffs[5 * i + 2]) & 255; - c = (3 * c + a->coeffs[5 * i + 1]) & 255; - c = (3 * c + a->coeffs[5 * i + 0]) & 255; - msg[i] = c; - } - i = NTRU_PACK_DEG / 5; - c = 0; - for (j = NTRU_PACK_DEG - (5 * i) - 1; j >= 0; j--) { - c = (3 * c + a->coeffs[5 * i + j]) & 255; - } - msg[i] = c; -} - -void PQCLEAN_NTRUHPS2048509_CLEAN_poly_S3_frombytes(poly *r, const unsigned char msg[NTRU_OWCPA_MSGBYTES]) { - int i; - unsigned char c; - int j; - - for (i = 0; i < NTRU_PACK_DEG / 5; i++) { - c = msg[i]; - r->coeffs[5 * i + 0] = c; - r->coeffs[5 * i + 1] = c * 171 >> 9; // this is division by 3 - r->coeffs[5 * i + 2] = c * 57 >> 9; // division by 3^2 - r->coeffs[5 * i + 3] = c * 19 >> 9; // division by 3^3 - r->coeffs[5 * i + 4] = c * 203 >> 14; // etc. - } - i = NTRU_PACK_DEG / 5; - c = msg[i]; - for (j = 0; (5 * i + j) < NTRU_PACK_DEG; j++) { - r->coeffs[5 * i + j] = c; - c = c * 171 >> 9; - } - r->coeffs[NTRU_N - 1] = 0; - PQCLEAN_NTRUHPS2048509_CLEAN_poly_mod_3_Phi_n(r); -} - diff --git a/src/kem/ntru/ntruhps2048509/clean/packq.c b/src/kem/ntru/ntruhps2048509/clean/packq.c deleted file mode 100644 index 25986be7..00000000 --- a/src/kem/ntru/ntruhps2048509/clean/packq.c +++ /dev/null @@ -1,93 +0,0 @@ -#include "poly.h" - -void PQCLEAN_NTRUHPS2048509_CLEAN_poly_Sq_tobytes(unsigned char *r, const poly *a) { - int i, j; - uint16_t t[8]; - - for (i = 0; i < NTRU_PACK_DEG / 8; i++) { - for (j = 0; j < 8; j++) { - t[j] = MODQ(a->coeffs[8 * i + j]); - } - - r[11 * i + 0] = (unsigned char) ( t[0] & 0xff); - r[11 * i + 1] = (unsigned char) ((t[0] >> 8) | ((t[1] & 0x1f) << 3)); - r[11 * i + 2] = (unsigned char) ((t[1] >> 5) | ((t[2] & 0x03) << 6)); - r[11 * i + 3] = (unsigned char) ((t[2] >> 2) & 0xff); - r[11 * i + 4] = (unsigned char) ((t[2] >> 10) | ((t[3] & 0x7f) << 1)); - r[11 * i + 5] = (unsigned char) ((t[3] >> 7) | ((t[4] & 0x0f) << 4)); - r[11 * i + 6] = (unsigned char) ((t[4] >> 4) | ((t[5] & 0x01) << 7)); - r[11 * i + 7] = (unsigned char) ((t[5] >> 1) & 0xff); - r[11 * i + 8] = (unsigned char) ((t[5] >> 9) | ((t[6] & 0x3f) << 2)); - r[11 * i + 9] = (unsigned char) ((t[6] >> 6) | ((t[7] & 0x07) << 5)); - r[11 * i + 10] = (unsigned char) ((t[7] >> 3)); - } - - for (j = 0; j < NTRU_PACK_DEG - 8 * i; j++) { - t[j] = MODQ(a->coeffs[8 * i + j]); - } - for (; j < 8; j++) { - t[j] = 0; - } - - switch (NTRU_PACK_DEG & 0x07) { - // cases 0 and 6 are impossible since 2 generates (Z/n)* and - // p mod 8 in {1, 7} implies that 2 is a quadratic residue. - case 4: - r[11 * i + 0] = (unsigned char) (t[0] & 0xff); - r[11 * i + 1] = (unsigned char) (t[0] >> 8) | ((t[1] & 0x1f) << 3); - r[11 * i + 2] = (unsigned char) (t[1] >> 5) | ((t[2] & 0x03) << 6); - r[11 * i + 3] = (unsigned char) (t[2] >> 2) & 0xff; - r[11 * i + 4] = (unsigned char) (t[2] >> 10) | ((t[3] & 0x7f) << 1); - r[11 * i + 5] = (unsigned char) (t[3] >> 7) | ((t[4] & 0x0f) << 4); - break; - case 2: - r[11 * i + 0] = (unsigned char) (t[0] & 0xff); - r[11 * i + 1] = (unsigned char) (t[0] >> 8) | ((t[1] & 0x1f) << 3); - r[11 * i + 2] = (unsigned char) (t[1] >> 5) | ((t[2] & 0x03) << 6); - break; - } -} - -void PQCLEAN_NTRUHPS2048509_CLEAN_poly_Sq_frombytes(poly *r, const unsigned char *a) { - int i; - for (i = 0; i < NTRU_PACK_DEG / 8; i++) { - r->coeffs[8 * i + 0] = (a[11 * i + 0] >> 0) | (((uint16_t)a[11 * i + 1] & 0x07) << 8); - r->coeffs[8 * i + 1] = (a[11 * i + 1] >> 3) | (((uint16_t)a[11 * i + 2] & 0x3f) << 5); - r->coeffs[8 * i + 2] = (a[11 * i + 2] >> 6) | (((uint16_t)a[11 * i + 3] & 0xff) << 2) | (((uint16_t)a[11 * i + 4] & 0x01) << 10); - r->coeffs[8 * i + 3] = (a[11 * i + 4] >> 1) | (((uint16_t)a[11 * i + 5] & 0x0f) << 7); - r->coeffs[8 * i + 4] = (a[11 * i + 5] >> 4) | (((uint16_t)a[11 * i + 6] & 0x7f) << 4); - r->coeffs[8 * i + 5] = (a[11 * i + 6] >> 7) | (((uint16_t)a[11 * i + 7] & 0xff) << 1) | (((uint16_t)a[11 * i + 8] & 0x03) << 9); - r->coeffs[8 * i + 6] = (a[11 * i + 8] >> 2) | (((uint16_t)a[11 * i + 9] & 0x1f) << 6); - r->coeffs[8 * i + 7] = (a[11 * i + 9] >> 5) | (((uint16_t)a[11 * i + 10] & 0xff) << 3); - } - switch (NTRU_PACK_DEG & 0x07) { - // cases 0 and 6 are impossible since 2 generates (Z/n)* and - // p mod 8 in {1, 7} implies that 2 is a quadratic residue. - case 4: - r->coeffs[8 * i + 0] = (a[11 * i + 0] >> 0) | (((uint16_t)a[11 * i + 1] & 0x07) << 8); - r->coeffs[8 * i + 1] = (a[11 * i + 1] >> 3) | (((uint16_t)a[11 * i + 2] & 0x3f) << 5); - r->coeffs[8 * i + 2] = (a[11 * i + 2] >> 6) | (((uint16_t)a[11 * i + 3] & 0xff) << 2) | (((uint16_t)a[11 * i + 4] & 0x01) << 10); - r->coeffs[8 * i + 3] = (a[11 * i + 4] >> 1) | (((uint16_t)a[11 * i + 5] & 0x0f) << 7); - break; - case 2: - r->coeffs[8 * i + 0] = (a[11 * i + 0] >> 0) | (((uint16_t)a[11 * i + 1] & 0x07) << 8); - r->coeffs[8 * i + 1] = (a[11 * i + 1] >> 3) | (((uint16_t)a[11 * i + 2] & 0x3f) << 5); - break; - } - r->coeffs[NTRU_N - 1] = 0; -} - -void PQCLEAN_NTRUHPS2048509_CLEAN_poly_Rq_sum_zero_tobytes(unsigned char *r, const poly *a) { - PQCLEAN_NTRUHPS2048509_CLEAN_poly_Sq_tobytes(r, a); -} - -void PQCLEAN_NTRUHPS2048509_CLEAN_poly_Rq_sum_zero_frombytes(poly *r, const unsigned char *a) { - int i; - PQCLEAN_NTRUHPS2048509_CLEAN_poly_Sq_frombytes(r, a); - - /* Set r[n-1] so that the sum of coefficients is zero mod q */ - r->coeffs[NTRU_N - 1] = 0; - for (i = 0; i < NTRU_PACK_DEG; i++) { - r->coeffs[NTRU_N - 1] -= r->coeffs[i]; - } -} diff --git a/src/kem/ntru/ntruhps2048509/clean/params.h b/src/kem/ntru/ntruhps2048509/clean/params.h deleted file mode 100644 index 4f461494..00000000 --- a/src/kem/ntru/ntruhps2048509/clean/params.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef PARAMS_H -#define PARAMS_H - -#define NTRU_HPS -#define NTRU_N 509 -#define NTRU_LOGQ 11 - - -/* Do not modify below this line */ - -#define PAD32(X) ((((X) + 31)/32)*32) - -#define NTRU_Q (1 << NTRU_LOGQ) -#define NTRU_WEIGHT (NTRU_Q/8 - 2) - -#define NTRU_SEEDBYTES 32 -#define NTRU_PRFKEYBYTES 32 -#define NTRU_SHAREDKEYBYTES 32 - -#define NTRU_SAMPLE_IID_BYTES (NTRU_N-1) -#define NTRU_SAMPLE_FT_BYTES ((30*(NTRU_N-1)+7)/8) -#define NTRU_SAMPLE_FG_BYTES (NTRU_SAMPLE_IID_BYTES+NTRU_SAMPLE_FT_BYTES) -#define NTRU_SAMPLE_RM_BYTES (NTRU_SAMPLE_IID_BYTES+NTRU_SAMPLE_FT_BYTES) - -#define NTRU_PACK_DEG (NTRU_N-1) -#define NTRU_PACK_TRINARY_BYTES ((NTRU_PACK_DEG+4)/5) - -#define NTRU_OWCPA_MSGBYTES (2*NTRU_PACK_TRINARY_BYTES) -#define NTRU_OWCPA_PUBLICKEYBYTES ((NTRU_LOGQ*NTRU_PACK_DEG+7)/8) -#define NTRU_OWCPA_SECRETKEYBYTES (2*NTRU_PACK_TRINARY_BYTES + NTRU_OWCPA_PUBLICKEYBYTES) -#define NTRU_OWCPA_BYTES ((NTRU_LOGQ*NTRU_PACK_DEG+7)/8) - -#define NTRU_PUBLICKEYBYTES (NTRU_OWCPA_PUBLICKEYBYTES) -#define NTRU_SECRETKEYBYTES (NTRU_OWCPA_SECRETKEYBYTES + NTRU_PRFKEYBYTES) -#define NTRU_CIPHERTEXTBYTES (NTRU_OWCPA_BYTES) - -#endif diff --git a/src/kem/ntru/ntruhps2048509/clean/poly.c b/src/kem/ntru/ntruhps2048509/clean/poly.c deleted file mode 100644 index a336eea6..00000000 --- a/src/kem/ntru/ntruhps2048509/clean/poly.c +++ /dev/null @@ -1,75 +0,0 @@ -#include "poly.h" - -/* Map {0, 1, 2} -> {0,1,q-1} in place */ -void PQCLEAN_NTRUHPS2048509_CLEAN_poly_Z3_to_Zq(poly *r) { - int i; - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = r->coeffs[i] | ((-(r->coeffs[i] >> 1)) & (NTRU_Q - 1)); - } -} - -/* Map {0, 1, q-1} -> {0,1,2} in place */ -void PQCLEAN_NTRUHPS2048509_CLEAN_poly_trinary_Zq_to_Z3(poly *r) { - int i; - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = MODQ(r->coeffs[i]); - r->coeffs[i] = 3 & (r->coeffs[i] ^ (r->coeffs[i] >> (NTRU_LOGQ - 1))); - } -} - -void PQCLEAN_NTRUHPS2048509_CLEAN_poly_Sq_mul(poly *r, const poly *a, const poly *b) { - PQCLEAN_NTRUHPS2048509_CLEAN_poly_Rq_mul(r, a, b); - PQCLEAN_NTRUHPS2048509_CLEAN_poly_mod_q_Phi_n(r); -} - -void PQCLEAN_NTRUHPS2048509_CLEAN_poly_S3_mul(poly *r, const poly *a, const poly *b) { - int i; - - /* Our S3 multiplications do not overflow mod q, */ - /* so we can re-purpose PQCLEAN_NTRUHPS2048509_CLEAN_poly_Rq_mul, as long as we */ - /* follow with an explicit reduction mod q. */ - PQCLEAN_NTRUHPS2048509_CLEAN_poly_Rq_mul(r, a, b); - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = MODQ(r->coeffs[i]); - } - PQCLEAN_NTRUHPS2048509_CLEAN_poly_mod_3_Phi_n(r); -} - -static void PQCLEAN_NTRUHPS2048509_CLEAN_poly_R2_inv_to_Rq_inv(poly *r, const poly *ai, const poly *a) { - - int i; - poly b, c; - poly s; - - // for 0..4 - // ai = ai * (2 - a*ai) mod q - for (i = 0; i < NTRU_N; i++) { - b.coeffs[i] = -(a->coeffs[i]); - } - - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = ai->coeffs[i]; - } - - PQCLEAN_NTRUHPS2048509_CLEAN_poly_Rq_mul(&c, r, &b); - c.coeffs[0] += 2; // c = 2 - a*ai - PQCLEAN_NTRUHPS2048509_CLEAN_poly_Rq_mul(&s, &c, r); // s = ai*c - - PQCLEAN_NTRUHPS2048509_CLEAN_poly_Rq_mul(&c, &s, &b); - c.coeffs[0] += 2; // c = 2 - a*s - PQCLEAN_NTRUHPS2048509_CLEAN_poly_Rq_mul(r, &c, &s); // r = s*c - - PQCLEAN_NTRUHPS2048509_CLEAN_poly_Rq_mul(&c, r, &b); - c.coeffs[0] += 2; // c = 2 - a*r - PQCLEAN_NTRUHPS2048509_CLEAN_poly_Rq_mul(&s, &c, r); // s = r*c - - PQCLEAN_NTRUHPS2048509_CLEAN_poly_Rq_mul(&c, &s, &b); - c.coeffs[0] += 2; // c = 2 - a*s - PQCLEAN_NTRUHPS2048509_CLEAN_poly_Rq_mul(r, &c, &s); // r = s*c -} - -void PQCLEAN_NTRUHPS2048509_CLEAN_poly_Rq_inv(poly *r, const poly *a) { - poly ai2; - PQCLEAN_NTRUHPS2048509_CLEAN_poly_R2_inv(&ai2, a); - PQCLEAN_NTRUHPS2048509_CLEAN_poly_R2_inv_to_Rq_inv(r, &ai2, a); -} diff --git a/src/kem/ntru/ntruhps2048509/clean/poly.h b/src/kem/ntru/ntruhps2048509/clean/poly.h deleted file mode 100644 index 22a2f2ec..00000000 --- a/src/kem/ntru/ntruhps2048509/clean/poly.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef POLY_H -#define POLY_H - -#include "params.h" - -#include -#include - -#define MODQ(X) ((X) & (NTRU_Q-1)) - -typedef struct { - uint16_t coeffs[NTRU_N]; -} poly; - -void PQCLEAN_NTRUHPS2048509_CLEAN_poly_mod_3_Phi_n(poly *r); -void PQCLEAN_NTRUHPS2048509_CLEAN_poly_mod_q_Phi_n(poly *r); - -void PQCLEAN_NTRUHPS2048509_CLEAN_poly_Sq_tobytes(unsigned char *r, const poly *a); -void PQCLEAN_NTRUHPS2048509_CLEAN_poly_Sq_frombytes(poly *r, const unsigned char *a); - -void PQCLEAN_NTRUHPS2048509_CLEAN_poly_Rq_sum_zero_tobytes(unsigned char *r, const poly *a); -void PQCLEAN_NTRUHPS2048509_CLEAN_poly_Rq_sum_zero_frombytes(poly *r, const unsigned char *a); - -void PQCLEAN_NTRUHPS2048509_CLEAN_poly_S3_tobytes(unsigned char msg[NTRU_PACK_TRINARY_BYTES], const poly *a); -void PQCLEAN_NTRUHPS2048509_CLEAN_poly_S3_frombytes(poly *r, const unsigned char msg[NTRU_PACK_TRINARY_BYTES]); - -void PQCLEAN_NTRUHPS2048509_CLEAN_poly_Sq_mul(poly *r, const poly *a, const poly *b); -void PQCLEAN_NTRUHPS2048509_CLEAN_poly_Rq_mul(poly *r, const poly *a, const poly *b); -void PQCLEAN_NTRUHPS2048509_CLEAN_poly_S3_mul(poly *r, const poly *a, const poly *b); -void PQCLEAN_NTRUHPS2048509_CLEAN_poly_lift(poly *r, const poly *a); -void PQCLEAN_NTRUHPS2048509_CLEAN_poly_Rq_to_S3(poly *r, const poly *a); - -void PQCLEAN_NTRUHPS2048509_CLEAN_poly_R2_inv(poly *r, const poly *a); -void PQCLEAN_NTRUHPS2048509_CLEAN_poly_Rq_inv(poly *r, const poly *a); -void PQCLEAN_NTRUHPS2048509_CLEAN_poly_S3_inv(poly *r, const poly *a); - -void PQCLEAN_NTRUHPS2048509_CLEAN_poly_Z3_to_Zq(poly *r); -void PQCLEAN_NTRUHPS2048509_CLEAN_poly_trinary_Zq_to_Z3(poly *r); -#endif diff --git a/src/kem/ntru/ntruhps2048509/clean/poly_lift.c b/src/kem/ntru/ntruhps2048509/clean/poly_lift.c deleted file mode 100644 index 0f8aab77..00000000 --- a/src/kem/ntru/ntruhps2048509/clean/poly_lift.c +++ /dev/null @@ -1,11 +0,0 @@ -#include "poly.h" - -void PQCLEAN_NTRUHPS2048509_CLEAN_poly_lift(poly *r, const poly *a) { - int i; - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = a->coeffs[i]; - } - PQCLEAN_NTRUHPS2048509_CLEAN_poly_Z3_to_Zq(r); -} - - diff --git a/src/kem/ntru/ntruhps2048509/clean/poly_mod.c b/src/kem/ntru/ntruhps2048509/clean/poly_mod.c deleted file mode 100644 index 23238032..00000000 --- a/src/kem/ntru/ntruhps2048509/clean/poly_mod.c +++ /dev/null @@ -1,53 +0,0 @@ -#include "poly.h" - -static uint16_t mod3(uint16_t a) { - uint16_t r; - int16_t t, c; - - r = (a >> 8) + (a & 0xff); // r mod 255 == a mod 255 - r = (r >> 4) + (r & 0xf); // r' mod 15 == r mod 15 - r = (r >> 2) + (r & 0x3); // r' mod 3 == r mod 3 - r = (r >> 2) + (r & 0x3); // r' mod 3 == r mod 3 - - t = r - 3; - c = t >> 15; - - return (c & r) ^ (~c & t); -} - -void PQCLEAN_NTRUHPS2048509_CLEAN_poly_mod_3_Phi_n(poly *r) { - int i; - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = mod3(r->coeffs[i] + 2 * r->coeffs[NTRU_N - 1]); - } -} - -void PQCLEAN_NTRUHPS2048509_CLEAN_poly_mod_q_Phi_n(poly *r) { - int i; - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = r->coeffs[i] - r->coeffs[NTRU_N - 1]; - } -} - -void PQCLEAN_NTRUHPS2048509_CLEAN_poly_Rq_to_S3(poly *r, const poly *a) { - int i; - uint16_t flag; - - /* 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++) { - /* 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/src/kem/ntru/ntruhps2048509/clean/poly_r2_inv.c b/src/kem/ntru/ntruhps2048509/clean/poly_r2_inv.c deleted file mode 100644 index 82e3164d..00000000 --- a/src/kem/ntru/ntruhps2048509/clean/poly_r2_inv.c +++ /dev/null @@ -1,69 +0,0 @@ -/* Based on supercop-20200702/crypto_core/invhrss701/simpler/core.c */ - -#include "poly.h" - -/* return -1 if x<0 and y<0; otherwise return 0 */ -static inline int16_t both_negative_mask(int16_t x, int16_t y) { - return (x & y) >> 15; -} - -void PQCLEAN_NTRUHPS2048509_CLEAN_poly_R2_inv(poly *r, const poly *a) { - poly f, g, v, w; - size_t i, loop; - int16_t delta, sign, swap, t; - - for (i = 0; i < NTRU_N; ++i) { - v.coeffs[i] = 0; - } - for (i = 0; i < NTRU_N; ++i) { - w.coeffs[i] = 0; - } - w.coeffs[0] = 1; - - for (i = 0; i < NTRU_N; ++i) { - f.coeffs[i] = 1; - } - for (i = 0; i < NTRU_N - 1; ++i) { - g.coeffs[NTRU_N - 2 - i] = (a->coeffs[i] ^ a->coeffs[NTRU_N - 1]) & 1; - } - g.coeffs[NTRU_N - 1] = 0; - - delta = 1; - - for (loop = 0; loop < 2 * (NTRU_N - 1) - 1; ++loop) { - for (i = NTRU_N - 1; i > 0; --i) { - v.coeffs[i] = v.coeffs[i - 1]; - } - v.coeffs[0] = 0; - - sign = g.coeffs[0] & f.coeffs[0]; - swap = both_negative_mask(-delta, -(int16_t) g.coeffs[0]); - delta ^= swap & (delta ^ -delta); - delta += 1; - - for (i = 0; i < NTRU_N; ++i) { - t = swap & (f.coeffs[i] ^ g.coeffs[i]); - f.coeffs[i] ^= t; - g.coeffs[i] ^= t; - t = swap & (v.coeffs[i] ^ w.coeffs[i]); - v.coeffs[i] ^= t; - w.coeffs[i] ^= t; - } - - for (i = 0; i < NTRU_N; ++i) { - g.coeffs[i] = g.coeffs[i] ^ (sign & f.coeffs[i]); - } - for (i = 0; i < NTRU_N; ++i) { - w.coeffs[i] = w.coeffs[i] ^ (sign & v.coeffs[i]); - } - for (i = 0; i < NTRU_N - 1; ++i) { - g.coeffs[i] = g.coeffs[i + 1]; - } - g.coeffs[NTRU_N - 1] = 0; - } - - for (i = 0; i < NTRU_N - 1; ++i) { - r->coeffs[i] = v.coeffs[NTRU_N - 2 - i]; - } - r->coeffs[NTRU_N - 1] = 0; -} diff --git a/src/kem/ntru/ntruhps2048509/clean/poly_rq_mul.c b/src/kem/ntru/ntruhps2048509/clean/poly_rq_mul.c deleted file mode 100644 index 37fce357..00000000 --- a/src/kem/ntru/ntruhps2048509/clean/poly_rq_mul.c +++ /dev/null @@ -1,284 +0,0 @@ -#include "poly.h" - -/* Polynomial multiplication using */ -/* Toom-4 and two layers of Karatsuba. */ - -#define L PAD32(NTRU_N) -#define M (L/4) -#define K (L/16) - -static void toom4_k2x2_mul(uint16_t ab[2 * L], const uint16_t a[L], const uint16_t b[L]); - -static void toom4_k2x2_eval_0(uint16_t r[9 * K], const uint16_t a[M]); -static void toom4_k2x2_eval_p1(uint16_t r[9 * K], const uint16_t a[M]); -static void toom4_k2x2_eval_m1(uint16_t r[9 * K], const uint16_t a[M]); -static void toom4_k2x2_eval_p2(uint16_t r[9 * K], const uint16_t a[M]); -static void toom4_k2x2_eval_m2(uint16_t r[9 * K], const uint16_t a[M]); -static void toom4_k2x2_eval_p3(uint16_t r[9 * K], const uint16_t a[M]); -static void toom4_k2x2_eval_inf(uint16_t r[9 * K], const uint16_t a[M]); -static inline void k2x2_eval(uint16_t r[9 * K]); - -static void toom4_k2x2_basemul(uint16_t r[18 * K], const uint16_t a[9 * K], const uint16_t b[9 * K]); -static inline void schoolbook_KxK(uint16_t r[2 * K], const uint16_t a[K], const uint16_t b[K]); - -static void toom4_k2x2_interpolate(uint16_t r[2 * M], const uint16_t a[63 * 2 * K]); -static inline void k2x2_interpolate(uint16_t r[M], const uint16_t a[9 * K]); - -void PQCLEAN_NTRUHPS2048509_CLEAN_poly_Rq_mul(poly *r, const poly *a, const poly *b) { - size_t i; - uint16_t ab[2 * L]; - - for (i = 0; i < NTRU_N; i++) { - ab[i] = a->coeffs[i]; - ab[L + i] = b->coeffs[i]; - } - for (i = NTRU_N; i < L; i++) { - ab[i] = 0; - ab[L + i] = 0; - } - - toom4_k2x2_mul(ab, ab, ab + L); - - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = ab[i] + ab[NTRU_N + i]; - } -} - -static void toom4_k2x2_mul(uint16_t ab[2 * L], const uint16_t a[L], const uint16_t b[L]) { - uint16_t tmpA[9 * K]; - uint16_t tmpB[9 * K]; - uint16_t eC[63 * 2 * K]; - - toom4_k2x2_eval_0(tmpA, a); - toom4_k2x2_eval_0(tmpB, b); - toom4_k2x2_basemul(eC + 0 * 9 * 2 * K, tmpA, tmpB); - - toom4_k2x2_eval_p1(tmpA, a); - toom4_k2x2_eval_p1(tmpB, b); - toom4_k2x2_basemul(eC + 1 * 9 * 2 * K, tmpA, tmpB); - - toom4_k2x2_eval_m1(tmpA, a); - toom4_k2x2_eval_m1(tmpB, b); - toom4_k2x2_basemul(eC + 2 * 9 * 2 * K, tmpA, tmpB); - - toom4_k2x2_eval_p2(tmpA, a); - toom4_k2x2_eval_p2(tmpB, b); - toom4_k2x2_basemul(eC + 3 * 9 * 2 * K, tmpA, tmpB); - - toom4_k2x2_eval_m2(tmpA, a); - toom4_k2x2_eval_m2(tmpB, b); - toom4_k2x2_basemul(eC + 4 * 9 * 2 * K, tmpA, tmpB); - - toom4_k2x2_eval_p3(tmpA, a); - toom4_k2x2_eval_p3(tmpB, b); - toom4_k2x2_basemul(eC + 5 * 9 * 2 * K, tmpA, tmpB); - - toom4_k2x2_eval_inf(tmpA, a); - toom4_k2x2_eval_inf(tmpB, b); - toom4_k2x2_basemul(eC + 6 * 9 * 2 * K, tmpA, tmpB); - - toom4_k2x2_interpolate(ab, eC); -} - - -static void toom4_k2x2_eval_0(uint16_t r[9 * K], const uint16_t a[M]) { - for (size_t i = 0; i < M; i++) { - r[i] = a[i]; - } - k2x2_eval(r); -} - -static void toom4_k2x2_eval_p1(uint16_t r[9 * K], const uint16_t a[M]) { - for (size_t i = 0; i < M; i++) { - r[i] = a[0 * M + i]; - r[i] += a[1 * M + i]; - r[i] += a[2 * M + i]; - r[i] += a[3 * M + i]; - } - k2x2_eval(r); -} - -static void toom4_k2x2_eval_m1(uint16_t r[9 * K], const uint16_t a[M]) { - for (size_t i = 0; i < M; i++) { - r[i] = a[0 * M + i]; - r[i] -= a[1 * M + i]; - r[i] += a[2 * M + i]; - r[i] -= a[3 * M + i]; - } - k2x2_eval(r); -} - -static void toom4_k2x2_eval_p2(uint16_t r[9 * K], const uint16_t a[M]) { - for (size_t i = 0; i < M; i++) { - r[i] = a[0 * M + i]; - r[i] += 2 * a[1 * M + i]; - r[i] += 4 * a[2 * M + i]; - r[i] += 8 * a[3 * M + i]; - } - k2x2_eval(r); -} - -static void toom4_k2x2_eval_m2(uint16_t r[9 * K], const uint16_t a[M]) { - for (size_t i = 0; i < M; i++) { - r[i] = a[0 * M + i]; - r[i] -= 2 * a[1 * M + i]; - r[i] += 4 * a[2 * M + i]; - r[i] -= 8 * a[3 * M + i]; - } - k2x2_eval(r); -} - -static void toom4_k2x2_eval_p3(uint16_t r[9 * K], const uint16_t a[M]) { - for (size_t i = 0; i < M; i++) { - r[i] = a[0 * M + i]; - r[i] += 3 * a[1 * M + i]; - r[i] += 9 * a[2 * M + i]; - r[i] += 27 * a[3 * M + i]; - } - k2x2_eval(r); -} - -static void toom4_k2x2_eval_inf(uint16_t r[9 * K], const uint16_t a[M]) { - for (size_t i = 0; i < M; i++) { - r[i] = a[3 * M + i]; - } - k2x2_eval(r); -} - -static inline void k2x2_eval(uint16_t r[9 * K]) { - /* Input: e + f.Y + g.Y^2 + h.Y^3 */ - /* Output: [ e | f | g | h | e+f | f+h | g+e | h+g | e+f+g+h ] */ - - size_t i; - for (i = 0; i < 4 * K; i++) { - r[4 * K + i] = r[i]; - } - for (i = 0; i < K; i++) { - r[4 * K + i] += r[1 * K + i]; - r[5 * K + i] += r[3 * K + i]; - r[6 * K + i] += r[0 * K + i]; - r[7 * K + i] += r[2 * K + i]; - r[8 * K + i] = r[5 * K + i]; - r[8 * K + i] += r[6 * K + i]; - } -} - -static void toom4_k2x2_basemul(uint16_t r[18 * K], const uint16_t a[9 * K], const uint16_t b[9 * K]) { - schoolbook_KxK(r + 0 * 2 * K, a + 0 * K, b + 0 * K); - schoolbook_KxK(r + 1 * 2 * K, a + 1 * K, b + 1 * K); - schoolbook_KxK(r + 2 * 2 * K, a + 2 * K, b + 2 * K); - schoolbook_KxK(r + 3 * 2 * K, a + 3 * K, b + 3 * K); - schoolbook_KxK(r + 4 * 2 * K, a + 4 * K, b + 4 * K); - schoolbook_KxK(r + 5 * 2 * K, a + 5 * K, b + 5 * K); - schoolbook_KxK(r + 6 * 2 * K, a + 6 * K, b + 6 * K); - schoolbook_KxK(r + 7 * 2 * K, a + 7 * K, b + 7 * K); - schoolbook_KxK(r + 8 * 2 * K, a + 8 * K, b + 8 * K); -} - -static inline void schoolbook_KxK(uint16_t r[2 * K], const uint16_t a[K], const uint16_t b[K]) { - size_t i, j; - for (j = 0; j < K; j++) { - r[j] = a[0] * (uint32_t)b[j]; - } - for (i = 1; i < K; i++) { - for (j = 0; j < K - 1; j++) { - r[i + j] += a[i] * (uint32_t)b[j]; - } - r[i + K - 1] = a[i] * (uint32_t)b[K - 1]; - } - r[2 * K - 1] = 0; -} - -static void toom4_k2x2_interpolate(uint16_t r[2 * M], const uint16_t a[7 * 18 * K]) { - size_t i; - - uint16_t P1[2 * M]; - uint16_t Pm1[2 * M]; - uint16_t P2[2 * M]; - uint16_t Pm2[2 * M]; - - uint16_t *C0 = r; - uint16_t *C2 = r + 2 * M; - uint16_t *C4 = r + 4 * M; - uint16_t *C6 = r + 6 * M; - - uint16_t V0, V1, V2; - - k2x2_interpolate(C0, a + 0 * 9 * 2 * K); - k2x2_interpolate(P1, a + 1 * 9 * 2 * K); - k2x2_interpolate(Pm1, a + 2 * 9 * 2 * K); - k2x2_interpolate(P2, a + 3 * 9 * 2 * K); - k2x2_interpolate(Pm2, a + 4 * 9 * 2 * K); - k2x2_interpolate(C6, a + 6 * 9 * 2 * K); - - for (i = 0; i < 2 * M; i++) { - V0 = ((uint32_t)(P1[i] + Pm1[i])) >> 1; - V0 = V0 - C0[i] - C6[i]; - V1 = ((uint32_t)(P2[i] + Pm2[i] - 2 * C0[i] - 128 * C6[i])) >> 3; - C4[i] = 43691 * (uint32_t)(V1 - V0); - C2[i] = V0 - C4[i]; - P1[i] = ((uint32_t)(P1[i] - Pm1[i])) >> 1; - } - - /* reuse Pm1 for P3 */ -#define P3 Pm1 - k2x2_interpolate(P3, a + 5 * 9 * 2 * K); - - for (i = 0; i < 2 * M; i++) { - V0 = P1[i]; - V1 = 43691 * (((uint32_t)(P2[i] - Pm2[i]) >> 2) - V0); - V2 = 43691 * (uint32_t)(P3[i] - C0[i] - 9 * (C2[i] + 9 * (C4[i] + 9 * C6[i]))); - V2 = ((uint32_t)(V2 - V0)) >> 3; - V2 -= V1; - P3[i] = 52429 * (uint32_t)V2; - P2[i] = V1 - V2; - P1[i] = V0 - P2[i] - P3[i]; - } - - for (i = 0; i < 2 * M; i++) { - r[1 * M + i] += P1[i]; - r[3 * M + i] += P2[i]; - r[5 * M + i] += P3[i]; - } -} - -static inline void k2x2_interpolate(uint16_t r[M], const uint16_t a[9 * K]) { - size_t i; - uint16_t tmp[4 * K]; - - for (i = 0; i < 2 * K; i++) { - r[0 * K + i] = a[0 * K + i]; - r[2 * K + i] = a[2 * K + i]; - } - - for (i = 0; i < 2 * K; i++) { - r[1 * K + i] += a[8 * K + i] - a[0 * K + i] - a[2 * K + i]; - } - - for (i = 0; i < 2 * K; i++) { - r[4 * K + i] = a[4 * K + i]; - r[6 * K + i] = a[6 * K + i]; - } - - for (i = 0; i < 2 * K; i++) { - r[5 * K + i] += a[14 * K + i] - a[4 * K + i] - a[6 * K + i]; - } - - for (i = 0; i < 2 * K; i++) { - tmp[0 * K + i] = a[12 * K + i]; - tmp[2 * K + i] = a[10 * K + i]; - } - - for (i = 0; i < 2 * K; i++) { - tmp[K + i] += a[16 * K + i] - a[12 * K + i] - a[10 * K + i]; - } - - for (i = 0; i < 4 * K; i++) { - tmp[0 * K + i] = tmp[0 * K + i] - r[0 * K + i] - r[4 * K + i]; - } - - for (i = 0; i < 4 * K; i++) { - r[2 * K + i] += tmp[0 * K + i]; - } -} - diff --git a/src/kem/ntru/ntruhps2048509/clean/poly_s3_inv.c b/src/kem/ntru/ntruhps2048509/clean/poly_s3_inv.c deleted file mode 100644 index 6887e7f6..00000000 --- a/src/kem/ntru/ntruhps2048509/clean/poly_s3_inv.c +++ /dev/null @@ -1,78 +0,0 @@ -/* Based on supercop-20200702/crypto_core/invhrss701/simpler/core.c */ - -#include "poly.h" - -static inline uint8_t mod3(uint8_t a) { /* a between 0 and 9 */ - int16_t t, c; - a = (a >> 2) + (a & 3); /* between 0 and 4 */ - t = a - 3; - c = t >> 5; - return (uint8_t) (t ^ (c & (a ^ t))); -} - -/* return -1 if x<0 and y<0; otherwise return 0 */ -static inline int16_t both_negative_mask(int16_t x, int16_t y) { - return (x & y) >> 15; -} - -void PQCLEAN_NTRUHPS2048509_CLEAN_poly_S3_inv(poly *r, const poly *a) { - poly f, g, v, w; - size_t i, loop; - int16_t delta, sign, swap, t; - - for (i = 0; i < NTRU_N; ++i) { - v.coeffs[i] = 0; - } - for (i = 0; i < NTRU_N; ++i) { - w.coeffs[i] = 0; - } - w.coeffs[0] = 1; - - for (i = 0; i < NTRU_N; ++i) { - f.coeffs[i] = 1; - } - for (i = 0; i < NTRU_N - 1; ++i) { - g.coeffs[NTRU_N - 2 - i] = mod3((a->coeffs[i] & 3) + 2 * (a->coeffs[NTRU_N - 1] & 3)); - } - g.coeffs[NTRU_N - 1] = 0; - - delta = 1; - - for (loop = 0; loop < 2 * (NTRU_N - 1) - 1; ++loop) { - for (i = NTRU_N - 1; i > 0; --i) { - v.coeffs[i] = v.coeffs[i - 1]; - } - v.coeffs[0] = 0; - - sign = mod3((uint8_t) (2 * g.coeffs[0] * f.coeffs[0])); - swap = both_negative_mask(-delta, -(int16_t) g.coeffs[0]); - delta ^= swap & (delta ^ -delta); - delta += 1; - - for (i = 0; i < NTRU_N; ++i) { - t = swap & (f.coeffs[i] ^ g.coeffs[i]); - f.coeffs[i] ^= t; - g.coeffs[i] ^= t; - t = swap & (v.coeffs[i] ^ w.coeffs[i]); - v.coeffs[i] ^= t; - w.coeffs[i] ^= t; - } - - for (i = 0; i < NTRU_N; ++i) { - g.coeffs[i] = mod3((uint8_t) (g.coeffs[i] + sign * f.coeffs[i])); - } - for (i = 0; i < NTRU_N; ++i) { - w.coeffs[i] = mod3((uint8_t) (w.coeffs[i] + sign * v.coeffs[i])); - } - for (i = 0; i < NTRU_N - 1; ++i) { - g.coeffs[i] = g.coeffs[i + 1]; - } - g.coeffs[NTRU_N - 1] = 0; - } - - sign = f.coeffs[0]; - for (i = 0; i < NTRU_N - 1; ++i) { - r->coeffs[i] = mod3((uint8_t) (sign * v.coeffs[NTRU_N - 2 - i])); - } - r->coeffs[NTRU_N - 1] = 0; -} diff --git a/src/kem/ntru/ntruhps2048509/clean/sample.c b/src/kem/ntru/ntruhps2048509/clean/sample.c deleted file mode 100644 index adad3779..00000000 --- a/src/kem/ntru/ntruhps2048509/clean/sample.c +++ /dev/null @@ -1,45 +0,0 @@ -#include "sample.h" - -void PQCLEAN_NTRUHPS2048509_CLEAN_sample_fg(poly *f, poly *g, const unsigned char uniformbytes[NTRU_SAMPLE_FG_BYTES]) { - - PQCLEAN_NTRUHPS2048509_CLEAN_sample_iid(f, uniformbytes); - PQCLEAN_NTRUHPS2048509_CLEAN_sample_fixed_type(g, uniformbytes + NTRU_SAMPLE_IID_BYTES); -} - -void PQCLEAN_NTRUHPS2048509_CLEAN_sample_rm(poly *r, poly *m, const unsigned char uniformbytes[NTRU_SAMPLE_RM_BYTES]) { - - PQCLEAN_NTRUHPS2048509_CLEAN_sample_iid(r, uniformbytes); - PQCLEAN_NTRUHPS2048509_CLEAN_sample_fixed_type(m, uniformbytes + NTRU_SAMPLE_IID_BYTES); -} - - -void PQCLEAN_NTRUHPS2048509_CLEAN_sample_fixed_type(poly *r, const unsigned char u[NTRU_SAMPLE_FT_BYTES]) { - // Assumes NTRU_SAMPLE_FT_BYTES = ceil(30*(n-1)/8) - - int32_t s[NTRU_N - 1]; - int i; - - // Use 30 bits of u per word - for (i = 0; i < (NTRU_N - 1) / 4; i++) { - s[4 * i + 0] = (u[15 * i + 0] << 2) + (u[15 * i + 1] << 10) + (u[15 * i + 2] << 18) + ((uint32_t) u[15 * i + 3] << 26); - s[4 * i + 1] = ((u[15 * i + 3] & 0xc0) >> 4) + (u[15 * i + 4] << 4) + (u[15 * i + 5] << 12) + (u[15 * i + 6] << 20) + ((uint32_t) u[15 * i + 7] << 28); - s[4 * i + 2] = ((u[15 * i + 7] & 0xf0) >> 2) + (u[15 * i + 8] << 6) + (u[15 * i + 9] << 14) + (u[15 * i + 10] << 22) + ((uint32_t) u[15 * i + 11] << 30); - s[4 * i + 3] = (u[15 * i + 11] & 0xfc) + (u[15 * i + 12] << 8) + (u[15 * i + 13] << 16) + ((uint32_t) u[15 * i + 14] << 24); - } - - for (i = 0; i < NTRU_WEIGHT / 2; i++) { - s[i] |= 1; - } - - for (i = NTRU_WEIGHT / 2; i < NTRU_WEIGHT; i++) { - s[i] |= 2; - } - - PQCLEAN_NTRUHPS2048509_CLEAN_crypto_sort_int32(s, NTRU_N - 1); - - for (i = 0; i < NTRU_N - 1; i++) { - r->coeffs[i] = ((uint16_t) (s[i] & 3)); - } - - r->coeffs[NTRU_N - 1] = 0; -} diff --git a/src/kem/ntru/ntruhps2048509/clean/sample.h b/src/kem/ntru/ntruhps2048509/clean/sample.h deleted file mode 100644 index 802b8300..00000000 --- a/src/kem/ntru/ntruhps2048509/clean/sample.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef SAMPLE_H -#define SAMPLE_H - -#include "params.h" -#include "poly.h" - -#include "crypto_sort_int32.h" - -void PQCLEAN_NTRUHPS2048509_CLEAN_sample_fg(poly *f, poly *g, const unsigned char uniformbytes[NTRU_SAMPLE_FG_BYTES]); -void PQCLEAN_NTRUHPS2048509_CLEAN_sample_rm(poly *r, poly *m, const unsigned char uniformbytes[NTRU_SAMPLE_RM_BYTES]); - -void PQCLEAN_NTRUHPS2048509_CLEAN_sample_iid(poly *r, const unsigned char uniformbytes[NTRU_SAMPLE_IID_BYTES]); - -void PQCLEAN_NTRUHPS2048509_CLEAN_sample_fixed_type(poly *r, const unsigned char uniformbytes[NTRU_SAMPLE_FT_BYTES]); - - -#endif diff --git a/src/kem/ntru/ntruhps2048509/clean/sample_iid.c b/src/kem/ntru/ntruhps2048509/clean/sample_iid.c deleted file mode 100644 index ab5d921b..00000000 --- a/src/kem/ntru/ntruhps2048509/clean/sample_iid.c +++ /dev/null @@ -1,26 +0,0 @@ -#include "sample.h" - -static uint16_t mod3(uint16_t a) { - uint16_t r; - int16_t t, c; - - r = (a >> 8) + (a & 0xff); // r mod 255 == a mod 255 - r = (r >> 4) + (r & 0xf); // r' mod 15 == r mod 15 - r = (r >> 2) + (r & 0x3); // r' mod 3 == r mod 3 - r = (r >> 2) + (r & 0x3); // r' mod 3 == r mod 3 - - t = r - 3; - c = t >> 15; - - return (c & r) ^ (~c & t); -} - -void PQCLEAN_NTRUHPS2048509_CLEAN_sample_iid(poly *r, const unsigned char uniformbytes[NTRU_SAMPLE_IID_BYTES]) { - int i; - /* {0,1,...,255} -> {0,1,2}; Pr[0] = 86/256, Pr[1] = Pr[-1] = 85/256 */ - for (i = 0; i < NTRU_N - 1; i++) { - r->coeffs[i] = mod3(uniformbytes[i]); - } - - r->coeffs[NTRU_N - 1] = 0; -} diff --git a/src/kem/ntru/ntruhps2048677/avx2/CMakeLists.txt b/src/kem/ntru/ntruhps2048677/avx2/CMakeLists.txt deleted file mode 100644 index aac0a6b1..00000000 --- a/src/kem/ntru/ntruhps2048677/avx2/CMakeLists.txt +++ /dev/null @@ -1,34 +0,0 @@ -set( - SRC_AVX2_NTRUHPS2048677 - cmov.c - crypto_sort_int32.c - kem.c - owcpa.c - pack3.c - packq.c - poly.c - poly_lift.c - poly_mod_3_Phi_n.s - poly_mod_q_Phi_n.s - poly_r2_inv.c - poly_r2_mul.s - poly_rq_mul.s - poly_rq_to_s3.s - poly_s3_inv.c - sample.c - sample_iid.c - square_10_677_shufbytes.s - square_1_677_patience.s - square_168_677_shufbytes.s - square_21_677_shufbytes.s - square_2_677_patience.s - square_336_677_shufbytes.s - square_3_677_patience.s - square_42_677_shufbytes.s - square_5_677_patience.s - square_84_677_shufbytes.s - vec32_sample_iid.s -) - -define_kem_alg(ntruhps2048677_avx2 - PQCLEAN_NTRUHPS2048677_AVX2 "${SRC_AVX2_NTRUHPS2048677}" "${CMAKE_CURRENT_SOURCE_DIR}") diff --git a/src/kem/ntru/ntruhps2048677/avx2/api.h b/src/kem/ntru/ntruhps2048677/avx2/api.h deleted file mode 100644 index 1b3fb609..00000000 --- a/src/kem/ntru/ntruhps2048677/avx2/api.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef PQCLEAN_NTRUHPS2048677_AVX2_API_H -#define PQCLEAN_NTRUHPS2048677_AVX2_API_H - -#include - -#define PQCLEAN_NTRUHPS2048677_AVX2_CRYPTO_SECRETKEYBYTES 1234 -#define PQCLEAN_NTRUHPS2048677_AVX2_CRYPTO_PUBLICKEYBYTES 930 -#define PQCLEAN_NTRUHPS2048677_AVX2_CRYPTO_CIPHERTEXTBYTES 930 -#define PQCLEAN_NTRUHPS2048677_AVX2_CRYPTO_BYTES 32 - -#define PQCLEAN_NTRUHPS2048677_AVX2_CRYPTO_ALGNAME "ntruhps2048677" - -int PQCLEAN_NTRUHPS2048677_AVX2_crypto_kem_keypair(uint8_t *pk, uint8_t *sk); - -int PQCLEAN_NTRUHPS2048677_AVX2_crypto_kem_enc(uint8_t *c, uint8_t *k, const uint8_t *pk); - -int PQCLEAN_NTRUHPS2048677_AVX2_crypto_kem_dec(uint8_t *k, const uint8_t *c, const uint8_t *sk); - -#endif diff --git a/src/kem/ntru/ntruhps2048677/avx2/cmov.c b/src/kem/ntru/ntruhps2048677/avx2/cmov.c deleted file mode 100644 index d975076b..00000000 --- a/src/kem/ntru/ntruhps2048677/avx2/cmov.c +++ /dev/null @@ -1,11 +0,0 @@ -#include "cmov.h" - -/* b = 1 means mov, b = 0 means don't mov*/ -void PQCLEAN_NTRUHPS2048677_AVX2_cmov(unsigned char *r, const unsigned char *x, size_t len, unsigned char b) { - size_t i; - - b = (~b + 1); - for (i = 0; i < len; i++) { - r[i] ^= b & (x[i] ^ r[i]); - } -} diff --git a/src/kem/ntru/ntruhps2048677/avx2/cmov.h b/src/kem/ntru/ntruhps2048677/avx2/cmov.h deleted file mode 100644 index 00700645..00000000 --- a/src/kem/ntru/ntruhps2048677/avx2/cmov.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef VERIFY_H -#define VERIFY_H - -#include "params.h" - -#include - -void PQCLEAN_NTRUHPS2048677_AVX2_cmov(unsigned char *r, const unsigned char *x, size_t len, unsigned char b); - -#endif diff --git a/src/kem/ntru/ntruhps2048677/avx2/crypto_sort_int32.c b/src/kem/ntru/ntruhps2048677/avx2/crypto_sort_int32.c deleted file mode 100644 index db24137a..00000000 --- a/src/kem/ntru/ntruhps2048677/avx2/crypto_sort_int32.c +++ /dev/null @@ -1,1218 +0,0 @@ -// Based on supercop-20200820/crypto_sort/int32/avx2 - -#include "crypto_sort_int32.h" - -#include -#define int32 int32_t - -typedef __m256i int32x8; -#define int32x8_load(z) _mm256_loadu_si256((__m256i *) (z)) -#define int32x8_store(z,i) _mm256_storeu_si256((__m256i *) (z),(i)) -#define int32x8_min _mm256_min_epi32 -#define int32x8_max _mm256_max_epi32 - -#define int32x8_MINMAX(a,b) \ - do { \ - int32x8 c = int32x8_min((a),(b)); \ - (b) = int32x8_max((a),(b)); \ - (a) = c; \ - } while(0) - -static inline void int32_MINMAX(int32 *a, int32 *b) { - int32 ab = *b ^ *a; - int32 c = (int32)((int64_t) * b - (int64_t) * a); - c ^= ab & (c ^ *b); - c >>= 31; - c &= ab; - *a ^= c; - *b ^= c; -} - - -static void minmax_vector(int32 *x, int32 *y, size_t n) { - if ((long long) n < 8) { - while ((long long) n > 0) { - int32_MINMAX(x, y); - ++x; - ++y; - --n; - } - return; - } - if (n & 7) { - int32x8 x0 = int32x8_load(x + n - 8); - int32x8 y0 = int32x8_load(y + n - 8); - int32x8_MINMAX(x0, y0); - int32x8_store(x + n - 8, x0); - int32x8_store(y + n - 8, y0); - n &= ~7; - } - do { - int32x8 x0 = int32x8_load(x); - int32x8 y0 = int32x8_load(y); - int32x8_MINMAX(x0, y0); - int32x8_store(x, x0); - int32x8_store(y, y0); - x += 8; - y += 8; - n -= 8; - } while (n); -} - -/* stages 8,4,2,1 of size-16 bitonic merging */ - -static void merge16_finish(int32 *x, int32x8 x0, int32x8 x1, int flagdown) { - int32x8 b0, b1, c0, c1, mask; - - int32x8_MINMAX(x0, x1); - - b0 = _mm256_permute2x128_si256(x0, x1, 0x20); /* A0123B0123 */ - b1 = _mm256_permute2x128_si256(x0, x1, 0x31); /* A4567B4567 */ - - int32x8_MINMAX(b0, b1); - - c0 = _mm256_unpacklo_epi64(b0, b1); /* A0145B0145 */ - c1 = _mm256_unpackhi_epi64(b0, b1); /* A2367B2367 */ - - int32x8_MINMAX(c0, c1); - - b0 = _mm256_unpacklo_epi32(c0, c1); /* A0213B0213 */ - b1 = _mm256_unpackhi_epi32(c0, c1); /* A4657B4657 */ - - c0 = _mm256_unpacklo_epi64(b0, b1); /* A0246B0246 */ - c1 = _mm256_unpackhi_epi64(b0, b1); /* A1357B1357 */ - - int32x8_MINMAX(c0, c1); - - b0 = _mm256_unpacklo_epi32(c0, c1); /* A0123B0123 */ - b1 = _mm256_unpackhi_epi32(c0, c1); /* A4567B4567 */ - - x0 = _mm256_permute2x128_si256(b0, b1, 0x20); /* A01234567 */ - x1 = _mm256_permute2x128_si256(b0, b1, 0x31); /* A01234567 */ - - if (flagdown) { - mask = _mm256_set1_epi32(-1); - x0 ^= mask; - x1 ^= mask; - } - - int32x8_store(&x[0], x0); - int32x8_store(&x[8], x1); -} - -/* stages 64,32 of bitonic merging; n is multiple of 128 */ - -static void int32_twostages_32(int32 *x, size_t n) { - size_t i; - - while (n > 0) { - for (i = 0; i < 32; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + 32]); - int32x8 x2 = int32x8_load(&x[i + 64]); - int32x8 x3 = int32x8_load(&x[i + 96]); - - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - - int32x8_store(&x[i], x0); - int32x8_store(&x[i + 32], x1); - int32x8_store(&x[i + 64], x2); - int32x8_store(&x[i + 96], x3); - } - x += 128; - n -= 128; - } -} - -/* stages 4q,2q,q of bitonic merging */ - -static size_t int32_threestages(int32 *x, size_t n, size_t q) { - size_t k, i; - - for (k = 0; k + 8 * q <= n; k += 8 * q) { - for (i = k; i < k + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8 x4 = int32x8_load(&x[i + 4 * q]); - int32x8 x5 = int32x8_load(&x[i + 5 * q]); - int32x8 x6 = int32x8_load(&x[i + 6 * q]); - int32x8 x7 = int32x8_load(&x[i + 7 * q]); - - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - int32x8_store(&x[i + 4 * q], x4); - int32x8_store(&x[i + 5 * q], x5); - int32x8_store(&x[i + 6 * q], x6); - int32x8_store(&x[i + 7 * q], x7); - } - } - - return k; -} - -/* n is a power of 2; n >= 8; if n == 8 then flagdown */ - -// NOLINTNEXTLINE(google-readability-function-size) -static void int32_sort_2power(int32 *x, size_t n, int flagdown) { - size_t p, q, i, j, k; - int32x8 mask; - - if (n == 8) { - int32 x0 = x[0]; - int32 x1 = x[1]; - int32 x2 = x[2]; - int32 x3 = x[3]; - int32 x4 = x[4]; - int32 x5 = x[5]; - int32 x6 = x[6]; - int32 x7 = x[7]; - - /* odd-even sort instead of bitonic sort */ - - int32_MINMAX(&x1, &x0); - int32_MINMAX(&x3, &x2); - int32_MINMAX(&x2, &x0); - int32_MINMAX(&x3, &x1); - int32_MINMAX(&x2, &x1); - - int32_MINMAX(&x5, &x4); - int32_MINMAX(&x7, &x6); - int32_MINMAX(&x6, &x4); - int32_MINMAX(&x7, &x5); - int32_MINMAX(&x6, &x5); - - int32_MINMAX(&x4, &x0); - int32_MINMAX(&x6, &x2); - int32_MINMAX(&x4, &x2); - - int32_MINMAX(&x5, &x1); - int32_MINMAX(&x7, &x3); - int32_MINMAX(&x5, &x3); - - int32_MINMAX(&x2, &x1); - int32_MINMAX(&x4, &x3); - int32_MINMAX(&x6, &x5); - - x[0] = x0; - x[1] = x1; - x[2] = x2; - x[3] = x3; - x[4] = x4; - x[5] = x5; - x[6] = x6; - x[7] = x7; - return; - } - - if (n == 16) { - int32x8 x0, x1, b0, b1, c0, c1; - - x0 = int32x8_load(&x[0]); - x1 = int32x8_load(&x[8]); - - mask = _mm256_set_epi32(0, 0, -1, -1, 0, 0, -1, -1); - - x0 ^= mask; /* A01234567 */ - x1 ^= mask; /* B01234567 */ - - b0 = _mm256_unpacklo_epi32(x0, x1); /* AB0AB1AB4AB5 */ - b1 = _mm256_unpackhi_epi32(x0, x1); /* AB2AB3AB6AB7 */ - - c0 = _mm256_unpacklo_epi64(b0, b1); /* AB0AB2AB4AB6 */ - c1 = _mm256_unpackhi_epi64(b0, b1); /* AB1AB3AB5AB7 */ - - int32x8_MINMAX(c0, c1); - - mask = _mm256_set_epi32(0, 0, -1, -1, -1, -1, 0, 0); - c0 ^= mask; - c1 ^= mask; - - b0 = _mm256_unpacklo_epi32(c0, c1); /* A01B01A45B45 */ - b1 = _mm256_unpackhi_epi32(c0, c1); /* A23B23A67B67 */ - - int32x8_MINMAX(b0, b1); - - x0 = _mm256_unpacklo_epi64(b0, b1); /* A01234567 */ - x1 = _mm256_unpackhi_epi64(b0, b1); /* B01234567 */ - - b0 = _mm256_unpacklo_epi32(x0, x1); /* AB0AB1AB4AB5 */ - b1 = _mm256_unpackhi_epi32(x0, x1); /* AB2AB3AB6AB7 */ - - c0 = _mm256_unpacklo_epi64(b0, b1); /* AB0AB2AB4AB6 */ - c1 = _mm256_unpackhi_epi64(b0, b1); /* AB1AB3AB5AB7 */ - - int32x8_MINMAX(c0, c1); - - b0 = _mm256_unpacklo_epi32(c0, c1); /* A01B01A45B45 */ - b1 = _mm256_unpackhi_epi32(c0, c1); /* A23B23A67B67 */ - - b0 ^= mask; - b1 ^= mask; - - c0 = _mm256_permute2x128_si256(b0, b1, 0x20); /* A01B01A23B23 */ - c1 = _mm256_permute2x128_si256(b0, b1, 0x31); /* A45B45A67B67 */ - - int32x8_MINMAX(c0, c1); - - b0 = _mm256_permute2x128_si256(c0, c1, 0x20); /* A01B01A45B45 */ - b1 = _mm256_permute2x128_si256(c0, c1, 0x31); /* A23B23A67B67 */ - - int32x8_MINMAX(b0, b1); - - x0 = _mm256_unpacklo_epi64(b0, b1); /* A01234567 */ - x1 = _mm256_unpackhi_epi64(b0, b1); /* B01234567 */ - - b0 = _mm256_unpacklo_epi32(x0, x1); /* AB0AB1AB4AB5 */ - b1 = _mm256_unpackhi_epi32(x0, x1); /* AB2AB3AB6AB7 */ - - c0 = _mm256_unpacklo_epi64(b0, b1); /* AB0AB2AB4AB6 */ - c1 = _mm256_unpackhi_epi64(b0, b1); /* AB1AB3AB5AB7 */ - - int32x8_MINMAX(c0, c1); - - b0 = _mm256_unpacklo_epi32(c0, c1); /* A01B01A45B45 */ - b1 = _mm256_unpackhi_epi32(c0, c1); /* A23B23A67B67 */ - - x0 = _mm256_unpacklo_epi64(b0, b1); /* A01234567 */ - x1 = _mm256_unpackhi_epi64(b0, b1); /* B01234567 */ - - mask = _mm256_set1_epi32(-1); - if (flagdown) { - x1 ^= mask; - } else { - x0 ^= mask; - } - - merge16_finish(x, x0, x1, flagdown); - return; - } - - if (n == 32) { - int32x8 x0, x1, x2, x3; - - int32_sort_2power(x, 16, 1); - int32_sort_2power(x + 16, 16, 0); - - x0 = int32x8_load(&x[0]); - x1 = int32x8_load(&x[8]); - x2 = int32x8_load(&x[16]); - x3 = int32x8_load(&x[24]); - - if (flagdown) { - mask = _mm256_set1_epi32(-1); - x0 ^= mask; - x1 ^= mask; - x2 ^= mask; - x3 ^= mask; - } - - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - - merge16_finish(x, x0, x1, flagdown); - merge16_finish(x + 16, x2, x3, flagdown); - return; - } - - p = n >> 3; - for (i = 0; i < p; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x2 = int32x8_load(&x[i + 2 * p]); - int32x8 x4 = int32x8_load(&x[i + 4 * p]); - int32x8 x6 = int32x8_load(&x[i + 6 * p]); - - /* odd-even stage instead of bitonic stage */ - - int32x8_MINMAX(x4, x0); - int32x8_MINMAX(x6, x2); - int32x8_MINMAX(x2, x0); - int32x8_MINMAX(x6, x4); - int32x8_MINMAX(x2, x4); - - int32x8_store(&x[i], x0); - int32x8_store(&x[i + 2 * p], x2); - int32x8_store(&x[i + 4 * p], x4); - int32x8_store(&x[i + 6 * p], x6); - - int32x8 x1 = int32x8_load(&x[i + p]); - int32x8 x3 = int32x8_load(&x[i + 3 * p]); - int32x8 x5 = int32x8_load(&x[i + 5 * p]); - int32x8 x7 = int32x8_load(&x[i + 7 * p]); - - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x3, x7); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x5, x3); - - int32x8_store(&x[i + p], x1); - int32x8_store(&x[i + 3 * p], x3); - int32x8_store(&x[i + 5 * p], x5); - int32x8_store(&x[i + 7 * p], x7); - } - - if (n >= 128) { - int flip, flipflip; - - mask = _mm256_set1_epi32(-1); - - for (j = 0; j < n; j += 32) { - int32x8 x0 = int32x8_load(&x[j]); - int32x8 x1 = int32x8_load(&x[j + 16]); - x0 ^= mask; - x1 ^= mask; - int32x8_store(&x[j], x0); - int32x8_store(&x[j + 16], x1); - } - - p = 8; - for (;;) { /* for p in [8, 16, ..., n/16] */ - q = p >> 1; - while (q >= 128) { - int32_threestages(x, n, q >> 2); - q >>= 3; - } - if (q == 64) { - int32_twostages_32(x, n); - q = 16; - } - if (q == 32) { - q = 8; - for (k = 0; k < n; k += 8 * q) { - for (i = k; i < k + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8 x4 = int32x8_load(&x[i + 4 * q]); - int32x8 x5 = int32x8_load(&x[i + 5 * q]); - int32x8 x6 = int32x8_load(&x[i + 6 * q]); - int32x8 x7 = int32x8_load(&x[i + 7 * q]); - - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - int32x8_store(&x[i + 4 * q], x4); - int32x8_store(&x[i + 5 * q], x5); - int32x8_store(&x[i + 6 * q], x6); - int32x8_store(&x[i + 7 * q], x7); - } - } - q = 4; - } - if (q == 16) { - q = 8; - for (k = 0; k < n; k += 4 * q) { - for (i = k; i < k + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - } - } - q = 4; - } - if (q == 8) { - for (k = 0; k < n; k += q + q) { - int32x8 x0 = int32x8_load(&x[k]); - int32x8 x1 = int32x8_load(&x[k + q]); - - int32x8_MINMAX(x0, x1); - - int32x8_store(&x[k], x0); - int32x8_store(&x[k + q], x1); - } - } - - q = n >> 3; - flip = 0; - if (p << 1 == q) { - flip = 1; - } - flipflip = 1 - flip; - for (j = 0; j < q; j += p + p) { - for (k = j; k < j + p + p; k += p) { - for (i = k; i < k + p; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8 x4 = int32x8_load(&x[i + 4 * q]); - int32x8 x5 = int32x8_load(&x[i + 5 * q]); - int32x8 x6 = int32x8_load(&x[i + 6 * q]); - int32x8 x7 = int32x8_load(&x[i + 7 * q]); - - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - - if (flip) { - x0 ^= mask; - x1 ^= mask; - x2 ^= mask; - x3 ^= mask; - x4 ^= mask; - x5 ^= mask; - x6 ^= mask; - x7 ^= mask; - } - - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - int32x8_store(&x[i + 4 * q], x4); - int32x8_store(&x[i + 5 * q], x5); - int32x8_store(&x[i + 6 * q], x6); - int32x8_store(&x[i + 7 * q], x7); - } - flip ^= 1; - } - flip ^= flipflip; - } - - if (p << 4 == n) { - break; - } - p <<= 1; - } - } - - for (p = 4; p >= 1; p >>= 1) { - int32 *z = x; - int32 *target = x + n; - if (p == 4) { - mask = _mm256_set_epi32(0, 0, 0, 0, -1, -1, -1, -1); - while (z != target) { - int32x8 x0 = int32x8_load(&z[0]); - int32x8 x1 = int32x8_load(&z[8]); - x0 ^= mask; - x1 ^= mask; - int32x8_store(&z[0], x0); - int32x8_store(&z[8], x1); - z += 16; - } - } else if (p == 2) { - mask = _mm256_set_epi32(0, 0, -1, -1, -1, -1, 0, 0); - while (z != target) { - int32x8 x0 = int32x8_load(&z[0]); - int32x8 x1 = int32x8_load(&z[8]); - x0 ^= mask; - x1 ^= mask; - int32x8 b0 = _mm256_permute2x128_si256(x0, x1, 0x20); - int32x8 b1 = _mm256_permute2x128_si256(x0, x1, 0x31); - int32x8_MINMAX(b0, b1); - int32x8 c0 = _mm256_permute2x128_si256(b0, b1, 0x20); - int32x8 c1 = _mm256_permute2x128_si256(b0, b1, 0x31); - int32x8_store(&z[0], c0); - int32x8_store(&z[8], c1); - z += 16; - } - } else { /* p == 1 */ - mask = _mm256_set_epi32(0, -1, -1, 0, 0, -1, -1, 0); - while (z != target) { - int32x8 x0 = int32x8_load(&z[0]); - int32x8 x1 = int32x8_load(&z[8]); - x0 ^= mask; - x1 ^= mask; - int32x8 b0 = _mm256_permute2x128_si256(x0, x1, 0x20); /* A0123B0123 */ - int32x8 b1 = _mm256_permute2x128_si256(x0, x1, 0x31); /* A4567B4567 */ - int32x8 c0 = _mm256_unpacklo_epi64(b0, b1); /* A0145B0145 */ - int32x8 c1 = _mm256_unpackhi_epi64(b0, b1); /* A2367B2367 */ - int32x8_MINMAX(c0, c1); - int32x8 d0 = _mm256_unpacklo_epi64(c0, c1); /* A0123B0123 */ - int32x8 d1 = _mm256_unpackhi_epi64(c0, c1); /* A4567B4567 */ - int32x8_MINMAX(d0, d1); - int32x8 e0 = _mm256_permute2x128_si256(d0, d1, 0x20); - int32x8 e1 = _mm256_permute2x128_si256(d0, d1, 0x31); - int32x8_store(&z[0], e0); - int32x8_store(&z[8], e1); - z += 16; - } - } - - q = n >> 4; - while (q >= 128 || q == 32) { - int32_threestages(x, n, q >> 2); - q >>= 3; - } - while (q >= 16) { - q >>= 1; - for (j = 0; j < n; j += 4 * q) { - for (k = j; k < j + q; k += 8) { - int32x8 x0 = int32x8_load(&x[k]); - int32x8 x1 = int32x8_load(&x[k + q]); - int32x8 x2 = int32x8_load(&x[k + 2 * q]); - int32x8 x3 = int32x8_load(&x[k + 3 * q]); - - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - - int32x8_store(&x[k], x0); - int32x8_store(&x[k + q], x1); - int32x8_store(&x[k + 2 * q], x2); - int32x8_store(&x[k + 3 * q], x3); - } - } - q >>= 1; - } - if (q == 8) { - for (j = 0; j < n; j += 2 * q) { - int32x8 x0 = int32x8_load(&x[j]); - int32x8 x1 = int32x8_load(&x[j + q]); - - int32x8_MINMAX(x0, x1); - - int32x8_store(&x[j], x0); - int32x8_store(&x[j + q], x1); - } - } - - q = n >> 3; - for (k = 0; k < q; k += 8) { - int32x8 x0 = int32x8_load(&x[k]); - int32x8 x1 = int32x8_load(&x[k + q]); - int32x8 x2 = int32x8_load(&x[k + 2 * q]); - int32x8 x3 = int32x8_load(&x[k + 3 * q]); - int32x8 x4 = int32x8_load(&x[k + 4 * q]); - int32x8 x5 = int32x8_load(&x[k + 5 * q]); - int32x8 x6 = int32x8_load(&x[k + 6 * q]); - int32x8 x7 = int32x8_load(&x[k + 7 * q]); - - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - - int32x8_store(&x[k], x0); - int32x8_store(&x[k + q], x1); - int32x8_store(&x[k + 2 * q], x2); - int32x8_store(&x[k + 3 * q], x3); - int32x8_store(&x[k + 4 * q], x4); - int32x8_store(&x[k + 5 * q], x5); - int32x8_store(&x[k + 6 * q], x6); - int32x8_store(&x[k + 7 * q], x7); - } - } - - /* everything is still masked with _mm256_set_epi32(0,-1,0,-1,0,-1,0,-1); */ - mask = _mm256_set1_epi32(-1); - - for (i = 0; i < n; i += 64) { - int32x8 a0 = int32x8_load(&x[i]); - int32x8 a1 = int32x8_load(&x[i + 8]); - int32x8 a2 = int32x8_load(&x[i + 16]); - int32x8 a3 = int32x8_load(&x[i + 24]); - int32x8 a4 = int32x8_load(&x[i + 32]); - int32x8 a5 = int32x8_load(&x[i + 40]); - int32x8 a6 = int32x8_load(&x[i + 48]); - int32x8 a7 = int32x8_load(&x[i + 56]); - - int32x8 b0 = _mm256_unpacklo_epi32(a0, a1); /* AB0AB1AB4AB5 */ - int32x8 b1 = _mm256_unpackhi_epi32(a0, a1); /* AB2AB3AB6AB7 */ - int32x8 b2 = _mm256_unpacklo_epi32(a2, a3); /* CD0CD1CD4CD5 */ - int32x8 b3 = _mm256_unpackhi_epi32(a2, a3); /* CD2CD3CD6CD7 */ - int32x8 b4 = _mm256_unpacklo_epi32(a4, a5); /* EF0EF1EF4EF5 */ - int32x8 b5 = _mm256_unpackhi_epi32(a4, a5); /* EF2EF3EF6EF7 */ - int32x8 b6 = _mm256_unpacklo_epi32(a6, a7); /* GH0GH1GH4GH5 */ - int32x8 b7 = _mm256_unpackhi_epi32(a6, a7); /* GH2GH3GH6GH7 */ - - int32x8 c0 = _mm256_unpacklo_epi64(b0, b2); /* ABCD0ABCD4 */ - int32x8 c1 = _mm256_unpacklo_epi64(b1, b3); /* ABCD2ABCD6 */ - int32x8 c2 = _mm256_unpackhi_epi64(b0, b2); /* ABCD1ABCD5 */ - int32x8 c3 = _mm256_unpackhi_epi64(b1, b3); /* ABCD3ABCD7 */ - int32x8 c4 = _mm256_unpacklo_epi64(b4, b6); /* EFGH0EFGH4 */ - int32x8 c5 = _mm256_unpacklo_epi64(b5, b7); /* EFGH2EFGH6 */ - int32x8 c6 = _mm256_unpackhi_epi64(b4, b6); /* EFGH1EFGH5 */ - int32x8 c7 = _mm256_unpackhi_epi64(b5, b7); /* EFGH3EFGH7 */ - - if (flagdown) { - c2 ^= mask; - c3 ^= mask; - c6 ^= mask; - c7 ^= mask; - } else { - c0 ^= mask; - c1 ^= mask; - c4 ^= mask; - c5 ^= mask; - } - - int32x8 d0 = _mm256_permute2x128_si256(c0, c4, 0x20); /* ABCDEFGH0 */ - int32x8 d1 = _mm256_permute2x128_si256(c2, c6, 0x20); /* ABCDEFGH1 */ - int32x8 d2 = _mm256_permute2x128_si256(c1, c5, 0x20); /* ABCDEFGH2 */ - int32x8 d3 = _mm256_permute2x128_si256(c3, c7, 0x20); /* ABCDEFGH5 */ - int32x8 d4 = _mm256_permute2x128_si256(c0, c4, 0x31); /* ABCDEFGH4 */ - int32x8 d5 = _mm256_permute2x128_si256(c2, c6, 0x31); /* ABCDEFGH3 */ - int32x8 d6 = _mm256_permute2x128_si256(c1, c5, 0x31); /* ABCDEFGH6 */ - int32x8 d7 = _mm256_permute2x128_si256(c3, c7, 0x31); /* ABCDEFGH7 */ - - int32x8_MINMAX(d0, d1); - int32x8_MINMAX(d2, d3); - int32x8_MINMAX(d4, d5); - int32x8_MINMAX(d6, d7); - int32x8_MINMAX(d0, d2); - int32x8_MINMAX(d1, d3); - int32x8_MINMAX(d4, d6); - int32x8_MINMAX(d5, d7); - int32x8_MINMAX(d0, d4); - int32x8_MINMAX(d1, d5); - int32x8_MINMAX(d2, d6); - int32x8_MINMAX(d3, d7); - - int32x8 e0 = _mm256_unpacklo_epi32(d0, d1); - int32x8 e1 = _mm256_unpackhi_epi32(d0, d1); - int32x8 e2 = _mm256_unpacklo_epi32(d2, d3); - int32x8 e3 = _mm256_unpackhi_epi32(d2, d3); - int32x8 e4 = _mm256_unpacklo_epi32(d4, d5); - int32x8 e5 = _mm256_unpackhi_epi32(d4, d5); - int32x8 e6 = _mm256_unpacklo_epi32(d6, d7); - int32x8 e7 = _mm256_unpackhi_epi32(d6, d7); - - int32x8 f0 = _mm256_unpacklo_epi64(e0, e2); - int32x8 f1 = _mm256_unpacklo_epi64(e1, e3); - int32x8 f2 = _mm256_unpackhi_epi64(e0, e2); - int32x8 f3 = _mm256_unpackhi_epi64(e1, e3); - int32x8 f4 = _mm256_unpacklo_epi64(e4, e6); - int32x8 f5 = _mm256_unpacklo_epi64(e5, e7); - int32x8 f6 = _mm256_unpackhi_epi64(e4, e6); - int32x8 f7 = _mm256_unpackhi_epi64(e5, e7); - - int32x8 g0 = _mm256_permute2x128_si256(f0, f4, 0x20); - int32x8 g1 = _mm256_permute2x128_si256(f2, f6, 0x20); - int32x8 g2 = _mm256_permute2x128_si256(f1, f5, 0x20); - int32x8 g3 = _mm256_permute2x128_si256(f3, f7, 0x20); - int32x8 g4 = _mm256_permute2x128_si256(f0, f4, 0x31); - int32x8 g5 = _mm256_permute2x128_si256(f2, f6, 0x31); - int32x8 g6 = _mm256_permute2x128_si256(f1, f5, 0x31); - int32x8 g7 = _mm256_permute2x128_si256(f3, f7, 0x31); - - int32x8_store(&x[i], g0); - int32x8_store(&x[i + 8], g1); - int32x8_store(&x[i + 16], g2); - int32x8_store(&x[i + 24], g3); - int32x8_store(&x[i + 32], g4); - int32x8_store(&x[i + 40], g5); - int32x8_store(&x[i + 48], g6); - int32x8_store(&x[i + 56], g7); - } - - q = n >> 4; - while (q >= 128 || q == 32) { - q >>= 2; - for (j = 0; j < n; j += 8 * q) { - for (i = j; i < j + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8 x4 = int32x8_load(&x[i + 4 * q]); - int32x8 x5 = int32x8_load(&x[i + 5 * q]); - int32x8 x6 = int32x8_load(&x[i + 6 * q]); - int32x8 x7 = int32x8_load(&x[i + 7 * q]); - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - int32x8_store(&x[i + 4 * q], x4); - int32x8_store(&x[i + 5 * q], x5); - int32x8_store(&x[i + 6 * q], x6); - int32x8_store(&x[i + 7 * q], x7); - } - } - q >>= 1; - } - while (q >= 16) { - q >>= 1; - for (j = 0; j < n; j += 4 * q) { - for (i = j; i < j + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - } - } - q >>= 1; - } - if (q == 8) { - for (j = 0; j < n; j += q + q) { - int32x8 x0 = int32x8_load(&x[j]); - int32x8 x1 = int32x8_load(&x[j + q]); - int32x8_MINMAX(x0, x1); - int32x8_store(&x[j], x0); - int32x8_store(&x[j + q], x1); - } - } - - q = n >> 3; - for (i = 0; i < q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8 x4 = int32x8_load(&x[i + 4 * q]); - int32x8 x5 = int32x8_load(&x[i + 5 * q]); - int32x8 x6 = int32x8_load(&x[i + 6 * q]); - int32x8 x7 = int32x8_load(&x[i + 7 * q]); - - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - - int32x8 b0 = _mm256_unpacklo_epi32(x0, x4); /* AE0AE1AE4AE5 */ - int32x8 b1 = _mm256_unpackhi_epi32(x0, x4); /* AE2AE3AE6AE7 */ - int32x8 b2 = _mm256_unpacklo_epi32(x1, x5); /* BF0BF1BF4BF5 */ - int32x8 b3 = _mm256_unpackhi_epi32(x1, x5); /* BF2BF3BF6BF7 */ - int32x8 b4 = _mm256_unpacklo_epi32(x2, x6); /* CG0CG1CG4CG5 */ - int32x8 b5 = _mm256_unpackhi_epi32(x2, x6); /* CG2CG3CG6CG7 */ - int32x8 b6 = _mm256_unpacklo_epi32(x3, x7); /* DH0DH1DH4DH5 */ - int32x8 b7 = _mm256_unpackhi_epi32(x3, x7); /* DH2DH3DH6DH7 */ - - int32x8 c0 = _mm256_unpacklo_epi64(b0, b4); /* AECG0AECG4 */ - int32x8 c1 = _mm256_unpacklo_epi64(b1, b5); /* AECG2AECG6 */ - int32x8 c2 = _mm256_unpackhi_epi64(b0, b4); /* AECG1AECG5 */ - int32x8 c3 = _mm256_unpackhi_epi64(b1, b5); /* AECG3AECG7 */ - int32x8 c4 = _mm256_unpacklo_epi64(b2, b6); /* BFDH0BFDH4 */ - int32x8 c5 = _mm256_unpacklo_epi64(b3, b7); /* BFDH2BFDH6 */ - int32x8 c6 = _mm256_unpackhi_epi64(b2, b6); /* BFDH1BFDH5 */ - int32x8 c7 = _mm256_unpackhi_epi64(b3, b7); /* BFDH3BFDH7 */ - - int32x8 d0 = _mm256_permute2x128_si256(c0, c4, 0x20); /* AECGBFDH0 */ - int32x8 d1 = _mm256_permute2x128_si256(c1, c5, 0x20); /* AECGBFDH2 */ - int32x8 d2 = _mm256_permute2x128_si256(c2, c6, 0x20); /* AECGBFDH1 */ - int32x8 d3 = _mm256_permute2x128_si256(c3, c7, 0x20); /* AECGBFDH3 */ - int32x8 d4 = _mm256_permute2x128_si256(c0, c4, 0x31); /* AECGBFDH4 */ - int32x8 d5 = _mm256_permute2x128_si256(c1, c5, 0x31); /* AECGBFDH6 */ - int32x8 d6 = _mm256_permute2x128_si256(c2, c6, 0x31); /* AECGBFDH5 */ - int32x8 d7 = _mm256_permute2x128_si256(c3, c7, 0x31); /* AECGBFDH7 */ - - if (flagdown) { - d0 ^= mask; - d1 ^= mask; - d2 ^= mask; - d3 ^= mask; - d4 ^= mask; - d5 ^= mask; - d6 ^= mask; - d7 ^= mask; - } - - int32x8_store(&x[i], d0); - int32x8_store(&x[i + q], d4); - int32x8_store(&x[i + 2 * q], d1); - int32x8_store(&x[i + 3 * q], d5); - int32x8_store(&x[i + 4 * q], d2); - int32x8_store(&x[i + 5 * q], d6); - int32x8_store(&x[i + 6 * q], d3); - int32x8_store(&x[i + 7 * q], d7); - } -} - -void PQCLEAN_NTRUHPS2048677_AVX2_crypto_sort_int32(int32 *x, size_t n) { - size_t q, i, j; - - if (n <= 8) { - if (n == 8) { - int32_MINMAX(&x[0], &x[1]); - int32_MINMAX(&x[1], &x[2]); - int32_MINMAX(&x[2], &x[3]); - int32_MINMAX(&x[3], &x[4]); - int32_MINMAX(&x[4], &x[5]); - int32_MINMAX(&x[5], &x[6]); - int32_MINMAX(&x[6], &x[7]); - } - if (n >= 7) { - int32_MINMAX(&x[0], &x[1]); - int32_MINMAX(&x[1], &x[2]); - int32_MINMAX(&x[2], &x[3]); - int32_MINMAX(&x[3], &x[4]); - int32_MINMAX(&x[4], &x[5]); - int32_MINMAX(&x[5], &x[6]); - } - if (n >= 6) { - int32_MINMAX(&x[0], &x[1]); - int32_MINMAX(&x[1], &x[2]); - int32_MINMAX(&x[2], &x[3]); - int32_MINMAX(&x[3], &x[4]); - int32_MINMAX(&x[4], &x[5]); - } - if (n >= 5) { - int32_MINMAX(&x[0], &x[1]); - int32_MINMAX(&x[1], &x[2]); - int32_MINMAX(&x[2], &x[3]); - int32_MINMAX(&x[3], &x[4]); - } - if (n >= 4) { - int32_MINMAX(&x[0], &x[1]); - int32_MINMAX(&x[1], &x[2]); - int32_MINMAX(&x[2], &x[3]); - } - if (n >= 3) { - int32_MINMAX(&x[0], &x[1]); - int32_MINMAX(&x[1], &x[2]); - } - if (n >= 2) { - int32_MINMAX(&x[0], &x[1]); - } - return; - } - - if (!(n & (n - 1))) { - int32_sort_2power(x, n, 0); - return; - } - - q = 8; - while (q < n - q) { - q += q; - } - /* n > q >= 8 */ - - if (q <= 128) { /* n <= 256 */ - int32x8 y[32]; - for (i = q >> 3; i < q >> 2; ++i) { - y[i] = _mm256_set1_epi32(0x7fffffff); - } - for (i = 0; i < n; ++i) { - ((int32 *) y)[i] = x[i]; - } - int32_sort_2power((int32 *) y, 2 * q, 0); - for (i = 0; i < n; ++i) { - x[i] = ((int32 *) y)[i]; - } - return; - } - - int32_sort_2power(x, q, 1); - PQCLEAN_NTRUHPS2048677_AVX2_crypto_sort_int32(x + q, n - q); - - while (q >= 64) { - q >>= 2; - j = int32_threestages(x, n, q); - minmax_vector(x + j, x + j + 4 * q, n - 4 * q - j); - if (j + 4 * q <= n) { - for (i = j; i < j + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - } - j += 4 * q; - } - minmax_vector(x + j, x + j + 2 * q, n - 2 * q - j); - if (j + 2 * q <= n) { - for (i = j; i < j + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8_MINMAX(x0, x1); - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - } - j += 2 * q; - } - minmax_vector(x + j, x + j + q, n - q - j); - q >>= 1; - } - if (q == 32) { - j = 0; - for (; j + 64 <= n; j += 64) { - int32x8 x0 = int32x8_load(&x[j]); - int32x8 x1 = int32x8_load(&x[j + 8]); - int32x8 x2 = int32x8_load(&x[j + 16]); - int32x8 x3 = int32x8_load(&x[j + 24]); - int32x8 x4 = int32x8_load(&x[j + 32]); - int32x8 x5 = int32x8_load(&x[j + 40]); - int32x8 x6 = int32x8_load(&x[j + 48]); - int32x8 x7 = int32x8_load(&x[j + 56]); - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - int32x8 a0 = _mm256_permute2x128_si256(x0, x1, 0x20); - int32x8 a1 = _mm256_permute2x128_si256(x0, x1, 0x31); - int32x8 a2 = _mm256_permute2x128_si256(x2, x3, 0x20); - int32x8 a3 = _mm256_permute2x128_si256(x2, x3, 0x31); - int32x8 a4 = _mm256_permute2x128_si256(x4, x5, 0x20); - int32x8 a5 = _mm256_permute2x128_si256(x4, x5, 0x31); - int32x8 a6 = _mm256_permute2x128_si256(x6, x7, 0x20); - int32x8 a7 = _mm256_permute2x128_si256(x6, x7, 0x31); - int32x8_MINMAX(a0, a1); - int32x8_MINMAX(a2, a3); - int32x8_MINMAX(a4, a5); - int32x8_MINMAX(a6, a7); - int32x8 b0 = _mm256_permute2x128_si256(a0, a1, 0x20); - int32x8 b1 = _mm256_permute2x128_si256(a0, a1, 0x31); - int32x8 b2 = _mm256_permute2x128_si256(a2, a3, 0x20); - int32x8 b3 = _mm256_permute2x128_si256(a2, a3, 0x31); - int32x8 b4 = _mm256_permute2x128_si256(a4, a5, 0x20); - int32x8 b5 = _mm256_permute2x128_si256(a4, a5, 0x31); - int32x8 b6 = _mm256_permute2x128_si256(a6, a7, 0x20); - int32x8 b7 = _mm256_permute2x128_si256(a6, a7, 0x31); - int32x8 c0 = _mm256_unpacklo_epi64(b0, b1); - int32x8 c1 = _mm256_unpackhi_epi64(b0, b1); - int32x8 c2 = _mm256_unpacklo_epi64(b2, b3); - int32x8 c3 = _mm256_unpackhi_epi64(b2, b3); - int32x8 c4 = _mm256_unpacklo_epi64(b4, b5); - int32x8 c5 = _mm256_unpackhi_epi64(b4, b5); - int32x8 c6 = _mm256_unpacklo_epi64(b6, b7); - int32x8 c7 = _mm256_unpackhi_epi64(b6, b7); - int32x8_MINMAX(c0, c1); - int32x8_MINMAX(c2, c3); - int32x8_MINMAX(c4, c5); - int32x8_MINMAX(c6, c7); - int32x8 d0 = _mm256_unpacklo_epi32(c0, c1); - int32x8 d1 = _mm256_unpackhi_epi32(c0, c1); - int32x8 d2 = _mm256_unpacklo_epi32(c2, c3); - int32x8 d3 = _mm256_unpackhi_epi32(c2, c3); - int32x8 d4 = _mm256_unpacklo_epi32(c4, c5); - int32x8 d5 = _mm256_unpackhi_epi32(c4, c5); - int32x8 d6 = _mm256_unpacklo_epi32(c6, c7); - int32x8 d7 = _mm256_unpackhi_epi32(c6, c7); - int32x8 e0 = _mm256_unpacklo_epi64(d0, d1); - int32x8 e1 = _mm256_unpackhi_epi64(d0, d1); - int32x8 e2 = _mm256_unpacklo_epi64(d2, d3); - int32x8 e3 = _mm256_unpackhi_epi64(d2, d3); - int32x8 e4 = _mm256_unpacklo_epi64(d4, d5); - int32x8 e5 = _mm256_unpackhi_epi64(d4, d5); - int32x8 e6 = _mm256_unpacklo_epi64(d6, d7); - int32x8 e7 = _mm256_unpackhi_epi64(d6, d7); - int32x8_MINMAX(e0, e1); - int32x8_MINMAX(e2, e3); - int32x8_MINMAX(e4, e5); - int32x8_MINMAX(e6, e7); - int32x8 f0 = _mm256_unpacklo_epi32(e0, e1); - int32x8 f1 = _mm256_unpackhi_epi32(e0, e1); - int32x8 f2 = _mm256_unpacklo_epi32(e2, e3); - int32x8 f3 = _mm256_unpackhi_epi32(e2, e3); - int32x8 f4 = _mm256_unpacklo_epi32(e4, e5); - int32x8 f5 = _mm256_unpackhi_epi32(e4, e5); - int32x8 f6 = _mm256_unpacklo_epi32(e6, e7); - int32x8 f7 = _mm256_unpackhi_epi32(e6, e7); - int32x8_store(&x[j], f0); - int32x8_store(&x[j + 8], f1); - int32x8_store(&x[j + 16], f2); - int32x8_store(&x[j + 24], f3); - int32x8_store(&x[j + 32], f4); - int32x8_store(&x[j + 40], f5); - int32x8_store(&x[j + 48], f6); - int32x8_store(&x[j + 56], f7); - } - minmax_vector(x + j, x + j + 32, n - 32 - j); - goto continue16; - } - if (q == 16) { - j = 0; -continue16: - for (; j + 32 <= n; j += 32) { - int32x8 x0 = int32x8_load(&x[j]); - int32x8 x1 = int32x8_load(&x[j + 8]); - int32x8 x2 = int32x8_load(&x[j + 16]); - int32x8 x3 = int32x8_load(&x[j + 24]); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8 a0 = _mm256_permute2x128_si256(x0, x1, 0x20); - int32x8 a1 = _mm256_permute2x128_si256(x0, x1, 0x31); - int32x8 a2 = _mm256_permute2x128_si256(x2, x3, 0x20); - int32x8 a3 = _mm256_permute2x128_si256(x2, x3, 0x31); - int32x8_MINMAX(a0, a1); - int32x8_MINMAX(a2, a3); - int32x8 b0 = _mm256_permute2x128_si256(a0, a1, 0x20); - int32x8 b1 = _mm256_permute2x128_si256(a0, a1, 0x31); - int32x8 b2 = _mm256_permute2x128_si256(a2, a3, 0x20); - int32x8 b3 = _mm256_permute2x128_si256(a2, a3, 0x31); - int32x8 c0 = _mm256_unpacklo_epi64(b0, b1); - int32x8 c1 = _mm256_unpackhi_epi64(b0, b1); - int32x8 c2 = _mm256_unpacklo_epi64(b2, b3); - int32x8 c3 = _mm256_unpackhi_epi64(b2, b3); - int32x8_MINMAX(c0, c1); - int32x8_MINMAX(c2, c3); - int32x8 d0 = _mm256_unpacklo_epi32(c0, c1); - int32x8 d1 = _mm256_unpackhi_epi32(c0, c1); - int32x8 d2 = _mm256_unpacklo_epi32(c2, c3); - int32x8 d3 = _mm256_unpackhi_epi32(c2, c3); - int32x8 e0 = _mm256_unpacklo_epi64(d0, d1); - int32x8 e1 = _mm256_unpackhi_epi64(d0, d1); - int32x8 e2 = _mm256_unpacklo_epi64(d2, d3); - int32x8 e3 = _mm256_unpackhi_epi64(d2, d3); - int32x8_MINMAX(e0, e1); - int32x8_MINMAX(e2, e3); - int32x8 f0 = _mm256_unpacklo_epi32(e0, e1); - int32x8 f1 = _mm256_unpackhi_epi32(e0, e1); - int32x8 f2 = _mm256_unpacklo_epi32(e2, e3); - int32x8 f3 = _mm256_unpackhi_epi32(e2, e3); - int32x8_store(&x[j], f0); - int32x8_store(&x[j + 8], f1); - int32x8_store(&x[j + 16], f2); - int32x8_store(&x[j + 24], f3); - } - minmax_vector(x + j, x + j + 16, n - 16 - j); - goto continue8; - } - /* q == 8 */ - j = 0; -continue8: - for (; j + 16 <= n; j += 16) { - int32x8 x0 = int32x8_load(&x[j]); - int32x8 x1 = int32x8_load(&x[j + 8]); - int32x8_MINMAX(x0, x1); - int32x8_store(&x[j], x0); - int32x8_store(&x[j + 8], x1); - int32x8 a0 = _mm256_permute2x128_si256(x0, x1, 0x20); /* x0123y0123 */ - int32x8 a1 = _mm256_permute2x128_si256(x0, x1, 0x31); /* x4567y4567 */ - int32x8_MINMAX(a0, a1); - int32x8 b0 = _mm256_permute2x128_si256(a0, a1, 0x20); /* x01234567 */ - int32x8 b1 = _mm256_permute2x128_si256(a0, a1, 0x31); /* y01234567 */ - int32x8 c0 = _mm256_unpacklo_epi64(b0, b1); /* x01y01x45y45 */ - int32x8 c1 = _mm256_unpackhi_epi64(b0, b1); /* x23y23x67y67 */ - int32x8_MINMAX(c0, c1); - int32x8 d0 = _mm256_unpacklo_epi32(c0, c1); /* x02x13x46x57 */ - int32x8 d1 = _mm256_unpackhi_epi32(c0, c1); /* y02y13y46y57 */ - int32x8 e0 = _mm256_unpacklo_epi64(d0, d1); /* x02y02x46y46 */ - int32x8 e1 = _mm256_unpackhi_epi64(d0, d1); /* x13y13x57y57 */ - int32x8_MINMAX(e0, e1); - int32x8 f0 = _mm256_unpacklo_epi32(e0, e1); /* x01234567 */ - int32x8 f1 = _mm256_unpackhi_epi32(e0, e1); /* y01234567 */ - int32x8_store(&x[j], f0); - int32x8_store(&x[j + 8], f1); - } - minmax_vector(x + j, x + j + 8, n - 8 - j); - if (j + 8 <= n) { - int32_MINMAX(&x[j], &x[j + 4]); - int32_MINMAX(&x[j + 1], &x[j + 5]); - int32_MINMAX(&x[j + 2], &x[j + 6]); - int32_MINMAX(&x[j + 3], &x[j + 7]); - int32_MINMAX(&x[j], &x[j + 2]); - int32_MINMAX(&x[j + 1], &x[j + 3]); - int32_MINMAX(&x[j], &x[j + 1]); - int32_MINMAX(&x[j + 2], &x[j + 3]); - int32_MINMAX(&x[j + 4], &x[j + 6]); - int32_MINMAX(&x[j + 5], &x[j + 7]); - int32_MINMAX(&x[j + 4], &x[j + 5]); - int32_MINMAX(&x[j + 6], &x[j + 7]); - j += 8; - } - minmax_vector(x + j, x + j + 4, n - 4 - j); - if (j + 4 <= n) { - int32_MINMAX(&x[j], &x[j + 2]); - int32_MINMAX(&x[j + 1], &x[j + 3]); - int32_MINMAX(&x[j], &x[j + 1]); - int32_MINMAX(&x[j + 2], &x[j + 3]); - j += 4; - } - if (j + 3 <= n) { - int32_MINMAX(&x[j], &x[j + 2]); - } - if (j + 2 <= n) { - int32_MINMAX(&x[j], &x[j + 1]); - } -} diff --git a/src/kem/ntru/ntruhps2048677/avx2/crypto_sort_int32.h b/src/kem/ntru/ntruhps2048677/avx2/crypto_sort_int32.h deleted file mode 100644 index 12f221b0..00000000 --- a/src/kem/ntru/ntruhps2048677/avx2/crypto_sort_int32.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef CRYPTO_SORT -#define CRYPTO_SORT - -#include "params.h" - -#include -#include - -void PQCLEAN_NTRUHPS2048677_AVX2_crypto_sort_int32(int32_t *x, size_t n); - -#endif diff --git a/src/kem/ntru/ntruhps2048677/avx2/kem.c b/src/kem/ntru/ntruhps2048677/avx2/kem.c deleted file mode 100644 index d42da6e3..00000000 --- a/src/kem/ntru/ntruhps2048677/avx2/kem.c +++ /dev/null @@ -1,63 +0,0 @@ -#include "api.h" -#include "cmov.h" -#include "fips202.h" -#include "owcpa.h" -#include "params.h" -#include "randombytes.h" -#include "sample.h" - -// API FUNCTIONS -int PQCLEAN_NTRUHPS2048677_AVX2_crypto_kem_keypair(uint8_t *pk, uint8_t *sk) { - uint8_t seed[NTRU_SAMPLE_FG_BYTES]; - - randombytes(seed, NTRU_SAMPLE_FG_BYTES); - PQCLEAN_NTRUHPS2048677_AVX2_owcpa_keypair(pk, sk, seed); - - randombytes(sk + NTRU_OWCPA_SECRETKEYBYTES, NTRU_PRFKEYBYTES); - - return 0; -} - -int PQCLEAN_NTRUHPS2048677_AVX2_crypto_kem_enc(uint8_t *c, uint8_t *k, const uint8_t *pk) { - poly r, m; - uint8_t rm[NTRU_OWCPA_MSGBYTES]; - uint8_t rm_seed[NTRU_SAMPLE_RM_BYTES]; - - randombytes(rm_seed, NTRU_SAMPLE_RM_BYTES); - - PQCLEAN_NTRUHPS2048677_AVX2_sample_rm(&r, &m, rm_seed); - - PQCLEAN_NTRUHPS2048677_AVX2_poly_S3_tobytes(rm, &r); - PQCLEAN_NTRUHPS2048677_AVX2_poly_S3_tobytes(rm + NTRU_PACK_TRINARY_BYTES, &m); - sha3_256(k, rm, NTRU_OWCPA_MSGBYTES); - - PQCLEAN_NTRUHPS2048677_AVX2_poly_Z3_to_Zq(&r); - PQCLEAN_NTRUHPS2048677_AVX2_owcpa_enc(c, &r, &m, pk); - - return 0; -} - -int PQCLEAN_NTRUHPS2048677_AVX2_crypto_kem_dec(uint8_t *k, const uint8_t *c, const uint8_t *sk) { - int i, fail; - uint8_t rm[NTRU_OWCPA_MSGBYTES]; - uint8_t buf[NTRU_PRFKEYBYTES + NTRU_CIPHERTEXTBYTES]; - - fail = PQCLEAN_NTRUHPS2048677_AVX2_owcpa_dec(rm, c, sk); - /* If fail = 0 then c = Enc(h, rm). There is no need to re-encapsulate. */ - /* See comment in PQCLEAN_NTRUHPS2048677_AVX2_owcpa_dec for details. */ - - sha3_256(k, rm, NTRU_OWCPA_MSGBYTES); - - /* shake(secret PRF key || input ciphertext) */ - for (i = 0; i < NTRU_PRFKEYBYTES; i++) { - buf[i] = sk[i + NTRU_OWCPA_SECRETKEYBYTES]; - } - for (i = 0; i < NTRU_CIPHERTEXTBYTES; i++) { - buf[NTRU_PRFKEYBYTES + i] = c[i]; - } - sha3_256(rm, buf, NTRU_PRFKEYBYTES + NTRU_CIPHERTEXTBYTES); - - PQCLEAN_NTRUHPS2048677_AVX2_cmov(k, rm, NTRU_SHAREDKEYBYTES, (unsigned char) fail); - - return 0; -} diff --git a/src/kem/ntru/ntruhps2048677/avx2/owcpa.c b/src/kem/ntru/ntruhps2048677/avx2/owcpa.c deleted file mode 100644 index 86f3c082..00000000 --- a/src/kem/ntru/ntruhps2048677/avx2/owcpa.c +++ /dev/null @@ -1,183 +0,0 @@ -#include "owcpa.h" -#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) { - /* 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; - uint32_t t = 0; - uint16_t c; - 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 |= 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, 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; - uint32_t t = 0; - uint16_t ps = 0; - uint16_t ms = 0; - for (i = 0; i < NTRU_N; i++) { - ps += m->coeffs[i] & 1; - ms += m->coeffs[i] & 2; - } - 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, - unsigned char *sk, - const unsigned char seed[NTRU_SAMPLE_FG_BYTES]) { - int i; - - poly x1, x2, x3, x4, x5; - - poly *f = &x1, *g = &x2, *invf_mod3 = &x3; - poly *gf = &x3, *invgf = &x4, *tmp = &x5; - poly *invh = &x3, *h = &x3; - - PQCLEAN_NTRUHPS2048677_AVX2_sample_fg(f, g, seed); - - PQCLEAN_NTRUHPS2048677_AVX2_poly_S3_inv(invf_mod3, f); - PQCLEAN_NTRUHPS2048677_AVX2_poly_S3_tobytes(sk, f); - PQCLEAN_NTRUHPS2048677_AVX2_poly_S3_tobytes(sk + NTRU_PACK_TRINARY_BYTES, invf_mod3); - - /* Lift coeffs of f and g from Z_p to Z_q */ - PQCLEAN_NTRUHPS2048677_AVX2_poly_Z3_to_Zq(f); - PQCLEAN_NTRUHPS2048677_AVX2_poly_Z3_to_Zq(g); - - - /* g = 3*g */ - for (i = 0; i < NTRU_N; i++) { - g->coeffs[i] = 3 * g->coeffs[i]; - } - - PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_mul(gf, g, f); - - PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_inv(invgf, gf); - - PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_mul(tmp, invgf, f); - PQCLEAN_NTRUHPS2048677_AVX2_poly_Sq_mul(invh, tmp, f); - PQCLEAN_NTRUHPS2048677_AVX2_poly_Sq_tobytes(sk + 2 * NTRU_PACK_TRINARY_BYTES, invh); - - PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_mul(tmp, invgf, g); - PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_mul(h, tmp, g); - PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_sum_zero_tobytes(pk, h); -} - - -void PQCLEAN_NTRUHPS2048677_AVX2_owcpa_enc(unsigned char *c, - const poly *r, - const poly *m, - const unsigned char *pk) { - int i; - poly x1, x2; - poly *h = &x1, *liftm = &x1; - poly *ct = &x2; - - PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_sum_zero_frombytes(h, pk); - - PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_mul(ct, r, h); - - PQCLEAN_NTRUHPS2048677_AVX2_poly_lift(liftm, m); - for (i = 0; i < NTRU_N; i++) { - ct->coeffs[i] = ct->coeffs[i] + liftm->coeffs[i]; - } - - PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_sum_zero_tobytes(c, ct); -} - -int PQCLEAN_NTRUHPS2048677_AVX2_owcpa_dec(unsigned char *rm, - const unsigned char *ciphertext, - const unsigned char *secretkey) { - int i; - int fail; - poly x1, x2, x3, x4; - - poly *c = &x1, *f = &x2, *cf = &x3; - poly *mf = &x2, *finv3 = &x3, *m = &x4; - poly *liftm = &x2, *invh = &x3, *r = &x4; - poly *b = &x1; - - PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_sum_zero_frombytes(c, ciphertext); - PQCLEAN_NTRUHPS2048677_AVX2_poly_S3_frombytes(f, secretkey); - PQCLEAN_NTRUHPS2048677_AVX2_poly_Z3_to_Zq(f); - - PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_mul(cf, c, f); - PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_to_S3(mf, cf); - - PQCLEAN_NTRUHPS2048677_AVX2_poly_S3_frombytes(finv3, secretkey + NTRU_PACK_TRINARY_BYTES); - PQCLEAN_NTRUHPS2048677_AVX2_poly_S3_mul(m, mf, finv3); - PQCLEAN_NTRUHPS2048677_AVX2_poly_S3_tobytes(rm + NTRU_PACK_TRINARY_BYTES, m); - - fail = 0; - - /* 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 */ - /* r (defined as b/h mod (q, Phi_n)) and m are in the message space. */ - /* (m can take any value in S3 in NTRU_HRSS) */ - fail |= owcpa_check_m(m); - - /* b = c - Lift(m) mod (q, x^n - 1) */ - PQCLEAN_NTRUHPS2048677_AVX2_poly_lift(liftm, m); - for (i = 0; i < NTRU_N; i++) { - b->coeffs[i] = c->coeffs[i] - liftm->coeffs[i]; - } - - /* r = b / h mod (q, Phi_n) */ - PQCLEAN_NTRUHPS2048677_AVX2_poly_Sq_frombytes(invh, secretkey + 2 * NTRU_PACK_TRINARY_BYTES); - PQCLEAN_NTRUHPS2048677_AVX2_poly_Sq_mul(r, b, invh); - - /* NOTE: Our definition of r as b/h mod (q, Phi_n) follows Figure 4 of */ - /* [Sch18] https://eprint.iacr.org/2018/1174/20181203:032458. */ - /* This differs from Figure 10 of Saito--Xagawa--Yamakawa */ - /* [SXY17] https://eprint.iacr.org/2017/1005/20180516:055500 */ - /* where r gets a final reduction modulo p. */ - /* We need this change to use Proposition 1 of [Sch18]. */ - - /* Proposition 1 of [Sch18] shows that re-encryption with (r,m) yields c. */ - /* if and only if fail==0 after the following call to owcpa_check_r */ - /* The procedure given in Fig. 8 of [Sch18] can be skipped because we have */ - /* c(1) = 0 due to the use of poly_Rq_sum_zero_{to,from}bytes. */ - fail |= owcpa_check_r(r); - - PQCLEAN_NTRUHPS2048677_AVX2_poly_trinary_Zq_to_Z3(r); - PQCLEAN_NTRUHPS2048677_AVX2_poly_S3_tobytes(rm, r); - - return fail; -} diff --git a/src/kem/ntru/ntruhps2048677/avx2/owcpa.h b/src/kem/ntru/ntruhps2048677/avx2/owcpa.h deleted file mode 100644 index 5fc4594e..00000000 --- a/src/kem/ntru/ntruhps2048677/avx2/owcpa.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef OWCPA_H -#define OWCPA_H - -#include "params.h" -#include "poly.h" - -void PQCLEAN_NTRUHPS2048677_AVX2_owcpa_keypair(unsigned char *pk, - unsigned char *sk, - const unsigned char seed[NTRU_SAMPLE_FG_BYTES]); - -void PQCLEAN_NTRUHPS2048677_AVX2_owcpa_enc(unsigned char *c, - const poly *r, - const poly *m, - const unsigned char *pk); - -int PQCLEAN_NTRUHPS2048677_AVX2_owcpa_dec(unsigned char *rm, - const unsigned char *ciphertext, - const unsigned char *secretkey); -#endif diff --git a/src/kem/ntru/ntruhps2048677/avx2/pack3.c b/src/kem/ntru/ntruhps2048677/avx2/pack3.c deleted file mode 100644 index 95becec4..00000000 --- a/src/kem/ntru/ntruhps2048677/avx2/pack3.c +++ /dev/null @@ -1,46 +0,0 @@ -#include "poly.h" - -void PQCLEAN_NTRUHPS2048677_AVX2_poly_S3_tobytes(unsigned char msg[NTRU_OWCPA_MSGBYTES], const poly *a) { - int i; - unsigned char c; - int j; - - for (i = 0; i < NTRU_PACK_DEG / 5; i++) { - c = a->coeffs[5 * i + 4] & 255; - c = (3 * c + a->coeffs[5 * i + 3]) & 255; - c = (3 * c + a->coeffs[5 * i + 2]) & 255; - c = (3 * c + a->coeffs[5 * i + 1]) & 255; - c = (3 * c + a->coeffs[5 * i + 0]) & 255; - msg[i] = c; - } - i = NTRU_PACK_DEG / 5; - c = 0; - for (j = NTRU_PACK_DEG - (5 * i) - 1; j >= 0; j--) { - c = (3 * c + a->coeffs[5 * i + j]) & 255; - } - msg[i] = c; -} - -void PQCLEAN_NTRUHPS2048677_AVX2_poly_S3_frombytes(poly *r, const unsigned char msg[NTRU_OWCPA_MSGBYTES]) { - int i; - unsigned char c; - int j; - - for (i = 0; i < NTRU_PACK_DEG / 5; i++) { - c = msg[i]; - r->coeffs[5 * i + 0] = c; - r->coeffs[5 * i + 1] = c * 171 >> 9; // this is division by 3 - r->coeffs[5 * i + 2] = c * 57 >> 9; // division by 3^2 - r->coeffs[5 * i + 3] = c * 19 >> 9; // division by 3^3 - r->coeffs[5 * i + 4] = c * 203 >> 14; // etc. - } - i = NTRU_PACK_DEG / 5; - c = msg[i]; - for (j = 0; (5 * i + j) < NTRU_PACK_DEG; j++) { - r->coeffs[5 * i + j] = c; - c = c * 171 >> 9; - } - r->coeffs[NTRU_N - 1] = 0; - PQCLEAN_NTRUHPS2048677_AVX2_poly_mod_3_Phi_n(r); -} - diff --git a/src/kem/ntru/ntruhps2048677/avx2/packq.c b/src/kem/ntru/ntruhps2048677/avx2/packq.c deleted file mode 100644 index b07d2b70..00000000 --- a/src/kem/ntru/ntruhps2048677/avx2/packq.c +++ /dev/null @@ -1,93 +0,0 @@ -#include "poly.h" - -void PQCLEAN_NTRUHPS2048677_AVX2_poly_Sq_tobytes(unsigned char *r, const poly *a) { - int i, j; - uint16_t t[8]; - - for (i = 0; i < NTRU_PACK_DEG / 8; i++) { - for (j = 0; j < 8; j++) { - t[j] = MODQ(a->coeffs[8 * i + j]); - } - - r[11 * i + 0] = (unsigned char) ( t[0] & 0xff); - r[11 * i + 1] = (unsigned char) ((t[0] >> 8) | ((t[1] & 0x1f) << 3)); - r[11 * i + 2] = (unsigned char) ((t[1] >> 5) | ((t[2] & 0x03) << 6)); - r[11 * i + 3] = (unsigned char) ((t[2] >> 2) & 0xff); - r[11 * i + 4] = (unsigned char) ((t[2] >> 10) | ((t[3] & 0x7f) << 1)); - r[11 * i + 5] = (unsigned char) ((t[3] >> 7) | ((t[4] & 0x0f) << 4)); - r[11 * i + 6] = (unsigned char) ((t[4] >> 4) | ((t[5] & 0x01) << 7)); - r[11 * i + 7] = (unsigned char) ((t[5] >> 1) & 0xff); - r[11 * i + 8] = (unsigned char) ((t[5] >> 9) | ((t[6] & 0x3f) << 2)); - r[11 * i + 9] = (unsigned char) ((t[6] >> 6) | ((t[7] & 0x07) << 5)); - r[11 * i + 10] = (unsigned char) ((t[7] >> 3)); - } - - for (j = 0; j < NTRU_PACK_DEG - 8 * i; j++) { - t[j] = MODQ(a->coeffs[8 * i + j]); - } - for (; j < 8; j++) { - t[j] = 0; - } - - switch (NTRU_PACK_DEG & 0x07) { - // cases 0 and 6 are impossible since 2 generates (Z/n)* and - // p mod 8 in {1, 7} implies that 2 is a quadratic residue. - case 4: - r[11 * i + 0] = (unsigned char) (t[0] & 0xff); - r[11 * i + 1] = (unsigned char) (t[0] >> 8) | ((t[1] & 0x1f) << 3); - r[11 * i + 2] = (unsigned char) (t[1] >> 5) | ((t[2] & 0x03) << 6); - r[11 * i + 3] = (unsigned char) (t[2] >> 2) & 0xff; - r[11 * i + 4] = (unsigned char) (t[2] >> 10) | ((t[3] & 0x7f) << 1); - r[11 * i + 5] = (unsigned char) (t[3] >> 7) | ((t[4] & 0x0f) << 4); - break; - case 2: - r[11 * i + 0] = (unsigned char) (t[0] & 0xff); - r[11 * i + 1] = (unsigned char) (t[0] >> 8) | ((t[1] & 0x1f) << 3); - r[11 * i + 2] = (unsigned char) (t[1] >> 5) | ((t[2] & 0x03) << 6); - break; - } -} - -void PQCLEAN_NTRUHPS2048677_AVX2_poly_Sq_frombytes(poly *r, const unsigned char *a) { - int i; - for (i = 0; i < NTRU_PACK_DEG / 8; i++) { - r->coeffs[8 * i + 0] = (a[11 * i + 0] >> 0) | (((uint16_t)a[11 * i + 1] & 0x07) << 8); - r->coeffs[8 * i + 1] = (a[11 * i + 1] >> 3) | (((uint16_t)a[11 * i + 2] & 0x3f) << 5); - r->coeffs[8 * i + 2] = (a[11 * i + 2] >> 6) | (((uint16_t)a[11 * i + 3] & 0xff) << 2) | (((uint16_t)a[11 * i + 4] & 0x01) << 10); - r->coeffs[8 * i + 3] = (a[11 * i + 4] >> 1) | (((uint16_t)a[11 * i + 5] & 0x0f) << 7); - r->coeffs[8 * i + 4] = (a[11 * i + 5] >> 4) | (((uint16_t)a[11 * i + 6] & 0x7f) << 4); - r->coeffs[8 * i + 5] = (a[11 * i + 6] >> 7) | (((uint16_t)a[11 * i + 7] & 0xff) << 1) | (((uint16_t)a[11 * i + 8] & 0x03) << 9); - r->coeffs[8 * i + 6] = (a[11 * i + 8] >> 2) | (((uint16_t)a[11 * i + 9] & 0x1f) << 6); - r->coeffs[8 * i + 7] = (a[11 * i + 9] >> 5) | (((uint16_t)a[11 * i + 10] & 0xff) << 3); - } - switch (NTRU_PACK_DEG & 0x07) { - // cases 0 and 6 are impossible since 2 generates (Z/n)* and - // p mod 8 in {1, 7} implies that 2 is a quadratic residue. - case 4: - r->coeffs[8 * i + 0] = (a[11 * i + 0] >> 0) | (((uint16_t)a[11 * i + 1] & 0x07) << 8); - r->coeffs[8 * i + 1] = (a[11 * i + 1] >> 3) | (((uint16_t)a[11 * i + 2] & 0x3f) << 5); - r->coeffs[8 * i + 2] = (a[11 * i + 2] >> 6) | (((uint16_t)a[11 * i + 3] & 0xff) << 2) | (((uint16_t)a[11 * i + 4] & 0x01) << 10); - r->coeffs[8 * i + 3] = (a[11 * i + 4] >> 1) | (((uint16_t)a[11 * i + 5] & 0x0f) << 7); - break; - case 2: - r->coeffs[8 * i + 0] = (a[11 * i + 0] >> 0) | (((uint16_t)a[11 * i + 1] & 0x07) << 8); - r->coeffs[8 * i + 1] = (a[11 * i + 1] >> 3) | (((uint16_t)a[11 * i + 2] & 0x3f) << 5); - break; - } - r->coeffs[NTRU_N - 1] = 0; -} - -void PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_sum_zero_tobytes(unsigned char *r, const poly *a) { - PQCLEAN_NTRUHPS2048677_AVX2_poly_Sq_tobytes(r, a); -} - -void PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_sum_zero_frombytes(poly *r, const unsigned char *a) { - int i; - PQCLEAN_NTRUHPS2048677_AVX2_poly_Sq_frombytes(r, a); - - /* Set r[n-1] so that the sum of coefficients is zero mod q */ - r->coeffs[NTRU_N - 1] = 0; - for (i = 0; i < NTRU_PACK_DEG; i++) { - r->coeffs[NTRU_N - 1] -= r->coeffs[i]; - } -} diff --git a/src/kem/ntru/ntruhps2048677/avx2/params.h b/src/kem/ntru/ntruhps2048677/avx2/params.h deleted file mode 100644 index 0ef8ab54..00000000 --- a/src/kem/ntru/ntruhps2048677/avx2/params.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef PARAMS_H -#define PARAMS_H - -#define NTRU_HPS -#define NTRU_N 677 -#define NTRU_LOGQ 11 - - -/* Do not modify below this line */ - -#define PAD32(X) ((((X) + 31)/32)*32) - -#define NTRU_Q (1 << NTRU_LOGQ) -#define NTRU_WEIGHT (NTRU_Q/8 - 2) - -#define NTRU_SEEDBYTES 32 -#define NTRU_PRFKEYBYTES 32 -#define NTRU_SHAREDKEYBYTES 32 - -#define NTRU_SAMPLE_IID_BYTES (NTRU_N-1) -#define NTRU_SAMPLE_FT_BYTES ((30*(NTRU_N-1)+7)/8) -#define NTRU_SAMPLE_FG_BYTES (NTRU_SAMPLE_IID_BYTES+NTRU_SAMPLE_FT_BYTES) -#define NTRU_SAMPLE_RM_BYTES (NTRU_SAMPLE_IID_BYTES+NTRU_SAMPLE_FT_BYTES) - -#define NTRU_PACK_DEG (NTRU_N-1) -#define NTRU_PACK_TRINARY_BYTES ((NTRU_PACK_DEG+4)/5) - -#define NTRU_OWCPA_MSGBYTES (2*NTRU_PACK_TRINARY_BYTES) -#define NTRU_OWCPA_PUBLICKEYBYTES ((NTRU_LOGQ*NTRU_PACK_DEG+7)/8) -#define NTRU_OWCPA_SECRETKEYBYTES (2*NTRU_PACK_TRINARY_BYTES + NTRU_OWCPA_PUBLICKEYBYTES) -#define NTRU_OWCPA_BYTES ((NTRU_LOGQ*NTRU_PACK_DEG+7)/8) - -#define NTRU_PUBLICKEYBYTES (NTRU_OWCPA_PUBLICKEYBYTES) -#define NTRU_SECRETKEYBYTES (NTRU_OWCPA_SECRETKEYBYTES + NTRU_PRFKEYBYTES) -#define NTRU_CIPHERTEXTBYTES (NTRU_OWCPA_BYTES) - -#endif diff --git a/src/kem/ntru/ntruhps2048677/avx2/poly.c b/src/kem/ntru/ntruhps2048677/avx2/poly.c deleted file mode 100644 index 07914085..00000000 --- a/src/kem/ntru/ntruhps2048677/avx2/poly.c +++ /dev/null @@ -1,75 +0,0 @@ -#include "poly.h" - -/* Map {0, 1, 2} -> {0,1,q-1} in place */ -void PQCLEAN_NTRUHPS2048677_AVX2_poly_Z3_to_Zq(poly *r) { - int i; - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = r->coeffs[i] | ((-(r->coeffs[i] >> 1)) & (NTRU_Q - 1)); - } -} - -/* Map {0, 1, q-1} -> {0,1,2} in place */ -void PQCLEAN_NTRUHPS2048677_AVX2_poly_trinary_Zq_to_Z3(poly *r) { - int i; - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = MODQ(r->coeffs[i]); - r->coeffs[i] = 3 & (r->coeffs[i] ^ (r->coeffs[i] >> (NTRU_LOGQ - 1))); - } -} - -void PQCLEAN_NTRUHPS2048677_AVX2_poly_Sq_mul(poly *r, const poly *a, const poly *b) { - PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_mul(r, a, b); - PQCLEAN_NTRUHPS2048677_AVX2_poly_mod_q_Phi_n(r); -} - -void PQCLEAN_NTRUHPS2048677_AVX2_poly_S3_mul(poly *r, const poly *a, const poly *b) { - int i; - - /* Our S3 multiplications do not overflow mod q, */ - /* so we can re-purpose PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_mul, as long as we */ - /* follow with an explicit reduction mod q. */ - PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_mul(r, a, b); - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = MODQ(r->coeffs[i]); - } - PQCLEAN_NTRUHPS2048677_AVX2_poly_mod_3_Phi_n(r); -} - -static void PQCLEAN_NTRUHPS2048677_AVX2_poly_R2_inv_to_Rq_inv(poly *r, const poly *ai, const poly *a) { - - int i; - poly b, c; - poly s; - - // for 0..4 - // ai = ai * (2 - a*ai) mod q - for (i = 0; i < NTRU_N; i++) { - b.coeffs[i] = -(a->coeffs[i]); - } - - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = ai->coeffs[i]; - } - - PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_mul(&c, r, &b); - c.coeffs[0] += 2; // c = 2 - a*ai - PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_mul(&s, &c, r); // s = ai*c - - PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_mul(&c, &s, &b); - c.coeffs[0] += 2; // c = 2 - a*s - PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_mul(r, &c, &s); // r = s*c - - PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_mul(&c, r, &b); - c.coeffs[0] += 2; // c = 2 - a*r - PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_mul(&s, &c, r); // s = r*c - - PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_mul(&c, &s, &b); - c.coeffs[0] += 2; // c = 2 - a*s - PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_mul(r, &c, &s); // r = s*c -} - -void PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_inv(poly *r, const poly *a) { - poly ai2; - PQCLEAN_NTRUHPS2048677_AVX2_poly_R2_inv(&ai2, a); - PQCLEAN_NTRUHPS2048677_AVX2_poly_R2_inv_to_Rq_inv(r, &ai2, a); -} diff --git a/src/kem/ntru/ntruhps2048677/avx2/poly.h b/src/kem/ntru/ntruhps2048677/avx2/poly.h deleted file mode 100644 index 63aeaf89..00000000 --- a/src/kem/ntru/ntruhps2048677/avx2/poly.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef POLY_H -#define POLY_H - -#include -#include - -#include "params.h" - -#define MODQ(X) ((X) & (NTRU_Q-1)) - -typedef union { /* align to 32 byte boundary for vmovdqa */ - uint16_t coeffs[PAD32(NTRU_N)]; - __m256i coeffs_x16[PAD32(NTRU_N) / 16]; -} poly; - -void PQCLEAN_NTRUHPS2048677_AVX2_poly_mod_3_Phi_n(poly *r); -void PQCLEAN_NTRUHPS2048677_AVX2_poly_mod_q_Phi_n(poly *r); - -void PQCLEAN_NTRUHPS2048677_AVX2_poly_Sq_tobytes(unsigned char *r, const poly *a); -void PQCLEAN_NTRUHPS2048677_AVX2_poly_Sq_frombytes(poly *r, const unsigned char *a); - -void PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_sum_zero_tobytes(unsigned char *r, const poly *a); -void PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_sum_zero_frombytes(poly *r, const unsigned char *a); - -void PQCLEAN_NTRUHPS2048677_AVX2_poly_S3_tobytes(unsigned char msg[NTRU_PACK_TRINARY_BYTES], const poly *a); -void PQCLEAN_NTRUHPS2048677_AVX2_poly_S3_frombytes(poly *r, const unsigned char msg[NTRU_PACK_TRINARY_BYTES]); - -void PQCLEAN_NTRUHPS2048677_AVX2_poly_Sq_mul(poly *r, const poly *a, const poly *b); -void PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_mul(poly *r, const poly *a, const poly *b); -void PQCLEAN_NTRUHPS2048677_AVX2_poly_S3_mul(poly *r, const poly *a, const poly *b); -void PQCLEAN_NTRUHPS2048677_AVX2_poly_lift(poly *r, const poly *a); -void PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_to_S3(poly *r, const poly *a); - -void PQCLEAN_NTRUHPS2048677_AVX2_poly_R2_inv(poly *r, const poly *a); -void PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_inv(poly *r, const poly *a); -void PQCLEAN_NTRUHPS2048677_AVX2_poly_S3_inv(poly *r, const poly *a); - -void PQCLEAN_NTRUHPS2048677_AVX2_poly_Z3_to_Zq(poly *r); -void PQCLEAN_NTRUHPS2048677_AVX2_poly_trinary_Zq_to_Z3(poly *r); - -#endif diff --git a/src/kem/ntru/ntruhps2048677/avx2/poly_lift.c b/src/kem/ntru/ntruhps2048677/avx2/poly_lift.c deleted file mode 100644 index 95416711..00000000 --- a/src/kem/ntru/ntruhps2048677/avx2/poly_lift.c +++ /dev/null @@ -1,11 +0,0 @@ -#include "poly.h" - -void PQCLEAN_NTRUHPS2048677_AVX2_poly_lift(poly *r, const poly *a) { - int i; - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = a->coeffs[i]; - } - PQCLEAN_NTRUHPS2048677_AVX2_poly_Z3_to_Zq(r); -} - - diff --git a/src/kem/ntru/ntruhps2048677/avx2/poly_mod_3_Phi_n.s b/src/kem/ntru/ntruhps2048677/avx2/poly_mod_3_Phi_n.s deleted file mode 100644 index 90c58f1b..00000000 --- a/src/kem/ntru/ntruhps2048677/avx2/poly_mod_3_Phi_n.s +++ /dev/null @@ -1,928 +0,0 @@ -.data -.p2align 5 -mask_ff: -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -mask_f: -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -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 -.text -.global PQCLEAN_NTRUHPS2048677_AVX2_poly_mod_3_Phi_n -.global _PQCLEAN_NTRUHPS2048677_AVX2_poly_mod_3_Phi_n -PQCLEAN_NTRUHPS2048677_AVX2_poly_mod_3_Phi_n: -_PQCLEAN_NTRUHPS2048677_AVX2_poly_mod_3_Phi_n: -vmovdqa 1344(%rdi), %ymm0 -vpermq $1, %ymm0, %ymm0 -vpslld $17, %ymm0, %ymm0 -vpsrld $16, %ymm0, %ymm1 -vpor %ymm0, %ymm1, %ymm0 -vbroadcastss %xmm0, %ymm0 -vpaddw 0(%rdi), %ymm0, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -movw $0, 1354(%rdi) -movw $0, 1356(%rdi) -movw $0, 1358(%rdi) -movw $0, 1360(%rdi) -movw $0, 1362(%rdi) -movw $0, 1364(%rdi) -movw $0, 1366(%rdi) -movw $0, 1368(%rdi) -movw $0, 1370(%rdi) -movw $0, 1372(%rdi) -movw $0, 1374(%rdi) -movw $0, 1376(%rdi) -movw $0, 1378(%rdi) -movw $0, 1380(%rdi) -movw $0, 1382(%rdi) -movw $0, 1384(%rdi) -movw $0, 1386(%rdi) -movw $0, 1388(%rdi) -movw $0, 1390(%rdi) -movw $0, 1392(%rdi) -movw $0, 1394(%rdi) -movw $0, 1396(%rdi) -movw $0, 1398(%rdi) -movw $0, 1400(%rdi) -movw $0, 1402(%rdi) -movw $0, 1404(%rdi) -movw $0, 1406(%rdi) -ret diff --git a/src/kem/ntru/ntruhps2048677/avx2/poly_mod_q_Phi_n.s b/src/kem/ntru/ntruhps2048677/avx2/poly_mod_q_Phi_n.s deleted file mode 100644 index 27bba636..00000000 --- a/src/kem/ntru/ntruhps2048677/avx2/poly_mod_q_Phi_n.s +++ /dev/null @@ -1,104 +0,0 @@ -.data -.p2align 5 -.text -.global PQCLEAN_NTRUHPS2048677_AVX2_poly_mod_q_Phi_n -.global _PQCLEAN_NTRUHPS2048677_AVX2_poly_mod_q_Phi_n -PQCLEAN_NTRUHPS2048677_AVX2_poly_mod_q_Phi_n: -_PQCLEAN_NTRUHPS2048677_AVX2_poly_mod_q_Phi_n: -vmovdqa 1344(%rdi), %ymm0 -vpermq $1, %ymm0, %ymm0 -vpslld $16, %ymm0, %ymm0 -vpsrld $16, %ymm0, %ymm1 -vpor %ymm0, %ymm1, %ymm0 -vbroadcastss %xmm0, %ymm0 -vxorpd %ymm1, %ymm1, %ymm1 -vpsubw %ymm0, %ymm1, %ymm0 -vpaddw 0(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 0(%rdi) -vpaddw 32(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 32(%rdi) -vpaddw 64(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 64(%rdi) -vpaddw 96(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 96(%rdi) -vpaddw 128(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 128(%rdi) -vpaddw 160(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 160(%rdi) -vpaddw 192(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 192(%rdi) -vpaddw 224(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 224(%rdi) -vpaddw 256(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 256(%rdi) -vpaddw 288(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 288(%rdi) -vpaddw 320(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 320(%rdi) -vpaddw 352(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 352(%rdi) -vpaddw 384(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 384(%rdi) -vpaddw 416(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 416(%rdi) -vpaddw 448(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 448(%rdi) -vpaddw 480(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 480(%rdi) -vpaddw 512(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 512(%rdi) -vpaddw 544(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 544(%rdi) -vpaddw 576(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 576(%rdi) -vpaddw 608(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 608(%rdi) -vpaddw 640(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 640(%rdi) -vpaddw 672(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 672(%rdi) -vpaddw 704(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 704(%rdi) -vpaddw 736(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 736(%rdi) -vpaddw 768(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 768(%rdi) -vpaddw 800(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 800(%rdi) -vpaddw 832(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 832(%rdi) -vpaddw 864(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 864(%rdi) -vpaddw 896(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 896(%rdi) -vpaddw 928(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 928(%rdi) -vpaddw 960(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 960(%rdi) -vpaddw 992(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 992(%rdi) -vpaddw 1024(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1024(%rdi) -vpaddw 1056(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1056(%rdi) -vpaddw 1088(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1088(%rdi) -vpaddw 1120(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1120(%rdi) -vpaddw 1152(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1152(%rdi) -vpaddw 1184(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1184(%rdi) -vpaddw 1216(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1216(%rdi) -vpaddw 1248(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1248(%rdi) -vpaddw 1280(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1280(%rdi) -vpaddw 1312(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1312(%rdi) -vpaddw 1344(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1344(%rdi) -vpaddw 1376(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1376(%rdi) -ret diff --git a/src/kem/ntru/ntruhps2048677/avx2/poly_r2_inv.c b/src/kem/ntru/ntruhps2048677/avx2/poly_r2_inv.c deleted file mode 100644 index aedd8827..00000000 --- a/src/kem/ntru/ntruhps2048677/avx2/poly_r2_inv.c +++ /dev/null @@ -1,73 +0,0 @@ -#include "poly_r2_inv.h" -#include "poly.h" - -// TODO this costs 1764 cycles.. (implementing as S3_to_bytes results in 2108) -// This can be implemented nicely in assembly using pdep / pext functions -void PQCLEAN_NTRUHPS2048677_AVX2_poly_R2_tobytes(unsigned char *out, const poly *a) { - int i, j, k; - for (i = 0; i < 12; i++) { - for (k = 0; k < 8; k++) { - out[i * 8 + k] = 0; - for (j = 0; j < 8; j++) { - if ((i * 8 + k) * 8 + j < NTRU_N) { - out[i * 8 + k] |= (a->coeffs[(i * 8 + k) * 8 + j] & 1) << j; - } - } - } - } -} - -void PQCLEAN_NTRUHPS2048677_AVX2_poly_R2_frombytes(poly *a, const unsigned char *in) { - int i, j, k; - for (i = 0; i < 12; i++) { - for (k = 0; k < 8; k++) { - for (j = 0; j < 8; j++) { - if ((i * 8 + k) * 8 + j < NTRU_N) { - a->coeffs[(i * 8 + k) * 8 + j] = (in[i * 8 + k] >> j) & 1; - } - } - } - } -} - -void PQCLEAN_NTRUHPS2048677_AVX2_poly_R2_inv(poly *r, const poly *a) { - union { - unsigned char s[96]; - __m256i s_x32[3]; - } squares[13]; -#define s(x) squares[(x)].s - - // This relies on the following addition chain: - // 1, 2, 3, 5, 10, 20, 21, 42, 84, 168, 336, 672, 675 - - PQCLEAN_NTRUHPS2048677_AVX2_poly_R2_tobytes(s(0), a); // TODO alignment - - PQCLEAN_NTRUHPS2048677_AVX2_square_1_677(s(1), s(0)); - PQCLEAN_NTRUHPS2048677_AVX2_poly_R2_mul(s(1), s(1), s(0)); - PQCLEAN_NTRUHPS2048677_AVX2_square_1_677(s(2), s(1)); - PQCLEAN_NTRUHPS2048677_AVX2_poly_R2_mul(s(2), s(2), s(0)); - PQCLEAN_NTRUHPS2048677_AVX2_square_2_677(s(3), s(2)); - PQCLEAN_NTRUHPS2048677_AVX2_poly_R2_mul(s(3), s(3), s(1)); - PQCLEAN_NTRUHPS2048677_AVX2_square_5_677(s(4), s(3)); - PQCLEAN_NTRUHPS2048677_AVX2_poly_R2_mul(s(4), s(4), s(3)); - PQCLEAN_NTRUHPS2048677_AVX2_square_10_677(s(5), s(4)); - PQCLEAN_NTRUHPS2048677_AVX2_poly_R2_mul(s(5), s(5), s(4)); - PQCLEAN_NTRUHPS2048677_AVX2_square_1_677(s(6), s(5)); - PQCLEAN_NTRUHPS2048677_AVX2_poly_R2_mul(s(6), s(6), s(0)); - PQCLEAN_NTRUHPS2048677_AVX2_square_21_677(s(7), s(6)); - PQCLEAN_NTRUHPS2048677_AVX2_poly_R2_mul(s(7), s(7), s(6)); - PQCLEAN_NTRUHPS2048677_AVX2_square_42_677(s(8), s(7)); - PQCLEAN_NTRUHPS2048677_AVX2_poly_R2_mul(s(8), s(8), s(7)); - PQCLEAN_NTRUHPS2048677_AVX2_square_84_677(s(9), s(8)); - PQCLEAN_NTRUHPS2048677_AVX2_poly_R2_mul(s(9), s(9), s(8)); - PQCLEAN_NTRUHPS2048677_AVX2_square_168_677(s(10), s(9)); - PQCLEAN_NTRUHPS2048677_AVX2_poly_R2_mul(s(10), s(10), s(9)); - PQCLEAN_NTRUHPS2048677_AVX2_square_336_677(s(11), s(10)); - PQCLEAN_NTRUHPS2048677_AVX2_poly_R2_mul(s(11), s(11), s(10)); - PQCLEAN_NTRUHPS2048677_AVX2_square_3_677(s(12), s(11)); - PQCLEAN_NTRUHPS2048677_AVX2_poly_R2_mul(s(12), s(12), s(2)); - PQCLEAN_NTRUHPS2048677_AVX2_square_1_677(s(0), s(12)); - - PQCLEAN_NTRUHPS2048677_AVX2_poly_R2_frombytes(r, s(0)); -#undef s -} diff --git a/src/kem/ntru/ntruhps2048677/avx2/poly_r2_inv.h b/src/kem/ntru/ntruhps2048677/avx2/poly_r2_inv.h deleted file mode 100644 index a7104cc6..00000000 --- a/src/kem/ntru/ntruhps2048677/avx2/poly_r2_inv.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef POLY_R2_INV_H -#define POLY_R2_INV_H - -#include "poly.h" - -void PQCLEAN_NTRUHPS2048677_AVX2_poly_R2_tobytes(unsigned char *out, const poly *a); -void PQCLEAN_NTRUHPS2048677_AVX2_poly_R2_frombytes(poly *a, const unsigned char *in); - -extern void PQCLEAN_NTRUHPS2048677_AVX2_square_1_677(unsigned char *out, const unsigned char *a); -extern void PQCLEAN_NTRUHPS2048677_AVX2_square_2_677(unsigned char *out, const unsigned char *a); -extern void PQCLEAN_NTRUHPS2048677_AVX2_square_3_677(unsigned char *out, const unsigned char *a); -extern void PQCLEAN_NTRUHPS2048677_AVX2_square_5_677(unsigned char *out, const unsigned char *a); -extern void PQCLEAN_NTRUHPS2048677_AVX2_square_10_677(unsigned char *out, const unsigned char *a); -extern void PQCLEAN_NTRUHPS2048677_AVX2_square_21_677(unsigned char *out, const unsigned char *a); -extern void PQCLEAN_NTRUHPS2048677_AVX2_square_42_677(unsigned char *out, const unsigned char *a); -extern void PQCLEAN_NTRUHPS2048677_AVX2_square_84_677(unsigned char *out, const unsigned char *a); -extern void PQCLEAN_NTRUHPS2048677_AVX2_square_168_677(unsigned char *out, const unsigned char *a); -extern void PQCLEAN_NTRUHPS2048677_AVX2_square_336_677(unsigned char *out, const unsigned char *a); - -extern void PQCLEAN_NTRUHPS2048677_AVX2_poly_R2_mul(unsigned char *out, const unsigned char *a, - const unsigned char *b); - -#endif diff --git a/src/kem/ntru/ntruhps2048677/avx2/poly_r2_mul.s b/src/kem/ntru/ntruhps2048677/avx2/poly_r2_mul.s deleted file mode 100644 index b745f715..00000000 --- a/src/kem/ntru/ntruhps2048677/avx2/poly_r2_mul.s +++ /dev/null @@ -1,466 +0,0 @@ -.data -.p2align 5 -mask1100: -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -mask0110: -.word 0 -.word 0 -.word 0 -.word 0 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 0 -.word 0 -.word 0 -.word 0 -mask0011: -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -mask1000: -.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 65535 -.word 65535 -.word 65535 -.word 65535 -mask0111: -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 0 -.word 0 -.word 0 -.word 0 -low165: -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 31 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.text -.global PQCLEAN_NTRUHPS2048677_AVX2_poly_R2_mul -.global _PQCLEAN_NTRUHPS2048677_AVX2_poly_R2_mul -PQCLEAN_NTRUHPS2048677_AVX2_poly_R2_mul: -_PQCLEAN_NTRUHPS2048677_AVX2_poly_R2_mul: -vmovdqa 0(%rsi), %ymm0 -vmovdqa 32(%rsi), %ymm1 -vmovdqa 0(%rdx), %ymm3 -vmovdqa 32(%rdx), %ymm4 -vpxor %ymm0, %ymm1, %ymm6 -vpxor %ymm3, %ymm4, %ymm7 -vextracti128 $1, %ymm0, %xmm11 -vextracti128 $1, %ymm3, %xmm12 -vpclmulqdq $1, %xmm11, %xmm12, %xmm5 -vpclmulqdq $16, %xmm11, %xmm12, %xmm14 -vpclmulqdq $17, %xmm11, %xmm12, %xmm15 -vpxor %xmm5, %xmm14, %xmm14 -vpclmulqdq $0, %xmm11, %xmm12, %xmm5 -vpermq $16, %ymm14, %ymm14 -vinserti128 $1, %xmm15, %ymm15, %ymm15 -vpand mask0011(%rip), %ymm5, %ymm5 -vpand mask0110(%rip), %ymm14, %ymm14 -vpand mask1100(%rip), %ymm15, %ymm15 -vpxor %ymm5, %ymm14, %ymm14 -vpxor %ymm14, %ymm15, %ymm5 -vpxor %xmm0, %xmm11, %xmm11 -vpxor %xmm3, %xmm12, %xmm12 -vpclmulqdq $1, %xmm11, %xmm12, %xmm13 -vpclmulqdq $16, %xmm11, %xmm12, %xmm14 -vpclmulqdq $17, %xmm11, %xmm12, %xmm15 -vpxor %xmm13, %xmm14, %xmm14 -vpclmulqdq $0, %xmm11, %xmm12, %xmm13 -vpermq $16, %ymm14, %ymm14 -vinserti128 $1, %xmm15, %ymm15, %ymm15 -vpand mask0011(%rip), %ymm13, %ymm13 -vpand mask0110(%rip), %ymm14, %ymm14 -vpand mask1100(%rip), %ymm15, %ymm15 -vpxor %ymm13, %ymm14, %ymm14 -vpxor %ymm14, %ymm15, %ymm13 -vpclmulqdq $1, %xmm0, %xmm3, %xmm2 -vpclmulqdq $16, %xmm0, %xmm3, %xmm14 -vpclmulqdq $17, %xmm0, %xmm3, %xmm15 -vpxor %xmm2, %xmm14, %xmm14 -vpclmulqdq $0, %xmm0, %xmm3, %xmm2 -vpermq $16, %ymm14, %ymm14 -vinserti128 $1, %xmm15, %ymm15, %ymm15 -vpand mask0011(%rip), %ymm2, %ymm2 -vpand mask0110(%rip), %ymm14, %ymm14 -vpand mask1100(%rip), %ymm15, %ymm15 -vpxor %ymm2, %ymm14, %ymm14 -vpxor %ymm14, %ymm15, %ymm2 -vpxor %ymm13, %ymm5, %ymm13 -vpxor %ymm13, %ymm2, %ymm13 -vpxor %ymm11, %ymm11, %ymm11 -vextracti128 $1, %ymm13, %xmm11 -vpxor %ymm5, %ymm11, %ymm5 -vpxor %ymm11, %ymm11, %ymm11 -vinserti128 $1, %xmm13, %ymm11, %ymm11 -vpxor %ymm11, %ymm2, %ymm2 -vextracti128 $1, %ymm6, %xmm11 -vextracti128 $1, %ymm7, %xmm12 -vpclmulqdq $1, %xmm11, %xmm12, %xmm9 -vpclmulqdq $16, %xmm11, %xmm12, %xmm14 -vpclmulqdq $17, %xmm11, %xmm12, %xmm15 -vpxor %xmm9, %xmm14, %xmm14 -vpclmulqdq $0, %xmm11, %xmm12, %xmm9 -vpermq $16, %ymm14, %ymm14 -vinserti128 $1, %xmm15, %ymm15, %ymm15 -vpand mask0011(%rip), %ymm9, %ymm9 -vpand mask0110(%rip), %ymm14, %ymm14 -vpand mask1100(%rip), %ymm15, %ymm15 -vpxor %ymm9, %ymm14, %ymm14 -vpxor %ymm14, %ymm15, %ymm9 -vpxor %xmm6, %xmm11, %xmm11 -vpxor %xmm7, %xmm12, %xmm12 -vpclmulqdq $1, %xmm11, %xmm12, %xmm13 -vpclmulqdq $16, %xmm11, %xmm12, %xmm14 -vpclmulqdq $17, %xmm11, %xmm12, %xmm15 -vpxor %xmm13, %xmm14, %xmm14 -vpclmulqdq $0, %xmm11, %xmm12, %xmm13 -vpermq $16, %ymm14, %ymm14 -vinserti128 $1, %xmm15, %ymm15, %ymm15 -vpand mask0011(%rip), %ymm13, %ymm13 -vpand mask0110(%rip), %ymm14, %ymm14 -vpand mask1100(%rip), %ymm15, %ymm15 -vpxor %ymm13, %ymm14, %ymm14 -vpxor %ymm14, %ymm15, %ymm13 -vpclmulqdq $1, %xmm6, %xmm7, %xmm8 -vpclmulqdq $16, %xmm6, %xmm7, %xmm14 -vpclmulqdq $17, %xmm6, %xmm7, %xmm15 -vpxor %xmm8, %xmm14, %xmm14 -vpclmulqdq $0, %xmm6, %xmm7, %xmm8 -vpermq $16, %ymm14, %ymm14 -vinserti128 $1, %xmm15, %ymm15, %ymm15 -vpand mask0011(%rip), %ymm8, %ymm8 -vpand mask0110(%rip), %ymm14, %ymm14 -vpand mask1100(%rip), %ymm15, %ymm15 -vpxor %ymm8, %ymm14, %ymm14 -vpxor %ymm14, %ymm15, %ymm8 -vpxor %ymm13, %ymm9, %ymm13 -vpxor %ymm13, %ymm8, %ymm13 -vpxor %ymm11, %ymm11, %ymm11 -vextracti128 $1, %ymm13, %xmm11 -vpxor %ymm9, %ymm11, %ymm9 -vpxor %ymm11, %ymm11, %ymm11 -vinserti128 $1, %xmm13, %ymm11, %ymm11 -vpxor %ymm11, %ymm8, %ymm8 -vpxor %ymm8, %ymm2, %ymm0 -vpxor %ymm9, %ymm5, %ymm3 -vpxor %ymm5, %ymm0, %ymm0 -vpxor %ymm3, %ymm8, %ymm8 -vmovdqa 64(%rsi), %ymm10 -vmovdqa 64(%rdx), %ymm15 -vpxor %ymm6, %ymm10, %ymm6 -vpxor %ymm7, %ymm15, %ymm7 -vextracti128 $1, %ymm6, %xmm11 -vextracti128 $1, %ymm7, %xmm12 -vpclmulqdq $1, %xmm11, %xmm12, %xmm5 -vpclmulqdq $16, %xmm11, %xmm12, %xmm13 -vpclmulqdq $17, %xmm11, %xmm12, %xmm14 -vpxor %xmm5, %xmm13, %xmm13 -vpclmulqdq $0, %xmm11, %xmm12, %xmm5 -vpermq $16, %ymm13, %ymm13 -vinserti128 $1, %xmm14, %ymm14, %ymm14 -vpand mask0011(%rip), %ymm5, %ymm5 -vpand mask0110(%rip), %ymm13, %ymm13 -vpand mask1100(%rip), %ymm14, %ymm14 -vpxor %ymm5, %ymm13, %ymm13 -vpxor %ymm13, %ymm14, %ymm5 -vpclmulqdq $1, %xmm6, %xmm7, %xmm3 -vpclmulqdq $16, %xmm6, %xmm7, %xmm13 -vpclmulqdq $17, %xmm6, %xmm7, %xmm14 -vpxor %xmm3, %xmm13, %xmm13 -vpclmulqdq $0, %xmm6, %xmm7, %xmm3 -vpermq $16, %ymm13, %ymm13 -vinserti128 $1, %xmm14, %ymm14, %ymm14 -vpand mask0011(%rip), %ymm3, %ymm3 -vpand mask0110(%rip), %ymm13, %ymm13 -vpand mask1100(%rip), %ymm14, %ymm14 -vpxor %ymm3, %ymm13, %ymm13 -vpxor %ymm13, %ymm14, %ymm3 -vpxor %xmm6, %xmm11, %xmm11 -vpxor %xmm7, %xmm12, %xmm12 -vpclmulqdq $1, %xmm11, %xmm12, %xmm13 -vpclmulqdq $16, %xmm11, %xmm12, %xmm6 -vpclmulqdq $17, %xmm11, %xmm12, %xmm7 -vpxor %xmm13, %xmm6, %xmm6 -vpclmulqdq $0, %xmm11, %xmm12, %xmm13 -vpermq $16, %ymm6, %ymm6 -vinserti128 $1, %xmm7, %ymm7, %ymm7 -vpand mask0011(%rip), %ymm13, %ymm13 -vpand mask0110(%rip), %ymm6, %ymm6 -vpand mask1100(%rip), %ymm7, %ymm7 -vpxor %ymm13, %ymm6, %ymm6 -vpxor %ymm6, %ymm7, %ymm13 -vpxor %ymm13, %ymm5, %ymm13 -vpxor %ymm13, %ymm3, %ymm13 -vpxor %ymm11, %ymm11, %ymm11 -vextracti128 $1, %ymm13, %xmm11 -vpxor %ymm5, %ymm11, %ymm5 -vpxor %ymm11, %ymm11, %ymm11 -vinserti128 $1, %xmm13, %ymm11, %ymm11 -vpxor %ymm11, %ymm3, %ymm3 -vpxor %ymm3, %ymm8, %ymm8 -vpxor %ymm5, %ymm9, %ymm9 -vpxor %ymm1, %ymm10, %ymm6 -vpxor %ymm4, %ymm15, %ymm7 -vextracti128 $1, %ymm6, %xmm11 -vextracti128 $1, %ymm7, %xmm12 -vpclmulqdq $1, %xmm11, %xmm12, %xmm5 -vpclmulqdq $16, %xmm11, %xmm12, %xmm13 -vpclmulqdq $17, %xmm11, %xmm12, %xmm14 -vpxor %xmm5, %xmm13, %xmm13 -vpclmulqdq $0, %xmm11, %xmm12, %xmm5 -vpermq $16, %ymm13, %ymm13 -vinserti128 $1, %xmm14, %ymm14, %ymm14 -vpand mask0011(%rip), %ymm5, %ymm5 -vpand mask0110(%rip), %ymm13, %ymm13 -vpand mask1100(%rip), %ymm14, %ymm14 -vpxor %ymm5, %ymm13, %ymm13 -vpxor %ymm13, %ymm14, %ymm5 -vpclmulqdq $1, %xmm6, %xmm7, %xmm3 -vpclmulqdq $16, %xmm6, %xmm7, %xmm13 -vpclmulqdq $17, %xmm6, %xmm7, %xmm14 -vpxor %xmm3, %xmm13, %xmm13 -vpclmulqdq $0, %xmm6, %xmm7, %xmm3 -vpermq $16, %ymm13, %ymm13 -vinserti128 $1, %xmm14, %ymm14, %ymm14 -vpand mask0011(%rip), %ymm3, %ymm3 -vpand mask0110(%rip), %ymm13, %ymm13 -vpand mask1100(%rip), %ymm14, %ymm14 -vpxor %ymm3, %ymm13, %ymm13 -vpxor %ymm13, %ymm14, %ymm3 -vpxor %xmm6, %xmm11, %xmm11 -vpxor %xmm7, %xmm12, %xmm12 -vpclmulqdq $1, %xmm11, %xmm12, %xmm13 -vpclmulqdq $16, %xmm11, %xmm12, %xmm6 -vpclmulqdq $17, %xmm11, %xmm12, %xmm7 -vpxor %xmm13, %xmm6, %xmm6 -vpclmulqdq $0, %xmm11, %xmm12, %xmm13 -vpermq $16, %ymm6, %ymm6 -vinserti128 $1, %xmm7, %ymm7, %ymm7 -vpand mask0011(%rip), %ymm13, %ymm13 -vpand mask0110(%rip), %ymm6, %ymm6 -vpand mask1100(%rip), %ymm7, %ymm7 -vpxor %ymm13, %ymm6, %ymm6 -vpxor %ymm6, %ymm7, %ymm13 -vpxor %ymm13, %ymm5, %ymm13 -vpxor %ymm13, %ymm3, %ymm13 -vpxor %ymm11, %ymm11, %ymm11 -vextracti128 $1, %ymm13, %xmm11 -vpxor %ymm5, %ymm11, %ymm5 -vpxor %ymm11, %ymm11, %ymm11 -vinserti128 $1, %xmm13, %ymm11, %ymm11 -vpxor %ymm11, %ymm3, %ymm3 -vpxor %ymm3, %ymm8, %ymm8 -vpxor %ymm5, %ymm9, %ymm9 -vextracti128 $1, %ymm1, %xmm11 -vextracti128 $1, %ymm4, %xmm12 -vpclmulqdq $1, %xmm11, %xmm12, %xmm7 -vpclmulqdq $16, %xmm11, %xmm12, %xmm13 -vpclmulqdq $17, %xmm11, %xmm12, %xmm14 -vpxor %xmm7, %xmm13, %xmm13 -vpclmulqdq $0, %xmm11, %xmm12, %xmm7 -vpermq $16, %ymm13, %ymm13 -vinserti128 $1, %xmm14, %ymm14, %ymm14 -vpand mask0011(%rip), %ymm7, %ymm7 -vpand mask0110(%rip), %ymm13, %ymm13 -vpand mask1100(%rip), %ymm14, %ymm14 -vpxor %ymm7, %ymm13, %ymm13 -vpxor %ymm13, %ymm14, %ymm7 -vpclmulqdq $1, %xmm1, %xmm4, %xmm6 -vpclmulqdq $16, %xmm1, %xmm4, %xmm13 -vpclmulqdq $17, %xmm1, %xmm4, %xmm14 -vpxor %xmm6, %xmm13, %xmm13 -vpclmulqdq $0, %xmm1, %xmm4, %xmm6 -vpermq $16, %ymm13, %ymm13 -vinserti128 $1, %xmm14, %ymm14, %ymm14 -vpand mask0011(%rip), %ymm6, %ymm6 -vpand mask0110(%rip), %ymm13, %ymm13 -vpand mask1100(%rip), %ymm14, %ymm14 -vpxor %ymm6, %ymm13, %ymm13 -vpxor %ymm13, %ymm14, %ymm6 -vpxor %xmm1, %xmm11, %xmm11 -vpxor %xmm4, %xmm12, %xmm12 -vpclmulqdq $1, %xmm11, %xmm12, %xmm13 -vpclmulqdq $16, %xmm11, %xmm12, %xmm1 -vpclmulqdq $17, %xmm11, %xmm12, %xmm4 -vpxor %xmm13, %xmm1, %xmm1 -vpclmulqdq $0, %xmm11, %xmm12, %xmm13 -vpermq $16, %ymm1, %ymm1 -vinserti128 $1, %xmm4, %ymm4, %ymm4 -vpand mask0011(%rip), %ymm13, %ymm13 -vpand mask0110(%rip), %ymm1, %ymm1 -vpand mask1100(%rip), %ymm4, %ymm4 -vpxor %ymm13, %ymm1, %ymm1 -vpxor %ymm1, %ymm4, %ymm13 -vpxor %ymm13, %ymm7, %ymm13 -vpxor %ymm13, %ymm6, %ymm13 -vpxor %ymm11, %ymm11, %ymm11 -vextracti128 $1, %ymm13, %xmm11 -vpxor %ymm7, %ymm11, %ymm7 -vpxor %ymm11, %ymm11, %ymm11 -vinserti128 $1, %xmm13, %ymm11, %ymm11 -vpxor %ymm11, %ymm6, %ymm6 -vpxor %ymm6, %ymm0, %ymm0 -vpxor %ymm7, %ymm8, %ymm8 -vpxor %ymm6, %ymm3, %ymm3 -vpxor %ymm7, %ymm5, %ymm5 -vextracti128 $1, %ymm10, %xmm11 -vextracti128 $1, %ymm15, %xmm12 -vpclmulqdq $1, %xmm11, %xmm12, %xmm4 -vpclmulqdq $16, %xmm11, %xmm12, %xmm13 -vpclmulqdq $17, %xmm11, %xmm12, %xmm14 -vpxor %xmm4, %xmm13, %xmm13 -vpclmulqdq $0, %xmm11, %xmm12, %xmm4 -vpermq $16, %ymm13, %ymm13 -vinserti128 $1, %xmm14, %ymm14, %ymm14 -vpand mask0011(%rip), %ymm4, %ymm4 -vpand mask0110(%rip), %ymm13, %ymm13 -vpand mask1100(%rip), %ymm14, %ymm14 -vpxor %ymm4, %ymm13, %ymm13 -vpxor %ymm13, %ymm14, %ymm4 -vpclmulqdq $1, %xmm10, %xmm15, %xmm1 -vpclmulqdq $16, %xmm10, %xmm15, %xmm13 -vpclmulqdq $17, %xmm10, %xmm15, %xmm14 -vpxor %xmm1, %xmm13, %xmm13 -vpclmulqdq $0, %xmm10, %xmm15, %xmm1 -vpermq $16, %ymm13, %ymm13 -vinserti128 $1, %xmm14, %ymm14, %ymm14 -vpand mask0011(%rip), %ymm1, %ymm1 -vpand mask0110(%rip), %ymm13, %ymm13 -vpand mask1100(%rip), %ymm14, %ymm14 -vpxor %ymm1, %ymm13, %ymm13 -vpxor %ymm13, %ymm14, %ymm1 -vpxor %xmm10, %xmm11, %xmm11 -vpxor %xmm15, %xmm12, %xmm12 -vpclmulqdq $1, %xmm11, %xmm12, %xmm13 -vpclmulqdq $16, %xmm11, %xmm12, %xmm10 -vpclmulqdq $17, %xmm11, %xmm12, %xmm15 -vpxor %xmm13, %xmm10, %xmm10 -vpclmulqdq $0, %xmm11, %xmm12, %xmm13 -vpermq $16, %ymm10, %ymm10 -vinserti128 $1, %xmm15, %ymm15, %ymm15 -vpand mask0011(%rip), %ymm13, %ymm13 -vpand mask0110(%rip), %ymm10, %ymm10 -vpand mask1100(%rip), %ymm15, %ymm15 -vpxor %ymm13, %ymm10, %ymm10 -vpxor %ymm10, %ymm15, %ymm13 -vpxor %ymm13, %ymm4, %ymm13 -vpxor %ymm13, %ymm1, %ymm13 -vpxor %ymm11, %ymm11, %ymm11 -vextracti128 $1, %ymm13, %xmm11 -vpxor %ymm4, %ymm11, %ymm4 -vpxor %ymm11, %ymm11, %ymm11 -vinserti128 $1, %xmm13, %ymm11, %ymm11 -vpxor %ymm11, %ymm1, %ymm1 -vpxor %ymm1, %ymm3, %ymm3 -vpxor %ymm4, %ymm5, %ymm5 -vpxor %ymm9, %ymm3, %ymm3 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask1100(%rip), %ymm8, %ymm13 -vpand mask0011(%rip), %ymm3, %ymm12 -vpxor %ymm12, %ymm13, %ymm12 -vpsrlq $37, %ymm12, %ymm12 -vpermq $78, %ymm12, %ymm12 -vpxor %ymm12, %ymm2, %ymm2 -vpand mask1000(%rip), %ymm8, %ymm12 -vpand mask0111(%rip), %ymm3, %ymm13 -vpxor %ymm12, %ymm13, %ymm12 -vpsllq $27, %ymm12, %ymm12 -vpermq $147, %ymm12, %ymm12 -vpxor %ymm12, %ymm2, %ymm2 -vpand mask1100(%rip), %ymm3, %ymm13 -vpand mask0011(%rip), %ymm1, %ymm12 -vpxor %ymm12, %ymm13, %ymm12 -vpsrlq $37, %ymm12, %ymm12 -vpermq $78, %ymm12, %ymm12 -vpxor %ymm12, %ymm0, %ymm0 -vpand mask1000(%rip), %ymm3, %ymm12 -vpand mask0111(%rip), %ymm1, %ymm13 -vpxor %ymm12, %ymm13, %ymm12 -vpsllq $27, %ymm12, %ymm12 -vpermq $147, %ymm12, %ymm12 -vpxor %ymm12, %ymm0, %ymm0 -vpand mask1100(%rip), %ymm1, %ymm13 -vpand mask0011(%rip), %ymm4, %ymm12 -vpxor %ymm12, %ymm13, %ymm12 -vpsrlq $37, %ymm12, %ymm12 -vpermq $78, %ymm12, %ymm12 -vpxor %ymm12, %ymm8, %ymm8 -vpand mask1000(%rip), %ymm1, %ymm12 -vpand mask0111(%rip), %ymm4, %ymm13 -vpxor %ymm12, %ymm13, %ymm12 -vpsllq $27, %ymm12, %ymm12 -vpermq $147, %ymm12, %ymm12 -vpxor %ymm12, %ymm8, %ymm8 -vpand low165(%rip), %ymm8, %ymm8 -vmovdqa %ymm2, 0(%rdi) -vmovdqa %ymm0, 32(%rdi) -vmovdqa %ymm8, 64(%rdi) -ret diff --git a/src/kem/ntru/ntruhps2048677/avx2/poly_rq_mul.s b/src/kem/ntru/ntruhps2048677/avx2/poly_rq_mul.s deleted file mode 100644 index 95e523b3..00000000 --- a/src/kem/ntru/ntruhps2048677/avx2/poly_rq_mul.s +++ /dev/null @@ -1,7825 +0,0 @@ -.data -.p2align 5 -mask_low9words: -.word 0xffff -.word 0xffff -.word 0xffff -.word 0xffff -.word 0xffff -.word 0xffff -.word 0xffff -.word 0xffff -.word 0xffff -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -const3: -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -const9: -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -const0: -.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 0 -const729: -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -const3_inv: -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -const5_inv: -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -rol_rol_16: -.byte 2 -.byte 3 -.byte 4 -.byte 5 -.byte 6 -.byte 7 -.byte 8 -.byte 9 -.byte 10 -.byte 11 -.byte 12 -.byte 13 -.byte 14 -.byte 15 -.byte 0 -.byte 1 -.byte 2 -.byte 3 -.byte 4 -.byte 5 -.byte 6 -.byte 7 -.byte 8 -.byte 9 -.byte 10 -.byte 11 -.byte 12 -.byte 13 -.byte 14 -.byte 15 -.byte 0 -.byte 1 -id_braid_16: -.byte 0 -.byte 1 -.byte 2 -.byte 3 -.byte 4 -.byte 5 -.byte 6 -.byte 7 -.byte 8 -.byte 9 -.byte 10 -.byte 11 -.byte 12 -.byte 13 -.byte 14 -.byte 15 -.byte 0 -.byte 1 -.byte 2 -.byte 3 -.byte 4 -.byte 5 -.byte 14 -.byte 15 -.byte 8 -.byte 9 -.byte 10 -.byte 11 -.byte 12 -.byte 13 -.byte 14 -.byte 6 -.byte 7 -mask32_to_16: -.word 0xffff -.word 0x0 -.word 0xffff -.word 0x0 -.word 0xffff -.word 0x0 -.word 0xffff -.word 0x0 -.word 0xffff -.word 0x0 -.word 0xffff -.word 0x0 -.word 0xffff -.word 0x0 -.word 0xffff -.word 0x0 -mask_1_15: -.word 65535 -.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 -mask_15_1: -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 0 -.text -.global PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_mul -.global _PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_mul -PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_mul: -_PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_mul: -push %r12 -mov %rsp, %r8 -andq $-32, %rsp -subq $6144, %rsp -mov %rsp, %rax -subq $6144, %rsp -mov %rsp, %r11 -subq $12288, %rsp -mov %rsp, %r12 -subq $512, %rsp -vpxor %ymm3, %ymm3, %ymm3 -vmovdqa %ymm3, 0(%rdi) -vmovdqa %ymm3, 32(%rdi) -vmovdqa %ymm3, 64(%rdi) -vmovdqa %ymm3, 96(%rdi) -vmovdqa %ymm3, 128(%rdi) -vmovdqa %ymm3, 160(%rdi) -vmovdqa %ymm3, 192(%rdi) -vmovdqa %ymm3, 224(%rdi) -vmovdqa %ymm3, 256(%rdi) -vmovdqa %ymm3, 288(%rdi) -vmovdqa %ymm3, 320(%rdi) -vmovdqa %ymm3, 352(%rdi) -vmovdqa %ymm3, 384(%rdi) -vmovdqa %ymm3, 416(%rdi) -vmovdqa %ymm3, 448(%rdi) -vmovdqa %ymm3, 480(%rdi) -vmovdqa %ymm3, 512(%rdi) -vmovdqa %ymm3, 544(%rdi) -vmovdqa %ymm3, 576(%rdi) -vmovdqa %ymm3, 608(%rdi) -vmovdqa %ymm3, 640(%rdi) -vmovdqa %ymm3, 672(%rdi) -vmovdqa %ymm3, 704(%rdi) -vmovdqa %ymm3, 736(%rdi) -vmovdqa %ymm3, 768(%rdi) -vmovdqa %ymm3, 800(%rdi) -vmovdqa %ymm3, 832(%rdi) -vmovdqa %ymm3, 864(%rdi) -vmovdqa %ymm3, 896(%rdi) -vmovdqa %ymm3, 928(%rdi) -vmovdqa %ymm3, 960(%rdi) -vmovdqa %ymm3, 992(%rdi) -vmovdqa %ymm3, 1024(%rdi) -vmovdqa %ymm3, 1056(%rdi) -vmovdqa %ymm3, 1088(%rdi) -vmovdqa %ymm3, 1120(%rdi) -vmovdqa %ymm3, 1152(%rdi) -vmovdqa %ymm3, 1184(%rdi) -vmovdqa %ymm3, 1216(%rdi) -vmovdqa %ymm3, 1248(%rdi) -vmovdqa %ymm3, 1280(%rdi) -vmovdqa %ymm3, 1312(%rdi) -vmovdqa %ymm3, 1344(%rdi) -vmovdqa %ymm3, 1376(%rdi) -vmovdqa const3(%rip), %ymm3 -vmovdqu 0(%rsi), %ymm0 -vmovdqu 88(%rsi), %ymm1 -vmovdqu 176(%rsi), %ymm2 -vmovdqu 264(%rsi), %ymm12 -vmovdqu 1056(%rsi), %ymm4 -vmovdqu 1144(%rsi), %ymm5 -vmovdqu 1232(%rsi), %ymm6 -vmovdqu 1320(%rsi), %ymm7 -vmovdqu 352(%rsi), %ymm8 -vmovdqu 440(%rsi), %ymm9 -vmovdqu 528(%rsi), %ymm10 -vmovdqu 616(%rsi), %ymm11 -vmovdqa %ymm0, 0(%rax) -vmovdqa %ymm1, 96(%rax) -vpaddw %ymm0, %ymm1, %ymm14 -vmovdqa %ymm14, 192(%rax) -vmovdqa %ymm2, 288(%rax) -vmovdqa %ymm12, 384(%rax) -vpaddw %ymm2, %ymm12, %ymm14 -vmovdqa %ymm14, 480(%rax) -vpaddw %ymm0, %ymm2, %ymm14 -vmovdqa %ymm14, 576(%rax) -vpaddw %ymm1, %ymm12, %ymm15 -vmovdqa %ymm15, 672(%rax) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 768(%rax) -vmovdqa %ymm4, 5184(%rax) -vmovdqa %ymm5, 5280(%rax) -vpaddw %ymm4, %ymm5, %ymm14 -vmovdqa %ymm14, 5376(%rax) -vmovdqa %ymm6, 5472(%rax) -vmovdqa %ymm7, 5568(%rax) -vpaddw %ymm6, %ymm7, %ymm14 -vmovdqa %ymm14, 5664(%rax) -vpaddw %ymm4, %ymm6, %ymm14 -vmovdqa %ymm14, 5760(%rax) -vpaddw %ymm5, %ymm7, %ymm15 -vmovdqa %ymm15, 5856(%rax) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 5952(%rax) -vmovdqa %ymm0, 0(%rsp) -vmovdqa %ymm1, 32(%rsp) -vmovdqa %ymm2, 64(%rsp) -vmovdqa %ymm12, 96(%rsp) -vmovdqa %ymm8, 128(%rsp) -vmovdqa %ymm9, 160(%rsp) -vmovdqa %ymm10, 192(%rsp) -vmovdqa %ymm11, 224(%rsp) -vmovdqu 704(%rsi), %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm1 -vpaddw 128(%rsp), %ymm4, %ymm2 -vpaddw %ymm2, %ymm1, %ymm8 -vpsubw %ymm2, %ymm1, %ymm12 -vmovdqa %ymm0, 256(%rsp) -vmovdqu 792(%rsi), %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm1 -vpaddw 160(%rsp), %ymm5, %ymm2 -vpaddw %ymm2, %ymm1, %ymm9 -vpsubw %ymm2, %ymm1, %ymm13 -vmovdqa %ymm0, 288(%rsp) -vmovdqu 880(%rsi), %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm1 -vpaddw 192(%rsp), %ymm6, %ymm2 -vpaddw %ymm2, %ymm1, %ymm10 -vpsubw %ymm2, %ymm1, %ymm14 -vmovdqa %ymm0, 320(%rsp) -vmovdqu 968(%rsi), %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm1 -vpaddw 224(%rsp), %ymm7, %ymm2 -vpaddw %ymm2, %ymm1, %ymm11 -vpsubw %ymm2, %ymm1, %ymm15 -vmovdqa %ymm0, 352(%rsp) -vmovdqa %ymm8, 864(%rax) -vmovdqa %ymm9, 960(%rax) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 1056(%rax) -vmovdqa %ymm10, 1152(%rax) -vmovdqa %ymm11, 1248(%rax) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 1344(%rax) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 1440(%rax) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 1536(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 1632(%rax) -vmovdqa %ymm12, 1728(%rax) -vmovdqa %ymm13, 1824(%rax) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 1920(%rax) -vmovdqa %ymm14, 2016(%rax) -vmovdqa %ymm15, 2112(%rax) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 2208(%rax) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 2304(%rax) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 2400(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 2496(%rax) -vmovdqa 256(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm4, %ymm1 -vpaddw 128(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm8 -vpsubw %ymm1, %ymm0, %ymm12 -vmovdqa 288(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm5, %ymm1 -vpaddw 160(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm9 -vpsubw %ymm1, %ymm0, %ymm13 -vmovdqa 320(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm6, %ymm1 -vpaddw 192(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm10 -vpsubw %ymm1, %ymm0, %ymm14 -vmovdqa 352(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm7, %ymm1 -vpaddw 224(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm11 -vpsubw %ymm1, %ymm0, %ymm15 -vmovdqa %ymm8, 2592(%rax) -vmovdqa %ymm9, 2688(%rax) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 2784(%rax) -vmovdqa %ymm10, 2880(%rax) -vmovdqa %ymm11, 2976(%rax) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 3072(%rax) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 3168(%rax) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 3264(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 3360(%rax) -vmovdqa %ymm12, 3456(%rax) -vmovdqa %ymm13, 3552(%rax) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 3648(%rax) -vmovdqa %ymm14, 3744(%rax) -vmovdqa %ymm15, 3840(%rax) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 3936(%rax) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 4032(%rax) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 4128(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 4224(%rax) -vpmullw %ymm3, %ymm4, %ymm0 -vpaddw 256(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 128(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm12 -vpmullw %ymm3, %ymm5, %ymm0 -vpaddw 288(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 160(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm13 -vpmullw %ymm3, %ymm6, %ymm0 -vpaddw 320(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 192(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm14 -vpmullw %ymm3, %ymm7, %ymm0 -vpaddw 352(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 224(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm15 -vmovdqa %ymm12, 4320(%rax) -vmovdqa %ymm13, 4416(%rax) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 4512(%rax) -vmovdqa %ymm14, 4608(%rax) -vmovdqa %ymm15, 4704(%rax) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 4800(%rax) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 4896(%rax) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 4992(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 5088(%rax) -vmovdqu 32(%rsi), %ymm0 -vmovdqu 120(%rsi), %ymm1 -vmovdqu 208(%rsi), %ymm2 -vmovdqu 296(%rsi), %ymm12 -vmovdqu 1088(%rsi), %ymm4 -vmovdqu 1176(%rsi), %ymm5 -vmovdqu 1264(%rsi), %ymm6 -vmovdqu 1352(%rsi), %ymm7 -vpand mask_1_15(%rip), %ymm7, %ymm7 -vmovdqu 384(%rsi), %ymm8 -vmovdqu 472(%rsi), %ymm9 -vmovdqu 560(%rsi), %ymm10 -vmovdqu 648(%rsi), %ymm11 -vmovdqa %ymm0, 32(%rax) -vmovdqa %ymm1, 128(%rax) -vpaddw %ymm0, %ymm1, %ymm14 -vmovdqa %ymm14, 224(%rax) -vmovdqa %ymm2, 320(%rax) -vmovdqa %ymm12, 416(%rax) -vpaddw %ymm2, %ymm12, %ymm14 -vmovdqa %ymm14, 512(%rax) -vpaddw %ymm0, %ymm2, %ymm14 -vmovdqa %ymm14, 608(%rax) -vpaddw %ymm1, %ymm12, %ymm15 -vmovdqa %ymm15, 704(%rax) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 800(%rax) -vmovdqa %ymm4, 5216(%rax) -vmovdqa %ymm5, 5312(%rax) -vpaddw %ymm4, %ymm5, %ymm14 -vmovdqa %ymm14, 5408(%rax) -vmovdqa %ymm6, 5504(%rax) -vmovdqa %ymm7, 5600(%rax) -vpaddw %ymm6, %ymm7, %ymm14 -vmovdqa %ymm14, 5696(%rax) -vpaddw %ymm4, %ymm6, %ymm14 -vmovdqa %ymm14, 5792(%rax) -vpaddw %ymm5, %ymm7, %ymm15 -vmovdqa %ymm15, 5888(%rax) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 5984(%rax) -vmovdqa %ymm0, 0(%rsp) -vmovdqa %ymm1, 32(%rsp) -vmovdqa %ymm2, 64(%rsp) -vmovdqa %ymm12, 96(%rsp) -vmovdqa %ymm8, 128(%rsp) -vmovdqa %ymm9, 160(%rsp) -vmovdqa %ymm10, 192(%rsp) -vmovdqa %ymm11, 224(%rsp) -vmovdqu 736(%rsi), %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm1 -vpaddw 128(%rsp), %ymm4, %ymm2 -vpaddw %ymm2, %ymm1, %ymm8 -vpsubw %ymm2, %ymm1, %ymm12 -vmovdqa %ymm0, 256(%rsp) -vmovdqu 824(%rsi), %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm1 -vpaddw 160(%rsp), %ymm5, %ymm2 -vpaddw %ymm2, %ymm1, %ymm9 -vpsubw %ymm2, %ymm1, %ymm13 -vmovdqa %ymm0, 288(%rsp) -vmovdqu 912(%rsi), %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm1 -vpaddw 192(%rsp), %ymm6, %ymm2 -vpaddw %ymm2, %ymm1, %ymm10 -vpsubw %ymm2, %ymm1, %ymm14 -vmovdqa %ymm0, 320(%rsp) -vmovdqu 1000(%rsi), %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm1 -vpaddw 224(%rsp), %ymm7, %ymm2 -vpaddw %ymm2, %ymm1, %ymm11 -vpsubw %ymm2, %ymm1, %ymm15 -vmovdqa %ymm0, 352(%rsp) -vmovdqa %ymm8, 896(%rax) -vmovdqa %ymm9, 992(%rax) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 1088(%rax) -vmovdqa %ymm10, 1184(%rax) -vmovdqa %ymm11, 1280(%rax) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 1376(%rax) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 1472(%rax) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 1568(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 1664(%rax) -vmovdqa %ymm12, 1760(%rax) -vmovdqa %ymm13, 1856(%rax) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 1952(%rax) -vmovdqa %ymm14, 2048(%rax) -vmovdqa %ymm15, 2144(%rax) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 2240(%rax) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 2336(%rax) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 2432(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 2528(%rax) -vmovdqa 256(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm4, %ymm1 -vpaddw 128(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm8 -vpsubw %ymm1, %ymm0, %ymm12 -vmovdqa 288(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm5, %ymm1 -vpaddw 160(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm9 -vpsubw %ymm1, %ymm0, %ymm13 -vmovdqa 320(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm6, %ymm1 -vpaddw 192(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm10 -vpsubw %ymm1, %ymm0, %ymm14 -vmovdqa 352(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm7, %ymm1 -vpaddw 224(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm11 -vpsubw %ymm1, %ymm0, %ymm15 -vmovdqa %ymm8, 2624(%rax) -vmovdqa %ymm9, 2720(%rax) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 2816(%rax) -vmovdqa %ymm10, 2912(%rax) -vmovdqa %ymm11, 3008(%rax) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 3104(%rax) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 3200(%rax) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 3296(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 3392(%rax) -vmovdqa %ymm12, 3488(%rax) -vmovdqa %ymm13, 3584(%rax) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 3680(%rax) -vmovdqa %ymm14, 3776(%rax) -vmovdqa %ymm15, 3872(%rax) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 3968(%rax) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 4064(%rax) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 4160(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 4256(%rax) -vpmullw %ymm3, %ymm4, %ymm0 -vpaddw 256(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 128(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm12 -vpmullw %ymm3, %ymm5, %ymm0 -vpaddw 288(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 160(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm13 -vpmullw %ymm3, %ymm6, %ymm0 -vpaddw 320(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 192(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm14 -vpmullw %ymm3, %ymm7, %ymm0 -vpaddw 352(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 224(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm15 -vmovdqa %ymm12, 4352(%rax) -vmovdqa %ymm13, 4448(%rax) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 4544(%rax) -vmovdqa %ymm14, 4640(%rax) -vmovdqa %ymm15, 4736(%rax) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 4832(%rax) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 4928(%rax) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 5024(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 5120(%rax) -vmovdqu 64(%rsi), %ymm0 -vmovdqu 152(%rsi), %ymm1 -vmovdqu 240(%rsi), %ymm2 -vmovdqu 328(%rsi), %ymm12 -vmovdqu 1120(%rsi), %ymm4 -vmovdqu 1208(%rsi), %ymm5 -vmovdqu 1296(%rsi), %ymm6 -vmovdqu 1384(%rsi), %ymm7 -vpxor %ymm7, %ymm7, %ymm7 -vmovdqu 416(%rsi), %ymm8 -vmovdqu 504(%rsi), %ymm9 -vmovdqu 592(%rsi), %ymm10 -vmovdqu 680(%rsi), %ymm11 -vmovdqa %ymm0, 64(%rax) -vmovdqa %ymm1, 160(%rax) -vpaddw %ymm0, %ymm1, %ymm14 -vmovdqa %ymm14, 256(%rax) -vmovdqa %ymm2, 352(%rax) -vmovdqa %ymm12, 448(%rax) -vpaddw %ymm2, %ymm12, %ymm14 -vmovdqa %ymm14, 544(%rax) -vpaddw %ymm0, %ymm2, %ymm14 -vmovdqa %ymm14, 640(%rax) -vpaddw %ymm1, %ymm12, %ymm15 -vmovdqa %ymm15, 736(%rax) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 832(%rax) -vmovdqa %ymm4, 5248(%rax) -vmovdqa %ymm5, 5344(%rax) -vpaddw %ymm4, %ymm5, %ymm14 -vmovdqa %ymm14, 5440(%rax) -vmovdqa %ymm6, 5536(%rax) -vmovdqa %ymm7, 5632(%rax) -vpaddw %ymm6, %ymm7, %ymm14 -vmovdqa %ymm14, 5728(%rax) -vpaddw %ymm4, %ymm6, %ymm14 -vmovdqa %ymm14, 5824(%rax) -vpaddw %ymm5, %ymm7, %ymm15 -vmovdqa %ymm15, 5920(%rax) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 6016(%rax) -vmovdqa %ymm0, 0(%rsp) -vmovdqa %ymm1, 32(%rsp) -vmovdqa %ymm2, 64(%rsp) -vmovdqa %ymm12, 96(%rsp) -vmovdqa %ymm8, 128(%rsp) -vmovdqa %ymm9, 160(%rsp) -vmovdqa %ymm10, 192(%rsp) -vmovdqa %ymm11, 224(%rsp) -vmovdqu 768(%rsi), %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm1 -vpaddw 128(%rsp), %ymm4, %ymm2 -vpaddw %ymm2, %ymm1, %ymm8 -vpsubw %ymm2, %ymm1, %ymm12 -vmovdqa %ymm0, 256(%rsp) -vmovdqu 856(%rsi), %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm1 -vpaddw 160(%rsp), %ymm5, %ymm2 -vpaddw %ymm2, %ymm1, %ymm9 -vpsubw %ymm2, %ymm1, %ymm13 -vmovdqa %ymm0, 288(%rsp) -vmovdqu 944(%rsi), %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm1 -vpaddw 192(%rsp), %ymm6, %ymm2 -vpaddw %ymm2, %ymm1, %ymm10 -vpsubw %ymm2, %ymm1, %ymm14 -vmovdqa %ymm0, 320(%rsp) -vmovdqu 1032(%rsi), %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm1 -vpaddw 224(%rsp), %ymm7, %ymm2 -vpaddw %ymm2, %ymm1, %ymm11 -vpsubw %ymm2, %ymm1, %ymm15 -vmovdqa %ymm0, 352(%rsp) -vmovdqa %ymm8, 928(%rax) -vmovdqa %ymm9, 1024(%rax) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 1120(%rax) -vmovdqa %ymm10, 1216(%rax) -vmovdqa %ymm11, 1312(%rax) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 1408(%rax) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 1504(%rax) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 1600(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 1696(%rax) -vmovdqa %ymm12, 1792(%rax) -vmovdqa %ymm13, 1888(%rax) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 1984(%rax) -vmovdqa %ymm14, 2080(%rax) -vmovdqa %ymm15, 2176(%rax) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 2272(%rax) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 2368(%rax) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 2464(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 2560(%rax) -vmovdqa 256(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm4, %ymm1 -vpaddw 128(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm8 -vpsubw %ymm1, %ymm0, %ymm12 -vmovdqa 288(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm5, %ymm1 -vpaddw 160(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm9 -vpsubw %ymm1, %ymm0, %ymm13 -vmovdqa 320(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm6, %ymm1 -vpaddw 192(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm10 -vpsubw %ymm1, %ymm0, %ymm14 -vmovdqa 352(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm7, %ymm1 -vpaddw 224(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm11 -vpsubw %ymm1, %ymm0, %ymm15 -vmovdqa %ymm8, 2656(%rax) -vmovdqa %ymm9, 2752(%rax) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 2848(%rax) -vmovdqa %ymm10, 2944(%rax) -vmovdqa %ymm11, 3040(%rax) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 3136(%rax) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 3232(%rax) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 3328(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 3424(%rax) -vmovdqa %ymm12, 3520(%rax) -vmovdqa %ymm13, 3616(%rax) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 3712(%rax) -vmovdqa %ymm14, 3808(%rax) -vmovdqa %ymm15, 3904(%rax) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 4000(%rax) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 4096(%rax) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 4192(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 4288(%rax) -vpmullw %ymm3, %ymm4, %ymm0 -vpaddw 256(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 128(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm12 -vpmullw %ymm3, %ymm5, %ymm0 -vpaddw 288(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 160(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm13 -vpmullw %ymm3, %ymm6, %ymm0 -vpaddw 320(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 192(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm14 -vpmullw %ymm3, %ymm7, %ymm0 -vpaddw 352(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 224(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm15 -vmovdqa %ymm12, 4384(%rax) -vmovdqa %ymm13, 4480(%rax) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 4576(%rax) -vmovdqa %ymm14, 4672(%rax) -vmovdqa %ymm15, 4768(%rax) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 4864(%rax) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 4960(%rax) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 5056(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 5152(%rax) -vmovdqu 0(%rdx), %ymm0 -vmovdqu 88(%rdx), %ymm1 -vmovdqu 176(%rdx), %ymm2 -vmovdqu 264(%rdx), %ymm12 -vmovdqu 1056(%rdx), %ymm4 -vmovdqu 1144(%rdx), %ymm5 -vmovdqu 1232(%rdx), %ymm6 -vmovdqu 1320(%rdx), %ymm7 -vmovdqu 352(%rdx), %ymm8 -vmovdqu 440(%rdx), %ymm9 -vmovdqu 528(%rdx), %ymm10 -vmovdqu 616(%rdx), %ymm11 -vmovdqa %ymm0, 0(%r11) -vmovdqa %ymm1, 96(%r11) -vpaddw %ymm0, %ymm1, %ymm14 -vmovdqa %ymm14, 192(%r11) -vmovdqa %ymm2, 288(%r11) -vmovdqa %ymm12, 384(%r11) -vpaddw %ymm2, %ymm12, %ymm14 -vmovdqa %ymm14, 480(%r11) -vpaddw %ymm0, %ymm2, %ymm14 -vmovdqa %ymm14, 576(%r11) -vpaddw %ymm1, %ymm12, %ymm15 -vmovdqa %ymm15, 672(%r11) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 768(%r11) -vmovdqa %ymm4, 5184(%r11) -vmovdqa %ymm5, 5280(%r11) -vpaddw %ymm4, %ymm5, %ymm14 -vmovdqa %ymm14, 5376(%r11) -vmovdqa %ymm6, 5472(%r11) -vmovdqa %ymm7, 5568(%r11) -vpaddw %ymm6, %ymm7, %ymm14 -vmovdqa %ymm14, 5664(%r11) -vpaddw %ymm4, %ymm6, %ymm14 -vmovdqa %ymm14, 5760(%r11) -vpaddw %ymm5, %ymm7, %ymm15 -vmovdqa %ymm15, 5856(%r11) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 5952(%r11) -vmovdqa %ymm0, 0(%rsp) -vmovdqa %ymm1, 32(%rsp) -vmovdqa %ymm2, 64(%rsp) -vmovdqa %ymm12, 96(%rsp) -vmovdqa %ymm8, 128(%rsp) -vmovdqa %ymm9, 160(%rsp) -vmovdqa %ymm10, 192(%rsp) -vmovdqa %ymm11, 224(%rsp) -vmovdqu 704(%rdx), %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm1 -vpaddw 128(%rsp), %ymm4, %ymm2 -vpaddw %ymm2, %ymm1, %ymm8 -vpsubw %ymm2, %ymm1, %ymm12 -vmovdqa %ymm0, 256(%rsp) -vmovdqu 792(%rdx), %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm1 -vpaddw 160(%rsp), %ymm5, %ymm2 -vpaddw %ymm2, %ymm1, %ymm9 -vpsubw %ymm2, %ymm1, %ymm13 -vmovdqa %ymm0, 288(%rsp) -vmovdqu 880(%rdx), %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm1 -vpaddw 192(%rsp), %ymm6, %ymm2 -vpaddw %ymm2, %ymm1, %ymm10 -vpsubw %ymm2, %ymm1, %ymm14 -vmovdqa %ymm0, 320(%rsp) -vmovdqu 968(%rdx), %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm1 -vpaddw 224(%rsp), %ymm7, %ymm2 -vpaddw %ymm2, %ymm1, %ymm11 -vpsubw %ymm2, %ymm1, %ymm15 -vmovdqa %ymm0, 352(%rsp) -vmovdqa %ymm8, 864(%r11) -vmovdqa %ymm9, 960(%r11) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 1056(%r11) -vmovdqa %ymm10, 1152(%r11) -vmovdqa %ymm11, 1248(%r11) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 1344(%r11) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 1440(%r11) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 1536(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 1632(%r11) -vmovdqa %ymm12, 1728(%r11) -vmovdqa %ymm13, 1824(%r11) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 1920(%r11) -vmovdqa %ymm14, 2016(%r11) -vmovdqa %ymm15, 2112(%r11) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 2208(%r11) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 2304(%r11) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 2400(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 2496(%r11) -vmovdqa 256(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm4, %ymm1 -vpaddw 128(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm8 -vpsubw %ymm1, %ymm0, %ymm12 -vmovdqa 288(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm5, %ymm1 -vpaddw 160(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm9 -vpsubw %ymm1, %ymm0, %ymm13 -vmovdqa 320(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm6, %ymm1 -vpaddw 192(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm10 -vpsubw %ymm1, %ymm0, %ymm14 -vmovdqa 352(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm7, %ymm1 -vpaddw 224(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm11 -vpsubw %ymm1, %ymm0, %ymm15 -vmovdqa %ymm8, 2592(%r11) -vmovdqa %ymm9, 2688(%r11) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 2784(%r11) -vmovdqa %ymm10, 2880(%r11) -vmovdqa %ymm11, 2976(%r11) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 3072(%r11) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 3168(%r11) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 3264(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 3360(%r11) -vmovdqa %ymm12, 3456(%r11) -vmovdqa %ymm13, 3552(%r11) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 3648(%r11) -vmovdqa %ymm14, 3744(%r11) -vmovdqa %ymm15, 3840(%r11) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 3936(%r11) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 4032(%r11) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 4128(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 4224(%r11) -vpmullw %ymm3, %ymm4, %ymm0 -vpaddw 256(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 128(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm12 -vpmullw %ymm3, %ymm5, %ymm0 -vpaddw 288(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 160(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm13 -vpmullw %ymm3, %ymm6, %ymm0 -vpaddw 320(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 192(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm14 -vpmullw %ymm3, %ymm7, %ymm0 -vpaddw 352(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 224(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm15 -vmovdqa %ymm12, 4320(%r11) -vmovdqa %ymm13, 4416(%r11) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 4512(%r11) -vmovdqa %ymm14, 4608(%r11) -vmovdqa %ymm15, 4704(%r11) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 4800(%r11) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 4896(%r11) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 4992(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 5088(%r11) -vmovdqu 32(%rdx), %ymm0 -vmovdqu 120(%rdx), %ymm1 -vmovdqu 208(%rdx), %ymm2 -vmovdqu 296(%rdx), %ymm12 -vmovdqu 1088(%rdx), %ymm4 -vmovdqu 1176(%rdx), %ymm5 -vmovdqu 1264(%rdx), %ymm6 -vmovdqu 1352(%rdx), %ymm7 -vpand mask_1_15(%rip), %ymm7, %ymm7 -vmovdqu 384(%rdx), %ymm8 -vmovdqu 472(%rdx), %ymm9 -vmovdqu 560(%rdx), %ymm10 -vmovdqu 648(%rdx), %ymm11 -vmovdqa %ymm0, 32(%r11) -vmovdqa %ymm1, 128(%r11) -vpaddw %ymm0, %ymm1, %ymm14 -vmovdqa %ymm14, 224(%r11) -vmovdqa %ymm2, 320(%r11) -vmovdqa %ymm12, 416(%r11) -vpaddw %ymm2, %ymm12, %ymm14 -vmovdqa %ymm14, 512(%r11) -vpaddw %ymm0, %ymm2, %ymm14 -vmovdqa %ymm14, 608(%r11) -vpaddw %ymm1, %ymm12, %ymm15 -vmovdqa %ymm15, 704(%r11) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 800(%r11) -vmovdqa %ymm4, 5216(%r11) -vmovdqa %ymm5, 5312(%r11) -vpaddw %ymm4, %ymm5, %ymm14 -vmovdqa %ymm14, 5408(%r11) -vmovdqa %ymm6, 5504(%r11) -vmovdqa %ymm7, 5600(%r11) -vpaddw %ymm6, %ymm7, %ymm14 -vmovdqa %ymm14, 5696(%r11) -vpaddw %ymm4, %ymm6, %ymm14 -vmovdqa %ymm14, 5792(%r11) -vpaddw %ymm5, %ymm7, %ymm15 -vmovdqa %ymm15, 5888(%r11) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 5984(%r11) -vmovdqa %ymm0, 0(%rsp) -vmovdqa %ymm1, 32(%rsp) -vmovdqa %ymm2, 64(%rsp) -vmovdqa %ymm12, 96(%rsp) -vmovdqa %ymm8, 128(%rsp) -vmovdqa %ymm9, 160(%rsp) -vmovdqa %ymm10, 192(%rsp) -vmovdqa %ymm11, 224(%rsp) -vmovdqu 736(%rdx), %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm1 -vpaddw 128(%rsp), %ymm4, %ymm2 -vpaddw %ymm2, %ymm1, %ymm8 -vpsubw %ymm2, %ymm1, %ymm12 -vmovdqa %ymm0, 256(%rsp) -vmovdqu 824(%rdx), %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm1 -vpaddw 160(%rsp), %ymm5, %ymm2 -vpaddw %ymm2, %ymm1, %ymm9 -vpsubw %ymm2, %ymm1, %ymm13 -vmovdqa %ymm0, 288(%rsp) -vmovdqu 912(%rdx), %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm1 -vpaddw 192(%rsp), %ymm6, %ymm2 -vpaddw %ymm2, %ymm1, %ymm10 -vpsubw %ymm2, %ymm1, %ymm14 -vmovdqa %ymm0, 320(%rsp) -vmovdqu 1000(%rdx), %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm1 -vpaddw 224(%rsp), %ymm7, %ymm2 -vpaddw %ymm2, %ymm1, %ymm11 -vpsubw %ymm2, %ymm1, %ymm15 -vmovdqa %ymm0, 352(%rsp) -vmovdqa %ymm8, 896(%r11) -vmovdqa %ymm9, 992(%r11) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 1088(%r11) -vmovdqa %ymm10, 1184(%r11) -vmovdqa %ymm11, 1280(%r11) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 1376(%r11) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 1472(%r11) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 1568(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 1664(%r11) -vmovdqa %ymm12, 1760(%r11) -vmovdqa %ymm13, 1856(%r11) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 1952(%r11) -vmovdqa %ymm14, 2048(%r11) -vmovdqa %ymm15, 2144(%r11) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 2240(%r11) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 2336(%r11) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 2432(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 2528(%r11) -vmovdqa 256(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm4, %ymm1 -vpaddw 128(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm8 -vpsubw %ymm1, %ymm0, %ymm12 -vmovdqa 288(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm5, %ymm1 -vpaddw 160(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm9 -vpsubw %ymm1, %ymm0, %ymm13 -vmovdqa 320(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm6, %ymm1 -vpaddw 192(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm10 -vpsubw %ymm1, %ymm0, %ymm14 -vmovdqa 352(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm7, %ymm1 -vpaddw 224(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm11 -vpsubw %ymm1, %ymm0, %ymm15 -vmovdqa %ymm8, 2624(%r11) -vmovdqa %ymm9, 2720(%r11) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 2816(%r11) -vmovdqa %ymm10, 2912(%r11) -vmovdqa %ymm11, 3008(%r11) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 3104(%r11) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 3200(%r11) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 3296(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 3392(%r11) -vmovdqa %ymm12, 3488(%r11) -vmovdqa %ymm13, 3584(%r11) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 3680(%r11) -vmovdqa %ymm14, 3776(%r11) -vmovdqa %ymm15, 3872(%r11) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 3968(%r11) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 4064(%r11) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 4160(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 4256(%r11) -vpmullw %ymm3, %ymm4, %ymm0 -vpaddw 256(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 128(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm12 -vpmullw %ymm3, %ymm5, %ymm0 -vpaddw 288(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 160(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm13 -vpmullw %ymm3, %ymm6, %ymm0 -vpaddw 320(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 192(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm14 -vpmullw %ymm3, %ymm7, %ymm0 -vpaddw 352(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 224(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm15 -vmovdqa %ymm12, 4352(%r11) -vmovdqa %ymm13, 4448(%r11) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 4544(%r11) -vmovdqa %ymm14, 4640(%r11) -vmovdqa %ymm15, 4736(%r11) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 4832(%r11) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 4928(%r11) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 5024(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 5120(%r11) -vmovdqu 64(%rdx), %ymm0 -vmovdqu 152(%rdx), %ymm1 -vmovdqu 240(%rdx), %ymm2 -vmovdqu 328(%rdx), %ymm12 -vmovdqu 1120(%rdx), %ymm4 -vmovdqu 1208(%rdx), %ymm5 -vmovdqu 1296(%rdx), %ymm6 -vmovdqu 1384(%rdx), %ymm7 -vpxor %ymm7, %ymm7, %ymm7 -vmovdqu 416(%rdx), %ymm8 -vmovdqu 504(%rdx), %ymm9 -vmovdqu 592(%rdx), %ymm10 -vmovdqu 680(%rdx), %ymm11 -vmovdqa %ymm0, 64(%r11) -vmovdqa %ymm1, 160(%r11) -vpaddw %ymm0, %ymm1, %ymm14 -vmovdqa %ymm14, 256(%r11) -vmovdqa %ymm2, 352(%r11) -vmovdqa %ymm12, 448(%r11) -vpaddw %ymm2, %ymm12, %ymm14 -vmovdqa %ymm14, 544(%r11) -vpaddw %ymm0, %ymm2, %ymm14 -vmovdqa %ymm14, 640(%r11) -vpaddw %ymm1, %ymm12, %ymm15 -vmovdqa %ymm15, 736(%r11) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 832(%r11) -vmovdqa %ymm4, 5248(%r11) -vmovdqa %ymm5, 5344(%r11) -vpaddw %ymm4, %ymm5, %ymm14 -vmovdqa %ymm14, 5440(%r11) -vmovdqa %ymm6, 5536(%r11) -vmovdqa %ymm7, 5632(%r11) -vpaddw %ymm6, %ymm7, %ymm14 -vmovdqa %ymm14, 5728(%r11) -vpaddw %ymm4, %ymm6, %ymm14 -vmovdqa %ymm14, 5824(%r11) -vpaddw %ymm5, %ymm7, %ymm15 -vmovdqa %ymm15, 5920(%r11) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 6016(%r11) -vmovdqa %ymm0, 0(%rsp) -vmovdqa %ymm1, 32(%rsp) -vmovdqa %ymm2, 64(%rsp) -vmovdqa %ymm12, 96(%rsp) -vmovdqa %ymm8, 128(%rsp) -vmovdqa %ymm9, 160(%rsp) -vmovdqa %ymm10, 192(%rsp) -vmovdqa %ymm11, 224(%rsp) -vmovdqu 768(%rdx), %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm1 -vpaddw 128(%rsp), %ymm4, %ymm2 -vpaddw %ymm2, %ymm1, %ymm8 -vpsubw %ymm2, %ymm1, %ymm12 -vmovdqa %ymm0, 256(%rsp) -vmovdqu 856(%rdx), %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm1 -vpaddw 160(%rsp), %ymm5, %ymm2 -vpaddw %ymm2, %ymm1, %ymm9 -vpsubw %ymm2, %ymm1, %ymm13 -vmovdqa %ymm0, 288(%rsp) -vmovdqu 944(%rdx), %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm1 -vpaddw 192(%rsp), %ymm6, %ymm2 -vpaddw %ymm2, %ymm1, %ymm10 -vpsubw %ymm2, %ymm1, %ymm14 -vmovdqa %ymm0, 320(%rsp) -vmovdqu 1032(%rdx), %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm1 -vpaddw 224(%rsp), %ymm7, %ymm2 -vpaddw %ymm2, %ymm1, %ymm11 -vpsubw %ymm2, %ymm1, %ymm15 -vmovdqa %ymm0, 352(%rsp) -vmovdqa %ymm8, 928(%r11) -vmovdqa %ymm9, 1024(%r11) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 1120(%r11) -vmovdqa %ymm10, 1216(%r11) -vmovdqa %ymm11, 1312(%r11) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 1408(%r11) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 1504(%r11) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 1600(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 1696(%r11) -vmovdqa %ymm12, 1792(%r11) -vmovdqa %ymm13, 1888(%r11) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 1984(%r11) -vmovdqa %ymm14, 2080(%r11) -vmovdqa %ymm15, 2176(%r11) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 2272(%r11) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 2368(%r11) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 2464(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 2560(%r11) -vmovdqa 256(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm4, %ymm1 -vpaddw 128(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm8 -vpsubw %ymm1, %ymm0, %ymm12 -vmovdqa 288(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm5, %ymm1 -vpaddw 160(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm9 -vpsubw %ymm1, %ymm0, %ymm13 -vmovdqa 320(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm6, %ymm1 -vpaddw 192(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm10 -vpsubw %ymm1, %ymm0, %ymm14 -vmovdqa 352(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm7, %ymm1 -vpaddw 224(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm11 -vpsubw %ymm1, %ymm0, %ymm15 -vmovdqa %ymm8, 2656(%r11) -vmovdqa %ymm9, 2752(%r11) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 2848(%r11) -vmovdqa %ymm10, 2944(%r11) -vmovdqa %ymm11, 3040(%r11) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 3136(%r11) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 3232(%r11) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 3328(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 3424(%r11) -vmovdqa %ymm12, 3520(%r11) -vmovdqa %ymm13, 3616(%r11) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 3712(%r11) -vmovdqa %ymm14, 3808(%r11) -vmovdqa %ymm15, 3904(%r11) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 4000(%r11) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 4096(%r11) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 4192(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 4288(%r11) -vpmullw %ymm3, %ymm4, %ymm0 -vpaddw 256(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 128(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm12 -vpmullw %ymm3, %ymm5, %ymm0 -vpaddw 288(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 160(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm13 -vpmullw %ymm3, %ymm6, %ymm0 -vpaddw 320(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 192(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm14 -vpmullw %ymm3, %ymm7, %ymm0 -vpaddw 352(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 224(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm15 -vmovdqa %ymm12, 4384(%r11) -vmovdqa %ymm13, 4480(%r11) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 4576(%r11) -vmovdqa %ymm14, 4672(%r11) -vmovdqa %ymm15, 4768(%r11) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 4864(%r11) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 4960(%r11) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 5056(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 5152(%r11) -subq $9408, %rsp -mov $4, %ecx -karatsuba_loop_1: -mov %rsp, %r9 -mov %rsp, %r10 -subq $32, %rsp -vmovdqa 0(%rax), %ymm0 -vmovdqa 192(%rax), %ymm1 -vmovdqa 384(%rax), %ymm2 -vmovdqa 576(%rax), %ymm3 -vpunpcklwd 96(%rax), %ymm0, %ymm4 -vpunpckhwd 96(%rax), %ymm0, %ymm5 -vpunpcklwd 288(%rax), %ymm1, %ymm6 -vpunpckhwd 288(%rax), %ymm1, %ymm7 -vpunpcklwd 480(%rax), %ymm2, %ymm8 -vpunpckhwd 480(%rax), %ymm2, %ymm9 -vpunpcklwd 672(%rax), %ymm3, %ymm10 -vpunpckhwd 672(%rax), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 768(%rax), %ymm0 -vmovdqa 960(%rax), %ymm1 -vmovdqa 1152(%rax), %ymm2 -vmovdqa 1344(%rax), %ymm3 -vpunpcklwd 864(%rax), %ymm0, %ymm12 -vpunpckhwd 864(%rax), %ymm0, %ymm13 -vpunpcklwd 1056(%rax), %ymm1, %ymm14 -vpunpckhwd 1056(%rax), %ymm1, %ymm15 -vpunpcklwd 1248(%rax), %ymm2, %ymm0 -vpunpckhwd 1248(%rax), %ymm2, %ymm1 -vpunpcklwd 1440(%rax), %ymm3, %ymm2 -vpunpckhwd 1440(%rax), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 0(%r9) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 32(%r9) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 64(%r9) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 96(%r9) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 128(%r9) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 160(%r9) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 192(%r9) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 256(%r9) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 288(%r9) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 320(%r9) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 352(%r9) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 384(%r9) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 416(%r9) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 448(%r9) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 224(%r9) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 480(%r9) -vmovdqa 32(%rax), %ymm0 -vmovdqa 224(%rax), %ymm1 -vmovdqa 416(%rax), %ymm2 -vmovdqa 608(%rax), %ymm3 -vpunpcklwd 128(%rax), %ymm0, %ymm4 -vpunpckhwd 128(%rax), %ymm0, %ymm5 -vpunpcklwd 320(%rax), %ymm1, %ymm6 -vpunpckhwd 320(%rax), %ymm1, %ymm7 -vpunpcklwd 512(%rax), %ymm2, %ymm8 -vpunpckhwd 512(%rax), %ymm2, %ymm9 -vpunpcklwd 704(%rax), %ymm3, %ymm10 -vpunpckhwd 704(%rax), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 800(%rax), %ymm0 -vmovdqa 992(%rax), %ymm1 -vmovdqa 1184(%rax), %ymm2 -vmovdqa 1376(%rax), %ymm3 -vpunpcklwd 896(%rax), %ymm0, %ymm12 -vpunpckhwd 896(%rax), %ymm0, %ymm13 -vpunpcklwd 1088(%rax), %ymm1, %ymm14 -vpunpckhwd 1088(%rax), %ymm1, %ymm15 -vpunpcklwd 1280(%rax), %ymm2, %ymm0 -vpunpckhwd 1280(%rax), %ymm2, %ymm1 -vpunpcklwd 1472(%rax), %ymm3, %ymm2 -vpunpckhwd 1472(%rax), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 512(%r9) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 544(%r9) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 576(%r9) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 608(%r9) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 640(%r9) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 672(%r9) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 704(%r9) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 768(%r9) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 800(%r9) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 832(%r9) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 864(%r9) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 896(%r9) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 928(%r9) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 960(%r9) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 736(%r9) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 992(%r9) -vmovdqa 64(%rax), %ymm0 -vmovdqa 256(%rax), %ymm1 -vmovdqa 448(%rax), %ymm2 -vmovdqa 640(%rax), %ymm3 -vpunpcklwd 160(%rax), %ymm0, %ymm4 -vpunpckhwd 160(%rax), %ymm0, %ymm5 -vpunpcklwd 352(%rax), %ymm1, %ymm6 -vpunpckhwd 352(%rax), %ymm1, %ymm7 -vpunpcklwd 544(%rax), %ymm2, %ymm8 -vpunpckhwd 544(%rax), %ymm2, %ymm9 -vpunpcklwd 736(%rax), %ymm3, %ymm10 -vpunpckhwd 736(%rax), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 832(%rax), %ymm0 -vmovdqa 1024(%rax), %ymm1 -vmovdqa 1216(%rax), %ymm2 -vmovdqa 1408(%rax), %ymm3 -vpunpcklwd 928(%rax), %ymm0, %ymm12 -vpunpckhwd 928(%rax), %ymm0, %ymm13 -vpunpcklwd 1120(%rax), %ymm1, %ymm14 -vpunpckhwd 1120(%rax), %ymm1, %ymm15 -vpunpcklwd 1312(%rax), %ymm2, %ymm0 -vpunpckhwd 1312(%rax), %ymm2, %ymm1 -vpunpcklwd 1504(%rax), %ymm3, %ymm2 -vpunpckhwd 1504(%rax), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 1024(%r9) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 1056(%r9) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 1088(%r9) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 1120(%r9) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 1152(%r9) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 1184(%r9) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 1216(%r9) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 1280(%r9) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 1312(%r9) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 1344(%r9) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 1376(%r9) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 1248(%r9) -addq $32, %rsp -subq $32, %rsp -vmovdqa 0(%r11), %ymm0 -vmovdqa 192(%r11), %ymm1 -vmovdqa 384(%r11), %ymm2 -vmovdqa 576(%r11), %ymm3 -vpunpcklwd 96(%r11), %ymm0, %ymm4 -vpunpckhwd 96(%r11), %ymm0, %ymm5 -vpunpcklwd 288(%r11), %ymm1, %ymm6 -vpunpckhwd 288(%r11), %ymm1, %ymm7 -vpunpcklwd 480(%r11), %ymm2, %ymm8 -vpunpckhwd 480(%r11), %ymm2, %ymm9 -vpunpcklwd 672(%r11), %ymm3, %ymm10 -vpunpckhwd 672(%r11), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 768(%r11), %ymm0 -vmovdqa 960(%r11), %ymm1 -vmovdqa 1152(%r11), %ymm2 -vmovdqa 1344(%r11), %ymm3 -vpunpcklwd 864(%r11), %ymm0, %ymm12 -vpunpckhwd 864(%r11), %ymm0, %ymm13 -vpunpcklwd 1056(%r11), %ymm1, %ymm14 -vpunpckhwd 1056(%r11), %ymm1, %ymm15 -vpunpcklwd 1248(%r11), %ymm2, %ymm0 -vpunpckhwd 1248(%r11), %ymm2, %ymm1 -vpunpcklwd 1440(%r11), %ymm3, %ymm2 -vpunpckhwd 1440(%r11), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 1408(%r9) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 1440(%r9) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 1472(%r9) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 1504(%r9) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 1536(%r9) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 1568(%r9) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 1600(%r9) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 1664(%r9) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 1696(%r9) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 1728(%r9) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 1760(%r9) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 1792(%r9) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 1824(%r9) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 1856(%r9) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 1632(%r9) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 1888(%r9) -vmovdqa 32(%r11), %ymm0 -vmovdqa 224(%r11), %ymm1 -vmovdqa 416(%r11), %ymm2 -vmovdqa 608(%r11), %ymm3 -vpunpcklwd 128(%r11), %ymm0, %ymm4 -vpunpckhwd 128(%r11), %ymm0, %ymm5 -vpunpcklwd 320(%r11), %ymm1, %ymm6 -vpunpckhwd 320(%r11), %ymm1, %ymm7 -vpunpcklwd 512(%r11), %ymm2, %ymm8 -vpunpckhwd 512(%r11), %ymm2, %ymm9 -vpunpcklwd 704(%r11), %ymm3, %ymm10 -vpunpckhwd 704(%r11), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 800(%r11), %ymm0 -vmovdqa 992(%r11), %ymm1 -vmovdqa 1184(%r11), %ymm2 -vmovdqa 1376(%r11), %ymm3 -vpunpcklwd 896(%r11), %ymm0, %ymm12 -vpunpckhwd 896(%r11), %ymm0, %ymm13 -vpunpcklwd 1088(%r11), %ymm1, %ymm14 -vpunpckhwd 1088(%r11), %ymm1, %ymm15 -vpunpcklwd 1280(%r11), %ymm2, %ymm0 -vpunpckhwd 1280(%r11), %ymm2, %ymm1 -vpunpcklwd 1472(%r11), %ymm3, %ymm2 -vpunpckhwd 1472(%r11), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 1920(%r9) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 1952(%r9) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 1984(%r9) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 2016(%r9) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 2048(%r9) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 2080(%r9) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 2112(%r9) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 2176(%r9) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 2208(%r9) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 2240(%r9) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 2272(%r9) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 2304(%r9) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 2336(%r9) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 2368(%r9) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 2144(%r9) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 2400(%r9) -vmovdqa 64(%r11), %ymm0 -vmovdqa 256(%r11), %ymm1 -vmovdqa 448(%r11), %ymm2 -vmovdqa 640(%r11), %ymm3 -vpunpcklwd 160(%r11), %ymm0, %ymm4 -vpunpckhwd 160(%r11), %ymm0, %ymm5 -vpunpcklwd 352(%r11), %ymm1, %ymm6 -vpunpckhwd 352(%r11), %ymm1, %ymm7 -vpunpcklwd 544(%r11), %ymm2, %ymm8 -vpunpckhwd 544(%r11), %ymm2, %ymm9 -vpunpcklwd 736(%r11), %ymm3, %ymm10 -vpunpckhwd 736(%r11), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 832(%r11), %ymm0 -vmovdqa 1024(%r11), %ymm1 -vmovdqa 1216(%r11), %ymm2 -vmovdqa 1408(%r11), %ymm3 -vpunpcklwd 928(%r11), %ymm0, %ymm12 -vpunpckhwd 928(%r11), %ymm0, %ymm13 -vpunpcklwd 1120(%r11), %ymm1, %ymm14 -vpunpckhwd 1120(%r11), %ymm1, %ymm15 -vpunpcklwd 1312(%r11), %ymm2, %ymm0 -vpunpckhwd 1312(%r11), %ymm2, %ymm1 -vpunpcklwd 1504(%r11), %ymm3, %ymm2 -vpunpckhwd 1504(%r11), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 2432(%r9) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 2464(%r9) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 2496(%r9) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 2528(%r9) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 2560(%r9) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 2592(%r9) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 2624(%r9) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 2688(%r9) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 2720(%r9) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 2752(%r9) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 2784(%r9) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 2656(%r9) -addq $32, %rsp -innerloop_1: -vmovdqa 0(%r9), %ymm0 -vmovdqa 1408(%r9), %ymm6 -vmovdqa 32(%r9), %ymm1 -vmovdqa 1440(%r9), %ymm7 -vmovdqa 64(%r9), %ymm2 -vmovdqa 1472(%r9), %ymm8 -vmovdqa 96(%r9), %ymm3 -vmovdqa 1504(%r9), %ymm9 -vmovdqa 128(%r9), %ymm4 -vmovdqa 1536(%r9), %ymm10 -vmovdqa 160(%r9), %ymm5 -vmovdqa 1568(%r9), %ymm11 -vpmullw %ymm0, %ymm6, %ymm12 -vmovdqa %ymm12, 2816(%r10) -vpmullw %ymm0, %ymm7, %ymm13 -vpmullw %ymm1, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 2848(%r10) -vpmullw %ymm0, %ymm8, %ymm12 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 2880(%r10) -vpmullw %ymm0, %ymm9, %ymm13 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 2912(%r10) -vpmullw %ymm0, %ymm10, %ymm12 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 2944(%r10) -vpmullw %ymm0, %ymm11, %ymm13 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm5, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 2976(%r10) -vpmullw %ymm1, %ymm11, %ymm12 -vpmullw %ymm2, %ymm10, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm5, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 3008(%r10) -vpmullw %ymm2, %ymm11, %ymm13 -vpmullw %ymm3, %ymm10, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm5, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 3040(%r10) -vpmullw %ymm3, %ymm11, %ymm12 -vpmullw %ymm4, %ymm10, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm5, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 3072(%r10) -vpmullw %ymm4, %ymm11, %ymm13 -vpmullw %ymm5, %ymm10, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 3104(%r10) -vpmullw %ymm5, %ymm11, %ymm12 -vmovdqa %ymm12, 3136(%r10) -vmovdqa 192(%r9), %ymm0 -vmovdqa 1600(%r9), %ymm6 -vmovdqa 224(%r9), %ymm1 -vmovdqa 1632(%r9), %ymm7 -vmovdqa 256(%r9), %ymm2 -vmovdqa 1664(%r9), %ymm8 -vmovdqa 288(%r9), %ymm3 -vmovdqa 1696(%r9), %ymm9 -vmovdqa 320(%r9), %ymm4 -vmovdqa 1728(%r9), %ymm10 -vpmullw %ymm0, %ymm6, %ymm12 -vmovdqa %ymm12, 3200(%r10) -vpmullw %ymm0, %ymm7, %ymm13 -vpmullw %ymm1, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 3232(%r10) -vpmullw %ymm0, %ymm8, %ymm12 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 3264(%r10) -vpmullw %ymm0, %ymm9, %ymm13 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 3296(%r10) -vpmullw %ymm0, %ymm10, %ymm12 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 3328(%r10) -vpmullw %ymm1, %ymm10, %ymm13 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 3360(%r10) -vpmullw %ymm2, %ymm10, %ymm12 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 3392(%r10) -vpmullw %ymm3, %ymm10, %ymm13 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 3424(%r10) -vpmullw %ymm4, %ymm10, %ymm12 -vmovdqa %ymm12, 3456(%r10) -vpaddw 0(%r9), %ymm0, %ymm0 -vpaddw 1408(%r9), %ymm6, %ymm6 -vpaddw 32(%r9), %ymm1, %ymm1 -vpaddw 1440(%r9), %ymm7, %ymm7 -vpaddw 64(%r9), %ymm2, %ymm2 -vpaddw 1472(%r9), %ymm8, %ymm8 -vpaddw 96(%r9), %ymm3, %ymm3 -vpaddw 1504(%r9), %ymm9, %ymm9 -vpaddw 128(%r9), %ymm4, %ymm4 -vpaddw 1536(%r9), %ymm10, %ymm10 -vpmullw %ymm0, %ymm11, %ymm12 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm5, %ymm6, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpsubw 2976(%r10), %ymm12, %ymm12 -vpsubw 3360(%r10), %ymm12, %ymm12 -vmovdqa %ymm12, 3168(%r10) -vpmullw %ymm5, %ymm7, %ymm12 -vpmullw %ymm5, %ymm8, %ymm13 -vpmullw %ymm5, %ymm9, %ymm14 -vpmullw %ymm5, %ymm10, %ymm15 -vpmullw %ymm1, %ymm11, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm2, %ymm10, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm3, %ymm9, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm4, %ymm8, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm2, %ymm11, %ymm5 -vpaddw %ymm5, %ymm13, %ymm13 -vpmullw %ymm3, %ymm10, %ymm5 -vpaddw %ymm5, %ymm13, %ymm13 -vpmullw %ymm4, %ymm9, %ymm5 -vpaddw %ymm5, %ymm13, %ymm13 -vpmullw %ymm3, %ymm11, %ymm5 -vpaddw %ymm5, %ymm14, %ymm14 -vpmullw %ymm4, %ymm10, %ymm5 -vpaddw %ymm5, %ymm14, %ymm14 -vpmullw %ymm4, %ymm11, %ymm5 -vpaddw %ymm5, %ymm15, %ymm15 -vpmullw %ymm0, %ymm10, %ymm11 -vpmullw %ymm1, %ymm9, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm2, %ymm8, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm3, %ymm7, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm4, %ymm6, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm0, %ymm9, %ymm10 -vpmullw %ymm1, %ymm8, %ymm5 -vpaddw %ymm5, %ymm10, %ymm10 -vpmullw %ymm2, %ymm7, %ymm5 -vpaddw %ymm5, %ymm10, %ymm10 -vpmullw %ymm3, %ymm6, %ymm5 -vpaddw %ymm5, %ymm10, %ymm10 -vpmullw %ymm0, %ymm8, %ymm9 -vpmullw %ymm1, %ymm7, %ymm5 -vpaddw %ymm5, %ymm9, %ymm9 -vpmullw %ymm2, %ymm6, %ymm5 -vpaddw %ymm5, %ymm9, %ymm9 -vpmullw %ymm0, %ymm7, %ymm8 -vpmullw %ymm1, %ymm6, %ymm5 -vpaddw %ymm5, %ymm8, %ymm8 -vpmullw %ymm0, %ymm6, %ymm7 -vmovdqa 3008(%r10), %ymm0 -vpsubw 3200(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm12, %ymm6 -vpsubw 3392(%r10), %ymm6, %ymm6 -vmovdqa %ymm6, 3200(%r10) -vpaddw %ymm7, %ymm0, %ymm0 -vpsubw 2816(%r10), %ymm0, %ymm0 -vmovdqa %ymm0, 3008(%r10) -vmovdqa 3040(%r10), %ymm1 -vpsubw 3232(%r10), %ymm1, %ymm1 -vpsubw %ymm1, %ymm13, %ymm7 -vpsubw 3424(%r10), %ymm7, %ymm7 -vmovdqa %ymm7, 3232(%r10) -vpaddw %ymm8, %ymm1, %ymm1 -vpsubw 2848(%r10), %ymm1, %ymm1 -vmovdqa %ymm1, 3040(%r10) -vmovdqa 3072(%r10), %ymm2 -vpsubw 3264(%r10), %ymm2, %ymm2 -vpsubw %ymm2, %ymm14, %ymm8 -vpsubw 3456(%r10), %ymm8, %ymm8 -vmovdqa %ymm8, 3264(%r10) -vpaddw %ymm9, %ymm2, %ymm2 -vpsubw 2880(%r10), %ymm2, %ymm2 -vmovdqa %ymm2, 3072(%r10) -vmovdqa 3104(%r10), %ymm3 -vpsubw 3296(%r10), %ymm3, %ymm3 -vpsubw %ymm3, %ymm15, %ymm9 -vmovdqa %ymm9, 3296(%r10) -vpaddw %ymm10, %ymm3, %ymm3 -vpsubw 2912(%r10), %ymm3, %ymm3 -vmovdqa %ymm3, 3104(%r10) -vmovdqa 3136(%r10), %ymm4 -vpsubw 3328(%r10), %ymm4, %ymm4 -vpaddw %ymm11, %ymm4, %ymm4 -vpsubw 2944(%r10), %ymm4, %ymm4 -vmovdqa %ymm4, 3136(%r10) -vmovdqa 352(%r9), %ymm0 -vmovdqa 1760(%r9), %ymm6 -vmovdqa 384(%r9), %ymm1 -vmovdqa 1792(%r9), %ymm7 -vmovdqa 416(%r9), %ymm2 -vmovdqa 1824(%r9), %ymm8 -vmovdqa 448(%r9), %ymm3 -vmovdqa 1856(%r9), %ymm9 -vmovdqa 480(%r9), %ymm4 -vmovdqa 1888(%r9), %ymm10 -vmovdqa 512(%r9), %ymm5 -vmovdqa 1920(%r9), %ymm11 -vpmullw %ymm0, %ymm6, %ymm12 -vmovdqa %ymm12, 3520(%r10) -vpmullw %ymm0, %ymm7, %ymm13 -vpmullw %ymm1, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 3552(%r10) -vpmullw %ymm0, %ymm8, %ymm12 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 3584(%r10) -vpmullw %ymm0, %ymm9, %ymm13 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 3616(%r10) -vpmullw %ymm0, %ymm10, %ymm12 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 3648(%r10) -vpmullw %ymm0, %ymm11, %ymm13 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm5, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 3680(%r10) -vpmullw %ymm1, %ymm11, %ymm12 -vpmullw %ymm2, %ymm10, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm5, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 3712(%r10) -vpmullw %ymm2, %ymm11, %ymm13 -vpmullw %ymm3, %ymm10, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm5, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 3744(%r10) -vpmullw %ymm3, %ymm11, %ymm12 -vpmullw %ymm4, %ymm10, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm5, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 3776(%r10) -vpmullw %ymm4, %ymm11, %ymm13 -vpmullw %ymm5, %ymm10, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 3808(%r10) -vpmullw %ymm5, %ymm11, %ymm12 -vmovdqa %ymm12, 3840(%r10) -vmovdqa 544(%r9), %ymm0 -vmovdqa 1952(%r9), %ymm6 -vmovdqa 576(%r9), %ymm1 -vmovdqa 1984(%r9), %ymm7 -vmovdqa 608(%r9), %ymm2 -vmovdqa 2016(%r9), %ymm8 -vmovdqa 640(%r9), %ymm3 -vmovdqa 2048(%r9), %ymm9 -vmovdqa 672(%r9), %ymm4 -vmovdqa 2080(%r9), %ymm10 -vpmullw %ymm0, %ymm6, %ymm12 -vmovdqa %ymm12, 3904(%r10) -vpmullw %ymm0, %ymm7, %ymm13 -vpmullw %ymm1, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 3936(%r10) -vpmullw %ymm0, %ymm8, %ymm12 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 3968(%r10) -vpmullw %ymm0, %ymm9, %ymm13 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 4000(%r10) -vpmullw %ymm0, %ymm10, %ymm12 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 4032(%r10) -vpmullw %ymm1, %ymm10, %ymm13 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 4064(%r10) -vpmullw %ymm2, %ymm10, %ymm12 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 4096(%r10) -vpmullw %ymm3, %ymm10, %ymm13 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 4128(%r10) -vpmullw %ymm4, %ymm10, %ymm12 -vmovdqa %ymm12, 4160(%r10) -vpaddw 352(%r9), %ymm0, %ymm0 -vpaddw 1760(%r9), %ymm6, %ymm6 -vpaddw 384(%r9), %ymm1, %ymm1 -vpaddw 1792(%r9), %ymm7, %ymm7 -vpaddw 416(%r9), %ymm2, %ymm2 -vpaddw 1824(%r9), %ymm8, %ymm8 -vpaddw 448(%r9), %ymm3, %ymm3 -vpaddw 1856(%r9), %ymm9, %ymm9 -vpaddw 480(%r9), %ymm4, %ymm4 -vpaddw 1888(%r9), %ymm10, %ymm10 -vpmullw %ymm0, %ymm11, %ymm12 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm5, %ymm6, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpsubw 3680(%r10), %ymm12, %ymm12 -vpsubw 4064(%r10), %ymm12, %ymm12 -vmovdqa %ymm12, 3872(%r10) -vpmullw %ymm5, %ymm7, %ymm12 -vpmullw %ymm5, %ymm8, %ymm13 -vpmullw %ymm5, %ymm9, %ymm14 -vpmullw %ymm5, %ymm10, %ymm15 -vpmullw %ymm1, %ymm11, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm2, %ymm10, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm3, %ymm9, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm4, %ymm8, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm2, %ymm11, %ymm5 -vpaddw %ymm5, %ymm13, %ymm13 -vpmullw %ymm3, %ymm10, %ymm5 -vpaddw %ymm5, %ymm13, %ymm13 -vpmullw %ymm4, %ymm9, %ymm5 -vpaddw %ymm5, %ymm13, %ymm13 -vpmullw %ymm3, %ymm11, %ymm5 -vpaddw %ymm5, %ymm14, %ymm14 -vpmullw %ymm4, %ymm10, %ymm5 -vpaddw %ymm5, %ymm14, %ymm14 -vpmullw %ymm4, %ymm11, %ymm5 -vpaddw %ymm5, %ymm15, %ymm15 -vpmullw %ymm0, %ymm10, %ymm11 -vpmullw %ymm1, %ymm9, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm2, %ymm8, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm3, %ymm7, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm4, %ymm6, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm0, %ymm9, %ymm10 -vpmullw %ymm1, %ymm8, %ymm5 -vpaddw %ymm5, %ymm10, %ymm10 -vpmullw %ymm2, %ymm7, %ymm5 -vpaddw %ymm5, %ymm10, %ymm10 -vpmullw %ymm3, %ymm6, %ymm5 -vpaddw %ymm5, %ymm10, %ymm10 -vpmullw %ymm0, %ymm8, %ymm9 -vpmullw %ymm1, %ymm7, %ymm5 -vpaddw %ymm5, %ymm9, %ymm9 -vpmullw %ymm2, %ymm6, %ymm5 -vpaddw %ymm5, %ymm9, %ymm9 -vpmullw %ymm0, %ymm7, %ymm8 -vpmullw %ymm1, %ymm6, %ymm5 -vpaddw %ymm5, %ymm8, %ymm8 -vpmullw %ymm0, %ymm6, %ymm7 -vmovdqa 3712(%r10), %ymm0 -vpsubw 3904(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm12, %ymm6 -vpsubw 4096(%r10), %ymm6, %ymm6 -vmovdqa %ymm6, 3904(%r10) -vpaddw %ymm7, %ymm0, %ymm0 -vpsubw 3520(%r10), %ymm0, %ymm0 -vmovdqa %ymm0, 3712(%r10) -vmovdqa 3744(%r10), %ymm1 -vpsubw 3936(%r10), %ymm1, %ymm1 -vpsubw %ymm1, %ymm13, %ymm7 -vpsubw 4128(%r10), %ymm7, %ymm7 -vmovdqa %ymm7, 3936(%r10) -vpaddw %ymm8, %ymm1, %ymm1 -vpsubw 3552(%r10), %ymm1, %ymm1 -vmovdqa %ymm1, 3744(%r10) -vmovdqa 3776(%r10), %ymm2 -vpsubw 3968(%r10), %ymm2, %ymm2 -vpsubw %ymm2, %ymm14, %ymm8 -vpsubw 4160(%r10), %ymm8, %ymm8 -vmovdqa %ymm8, 3968(%r10) -vpaddw %ymm9, %ymm2, %ymm2 -vpsubw 3584(%r10), %ymm2, %ymm2 -vmovdqa %ymm2, 3776(%r10) -vmovdqa 3808(%r10), %ymm3 -vpsubw 4000(%r10), %ymm3, %ymm3 -vpsubw %ymm3, %ymm15, %ymm9 -vmovdqa %ymm9, 4000(%r10) -vpaddw %ymm10, %ymm3, %ymm3 -vpsubw 3616(%r10), %ymm3, %ymm3 -vmovdqa %ymm3, 3808(%r10) -vmovdqa 3840(%r10), %ymm4 -vpsubw 4032(%r10), %ymm4, %ymm4 -vpaddw %ymm11, %ymm4, %ymm4 -vpsubw 3648(%r10), %ymm4, %ymm4 -vmovdqa %ymm4, 3840(%r10) -vmovdqa 0(%r9), %ymm0 -vmovdqa 1408(%r9), %ymm6 -vpaddw 352(%r9), %ymm0, %ymm0 -vpaddw 1760(%r9), %ymm6, %ymm6 -vmovdqa 32(%r9), %ymm1 -vmovdqa 1440(%r9), %ymm7 -vpaddw 384(%r9), %ymm1, %ymm1 -vpaddw 1792(%r9), %ymm7, %ymm7 -vmovdqa 64(%r9), %ymm2 -vmovdqa 1472(%r9), %ymm8 -vpaddw 416(%r9), %ymm2, %ymm2 -vpaddw 1824(%r9), %ymm8, %ymm8 -vmovdqa 96(%r9), %ymm3 -vmovdqa 1504(%r9), %ymm9 -vpaddw 448(%r9), %ymm3, %ymm3 -vpaddw 1856(%r9), %ymm9, %ymm9 -vmovdqa 128(%r9), %ymm4 -vmovdqa 1536(%r9), %ymm10 -vpaddw 480(%r9), %ymm4, %ymm4 -vpaddw 1888(%r9), %ymm10, %ymm10 -vmovdqa 160(%r9), %ymm5 -vmovdqa 1568(%r9), %ymm11 -vpaddw 512(%r9), %ymm5, %ymm5 -vpaddw 1920(%r9), %ymm11, %ymm11 -vpmullw %ymm0, %ymm6, %ymm12 -vmovdqa %ymm12, 5888(%rsp) -vpmullw %ymm0, %ymm7, %ymm13 -vpmullw %ymm1, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 5920(%rsp) -vpmullw %ymm0, %ymm8, %ymm12 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 5952(%rsp) -vpmullw %ymm0, %ymm9, %ymm13 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 5984(%rsp) -vpmullw %ymm0, %ymm10, %ymm12 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 6016(%rsp) -vpmullw %ymm0, %ymm11, %ymm13 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm5, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 6048(%rsp) -vpmullw %ymm1, %ymm11, %ymm12 -vpmullw %ymm2, %ymm10, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm5, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 6080(%rsp) -vpmullw %ymm2, %ymm11, %ymm13 -vpmullw %ymm3, %ymm10, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm5, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 6112(%rsp) -vpmullw %ymm3, %ymm11, %ymm12 -vpmullw %ymm4, %ymm10, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm5, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 6144(%rsp) -vpmullw %ymm4, %ymm11, %ymm13 -vpmullw %ymm5, %ymm10, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 6176(%rsp) -vpmullw %ymm5, %ymm11, %ymm12 -vmovdqa %ymm12, 6208(%rsp) -vmovdqa 192(%r9), %ymm0 -vmovdqa 1600(%r9), %ymm6 -vpaddw 544(%r9), %ymm0, %ymm0 -vpaddw 1952(%r9), %ymm6, %ymm6 -vmovdqa 224(%r9), %ymm1 -vmovdqa 1632(%r9), %ymm7 -vpaddw 576(%r9), %ymm1, %ymm1 -vpaddw 1984(%r9), %ymm7, %ymm7 -vmovdqa 256(%r9), %ymm2 -vmovdqa 1664(%r9), %ymm8 -vpaddw 608(%r9), %ymm2, %ymm2 -vpaddw 2016(%r9), %ymm8, %ymm8 -vmovdqa 288(%r9), %ymm3 -vmovdqa 1696(%r9), %ymm9 -vpaddw 640(%r9), %ymm3, %ymm3 -vpaddw 2048(%r9), %ymm9, %ymm9 -vmovdqa 320(%r9), %ymm4 -vmovdqa 1728(%r9), %ymm10 -vpaddw 672(%r9), %ymm4, %ymm4 -vpaddw 2080(%r9), %ymm10, %ymm10 -vpmullw %ymm0, %ymm6, %ymm12 -vmovdqa %ymm12, 6272(%rsp) -vpmullw %ymm0, %ymm7, %ymm13 -vpmullw %ymm1, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 6304(%rsp) -vpmullw %ymm0, %ymm8, %ymm12 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 6336(%rsp) -vpmullw %ymm0, %ymm9, %ymm13 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 6368(%rsp) -vpmullw %ymm0, %ymm10, %ymm12 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 6400(%rsp) -vpmullw %ymm1, %ymm10, %ymm13 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 6432(%rsp) -vpmullw %ymm2, %ymm10, %ymm12 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 6464(%rsp) -vpmullw %ymm3, %ymm10, %ymm13 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 6496(%rsp) -vpmullw %ymm4, %ymm10, %ymm12 -vmovdqa %ymm12, 6528(%rsp) -vpaddw 0(%r9), %ymm0, %ymm0 -vpaddw 1408(%r9), %ymm6, %ymm6 -vpaddw 352(%r9), %ymm0, %ymm0 -vpaddw 1760(%r9), %ymm6, %ymm6 -vpaddw 32(%r9), %ymm1, %ymm1 -vpaddw 1440(%r9), %ymm7, %ymm7 -vpaddw 384(%r9), %ymm1, %ymm1 -vpaddw 1792(%r9), %ymm7, %ymm7 -vpaddw 64(%r9), %ymm2, %ymm2 -vpaddw 1472(%r9), %ymm8, %ymm8 -vpaddw 416(%r9), %ymm2, %ymm2 -vpaddw 1824(%r9), %ymm8, %ymm8 -vpaddw 96(%r9), %ymm3, %ymm3 -vpaddw 1504(%r9), %ymm9, %ymm9 -vpaddw 448(%r9), %ymm3, %ymm3 -vpaddw 1856(%r9), %ymm9, %ymm9 -vpaddw 128(%r9), %ymm4, %ymm4 -vpaddw 1536(%r9), %ymm10, %ymm10 -vpaddw 480(%r9), %ymm4, %ymm4 -vpaddw 1888(%r9), %ymm10, %ymm10 -vpmullw %ymm0, %ymm11, %ymm12 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm5, %ymm6, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpsubw 6048(%rsp), %ymm12, %ymm12 -vpsubw 6432(%rsp), %ymm12, %ymm12 -vmovdqa %ymm12, 6240(%rsp) -vpmullw %ymm5, %ymm7, %ymm12 -vpmullw %ymm5, %ymm8, %ymm13 -vpmullw %ymm5, %ymm9, %ymm14 -vpmullw %ymm5, %ymm10, %ymm15 -vpmullw %ymm1, %ymm11, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm2, %ymm10, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm3, %ymm9, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm4, %ymm8, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm2, %ymm11, %ymm5 -vpaddw %ymm5, %ymm13, %ymm13 -vpmullw %ymm3, %ymm10, %ymm5 -vpaddw %ymm5, %ymm13, %ymm13 -vpmullw %ymm4, %ymm9, %ymm5 -vpaddw %ymm5, %ymm13, %ymm13 -vpmullw %ymm3, %ymm11, %ymm5 -vpaddw %ymm5, %ymm14, %ymm14 -vpmullw %ymm4, %ymm10, %ymm5 -vpaddw %ymm5, %ymm14, %ymm14 -vpmullw %ymm4, %ymm11, %ymm5 -vpaddw %ymm5, %ymm15, %ymm15 -vpmullw %ymm0, %ymm10, %ymm11 -vpmullw %ymm1, %ymm9, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm2, %ymm8, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm3, %ymm7, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm4, %ymm6, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm0, %ymm9, %ymm10 -vpmullw %ymm1, %ymm8, %ymm5 -vpaddw %ymm5, %ymm10, %ymm10 -vpmullw %ymm2, %ymm7, %ymm5 -vpaddw %ymm5, %ymm10, %ymm10 -vpmullw %ymm3, %ymm6, %ymm5 -vpaddw %ymm5, %ymm10, %ymm10 -vpmullw %ymm0, %ymm8, %ymm9 -vpmullw %ymm1, %ymm7, %ymm5 -vpaddw %ymm5, %ymm9, %ymm9 -vpmullw %ymm2, %ymm6, %ymm5 -vpaddw %ymm5, %ymm9, %ymm9 -vpmullw %ymm0, %ymm7, %ymm8 -vpmullw %ymm1, %ymm6, %ymm5 -vpaddw %ymm5, %ymm8, %ymm8 -vpmullw %ymm0, %ymm6, %ymm7 -vmovdqa 6080(%rsp), %ymm0 -vpsubw 6272(%rsp), %ymm0, %ymm0 -vpsubw %ymm0, %ymm12, %ymm6 -vpsubw 6464(%rsp), %ymm6, %ymm6 -vmovdqa %ymm6, 6272(%rsp) -vpaddw %ymm7, %ymm0, %ymm0 -vpsubw 5888(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 6080(%rsp) -vmovdqa 6112(%rsp), %ymm1 -vpsubw 6304(%rsp), %ymm1, %ymm1 -vpsubw %ymm1, %ymm13, %ymm7 -vpsubw 6496(%rsp), %ymm7, %ymm7 -vmovdqa %ymm7, 6304(%rsp) -vpaddw %ymm8, %ymm1, %ymm1 -vpsubw 5920(%rsp), %ymm1, %ymm1 -vmovdqa %ymm1, 6112(%rsp) -vmovdqa 6144(%rsp), %ymm2 -vpsubw 6336(%rsp), %ymm2, %ymm2 -vpsubw %ymm2, %ymm14, %ymm8 -vpsubw 6528(%rsp), %ymm8, %ymm8 -vmovdqa %ymm8, 6336(%rsp) -vpaddw %ymm9, %ymm2, %ymm2 -vpsubw 5952(%rsp), %ymm2, %ymm2 -vmovdqa %ymm2, 6144(%rsp) -vmovdqa 6176(%rsp), %ymm3 -vpsubw 6368(%rsp), %ymm3, %ymm3 -vpsubw %ymm3, %ymm15, %ymm9 -vmovdqa %ymm9, 6368(%rsp) -vpaddw %ymm10, %ymm3, %ymm3 -vpsubw 5984(%rsp), %ymm3, %ymm3 -vmovdqa %ymm3, 6176(%rsp) -vmovdqa 6208(%rsp), %ymm4 -vpsubw 6400(%rsp), %ymm4, %ymm4 -vpaddw %ymm11, %ymm4, %ymm4 -vpsubw 6016(%rsp), %ymm4, %ymm4 -vmovdqa %ymm4, 6208(%rsp) -vmovdqa 6208(%rsp), %ymm0 -vpsubw 3136(%r10), %ymm0, %ymm0 -vpsubw 3840(%r10), %ymm0, %ymm0 -vmovdqa %ymm0, 3488(%r10) -vmovdqa 3168(%r10), %ymm0 -vpsubw 3520(%r10), %ymm0, %ymm0 -vmovdqa 6240(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 3872(%r10), %ymm1, %ymm1 -vpsubw 2816(%r10), %ymm0, %ymm0 -vpaddw 5888(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3168(%r10) -vmovdqa %ymm1, 3520(%r10) -vmovdqa 3200(%r10), %ymm0 -vpsubw 3552(%r10), %ymm0, %ymm0 -vmovdqa 6272(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 3904(%r10), %ymm1, %ymm1 -vpsubw 2848(%r10), %ymm0, %ymm0 -vpaddw 5920(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3200(%r10) -vmovdqa %ymm1, 3552(%r10) -vmovdqa 3232(%r10), %ymm0 -vpsubw 3584(%r10), %ymm0, %ymm0 -vmovdqa 6304(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 3936(%r10), %ymm1, %ymm1 -vpsubw 2880(%r10), %ymm0, %ymm0 -vpaddw 5952(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3232(%r10) -vmovdqa %ymm1, 3584(%r10) -vmovdqa 3264(%r10), %ymm0 -vpsubw 3616(%r10), %ymm0, %ymm0 -vmovdqa 6336(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 3968(%r10), %ymm1, %ymm1 -vpsubw 2912(%r10), %ymm0, %ymm0 -vpaddw 5984(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3264(%r10) -vmovdqa %ymm1, 3616(%r10) -vmovdqa 3296(%r10), %ymm0 -vpsubw 3648(%r10), %ymm0, %ymm0 -vmovdqa 6368(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 4000(%r10), %ymm1, %ymm1 -vpsubw 2944(%r10), %ymm0, %ymm0 -vpaddw 6016(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3296(%r10) -vmovdqa %ymm1, 3648(%r10) -vmovdqa 3328(%r10), %ymm0 -vpsubw 3680(%r10), %ymm0, %ymm0 -vmovdqa 6400(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 4032(%r10), %ymm1, %ymm1 -vpsubw 2976(%r10), %ymm0, %ymm0 -vpaddw 6048(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3328(%r10) -vmovdqa %ymm1, 3680(%r10) -vmovdqa 3360(%r10), %ymm0 -vpsubw 3712(%r10), %ymm0, %ymm0 -vmovdqa 6432(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 4064(%r10), %ymm1, %ymm1 -vpsubw 3008(%r10), %ymm0, %ymm0 -vpaddw 6080(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3360(%r10) -vmovdqa %ymm1, 3712(%r10) -vmovdqa 3392(%r10), %ymm0 -vpsubw 3744(%r10), %ymm0, %ymm0 -vmovdqa 6464(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 4096(%r10), %ymm1, %ymm1 -vpsubw 3040(%r10), %ymm0, %ymm0 -vpaddw 6112(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3392(%r10) -vmovdqa %ymm1, 3744(%r10) -vmovdqa 3424(%r10), %ymm0 -vpsubw 3776(%r10), %ymm0, %ymm0 -vmovdqa 6496(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 4128(%r10), %ymm1, %ymm1 -vpsubw 3072(%r10), %ymm0, %ymm0 -vpaddw 6144(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3424(%r10) -vmovdqa %ymm1, 3776(%r10) -vmovdqa 3456(%r10), %ymm0 -vpsubw 3808(%r10), %ymm0, %ymm0 -vmovdqa 6528(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 4160(%r10), %ymm1, %ymm1 -vpsubw 3104(%r10), %ymm0, %ymm0 -vpaddw 6176(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3456(%r10) -vmovdqa %ymm1, 3808(%r10) -neg %ecx -jns done_1 -add $704, %r9 -add $1408, %r10 -jmp innerloop_1 -done_1: -sub $704, %r9 -sub $1408, %r10 -vmovdqa 0(%r9), %ymm0 -vpaddw 704(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 6592(%rsp) -vmovdqa 1408(%r9), %ymm0 -vpaddw 2112(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7296(%rsp) -vmovdqa 32(%r9), %ymm0 -vpaddw 736(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 6624(%rsp) -vmovdqa 1440(%r9), %ymm0 -vpaddw 2144(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7328(%rsp) -vmovdqa 64(%r9), %ymm0 -vpaddw 768(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 6656(%rsp) -vmovdqa 1472(%r9), %ymm0 -vpaddw 2176(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7360(%rsp) -vmovdqa 96(%r9), %ymm0 -vpaddw 800(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 6688(%rsp) -vmovdqa 1504(%r9), %ymm0 -vpaddw 2208(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7392(%rsp) -vmovdqa 128(%r9), %ymm0 -vpaddw 832(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 6720(%rsp) -vmovdqa 1536(%r9), %ymm0 -vpaddw 2240(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7424(%rsp) -vmovdqa 160(%r9), %ymm0 -vpaddw 864(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 6752(%rsp) -vmovdqa 1568(%r9), %ymm0 -vpaddw 2272(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7456(%rsp) -vmovdqa 192(%r9), %ymm0 -vpaddw 896(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 6784(%rsp) -vmovdqa 1600(%r9), %ymm0 -vpaddw 2304(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7488(%rsp) -vmovdqa 224(%r9), %ymm0 -vpaddw 928(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 6816(%rsp) -vmovdqa 1632(%r9), %ymm0 -vpaddw 2336(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7520(%rsp) -vmovdqa 256(%r9), %ymm0 -vpaddw 960(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 6848(%rsp) -vmovdqa 1664(%r9), %ymm0 -vpaddw 2368(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7552(%rsp) -vmovdqa 288(%r9), %ymm0 -vpaddw 992(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 6880(%rsp) -vmovdqa 1696(%r9), %ymm0 -vpaddw 2400(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7584(%rsp) -vmovdqa 320(%r9), %ymm0 -vpaddw 1024(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 6912(%rsp) -vmovdqa 1728(%r9), %ymm0 -vpaddw 2432(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7616(%rsp) -vmovdqa 352(%r9), %ymm0 -vpaddw 1056(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 6944(%rsp) -vmovdqa 1760(%r9), %ymm0 -vpaddw 2464(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7648(%rsp) -vmovdqa 384(%r9), %ymm0 -vpaddw 1088(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 6976(%rsp) -vmovdqa 1792(%r9), %ymm0 -vpaddw 2496(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7680(%rsp) -vmovdqa 416(%r9), %ymm0 -vpaddw 1120(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7008(%rsp) -vmovdqa 1824(%r9), %ymm0 -vpaddw 2528(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7712(%rsp) -vmovdqa 448(%r9), %ymm0 -vpaddw 1152(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7040(%rsp) -vmovdqa 1856(%r9), %ymm0 -vpaddw 2560(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7744(%rsp) -vmovdqa 480(%r9), %ymm0 -vpaddw 1184(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7072(%rsp) -vmovdqa 1888(%r9), %ymm0 -vpaddw 2592(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7776(%rsp) -vmovdqa 512(%r9), %ymm0 -vpaddw 1216(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7104(%rsp) -vmovdqa 1920(%r9), %ymm0 -vpaddw 2624(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7808(%rsp) -vmovdqa 544(%r9), %ymm0 -vpaddw 1248(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7136(%rsp) -vmovdqa 1952(%r9), %ymm0 -vpaddw 2656(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7840(%rsp) -vmovdqa 576(%r9), %ymm0 -vpaddw 1280(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7168(%rsp) -vmovdqa 1984(%r9), %ymm0 -vpaddw 2688(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7872(%rsp) -vmovdqa 608(%r9), %ymm0 -vpaddw 1312(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7200(%rsp) -vmovdqa 2016(%r9), %ymm0 -vpaddw 2720(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7904(%rsp) -vmovdqa 640(%r9), %ymm0 -vpaddw 1344(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7232(%rsp) -vmovdqa 2048(%r9), %ymm0 -vpaddw 2752(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7936(%rsp) -vmovdqa 672(%r9), %ymm0 -vpaddw 1376(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7264(%rsp) -vmovdqa 2080(%r9), %ymm0 -vpaddw 2784(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7968(%rsp) -vmovdqa 6592(%rsp), %ymm0 -vmovdqa 7296(%rsp), %ymm6 -vmovdqa 6624(%rsp), %ymm1 -vmovdqa 7328(%rsp), %ymm7 -vmovdqa 6656(%rsp), %ymm2 -vmovdqa 7360(%rsp), %ymm8 -vmovdqa 6688(%rsp), %ymm3 -vmovdqa 7392(%rsp), %ymm9 -vmovdqa 6720(%rsp), %ymm4 -vmovdqa 7424(%rsp), %ymm10 -vmovdqa 6752(%rsp), %ymm5 -vmovdqa 7456(%rsp), %ymm11 -vpmullw %ymm0, %ymm6, %ymm12 -vmovdqa %ymm12, 8000(%rsp) -vpmullw %ymm0, %ymm7, %ymm13 -vpmullw %ymm1, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 8032(%rsp) -vpmullw %ymm0, %ymm8, %ymm12 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 8064(%rsp) -vpmullw %ymm0, %ymm9, %ymm13 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 8096(%rsp) -vpmullw %ymm0, %ymm10, %ymm12 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 8128(%rsp) -vpmullw %ymm0, %ymm11, %ymm13 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm5, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 8160(%rsp) -vpmullw %ymm1, %ymm11, %ymm12 -vpmullw %ymm2, %ymm10, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm5, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 8192(%rsp) -vpmullw %ymm2, %ymm11, %ymm13 -vpmullw %ymm3, %ymm10, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm5, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 8224(%rsp) -vpmullw %ymm3, %ymm11, %ymm12 -vpmullw %ymm4, %ymm10, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm5, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 8256(%rsp) -vpmullw %ymm4, %ymm11, %ymm13 -vpmullw %ymm5, %ymm10, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 8288(%rsp) -vpmullw %ymm5, %ymm11, %ymm12 -vmovdqa %ymm12, 8320(%rsp) -vmovdqa 6784(%rsp), %ymm0 -vmovdqa 7488(%rsp), %ymm6 -vmovdqa 6816(%rsp), %ymm1 -vmovdqa 7520(%rsp), %ymm7 -vmovdqa 6848(%rsp), %ymm2 -vmovdqa 7552(%rsp), %ymm8 -vmovdqa 6880(%rsp), %ymm3 -vmovdqa 7584(%rsp), %ymm9 -vmovdqa 6912(%rsp), %ymm4 -vmovdqa 7616(%rsp), %ymm10 -vpmullw %ymm0, %ymm6, %ymm12 -vmovdqa %ymm12, 8384(%rsp) -vpmullw %ymm0, %ymm7, %ymm13 -vpmullw %ymm1, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 8416(%rsp) -vpmullw %ymm0, %ymm8, %ymm12 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 8448(%rsp) -vpmullw %ymm0, %ymm9, %ymm13 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 8480(%rsp) -vpmullw %ymm0, %ymm10, %ymm12 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 8512(%rsp) -vpmullw %ymm1, %ymm10, %ymm13 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 8544(%rsp) -vpmullw %ymm2, %ymm10, %ymm12 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 8576(%rsp) -vpmullw %ymm3, %ymm10, %ymm13 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 8608(%rsp) -vpmullw %ymm4, %ymm10, %ymm12 -vmovdqa %ymm12, 8640(%rsp) -vpaddw 6592(%rsp), %ymm0, %ymm0 -vpaddw 7296(%rsp), %ymm6, %ymm6 -vpaddw 6624(%rsp), %ymm1, %ymm1 -vpaddw 7328(%rsp), %ymm7, %ymm7 -vpaddw 6656(%rsp), %ymm2, %ymm2 -vpaddw 7360(%rsp), %ymm8, %ymm8 -vpaddw 6688(%rsp), %ymm3, %ymm3 -vpaddw 7392(%rsp), %ymm9, %ymm9 -vpaddw 6720(%rsp), %ymm4, %ymm4 -vpaddw 7424(%rsp), %ymm10, %ymm10 -vpmullw %ymm0, %ymm11, %ymm12 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm5, %ymm6, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpsubw 8160(%rsp), %ymm12, %ymm12 -vpsubw 8544(%rsp), %ymm12, %ymm12 -vmovdqa %ymm12, 8352(%rsp) -vpmullw %ymm5, %ymm7, %ymm12 -vpmullw %ymm5, %ymm8, %ymm13 -vpmullw %ymm5, %ymm9, %ymm14 -vpmullw %ymm5, %ymm10, %ymm15 -vpmullw %ymm1, %ymm11, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm2, %ymm10, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm3, %ymm9, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm4, %ymm8, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm2, %ymm11, %ymm5 -vpaddw %ymm5, %ymm13, %ymm13 -vpmullw %ymm3, %ymm10, %ymm5 -vpaddw %ymm5, %ymm13, %ymm13 -vpmullw %ymm4, %ymm9, %ymm5 -vpaddw %ymm5, %ymm13, %ymm13 -vpmullw %ymm3, %ymm11, %ymm5 -vpaddw %ymm5, %ymm14, %ymm14 -vpmullw %ymm4, %ymm10, %ymm5 -vpaddw %ymm5, %ymm14, %ymm14 -vpmullw %ymm4, %ymm11, %ymm5 -vpaddw %ymm5, %ymm15, %ymm15 -vpmullw %ymm0, %ymm10, %ymm11 -vpmullw %ymm1, %ymm9, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm2, %ymm8, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm3, %ymm7, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm4, %ymm6, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm0, %ymm9, %ymm10 -vpmullw %ymm1, %ymm8, %ymm5 -vpaddw %ymm5, %ymm10, %ymm10 -vpmullw %ymm2, %ymm7, %ymm5 -vpaddw %ymm5, %ymm10, %ymm10 -vpmullw %ymm3, %ymm6, %ymm5 -vpaddw %ymm5, %ymm10, %ymm10 -vpmullw %ymm0, %ymm8, %ymm9 -vpmullw %ymm1, %ymm7, %ymm5 -vpaddw %ymm5, %ymm9, %ymm9 -vpmullw %ymm2, %ymm6, %ymm5 -vpaddw %ymm5, %ymm9, %ymm9 -vpmullw %ymm0, %ymm7, %ymm8 -vpmullw %ymm1, %ymm6, %ymm5 -vpaddw %ymm5, %ymm8, %ymm8 -vpmullw %ymm0, %ymm6, %ymm7 -vmovdqa 8192(%rsp), %ymm0 -vpsubw 8384(%rsp), %ymm0, %ymm0 -vpsubw %ymm0, %ymm12, %ymm6 -vpsubw 8576(%rsp), %ymm6, %ymm6 -vmovdqa %ymm6, 8384(%rsp) -vpaddw %ymm7, %ymm0, %ymm0 -vpsubw 8000(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 8192(%rsp) -vmovdqa 8224(%rsp), %ymm1 -vpsubw 8416(%rsp), %ymm1, %ymm1 -vpsubw %ymm1, %ymm13, %ymm7 -vpsubw 8608(%rsp), %ymm7, %ymm7 -vmovdqa %ymm7, 8416(%rsp) -vpaddw %ymm8, %ymm1, %ymm1 -vpsubw 8032(%rsp), %ymm1, %ymm1 -vmovdqa %ymm1, 8224(%rsp) -vmovdqa 8256(%rsp), %ymm2 -vpsubw 8448(%rsp), %ymm2, %ymm2 -vpsubw %ymm2, %ymm14, %ymm8 -vpsubw 8640(%rsp), %ymm8, %ymm8 -vmovdqa %ymm8, 8448(%rsp) -vpaddw %ymm9, %ymm2, %ymm2 -vpsubw 8064(%rsp), %ymm2, %ymm2 -vmovdqa %ymm2, 8256(%rsp) -vmovdqa 8288(%rsp), %ymm3 -vpsubw 8480(%rsp), %ymm3, %ymm3 -vpsubw %ymm3, %ymm15, %ymm9 -vmovdqa %ymm9, 8480(%rsp) -vpaddw %ymm10, %ymm3, %ymm3 -vpsubw 8096(%rsp), %ymm3, %ymm3 -vmovdqa %ymm3, 8288(%rsp) -vmovdqa 8320(%rsp), %ymm4 -vpsubw 8512(%rsp), %ymm4, %ymm4 -vpaddw %ymm11, %ymm4, %ymm4 -vpsubw 8128(%rsp), %ymm4, %ymm4 -vmovdqa %ymm4, 8320(%rsp) -vmovdqa 6944(%rsp), %ymm0 -vmovdqa 7648(%rsp), %ymm6 -vmovdqa 6976(%rsp), %ymm1 -vmovdqa 7680(%rsp), %ymm7 -vmovdqa 7008(%rsp), %ymm2 -vmovdqa 7712(%rsp), %ymm8 -vmovdqa 7040(%rsp), %ymm3 -vmovdqa 7744(%rsp), %ymm9 -vmovdqa 7072(%rsp), %ymm4 -vmovdqa 7776(%rsp), %ymm10 -vmovdqa 7104(%rsp), %ymm5 -vmovdqa 7808(%rsp), %ymm11 -vpmullw %ymm0, %ymm6, %ymm12 -vmovdqa %ymm12, 8704(%rsp) -vpmullw %ymm0, %ymm7, %ymm13 -vpmullw %ymm1, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 8736(%rsp) -vpmullw %ymm0, %ymm8, %ymm12 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 8768(%rsp) -vpmullw %ymm0, %ymm9, %ymm13 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 8800(%rsp) -vpmullw %ymm0, %ymm10, %ymm12 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 8832(%rsp) -vpmullw %ymm0, %ymm11, %ymm13 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm5, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 8864(%rsp) -vpmullw %ymm1, %ymm11, %ymm12 -vpmullw %ymm2, %ymm10, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm5, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 8896(%rsp) -vpmullw %ymm2, %ymm11, %ymm13 -vpmullw %ymm3, %ymm10, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm5, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 8928(%rsp) -vpmullw %ymm3, %ymm11, %ymm12 -vpmullw %ymm4, %ymm10, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm5, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 8960(%rsp) -vpmullw %ymm4, %ymm11, %ymm13 -vpmullw %ymm5, %ymm10, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 8992(%rsp) -vpmullw %ymm5, %ymm11, %ymm12 -vmovdqa %ymm12, 9024(%rsp) -vmovdqa 7136(%rsp), %ymm0 -vmovdqa 7840(%rsp), %ymm6 -vmovdqa 7168(%rsp), %ymm1 -vmovdqa 7872(%rsp), %ymm7 -vmovdqa 7200(%rsp), %ymm2 -vmovdqa 7904(%rsp), %ymm8 -vmovdqa 7232(%rsp), %ymm3 -vmovdqa 7936(%rsp), %ymm9 -vmovdqa 7264(%rsp), %ymm4 -vmovdqa 7968(%rsp), %ymm10 -vpmullw %ymm0, %ymm6, %ymm12 -vmovdqa %ymm12, 9088(%rsp) -vpmullw %ymm0, %ymm7, %ymm13 -vpmullw %ymm1, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 9120(%rsp) -vpmullw %ymm0, %ymm8, %ymm12 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 9152(%rsp) -vpmullw %ymm0, %ymm9, %ymm13 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 9184(%rsp) -vpmullw %ymm0, %ymm10, %ymm12 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 9216(%rsp) -vpmullw %ymm1, %ymm10, %ymm13 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 9248(%rsp) -vpmullw %ymm2, %ymm10, %ymm12 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 9280(%rsp) -vpmullw %ymm3, %ymm10, %ymm13 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 9312(%rsp) -vpmullw %ymm4, %ymm10, %ymm12 -vmovdqa %ymm12, 9344(%rsp) -vpaddw 6944(%rsp), %ymm0, %ymm0 -vpaddw 7648(%rsp), %ymm6, %ymm6 -vpaddw 6976(%rsp), %ymm1, %ymm1 -vpaddw 7680(%rsp), %ymm7, %ymm7 -vpaddw 7008(%rsp), %ymm2, %ymm2 -vpaddw 7712(%rsp), %ymm8, %ymm8 -vpaddw 7040(%rsp), %ymm3, %ymm3 -vpaddw 7744(%rsp), %ymm9, %ymm9 -vpaddw 7072(%rsp), %ymm4, %ymm4 -vpaddw 7776(%rsp), %ymm10, %ymm10 -vpmullw %ymm0, %ymm11, %ymm12 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm5, %ymm6, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpsubw 8864(%rsp), %ymm12, %ymm12 -vpsubw 9248(%rsp), %ymm12, %ymm12 -vmovdqa %ymm12, 9056(%rsp) -vpmullw %ymm5, %ymm7, %ymm12 -vpmullw %ymm5, %ymm8, %ymm13 -vpmullw %ymm5, %ymm9, %ymm14 -vpmullw %ymm5, %ymm10, %ymm15 -vpmullw %ymm1, %ymm11, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm2, %ymm10, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm3, %ymm9, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm4, %ymm8, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm2, %ymm11, %ymm5 -vpaddw %ymm5, %ymm13, %ymm13 -vpmullw %ymm3, %ymm10, %ymm5 -vpaddw %ymm5, %ymm13, %ymm13 -vpmullw %ymm4, %ymm9, %ymm5 -vpaddw %ymm5, %ymm13, %ymm13 -vpmullw %ymm3, %ymm11, %ymm5 -vpaddw %ymm5, %ymm14, %ymm14 -vpmullw %ymm4, %ymm10, %ymm5 -vpaddw %ymm5, %ymm14, %ymm14 -vpmullw %ymm4, %ymm11, %ymm5 -vpaddw %ymm5, %ymm15, %ymm15 -vpmullw %ymm0, %ymm10, %ymm11 -vpmullw %ymm1, %ymm9, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm2, %ymm8, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm3, %ymm7, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm4, %ymm6, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm0, %ymm9, %ymm10 -vpmullw %ymm1, %ymm8, %ymm5 -vpaddw %ymm5, %ymm10, %ymm10 -vpmullw %ymm2, %ymm7, %ymm5 -vpaddw %ymm5, %ymm10, %ymm10 -vpmullw %ymm3, %ymm6, %ymm5 -vpaddw %ymm5, %ymm10, %ymm10 -vpmullw %ymm0, %ymm8, %ymm9 -vpmullw %ymm1, %ymm7, %ymm5 -vpaddw %ymm5, %ymm9, %ymm9 -vpmullw %ymm2, %ymm6, %ymm5 -vpaddw %ymm5, %ymm9, %ymm9 -vpmullw %ymm0, %ymm7, %ymm8 -vpmullw %ymm1, %ymm6, %ymm5 -vpaddw %ymm5, %ymm8, %ymm8 -vpmullw %ymm0, %ymm6, %ymm7 -vmovdqa 8896(%rsp), %ymm0 -vpsubw 9088(%rsp), %ymm0, %ymm0 -vpsubw %ymm0, %ymm12, %ymm6 -vpsubw 9280(%rsp), %ymm6, %ymm6 -vmovdqa %ymm6, 9088(%rsp) -vpaddw %ymm7, %ymm0, %ymm0 -vpsubw 8704(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 8896(%rsp) -vmovdqa 8928(%rsp), %ymm1 -vpsubw 9120(%rsp), %ymm1, %ymm1 -vpsubw %ymm1, %ymm13, %ymm7 -vpsubw 9312(%rsp), %ymm7, %ymm7 -vmovdqa %ymm7, 9120(%rsp) -vpaddw %ymm8, %ymm1, %ymm1 -vpsubw 8736(%rsp), %ymm1, %ymm1 -vmovdqa %ymm1, 8928(%rsp) -vmovdqa 8960(%rsp), %ymm2 -vpsubw 9152(%rsp), %ymm2, %ymm2 -vpsubw %ymm2, %ymm14, %ymm8 -vpsubw 9344(%rsp), %ymm8, %ymm8 -vmovdqa %ymm8, 9152(%rsp) -vpaddw %ymm9, %ymm2, %ymm2 -vpsubw 8768(%rsp), %ymm2, %ymm2 -vmovdqa %ymm2, 8960(%rsp) -vmovdqa 8992(%rsp), %ymm3 -vpsubw 9184(%rsp), %ymm3, %ymm3 -vpsubw %ymm3, %ymm15, %ymm9 -vmovdqa %ymm9, 9184(%rsp) -vpaddw %ymm10, %ymm3, %ymm3 -vpsubw 8800(%rsp), %ymm3, %ymm3 -vmovdqa %ymm3, 8992(%rsp) -vmovdqa 9024(%rsp), %ymm4 -vpsubw 9216(%rsp), %ymm4, %ymm4 -vpaddw %ymm11, %ymm4, %ymm4 -vpsubw 8832(%rsp), %ymm4, %ymm4 -vmovdqa %ymm4, 9024(%rsp) -vmovdqa 6592(%rsp), %ymm0 -vmovdqa 7296(%rsp), %ymm6 -vpaddw 6944(%rsp), %ymm0, %ymm0 -vpaddw 7648(%rsp), %ymm6, %ymm6 -vmovdqa 6624(%rsp), %ymm1 -vmovdqa 7328(%rsp), %ymm7 -vpaddw 6976(%rsp), %ymm1, %ymm1 -vpaddw 7680(%rsp), %ymm7, %ymm7 -vmovdqa 6656(%rsp), %ymm2 -vmovdqa 7360(%rsp), %ymm8 -vpaddw 7008(%rsp), %ymm2, %ymm2 -vpaddw 7712(%rsp), %ymm8, %ymm8 -vmovdqa 6688(%rsp), %ymm3 -vmovdqa 7392(%rsp), %ymm9 -vpaddw 7040(%rsp), %ymm3, %ymm3 -vpaddw 7744(%rsp), %ymm9, %ymm9 -vmovdqa 6720(%rsp), %ymm4 -vmovdqa 7424(%rsp), %ymm10 -vpaddw 7072(%rsp), %ymm4, %ymm4 -vpaddw 7776(%rsp), %ymm10, %ymm10 -vmovdqa 6752(%rsp), %ymm5 -vmovdqa 7456(%rsp), %ymm11 -vpaddw 7104(%rsp), %ymm5, %ymm5 -vpaddw 7808(%rsp), %ymm11, %ymm11 -vpmullw %ymm0, %ymm6, %ymm12 -vmovdqa %ymm12, 5888(%rsp) -vpmullw %ymm0, %ymm7, %ymm13 -vpmullw %ymm1, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 5920(%rsp) -vpmullw %ymm0, %ymm8, %ymm12 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 5952(%rsp) -vpmullw %ymm0, %ymm9, %ymm13 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 5984(%rsp) -vpmullw %ymm0, %ymm10, %ymm12 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 6016(%rsp) -vpmullw %ymm0, %ymm11, %ymm13 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm5, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 6048(%rsp) -vpmullw %ymm1, %ymm11, %ymm12 -vpmullw %ymm2, %ymm10, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm5, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 6080(%rsp) -vpmullw %ymm2, %ymm11, %ymm13 -vpmullw %ymm3, %ymm10, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm5, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 6112(%rsp) -vpmullw %ymm3, %ymm11, %ymm12 -vpmullw %ymm4, %ymm10, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm5, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 6144(%rsp) -vpmullw %ymm4, %ymm11, %ymm13 -vpmullw %ymm5, %ymm10, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 6176(%rsp) -vpmullw %ymm5, %ymm11, %ymm12 -vmovdqa %ymm12, 6208(%rsp) -vmovdqa 6784(%rsp), %ymm0 -vmovdqa 7488(%rsp), %ymm6 -vpaddw 7136(%rsp), %ymm0, %ymm0 -vpaddw 7840(%rsp), %ymm6, %ymm6 -vmovdqa 6816(%rsp), %ymm1 -vmovdqa 7520(%rsp), %ymm7 -vpaddw 7168(%rsp), %ymm1, %ymm1 -vpaddw 7872(%rsp), %ymm7, %ymm7 -vmovdqa 6848(%rsp), %ymm2 -vmovdqa 7552(%rsp), %ymm8 -vpaddw 7200(%rsp), %ymm2, %ymm2 -vpaddw 7904(%rsp), %ymm8, %ymm8 -vmovdqa 6880(%rsp), %ymm3 -vmovdqa 7584(%rsp), %ymm9 -vpaddw 7232(%rsp), %ymm3, %ymm3 -vpaddw 7936(%rsp), %ymm9, %ymm9 -vmovdqa 6912(%rsp), %ymm4 -vmovdqa 7616(%rsp), %ymm10 -vpaddw 7264(%rsp), %ymm4, %ymm4 -vpaddw 7968(%rsp), %ymm10, %ymm10 -vpmullw %ymm0, %ymm6, %ymm12 -vmovdqa %ymm12, 6272(%rsp) -vpmullw %ymm0, %ymm7, %ymm13 -vpmullw %ymm1, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 6304(%rsp) -vpmullw %ymm0, %ymm8, %ymm12 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 6336(%rsp) -vpmullw %ymm0, %ymm9, %ymm13 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 6368(%rsp) -vpmullw %ymm0, %ymm10, %ymm12 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 6400(%rsp) -vpmullw %ymm1, %ymm10, %ymm13 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 6432(%rsp) -vpmullw %ymm2, %ymm10, %ymm12 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 6464(%rsp) -vpmullw %ymm3, %ymm10, %ymm13 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 6496(%rsp) -vpmullw %ymm4, %ymm10, %ymm12 -vmovdqa %ymm12, 6528(%rsp) -vpaddw 6592(%rsp), %ymm0, %ymm0 -vpaddw 7296(%rsp), %ymm6, %ymm6 -vpaddw 6944(%rsp), %ymm0, %ymm0 -vpaddw 7648(%rsp), %ymm6, %ymm6 -vpaddw 6624(%rsp), %ymm1, %ymm1 -vpaddw 7328(%rsp), %ymm7, %ymm7 -vpaddw 6976(%rsp), %ymm1, %ymm1 -vpaddw 7680(%rsp), %ymm7, %ymm7 -vpaddw 6656(%rsp), %ymm2, %ymm2 -vpaddw 7360(%rsp), %ymm8, %ymm8 -vpaddw 7008(%rsp), %ymm2, %ymm2 -vpaddw 7712(%rsp), %ymm8, %ymm8 -vpaddw 6688(%rsp), %ymm3, %ymm3 -vpaddw 7392(%rsp), %ymm9, %ymm9 -vpaddw 7040(%rsp), %ymm3, %ymm3 -vpaddw 7744(%rsp), %ymm9, %ymm9 -vpaddw 6720(%rsp), %ymm4, %ymm4 -vpaddw 7424(%rsp), %ymm10, %ymm10 -vpaddw 7072(%rsp), %ymm4, %ymm4 -vpaddw 7776(%rsp), %ymm10, %ymm10 -vpmullw %ymm0, %ymm11, %ymm12 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm5, %ymm6, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpsubw 6048(%rsp), %ymm12, %ymm12 -vpsubw 6432(%rsp), %ymm12, %ymm12 -vmovdqa %ymm12, 6240(%rsp) -vpmullw %ymm5, %ymm7, %ymm12 -vpmullw %ymm5, %ymm8, %ymm13 -vpmullw %ymm5, %ymm9, %ymm14 -vpmullw %ymm5, %ymm10, %ymm15 -vpmullw %ymm1, %ymm11, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm2, %ymm10, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm3, %ymm9, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm4, %ymm8, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm2, %ymm11, %ymm5 -vpaddw %ymm5, %ymm13, %ymm13 -vpmullw %ymm3, %ymm10, %ymm5 -vpaddw %ymm5, %ymm13, %ymm13 -vpmullw %ymm4, %ymm9, %ymm5 -vpaddw %ymm5, %ymm13, %ymm13 -vpmullw %ymm3, %ymm11, %ymm5 -vpaddw %ymm5, %ymm14, %ymm14 -vpmullw %ymm4, %ymm10, %ymm5 -vpaddw %ymm5, %ymm14, %ymm14 -vpmullw %ymm4, %ymm11, %ymm5 -vpaddw %ymm5, %ymm15, %ymm15 -vpmullw %ymm0, %ymm10, %ymm11 -vpmullw %ymm1, %ymm9, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm2, %ymm8, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm3, %ymm7, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm4, %ymm6, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm0, %ymm9, %ymm10 -vpmullw %ymm1, %ymm8, %ymm5 -vpaddw %ymm5, %ymm10, %ymm10 -vpmullw %ymm2, %ymm7, %ymm5 -vpaddw %ymm5, %ymm10, %ymm10 -vpmullw %ymm3, %ymm6, %ymm5 -vpaddw %ymm5, %ymm10, %ymm10 -vpmullw %ymm0, %ymm8, %ymm9 -vpmullw %ymm1, %ymm7, %ymm5 -vpaddw %ymm5, %ymm9, %ymm9 -vpmullw %ymm2, %ymm6, %ymm5 -vpaddw %ymm5, %ymm9, %ymm9 -vpmullw %ymm0, %ymm7, %ymm8 -vpmullw %ymm1, %ymm6, %ymm5 -vpaddw %ymm5, %ymm8, %ymm8 -vpmullw %ymm0, %ymm6, %ymm7 -vmovdqa 6080(%rsp), %ymm0 -vpsubw 6272(%rsp), %ymm0, %ymm0 -vpsubw %ymm0, %ymm12, %ymm6 -vpsubw 6464(%rsp), %ymm6, %ymm6 -vmovdqa %ymm6, 6272(%rsp) -vpaddw %ymm7, %ymm0, %ymm0 -vpsubw 5888(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 6080(%rsp) -vmovdqa 6112(%rsp), %ymm1 -vpsubw 6304(%rsp), %ymm1, %ymm1 -vpsubw %ymm1, %ymm13, %ymm7 -vpsubw 6496(%rsp), %ymm7, %ymm7 -vmovdqa %ymm7, 6304(%rsp) -vpaddw %ymm8, %ymm1, %ymm1 -vpsubw 5920(%rsp), %ymm1, %ymm1 -vmovdqa %ymm1, 6112(%rsp) -vmovdqa 6144(%rsp), %ymm2 -vpsubw 6336(%rsp), %ymm2, %ymm2 -vpsubw %ymm2, %ymm14, %ymm8 -vpsubw 6528(%rsp), %ymm8, %ymm8 -vmovdqa %ymm8, 6336(%rsp) -vpaddw %ymm9, %ymm2, %ymm2 -vpsubw 5952(%rsp), %ymm2, %ymm2 -vmovdqa %ymm2, 6144(%rsp) -vmovdqa 6176(%rsp), %ymm3 -vpsubw 6368(%rsp), %ymm3, %ymm3 -vpsubw %ymm3, %ymm15, %ymm9 -vmovdqa %ymm9, 6368(%rsp) -vpaddw %ymm10, %ymm3, %ymm3 -vpsubw 5984(%rsp), %ymm3, %ymm3 -vmovdqa %ymm3, 6176(%rsp) -vmovdqa 6208(%rsp), %ymm4 -vpsubw 6400(%rsp), %ymm4, %ymm4 -vpaddw %ymm11, %ymm4, %ymm4 -vpsubw 6016(%rsp), %ymm4, %ymm4 -vmovdqa %ymm4, 6208(%rsp) -vmovdqa 8352(%rsp), %ymm0 -vpsubw 8704(%rsp), %ymm0, %ymm0 -vmovdqa 6240(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 9056(%rsp), %ymm1, %ymm6 -vpsubw 8000(%rsp), %ymm0, %ymm0 -vpaddw 5888(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 8352(%rsp) -vmovdqa 8384(%rsp), %ymm0 -vpsubw 8736(%rsp), %ymm0, %ymm0 -vmovdqa 6272(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 9088(%rsp), %ymm1, %ymm7 -vpsubw 8032(%rsp), %ymm0, %ymm0 -vpaddw 5920(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 8384(%rsp) -vmovdqa 8416(%rsp), %ymm0 -vpsubw 8768(%rsp), %ymm0, %ymm0 -vmovdqa 6304(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 9120(%rsp), %ymm1, %ymm8 -vpsubw 8064(%rsp), %ymm0, %ymm0 -vpaddw 5952(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 8416(%rsp) -vmovdqa 8448(%rsp), %ymm0 -vpsubw 8800(%rsp), %ymm0, %ymm0 -vmovdqa 6336(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 9152(%rsp), %ymm1, %ymm9 -vpsubw 8096(%rsp), %ymm0, %ymm0 -vpaddw 5984(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 8448(%rsp) -vmovdqa 8480(%rsp), %ymm0 -vpsubw 8832(%rsp), %ymm0, %ymm0 -vmovdqa 6368(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 9184(%rsp), %ymm1, %ymm10 -vpsubw 8128(%rsp), %ymm0, %ymm0 -vpaddw 6016(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 8480(%rsp) -vmovdqa 8512(%rsp), %ymm0 -vpsubw 8864(%rsp), %ymm0, %ymm0 -vmovdqa 6400(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 9216(%rsp), %ymm1, %ymm11 -vpsubw 8160(%rsp), %ymm0, %ymm0 -vpaddw 6048(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 8512(%rsp) -vmovdqa 8544(%rsp), %ymm0 -vpsubw 8896(%rsp), %ymm0, %ymm0 -vmovdqa 6432(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 9248(%rsp), %ymm1, %ymm12 -vpsubw 8192(%rsp), %ymm0, %ymm0 -vpaddw 6080(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 8544(%rsp) -vmovdqa 8576(%rsp), %ymm0 -vpsubw 8928(%rsp), %ymm0, %ymm0 -vmovdqa 6464(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 9280(%rsp), %ymm1, %ymm13 -vpsubw 8224(%rsp), %ymm0, %ymm0 -vpaddw 6112(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 8576(%rsp) -vmovdqa 8608(%rsp), %ymm0 -vpsubw 8960(%rsp), %ymm0, %ymm0 -vmovdqa 6496(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 9312(%rsp), %ymm1, %ymm14 -vpsubw 8256(%rsp), %ymm0, %ymm0 -vpaddw 6144(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 8608(%rsp) -vmovdqa 8640(%rsp), %ymm0 -vpsubw 8992(%rsp), %ymm0, %ymm0 -vmovdqa 6528(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 9344(%rsp), %ymm1, %ymm15 -vpsubw 8288(%rsp), %ymm0, %ymm0 -vpaddw 6176(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 8640(%rsp) -vmovdqa 6208(%rsp), %ymm0 -vpsubw 8320(%rsp), %ymm0, %ymm0 -vpsubw 9024(%rsp), %ymm0, %ymm0 -vpsubw 3488(%r10), %ymm0, %ymm0 -vpsubw 4896(%r10), %ymm0, %ymm0 -vmovdqa %ymm0, 4192(%r10) -vmovdqa 3520(%r10), %ymm0 -vpsubw 4224(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm6, %ymm6 -vpsubw 4928(%r10), %ymm6, %ymm6 -vpsubw 2816(%r10), %ymm0, %ymm0 -vpaddw 8000(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3520(%r10) -vmovdqa %ymm6, 4224(%r10) -vmovdqa 3552(%r10), %ymm0 -vpsubw 4256(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm7, %ymm7 -vpsubw 4960(%r10), %ymm7, %ymm7 -vpsubw 2848(%r10), %ymm0, %ymm0 -vpaddw 8032(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3552(%r10) -vmovdqa %ymm7, 4256(%r10) -vmovdqa 3584(%r10), %ymm0 -vpsubw 4288(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm8, %ymm8 -vpsubw 4992(%r10), %ymm8, %ymm8 -vpsubw 2880(%r10), %ymm0, %ymm0 -vpaddw 8064(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3584(%r10) -vmovdqa %ymm8, 4288(%r10) -vmovdqa 3616(%r10), %ymm0 -vpsubw 4320(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm9, %ymm9 -vpsubw 5024(%r10), %ymm9, %ymm9 -vpsubw 2912(%r10), %ymm0, %ymm0 -vpaddw 8096(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3616(%r10) -vmovdqa %ymm9, 4320(%r10) -vmovdqa 3648(%r10), %ymm0 -vpsubw 4352(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm10, %ymm10 -vpsubw 5056(%r10), %ymm10, %ymm10 -vpsubw 2944(%r10), %ymm0, %ymm0 -vpaddw 8128(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3648(%r10) -vmovdqa %ymm10, 4352(%r10) -vmovdqa 3680(%r10), %ymm0 -vpsubw 4384(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm11, %ymm11 -vpsubw 5088(%r10), %ymm11, %ymm11 -vpsubw 2976(%r10), %ymm0, %ymm0 -vpaddw 8160(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3680(%r10) -vmovdqa %ymm11, 4384(%r10) -vmovdqa 3712(%r10), %ymm0 -vpsubw 4416(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm12, %ymm12 -vpsubw 5120(%r10), %ymm12, %ymm12 -vpsubw 3008(%r10), %ymm0, %ymm0 -vpaddw 8192(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3712(%r10) -vmovdqa %ymm12, 4416(%r10) -vmovdqa 3744(%r10), %ymm0 -vpsubw 4448(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm13, %ymm13 -vpsubw 5152(%r10), %ymm13, %ymm13 -vpsubw 3040(%r10), %ymm0, %ymm0 -vpaddw 8224(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3744(%r10) -vmovdqa %ymm13, 4448(%r10) -vmovdqa 3776(%r10), %ymm0 -vpsubw 4480(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm14, %ymm14 -vpsubw 5184(%r10), %ymm14, %ymm14 -vpsubw 3072(%r10), %ymm0, %ymm0 -vpaddw 8256(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3776(%r10) -vmovdqa %ymm14, 4480(%r10) -vmovdqa 3808(%r10), %ymm0 -vpsubw 4512(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm15, %ymm15 -vpsubw 5216(%r10), %ymm15, %ymm15 -vpsubw 3104(%r10), %ymm0, %ymm0 -vpaddw 8288(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3808(%r10) -vmovdqa %ymm15, 4512(%r10) -vmovdqa 3840(%r10), %ymm0 -vpsubw 4544(%r10), %ymm0, %ymm0 -vmovdqa 9024(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 5248(%r10), %ymm1, %ymm1 -vpsubw 3136(%r10), %ymm0, %ymm0 -vpaddw 8320(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3840(%r10) -vmovdqa %ymm1, 4544(%r10) -vmovdqa 3872(%r10), %ymm0 -vpsubw 4576(%r10), %ymm0, %ymm0 -vmovdqa 9056(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 5280(%r10), %ymm1, %ymm1 -vpsubw 3168(%r10), %ymm0, %ymm0 -vpaddw 8352(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3872(%r10) -vmovdqa %ymm1, 4576(%r10) -vmovdqa 3904(%r10), %ymm0 -vpsubw 4608(%r10), %ymm0, %ymm0 -vmovdqa 9088(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 5312(%r10), %ymm1, %ymm1 -vpsubw 3200(%r10), %ymm0, %ymm0 -vpaddw 8384(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3904(%r10) -vmovdqa %ymm1, 4608(%r10) -vmovdqa 3936(%r10), %ymm0 -vpsubw 4640(%r10), %ymm0, %ymm0 -vmovdqa 9120(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 5344(%r10), %ymm1, %ymm1 -vpsubw 3232(%r10), %ymm0, %ymm0 -vpaddw 8416(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3936(%r10) -vmovdqa %ymm1, 4640(%r10) -vmovdqa 3968(%r10), %ymm0 -vpsubw 4672(%r10), %ymm0, %ymm0 -vmovdqa 9152(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 5376(%r10), %ymm1, %ymm1 -vpsubw 3264(%r10), %ymm0, %ymm0 -vpaddw 8448(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3968(%r10) -vmovdqa %ymm1, 4672(%r10) -vmovdqa 4000(%r10), %ymm0 -vpsubw 4704(%r10), %ymm0, %ymm0 -vmovdqa 9184(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 5408(%r10), %ymm1, %ymm1 -vpsubw 3296(%r10), %ymm0, %ymm0 -vpaddw 8480(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4000(%r10) -vmovdqa %ymm1, 4704(%r10) -vmovdqa 4032(%r10), %ymm0 -vpsubw 4736(%r10), %ymm0, %ymm0 -vmovdqa 9216(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 5440(%r10), %ymm1, %ymm1 -vpsubw 3328(%r10), %ymm0, %ymm0 -vpaddw 8512(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4032(%r10) -vmovdqa %ymm1, 4736(%r10) -vmovdqa 4064(%r10), %ymm0 -vpsubw 4768(%r10), %ymm0, %ymm0 -vmovdqa 9248(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 5472(%r10), %ymm1, %ymm1 -vpsubw 3360(%r10), %ymm0, %ymm0 -vpaddw 8544(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4064(%r10) -vmovdqa %ymm1, 4768(%r10) -vmovdqa 4096(%r10), %ymm0 -vpsubw 4800(%r10), %ymm0, %ymm0 -vmovdqa 9280(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 5504(%r10), %ymm1, %ymm1 -vpsubw 3392(%r10), %ymm0, %ymm0 -vpaddw 8576(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4096(%r10) -vmovdqa %ymm1, 4800(%r10) -vmovdqa 4128(%r10), %ymm0 -vpsubw 4832(%r10), %ymm0, %ymm0 -vmovdqa 9312(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 5536(%r10), %ymm1, %ymm1 -vpsubw 3424(%r10), %ymm0, %ymm0 -vpaddw 8608(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4128(%r10) -vmovdqa %ymm1, 4832(%r10) -vmovdqa 4160(%r10), %ymm0 -vpsubw 4864(%r10), %ymm0, %ymm0 -vmovdqa 9344(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 5568(%r10), %ymm1, %ymm1 -vpsubw 3456(%r10), %ymm0, %ymm0 -vpaddw 8640(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4160(%r10) -vmovdqa %ymm1, 4864(%r10) -vpxor %ymm1, %ymm1, %ymm1 -vmovdqa %ymm1, 5600(%r10) -subq $32, %rsp -vmovdqa 2816(%r10), %ymm0 -vmovdqa 2880(%r10), %ymm1 -vmovdqa 2944(%r10), %ymm2 -vmovdqa 3008(%r10), %ymm3 -vpunpcklwd 2848(%r10), %ymm0, %ymm4 -vpunpckhwd 2848(%r10), %ymm0, %ymm5 -vpunpcklwd 2912(%r10), %ymm1, %ymm6 -vpunpckhwd 2912(%r10), %ymm1, %ymm7 -vpunpcklwd 2976(%r10), %ymm2, %ymm8 -vpunpckhwd 2976(%r10), %ymm2, %ymm9 -vpunpcklwd 3040(%r10), %ymm3, %ymm10 -vpunpckhwd 3040(%r10), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 3072(%r10), %ymm0 -vmovdqa 3136(%r10), %ymm1 -vmovdqa 3200(%r10), %ymm2 -vmovdqa 3264(%r10), %ymm3 -vpunpcklwd 3104(%r10), %ymm0, %ymm12 -vpunpckhwd 3104(%r10), %ymm0, %ymm13 -vpunpcklwd 3168(%r10), %ymm1, %ymm14 -vpunpckhwd 3168(%r10), %ymm1, %ymm15 -vpunpcklwd 3232(%r10), %ymm2, %ymm0 -vpunpckhwd 3232(%r10), %ymm2, %ymm1 -vpunpcklwd 3296(%r10), %ymm3, %ymm2 -vpunpckhwd 3296(%r10), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 0(%r12) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 192(%r12) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 384(%r12) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 576(%r12) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 768(%r12) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 960(%r12) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 1152(%r12) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 1536(%r12) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 1728(%r12) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 1920(%r12) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 2112(%r12) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 2304(%r12) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 2496(%r12) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 2688(%r12) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 1344(%r12) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 2880(%r12) -vmovdqa 3328(%r10), %ymm0 -vmovdqa 3392(%r10), %ymm1 -vmovdqa 3456(%r10), %ymm2 -vmovdqa 3520(%r10), %ymm3 -vpunpcklwd 3360(%r10), %ymm0, %ymm4 -vpunpckhwd 3360(%r10), %ymm0, %ymm5 -vpunpcklwd 3424(%r10), %ymm1, %ymm6 -vpunpckhwd 3424(%r10), %ymm1, %ymm7 -vpunpcklwd 3488(%r10), %ymm2, %ymm8 -vpunpckhwd 3488(%r10), %ymm2, %ymm9 -vpunpcklwd 3552(%r10), %ymm3, %ymm10 -vpunpckhwd 3552(%r10), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 3584(%r10), %ymm0 -vmovdqa 3648(%r10), %ymm1 -vmovdqa 3712(%r10), %ymm2 -vmovdqa 3776(%r10), %ymm3 -vpunpcklwd 3616(%r10), %ymm0, %ymm12 -vpunpckhwd 3616(%r10), %ymm0, %ymm13 -vpunpcklwd 3680(%r10), %ymm1, %ymm14 -vpunpckhwd 3680(%r10), %ymm1, %ymm15 -vpunpcklwd 3744(%r10), %ymm2, %ymm0 -vpunpckhwd 3744(%r10), %ymm2, %ymm1 -vpunpcklwd 3808(%r10), %ymm3, %ymm2 -vpunpckhwd 3808(%r10), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 32(%r12) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 224(%r12) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 416(%r12) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 608(%r12) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 800(%r12) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 992(%r12) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 1184(%r12) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 1568(%r12) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 1760(%r12) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 1952(%r12) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 2144(%r12) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 2336(%r12) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 2528(%r12) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 2720(%r12) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 1376(%r12) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 2912(%r12) -vmovdqa 3840(%r10), %ymm0 -vmovdqa 3904(%r10), %ymm1 -vmovdqa 3968(%r10), %ymm2 -vmovdqa 4032(%r10), %ymm3 -vpunpcklwd 3872(%r10), %ymm0, %ymm4 -vpunpckhwd 3872(%r10), %ymm0, %ymm5 -vpunpcklwd 3936(%r10), %ymm1, %ymm6 -vpunpckhwd 3936(%r10), %ymm1, %ymm7 -vpunpcklwd 4000(%r10), %ymm2, %ymm8 -vpunpckhwd 4000(%r10), %ymm2, %ymm9 -vpunpcklwd 4064(%r10), %ymm3, %ymm10 -vpunpckhwd 4064(%r10), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 4096(%r10), %ymm0 -vmovdqa 4160(%r10), %ymm1 -vmovdqa 4224(%r10), %ymm2 -vmovdqa 4288(%r10), %ymm3 -vpunpcklwd 4128(%r10), %ymm0, %ymm12 -vpunpckhwd 4128(%r10), %ymm0, %ymm13 -vpunpcklwd 4192(%r10), %ymm1, %ymm14 -vpunpckhwd 4192(%r10), %ymm1, %ymm15 -vpunpcklwd 4256(%r10), %ymm2, %ymm0 -vpunpckhwd 4256(%r10), %ymm2, %ymm1 -vpunpcklwd 4320(%r10), %ymm3, %ymm2 -vpunpckhwd 4320(%r10), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 64(%r12) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 256(%r12) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 448(%r12) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 640(%r12) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 832(%r12) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 1024(%r12) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 1216(%r12) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 1600(%r12) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 1792(%r12) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 1984(%r12) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 2176(%r12) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 2368(%r12) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 2560(%r12) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 2752(%r12) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 1408(%r12) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 2944(%r12) -vmovdqa 4224(%r10), %ymm0 -vmovdqa 4288(%r10), %ymm1 -vmovdqa 4352(%r10), %ymm2 -vmovdqa 4416(%r10), %ymm3 -vpunpcklwd 4256(%r10), %ymm0, %ymm4 -vpunpckhwd 4256(%r10), %ymm0, %ymm5 -vpunpcklwd 4320(%r10), %ymm1, %ymm6 -vpunpckhwd 4320(%r10), %ymm1, %ymm7 -vpunpcklwd 4384(%r10), %ymm2, %ymm8 -vpunpckhwd 4384(%r10), %ymm2, %ymm9 -vpunpcklwd 4448(%r10), %ymm3, %ymm10 -vpunpckhwd 4448(%r10), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 4480(%r10), %ymm0 -vmovdqa 4544(%r10), %ymm1 -vmovdqa 4608(%r10), %ymm2 -vmovdqa 4672(%r10), %ymm3 -vpunpcklwd 4512(%r10), %ymm0, %ymm12 -vpunpckhwd 4512(%r10), %ymm0, %ymm13 -vpunpcklwd 4576(%r10), %ymm1, %ymm14 -vpunpckhwd 4576(%r10), %ymm1, %ymm15 -vpunpcklwd 4640(%r10), %ymm2, %ymm0 -vpunpckhwd 4640(%r10), %ymm2, %ymm1 -vpunpcklwd 4704(%r10), %ymm3, %ymm2 -vpunpckhwd 4704(%r10), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 96(%r12) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 288(%r12) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 480(%r12) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 672(%r12) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 864(%r12) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 1056(%r12) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 1248(%r12) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 1632(%r12) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 1824(%r12) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 2016(%r12) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 2208(%r12) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 2400(%r12) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 2592(%r12) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 2784(%r12) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 1440(%r12) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 2976(%r12) -vmovdqa 4736(%r10), %ymm0 -vmovdqa 4800(%r10), %ymm1 -vmovdqa 4864(%r10), %ymm2 -vmovdqa 4928(%r10), %ymm3 -vpunpcklwd 4768(%r10), %ymm0, %ymm4 -vpunpckhwd 4768(%r10), %ymm0, %ymm5 -vpunpcklwd 4832(%r10), %ymm1, %ymm6 -vpunpckhwd 4832(%r10), %ymm1, %ymm7 -vpunpcklwd 4896(%r10), %ymm2, %ymm8 -vpunpckhwd 4896(%r10), %ymm2, %ymm9 -vpunpcklwd 4960(%r10), %ymm3, %ymm10 -vpunpckhwd 4960(%r10), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 4992(%r10), %ymm0 -vmovdqa 5056(%r10), %ymm1 -vmovdqa 5120(%r10), %ymm2 -vmovdqa 5184(%r10), %ymm3 -vpunpcklwd 5024(%r10), %ymm0, %ymm12 -vpunpckhwd 5024(%r10), %ymm0, %ymm13 -vpunpcklwd 5088(%r10), %ymm1, %ymm14 -vpunpckhwd 5088(%r10), %ymm1, %ymm15 -vpunpcklwd 5152(%r10), %ymm2, %ymm0 -vpunpckhwd 5152(%r10), %ymm2, %ymm1 -vpunpcklwd 5216(%r10), %ymm3, %ymm2 -vpunpckhwd 5216(%r10), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 128(%r12) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 320(%r12) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 512(%r12) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 704(%r12) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 896(%r12) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 1088(%r12) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 1280(%r12) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 1664(%r12) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 1856(%r12) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 2048(%r12) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 2240(%r12) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 2432(%r12) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 2624(%r12) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 2816(%r12) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 1472(%r12) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 3008(%r12) -vmovdqa 5248(%r10), %ymm0 -vmovdqa 5312(%r10), %ymm1 -vmovdqa 5376(%r10), %ymm2 -vmovdqa 5440(%r10), %ymm3 -vpunpcklwd 5280(%r10), %ymm0, %ymm4 -vpunpckhwd 5280(%r10), %ymm0, %ymm5 -vpunpcklwd 5344(%r10), %ymm1, %ymm6 -vpunpckhwd 5344(%r10), %ymm1, %ymm7 -vpunpcklwd 5408(%r10), %ymm2, %ymm8 -vpunpckhwd 5408(%r10), %ymm2, %ymm9 -vpunpcklwd 5472(%r10), %ymm3, %ymm10 -vpunpckhwd 5472(%r10), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 5504(%r10), %ymm0 -vmovdqa 5568(%r10), %ymm1 -vmovdqa 5632(%r10), %ymm2 -vmovdqa 5696(%r10), %ymm3 -vpunpcklwd 5536(%r10), %ymm0, %ymm12 -vpunpckhwd 5536(%r10), %ymm0, %ymm13 -vpunpcklwd 5600(%r10), %ymm1, %ymm14 -vpunpckhwd 5600(%r10), %ymm1, %ymm15 -vpunpcklwd 5664(%r10), %ymm2, %ymm0 -vpunpckhwd 5664(%r10), %ymm2, %ymm1 -vpunpcklwd 5728(%r10), %ymm3, %ymm2 -vpunpckhwd 5728(%r10), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 160(%r12) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 352(%r12) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 544(%r12) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 736(%r12) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 928(%r12) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 1120(%r12) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 1312(%r12) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 1696(%r12) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 1888(%r12) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 2080(%r12) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 2272(%r12) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 2464(%r12) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 2656(%r12) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 2848(%r12) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 1504(%r12) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 3040(%r12) -addq $32, %rsp -add $1536, %rax -add $1536, %r11 -add $3072, %r12 -dec %ecx -jnz karatsuba_loop_1 -sub $12288, %r12 -add $9408, %rsp -subq $1280, %rsp -vmovdqa const729(%rip), %ymm15 -vmovdqa const3_inv(%rip), %ymm14 -vmovdqa const5_inv(%rip), %ymm13 -vmovdqa const9(%rip), %ymm12 -vmovdqa 96(%r12), %ymm0 -vpsubw 192(%r12), %ymm0, %ymm0 -vmovdqa 480(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 288(%r12), %ymm1, %ymm1 -vpsubw 0(%r12), %ymm0, %ymm0 -vpaddw 384(%r12), %ymm0, %ymm0 -vmovdqa 672(%r12), %ymm2 -vpsubw 768(%r12), %ymm2, %ymm2 -vmovdqa 1056(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 864(%r12), %ymm3, %ymm3 -vpsubw 576(%r12), %ymm2, %ymm2 -vpaddw 960(%r12), %ymm2, %ymm2 -vmovdqa 1248(%r12), %ymm4 -vpsubw 1344(%r12), %ymm4, %ymm4 -vmovdqa 1632(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 1440(%r12), %ymm5, %ymm5 -vpsubw 1152(%r12), %ymm4, %ymm4 -vpaddw 1536(%r12), %ymm4, %ymm4 -vpsubw 576(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 0(%r12), %ymm1, %ymm1 -vpaddw 1152(%r12), %ymm1, %ymm1 -vmovdqa 288(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 1440(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 864(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 0(%r12), %ymm8 -vmovdqa 864(%r12), %ymm9 -vmovdqa %ymm8, 0(%rsp) -vmovdqa %ymm0, 32(%rsp) -vmovdqa %ymm1, 64(%rsp) -vmovdqa %ymm7, 96(%rsp) -vmovdqa %ymm5, 128(%rsp) -vmovdqa %ymm2, 160(%rsp) -vmovdqa %ymm3, 192(%rsp) -vmovdqa %ymm9, 224(%rsp) -vmovdqa 1824(%r12), %ymm0 -vpsubw 1920(%r12), %ymm0, %ymm0 -vmovdqa 2208(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 2016(%r12), %ymm1, %ymm1 -vpsubw 1728(%r12), %ymm0, %ymm0 -vpaddw 2112(%r12), %ymm0, %ymm0 -vmovdqa 2400(%r12), %ymm2 -vpsubw 2496(%r12), %ymm2, %ymm2 -vmovdqa 2784(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 2592(%r12), %ymm3, %ymm3 -vpsubw 2304(%r12), %ymm2, %ymm2 -vpaddw 2688(%r12), %ymm2, %ymm2 -vmovdqa 2976(%r12), %ymm4 -vpsubw 3072(%r12), %ymm4, %ymm4 -vmovdqa 3360(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 3168(%r12), %ymm5, %ymm5 -vpsubw 2880(%r12), %ymm4, %ymm4 -vpaddw 3264(%r12), %ymm4, %ymm4 -vpsubw 2304(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 1728(%r12), %ymm1, %ymm1 -vpaddw 2880(%r12), %ymm1, %ymm1 -vmovdqa 2016(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 3168(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 2592(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 1728(%r12), %ymm8 -vmovdqa 2592(%r12), %ymm9 -vmovdqa %ymm8, 256(%rsp) -vmovdqa %ymm0, 288(%rsp) -vmovdqa %ymm1, 320(%rsp) -vmovdqa %ymm7, 352(%rsp) -vmovdqa %ymm5, 384(%rsp) -vmovdqa %ymm2, 416(%rsp) -vmovdqa %ymm3, 448(%rsp) -vmovdqa %ymm9, 480(%rsp) -vmovdqa 3552(%r12), %ymm0 -vpsubw 3648(%r12), %ymm0, %ymm0 -vmovdqa 3936(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 3744(%r12), %ymm1, %ymm1 -vpsubw 3456(%r12), %ymm0, %ymm0 -vpaddw 3840(%r12), %ymm0, %ymm0 -vmovdqa 4128(%r12), %ymm2 -vpsubw 4224(%r12), %ymm2, %ymm2 -vmovdqa 4512(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 4320(%r12), %ymm3, %ymm3 -vpsubw 4032(%r12), %ymm2, %ymm2 -vpaddw 4416(%r12), %ymm2, %ymm2 -vmovdqa 4704(%r12), %ymm4 -vpsubw 4800(%r12), %ymm4, %ymm4 -vmovdqa 5088(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 4896(%r12), %ymm5, %ymm5 -vpsubw 4608(%r12), %ymm4, %ymm4 -vpaddw 4992(%r12), %ymm4, %ymm4 -vpsubw 4032(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 3456(%r12), %ymm1, %ymm1 -vpaddw 4608(%r12), %ymm1, %ymm1 -vmovdqa 3744(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 4896(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 4320(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 3456(%r12), %ymm8 -vmovdqa 4320(%r12), %ymm9 -vmovdqa %ymm8, 512(%rsp) -vmovdqa %ymm0, 544(%rsp) -vmovdqa %ymm1, 576(%rsp) -vmovdqa %ymm7, 608(%rsp) -vmovdqa %ymm5, 640(%rsp) -vmovdqa %ymm2, 672(%rsp) -vmovdqa %ymm3, 704(%rsp) -vmovdqa %ymm9, 736(%rsp) -vmovdqa 5280(%r12), %ymm0 -vpsubw 5376(%r12), %ymm0, %ymm0 -vmovdqa 5664(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 5472(%r12), %ymm1, %ymm1 -vpsubw 5184(%r12), %ymm0, %ymm0 -vpaddw 5568(%r12), %ymm0, %ymm0 -vmovdqa 5856(%r12), %ymm2 -vpsubw 5952(%r12), %ymm2, %ymm2 -vmovdqa 6240(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 6048(%r12), %ymm3, %ymm3 -vpsubw 5760(%r12), %ymm2, %ymm2 -vpaddw 6144(%r12), %ymm2, %ymm2 -vmovdqa 6432(%r12), %ymm4 -vpsubw 6528(%r12), %ymm4, %ymm4 -vmovdqa 6816(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 6624(%r12), %ymm5, %ymm5 -vpsubw 6336(%r12), %ymm4, %ymm4 -vpaddw 6720(%r12), %ymm4, %ymm4 -vpsubw 5760(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 5184(%r12), %ymm1, %ymm1 -vpaddw 6336(%r12), %ymm1, %ymm1 -vmovdqa 5472(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 6624(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 6048(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 5184(%r12), %ymm8 -vmovdqa 6048(%r12), %ymm9 -vmovdqa %ymm8, 768(%rsp) -vmovdqa %ymm0, 800(%rsp) -vmovdqa %ymm1, 832(%rsp) -vmovdqa %ymm7, 864(%rsp) -vmovdqa %ymm5, 896(%rsp) -vmovdqa %ymm2, 928(%rsp) -vmovdqa %ymm3, 960(%rsp) -vmovdqa %ymm9, 992(%rsp) -vmovdqa 7008(%r12), %ymm0 -vpsubw 7104(%r12), %ymm0, %ymm0 -vmovdqa 7392(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 7200(%r12), %ymm1, %ymm1 -vpsubw 6912(%r12), %ymm0, %ymm0 -vpaddw 7296(%r12), %ymm0, %ymm0 -vmovdqa 7584(%r12), %ymm2 -vpsubw 7680(%r12), %ymm2, %ymm2 -vmovdqa 7968(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 7776(%r12), %ymm3, %ymm3 -vpsubw 7488(%r12), %ymm2, %ymm2 -vpaddw 7872(%r12), %ymm2, %ymm2 -vmovdqa 8160(%r12), %ymm4 -vpsubw 8256(%r12), %ymm4, %ymm4 -vmovdqa 8544(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 8352(%r12), %ymm5, %ymm5 -vpsubw 8064(%r12), %ymm4, %ymm4 -vpaddw 8448(%r12), %ymm4, %ymm4 -vpsubw 7488(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 6912(%r12), %ymm1, %ymm1 -vpaddw 8064(%r12), %ymm1, %ymm1 -vmovdqa 7200(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 8352(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 7776(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 6912(%r12), %ymm8 -vmovdqa 7776(%r12), %ymm9 -vmovdqa %ymm8, 1024(%rsp) -vmovdqa %ymm0, 1056(%rsp) -vmovdqa %ymm1, 1088(%rsp) -vmovdqa %ymm7, 1120(%rsp) -vmovdqa %ymm5, 1152(%rsp) -vmovdqa %ymm2, 1184(%rsp) -vmovdqa %ymm3, 1216(%rsp) -vmovdqa %ymm9, 1248(%rsp) -vmovdqa 8736(%r12), %ymm0 -vpsubw 8832(%r12), %ymm0, %ymm0 -vmovdqa 9120(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 8928(%r12), %ymm1, %ymm1 -vpsubw 8640(%r12), %ymm0, %ymm0 -vpaddw 9024(%r12), %ymm0, %ymm0 -vmovdqa 9312(%r12), %ymm2 -vpsubw 9408(%r12), %ymm2, %ymm2 -vmovdqa 9696(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 9504(%r12), %ymm3, %ymm3 -vpsubw 9216(%r12), %ymm2, %ymm2 -vpaddw 9600(%r12), %ymm2, %ymm2 -vmovdqa 9888(%r12), %ymm4 -vpsubw 9984(%r12), %ymm4, %ymm4 -vmovdqa 10272(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 10080(%r12), %ymm5, %ymm5 -vpsubw 9792(%r12), %ymm4, %ymm4 -vpaddw 10176(%r12), %ymm4, %ymm4 -vpsubw 9216(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 8640(%r12), %ymm1, %ymm1 -vpaddw 9792(%r12), %ymm1, %ymm1 -vmovdqa 8928(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 10080(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 9504(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 8640(%r12), %ymm8 -vmovdqa 9504(%r12), %ymm9 -vmovdqa %ymm8, 1280(%rsp) -vmovdqa %ymm0, 1312(%rsp) -vmovdqa %ymm1, 1344(%rsp) -vmovdqa %ymm7, 1376(%rsp) -vmovdqa %ymm5, 1408(%rsp) -vmovdqa %ymm2, 1440(%rsp) -vmovdqa %ymm3, 1472(%rsp) -vmovdqa %ymm9, 1504(%rsp) -vmovdqa 10464(%r12), %ymm0 -vpsubw 10560(%r12), %ymm0, %ymm0 -vmovdqa 10848(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 10656(%r12), %ymm1, %ymm1 -vpsubw 10368(%r12), %ymm0, %ymm0 -vpaddw 10752(%r12), %ymm0, %ymm0 -vmovdqa 11040(%r12), %ymm2 -vpsubw 11136(%r12), %ymm2, %ymm2 -vmovdqa 11424(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 11232(%r12), %ymm3, %ymm3 -vpsubw 10944(%r12), %ymm2, %ymm2 -vpaddw 11328(%r12), %ymm2, %ymm2 -vmovdqa 11616(%r12), %ymm4 -vpsubw 11712(%r12), %ymm4, %ymm4 -vmovdqa 12000(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 11808(%r12), %ymm5, %ymm5 -vpsubw 11520(%r12), %ymm4, %ymm4 -vpaddw 11904(%r12), %ymm4, %ymm4 -vpsubw 10944(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 10368(%r12), %ymm1, %ymm1 -vpaddw 11520(%r12), %ymm1, %ymm1 -vmovdqa 10656(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 11808(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 11232(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 10368(%r12), %ymm8 -vmovdqa 11232(%r12), %ymm9 -vmovdqa %ymm8, 1536(%rsp) -vmovdqa %ymm0, 1568(%rsp) -vmovdqa %ymm1, 1600(%rsp) -vmovdqa %ymm7, 1632(%rsp) -vmovdqa %ymm5, 1664(%rsp) -vmovdqa %ymm2, 1696(%rsp) -vmovdqa %ymm3, 1728(%rsp) -vmovdqa %ymm9, 1760(%rsp) -vmovdqa 0(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm10 -vpunpckhwd const0(%rip), %ymm11, %ymm9 -vpslld $1, %ymm10, %ymm10 -vpslld $1, %ymm9, %ymm9 -vmovdqa 256(%rsp), %ymm8 -vpunpcklwd const0(%rip), %ymm8, %ymm7 -vpunpckhwd const0(%rip), %ymm8, %ymm8 -vmovdqa 512(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm7, %ymm4 -vpaddd %ymm6, %ymm8, %ymm3 -vpsubd %ymm10, %ymm4, %ymm4 -vpsubd %ymm9, %ymm3, %ymm3 -vpsubd %ymm5, %ymm7, %ymm5 -vpsubd %ymm6, %ymm8, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1536(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm8 -vpunpckhwd const0(%rip), %ymm5, %ymm7 -vpslld $1, %ymm8, %ymm8 -vpslld $1, %ymm7, %ymm7 -vpsubd %ymm8, %ymm4, %ymm4 -vpsubd %ymm7, %ymm3, %ymm3 -vpsrld $1, %ymm4, %ymm4 -vpsrld $1, %ymm3, %ymm3 -vpand mask32_to_16(%rip), %ymm4, %ymm4 -vpand mask32_to_16(%rip), %ymm3, %ymm3 -vpackusdw %ymm3, %ymm4, %ymm3 -vmovdqa 768(%rsp), %ymm4 -vpaddw 1024(%rsp), %ymm4, %ymm7 -vpsubw 1024(%rsp), %ymm4, %ymm4 -vpsrlw $2, %ymm4, %ymm4 -vpsubw %ymm6, %ymm4, %ymm4 -vpmullw %ymm14, %ymm4, %ymm4 -vpsllw $1, %ymm11, %ymm8 -vpsubw %ymm8, %ymm7, %ymm8 -vpsllw $7, %ymm5, %ymm7 -vpsubw %ymm7, %ymm8, %ymm7 -vpsrlw $3, %ymm7, %ymm7 -vpsubw %ymm3, %ymm7, %ymm7 -vmovdqa 1280(%rsp), %ymm8 -vpsubw %ymm11, %ymm8, %ymm8 -vpmullw %ymm15, %ymm5, %ymm9 -vpsubw %ymm9, %ymm8, %ymm9 -vpmullw %ymm14, %ymm7, %ymm7 -vpsubw %ymm7, %ymm3, %ymm3 -vpmullw %ymm12, %ymm7, %ymm8 -vpaddw %ymm8, %ymm3, %ymm8 -vpmullw %ymm12, %ymm8, %ymm8 -vpsubw %ymm8, %ymm9, %ymm8 -vpmullw %ymm14, %ymm8, %ymm8 -vpsubw %ymm6, %ymm8, %ymm8 -vpsrlw $3, %ymm8, %ymm8 -vpsubw %ymm4, %ymm8, %ymm8 -vpsubw %ymm8, %ymm4, %ymm4 -vpsubw %ymm4, %ymm6, %ymm6 -vpmullw %ymm13, %ymm8, %ymm8 -vpsubw %ymm8, %ymm6, %ymm6 -vmovdqu 0(%rdi), %ymm9 -vpaddw %ymm9, %ymm11, %ymm9 -vmovdqu %ymm9, 0(%rdi) -vmovdqu 352(%rdi), %ymm9 -vpaddw %ymm9, %ymm6, %ymm9 -vmovdqu %ymm9, 352(%rdi) -vmovdqu 704(%rdi), %ymm9 -vpaddw %ymm9, %ymm3, %ymm9 -vmovdqu %ymm9, 704(%rdi) -vmovdqu 1056(%rdi), %ymm9 -vpaddw %ymm9, %ymm4, %ymm9 -vmovdqu %ymm9, 1056(%rdi) -vmovdqu 54(%rdi), %ymm9 -vpaddw %ymm9, %ymm7, %ymm9 -vmovdqu %ymm9, 54(%rdi) -vmovdqu 406(%rdi), %ymm9 -vpaddw %ymm9, %ymm8, %ymm9 -vmovdqu %ymm9, 406(%rdi) -vmovdqu 758(%rdi), %ymm9 -vpaddw %ymm9, %ymm5, %ymm9 -vmovdqu %ymm9, 758(%rdi) -vmovdqa 32(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm8 -vpunpckhwd const0(%rip), %ymm5, %ymm7 -vpslld $1, %ymm8, %ymm8 -vpslld $1, %ymm7, %ymm7 -vmovdqa 288(%rsp), %ymm4 -vpunpcklwd const0(%rip), %ymm4, %ymm3 -vpunpckhwd const0(%rip), %ymm4, %ymm4 -vmovdqa 544(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm3, %ymm9 -vpaddd %ymm6, %ymm4, %ymm10 -vpsubd %ymm8, %ymm9, %ymm9 -vpsubd %ymm7, %ymm10, %ymm10 -vpsubd %ymm11, %ymm3, %ymm11 -vpsubd %ymm6, %ymm4, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1568(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm4 -vpunpckhwd const0(%rip), %ymm11, %ymm3 -vpslld $1, %ymm4, %ymm4 -vpslld $1, %ymm3, %ymm3 -vpsubd %ymm4, %ymm9, %ymm9 -vpsubd %ymm3, %ymm10, %ymm10 -vpsrld $1, %ymm9, %ymm9 -vpsrld $1, %ymm10, %ymm10 -vpand mask32_to_16(%rip), %ymm9, %ymm9 -vpand mask32_to_16(%rip), %ymm10, %ymm10 -vpackusdw %ymm10, %ymm9, %ymm10 -vmovdqa 800(%rsp), %ymm9 -vpaddw 1056(%rsp), %ymm9, %ymm3 -vpsubw 1056(%rsp), %ymm9, %ymm9 -vpsrlw $2, %ymm9, %ymm9 -vpsubw %ymm6, %ymm9, %ymm9 -vpmullw %ymm14, %ymm9, %ymm9 -vpsllw $1, %ymm5, %ymm4 -vpsubw %ymm4, %ymm3, %ymm4 -vpsllw $7, %ymm11, %ymm3 -vpsubw %ymm3, %ymm4, %ymm3 -vpsrlw $3, %ymm3, %ymm3 -vpsubw %ymm10, %ymm3, %ymm3 -vmovdqa 1312(%rsp), %ymm4 -vpsubw %ymm5, %ymm4, %ymm4 -vpmullw %ymm15, %ymm11, %ymm7 -vpsubw %ymm7, %ymm4, %ymm7 -vpmullw %ymm14, %ymm3, %ymm3 -vpsubw %ymm3, %ymm10, %ymm10 -vpmullw %ymm12, %ymm3, %ymm4 -vpaddw %ymm4, %ymm10, %ymm4 -vpmullw %ymm12, %ymm4, %ymm4 -vpsubw %ymm4, %ymm7, %ymm4 -vpmullw %ymm14, %ymm4, %ymm4 -vpsubw %ymm6, %ymm4, %ymm4 -vpsrlw $3, %ymm4, %ymm4 -vpsubw %ymm9, %ymm4, %ymm4 -vpsubw %ymm4, %ymm9, %ymm9 -vpsubw %ymm9, %ymm6, %ymm6 -vpmullw %ymm13, %ymm4, %ymm4 -vpsubw %ymm4, %ymm6, %ymm6 -vmovdqu 88(%rdi), %ymm7 -vpaddw %ymm7, %ymm5, %ymm7 -vmovdqu %ymm7, 88(%rdi) -vmovdqu 440(%rdi), %ymm7 -vpaddw %ymm7, %ymm6, %ymm7 -vmovdqu %ymm7, 440(%rdi) -vmovdqu 792(%rdi), %ymm7 -vpaddw %ymm7, %ymm10, %ymm7 -vmovdqu %ymm7, 792(%rdi) -vmovdqu 1144(%rdi), %ymm7 -vpaddw %ymm7, %ymm9, %ymm7 -vmovdqu %ymm7, 1144(%rdi) -vmovdqu 142(%rdi), %ymm7 -vpaddw %ymm7, %ymm3, %ymm7 -vmovdqu %ymm7, 142(%rdi) -vmovdqu 494(%rdi), %ymm7 -vpaddw %ymm7, %ymm4, %ymm7 -vmovdqu %ymm7, 494(%rdi) -vmovdqu 846(%rdi), %ymm7 -vpaddw %ymm7, %ymm11, %ymm7 -vmovdqu %ymm7, 846(%rdi) -vmovdqa 64(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm4 -vpunpckhwd const0(%rip), %ymm11, %ymm3 -vpslld $1, %ymm4, %ymm4 -vpslld $1, %ymm3, %ymm3 -vmovdqa 320(%rsp), %ymm9 -vpunpcklwd const0(%rip), %ymm9, %ymm10 -vpunpckhwd const0(%rip), %ymm9, %ymm9 -vmovdqa 576(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm10, %ymm7 -vpaddd %ymm6, %ymm9, %ymm8 -vpsubd %ymm4, %ymm7, %ymm7 -vpsubd %ymm3, %ymm8, %ymm8 -vpsubd %ymm5, %ymm10, %ymm5 -vpsubd %ymm6, %ymm9, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1600(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm9 -vpunpckhwd const0(%rip), %ymm5, %ymm10 -vpslld $1, %ymm9, %ymm9 -vpslld $1, %ymm10, %ymm10 -vpsubd %ymm9, %ymm7, %ymm7 -vpsubd %ymm10, %ymm8, %ymm8 -vpsrld $1, %ymm7, %ymm7 -vpsrld $1, %ymm8, %ymm8 -vpand mask32_to_16(%rip), %ymm7, %ymm7 -vpand mask32_to_16(%rip), %ymm8, %ymm8 -vpackusdw %ymm8, %ymm7, %ymm8 -vmovdqa 832(%rsp), %ymm7 -vpaddw 1088(%rsp), %ymm7, %ymm10 -vpsubw 1088(%rsp), %ymm7, %ymm7 -vpsrlw $2, %ymm7, %ymm7 -vpsubw %ymm6, %ymm7, %ymm7 -vpmullw %ymm14, %ymm7, %ymm7 -vpsllw $1, %ymm11, %ymm9 -vpsubw %ymm9, %ymm10, %ymm9 -vpsllw $7, %ymm5, %ymm10 -vpsubw %ymm10, %ymm9, %ymm10 -vpsrlw $3, %ymm10, %ymm10 -vpsubw %ymm8, %ymm10, %ymm10 -vmovdqa 1344(%rsp), %ymm9 -vpsubw %ymm11, %ymm9, %ymm9 -vpmullw %ymm15, %ymm5, %ymm3 -vpsubw %ymm3, %ymm9, %ymm3 -vpmullw %ymm14, %ymm10, %ymm10 -vpsubw %ymm10, %ymm8, %ymm8 -vpmullw %ymm12, %ymm10, %ymm9 -vpaddw %ymm9, %ymm8, %ymm9 -vpmullw %ymm12, %ymm9, %ymm9 -vpsubw %ymm9, %ymm3, %ymm9 -vpmullw %ymm14, %ymm9, %ymm9 -vpsubw %ymm6, %ymm9, %ymm9 -vpsrlw $3, %ymm9, %ymm9 -vpsubw %ymm7, %ymm9, %ymm9 -vpsubw %ymm9, %ymm7, %ymm7 -vpsubw %ymm7, %ymm6, %ymm6 -vpmullw %ymm13, %ymm9, %ymm9 -vpsubw %ymm9, %ymm6, %ymm6 -vmovdqu 176(%rdi), %ymm3 -vpaddw %ymm3, %ymm11, %ymm3 -vmovdqu %ymm3, 176(%rdi) -vmovdqu 528(%rdi), %ymm3 -vpaddw %ymm3, %ymm6, %ymm3 -vmovdqu %ymm3, 528(%rdi) -vmovdqu 880(%rdi), %ymm3 -vpaddw %ymm3, %ymm8, %ymm3 -vmovdqu %ymm3, 880(%rdi) -vmovdqu 1232(%rdi), %ymm3 -vpaddw %ymm3, %ymm7, %ymm3 -vmovdqu %ymm3, 1232(%rdi) -vmovdqu 230(%rdi), %ymm3 -vpaddw %ymm3, %ymm10, %ymm3 -vmovdqu %ymm3, 230(%rdi) -vmovdqu 582(%rdi), %ymm3 -vpaddw %ymm3, %ymm9, %ymm3 -vmovdqu %ymm3, 582(%rdi) -vmovdqu 934(%rdi), %ymm3 -vpaddw %ymm3, %ymm5, %ymm3 -vmovdqu %ymm3, 934(%rdi) -vmovdqa 96(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm9 -vpunpckhwd const0(%rip), %ymm5, %ymm10 -vpslld $1, %ymm9, %ymm9 -vpslld $1, %ymm10, %ymm10 -vmovdqa 352(%rsp), %ymm7 -vpunpcklwd const0(%rip), %ymm7, %ymm8 -vpunpckhwd const0(%rip), %ymm7, %ymm7 -vmovdqa 608(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm8, %ymm3 -vpaddd %ymm6, %ymm7, %ymm4 -vpsubd %ymm9, %ymm3, %ymm3 -vpsubd %ymm10, %ymm4, %ymm4 -vpsubd %ymm11, %ymm8, %ymm11 -vpsubd %ymm6, %ymm7, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1632(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm7 -vpunpckhwd const0(%rip), %ymm11, %ymm8 -vpslld $1, %ymm7, %ymm7 -vpslld $1, %ymm8, %ymm8 -vpsubd %ymm7, %ymm3, %ymm3 -vpsubd %ymm8, %ymm4, %ymm4 -vpsrld $1, %ymm3, %ymm3 -vpsrld $1, %ymm4, %ymm4 -vpand mask32_to_16(%rip), %ymm3, %ymm3 -vpand mask32_to_16(%rip), %ymm4, %ymm4 -vpackusdw %ymm4, %ymm3, %ymm4 -vmovdqa 864(%rsp), %ymm3 -vpaddw 1120(%rsp), %ymm3, %ymm8 -vpsubw 1120(%rsp), %ymm3, %ymm3 -vpsrlw $2, %ymm3, %ymm3 -vpsubw %ymm6, %ymm3, %ymm3 -vpmullw %ymm14, %ymm3, %ymm3 -vpsllw $1, %ymm5, %ymm7 -vpsubw %ymm7, %ymm8, %ymm7 -vpsllw $7, %ymm11, %ymm8 -vpsubw %ymm8, %ymm7, %ymm8 -vpsrlw $3, %ymm8, %ymm8 -vpsubw %ymm4, %ymm8, %ymm8 -vmovdqa 1376(%rsp), %ymm7 -vpsubw %ymm5, %ymm7, %ymm7 -vpmullw %ymm15, %ymm11, %ymm10 -vpsubw %ymm10, %ymm7, %ymm10 -vpmullw %ymm14, %ymm8, %ymm8 -vpsubw %ymm8, %ymm4, %ymm4 -vpmullw %ymm12, %ymm8, %ymm7 -vpaddw %ymm7, %ymm4, %ymm7 -vpmullw %ymm12, %ymm7, %ymm7 -vpsubw %ymm7, %ymm10, %ymm7 -vpmullw %ymm14, %ymm7, %ymm7 -vpsubw %ymm6, %ymm7, %ymm7 -vpsrlw $3, %ymm7, %ymm7 -vpsubw %ymm3, %ymm7, %ymm7 -vpsubw %ymm7, %ymm3, %ymm3 -vpsubw %ymm3, %ymm6, %ymm6 -vpmullw %ymm13, %ymm7, %ymm7 -vpsubw %ymm7, %ymm6, %ymm6 -vmovdqu 264(%rdi), %ymm10 -vpaddw %ymm10, %ymm5, %ymm10 -vmovdqu %ymm10, 264(%rdi) -vmovdqu 616(%rdi), %ymm10 -vpaddw %ymm10, %ymm6, %ymm10 -vmovdqu %ymm10, 616(%rdi) -vmovdqu 968(%rdi), %ymm10 -vpaddw %ymm10, %ymm4, %ymm10 -vmovdqu %ymm10, 968(%rdi) -vmovdqu 1320(%rdi), %ymm10 -vpaddw %ymm10, %ymm3, %ymm10 -vmovdqu %ymm10, 1320(%rdi) -vmovdqu 318(%rdi), %ymm10 -vpaddw %ymm10, %ymm8, %ymm10 -vmovdqu %ymm10, 318(%rdi) -vmovdqu 670(%rdi), %ymm10 -vpaddw %ymm10, %ymm7, %ymm10 -vmovdqu %ymm10, 670(%rdi) -vmovdqu 1022(%rdi), %ymm10 -vpaddw %ymm10, %ymm11, %ymm10 -vmovdqu %ymm10, 1022(%rdi) -vmovdqa 128(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm7 -vpunpckhwd const0(%rip), %ymm11, %ymm8 -vpslld $1, %ymm7, %ymm7 -vpslld $1, %ymm8, %ymm8 -vmovdqa 384(%rsp), %ymm3 -vpunpcklwd const0(%rip), %ymm3, %ymm4 -vpunpckhwd const0(%rip), %ymm3, %ymm3 -vmovdqa 640(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm4, %ymm10 -vpaddd %ymm6, %ymm3, %ymm9 -vpsubd %ymm7, %ymm10, %ymm10 -vpsubd %ymm8, %ymm9, %ymm9 -vpsubd %ymm5, %ymm4, %ymm5 -vpsubd %ymm6, %ymm3, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1664(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm3 -vpunpckhwd const0(%rip), %ymm5, %ymm4 -vpslld $1, %ymm3, %ymm3 -vpslld $1, %ymm4, %ymm4 -vpsubd %ymm3, %ymm10, %ymm10 -vpsubd %ymm4, %ymm9, %ymm9 -vpsrld $1, %ymm10, %ymm10 -vpsrld $1, %ymm9, %ymm9 -vpand mask32_to_16(%rip), %ymm10, %ymm10 -vpand mask32_to_16(%rip), %ymm9, %ymm9 -vpackusdw %ymm9, %ymm10, %ymm9 -vmovdqa 896(%rsp), %ymm10 -vpaddw 1152(%rsp), %ymm10, %ymm4 -vpsubw 1152(%rsp), %ymm10, %ymm10 -vpsrlw $2, %ymm10, %ymm10 -vpsubw %ymm6, %ymm10, %ymm10 -vpmullw %ymm14, %ymm10, %ymm10 -vpsllw $1, %ymm11, %ymm3 -vpsubw %ymm3, %ymm4, %ymm3 -vpsllw $7, %ymm5, %ymm4 -vpsubw %ymm4, %ymm3, %ymm4 -vpsrlw $3, %ymm4, %ymm4 -vpsubw %ymm9, %ymm4, %ymm4 -vmovdqa 1408(%rsp), %ymm3 -vpsubw %ymm11, %ymm3, %ymm3 -vpmullw %ymm15, %ymm5, %ymm8 -vpsubw %ymm8, %ymm3, %ymm8 -vpmullw %ymm14, %ymm4, %ymm4 -vpsubw %ymm4, %ymm9, %ymm9 -vpmullw %ymm12, %ymm4, %ymm3 -vpaddw %ymm3, %ymm9, %ymm3 -vpmullw %ymm12, %ymm3, %ymm3 -vpsubw %ymm3, %ymm8, %ymm3 -vpmullw %ymm14, %ymm3, %ymm3 -vpsubw %ymm6, %ymm3, %ymm3 -vpsrlw $3, %ymm3, %ymm3 -vpsubw %ymm10, %ymm3, %ymm3 -vpsubw %ymm3, %ymm10, %ymm10 -vpsubw %ymm10, %ymm6, %ymm6 -vpmullw %ymm13, %ymm3, %ymm3 -vpsubw %ymm3, %ymm6, %ymm6 -vmovdqu 352(%rdi), %ymm8 -vpaddw %ymm8, %ymm11, %ymm8 -vmovdqu %ymm8, 352(%rdi) -vmovdqu 704(%rdi), %ymm8 -vpaddw %ymm8, %ymm6, %ymm8 -vmovdqu %ymm8, 704(%rdi) -vmovdqu 1056(%rdi), %ymm8 -vpaddw %ymm8, %ymm9, %ymm8 -vmovdqu %ymm8, 1056(%rdi) -vmovdqu 54(%rdi), %ymm8 -vpaddw %ymm8, %ymm10, %ymm8 -vmovdqu %ymm8, 54(%rdi) -vmovdqu 406(%rdi), %ymm8 -vpaddw %ymm8, %ymm4, %ymm8 -vmovdqu %ymm8, 406(%rdi) -vmovdqu 758(%rdi), %ymm8 -vpaddw %ymm8, %ymm3, %ymm8 -vmovdqu %ymm8, 758(%rdi) -vmovdqu 1110(%rdi), %ymm8 -vpaddw %ymm8, %ymm5, %ymm8 -vmovdqu %ymm8, 1110(%rdi) -vmovdqa 160(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm3 -vpunpckhwd const0(%rip), %ymm5, %ymm4 -vpslld $1, %ymm3, %ymm3 -vpslld $1, %ymm4, %ymm4 -vmovdqa 416(%rsp), %ymm10 -vpunpcklwd const0(%rip), %ymm10, %ymm9 -vpunpckhwd const0(%rip), %ymm10, %ymm10 -vmovdqa 672(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm9, %ymm8 -vpaddd %ymm6, %ymm10, %ymm7 -vpsubd %ymm3, %ymm8, %ymm8 -vpsubd %ymm4, %ymm7, %ymm7 -vpsubd %ymm11, %ymm9, %ymm11 -vpsubd %ymm6, %ymm10, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1696(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm10 -vpunpckhwd const0(%rip), %ymm11, %ymm9 -vpslld $1, %ymm10, %ymm10 -vpslld $1, %ymm9, %ymm9 -vpsubd %ymm10, %ymm8, %ymm8 -vpsubd %ymm9, %ymm7, %ymm7 -vpsrld $1, %ymm8, %ymm8 -vpsrld $1, %ymm7, %ymm7 -vpand mask32_to_16(%rip), %ymm8, %ymm8 -vpand mask32_to_16(%rip), %ymm7, %ymm7 -vpackusdw %ymm7, %ymm8, %ymm7 -vmovdqa 928(%rsp), %ymm8 -vpaddw 1184(%rsp), %ymm8, %ymm9 -vpsubw 1184(%rsp), %ymm8, %ymm8 -vpsrlw $2, %ymm8, %ymm8 -vpsubw %ymm6, %ymm8, %ymm8 -vpmullw %ymm14, %ymm8, %ymm8 -vpsllw $1, %ymm5, %ymm10 -vpsubw %ymm10, %ymm9, %ymm10 -vpsllw $7, %ymm11, %ymm9 -vpsubw %ymm9, %ymm10, %ymm9 -vpsrlw $3, %ymm9, %ymm9 -vpsubw %ymm7, %ymm9, %ymm9 -vmovdqa 1440(%rsp), %ymm10 -vpsubw %ymm5, %ymm10, %ymm10 -vpmullw %ymm15, %ymm11, %ymm4 -vpsubw %ymm4, %ymm10, %ymm4 -vpmullw %ymm14, %ymm9, %ymm9 -vpsubw %ymm9, %ymm7, %ymm7 -vpmullw %ymm12, %ymm9, %ymm10 -vpaddw %ymm10, %ymm7, %ymm10 -vpmullw %ymm12, %ymm10, %ymm10 -vpsubw %ymm10, %ymm4, %ymm10 -vpmullw %ymm14, %ymm10, %ymm10 -vpsubw %ymm6, %ymm10, %ymm10 -vpsrlw $3, %ymm10, %ymm10 -vpsubw %ymm8, %ymm10, %ymm10 -vpsubw %ymm10, %ymm8, %ymm8 -vpsubw %ymm8, %ymm6, %ymm6 -vpmullw %ymm13, %ymm10, %ymm10 -vpsubw %ymm10, %ymm6, %ymm6 -vmovdqu 440(%rdi), %ymm4 -vpaddw %ymm4, %ymm5, %ymm4 -vmovdqu %ymm4, 440(%rdi) -vmovdqu 792(%rdi), %ymm4 -vpaddw %ymm4, %ymm6, %ymm4 -vmovdqu %ymm4, 792(%rdi) -vmovdqu 1144(%rdi), %ymm4 -vpaddw %ymm4, %ymm7, %ymm4 -vmovdqu %ymm4, 1144(%rdi) -vmovdqu 142(%rdi), %ymm4 -vpaddw %ymm4, %ymm8, %ymm4 -vmovdqu %ymm4, 142(%rdi) -vmovdqu 494(%rdi), %ymm4 -vpaddw %ymm4, %ymm9, %ymm4 -vmovdqu %ymm4, 494(%rdi) -vmovdqu 846(%rdi), %ymm4 -vpaddw %ymm4, %ymm10, %ymm4 -vmovdqu %ymm4, 846(%rdi) -vmovdqu 1198(%rdi), %ymm4 -vpaddw %ymm4, %ymm11, %ymm4 -vmovdqu %ymm4, 1198(%rdi) -vmovdqa 192(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm10 -vpunpckhwd const0(%rip), %ymm11, %ymm9 -vpslld $1, %ymm10, %ymm10 -vpslld $1, %ymm9, %ymm9 -vmovdqa 448(%rsp), %ymm8 -vpunpcklwd const0(%rip), %ymm8, %ymm7 -vpunpckhwd const0(%rip), %ymm8, %ymm8 -vmovdqa 704(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm7, %ymm4 -vpaddd %ymm6, %ymm8, %ymm3 -vpsubd %ymm10, %ymm4, %ymm4 -vpsubd %ymm9, %ymm3, %ymm3 -vpsubd %ymm5, %ymm7, %ymm5 -vpsubd %ymm6, %ymm8, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1728(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm8 -vpunpckhwd const0(%rip), %ymm5, %ymm7 -vpslld $1, %ymm8, %ymm8 -vpslld $1, %ymm7, %ymm7 -vpsubd %ymm8, %ymm4, %ymm4 -vpsubd %ymm7, %ymm3, %ymm3 -vpsrld $1, %ymm4, %ymm4 -vpsrld $1, %ymm3, %ymm3 -vpand mask32_to_16(%rip), %ymm4, %ymm4 -vpand mask32_to_16(%rip), %ymm3, %ymm3 -vpackusdw %ymm3, %ymm4, %ymm3 -vmovdqa 960(%rsp), %ymm4 -vpaddw 1216(%rsp), %ymm4, %ymm7 -vpsubw 1216(%rsp), %ymm4, %ymm4 -vpsrlw $2, %ymm4, %ymm4 -vpsubw %ymm6, %ymm4, %ymm4 -vpmullw %ymm14, %ymm4, %ymm4 -vpsllw $1, %ymm11, %ymm8 -vpsubw %ymm8, %ymm7, %ymm8 -vpsllw $7, %ymm5, %ymm7 -vpsubw %ymm7, %ymm8, %ymm7 -vpsrlw $3, %ymm7, %ymm7 -vpsubw %ymm3, %ymm7, %ymm7 -vmovdqa 1472(%rsp), %ymm8 -vpsubw %ymm11, %ymm8, %ymm8 -vpmullw %ymm15, %ymm5, %ymm9 -vpsubw %ymm9, %ymm8, %ymm9 -vpmullw %ymm14, %ymm7, %ymm7 -vpsubw %ymm7, %ymm3, %ymm3 -vpmullw %ymm12, %ymm7, %ymm8 -vpaddw %ymm8, %ymm3, %ymm8 -vpmullw %ymm12, %ymm8, %ymm8 -vpsubw %ymm8, %ymm9, %ymm8 -vpmullw %ymm14, %ymm8, %ymm8 -vpsubw %ymm6, %ymm8, %ymm8 -vpsrlw $3, %ymm8, %ymm8 -vpsubw %ymm4, %ymm8, %ymm8 -vpsubw %ymm8, %ymm4, %ymm4 -vpsubw %ymm4, %ymm6, %ymm6 -vpmullw %ymm13, %ymm8, %ymm8 -vpsubw %ymm8, %ymm6, %ymm6 -vmovdqu 528(%rdi), %ymm9 -vpaddw %ymm9, %ymm11, %ymm9 -vmovdqu %ymm9, 528(%rdi) -vmovdqu 880(%rdi), %ymm9 -vpaddw %ymm9, %ymm6, %ymm9 -vmovdqu %ymm9, 880(%rdi) -vmovdqu 1232(%rdi), %ymm9 -vpaddw %ymm9, %ymm3, %ymm9 -vmovdqu %ymm9, 1232(%rdi) -vmovdqu 230(%rdi), %ymm9 -vpaddw %ymm9, %ymm4, %ymm9 -vmovdqu %ymm9, 230(%rdi) -vmovdqu 582(%rdi), %ymm9 -vpaddw %ymm9, %ymm7, %ymm9 -vmovdqu %ymm9, 582(%rdi) -vmovdqu 934(%rdi), %ymm9 -vpaddw %ymm9, %ymm8, %ymm9 -vmovdqu %ymm9, 934(%rdi) -vmovdqu 1286(%rdi), %ymm9 -vpaddw %ymm9, %ymm5, %ymm9 -vmovdqu %ymm9, 1286(%rdi) -vmovdqa 224(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm8 -vpunpckhwd const0(%rip), %ymm5, %ymm7 -vpslld $1, %ymm8, %ymm8 -vpslld $1, %ymm7, %ymm7 -vmovdqa 480(%rsp), %ymm4 -vpunpcklwd const0(%rip), %ymm4, %ymm3 -vpunpckhwd const0(%rip), %ymm4, %ymm4 -vmovdqa 736(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm3, %ymm9 -vpaddd %ymm6, %ymm4, %ymm10 -vpsubd %ymm8, %ymm9, %ymm9 -vpsubd %ymm7, %ymm10, %ymm10 -vpsubd %ymm11, %ymm3, %ymm11 -vpsubd %ymm6, %ymm4, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1760(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm4 -vpunpckhwd const0(%rip), %ymm11, %ymm3 -vpslld $1, %ymm4, %ymm4 -vpslld $1, %ymm3, %ymm3 -vpsubd %ymm4, %ymm9, %ymm9 -vpsubd %ymm3, %ymm10, %ymm10 -vpsrld $1, %ymm9, %ymm9 -vpsrld $1, %ymm10, %ymm10 -vpand mask32_to_16(%rip), %ymm9, %ymm9 -vpand mask32_to_16(%rip), %ymm10, %ymm10 -vpackusdw %ymm10, %ymm9, %ymm10 -vmovdqa 992(%rsp), %ymm9 -vpaddw 1248(%rsp), %ymm9, %ymm3 -vpsubw 1248(%rsp), %ymm9, %ymm9 -vpsrlw $2, %ymm9, %ymm9 -vpsubw %ymm6, %ymm9, %ymm9 -vpmullw %ymm14, %ymm9, %ymm9 -vpsllw $1, %ymm5, %ymm4 -vpsubw %ymm4, %ymm3, %ymm4 -vpsllw $7, %ymm11, %ymm3 -vpsubw %ymm3, %ymm4, %ymm3 -vpsrlw $3, %ymm3, %ymm3 -vpsubw %ymm10, %ymm3, %ymm3 -vmovdqa 1504(%rsp), %ymm4 -vpsubw %ymm5, %ymm4, %ymm4 -vpmullw %ymm15, %ymm11, %ymm7 -vpsubw %ymm7, %ymm4, %ymm7 -vpmullw %ymm14, %ymm3, %ymm3 -vpsubw %ymm3, %ymm10, %ymm10 -vpmullw %ymm12, %ymm3, %ymm4 -vpaddw %ymm4, %ymm10, %ymm4 -vpmullw %ymm12, %ymm4, %ymm4 -vpsubw %ymm4, %ymm7, %ymm4 -vpmullw %ymm14, %ymm4, %ymm4 -vpsubw %ymm6, %ymm4, %ymm4 -vpsrlw $3, %ymm4, %ymm4 -vpsubw %ymm9, %ymm4, %ymm4 -vpsubw %ymm4, %ymm9, %ymm9 -vpsubw %ymm9, %ymm6, %ymm6 -vpmullw %ymm13, %ymm4, %ymm4 -vpsubw %ymm4, %ymm6, %ymm6 -vmovdqu 616(%rdi), %ymm7 -vpaddw %ymm7, %ymm5, %ymm7 -vmovdqu %ymm7, 616(%rdi) -vmovdqu 968(%rdi), %ymm7 -vpaddw %ymm7, %ymm6, %ymm7 -vmovdqu %ymm7, 968(%rdi) -vmovdqu 1320(%rdi), %ymm7 -vpaddw %ymm7, %ymm10, %ymm7 -vmovdqu %ymm7, 1320(%rdi) -vmovdqu 318(%rdi), %ymm7 -vpaddw %ymm7, %ymm9, %ymm7 -vmovdqu %ymm7, 318(%rdi) -vmovdqu 670(%rdi), %ymm7 -vpaddw %ymm7, %ymm3, %ymm7 -vmovdqu %ymm7, 670(%rdi) -vmovdqu 1022(%rdi), %ymm7 -vpaddw %ymm7, %ymm4, %ymm7 -vmovdqu %ymm7, 1022(%rdi) -vmovdqu 1374(%rdi), %ymm7 -vpaddw %ymm7, %ymm11, %ymm7 -vmovdqu %ymm7, 1374(%rdi) -vmovdqa 128(%r12), %ymm0 -vpsubw 224(%r12), %ymm0, %ymm0 -vmovdqa 512(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 320(%r12), %ymm1, %ymm1 -vpsubw 32(%r12), %ymm0, %ymm0 -vpaddw 416(%r12), %ymm0, %ymm0 -vmovdqa 704(%r12), %ymm2 -vpsubw 800(%r12), %ymm2, %ymm2 -vmovdqa 1088(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 896(%r12), %ymm3, %ymm3 -vpsubw 608(%r12), %ymm2, %ymm2 -vpaddw 992(%r12), %ymm2, %ymm2 -vmovdqa 1280(%r12), %ymm4 -vpsubw 1376(%r12), %ymm4, %ymm4 -vmovdqa 1664(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 1472(%r12), %ymm5, %ymm5 -vpsubw 1184(%r12), %ymm4, %ymm4 -vpaddw 1568(%r12), %ymm4, %ymm4 -vpsubw 608(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 32(%r12), %ymm1, %ymm1 -vpaddw 1184(%r12), %ymm1, %ymm1 -vmovdqa 320(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 1472(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 896(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 32(%r12), %ymm8 -vmovdqa 896(%r12), %ymm9 -vmovdqa %ymm8, 0(%rsp) -vmovdqa %ymm0, 32(%rsp) -vmovdqa %ymm1, 64(%rsp) -vmovdqa %ymm7, 96(%rsp) -vmovdqa %ymm5, 128(%rsp) -vmovdqa %ymm2, 160(%rsp) -vmovdqa %ymm3, 192(%rsp) -vmovdqa %ymm9, 224(%rsp) -vmovdqa 1856(%r12), %ymm0 -vpsubw 1952(%r12), %ymm0, %ymm0 -vmovdqa 2240(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 2048(%r12), %ymm1, %ymm1 -vpsubw 1760(%r12), %ymm0, %ymm0 -vpaddw 2144(%r12), %ymm0, %ymm0 -vmovdqa 2432(%r12), %ymm2 -vpsubw 2528(%r12), %ymm2, %ymm2 -vmovdqa 2816(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 2624(%r12), %ymm3, %ymm3 -vpsubw 2336(%r12), %ymm2, %ymm2 -vpaddw 2720(%r12), %ymm2, %ymm2 -vmovdqa 3008(%r12), %ymm4 -vpsubw 3104(%r12), %ymm4, %ymm4 -vmovdqa 3392(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 3200(%r12), %ymm5, %ymm5 -vpsubw 2912(%r12), %ymm4, %ymm4 -vpaddw 3296(%r12), %ymm4, %ymm4 -vpsubw 2336(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 1760(%r12), %ymm1, %ymm1 -vpaddw 2912(%r12), %ymm1, %ymm1 -vmovdqa 2048(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 3200(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 2624(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 1760(%r12), %ymm8 -vmovdqa 2624(%r12), %ymm9 -vmovdqa %ymm8, 256(%rsp) -vmovdqa %ymm0, 288(%rsp) -vmovdqa %ymm1, 320(%rsp) -vmovdqa %ymm7, 352(%rsp) -vmovdqa %ymm5, 384(%rsp) -vmovdqa %ymm2, 416(%rsp) -vmovdqa %ymm3, 448(%rsp) -vmovdqa %ymm9, 480(%rsp) -vmovdqa 3584(%r12), %ymm0 -vpsubw 3680(%r12), %ymm0, %ymm0 -vmovdqa 3968(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 3776(%r12), %ymm1, %ymm1 -vpsubw 3488(%r12), %ymm0, %ymm0 -vpaddw 3872(%r12), %ymm0, %ymm0 -vmovdqa 4160(%r12), %ymm2 -vpsubw 4256(%r12), %ymm2, %ymm2 -vmovdqa 4544(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 4352(%r12), %ymm3, %ymm3 -vpsubw 4064(%r12), %ymm2, %ymm2 -vpaddw 4448(%r12), %ymm2, %ymm2 -vmovdqa 4736(%r12), %ymm4 -vpsubw 4832(%r12), %ymm4, %ymm4 -vmovdqa 5120(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 4928(%r12), %ymm5, %ymm5 -vpsubw 4640(%r12), %ymm4, %ymm4 -vpaddw 5024(%r12), %ymm4, %ymm4 -vpsubw 4064(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 3488(%r12), %ymm1, %ymm1 -vpaddw 4640(%r12), %ymm1, %ymm1 -vmovdqa 3776(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 4928(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 4352(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 3488(%r12), %ymm8 -vmovdqa 4352(%r12), %ymm9 -vmovdqa %ymm8, 512(%rsp) -vmovdqa %ymm0, 544(%rsp) -vmovdqa %ymm1, 576(%rsp) -vmovdqa %ymm7, 608(%rsp) -vmovdqa %ymm5, 640(%rsp) -vmovdqa %ymm2, 672(%rsp) -vmovdqa %ymm3, 704(%rsp) -vmovdqa %ymm9, 736(%rsp) -vmovdqa 5312(%r12), %ymm0 -vpsubw 5408(%r12), %ymm0, %ymm0 -vmovdqa 5696(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 5504(%r12), %ymm1, %ymm1 -vpsubw 5216(%r12), %ymm0, %ymm0 -vpaddw 5600(%r12), %ymm0, %ymm0 -vmovdqa 5888(%r12), %ymm2 -vpsubw 5984(%r12), %ymm2, %ymm2 -vmovdqa 6272(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 6080(%r12), %ymm3, %ymm3 -vpsubw 5792(%r12), %ymm2, %ymm2 -vpaddw 6176(%r12), %ymm2, %ymm2 -vmovdqa 6464(%r12), %ymm4 -vpsubw 6560(%r12), %ymm4, %ymm4 -vmovdqa 6848(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 6656(%r12), %ymm5, %ymm5 -vpsubw 6368(%r12), %ymm4, %ymm4 -vpaddw 6752(%r12), %ymm4, %ymm4 -vpsubw 5792(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 5216(%r12), %ymm1, %ymm1 -vpaddw 6368(%r12), %ymm1, %ymm1 -vmovdqa 5504(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 6656(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 6080(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 5216(%r12), %ymm8 -vmovdqa 6080(%r12), %ymm9 -vmovdqa %ymm8, 768(%rsp) -vmovdqa %ymm0, 800(%rsp) -vmovdqa %ymm1, 832(%rsp) -vmovdqa %ymm7, 864(%rsp) -vmovdqa %ymm5, 896(%rsp) -vmovdqa %ymm2, 928(%rsp) -vmovdqa %ymm3, 960(%rsp) -vmovdqa %ymm9, 992(%rsp) -vmovdqa 7040(%r12), %ymm0 -vpsubw 7136(%r12), %ymm0, %ymm0 -vmovdqa 7424(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 7232(%r12), %ymm1, %ymm1 -vpsubw 6944(%r12), %ymm0, %ymm0 -vpaddw 7328(%r12), %ymm0, %ymm0 -vmovdqa 7616(%r12), %ymm2 -vpsubw 7712(%r12), %ymm2, %ymm2 -vmovdqa 8000(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 7808(%r12), %ymm3, %ymm3 -vpsubw 7520(%r12), %ymm2, %ymm2 -vpaddw 7904(%r12), %ymm2, %ymm2 -vmovdqa 8192(%r12), %ymm4 -vpsubw 8288(%r12), %ymm4, %ymm4 -vmovdqa 8576(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 8384(%r12), %ymm5, %ymm5 -vpsubw 8096(%r12), %ymm4, %ymm4 -vpaddw 8480(%r12), %ymm4, %ymm4 -vpsubw 7520(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 6944(%r12), %ymm1, %ymm1 -vpaddw 8096(%r12), %ymm1, %ymm1 -vmovdqa 7232(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 8384(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 7808(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 6944(%r12), %ymm8 -vmovdqa 7808(%r12), %ymm9 -vmovdqa %ymm8, 1024(%rsp) -vmovdqa %ymm0, 1056(%rsp) -vmovdqa %ymm1, 1088(%rsp) -vmovdqa %ymm7, 1120(%rsp) -vmovdqa %ymm5, 1152(%rsp) -vmovdqa %ymm2, 1184(%rsp) -vmovdqa %ymm3, 1216(%rsp) -vmovdqa %ymm9, 1248(%rsp) -vmovdqa 8768(%r12), %ymm0 -vpsubw 8864(%r12), %ymm0, %ymm0 -vmovdqa 9152(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 8960(%r12), %ymm1, %ymm1 -vpsubw 8672(%r12), %ymm0, %ymm0 -vpaddw 9056(%r12), %ymm0, %ymm0 -vmovdqa 9344(%r12), %ymm2 -vpsubw 9440(%r12), %ymm2, %ymm2 -vmovdqa 9728(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 9536(%r12), %ymm3, %ymm3 -vpsubw 9248(%r12), %ymm2, %ymm2 -vpaddw 9632(%r12), %ymm2, %ymm2 -vmovdqa 9920(%r12), %ymm4 -vpsubw 10016(%r12), %ymm4, %ymm4 -vmovdqa 10304(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 10112(%r12), %ymm5, %ymm5 -vpsubw 9824(%r12), %ymm4, %ymm4 -vpaddw 10208(%r12), %ymm4, %ymm4 -vpsubw 9248(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 8672(%r12), %ymm1, %ymm1 -vpaddw 9824(%r12), %ymm1, %ymm1 -vmovdqa 8960(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 10112(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 9536(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 8672(%r12), %ymm8 -vmovdqa 9536(%r12), %ymm9 -vmovdqa %ymm8, 1280(%rsp) -vmovdqa %ymm0, 1312(%rsp) -vmovdqa %ymm1, 1344(%rsp) -vmovdqa %ymm7, 1376(%rsp) -vmovdqa %ymm5, 1408(%rsp) -vmovdqa %ymm2, 1440(%rsp) -vmovdqa %ymm3, 1472(%rsp) -vmovdqa %ymm9, 1504(%rsp) -vmovdqa 10496(%r12), %ymm0 -vpsubw 10592(%r12), %ymm0, %ymm0 -vmovdqa 10880(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 10688(%r12), %ymm1, %ymm1 -vpsubw 10400(%r12), %ymm0, %ymm0 -vpaddw 10784(%r12), %ymm0, %ymm0 -vmovdqa 11072(%r12), %ymm2 -vpsubw 11168(%r12), %ymm2, %ymm2 -vmovdqa 11456(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 11264(%r12), %ymm3, %ymm3 -vpsubw 10976(%r12), %ymm2, %ymm2 -vpaddw 11360(%r12), %ymm2, %ymm2 -vmovdqa 11648(%r12), %ymm4 -vpsubw 11744(%r12), %ymm4, %ymm4 -vmovdqa 12032(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 11840(%r12), %ymm5, %ymm5 -vpsubw 11552(%r12), %ymm4, %ymm4 -vpaddw 11936(%r12), %ymm4, %ymm4 -vpsubw 10976(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 10400(%r12), %ymm1, %ymm1 -vpaddw 11552(%r12), %ymm1, %ymm1 -vmovdqa 10688(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 11840(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 11264(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 10400(%r12), %ymm8 -vmovdqa 11264(%r12), %ymm9 -vmovdqa %ymm8, 1536(%rsp) -vmovdqa %ymm0, 1568(%rsp) -vmovdqa %ymm1, 1600(%rsp) -vmovdqa %ymm7, 1632(%rsp) -vmovdqa %ymm5, 1664(%rsp) -vmovdqa %ymm2, 1696(%rsp) -vmovdqa %ymm3, 1728(%rsp) -vmovdqa %ymm9, 1760(%rsp) -vmovdqa 0(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm4 -vpunpckhwd const0(%rip), %ymm11, %ymm3 -vpslld $1, %ymm4, %ymm4 -vpslld $1, %ymm3, %ymm3 -vmovdqa 256(%rsp), %ymm9 -vpunpcklwd const0(%rip), %ymm9, %ymm10 -vpunpckhwd const0(%rip), %ymm9, %ymm9 -vmovdqa 512(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm10, %ymm7 -vpaddd %ymm6, %ymm9, %ymm8 -vpsubd %ymm4, %ymm7, %ymm7 -vpsubd %ymm3, %ymm8, %ymm8 -vpsubd %ymm5, %ymm10, %ymm5 -vpsubd %ymm6, %ymm9, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1536(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm9 -vpunpckhwd const0(%rip), %ymm5, %ymm10 -vpslld $1, %ymm9, %ymm9 -vpslld $1, %ymm10, %ymm10 -vpsubd %ymm9, %ymm7, %ymm7 -vpsubd %ymm10, %ymm8, %ymm8 -vpsrld $1, %ymm7, %ymm7 -vpsrld $1, %ymm8, %ymm8 -vpand mask32_to_16(%rip), %ymm7, %ymm7 -vpand mask32_to_16(%rip), %ymm8, %ymm8 -vpackusdw %ymm8, %ymm7, %ymm8 -vmovdqa 768(%rsp), %ymm7 -vpaddw 1024(%rsp), %ymm7, %ymm10 -vpsubw 1024(%rsp), %ymm7, %ymm7 -vpsrlw $2, %ymm7, %ymm7 -vpsubw %ymm6, %ymm7, %ymm7 -vpmullw %ymm14, %ymm7, %ymm7 -vpsllw $1, %ymm11, %ymm9 -vpsubw %ymm9, %ymm10, %ymm9 -vpsllw $7, %ymm5, %ymm10 -vpsubw %ymm10, %ymm9, %ymm10 -vpsrlw $3, %ymm10, %ymm10 -vpsubw %ymm8, %ymm10, %ymm10 -vmovdqa 1280(%rsp), %ymm9 -vpsubw %ymm11, %ymm9, %ymm9 -vpmullw %ymm15, %ymm5, %ymm3 -vpsubw %ymm3, %ymm9, %ymm3 -vpmullw %ymm14, %ymm10, %ymm10 -vpsubw %ymm10, %ymm8, %ymm8 -vpmullw %ymm12, %ymm10, %ymm9 -vpaddw %ymm9, %ymm8, %ymm9 -vpmullw %ymm12, %ymm9, %ymm9 -vpsubw %ymm9, %ymm3, %ymm9 -vpmullw %ymm14, %ymm9, %ymm9 -vpsubw %ymm6, %ymm9, %ymm9 -vpsrlw $3, %ymm9, %ymm9 -vpsubw %ymm7, %ymm9, %ymm9 -vpsubw %ymm9, %ymm7, %ymm7 -vpsubw %ymm7, %ymm6, %ymm6 -vpmullw %ymm13, %ymm9, %ymm9 -vpsubw %ymm9, %ymm6, %ymm6 -vmovdqu 32(%rdi), %ymm3 -vpaddw %ymm3, %ymm11, %ymm3 -vmovdqu %ymm3, 32(%rdi) -vmovdqu 384(%rdi), %ymm3 -vpaddw %ymm3, %ymm6, %ymm3 -vmovdqu %ymm3, 384(%rdi) -vmovdqu 736(%rdi), %ymm3 -vpaddw %ymm3, %ymm8, %ymm3 -vmovdqu %ymm3, 736(%rdi) -vmovdqu 1088(%rdi), %ymm3 -vpaddw %ymm3, %ymm7, %ymm3 -vmovdqu %ymm3, 1088(%rdi) -vmovdqu 86(%rdi), %ymm3 -vpaddw %ymm3, %ymm10, %ymm3 -vmovdqu %ymm3, 86(%rdi) -vmovdqu 438(%rdi), %ymm3 -vpaddw %ymm3, %ymm9, %ymm3 -vmovdqu %ymm3, 438(%rdi) -vmovdqu 790(%rdi), %ymm3 -vpaddw %ymm3, %ymm5, %ymm3 -vmovdqu %ymm3, 790(%rdi) -vmovdqa 32(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm9 -vpunpckhwd const0(%rip), %ymm5, %ymm10 -vpslld $1, %ymm9, %ymm9 -vpslld $1, %ymm10, %ymm10 -vmovdqa 288(%rsp), %ymm7 -vpunpcklwd const0(%rip), %ymm7, %ymm8 -vpunpckhwd const0(%rip), %ymm7, %ymm7 -vmovdqa 544(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm8, %ymm3 -vpaddd %ymm6, %ymm7, %ymm4 -vpsubd %ymm9, %ymm3, %ymm3 -vpsubd %ymm10, %ymm4, %ymm4 -vpsubd %ymm11, %ymm8, %ymm11 -vpsubd %ymm6, %ymm7, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1568(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm7 -vpunpckhwd const0(%rip), %ymm11, %ymm8 -vpslld $1, %ymm7, %ymm7 -vpslld $1, %ymm8, %ymm8 -vpsubd %ymm7, %ymm3, %ymm3 -vpsubd %ymm8, %ymm4, %ymm4 -vpsrld $1, %ymm3, %ymm3 -vpsrld $1, %ymm4, %ymm4 -vpand mask32_to_16(%rip), %ymm3, %ymm3 -vpand mask32_to_16(%rip), %ymm4, %ymm4 -vpackusdw %ymm4, %ymm3, %ymm4 -vmovdqa 800(%rsp), %ymm3 -vpaddw 1056(%rsp), %ymm3, %ymm8 -vpsubw 1056(%rsp), %ymm3, %ymm3 -vpsrlw $2, %ymm3, %ymm3 -vpsubw %ymm6, %ymm3, %ymm3 -vpmullw %ymm14, %ymm3, %ymm3 -vpsllw $1, %ymm5, %ymm7 -vpsubw %ymm7, %ymm8, %ymm7 -vpsllw $7, %ymm11, %ymm8 -vpsubw %ymm8, %ymm7, %ymm8 -vpsrlw $3, %ymm8, %ymm8 -vpsubw %ymm4, %ymm8, %ymm8 -vmovdqa 1312(%rsp), %ymm7 -vpsubw %ymm5, %ymm7, %ymm7 -vpmullw %ymm15, %ymm11, %ymm10 -vpsubw %ymm10, %ymm7, %ymm10 -vpmullw %ymm14, %ymm8, %ymm8 -vpsubw %ymm8, %ymm4, %ymm4 -vpmullw %ymm12, %ymm8, %ymm7 -vpaddw %ymm7, %ymm4, %ymm7 -vpmullw %ymm12, %ymm7, %ymm7 -vpsubw %ymm7, %ymm10, %ymm7 -vpmullw %ymm14, %ymm7, %ymm7 -vpsubw %ymm6, %ymm7, %ymm7 -vpsrlw $3, %ymm7, %ymm7 -vpsubw %ymm3, %ymm7, %ymm7 -vpsubw %ymm7, %ymm3, %ymm3 -vpsubw %ymm3, %ymm6, %ymm6 -vpmullw %ymm13, %ymm7, %ymm7 -vpsubw %ymm7, %ymm6, %ymm6 -vmovdqu 120(%rdi), %ymm10 -vpaddw %ymm10, %ymm5, %ymm10 -vmovdqu %ymm10, 120(%rdi) -vmovdqu 472(%rdi), %ymm10 -vpaddw %ymm10, %ymm6, %ymm10 -vmovdqu %ymm10, 472(%rdi) -vmovdqu 824(%rdi), %ymm10 -vpaddw %ymm10, %ymm4, %ymm10 -vmovdqu %ymm10, 824(%rdi) -vmovdqu 1176(%rdi), %ymm10 -vpaddw %ymm10, %ymm3, %ymm10 -vmovdqu %ymm10, 1176(%rdi) -vmovdqu 174(%rdi), %ymm10 -vpaddw %ymm10, %ymm8, %ymm10 -vmovdqu %ymm10, 174(%rdi) -vmovdqu 526(%rdi), %ymm10 -vpaddw %ymm10, %ymm7, %ymm10 -vmovdqu %ymm10, 526(%rdi) -vmovdqu 878(%rdi), %ymm10 -vpaddw %ymm10, %ymm11, %ymm10 -vmovdqu %ymm10, 878(%rdi) -vmovdqa 64(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm7 -vpunpckhwd const0(%rip), %ymm11, %ymm8 -vpslld $1, %ymm7, %ymm7 -vpslld $1, %ymm8, %ymm8 -vmovdqa 320(%rsp), %ymm3 -vpunpcklwd const0(%rip), %ymm3, %ymm4 -vpunpckhwd const0(%rip), %ymm3, %ymm3 -vmovdqa 576(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm4, %ymm10 -vpaddd %ymm6, %ymm3, %ymm9 -vpsubd %ymm7, %ymm10, %ymm10 -vpsubd %ymm8, %ymm9, %ymm9 -vpsubd %ymm5, %ymm4, %ymm5 -vpsubd %ymm6, %ymm3, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1600(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm3 -vpunpckhwd const0(%rip), %ymm5, %ymm4 -vpslld $1, %ymm3, %ymm3 -vpslld $1, %ymm4, %ymm4 -vpsubd %ymm3, %ymm10, %ymm10 -vpsubd %ymm4, %ymm9, %ymm9 -vpsrld $1, %ymm10, %ymm10 -vpsrld $1, %ymm9, %ymm9 -vpand mask32_to_16(%rip), %ymm10, %ymm10 -vpand mask32_to_16(%rip), %ymm9, %ymm9 -vpackusdw %ymm9, %ymm10, %ymm9 -vmovdqa 832(%rsp), %ymm10 -vpaddw 1088(%rsp), %ymm10, %ymm4 -vpsubw 1088(%rsp), %ymm10, %ymm10 -vpsrlw $2, %ymm10, %ymm10 -vpsubw %ymm6, %ymm10, %ymm10 -vpmullw %ymm14, %ymm10, %ymm10 -vpsllw $1, %ymm11, %ymm3 -vpsubw %ymm3, %ymm4, %ymm3 -vpsllw $7, %ymm5, %ymm4 -vpsubw %ymm4, %ymm3, %ymm4 -vpsrlw $3, %ymm4, %ymm4 -vpsubw %ymm9, %ymm4, %ymm4 -vmovdqa 1344(%rsp), %ymm3 -vpsubw %ymm11, %ymm3, %ymm3 -vpmullw %ymm15, %ymm5, %ymm8 -vpsubw %ymm8, %ymm3, %ymm8 -vpmullw %ymm14, %ymm4, %ymm4 -vpsubw %ymm4, %ymm9, %ymm9 -vpmullw %ymm12, %ymm4, %ymm3 -vpaddw %ymm3, %ymm9, %ymm3 -vpmullw %ymm12, %ymm3, %ymm3 -vpsubw %ymm3, %ymm8, %ymm3 -vpmullw %ymm14, %ymm3, %ymm3 -vpsubw %ymm6, %ymm3, %ymm3 -vpsrlw $3, %ymm3, %ymm3 -vpsubw %ymm10, %ymm3, %ymm3 -vpsubw %ymm3, %ymm10, %ymm10 -vpsubw %ymm10, %ymm6, %ymm6 -vpmullw %ymm13, %ymm3, %ymm3 -vpsubw %ymm3, %ymm6, %ymm6 -vmovdqu 208(%rdi), %ymm8 -vpaddw %ymm8, %ymm11, %ymm8 -vmovdqu %ymm8, 208(%rdi) -vmovdqu 560(%rdi), %ymm8 -vpaddw %ymm8, %ymm6, %ymm8 -vmovdqu %ymm8, 560(%rdi) -vmovdqu 912(%rdi), %ymm8 -vpaddw %ymm8, %ymm9, %ymm8 -vmovdqu %ymm8, 912(%rdi) -vmovdqu 1264(%rdi), %ymm8 -vpaddw %ymm8, %ymm10, %ymm8 -vmovdqu %ymm8, 1264(%rdi) -vmovdqu 262(%rdi), %ymm8 -vpaddw %ymm8, %ymm4, %ymm8 -vmovdqu %ymm8, 262(%rdi) -vmovdqu 614(%rdi), %ymm8 -vpaddw %ymm8, %ymm3, %ymm8 -vmovdqu %ymm8, 614(%rdi) -vmovdqu 966(%rdi), %ymm8 -vpaddw %ymm8, %ymm5, %ymm8 -vmovdqu %ymm8, 966(%rdi) -vmovdqa 96(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm3 -vpunpckhwd const0(%rip), %ymm5, %ymm4 -vpslld $1, %ymm3, %ymm3 -vpslld $1, %ymm4, %ymm4 -vmovdqa 352(%rsp), %ymm10 -vpunpcklwd const0(%rip), %ymm10, %ymm9 -vpunpckhwd const0(%rip), %ymm10, %ymm10 -vmovdqa 608(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm9, %ymm8 -vpaddd %ymm6, %ymm10, %ymm7 -vpsubd %ymm3, %ymm8, %ymm8 -vpsubd %ymm4, %ymm7, %ymm7 -vpsubd %ymm11, %ymm9, %ymm11 -vpsubd %ymm6, %ymm10, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1632(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm10 -vpunpckhwd const0(%rip), %ymm11, %ymm9 -vpslld $1, %ymm10, %ymm10 -vpslld $1, %ymm9, %ymm9 -vpsubd %ymm10, %ymm8, %ymm8 -vpsubd %ymm9, %ymm7, %ymm7 -vpsrld $1, %ymm8, %ymm8 -vpsrld $1, %ymm7, %ymm7 -vpand mask32_to_16(%rip), %ymm8, %ymm8 -vpand mask32_to_16(%rip), %ymm7, %ymm7 -vpackusdw %ymm7, %ymm8, %ymm7 -vmovdqa 864(%rsp), %ymm8 -vpaddw 1120(%rsp), %ymm8, %ymm9 -vpsubw 1120(%rsp), %ymm8, %ymm8 -vpsrlw $2, %ymm8, %ymm8 -vpsubw %ymm6, %ymm8, %ymm8 -vpmullw %ymm14, %ymm8, %ymm8 -vpsllw $1, %ymm5, %ymm10 -vpsubw %ymm10, %ymm9, %ymm10 -vpsllw $7, %ymm11, %ymm9 -vpsubw %ymm9, %ymm10, %ymm9 -vpsrlw $3, %ymm9, %ymm9 -vpsubw %ymm7, %ymm9, %ymm9 -vmovdqa 1376(%rsp), %ymm10 -vpsubw %ymm5, %ymm10, %ymm10 -vpmullw %ymm15, %ymm11, %ymm4 -vpsubw %ymm4, %ymm10, %ymm4 -vpmullw %ymm14, %ymm9, %ymm9 -vpsubw %ymm9, %ymm7, %ymm7 -vpmullw %ymm12, %ymm9, %ymm10 -vpaddw %ymm10, %ymm7, %ymm10 -vpmullw %ymm12, %ymm10, %ymm10 -vpsubw %ymm10, %ymm4, %ymm10 -vpmullw %ymm14, %ymm10, %ymm10 -vpsubw %ymm6, %ymm10, %ymm10 -vpsrlw $3, %ymm10, %ymm10 -vpsubw %ymm8, %ymm10, %ymm10 -vpsubw %ymm10, %ymm8, %ymm8 -vpsubw %ymm8, %ymm6, %ymm6 -vpmullw %ymm13, %ymm10, %ymm10 -vpsubw %ymm10, %ymm6, %ymm6 -vmovdqu 296(%rdi), %ymm4 -vpaddw %ymm4, %ymm5, %ymm4 -vmovdqu %ymm4, 296(%rdi) -vmovdqu 648(%rdi), %ymm4 -vpaddw %ymm4, %ymm6, %ymm4 -vmovdqu %ymm4, 648(%rdi) -vmovdqu 1000(%rdi), %ymm4 -vpaddw %ymm4, %ymm7, %ymm4 -vmovdqu %ymm4, 1000(%rdi) -vmovdqu 1352(%rdi), %ymm4 -vpand mask_1_15(%rip), %ymm8, %ymm3 -vpaddw %ymm4, %ymm3, %ymm4 -vmovdqu %ymm4, 1352(%rdi) -vpshufb rol_rol_16(%rip), %ymm8, %ymm8 -vpermq $216, %ymm8, %ymm8 -vpshufb id_braid_16(%rip), %ymm8, %ymm8 -vpermq $216, %ymm8, %ymm8 -vpand mask_15_1(%rip), %ymm8, %ymm8 -vmovdqu 0(%rdi), %ymm4 -vpaddw %ymm4, %ymm8, %ymm4 -vmovdqu %ymm4, 0(%rdi) -vmovdqu 350(%rdi), %ymm4 -vpaddw %ymm4, %ymm9, %ymm4 -vmovdqu %ymm4, 350(%rdi) -vmovdqu 702(%rdi), %ymm4 -vpaddw %ymm4, %ymm10, %ymm4 -vmovdqu %ymm4, 702(%rdi) -vmovdqu 1054(%rdi), %ymm4 -vpaddw %ymm4, %ymm11, %ymm4 -vmovdqu %ymm4, 1054(%rdi) -vmovdqa 128(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm10 -vpunpckhwd const0(%rip), %ymm11, %ymm9 -vpslld $1, %ymm10, %ymm10 -vpslld $1, %ymm9, %ymm9 -vmovdqa 384(%rsp), %ymm8 -vpunpcklwd const0(%rip), %ymm8, %ymm7 -vpunpckhwd const0(%rip), %ymm8, %ymm8 -vmovdqa 640(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm7, %ymm4 -vpaddd %ymm6, %ymm8, %ymm3 -vpsubd %ymm10, %ymm4, %ymm4 -vpsubd %ymm9, %ymm3, %ymm3 -vpsubd %ymm5, %ymm7, %ymm5 -vpsubd %ymm6, %ymm8, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1664(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm8 -vpunpckhwd const0(%rip), %ymm5, %ymm7 -vpslld $1, %ymm8, %ymm8 -vpslld $1, %ymm7, %ymm7 -vpsubd %ymm8, %ymm4, %ymm4 -vpsubd %ymm7, %ymm3, %ymm3 -vpsrld $1, %ymm4, %ymm4 -vpsrld $1, %ymm3, %ymm3 -vpand mask32_to_16(%rip), %ymm4, %ymm4 -vpand mask32_to_16(%rip), %ymm3, %ymm3 -vpackusdw %ymm3, %ymm4, %ymm3 -vmovdqa 896(%rsp), %ymm4 -vpaddw 1152(%rsp), %ymm4, %ymm7 -vpsubw 1152(%rsp), %ymm4, %ymm4 -vpsrlw $2, %ymm4, %ymm4 -vpsubw %ymm6, %ymm4, %ymm4 -vpmullw %ymm14, %ymm4, %ymm4 -vpsllw $1, %ymm11, %ymm8 -vpsubw %ymm8, %ymm7, %ymm8 -vpsllw $7, %ymm5, %ymm7 -vpsubw %ymm7, %ymm8, %ymm7 -vpsrlw $3, %ymm7, %ymm7 -vpsubw %ymm3, %ymm7, %ymm7 -vmovdqa 1408(%rsp), %ymm8 -vpsubw %ymm11, %ymm8, %ymm8 -vpmullw %ymm15, %ymm5, %ymm9 -vpsubw %ymm9, %ymm8, %ymm9 -vpmullw %ymm14, %ymm7, %ymm7 -vpsubw %ymm7, %ymm3, %ymm3 -vpmullw %ymm12, %ymm7, %ymm8 -vpaddw %ymm8, %ymm3, %ymm8 -vpmullw %ymm12, %ymm8, %ymm8 -vpsubw %ymm8, %ymm9, %ymm8 -vpmullw %ymm14, %ymm8, %ymm8 -vpsubw %ymm6, %ymm8, %ymm8 -vpsrlw $3, %ymm8, %ymm8 -vpsubw %ymm4, %ymm8, %ymm8 -vpsubw %ymm8, %ymm4, %ymm4 -vpsubw %ymm4, %ymm6, %ymm6 -vpmullw %ymm13, %ymm8, %ymm8 -vpsubw %ymm8, %ymm6, %ymm6 -vmovdqu 384(%rdi), %ymm9 -vpaddw %ymm9, %ymm11, %ymm9 -vmovdqu %ymm9, 384(%rdi) -vmovdqu 736(%rdi), %ymm9 -vpaddw %ymm9, %ymm6, %ymm9 -vmovdqu %ymm9, 736(%rdi) -vmovdqu 1088(%rdi), %ymm9 -vpaddw %ymm9, %ymm3, %ymm9 -vmovdqu %ymm9, 1088(%rdi) -vmovdqu 86(%rdi), %ymm9 -vpaddw %ymm9, %ymm4, %ymm9 -vmovdqu %ymm9, 86(%rdi) -vmovdqu 438(%rdi), %ymm9 -vpaddw %ymm9, %ymm7, %ymm9 -vmovdqu %ymm9, 438(%rdi) -vmovdqu 790(%rdi), %ymm9 -vpaddw %ymm9, %ymm8, %ymm9 -vmovdqu %ymm9, 790(%rdi) -vmovdqu 1142(%rdi), %ymm9 -vpaddw %ymm9, %ymm5, %ymm9 -vmovdqu %ymm9, 1142(%rdi) -vmovdqa 160(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm8 -vpunpckhwd const0(%rip), %ymm5, %ymm7 -vpslld $1, %ymm8, %ymm8 -vpslld $1, %ymm7, %ymm7 -vmovdqa 416(%rsp), %ymm4 -vpunpcklwd const0(%rip), %ymm4, %ymm3 -vpunpckhwd const0(%rip), %ymm4, %ymm4 -vmovdqa 672(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm3, %ymm9 -vpaddd %ymm6, %ymm4, %ymm10 -vpsubd %ymm8, %ymm9, %ymm9 -vpsubd %ymm7, %ymm10, %ymm10 -vpsubd %ymm11, %ymm3, %ymm11 -vpsubd %ymm6, %ymm4, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1696(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm4 -vpunpckhwd const0(%rip), %ymm11, %ymm3 -vpslld $1, %ymm4, %ymm4 -vpslld $1, %ymm3, %ymm3 -vpsubd %ymm4, %ymm9, %ymm9 -vpsubd %ymm3, %ymm10, %ymm10 -vpsrld $1, %ymm9, %ymm9 -vpsrld $1, %ymm10, %ymm10 -vpand mask32_to_16(%rip), %ymm9, %ymm9 -vpand mask32_to_16(%rip), %ymm10, %ymm10 -vpackusdw %ymm10, %ymm9, %ymm10 -vmovdqa 928(%rsp), %ymm9 -vpaddw 1184(%rsp), %ymm9, %ymm3 -vpsubw 1184(%rsp), %ymm9, %ymm9 -vpsrlw $2, %ymm9, %ymm9 -vpsubw %ymm6, %ymm9, %ymm9 -vpmullw %ymm14, %ymm9, %ymm9 -vpsllw $1, %ymm5, %ymm4 -vpsubw %ymm4, %ymm3, %ymm4 -vpsllw $7, %ymm11, %ymm3 -vpsubw %ymm3, %ymm4, %ymm3 -vpsrlw $3, %ymm3, %ymm3 -vpsubw %ymm10, %ymm3, %ymm3 -vmovdqa 1440(%rsp), %ymm4 -vpsubw %ymm5, %ymm4, %ymm4 -vpmullw %ymm15, %ymm11, %ymm7 -vpsubw %ymm7, %ymm4, %ymm7 -vpmullw %ymm14, %ymm3, %ymm3 -vpsubw %ymm3, %ymm10, %ymm10 -vpmullw %ymm12, %ymm3, %ymm4 -vpaddw %ymm4, %ymm10, %ymm4 -vpmullw %ymm12, %ymm4, %ymm4 -vpsubw %ymm4, %ymm7, %ymm4 -vpmullw %ymm14, %ymm4, %ymm4 -vpsubw %ymm6, %ymm4, %ymm4 -vpsrlw $3, %ymm4, %ymm4 -vpsubw %ymm9, %ymm4, %ymm4 -vpsubw %ymm4, %ymm9, %ymm9 -vpsubw %ymm9, %ymm6, %ymm6 -vpmullw %ymm13, %ymm4, %ymm4 -vpsubw %ymm4, %ymm6, %ymm6 -vmovdqu 472(%rdi), %ymm7 -vpaddw %ymm7, %ymm5, %ymm7 -vmovdqu %ymm7, 472(%rdi) -vmovdqu 824(%rdi), %ymm7 -vpaddw %ymm7, %ymm6, %ymm7 -vmovdqu %ymm7, 824(%rdi) -vmovdqu 1176(%rdi), %ymm7 -vpaddw %ymm7, %ymm10, %ymm7 -vmovdqu %ymm7, 1176(%rdi) -vmovdqu 174(%rdi), %ymm7 -vpaddw %ymm7, %ymm9, %ymm7 -vmovdqu %ymm7, 174(%rdi) -vmovdqu 526(%rdi), %ymm7 -vpaddw %ymm7, %ymm3, %ymm7 -vmovdqu %ymm7, 526(%rdi) -vmovdqu 878(%rdi), %ymm7 -vpaddw %ymm7, %ymm4, %ymm7 -vmovdqu %ymm7, 878(%rdi) -vmovdqu 1230(%rdi), %ymm7 -vpaddw %ymm7, %ymm11, %ymm7 -vmovdqu %ymm7, 1230(%rdi) -vmovdqa 192(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm4 -vpunpckhwd const0(%rip), %ymm11, %ymm3 -vpslld $1, %ymm4, %ymm4 -vpslld $1, %ymm3, %ymm3 -vmovdqa 448(%rsp), %ymm9 -vpunpcklwd const0(%rip), %ymm9, %ymm10 -vpunpckhwd const0(%rip), %ymm9, %ymm9 -vmovdqa 704(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm10, %ymm7 -vpaddd %ymm6, %ymm9, %ymm8 -vpsubd %ymm4, %ymm7, %ymm7 -vpsubd %ymm3, %ymm8, %ymm8 -vpsubd %ymm5, %ymm10, %ymm5 -vpsubd %ymm6, %ymm9, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1728(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm9 -vpunpckhwd const0(%rip), %ymm5, %ymm10 -vpslld $1, %ymm9, %ymm9 -vpslld $1, %ymm10, %ymm10 -vpsubd %ymm9, %ymm7, %ymm7 -vpsubd %ymm10, %ymm8, %ymm8 -vpsrld $1, %ymm7, %ymm7 -vpsrld $1, %ymm8, %ymm8 -vpand mask32_to_16(%rip), %ymm7, %ymm7 -vpand mask32_to_16(%rip), %ymm8, %ymm8 -vpackusdw %ymm8, %ymm7, %ymm8 -vmovdqa 960(%rsp), %ymm7 -vpaddw 1216(%rsp), %ymm7, %ymm10 -vpsubw 1216(%rsp), %ymm7, %ymm7 -vpsrlw $2, %ymm7, %ymm7 -vpsubw %ymm6, %ymm7, %ymm7 -vpmullw %ymm14, %ymm7, %ymm7 -vpsllw $1, %ymm11, %ymm9 -vpsubw %ymm9, %ymm10, %ymm9 -vpsllw $7, %ymm5, %ymm10 -vpsubw %ymm10, %ymm9, %ymm10 -vpsrlw $3, %ymm10, %ymm10 -vpsubw %ymm8, %ymm10, %ymm10 -vmovdqa 1472(%rsp), %ymm9 -vpsubw %ymm11, %ymm9, %ymm9 -vpmullw %ymm15, %ymm5, %ymm3 -vpsubw %ymm3, %ymm9, %ymm3 -vpmullw %ymm14, %ymm10, %ymm10 -vpsubw %ymm10, %ymm8, %ymm8 -vpmullw %ymm12, %ymm10, %ymm9 -vpaddw %ymm9, %ymm8, %ymm9 -vpmullw %ymm12, %ymm9, %ymm9 -vpsubw %ymm9, %ymm3, %ymm9 -vpmullw %ymm14, %ymm9, %ymm9 -vpsubw %ymm6, %ymm9, %ymm9 -vpsrlw $3, %ymm9, %ymm9 -vpsubw %ymm7, %ymm9, %ymm9 -vpsubw %ymm9, %ymm7, %ymm7 -vpsubw %ymm7, %ymm6, %ymm6 -vpmullw %ymm13, %ymm9, %ymm9 -vpsubw %ymm9, %ymm6, %ymm6 -vmovdqu 560(%rdi), %ymm3 -vpaddw %ymm3, %ymm11, %ymm3 -vmovdqu %ymm3, 560(%rdi) -vmovdqu 912(%rdi), %ymm3 -vpaddw %ymm3, %ymm6, %ymm3 -vmovdqu %ymm3, 912(%rdi) -vmovdqu 1264(%rdi), %ymm3 -vpaddw %ymm3, %ymm8, %ymm3 -vmovdqu %ymm3, 1264(%rdi) -vmovdqu 262(%rdi), %ymm3 -vpaddw %ymm3, %ymm7, %ymm3 -vmovdqu %ymm3, 262(%rdi) -vmovdqu 614(%rdi), %ymm3 -vpaddw %ymm3, %ymm10, %ymm3 -vmovdqu %ymm3, 614(%rdi) -vmovdqu 966(%rdi), %ymm3 -vpaddw %ymm3, %ymm9, %ymm3 -vmovdqu %ymm3, 966(%rdi) -vmovdqu 1318(%rdi), %ymm3 -vpaddw %ymm3, %ymm5, %ymm3 -vmovdqu %ymm3, 1318(%rdi) -vmovdqa 224(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm9 -vpunpckhwd const0(%rip), %ymm5, %ymm10 -vpslld $1, %ymm9, %ymm9 -vpslld $1, %ymm10, %ymm10 -vmovdqa 480(%rsp), %ymm7 -vpunpcklwd const0(%rip), %ymm7, %ymm8 -vpunpckhwd const0(%rip), %ymm7, %ymm7 -vmovdqa 736(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm8, %ymm3 -vpaddd %ymm6, %ymm7, %ymm4 -vpsubd %ymm9, %ymm3, %ymm3 -vpsubd %ymm10, %ymm4, %ymm4 -vpsubd %ymm11, %ymm8, %ymm11 -vpsubd %ymm6, %ymm7, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1760(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm7 -vpunpckhwd const0(%rip), %ymm11, %ymm8 -vpslld $1, %ymm7, %ymm7 -vpslld $1, %ymm8, %ymm8 -vpsubd %ymm7, %ymm3, %ymm3 -vpsubd %ymm8, %ymm4, %ymm4 -vpsrld $1, %ymm3, %ymm3 -vpsrld $1, %ymm4, %ymm4 -vpand mask32_to_16(%rip), %ymm3, %ymm3 -vpand mask32_to_16(%rip), %ymm4, %ymm4 -vpackusdw %ymm4, %ymm3, %ymm4 -vmovdqa 992(%rsp), %ymm3 -vpaddw 1248(%rsp), %ymm3, %ymm8 -vpsubw 1248(%rsp), %ymm3, %ymm3 -vpsrlw $2, %ymm3, %ymm3 -vpsubw %ymm6, %ymm3, %ymm3 -vpmullw %ymm14, %ymm3, %ymm3 -vpsllw $1, %ymm5, %ymm7 -vpsubw %ymm7, %ymm8, %ymm7 -vpsllw $7, %ymm11, %ymm8 -vpsubw %ymm8, %ymm7, %ymm8 -vpsrlw $3, %ymm8, %ymm8 -vpsubw %ymm4, %ymm8, %ymm8 -vmovdqa 1504(%rsp), %ymm7 -vpsubw %ymm5, %ymm7, %ymm7 -vpmullw %ymm15, %ymm11, %ymm10 -vpsubw %ymm10, %ymm7, %ymm10 -vpmullw %ymm14, %ymm8, %ymm8 -vpsubw %ymm8, %ymm4, %ymm4 -vpmullw %ymm12, %ymm8, %ymm7 -vpaddw %ymm7, %ymm4, %ymm7 -vpmullw %ymm12, %ymm7, %ymm7 -vpsubw %ymm7, %ymm10, %ymm7 -vpmullw %ymm14, %ymm7, %ymm7 -vpsubw %ymm6, %ymm7, %ymm7 -vpsrlw $3, %ymm7, %ymm7 -vpsubw %ymm3, %ymm7, %ymm7 -vpsubw %ymm7, %ymm3, %ymm3 -vpsubw %ymm3, %ymm6, %ymm6 -vpmullw %ymm13, %ymm7, %ymm7 -vpsubw %ymm7, %ymm6, %ymm6 -vmovdqu 648(%rdi), %ymm10 -vpaddw %ymm10, %ymm5, %ymm10 -vmovdqu %ymm10, 648(%rdi) -vmovdqu 1000(%rdi), %ymm10 -vpaddw %ymm10, %ymm6, %ymm10 -vmovdqu %ymm10, 1000(%rdi) -vmovdqu 1352(%rdi), %ymm10 -vpand mask_1_15(%rip), %ymm4, %ymm9 -vpaddw %ymm10, %ymm9, %ymm10 -vmovdqu %ymm10, 1352(%rdi) -vpshufb rol_rol_16(%rip), %ymm4, %ymm4 -vpermq $216, %ymm4, %ymm4 -vpshufb id_braid_16(%rip), %ymm4, %ymm4 -vpermq $216, %ymm4, %ymm4 -vpand mask_15_1(%rip), %ymm4, %ymm4 -vmovdqu 0(%rdi), %ymm10 -vpaddw %ymm10, %ymm4, %ymm10 -vmovdqu %ymm10, 0(%rdi) -vmovdqu 350(%rdi), %ymm10 -vpaddw %ymm10, %ymm3, %ymm10 -vmovdqu %ymm10, 350(%rdi) -vmovdqu 702(%rdi), %ymm10 -vpaddw %ymm10, %ymm8, %ymm10 -vmovdqu %ymm10, 702(%rdi) -vmovdqu 1054(%rdi), %ymm10 -vpaddw %ymm10, %ymm7, %ymm10 -vmovdqu %ymm10, 1054(%rdi) -vmovdqa 160(%r12), %ymm0 -vpsubw 256(%r12), %ymm0, %ymm0 -vmovdqa 544(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 352(%r12), %ymm1, %ymm1 -vpsubw 64(%r12), %ymm0, %ymm0 -vpaddw 448(%r12), %ymm0, %ymm0 -vmovdqa 736(%r12), %ymm2 -vpsubw 832(%r12), %ymm2, %ymm2 -vmovdqa 1120(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 928(%r12), %ymm3, %ymm3 -vpsubw 640(%r12), %ymm2, %ymm2 -vpaddw 1024(%r12), %ymm2, %ymm2 -vmovdqa 1312(%r12), %ymm4 -vpsubw 1408(%r12), %ymm4, %ymm4 -vmovdqa 1696(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 1504(%r12), %ymm5, %ymm5 -vpsubw 1216(%r12), %ymm4, %ymm4 -vpaddw 1600(%r12), %ymm4, %ymm4 -vpsubw 640(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 64(%r12), %ymm1, %ymm1 -vpaddw 1216(%r12), %ymm1, %ymm1 -vmovdqa 352(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 1504(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 928(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 64(%r12), %ymm8 -vmovdqa 928(%r12), %ymm9 -vmovdqa %ymm8, 0(%rsp) -vmovdqa %ymm0, 32(%rsp) -vmovdqa %ymm1, 64(%rsp) -vmovdqa %ymm7, 96(%rsp) -vmovdqa %ymm5, 128(%rsp) -vmovdqa %ymm2, 160(%rsp) -vmovdqa %ymm3, 192(%rsp) -vmovdqa %ymm9, 224(%rsp) -vmovdqa 1888(%r12), %ymm0 -vpsubw 1984(%r12), %ymm0, %ymm0 -vmovdqa 2272(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 2080(%r12), %ymm1, %ymm1 -vpsubw 1792(%r12), %ymm0, %ymm0 -vpaddw 2176(%r12), %ymm0, %ymm0 -vmovdqa 2464(%r12), %ymm2 -vpsubw 2560(%r12), %ymm2, %ymm2 -vmovdqa 2848(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 2656(%r12), %ymm3, %ymm3 -vpsubw 2368(%r12), %ymm2, %ymm2 -vpaddw 2752(%r12), %ymm2, %ymm2 -vmovdqa 3040(%r12), %ymm4 -vpsubw 3136(%r12), %ymm4, %ymm4 -vmovdqa 3424(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 3232(%r12), %ymm5, %ymm5 -vpsubw 2944(%r12), %ymm4, %ymm4 -vpaddw 3328(%r12), %ymm4, %ymm4 -vpsubw 2368(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 1792(%r12), %ymm1, %ymm1 -vpaddw 2944(%r12), %ymm1, %ymm1 -vmovdqa 2080(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 3232(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 2656(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 1792(%r12), %ymm8 -vmovdqa 2656(%r12), %ymm9 -vmovdqa %ymm8, 256(%rsp) -vmovdqa %ymm0, 288(%rsp) -vmovdqa %ymm1, 320(%rsp) -vmovdqa %ymm7, 352(%rsp) -vmovdqa %ymm5, 384(%rsp) -vmovdqa %ymm2, 416(%rsp) -vmovdqa %ymm3, 448(%rsp) -vmovdqa %ymm9, 480(%rsp) -vmovdqa 3616(%r12), %ymm0 -vpsubw 3712(%r12), %ymm0, %ymm0 -vmovdqa 4000(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 3808(%r12), %ymm1, %ymm1 -vpsubw 3520(%r12), %ymm0, %ymm0 -vpaddw 3904(%r12), %ymm0, %ymm0 -vmovdqa 4192(%r12), %ymm2 -vpsubw 4288(%r12), %ymm2, %ymm2 -vmovdqa 4576(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 4384(%r12), %ymm3, %ymm3 -vpsubw 4096(%r12), %ymm2, %ymm2 -vpaddw 4480(%r12), %ymm2, %ymm2 -vmovdqa 4768(%r12), %ymm4 -vpsubw 4864(%r12), %ymm4, %ymm4 -vmovdqa 5152(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 4960(%r12), %ymm5, %ymm5 -vpsubw 4672(%r12), %ymm4, %ymm4 -vpaddw 5056(%r12), %ymm4, %ymm4 -vpsubw 4096(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 3520(%r12), %ymm1, %ymm1 -vpaddw 4672(%r12), %ymm1, %ymm1 -vmovdqa 3808(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 4960(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 4384(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 3520(%r12), %ymm8 -vmovdqa 4384(%r12), %ymm9 -vmovdqa %ymm8, 512(%rsp) -vmovdqa %ymm0, 544(%rsp) -vmovdqa %ymm1, 576(%rsp) -vmovdqa %ymm7, 608(%rsp) -vmovdqa %ymm5, 640(%rsp) -vmovdqa %ymm2, 672(%rsp) -vmovdqa %ymm3, 704(%rsp) -vmovdqa %ymm9, 736(%rsp) -vmovdqa 5344(%r12), %ymm0 -vpsubw 5440(%r12), %ymm0, %ymm0 -vmovdqa 5728(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 5536(%r12), %ymm1, %ymm1 -vpsubw 5248(%r12), %ymm0, %ymm0 -vpaddw 5632(%r12), %ymm0, %ymm0 -vmovdqa 5920(%r12), %ymm2 -vpsubw 6016(%r12), %ymm2, %ymm2 -vmovdqa 6304(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 6112(%r12), %ymm3, %ymm3 -vpsubw 5824(%r12), %ymm2, %ymm2 -vpaddw 6208(%r12), %ymm2, %ymm2 -vmovdqa 6496(%r12), %ymm4 -vpsubw 6592(%r12), %ymm4, %ymm4 -vmovdqa 6880(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 6688(%r12), %ymm5, %ymm5 -vpsubw 6400(%r12), %ymm4, %ymm4 -vpaddw 6784(%r12), %ymm4, %ymm4 -vpsubw 5824(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 5248(%r12), %ymm1, %ymm1 -vpaddw 6400(%r12), %ymm1, %ymm1 -vmovdqa 5536(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 6688(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 6112(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 5248(%r12), %ymm8 -vmovdqa 6112(%r12), %ymm9 -vmovdqa %ymm8, 768(%rsp) -vmovdqa %ymm0, 800(%rsp) -vmovdqa %ymm1, 832(%rsp) -vmovdqa %ymm7, 864(%rsp) -vmovdqa %ymm5, 896(%rsp) -vmovdqa %ymm2, 928(%rsp) -vmovdqa %ymm3, 960(%rsp) -vmovdqa %ymm9, 992(%rsp) -vmovdqa 7072(%r12), %ymm0 -vpsubw 7168(%r12), %ymm0, %ymm0 -vmovdqa 7456(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 7264(%r12), %ymm1, %ymm1 -vpsubw 6976(%r12), %ymm0, %ymm0 -vpaddw 7360(%r12), %ymm0, %ymm0 -vmovdqa 7648(%r12), %ymm2 -vpsubw 7744(%r12), %ymm2, %ymm2 -vmovdqa 8032(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 7840(%r12), %ymm3, %ymm3 -vpsubw 7552(%r12), %ymm2, %ymm2 -vpaddw 7936(%r12), %ymm2, %ymm2 -vmovdqa 8224(%r12), %ymm4 -vpsubw 8320(%r12), %ymm4, %ymm4 -vmovdqa 8608(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 8416(%r12), %ymm5, %ymm5 -vpsubw 8128(%r12), %ymm4, %ymm4 -vpaddw 8512(%r12), %ymm4, %ymm4 -vpsubw 7552(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 6976(%r12), %ymm1, %ymm1 -vpaddw 8128(%r12), %ymm1, %ymm1 -vmovdqa 7264(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 8416(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 7840(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 6976(%r12), %ymm8 -vmovdqa 7840(%r12), %ymm9 -vmovdqa %ymm8, 1024(%rsp) -vmovdqa %ymm0, 1056(%rsp) -vmovdqa %ymm1, 1088(%rsp) -vmovdqa %ymm7, 1120(%rsp) -vmovdqa %ymm5, 1152(%rsp) -vmovdqa %ymm2, 1184(%rsp) -vmovdqa %ymm3, 1216(%rsp) -vmovdqa %ymm9, 1248(%rsp) -vmovdqa 8800(%r12), %ymm0 -vpsubw 8896(%r12), %ymm0, %ymm0 -vmovdqa 9184(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 8992(%r12), %ymm1, %ymm1 -vpsubw 8704(%r12), %ymm0, %ymm0 -vpaddw 9088(%r12), %ymm0, %ymm0 -vmovdqa 9376(%r12), %ymm2 -vpsubw 9472(%r12), %ymm2, %ymm2 -vmovdqa 9760(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 9568(%r12), %ymm3, %ymm3 -vpsubw 9280(%r12), %ymm2, %ymm2 -vpaddw 9664(%r12), %ymm2, %ymm2 -vmovdqa 9952(%r12), %ymm4 -vpsubw 10048(%r12), %ymm4, %ymm4 -vmovdqa 10336(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 10144(%r12), %ymm5, %ymm5 -vpsubw 9856(%r12), %ymm4, %ymm4 -vpaddw 10240(%r12), %ymm4, %ymm4 -vpsubw 9280(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 8704(%r12), %ymm1, %ymm1 -vpaddw 9856(%r12), %ymm1, %ymm1 -vmovdqa 8992(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 10144(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 9568(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 8704(%r12), %ymm8 -vmovdqa 9568(%r12), %ymm9 -vmovdqa %ymm8, 1280(%rsp) -vmovdqa %ymm0, 1312(%rsp) -vmovdqa %ymm1, 1344(%rsp) -vmovdqa %ymm7, 1376(%rsp) -vmovdqa %ymm5, 1408(%rsp) -vmovdqa %ymm2, 1440(%rsp) -vmovdqa %ymm3, 1472(%rsp) -vmovdqa %ymm9, 1504(%rsp) -vmovdqa 10528(%r12), %ymm0 -vpsubw 10624(%r12), %ymm0, %ymm0 -vmovdqa 10912(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 10720(%r12), %ymm1, %ymm1 -vpsubw 10432(%r12), %ymm0, %ymm0 -vpaddw 10816(%r12), %ymm0, %ymm0 -vmovdqa 11104(%r12), %ymm2 -vpsubw 11200(%r12), %ymm2, %ymm2 -vmovdqa 11488(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 11296(%r12), %ymm3, %ymm3 -vpsubw 11008(%r12), %ymm2, %ymm2 -vpaddw 11392(%r12), %ymm2, %ymm2 -vmovdqa 11680(%r12), %ymm4 -vpsubw 11776(%r12), %ymm4, %ymm4 -vmovdqa 12064(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 11872(%r12), %ymm5, %ymm5 -vpsubw 11584(%r12), %ymm4, %ymm4 -vpaddw 11968(%r12), %ymm4, %ymm4 -vpsubw 11008(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 10432(%r12), %ymm1, %ymm1 -vpaddw 11584(%r12), %ymm1, %ymm1 -vmovdqa 10720(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 11872(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 11296(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 10432(%r12), %ymm8 -vmovdqa 11296(%r12), %ymm9 -vmovdqa %ymm8, 1536(%rsp) -vmovdqa %ymm0, 1568(%rsp) -vmovdqa %ymm1, 1600(%rsp) -vmovdqa %ymm7, 1632(%rsp) -vmovdqa %ymm5, 1664(%rsp) -vmovdqa %ymm2, 1696(%rsp) -vmovdqa %ymm3, 1728(%rsp) -vmovdqa %ymm9, 1760(%rsp) -vmovdqa 0(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm7 -vpunpckhwd const0(%rip), %ymm11, %ymm8 -vpslld $1, %ymm7, %ymm7 -vpslld $1, %ymm8, %ymm8 -vmovdqa 256(%rsp), %ymm3 -vpunpcklwd const0(%rip), %ymm3, %ymm4 -vpunpckhwd const0(%rip), %ymm3, %ymm3 -vmovdqa 512(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm4, %ymm10 -vpaddd %ymm6, %ymm3, %ymm9 -vpsubd %ymm7, %ymm10, %ymm10 -vpsubd %ymm8, %ymm9, %ymm9 -vpsubd %ymm5, %ymm4, %ymm5 -vpsubd %ymm6, %ymm3, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1536(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm3 -vpunpckhwd const0(%rip), %ymm5, %ymm4 -vpslld $1, %ymm3, %ymm3 -vpslld $1, %ymm4, %ymm4 -vpsubd %ymm3, %ymm10, %ymm10 -vpsubd %ymm4, %ymm9, %ymm9 -vpsrld $1, %ymm10, %ymm10 -vpsrld $1, %ymm9, %ymm9 -vpand mask32_to_16(%rip), %ymm10, %ymm10 -vpand mask32_to_16(%rip), %ymm9, %ymm9 -vpackusdw %ymm9, %ymm10, %ymm9 -vmovdqa 768(%rsp), %ymm10 -vpaddw 1024(%rsp), %ymm10, %ymm4 -vpsubw 1024(%rsp), %ymm10, %ymm10 -vpsrlw $2, %ymm10, %ymm10 -vpsubw %ymm6, %ymm10, %ymm10 -vpmullw %ymm14, %ymm10, %ymm10 -vpsllw $1, %ymm11, %ymm3 -vpsubw %ymm3, %ymm4, %ymm3 -vpsllw $7, %ymm5, %ymm4 -vpsubw %ymm4, %ymm3, %ymm4 -vpsrlw $3, %ymm4, %ymm4 -vpsubw %ymm9, %ymm4, %ymm4 -vmovdqa 1280(%rsp), %ymm3 -vpsubw %ymm11, %ymm3, %ymm3 -vpmullw %ymm15, %ymm5, %ymm8 -vpsubw %ymm8, %ymm3, %ymm8 -vpmullw %ymm14, %ymm4, %ymm4 -vpsubw %ymm4, %ymm9, %ymm9 -vpmullw %ymm12, %ymm4, %ymm3 -vpaddw %ymm3, %ymm9, %ymm3 -vpmullw %ymm12, %ymm3, %ymm3 -vpsubw %ymm3, %ymm8, %ymm3 -vpmullw %ymm14, %ymm3, %ymm3 -vpsubw %ymm6, %ymm3, %ymm3 -vpsrlw $3, %ymm3, %ymm3 -vpsubw %ymm10, %ymm3, %ymm3 -vpsubw %ymm3, %ymm10, %ymm10 -vpsubw %ymm10, %ymm6, %ymm6 -vpmullw %ymm13, %ymm3, %ymm3 -vpsubw %ymm3, %ymm6, %ymm6 -vmovdqu 64(%rdi), %ymm8 -vpaddw %ymm8, %ymm11, %ymm8 -vmovdqu %xmm8, 64(%rdi) -vextracti128 $1, %ymm8, %xmm8 -vmovq %xmm8, 80(%rdi) -vmovdqu 416(%rdi), %ymm8 -vpaddw %ymm8, %ymm6, %ymm8 -vmovdqu %xmm8, 416(%rdi) -vextracti128 $1, %ymm8, %xmm8 -vmovq %xmm8, 432(%rdi) -vmovdqu 768(%rdi), %ymm8 -vpaddw %ymm8, %ymm9, %ymm8 -vmovdqu %xmm8, 768(%rdi) -vextracti128 $1, %ymm8, %xmm8 -vmovq %xmm8, 784(%rdi) -vmovdqu 1120(%rdi), %ymm8 -vpaddw %ymm8, %ymm10, %ymm8 -vmovdqu %xmm8, 1120(%rdi) -vextracti128 $1, %ymm8, %xmm8 -vmovq %xmm8, 1136(%rdi) -vmovdqu 118(%rdi), %ymm8 -vpaddw %ymm8, %ymm4, %ymm8 -vmovdqu %xmm8, 118(%rdi) -vextracti128 $1, %ymm8, %xmm8 -vmovq %xmm8, 134(%rdi) -vmovdqu 470(%rdi), %ymm8 -vpaddw %ymm8, %ymm3, %ymm8 -vmovdqu %xmm8, 470(%rdi) -vextracti128 $1, %ymm8, %xmm8 -vmovq %xmm8, 486(%rdi) -vmovdqu 822(%rdi), %ymm8 -vpaddw %ymm8, %ymm5, %ymm8 -vmovdqu %xmm8, 822(%rdi) -vextracti128 $1, %ymm8, %xmm8 -vmovq %xmm8, 838(%rdi) -vmovdqa 32(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm3 -vpunpckhwd const0(%rip), %ymm5, %ymm4 -vpslld $1, %ymm3, %ymm3 -vpslld $1, %ymm4, %ymm4 -vmovdqa 288(%rsp), %ymm10 -vpunpcklwd const0(%rip), %ymm10, %ymm9 -vpunpckhwd const0(%rip), %ymm10, %ymm10 -vmovdqa 544(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm9, %ymm8 -vpaddd %ymm6, %ymm10, %ymm7 -vpsubd %ymm3, %ymm8, %ymm8 -vpsubd %ymm4, %ymm7, %ymm7 -vpsubd %ymm11, %ymm9, %ymm11 -vpsubd %ymm6, %ymm10, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1568(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm10 -vpunpckhwd const0(%rip), %ymm11, %ymm9 -vpslld $1, %ymm10, %ymm10 -vpslld $1, %ymm9, %ymm9 -vpsubd %ymm10, %ymm8, %ymm8 -vpsubd %ymm9, %ymm7, %ymm7 -vpsrld $1, %ymm8, %ymm8 -vpsrld $1, %ymm7, %ymm7 -vpand mask32_to_16(%rip), %ymm8, %ymm8 -vpand mask32_to_16(%rip), %ymm7, %ymm7 -vpackusdw %ymm7, %ymm8, %ymm7 -vmovdqa 800(%rsp), %ymm8 -vpaddw 1056(%rsp), %ymm8, %ymm9 -vpsubw 1056(%rsp), %ymm8, %ymm8 -vpsrlw $2, %ymm8, %ymm8 -vpsubw %ymm6, %ymm8, %ymm8 -vpmullw %ymm14, %ymm8, %ymm8 -vpsllw $1, %ymm5, %ymm10 -vpsubw %ymm10, %ymm9, %ymm10 -vpsllw $7, %ymm11, %ymm9 -vpsubw %ymm9, %ymm10, %ymm9 -vpsrlw $3, %ymm9, %ymm9 -vpsubw %ymm7, %ymm9, %ymm9 -vmovdqa 1312(%rsp), %ymm10 -vpsubw %ymm5, %ymm10, %ymm10 -vpmullw %ymm15, %ymm11, %ymm4 -vpsubw %ymm4, %ymm10, %ymm4 -vpmullw %ymm14, %ymm9, %ymm9 -vpsubw %ymm9, %ymm7, %ymm7 -vpmullw %ymm12, %ymm9, %ymm10 -vpaddw %ymm10, %ymm7, %ymm10 -vpmullw %ymm12, %ymm10, %ymm10 -vpsubw %ymm10, %ymm4, %ymm10 -vpmullw %ymm14, %ymm10, %ymm10 -vpsubw %ymm6, %ymm10, %ymm10 -vpsrlw $3, %ymm10, %ymm10 -vpsubw %ymm8, %ymm10, %ymm10 -vpsubw %ymm10, %ymm8, %ymm8 -vpsubw %ymm8, %ymm6, %ymm6 -vpmullw %ymm13, %ymm10, %ymm10 -vpsubw %ymm10, %ymm6, %ymm6 -vmovdqu 152(%rdi), %ymm4 -vpaddw %ymm4, %ymm5, %ymm4 -vmovdqu %xmm4, 152(%rdi) -vextracti128 $1, %ymm4, %xmm4 -vmovq %xmm4, 168(%rdi) -vmovdqu 504(%rdi), %ymm4 -vpaddw %ymm4, %ymm6, %ymm4 -vmovdqu %xmm4, 504(%rdi) -vextracti128 $1, %ymm4, %xmm4 -vmovq %xmm4, 520(%rdi) -vmovdqu 856(%rdi), %ymm4 -vpaddw %ymm4, %ymm7, %ymm4 -vmovdqu %xmm4, 856(%rdi) -vextracti128 $1, %ymm4, %xmm4 -vmovq %xmm4, 872(%rdi) -vmovdqu 1208(%rdi), %ymm4 -vpaddw %ymm4, %ymm8, %ymm4 -vmovdqu %xmm4, 1208(%rdi) -vextracti128 $1, %ymm4, %xmm4 -vmovq %xmm4, 1224(%rdi) -vmovdqu 206(%rdi), %ymm4 -vpaddw %ymm4, %ymm9, %ymm4 -vmovdqu %xmm4, 206(%rdi) -vextracti128 $1, %ymm4, %xmm4 -vmovq %xmm4, 222(%rdi) -vmovdqu 558(%rdi), %ymm4 -vpaddw %ymm4, %ymm10, %ymm4 -vmovdqu %xmm4, 558(%rdi) -vextracti128 $1, %ymm4, %xmm4 -vmovq %xmm4, 574(%rdi) -vmovdqu 910(%rdi), %ymm4 -vpaddw %ymm4, %ymm11, %ymm4 -vmovdqu %xmm4, 910(%rdi) -vextracti128 $1, %ymm4, %xmm4 -vmovq %xmm4, 926(%rdi) -vmovdqa 64(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm10 -vpunpckhwd const0(%rip), %ymm11, %ymm9 -vpslld $1, %ymm10, %ymm10 -vpslld $1, %ymm9, %ymm9 -vmovdqa 320(%rsp), %ymm8 -vpunpcklwd const0(%rip), %ymm8, %ymm7 -vpunpckhwd const0(%rip), %ymm8, %ymm8 -vmovdqa 576(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm7, %ymm4 -vpaddd %ymm6, %ymm8, %ymm3 -vpsubd %ymm10, %ymm4, %ymm4 -vpsubd %ymm9, %ymm3, %ymm3 -vpsubd %ymm5, %ymm7, %ymm5 -vpsubd %ymm6, %ymm8, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1600(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm8 -vpunpckhwd const0(%rip), %ymm5, %ymm7 -vpslld $1, %ymm8, %ymm8 -vpslld $1, %ymm7, %ymm7 -vpsubd %ymm8, %ymm4, %ymm4 -vpsubd %ymm7, %ymm3, %ymm3 -vpsrld $1, %ymm4, %ymm4 -vpsrld $1, %ymm3, %ymm3 -vpand mask32_to_16(%rip), %ymm4, %ymm4 -vpand mask32_to_16(%rip), %ymm3, %ymm3 -vpackusdw %ymm3, %ymm4, %ymm3 -vmovdqa 832(%rsp), %ymm4 -vpaddw 1088(%rsp), %ymm4, %ymm7 -vpsubw 1088(%rsp), %ymm4, %ymm4 -vpsrlw $2, %ymm4, %ymm4 -vpsubw %ymm6, %ymm4, %ymm4 -vpmullw %ymm14, %ymm4, %ymm4 -vpsllw $1, %ymm11, %ymm8 -vpsubw %ymm8, %ymm7, %ymm8 -vpsllw $7, %ymm5, %ymm7 -vpsubw %ymm7, %ymm8, %ymm7 -vpsrlw $3, %ymm7, %ymm7 -vpsubw %ymm3, %ymm7, %ymm7 -vmovdqa 1344(%rsp), %ymm8 -vpsubw %ymm11, %ymm8, %ymm8 -vpmullw %ymm15, %ymm5, %ymm9 -vpsubw %ymm9, %ymm8, %ymm9 -vpmullw %ymm14, %ymm7, %ymm7 -vpsubw %ymm7, %ymm3, %ymm3 -vpmullw %ymm12, %ymm7, %ymm8 -vpaddw %ymm8, %ymm3, %ymm8 -vpmullw %ymm12, %ymm8, %ymm8 -vpsubw %ymm8, %ymm9, %ymm8 -vpmullw %ymm14, %ymm8, %ymm8 -vpsubw %ymm6, %ymm8, %ymm8 -vpsrlw $3, %ymm8, %ymm8 -vpsubw %ymm4, %ymm8, %ymm8 -vpsubw %ymm8, %ymm4, %ymm4 -vpsubw %ymm4, %ymm6, %ymm6 -vpmullw %ymm13, %ymm8, %ymm8 -vpsubw %ymm8, %ymm6, %ymm6 -vmovdqu 240(%rdi), %ymm9 -vpaddw %ymm9, %ymm11, %ymm9 -vmovdqu %xmm9, 240(%rdi) -vextracti128 $1, %ymm9, %xmm9 -vmovq %xmm9, 256(%rdi) -vmovdqu 592(%rdi), %ymm9 -vpaddw %ymm9, %ymm6, %ymm9 -vmovdqu %xmm9, 592(%rdi) -vextracti128 $1, %ymm9, %xmm9 -vmovq %xmm9, 608(%rdi) -vmovdqu 944(%rdi), %ymm9 -vpaddw %ymm9, %ymm3, %ymm9 -vmovdqu %xmm9, 944(%rdi) -vextracti128 $1, %ymm9, %xmm9 -vmovq %xmm9, 960(%rdi) -vmovdqu 1296(%rdi), %ymm9 -vpaddw %ymm9, %ymm4, %ymm9 -vmovdqu %xmm9, 1296(%rdi) -vextracti128 $1, %ymm9, %xmm9 -vmovq %xmm9, 1312(%rdi) -vmovdqu 294(%rdi), %ymm9 -vpaddw %ymm9, %ymm7, %ymm9 -vmovdqu %xmm9, 294(%rdi) -vextracti128 $1, %ymm9, %xmm9 -vmovq %xmm9, 310(%rdi) -vmovdqu 646(%rdi), %ymm9 -vpaddw %ymm9, %ymm8, %ymm9 -vmovdqu %xmm9, 646(%rdi) -vextracti128 $1, %ymm9, %xmm9 -vmovq %xmm9, 662(%rdi) -vmovdqu 998(%rdi), %ymm9 -vpaddw %ymm9, %ymm5, %ymm9 -vmovdqu %xmm9, 998(%rdi) -vextracti128 $1, %ymm9, %xmm9 -vmovq %xmm9, 1014(%rdi) -vmovdqa 96(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm8 -vpunpckhwd const0(%rip), %ymm5, %ymm7 -vpslld $1, %ymm8, %ymm8 -vpslld $1, %ymm7, %ymm7 -vmovdqa 352(%rsp), %ymm4 -vpunpcklwd const0(%rip), %ymm4, %ymm3 -vpunpckhwd const0(%rip), %ymm4, %ymm4 -vmovdqa 608(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm3, %ymm9 -vpaddd %ymm6, %ymm4, %ymm10 -vpsubd %ymm8, %ymm9, %ymm9 -vpsubd %ymm7, %ymm10, %ymm10 -vpsubd %ymm11, %ymm3, %ymm11 -vpsubd %ymm6, %ymm4, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1632(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm4 -vpunpckhwd const0(%rip), %ymm11, %ymm3 -vpslld $1, %ymm4, %ymm4 -vpslld $1, %ymm3, %ymm3 -vpsubd %ymm4, %ymm9, %ymm9 -vpsubd %ymm3, %ymm10, %ymm10 -vpsrld $1, %ymm9, %ymm9 -vpsrld $1, %ymm10, %ymm10 -vpand mask32_to_16(%rip), %ymm9, %ymm9 -vpand mask32_to_16(%rip), %ymm10, %ymm10 -vpackusdw %ymm10, %ymm9, %ymm10 -vmovdqa 864(%rsp), %ymm9 -vpaddw 1120(%rsp), %ymm9, %ymm3 -vpsubw 1120(%rsp), %ymm9, %ymm9 -vpsrlw $2, %ymm9, %ymm9 -vpsubw %ymm6, %ymm9, %ymm9 -vpmullw %ymm14, %ymm9, %ymm9 -vpsllw $1, %ymm5, %ymm4 -vpsubw %ymm4, %ymm3, %ymm4 -vpsllw $7, %ymm11, %ymm3 -vpsubw %ymm3, %ymm4, %ymm3 -vpsrlw $3, %ymm3, %ymm3 -vpsubw %ymm10, %ymm3, %ymm3 -vmovdqa 1376(%rsp), %ymm4 -vpsubw %ymm5, %ymm4, %ymm4 -vpmullw %ymm15, %ymm11, %ymm7 -vpsubw %ymm7, %ymm4, %ymm7 -vpmullw %ymm14, %ymm3, %ymm3 -vpsubw %ymm3, %ymm10, %ymm10 -vpmullw %ymm12, %ymm3, %ymm4 -vpaddw %ymm4, %ymm10, %ymm4 -vpmullw %ymm12, %ymm4, %ymm4 -vpsubw %ymm4, %ymm7, %ymm4 -vpmullw %ymm14, %ymm4, %ymm4 -vpsubw %ymm6, %ymm4, %ymm4 -vpsrlw $3, %ymm4, %ymm4 -vpsubw %ymm9, %ymm4, %ymm4 -vpsubw %ymm4, %ymm9, %ymm9 -vpsubw %ymm9, %ymm6, %ymm6 -vpmullw %ymm13, %ymm4, %ymm4 -vpsubw %ymm4, %ymm6, %ymm6 -vmovdqu 328(%rdi), %ymm7 -vpaddw %ymm7, %ymm5, %ymm7 -vmovdqu %xmm7, 328(%rdi) -vextracti128 $1, %ymm7, %xmm7 -vmovq %xmm7, 344(%rdi) -vmovdqu 680(%rdi), %ymm7 -vpaddw %ymm7, %ymm6, %ymm7 -vmovdqu %xmm7, 680(%rdi) -vextracti128 $1, %ymm7, %xmm7 -vmovq %xmm7, 696(%rdi) -vmovdqu 1032(%rdi), %ymm7 -vpaddw %ymm7, %ymm10, %ymm7 -vmovdqu %xmm7, 1032(%rdi) -vextracti128 $1, %ymm7, %xmm7 -vmovq %xmm7, 1048(%rdi) -vmovdqu 30(%rdi), %ymm7 -vpaddw %ymm7, %ymm9, %ymm7 -vmovdqu %xmm7, 30(%rdi) -vextracti128 $1, %ymm7, %xmm7 -vmovq %xmm7, 46(%rdi) -vmovdqu 382(%rdi), %ymm7 -vpaddw %ymm7, %ymm3, %ymm7 -vmovdqu %xmm7, 382(%rdi) -vextracti128 $1, %ymm7, %xmm7 -vmovq %xmm7, 398(%rdi) -vmovdqu 734(%rdi), %ymm7 -vpaddw %ymm7, %ymm4, %ymm7 -vmovdqu %xmm7, 734(%rdi) -vextracti128 $1, %ymm7, %xmm7 -vmovq %xmm7, 750(%rdi) -vmovdqu 1086(%rdi), %ymm7 -vpaddw %ymm7, %ymm11, %ymm7 -vmovdqu %xmm7, 1086(%rdi) -vextracti128 $1, %ymm7, %xmm7 -vmovq %xmm7, 1102(%rdi) -vmovdqa 128(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm4 -vpunpckhwd const0(%rip), %ymm11, %ymm3 -vpslld $1, %ymm4, %ymm4 -vpslld $1, %ymm3, %ymm3 -vmovdqa 384(%rsp), %ymm9 -vpunpcklwd const0(%rip), %ymm9, %ymm10 -vpunpckhwd const0(%rip), %ymm9, %ymm9 -vmovdqa 640(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm10, %ymm7 -vpaddd %ymm6, %ymm9, %ymm8 -vpsubd %ymm4, %ymm7, %ymm7 -vpsubd %ymm3, %ymm8, %ymm8 -vpsubd %ymm5, %ymm10, %ymm5 -vpsubd %ymm6, %ymm9, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1664(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm9 -vpunpckhwd const0(%rip), %ymm5, %ymm10 -vpslld $1, %ymm9, %ymm9 -vpslld $1, %ymm10, %ymm10 -vpsubd %ymm9, %ymm7, %ymm7 -vpsubd %ymm10, %ymm8, %ymm8 -vpsrld $1, %ymm7, %ymm7 -vpsrld $1, %ymm8, %ymm8 -vpand mask32_to_16(%rip), %ymm7, %ymm7 -vpand mask32_to_16(%rip), %ymm8, %ymm8 -vpackusdw %ymm8, %ymm7, %ymm8 -vmovdqa 896(%rsp), %ymm7 -vpaddw 1152(%rsp), %ymm7, %ymm10 -vpsubw 1152(%rsp), %ymm7, %ymm7 -vpsrlw $2, %ymm7, %ymm7 -vpsubw %ymm6, %ymm7, %ymm7 -vpmullw %ymm14, %ymm7, %ymm7 -vpsllw $1, %ymm11, %ymm9 -vpsubw %ymm9, %ymm10, %ymm9 -vpsllw $7, %ymm5, %ymm10 -vpsubw %ymm10, %ymm9, %ymm10 -vpsrlw $3, %ymm10, %ymm10 -vpsubw %ymm8, %ymm10, %ymm10 -vmovdqa 1408(%rsp), %ymm9 -vpsubw %ymm11, %ymm9, %ymm9 -vpmullw %ymm15, %ymm5, %ymm3 -vpsubw %ymm3, %ymm9, %ymm3 -vpmullw %ymm14, %ymm10, %ymm10 -vpsubw %ymm10, %ymm8, %ymm8 -vpmullw %ymm12, %ymm10, %ymm9 -vpaddw %ymm9, %ymm8, %ymm9 -vpmullw %ymm12, %ymm9, %ymm9 -vpsubw %ymm9, %ymm3, %ymm9 -vpmullw %ymm14, %ymm9, %ymm9 -vpsubw %ymm6, %ymm9, %ymm9 -vpsrlw $3, %ymm9, %ymm9 -vpsubw %ymm7, %ymm9, %ymm9 -vpsubw %ymm9, %ymm7, %ymm7 -vpsubw %ymm7, %ymm6, %ymm6 -vpmullw %ymm13, %ymm9, %ymm9 -vpsubw %ymm9, %ymm6, %ymm6 -vmovdqu 416(%rdi), %ymm3 -vpaddw %ymm3, %ymm11, %ymm3 -vmovdqu %xmm3, 416(%rdi) -vextracti128 $1, %ymm3, %xmm3 -vmovq %xmm3, 432(%rdi) -vmovdqu 768(%rdi), %ymm3 -vpaddw %ymm3, %ymm6, %ymm3 -vmovdqu %xmm3, 768(%rdi) -vextracti128 $1, %ymm3, %xmm3 -vmovq %xmm3, 784(%rdi) -vmovdqu 1120(%rdi), %ymm3 -vpaddw %ymm3, %ymm8, %ymm3 -vmovdqu %xmm3, 1120(%rdi) -vextracti128 $1, %ymm3, %xmm3 -vmovq %xmm3, 1136(%rdi) -vmovdqu 118(%rdi), %ymm3 -vpaddw %ymm3, %ymm7, %ymm3 -vmovdqu %xmm3, 118(%rdi) -vextracti128 $1, %ymm3, %xmm3 -vmovq %xmm3, 134(%rdi) -vmovdqu 470(%rdi), %ymm3 -vpaddw %ymm3, %ymm10, %ymm3 -vmovdqu %xmm3, 470(%rdi) -vextracti128 $1, %ymm3, %xmm3 -vmovq %xmm3, 486(%rdi) -vmovdqu 822(%rdi), %ymm3 -vpaddw %ymm3, %ymm9, %ymm3 -vmovdqu %xmm3, 822(%rdi) -vextracti128 $1, %ymm3, %xmm3 -vmovq %xmm3, 838(%rdi) -vmovdqu 1174(%rdi), %ymm3 -vpaddw %ymm3, %ymm5, %ymm3 -vmovdqu %xmm3, 1174(%rdi) -vextracti128 $1, %ymm3, %xmm3 -vmovq %xmm3, 1190(%rdi) -vmovdqa 160(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm9 -vpunpckhwd const0(%rip), %ymm5, %ymm10 -vpslld $1, %ymm9, %ymm9 -vpslld $1, %ymm10, %ymm10 -vmovdqa 416(%rsp), %ymm7 -vpunpcklwd const0(%rip), %ymm7, %ymm8 -vpunpckhwd const0(%rip), %ymm7, %ymm7 -vmovdqa 672(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm8, %ymm3 -vpaddd %ymm6, %ymm7, %ymm4 -vpsubd %ymm9, %ymm3, %ymm3 -vpsubd %ymm10, %ymm4, %ymm4 -vpsubd %ymm11, %ymm8, %ymm11 -vpsubd %ymm6, %ymm7, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1696(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm7 -vpunpckhwd const0(%rip), %ymm11, %ymm8 -vpslld $1, %ymm7, %ymm7 -vpslld $1, %ymm8, %ymm8 -vpsubd %ymm7, %ymm3, %ymm3 -vpsubd %ymm8, %ymm4, %ymm4 -vpsrld $1, %ymm3, %ymm3 -vpsrld $1, %ymm4, %ymm4 -vpand mask32_to_16(%rip), %ymm3, %ymm3 -vpand mask32_to_16(%rip), %ymm4, %ymm4 -vpackusdw %ymm4, %ymm3, %ymm4 -vmovdqa 928(%rsp), %ymm3 -vpaddw 1184(%rsp), %ymm3, %ymm8 -vpsubw 1184(%rsp), %ymm3, %ymm3 -vpsrlw $2, %ymm3, %ymm3 -vpsubw %ymm6, %ymm3, %ymm3 -vpmullw %ymm14, %ymm3, %ymm3 -vpsllw $1, %ymm5, %ymm7 -vpsubw %ymm7, %ymm8, %ymm7 -vpsllw $7, %ymm11, %ymm8 -vpsubw %ymm8, %ymm7, %ymm8 -vpsrlw $3, %ymm8, %ymm8 -vpsubw %ymm4, %ymm8, %ymm8 -vmovdqa 1440(%rsp), %ymm7 -vpsubw %ymm5, %ymm7, %ymm7 -vpmullw %ymm15, %ymm11, %ymm10 -vpsubw %ymm10, %ymm7, %ymm10 -vpmullw %ymm14, %ymm8, %ymm8 -vpsubw %ymm8, %ymm4, %ymm4 -vpmullw %ymm12, %ymm8, %ymm7 -vpaddw %ymm7, %ymm4, %ymm7 -vpmullw %ymm12, %ymm7, %ymm7 -vpsubw %ymm7, %ymm10, %ymm7 -vpmullw %ymm14, %ymm7, %ymm7 -vpsubw %ymm6, %ymm7, %ymm7 -vpsrlw $3, %ymm7, %ymm7 -vpsubw %ymm3, %ymm7, %ymm7 -vpsubw %ymm7, %ymm3, %ymm3 -vpsubw %ymm3, %ymm6, %ymm6 -vpmullw %ymm13, %ymm7, %ymm7 -vpsubw %ymm7, %ymm6, %ymm6 -vmovdqu 504(%rdi), %ymm10 -vpaddw %ymm10, %ymm5, %ymm10 -vmovdqu %xmm10, 504(%rdi) -vextracti128 $1, %ymm10, %xmm10 -vmovq %xmm10, 520(%rdi) -vmovdqu 856(%rdi), %ymm10 -vpaddw %ymm10, %ymm6, %ymm10 -vmovdqu %xmm10, 856(%rdi) -vextracti128 $1, %ymm10, %xmm10 -vmovq %xmm10, 872(%rdi) -vmovdqu 1208(%rdi), %ymm10 -vpaddw %ymm10, %ymm4, %ymm10 -vmovdqu %xmm10, 1208(%rdi) -vextracti128 $1, %ymm10, %xmm10 -vmovq %xmm10, 1224(%rdi) -vmovdqu 206(%rdi), %ymm10 -vpaddw %ymm10, %ymm3, %ymm10 -vmovdqu %xmm10, 206(%rdi) -vextracti128 $1, %ymm10, %xmm10 -vmovq %xmm10, 222(%rdi) -vmovdqu 558(%rdi), %ymm10 -vpaddw %ymm10, %ymm8, %ymm10 -vmovdqu %xmm10, 558(%rdi) -vextracti128 $1, %ymm10, %xmm10 -vmovq %xmm10, 574(%rdi) -vmovdqu 910(%rdi), %ymm10 -vpaddw %ymm10, %ymm7, %ymm10 -vmovdqu %xmm10, 910(%rdi) -vextracti128 $1, %ymm10, %xmm10 -vmovq %xmm10, 926(%rdi) -vmovdqu 1262(%rdi), %ymm10 -vpaddw %ymm10, %ymm11, %ymm10 -vmovdqu %xmm10, 1262(%rdi) -vextracti128 $1, %ymm10, %xmm10 -vmovq %xmm10, 1278(%rdi) -vmovdqa 192(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm7 -vpunpckhwd const0(%rip), %ymm11, %ymm8 -vpslld $1, %ymm7, %ymm7 -vpslld $1, %ymm8, %ymm8 -vmovdqa 448(%rsp), %ymm3 -vpunpcklwd const0(%rip), %ymm3, %ymm4 -vpunpckhwd const0(%rip), %ymm3, %ymm3 -vmovdqa 704(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm4, %ymm10 -vpaddd %ymm6, %ymm3, %ymm9 -vpsubd %ymm7, %ymm10, %ymm10 -vpsubd %ymm8, %ymm9, %ymm9 -vpsubd %ymm5, %ymm4, %ymm5 -vpsubd %ymm6, %ymm3, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1728(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm3 -vpunpckhwd const0(%rip), %ymm5, %ymm4 -vpslld $1, %ymm3, %ymm3 -vpslld $1, %ymm4, %ymm4 -vpsubd %ymm3, %ymm10, %ymm10 -vpsubd %ymm4, %ymm9, %ymm9 -vpsrld $1, %ymm10, %ymm10 -vpsrld $1, %ymm9, %ymm9 -vpand mask32_to_16(%rip), %ymm10, %ymm10 -vpand mask32_to_16(%rip), %ymm9, %ymm9 -vpackusdw %ymm9, %ymm10, %ymm9 -vmovdqa 960(%rsp), %ymm10 -vpaddw 1216(%rsp), %ymm10, %ymm4 -vpsubw 1216(%rsp), %ymm10, %ymm10 -vpsrlw $2, %ymm10, %ymm10 -vpsubw %ymm6, %ymm10, %ymm10 -vpmullw %ymm14, %ymm10, %ymm10 -vpsllw $1, %ymm11, %ymm3 -vpsubw %ymm3, %ymm4, %ymm3 -vpsllw $7, %ymm5, %ymm4 -vpsubw %ymm4, %ymm3, %ymm4 -vpsrlw $3, %ymm4, %ymm4 -vpsubw %ymm9, %ymm4, %ymm4 -vmovdqa 1472(%rsp), %ymm3 -vpsubw %ymm11, %ymm3, %ymm3 -vpmullw %ymm15, %ymm5, %ymm8 -vpsubw %ymm8, %ymm3, %ymm8 -vpmullw %ymm14, %ymm4, %ymm4 -vpsubw %ymm4, %ymm9, %ymm9 -vpmullw %ymm12, %ymm4, %ymm3 -vpaddw %ymm3, %ymm9, %ymm3 -vpmullw %ymm12, %ymm3, %ymm3 -vpsubw %ymm3, %ymm8, %ymm3 -vpmullw %ymm14, %ymm3, %ymm3 -vpsubw %ymm6, %ymm3, %ymm3 -vpsrlw $3, %ymm3, %ymm3 -vpsubw %ymm10, %ymm3, %ymm3 -vpsubw %ymm3, %ymm10, %ymm10 -vpsubw %ymm10, %ymm6, %ymm6 -vpmullw %ymm13, %ymm3, %ymm3 -vpsubw %ymm3, %ymm6, %ymm6 -vmovdqu 592(%rdi), %ymm8 -vpaddw %ymm8, %ymm11, %ymm8 -vmovdqu %xmm8, 592(%rdi) -vextracti128 $1, %ymm8, %xmm8 -vmovq %xmm8, 608(%rdi) -vmovdqu 944(%rdi), %ymm8 -vpaddw %ymm8, %ymm6, %ymm8 -vmovdqu %xmm8, 944(%rdi) -vextracti128 $1, %ymm8, %xmm8 -vmovq %xmm8, 960(%rdi) -vmovdqu 1296(%rdi), %ymm8 -vpaddw %ymm8, %ymm9, %ymm8 -vmovdqu %xmm8, 1296(%rdi) -vextracti128 $1, %ymm8, %xmm8 -vmovq %xmm8, 1312(%rdi) -vmovdqu 294(%rdi), %ymm8 -vpaddw %ymm8, %ymm10, %ymm8 -vmovdqu %xmm8, 294(%rdi) -vextracti128 $1, %ymm8, %xmm8 -vmovq %xmm8, 310(%rdi) -vmovdqu 646(%rdi), %ymm8 -vpaddw %ymm8, %ymm4, %ymm8 -vmovdqu %xmm8, 646(%rdi) -vextracti128 $1, %ymm8, %xmm8 -vmovq %xmm8, 662(%rdi) -vmovdqu 998(%rdi), %ymm8 -vpaddw %ymm8, %ymm3, %ymm8 -vmovdqu %xmm8, 998(%rdi) -vextracti128 $1, %ymm8, %xmm8 -vmovq %xmm8, 1014(%rdi) -vmovdqu 1350(%rdi), %ymm8 -vpaddw %ymm8, %ymm5, %ymm8 -vmovdqu %xmm8, 1350(%rdi) -vextracti128 $1, %ymm8, %xmm8 -vmovq %xmm8, 1366(%rdi) -vmovdqa 224(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm3 -vpunpckhwd const0(%rip), %ymm5, %ymm4 -vpslld $1, %ymm3, %ymm3 -vpslld $1, %ymm4, %ymm4 -vmovdqa 480(%rsp), %ymm10 -vpunpcklwd const0(%rip), %ymm10, %ymm9 -vpunpckhwd const0(%rip), %ymm10, %ymm10 -vmovdqa 736(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm9, %ymm8 -vpaddd %ymm6, %ymm10, %ymm7 -vpsubd %ymm3, %ymm8, %ymm8 -vpsubd %ymm4, %ymm7, %ymm7 -vpsubd %ymm11, %ymm9, %ymm11 -vpsubd %ymm6, %ymm10, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1760(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm10 -vpunpckhwd const0(%rip), %ymm11, %ymm9 -vpslld $1, %ymm10, %ymm10 -vpslld $1, %ymm9, %ymm9 -vpsubd %ymm10, %ymm8, %ymm8 -vpsubd %ymm9, %ymm7, %ymm7 -vpsrld $1, %ymm8, %ymm8 -vpsrld $1, %ymm7, %ymm7 -vpand mask32_to_16(%rip), %ymm8, %ymm8 -vpand mask32_to_16(%rip), %ymm7, %ymm7 -vpackusdw %ymm7, %ymm8, %ymm7 -vmovdqa 992(%rsp), %ymm8 -vpaddw 1248(%rsp), %ymm8, %ymm9 -vpsubw 1248(%rsp), %ymm8, %ymm8 -vpsrlw $2, %ymm8, %ymm8 -vpsubw %ymm6, %ymm8, %ymm8 -vpmullw %ymm14, %ymm8, %ymm8 -vpsllw $1, %ymm5, %ymm10 -vpsubw %ymm10, %ymm9, %ymm10 -vpsllw $7, %ymm11, %ymm9 -vpsubw %ymm9, %ymm10, %ymm9 -vpsrlw $3, %ymm9, %ymm9 -vpsubw %ymm7, %ymm9, %ymm9 -vmovdqa 1504(%rsp), %ymm10 -vpsubw %ymm5, %ymm10, %ymm10 -vpmullw %ymm15, %ymm11, %ymm4 -vpsubw %ymm4, %ymm10, %ymm4 -vpmullw %ymm14, %ymm9, %ymm9 -vpsubw %ymm9, %ymm7, %ymm7 -vpmullw %ymm12, %ymm9, %ymm10 -vpaddw %ymm10, %ymm7, %ymm10 -vpmullw %ymm12, %ymm10, %ymm10 -vpsubw %ymm10, %ymm4, %ymm10 -vpmullw %ymm14, %ymm10, %ymm10 -vpsubw %ymm6, %ymm10, %ymm10 -vpsrlw $3, %ymm10, %ymm10 -vpsubw %ymm8, %ymm10, %ymm10 -vpsubw %ymm10, %ymm8, %ymm8 -vpsubw %ymm8, %ymm6, %ymm6 -vpmullw %ymm13, %ymm10, %ymm10 -vpsubw %ymm10, %ymm6, %ymm6 -vmovdqu 680(%rdi), %ymm4 -vpaddw %ymm4, %ymm5, %ymm4 -vmovdqu %xmm4, 680(%rdi) -vextracti128 $1, %ymm4, %xmm4 -vmovq %xmm4, 696(%rdi) -vmovdqu 1032(%rdi), %ymm4 -vpaddw %ymm4, %ymm6, %ymm4 -vmovdqu %xmm4, 1032(%rdi) -vextracti128 $1, %ymm4, %xmm4 -vmovq %xmm4, 1048(%rdi) -vmovdqu 30(%rdi), %ymm4 -vpaddw %ymm4, %ymm7, %ymm4 -vmovdqu %xmm4, 30(%rdi) -vextracti128 $1, %ymm4, %xmm4 -vmovq %xmm4, 46(%rdi) -vmovdqu 382(%rdi), %ymm4 -vpaddw %ymm4, %ymm8, %ymm4 -vmovdqu %xmm4, 382(%rdi) -vextracti128 $1, %ymm4, %xmm4 -vmovq %xmm4, 398(%rdi) -vmovdqu 734(%rdi), %ymm4 -vpaddw %ymm4, %ymm9, %ymm4 -vmovdqu %xmm4, 734(%rdi) -vextracti128 $1, %ymm4, %xmm4 -vmovq %xmm4, 750(%rdi) -vmovdqu 1086(%rdi), %ymm4 -vpaddw %ymm4, %ymm10, %ymm4 -vmovdqu %xmm4, 1086(%rdi) -vextracti128 $1, %ymm4, %xmm4 -vmovq %xmm4, 1102(%rdi) -mov %r8, %rsp -pop %r12 -ret diff --git a/src/kem/ntru/ntruhps2048677/avx2/poly_rq_to_s3.s b/src/kem/ntru/ntruhps2048677/avx2/poly_rq_to_s3.s deleted file mode 100644 index 59297eb2..00000000 --- a/src/kem/ntru/ntruhps2048677/avx2/poly_rq_to_s3.s +++ /dev/null @@ -1,1116 +0,0 @@ -.data -.p2align 5 -mask_modq: -.word 2047 -.word 2047 -.word 2047 -.word 2047 -.word 2047 -.word 2047 -.word 2047 -.word 2047 -.word 2047 -.word 2047 -.word 2047 -.word 2047 -.word 2047 -.word 2047 -.word 2047 -.word 2047 -mask_ff: -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -mask_f: -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -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 -.text -.global PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_to_S3 -.global _PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_to_S3 -PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_to_S3: -_PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_to_S3: -vmovdqa mask_modq(%rip), %ymm6 -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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %ymm1, %ymm14 -vpxor %ymm14, %ymm0, %ymm1 -vmovdqa %ymm1, 1376(%rdi) -ret diff --git a/src/kem/ntru/ntruhps2048677/avx2/poly_s3_inv.c b/src/kem/ntru/ntruhps2048677/avx2/poly_s3_inv.c deleted file mode 100644 index 4c41f74e..00000000 --- a/src/kem/ntru/ntruhps2048677/avx2/poly_s3_inv.c +++ /dev/null @@ -1,569 +0,0 @@ -#include "poly.h" - -#include - -typedef signed char small; - -#define p 676 -#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(511, -1, 511, -1, 511, -1, 1023, -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 = 327; 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_NTRUHPS2048677_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/src/kem/ntru/ntruhps2048677/avx2/sample.c b/src/kem/ntru/ntruhps2048677/avx2/sample.c deleted file mode 100644 index 9c5618ac..00000000 --- a/src/kem/ntru/ntruhps2048677/avx2/sample.c +++ /dev/null @@ -1,45 +0,0 @@ -#include "sample.h" - -void PQCLEAN_NTRUHPS2048677_AVX2_sample_fg(poly *f, poly *g, const unsigned char uniformbytes[NTRU_SAMPLE_FG_BYTES]) { - - PQCLEAN_NTRUHPS2048677_AVX2_sample_iid(f, uniformbytes); - PQCLEAN_NTRUHPS2048677_AVX2_sample_fixed_type(g, uniformbytes + NTRU_SAMPLE_IID_BYTES); -} - -void PQCLEAN_NTRUHPS2048677_AVX2_sample_rm(poly *r, poly *m, const unsigned char uniformbytes[NTRU_SAMPLE_RM_BYTES]) { - - PQCLEAN_NTRUHPS2048677_AVX2_sample_iid(r, uniformbytes); - PQCLEAN_NTRUHPS2048677_AVX2_sample_fixed_type(m, uniformbytes + NTRU_SAMPLE_IID_BYTES); -} - - -void PQCLEAN_NTRUHPS2048677_AVX2_sample_fixed_type(poly *r, const unsigned char u[NTRU_SAMPLE_FT_BYTES]) { - // Assumes NTRU_SAMPLE_FT_BYTES = ceil(30*(n-1)/8) - - int32_t s[NTRU_N - 1]; - int i; - - // Use 30 bits of u per word - for (i = 0; i < (NTRU_N - 1) / 4; i++) { - s[4 * i + 0] = (u[15 * i + 0] << 2) + (u[15 * i + 1] << 10) + (u[15 * i + 2] << 18) + ((uint32_t) u[15 * i + 3] << 26); - s[4 * i + 1] = ((u[15 * i + 3] & 0xc0) >> 4) + (u[15 * i + 4] << 4) + (u[15 * i + 5] << 12) + (u[15 * i + 6] << 20) + ((uint32_t) u[15 * i + 7] << 28); - s[4 * i + 2] = ((u[15 * i + 7] & 0xf0) >> 2) + (u[15 * i + 8] << 6) + (u[15 * i + 9] << 14) + (u[15 * i + 10] << 22) + ((uint32_t) u[15 * i + 11] << 30); - s[4 * i + 3] = (u[15 * i + 11] & 0xfc) + (u[15 * i + 12] << 8) + (u[15 * i + 13] << 16) + ((uint32_t) u[15 * i + 14] << 24); - } - - for (i = 0; i < NTRU_WEIGHT / 2; i++) { - s[i] |= 1; - } - - for (i = NTRU_WEIGHT / 2; i < NTRU_WEIGHT; i++) { - s[i] |= 2; - } - - PQCLEAN_NTRUHPS2048677_AVX2_crypto_sort_int32(s, NTRU_N - 1); - - for (i = 0; i < NTRU_N - 1; i++) { - r->coeffs[i] = ((uint16_t) (s[i] & 3)); - } - - r->coeffs[NTRU_N - 1] = 0; -} diff --git a/src/kem/ntru/ntruhps2048677/avx2/sample.h b/src/kem/ntru/ntruhps2048677/avx2/sample.h deleted file mode 100644 index c7ac518b..00000000 --- a/src/kem/ntru/ntruhps2048677/avx2/sample.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef SAMPLE_H -#define SAMPLE_H - -#include "params.h" -#include "poly.h" - -#include "crypto_sort_int32.h" - -void PQCLEAN_NTRUHPS2048677_AVX2_sample_fg(poly *f, poly *g, const unsigned char uniformbytes[NTRU_SAMPLE_FG_BYTES]); -void PQCLEAN_NTRUHPS2048677_AVX2_sample_rm(poly *r, poly *m, const unsigned char uniformbytes[NTRU_SAMPLE_RM_BYTES]); - -void PQCLEAN_NTRUHPS2048677_AVX2_sample_iid(poly *r, const unsigned char uniformbytes[NTRU_SAMPLE_IID_BYTES]); - -void PQCLEAN_NTRUHPS2048677_AVX2_sample_fixed_type(poly *r, const unsigned char uniformbytes[NTRU_SAMPLE_FT_BYTES]); - - -#endif diff --git a/src/kem/ntru/ntruhps2048677/avx2/sample_iid.c b/src/kem/ntru/ntruhps2048677/avx2/sample_iid.c deleted file mode 100644 index 63e23528..00000000 --- a/src/kem/ntru/ntruhps2048677/avx2/sample_iid.c +++ /dev/null @@ -1,21 +0,0 @@ -#include - -#include "sample.h" - -extern void PQCLEAN_NTRUHPS2048677_AVX2_vec32_sample_iid(poly *r, const unsigned char uniformbytes[PAD32(NTRU_SAMPLE_IID_BYTES)]); - -void PQCLEAN_NTRUHPS2048677_AVX2_sample_iid(poly *r, const unsigned char uniformbytes[NTRU_SAMPLE_IID_BYTES]) { - int i; - union { /* align to 32 byte boundary for vmovdqa */ - unsigned char b[PAD32(NTRU_SAMPLE_IID_BYTES)]; - __m256i b_x32[PAD32(NTRU_SAMPLE_IID_BYTES) / 32]; - } buffer; - - for (i = 0; i < NTRU_SAMPLE_IID_BYTES; i++) { - buffer.b[i] = uniformbytes[i]; - } - for (i = NTRU_SAMPLE_IID_BYTES; i < PAD32(NTRU_SAMPLE_IID_BYTES); i++) { - buffer.b[i] = 0; - } - PQCLEAN_NTRUHPS2048677_AVX2_vec32_sample_iid(r, buffer.b); -} diff --git a/src/kem/ntru/ntruhps2048677/avx2/square_10_677_shufbytes.s b/src/kem/ntru/ntruhps2048677/avx2/square_10_677_shufbytes.s deleted file mode 100644 index 4b620d00..00000000 --- a/src/kem/ntru/ntruhps2048677/avx2/square_10_677_shufbytes.s +++ /dev/null @@ -1,7189 +0,0 @@ -.data -.p2align 5 -mask_0_1: -.byte 0 -.byte 255 -.byte 4 -.byte 5 -.byte 8 -.byte 9 -.byte 10 -.byte 13 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 10 -.byte 13 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 2 -.byte 255 -.byte 6 -.byte 7 -.byte 255 - -mask_1_1: -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 - -mask_2_1: -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 - -mask_3_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_4_1: -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_5_1: -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_6_1: -.byte 11 -.byte 12 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 4 -.byte 5 -.byte 8 -.byte 9 -.byte 255 -.byte 2 -.byte 255 -.byte 6 -.byte 7 -.byte 255 -.byte 11 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_7_1: -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_8_1: -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_9_1: -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_10_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_11_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_12_1: -.byte 255 -.byte 5 -.byte 255 -.byte 9 -.byte 10 -.byte 13 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 1 -.byte 4 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 2 -.byte 255 -.byte 6 -.byte 7 -.byte 255 -.byte 11 -.byte 12 - -mask_13_1: -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x4000 - -mask_14_1: -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 - -mask_15_1: -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_16_1: -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_17_1: -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_18_1: -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 4 -.byte 5 -.byte 8 -.byte 9 -.byte 10 -.byte 13 -.byte 5 -.byte 255 -.byte 7 -.byte 255 -.byte 11 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 3 - -mask_19_1: -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 - -mask_20_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 - -mask_21_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_22_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_23_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_24_1: -.byte 255 -.byte 9 -.byte 10 -.byte 13 -.byte 14 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 1 -.byte 4 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 1 -.byte 255 -.byte 5 -.byte 255 -.byte 7 -.byte 255 -.byte 11 -.byte 12 -.byte 255 -.byte 255 - -mask_25_1: -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 - -mask_26_1: -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4 -.word 0x0 - -mask_27_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_28_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 3 -.byte 255 -.byte 5 -.byte 255 -.byte 9 -.byte 10 -.byte 13 -.byte 14 -.byte 255 -.byte 0 -.byte 255 -.byte 11 -.byte 12 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 3 -.byte 255 -.byte 7 - -mask_29_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 - -mask_30_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x4000 - -mask_31_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_32_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_33_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_34_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_35_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_36_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_37_1: -.byte 10 -.byte 13 -.byte 14 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 4 -.byte 5 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 1 -.byte 255 -.byte 5 -.byte 255 -.byte 7 -.byte 255 -.byte 11 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_38_1: -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x0 - -mask_39_1: -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 - -mask_40_1: -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_41_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_42_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_43_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 3 -.byte 255 -.byte 5 -.byte 255 -.byte 9 -.byte 10 -.byte 13 -.byte 14 -.byte 15 -.byte 255 -.byte 255 -.byte 11 -.byte 12 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 3 -.byte 255 -.byte 7 -.byte 255 -.byte 9 - -mask_44_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x100 - -mask_45_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 - -mask_46_1: -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_47_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_48_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_49_1: -.byte 14 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 4 -.byte 5 -.byte 6 -.byte 9 -.byte 10 -.byte 255 -.byte 12 -.byte 255 -.byte 0 -.byte 1 -.byte 4 -.byte 5 -.byte 255 -.byte 7 -.byte 255 -.byte 11 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_50_1: -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_51_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_52_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_53_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_54_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_55_1: -.byte 255 -.byte 255 -.byte 2 -.byte 3 -.byte 255 -.byte 5 -.byte 255 -.byte 9 -.byte 10 -.byte 13 -.byte 14 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 3 -.byte 255 -.byte 0 -.byte 8 -.byte 255 -.byte 12 -.byte 255 - -mask_56_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x0 - -mask_57_1: -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x800 -.word 0x0 -.word 0x80 - -mask_58_1: -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_59_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_60_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 - -mask_61_1: -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_62_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 4 -.byte 5 -.byte 6 -.byte 9 -.byte 10 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 1 -.byte 4 -.byte 5 -.byte 6 -.byte 9 -.byte 10 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_63_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_64_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_65_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_66_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_67_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_68_1: -.byte 2 -.byte 3 -.byte 4 -.byte 7 -.byte 8 -.byte 255 -.byte 10 -.byte 255 -.byte 14 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 3 -.byte 255 -.byte 0 -.byte 8 -.byte 255 -.byte 12 -.byte 255 -.byte 14 -.byte 255 - -mask_69_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 - -mask_70_1: -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x400 -.word 0x0 -.word 0x40 -.word 0x0 - -mask_71_1: -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_72_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_73_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_74_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_75_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 5 -.byte 6 -.byte 9 -.byte 10 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 6 -.byte 9 -.byte 10 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 3 - -mask_76_1: -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 - -mask_77_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 - -mask_78_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_79_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_80_1: -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_81_1: -.byte 4 -.byte 7 -.byte 8 -.byte 255 -.byte 10 -.byte 255 -.byte 14 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 1 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 3 -.byte 255 -.byte 0 -.byte 8 -.byte 255 -.byte 12 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 - -mask_82_1: -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x0 - -mask_83_1: -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 - -mask_84_1: -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_85_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_86_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_87_1: -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_88_1: -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 5 -.byte 6 -.byte 9 -.byte 10 -.byte 11 -.byte 14 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 10 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 3 -.byte 255 -.byte 7 - -mask_89_1: -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 - -mask_90_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x400 - -mask_91_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_92_1: -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_93_1: -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_94_1: -.byte 8 -.byte 255 -.byte 10 -.byte 255 -.byte 14 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 5 -.byte 6 -.byte 255 -.byte 1 -.byte 255 -.byte 3 -.byte 255 -.byte 0 -.byte 8 -.byte 255 -.byte 12 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_95_1: -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_96_1: -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x4000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_97_1: -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_98_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_99_1: -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_100_1: -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 2 -.byte 3 -.byte 6 -.byte 7 -.byte 255 -.byte 9 -.byte 255 -.byte 13 -.byte 14 -.byte 255 -.byte 255 -.byte 3 -.byte 6 -.byte 7 -.byte 255 -.byte 9 -.byte 255 -.byte 13 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 - -mask_101_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 - -mask_102_1: -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_103_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_104_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_105_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_106_1: -.byte 4 -.byte 5 -.byte 255 -.byte 7 -.byte 255 -.byte 11 -.byte 12 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 4 -.byte 5 -.byte 255 -.byte 9 -.byte 255 -.byte 11 -.byte 255 -.byte 15 -.byte 255 -.byte 255 - -mask_107_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 - -mask_108_1: -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x0 - -mask_109_1: -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_110_1: -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_111_1: -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_112_1: -.byte 255 -.byte 0 -.byte 255 -.byte 2 -.byte 3 -.byte 6 -.byte 7 -.byte 8 -.byte 11 -.byte 12 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 9 -.byte 255 -.byte 13 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 4 -.byte 5 - -mask_113_1: -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2000 - -mask_114_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 - -mask_115_1: -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_116_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_117_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_118_1: -.byte 255 -.byte 7 -.byte 255 -.byte 11 -.byte 12 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 2 -.byte 3 -.byte 6 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 4 -.byte 5 -.byte 255 -.byte 9 -.byte 10 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_119_1: -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_120_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 - -mask_121_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_122_1: -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_123_1: -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_124_1: -.byte 255 -.byte 2 -.byte 3 -.byte 6 -.byte 7 -.byte 8 -.byte 11 -.byte 12 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 12 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 4 -.byte 5 -.byte 255 -.byte 9 - -mask_125_1: -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 - -mask_126_1: -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x1000 - -mask_127_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_128_1: -.byte 10 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 2 -.byte 3 -.byte 6 -.byte 7 -.byte 8 -.byte 2 -.byte 255 -.byte 4 -.byte 5 -.byte 8 -.byte 9 -.byte 10 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 - -mask_129_1: -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_130_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x2000 - -mask_131_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_132_1: -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_133_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_134_1: -.byte 3 -.byte 255 -.byte 0 -.byte 8 -.byte 11 -.byte 12 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 3 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 4 -.byte 5 -.byte 255 -.byte 9 -.byte 10 -.byte 255 - -mask_135_1: -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x40 - -mask_136_1: -.word 0x0 -.word 0x2 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 - -mask_137_1: -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_138_1: -.byte 5 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_139_1: -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_140_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_141_1: -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 2 -.byte 3 -.byte 6 -.byte 7 -.byte 8 -.byte 11 -.byte 12 -.byte 255 -.byte 5 -.byte 255 -.byte 9 -.byte 10 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 1 -.byte 255 - -mask_142_1: -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 - -mask_143_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 - -mask_144_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_145_1: -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_146_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_147_1: -.byte 0 -.byte 8 -.byte 11 -.byte 12 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 3 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 5 -.byte 255 -.byte 9 -.byte 10 -.byte 255 -.byte 14 -.byte 255 - -mask_148_1: -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 - -mask_149_1: -.word 0x1 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 - -mask_150_1: -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_151_1: -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_152_1: -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_153_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_154_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 1 -.byte 255 -.byte 3 -.byte 255 -.byte 7 -.byte 8 -.byte 11 -.byte 12 -.byte 255 -.byte 14 -.byte 255 -.byte 9 -.byte 10 -.byte 13 -.byte 14 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 5 -.byte 255 - -mask_155_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 - -mask_156_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 - -mask_157_1: -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_158_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_159_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_160_1: -.byte 11 -.byte 12 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 3 -.byte 255 -.byte 5 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 3 -.byte 255 -.byte 5 -.byte 255 -.byte 9 -.byte 10 -.byte 255 -.byte 14 -.byte 15 -.byte 255 -.byte 255 - -mask_161_1: -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 - -mask_162_1: -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x0 - -mask_163_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_164_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_165_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_166_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_167_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_168_1: -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 1 -.byte 255 -.byte 3 -.byte 255 -.byte 7 -.byte 8 -.byte 11 -.byte 12 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 13 -.byte 14 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 5 -.byte 255 -.byte 7 -.byte 255 - -mask_169_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 - -mask_170_1: -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 - -mask_171_1: -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_172_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_173_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_174_1: -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 3 -.byte 4 -.byte 0 -.byte 8 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 3 -.byte 255 -.byte 5 -.byte 255 -.byte 9 -.byte 10 -.byte 255 -.byte 14 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_175_1: -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x0 - -mask_176_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 - -mask_177_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_178_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_179_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_180_1: -.byte 255 -.byte 0 -.byte 1 -.byte 255 -.byte 3 -.byte 255 -.byte 7 -.byte 8 -.byte 11 -.byte 12 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 5 -.byte 6 -.byte 255 -.byte 10 -.byte 255 -.byte 12 - -mask_181_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x400 - -mask_182_1: -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 - -mask_183_1: -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_184_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_185_1: -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_186_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 3 -.byte 4 -.byte 0 -.byte 8 -.byte 255 -.byte 10 -.byte 255 -.byte 14 -.byte 15 -.byte 2 -.byte 3 -.byte 4 -.byte 7 -.byte 8 -.byte 255 -.byte 10 -.byte 255 -.byte 14 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 - -mask_187_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_188_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x200 - -mask_189_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_190_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_191_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_192_1: -.byte 1 -.byte 2 -.byte 5 -.byte 6 -.byte 255 -.byte 8 -.byte 255 -.byte 12 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 5 -.byte 6 -.byte 255 -.byte 10 -.byte 255 -.byte 12 -.byte 255 -.byte 255 - -mask_193_1: -.word 0x8000 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 - -mask_194_1: -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x0 - -mask_195_1: -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_196_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_197_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_198_1: -.byte 13 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 1 -.byte 4 -.byte 5 -.byte 255 -.byte 7 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_199_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_200_1: -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_201_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_202_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_203_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_204_1: -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 3 -.byte 255 -.byte 7 -.byte 255 -.byte 9 -.byte 255 - -mask_205_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4 - -mask_206_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x0 - -mask_207_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_208_1: -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_209_1: -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_210_1: -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 1 -.byte 4 -.byte 5 -.byte 255 -.byte 7 -.byte 255 -.byte 11 -.byte 12 -.byte 15 -.byte 0 -.byte 1 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_211_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_212_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_213_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_214_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_215_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_216_1: -.byte 255 -.byte 2 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 3 -.byte 255 -.byte 7 -.byte 255 -.byte 9 -.byte 255 -.byte 13 -.byte 14 - -mask_217_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x1000 - -mask_218_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 - -mask_219_1: -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_220_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 1 -.byte 4 -.byte 5 -.byte 255 -.byte 7 -.byte 255 -.byte 11 -.byte 12 -.byte 15 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 - -mask_221_1: -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_222_1: -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 - -mask_223_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_224_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_225_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_226_1: -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 2 -.byte 3 -.byte 255 -.byte 7 -.byte 255 -.byte 9 -.byte 255 -.byte 13 -.byte 14 -.byte 255 -.byte 255 - -mask_227_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 - -mask_228_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x0 - -mask_229_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_230_1: -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 4 -.byte 5 -.byte 6 -.byte 9 -.byte 10 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 3 -.byte 255 - -mask_231_1: -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 - -mask_232_1: -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 - -mask_233_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_234_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_235_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_236_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 1 -.byte 4 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 2 -.byte 3 -.byte 255 -.byte 7 -.byte 8 -.byte 255 -.byte 12 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_237_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 - -mask_238_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_239_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_240_1: -.byte 255 -.byte 1 -.byte 4 -.byte 5 -.byte 6 -.byte 9 -.byte 10 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 3 -.byte 255 -.byte 255 -.byte 255 - -mask_241_1: -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 - -mask_242_1: -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 - -mask_243_1: -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_244_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_245_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_246_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 1 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 3 -.byte 6 -.byte 7 -.byte 8 -.byte 255 -.byte 12 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_247_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_248_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_249_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_250_1: -.byte 255 -.byte 5 -.byte 6 -.byte 9 -.byte 10 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_251_1: -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 - -mask_252_1: -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_253_1: -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_254_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_255_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_256_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 1 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 7 -.byte 8 -.byte 11 -.byte 12 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 - -mask_257_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_258_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 - -mask_259_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_260_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_261_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_262_1: -.byte 6 -.byte 9 -.byte 10 -.byte 11 -.byte 14 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_263_1: -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_264_1: -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_265_1: -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_266_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_267_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_268_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 8 -.byte 11 -.byte 12 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 5 - -mask_269_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 - -mask_270_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 - -mask_271_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_272_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_273_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_274_1: -.byte 10 -.byte 11 -.byte 14 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 3 -.byte 255 -.byte 7 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 1 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_275_1: -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_276_1: -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_277_1: -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_278_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_279_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_280_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 12 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 5 -.byte 255 -.byte 9 - -mask_281_1: -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 - -mask_282_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x100 - -mask_283_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_284_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_285_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -.text -.global PQCLEAN_NTRUHPS2048677_AVX2_square_10_677 -.global _PQCLEAN_NTRUHPS2048677_AVX2_square_10_677 -PQCLEAN_NTRUHPS2048677_AVX2_square_10_677: -_PQCLEAN_NTRUHPS2048677_AVX2_square_10_677: -vmovdqa 0(%rsi), %ymm0 -vpshufb mask_0_1(%rip), %ymm0, %ymm5 -vpand mask_1_1(%rip), %ymm5, %ymm1 -vpand mask_2_1(%rip), %ymm5, %ymm2 -vpand mask_3_1(%rip), %ymm5, %ymm3 -vpshufb mask_4_1(%rip), %ymm0, %ymm5 -vpand mask_5_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm8 -vpshufb mask_6_1(%rip), %ymm8, %ymm5 -vpand mask_7_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_8_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_9_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_10_1(%rip), %ymm8, %ymm5 -vpand mask_11_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm0, %ymm5 -vpsllq $1, %ymm0, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_12_1(%rip), %ymm6, %ymm5 -vpand mask_13_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_14_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_15_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_16_1(%rip), %ymm6, %ymm5 -vpand mask_17_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_18_1(%rip), %ymm8, %ymm5 -vpand mask_19_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_20_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_21_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_22_1(%rip), %ymm8, %ymm5 -vpand mask_23_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm6, %ymm5 -vpsllq $1, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_24_1(%rip), %ymm7, %ymm5 -vpand mask_25_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_26_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_27_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_28_1(%rip), %ymm8, %ymm5 -vpand mask_29_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_30_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_31_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_32_1(%rip), %ymm8, %ymm5 -vpand mask_33_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_34_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_35_1(%rip), %ymm8, %ymm5 -vpand mask_36_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm7, %ymm6 -vpshufb mask_37_1(%rip), %ymm6, %ymm5 -vpand mask_38_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_39_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_40_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_41_1(%rip), %ymm6, %ymm5 -vpand mask_42_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_43_1(%rip), %ymm8, %ymm5 -vpand mask_44_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_45_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_46_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_47_1(%rip), %ymm8, %ymm5 -vpand mask_48_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $2, %ymm7, %ymm6 -vpshufb mask_49_1(%rip), %ymm6, %ymm5 -vpand mask_50_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_51_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_52_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_53_1(%rip), %ymm6, %ymm5 -vpand mask_54_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_55_1(%rip), %ymm8, %ymm5 -vpand mask_56_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_57_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_58_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_59_1(%rip), %ymm8, %ymm5 -vpand mask_60_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_61_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $61, %ymm7, %ymm5 -vpsllq $3, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_62_1(%rip), %ymm6, %ymm5 -vpand mask_63_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_64_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_65_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_66_1(%rip), %ymm6, %ymm5 -vpand mask_67_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_68_1(%rip), %ymm8, %ymm5 -vpand mask_69_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_70_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_71_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_72_1(%rip), %ymm8, %ymm5 -vpand mask_73_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_74_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm6, %ymm5 -vpsllq $1, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_75_1(%rip), %ymm7, %ymm5 -vpand mask_76_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_77_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_78_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_79_1(%rip), %ymm7, %ymm5 -vpand mask_80_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_81_1(%rip), %ymm8, %ymm5 -vpand mask_82_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_83_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_84_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_85_1(%rip), %ymm8, %ymm5 -vpand mask_86_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_87_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm7, %ymm5 -vpsllq $1, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_88_1(%rip), %ymm6, %ymm5 -vpand mask_89_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_90_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_91_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_92_1(%rip), %ymm6, %ymm5 -vpand mask_93_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_94_1(%rip), %ymm8, %ymm5 -vpand mask_95_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_96_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_97_1(%rip), %ymm8, %ymm5 -vpand mask_98_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_99_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vmovdqa 32(%rsi), %ymm0 -vpshufb mask_100_1(%rip), %ymm0, %ymm5 -vpand mask_101_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_102_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_103_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_104_1(%rip), %ymm0, %ymm5 -vpand mask_105_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm8 -vpshufb mask_106_1(%rip), %ymm8, %ymm5 -vpand mask_107_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_108_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_109_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_110_1(%rip), %ymm8, %ymm5 -vpand mask_111_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm0, %ymm6 -vpshufb mask_112_1(%rip), %ymm6, %ymm5 -vpand mask_113_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_114_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_115_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_116_1(%rip), %ymm6, %ymm5 -vpand mask_117_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_118_1(%rip), %ymm8, %ymm5 -vpand mask_119_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_120_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_121_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_122_1(%rip), %ymm8, %ymm5 -vpand mask_123_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $62, %ymm0, %ymm5 -vpsllq $2, %ymm0, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_124_1(%rip), %ymm6, %ymm5 -vpand mask_125_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_126_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_127_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_128_1(%rip), %ymm8, %ymm5 -vpand mask_129_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_130_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_131_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_132_1(%rip), %ymm8, %ymm5 -vpand mask_133_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm6, %ymm5 -vpsllq $1, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_134_1(%rip), %ymm7, %ymm5 -vpand mask_135_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_136_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_137_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_138_1(%rip), %ymm7, %ymm5 -vpand mask_139_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_140_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_141_1(%rip), %ymm8, %ymm5 -vpand mask_142_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_143_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_144_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_145_1(%rip), %ymm8, %ymm5 -vpand mask_146_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm7, %ymm5 -vpsllq $1, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_147_1(%rip), %ymm6, %ymm5 -vpand mask_148_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_149_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_150_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_151_1(%rip), %ymm6, %ymm5 -vpand mask_152_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_153_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_154_1(%rip), %ymm8, %ymm5 -vpand mask_155_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_156_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_157_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_158_1(%rip), %ymm8, %ymm5 -vpand mask_159_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm6, %ymm7 -vpshufb mask_160_1(%rip), %ymm7, %ymm5 -vpand mask_161_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_162_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_163_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_164_1(%rip), %ymm7, %ymm5 -vpand mask_165_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_166_1(%rip), %ymm7, %ymm5 -vpand mask_167_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_168_1(%rip), %ymm8, %ymm5 -vpand mask_169_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_170_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_171_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_172_1(%rip), %ymm8, %ymm5 -vpand mask_173_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $2, %ymm6, %ymm7 -vpshufb mask_174_1(%rip), %ymm7, %ymm5 -vpand mask_175_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_176_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_177_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_178_1(%rip), %ymm7, %ymm5 -vpand mask_179_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_180_1(%rip), %ymm8, %ymm5 -vpand mask_181_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_182_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_183_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_184_1(%rip), %ymm8, %ymm5 -vpand mask_185_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $61, %ymm6, %ymm5 -vpsllq $3, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_186_1(%rip), %ymm7, %ymm5 -vpand mask_187_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_188_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_189_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_190_1(%rip), %ymm7, %ymm5 -vpand mask_191_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_192_1(%rip), %ymm8, %ymm5 -vpand mask_193_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_194_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_195_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_196_1(%rip), %ymm8, %ymm5 -vpand mask_197_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vmovdqa 64(%rsi), %ymm0 -vpshufb mask_198_1(%rip), %ymm0, %ymm5 -vpand mask_199_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_200_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_201_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_202_1(%rip), %ymm0, %ymm5 -vpand mask_203_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm8 -vpshufb mask_204_1(%rip), %ymm8, %ymm5 -vpand mask_205_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_206_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_207_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_208_1(%rip), %ymm8, %ymm5 -vpand mask_209_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm0, %ymm6 -vpshufb mask_210_1(%rip), %ymm6, %ymm5 -vpand mask_211_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_212_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_213_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_214_1(%rip), %ymm6, %ymm5 -vpand mask_215_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_216_1(%rip), %ymm8, %ymm5 -vpand mask_217_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_218_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_219_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $2, %ymm0, %ymm6 -vpshufb mask_220_1(%rip), %ymm6, %ymm5 -vpand mask_221_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_222_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_223_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_224_1(%rip), %ymm6, %ymm5 -vpand mask_225_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_226_1(%rip), %ymm8, %ymm5 -vpand mask_227_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_228_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_229_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $61, %ymm0, %ymm5 -vpsllq $3, %ymm0, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_230_1(%rip), %ymm6, %ymm5 -vpand mask_231_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_232_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_233_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_234_1(%rip), %ymm6, %ymm5 -vpand mask_235_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_236_1(%rip), %ymm8, %ymm5 -vpand mask_237_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_238_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_239_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm6, %ymm7 -vpshufb mask_240_1(%rip), %ymm7, %ymm5 -vpand mask_241_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_242_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_243_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_244_1(%rip), %ymm7, %ymm5 -vpand mask_245_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_246_1(%rip), %ymm8, %ymm5 -vpand mask_247_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_248_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_249_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $62, %ymm6, %ymm5 -vpsllq $2, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_250_1(%rip), %ymm7, %ymm5 -vpand mask_251_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_252_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_253_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_254_1(%rip), %ymm7, %ymm5 -vpand mask_255_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_256_1(%rip), %ymm8, %ymm5 -vpand mask_257_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_258_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_259_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_260_1(%rip), %ymm8, %ymm5 -vpand mask_261_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm7, %ymm6 -vpshufb mask_262_1(%rip), %ymm6, %ymm5 -vpand mask_263_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_264_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_265_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_266_1(%rip), %ymm6, %ymm5 -vpand mask_267_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_268_1(%rip), %ymm8, %ymm5 -vpand mask_269_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_270_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_271_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_272_1(%rip), %ymm8, %ymm5 -vpand mask_273_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $2, %ymm7, %ymm6 -vpshufb mask_274_1(%rip), %ymm6, %ymm5 -vpand mask_275_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_276_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_277_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_278_1(%rip), %ymm6, %ymm5 -vpand mask_279_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_280_1(%rip), %ymm8, %ymm5 -vpand mask_281_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_282_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_283_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_284_1(%rip), %ymm8, %ymm5 -vpand mask_285_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vmovdqa %ymm1, 0(%rdi) -vmovdqa %ymm2, 32(%rdi) -vmovdqa %ymm3, 64(%rdi) -ret diff --git a/src/kem/ntru/ntruhps2048677/avx2/square_168_677_shufbytes.s b/src/kem/ntru/ntruhps2048677/avx2/square_168_677_shufbytes.s deleted file mode 100644 index e6d0ceb7..00000000 --- a/src/kem/ntru/ntruhps2048677/avx2/square_168_677_shufbytes.s +++ /dev/null @@ -1,7312 +0,0 @@ -.data -.p2align 5 -mask_0_1: -.byte 0 -.byte 5 -.byte 255 -.byte 0 -.byte 5 -.byte 255 -.byte 0 -.byte 3 -.byte 255 -.byte 0 -.byte 3 -.byte 255 -.byte 255 -.byte 1 -.byte 6 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 11 -.byte 14 -.byte 255 -.byte 11 -.byte 14 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 12 -.byte 255 - -mask_1_1: -.word 0x1 -.word 0x400 -.word 0x0 -.word 0x10 -.word 0x4000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x20 -.word 0x8000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x8 - -mask_2_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_3_1: -.word 0x100 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_4_1: -.byte 2 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 14 -.byte 255 - -mask_5_1: -.word 0x10 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x80 - -mask_6_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_7_1: -.byte 255 -.byte 10 -.byte 15 -.byte 255 -.byte 10 -.byte 15 -.byte 255 -.byte 10 -.byte 13 -.byte 255 -.byte 10 -.byte 13 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 1 -.byte 6 -.byte 255 -.byte 1 -.byte 4 -.byte 255 -.byte 1 -.byte 4 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 - -mask_8_1: -.word 0x200 -.word 0x0 -.word 0x8 -.word 0x2000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x2 -.word 0x4 -.word 0x1000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x1 -.word 0x400 -.word 0x0 - -mask_9_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_10_1: -.word 0x0 -.word 0x2 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_11_1: -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 - -mask_12_1: -.word 0x2000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x4000 -.word 0x0 - -mask_13_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_14_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 5 -.byte 10 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 5 -.byte 8 -.byte 255 -.byte 5 -.byte 8 -.byte 255 -.byte 255 - -mask_15_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x8 -.word 0x2000 -.word 0x0 -.word 0x80 -.word 0x0 - -mask_16_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x800 -.word 0x0 - -mask_17_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_18_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_19_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_20_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_21_1: -.byte 6 -.byte 255 -.byte 3 -.byte 6 -.byte 255 -.byte 255 -.byte 4 -.byte 9 -.byte 255 -.byte 4 -.byte 9 -.byte 255 -.byte 4 -.byte 7 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_22_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x2 -.word 0x800 -.word 0x0 -.word 0x20 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_23_1: -.word 0x2 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_24_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_25_1: -.byte 8 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_26_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_27_1: -.word 0x20 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_28_1: -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 2 - -mask_29_1: -.word 0x800 -.word 0x0 -.word 0x20 -.word 0x8000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_30_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x800 -.word 0x0 -.word 0x20 -.word 0x8000 -.word 0x0 -.word 0x200 - -mask_31_1: -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_32_1: -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_33_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_34_1: -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 0 -.byte 3 -.byte 255 -.byte 0 -.byte 3 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 15 -.byte 255 - -mask_35_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x2 -.word 0x800 -.word 0x0 -.word 0x20 - -mask_36_1: -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x8 -.word 0x2000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_37_1: -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_38_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_39_1: -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_40_1: -.byte 9 -.byte 255 -.byte 255 -.byte 7 -.byte 12 -.byte 255 -.byte 7 -.byte 12 -.byte 255 -.byte 7 -.byte 10 -.byte 255 -.byte 7 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_41_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x8 -.word 0x2000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_42_1: -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_43_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_44_1: -.byte 11 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_45_1: -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_46_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_47_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 13 -.byte 255 -.byte 8 -.byte 13 -.byte 255 -.byte 8 -.byte 11 -.byte 255 -.byte 8 -.byte 11 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 - -mask_48_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x800 -.word 0x0 -.word 0x20 -.word 0x8000 -.word 0x0 -.word 0x200 -.word 0x0 - -mask_49_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 - -mask_50_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_51_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 - -mask_52_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 - -mask_53_1: -.byte 255 -.byte 0 -.byte 3 -.byte 255 -.byte 0 -.byte 3 -.byte 255 -.byte 0 -.byte 1 -.byte 6 -.byte 0 -.byte 1 -.byte 6 -.byte 255 -.byte 1 -.byte 4 -.byte 14 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 12 -.byte 15 -.byte 255 -.byte 12 -.byte 15 -.byte 255 -.byte 255 - -mask_54_1: -.word 0x2000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x2 -.word 0x800 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x4 -.word 0x1000 -.word 0x0 -.word 0x40 -.word 0x0 - -mask_55_1: -.word 0x0 -.word 0x2 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x400 -.word 0x0 - -mask_56_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x200 -.word 0x4 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_57_1: -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_58_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_59_1: -.word 0x0 -.word 0x20 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_60_1: -.byte 13 -.byte 255 -.byte 10 -.byte 13 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 11 -.byte 14 -.byte 255 -.byte 11 -.byte 255 -.byte 1 -.byte 4 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 2 -.byte 5 -.byte 255 -.byte 2 -.byte 5 - -mask_61_1: -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x1 -.word 0x400 -.word 0x0 -.word 0x10 -.word 0x4000 -.word 0x8000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x8 -.word 0x2000 -.word 0x0 -.word 0x80 - -mask_62_1: -.word 0x1 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x800 - -mask_63_1: -.byte 15 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_64_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_65_1: -.word 0x10 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_66_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 8 -.byte 255 -.byte 5 -.byte 8 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 6 -.byte 9 - -mask_67_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x1 -.word 0x400 -.word 0x0 -.word 0x10 - -mask_68_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 - -mask_69_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_70_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x4000 -.word 0x0 -.word 0x0 - -mask_71_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_72_1: -.byte 255 -.byte 4 -.byte 9 -.byte 255 -.byte 4 -.byte 7 -.byte 255 -.byte 4 -.byte 7 -.byte 255 -.byte 255 -.byte 5 -.byte 10 -.byte 255 -.byte 5 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_73_1: -.word 0x400 -.word 0x0 -.word 0x10 -.word 0x4000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_74_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_75_1: -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_76_1: -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_77_1: -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_78_1: -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_79_1: -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 4 -.byte 255 -.byte 1 -.byte 4 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 - -mask_80_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x4 -.word 0x1000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 - -mask_81_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x4000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 - -mask_82_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_83_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 - -mask_84_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 - -mask_85_1: -.byte 0 -.byte 255 -.byte 255 -.byte 0 -.byte 3 -.byte 255 -.byte 0 -.byte 3 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_86_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x400 -.word 0x0 -.word 0x10 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_87_1: -.word 0x4 -.word 0x1000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x1 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_88_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_89_1: -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_90_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_91_1: -.byte 255 -.byte 7 -.byte 10 -.byte 255 -.byte 7 -.byte 10 -.byte 255 -.byte 255 -.byte 8 -.byte 13 -.byte 255 -.byte 8 -.byte 13 -.byte 255 -.byte 8 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_92_1: -.word 0x1000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x1 -.word 0x400 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_93_1: -.word 0x0 -.word 0x1 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_94_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_95_1: -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_96_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_97_1: -.word 0x0 -.word 0x10 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_98_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 11 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 9 -.byte 12 -.byte 255 -.byte 9 -.byte 12 - -mask_99_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x4 -.word 0x1000 -.word 0x0 -.word 0x40 - -mask_100_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x400 - -mask_101_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_102_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_103_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_104_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 10 -.byte 255 -.byte 5 -.byte 8 -.byte 255 -.byte 5 -.byte 8 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 6 - -mask_105_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x4000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x4 -.word 0x1000 - -mask_106_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_107_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_108_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 - -mask_109_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x40 -.word 0x0 - -mask_110_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_111_1: -.byte 9 -.byte 255 -.byte 4 -.byte 9 -.byte 255 -.byte 4 -.byte 7 -.byte 255 -.byte 4 -.byte 7 -.byte 255 -.byte 255 -.byte 5 -.byte 10 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_112_1: -.word 0x0 -.word 0x4 -.word 0x1000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x1 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_113_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_114_1: -.word 0x1 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_115_1: -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_116_1: -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_117_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_118_1: -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 4 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 0 -.byte 255 - -mask_119_1: -.word 0x40 -.word 0x0 -.word 0x1 -.word 0x400 -.word 0x0 -.word 0x10 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 - -mask_120_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x1 -.word 0x400 -.word 0x0 -.word 0x0 - -mask_121_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_122_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 - -mask_123_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 - -mask_124_1: -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 0 -.byte 3 -.byte 255 -.byte 0 -.byte 3 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_125_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x4 -.word 0x1000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 - -mask_126_1: -.word 0x400 -.word 0x0 -.word 0x10 -.word 0x4000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_127_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_128_1: -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_129_1: -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_130_1: -.byte 12 -.byte 255 -.byte 7 -.byte 10 -.byte 255 -.byte 7 -.byte 10 -.byte 255 -.byte 255 -.byte 8 -.byte 13 -.byte 255 -.byte 8 -.byte 13 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_131_1: -.word 0x0 -.word 0x10 -.word 0x4000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x4 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_132_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_133_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_134_1: -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_135_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_136_1: -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_137_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 8 -.byte 11 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 9 -.byte 12 -.byte 255 -.byte 9 - -mask_138_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x1 -.word 0x400 -.word 0x0 -.word 0x10 -.word 0x4000 - -mask_139_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 - -mask_140_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_141_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_142_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_143_1: -.byte 255 -.byte 1 -.byte 6 -.byte 0 -.byte 1 -.byte 6 -.byte 255 -.byte 1 -.byte 4 -.byte 255 -.byte 1 -.byte 4 -.byte 255 -.byte 255 -.byte 2 -.byte 7 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 12 -.byte 15 -.byte 255 -.byte 12 -.byte 15 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 13 - -mask_144_1: -.word 0x100 -.word 0x0 -.word 0x4 -.word 0x1000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x8 -.word 0x2000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x2 -.word 0x800 - -mask_145_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_146_1: -.word 0x0 -.word 0x201 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_147_1: -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 15 - -mask_148_1: -.word 0x1000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x8000 - -mask_149_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_150_1: -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 11 -.byte 14 -.byte 255 -.byte 11 -.byte 14 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 2 -.byte 7 -.byte 255 -.byte 2 -.byte 5 -.byte 255 -.byte 2 -.byte 5 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 3 -.byte 255 - -mask_151_1: -.word 0x0 -.word 0x2 -.word 0x800 -.word 0x0 -.word 0x20 -.word 0x8000 -.word 0x0 -.word 0x200 -.word 0x400 -.word 0x0 -.word 0x10 -.word 0x4000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x4 - -mask_152_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_153_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_154_1: -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 5 -.byte 255 - -mask_155_1: -.word 0x0 -.word 0x20 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x40 - -mask_156_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 5 -.byte 8 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 6 -.byte 9 -.byte 255 -.byte 6 -.byte 9 -.byte 255 - -mask_157_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x2 -.word 0x800 -.word 0x0 -.word 0x20 -.word 0x8000 -.word 0x0 - -mask_158_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x8 - -mask_159_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_160_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_161_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_162_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_163_1: -.byte 4 -.byte 7 -.byte 255 -.byte 4 -.byte 7 -.byte 255 -.byte 255 -.byte 5 -.byte 10 -.byte 255 -.byte 5 -.byte 10 -.byte 255 -.byte 5 -.byte 8 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_164_1: -.word 0x20 -.word 0x8000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x8 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_165_1: -.word 0x200 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_166_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_167_1: -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_168_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_169_1: -.word 0x2000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_170_1: -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 15 -.byte 4 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 0 - -mask_171_1: -.word 0x0 -.word 0x8 -.word 0x2000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x2 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x8 -.word 0x2000 - -mask_172_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_173_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_174_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 - -mask_175_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x80 -.word 0x0 - -mask_176_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_177_1: -.byte 3 -.byte 255 -.byte 0 -.byte 3 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 1 -.byte 4 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_178_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_179_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x2 -.word 0x800 -.word 0x0 -.word 0x20 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_180_1: -.word 0x2 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_181_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_182_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_183_1: -.byte 7 -.byte 10 -.byte 255 -.byte 255 -.byte 8 -.byte 13 -.byte 255 -.byte 8 -.byte 13 -.byte 255 -.byte 8 -.byte 11 -.byte 255 -.byte 8 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_184_1: -.word 0x80 -.word 0x0 -.word 0x2 -.word 0x800 -.word 0x0 -.word 0x20 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_185_1: -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_186_1: -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_187_1: -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_188_1: -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_189_1: -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_190_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 14 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 9 -.byte 12 -.byte 255 -.byte 9 -.byte 12 -.byte 255 -.byte 255 -.byte 10 -.byte 255 - -mask_191_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x8 -.word 0x2000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x2 - -mask_192_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x800 -.word 0x0 -.word 0x0 - -mask_193_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_194_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 - -mask_195_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 - -mask_196_1: -.byte 6 -.byte 0 -.byte 1 -.byte 4 -.byte 0 -.byte 1 -.byte 4 -.byte 255 -.byte 255 -.byte 2 -.byte 7 -.byte 255 -.byte 2 -.byte 7 -.byte 255 -.byte 2 -.byte 12 -.byte 15 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 - -mask_197_1: -.word 0x0 -.word 0x20 -.word 0x8000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x8 -.word 0x2000 -.word 0x40 -.word 0x0 -.word 0x1 -.word 0x400 -.word 0x0 -.word 0x10 -.word 0x4000 -.word 0x0 - -mask_198_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_199_1: -.word 0x1008 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_200_1: -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_201_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_202_1: -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_203_1: -.byte 11 -.byte 14 -.byte 255 -.byte 11 -.byte 14 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 12 -.byte 15 -.byte 255 -.byte 5 -.byte 255 -.byte 2 -.byte 5 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 0 -.byte 3 -.byte 6 -.byte 0 -.byte 3 - -mask_204_1: -.word 0x10 -.word 0x4000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x4 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x2 -.word 0x800 -.word 0x0 -.word 0x20 -.word 0x8000 - -mask_205_1: -.word 0x100 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x2 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x200 -.word 0x4 - -mask_206_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_207_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_208_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_209_1: -.byte 14 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 1 -.byte 4 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 - -mask_210_1: -.word 0x2 -.word 0x800 -.word 0x0 -.word 0x20 -.word 0x8000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x800 -.word 0x0 - -mask_211_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x2 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_212_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_213_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 - -mask_214_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x8000 -.word 0x0 - -mask_215_1: -.byte 0 -.byte 3 -.byte 255 -.byte 0 -.byte 3 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 1 -.byte 4 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_216_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x2000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_217_1: -.word 0x20 -.word 0x8000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x8 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_218_1: -.word 0x200 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_219_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_220_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_221_1: -.byte 255 -.byte 7 -.byte 10 -.byte 255 -.byte 255 -.byte 8 -.byte 13 -.byte 255 -.byte 8 -.byte 13 -.byte 255 -.byte 8 -.byte 11 -.byte 255 -.byte 8 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_222_1: -.word 0x8000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x8 -.word 0x2000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_223_1: -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_224_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_225_1: -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_226_1: -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_227_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_228_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 14 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 9 -.byte 12 -.byte 255 -.byte 9 -.byte 12 -.byte 255 -.byte 255 -.byte 10 - -mask_229_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x800 -.word 0x0 -.word 0x20 -.word 0x8000 -.word 0x0 -.word 0x200 - -mask_230_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x8 -.word 0x0 - -mask_231_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_232_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 - -mask_233_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 - -mask_234_1: -.byte 1 -.byte 6 -.byte 255 -.byte 1 -.byte 4 -.byte 255 -.byte 1 -.byte 4 -.byte 255 -.byte 255 -.byte 2 -.byte 7 -.byte 255 -.byte 2 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_235_1: -.word 0x8 -.word 0x2000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x2 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_236_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_237_1: -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_238_1: -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_239_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_240_1: -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_241_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 5 -.byte 255 -.byte 2 -.byte 5 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 3 -.byte 6 -.byte 255 - -mask_242_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x8000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x8 -.word 0x2000 -.word 0x0 - -mask_243_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 - -mask_244_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_245_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 - -mask_246_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_247_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_248_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x2000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_249_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_250_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_251_1: -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 5 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 0 -.byte 3 -.byte 255 -.byte 0 -.byte 3 -.byte 255 -.byte 255 -.byte 1 - -mask_252_1: -.word 0x4000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x4 -.word 0x1000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x1 -.word 0x400 -.word 0x0 -.word 0x10 -.word 0x4000 -.word 0x0 -.word 0x100 - -mask_253_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x4 -.word 0x0 - -mask_254_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_255_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 - -mask_256_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 - -mask_257_1: -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 1 -.byte 4 -.byte 255 -.byte 1 -.byte 4 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_258_1: -.word 0x0 -.word 0x4 -.word 0x1000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x1 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_259_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_260_1: -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_261_1: -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_262_1: -.byte 8 -.byte 13 -.byte 255 -.byte 8 -.byte 11 -.byte 255 -.byte 8 -.byte 11 -.byte 255 -.byte 255 -.byte 9 -.byte 14 -.byte 255 -.byte 9 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_263_1: -.word 0x4 -.word 0x1000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x1 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_264_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_265_1: -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_266_1: -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_267_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_268_1: -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_269_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 12 -.byte 255 -.byte 9 -.byte 12 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 10 -.byte 13 -.byte 255 - -mask_270_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x4000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x4 -.word 0x1000 -.word 0x0 - -mask_271_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 - -mask_272_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_273_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 - -mask_274_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_275_1: -.byte 255 -.byte 255 -.byte 2 -.byte 7 -.byte 255 -.byte 2 -.byte 7 -.byte 255 -.byte 2 -.byte 5 -.byte 255 -.byte 2 -.byte 5 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_276_1: -.word 0x0 -.word 0x1 -.word 0x400 -.word 0x0 -.word 0x10 -.word 0x4000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_277_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_278_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_279_1: -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_280_1: -.word 0x0 -.word 0x10 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_281_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_282_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 3 -.byte 8 -.byte 255 -.byte 3 -.byte 6 -.byte 255 -.byte 3 -.byte 6 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 4 - -mask_283_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x1000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x1 -.word 0x400 - -mask_284_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_285_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_286_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 6 - -mask_287_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x4000 - -mask_288_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_289_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x400 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_290_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_291_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -.text -.global PQCLEAN_NTRUHPS2048677_AVX2_square_168_677 -.global _PQCLEAN_NTRUHPS2048677_AVX2_square_168_677 -PQCLEAN_NTRUHPS2048677_AVX2_square_168_677: -_PQCLEAN_NTRUHPS2048677_AVX2_square_168_677: -vmovdqa 0(%rsi), %ymm0 -vpshufb mask_0_1(%rip), %ymm0, %ymm5 -vpand mask_1_1(%rip), %ymm5, %ymm1 -vpand mask_2_1(%rip), %ymm5, %ymm2 -vpand mask_3_1(%rip), %ymm5, %ymm3 -vpshufb mask_4_1(%rip), %ymm0, %ymm5 -vpand mask_5_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_6_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm8 -vpshufb mask_7_1(%rip), %ymm8, %ymm5 -vpand mask_8_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_9_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_10_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_11_1(%rip), %ymm8, %ymm5 -vpand mask_12_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_13_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm0, %ymm6 -vpshufb mask_14_1(%rip), %ymm6, %ymm5 -vpand mask_15_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_16_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_17_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_18_1(%rip), %ymm6, %ymm5 -vpand mask_19_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_20_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_21_1(%rip), %ymm8, %ymm5 -vpand mask_22_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_23_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_24_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_25_1(%rip), %ymm8, %ymm5 -vpand mask_26_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_27_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $62, %ymm0, %ymm5 -vpsllq $2, %ymm0, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_28_1(%rip), %ymm6, %ymm5 -vpand mask_29_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_30_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_31_1(%rip), %ymm6, %ymm5 -vpand mask_32_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_33_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_34_1(%rip), %ymm8, %ymm5 -vpand mask_35_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_36_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_37_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_38_1(%rip), %ymm8, %ymm5 -vpand mask_39_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm6, %ymm7 -vpshufb mask_40_1(%rip), %ymm7, %ymm5 -vpand mask_41_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_42_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_43_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_44_1(%rip), %ymm7, %ymm5 -vpand mask_45_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_46_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_47_1(%rip), %ymm8, %ymm5 -vpand mask_48_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_49_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_50_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_51_1(%rip), %ymm8, %ymm5 -vpand mask_52_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsrlq $62, %ymm6, %ymm5 -vpsllq $2, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_53_1(%rip), %ymm7, %ymm5 -vpand mask_54_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_55_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_56_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_57_1(%rip), %ymm7, %ymm5 -vpand mask_58_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_59_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_60_1(%rip), %ymm8, %ymm5 -vpand mask_61_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_62_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_63_1(%rip), %ymm8, %ymm5 -vpand mask_64_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_65_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm7, %ymm5 -vpsllq $1, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_66_1(%rip), %ymm6, %ymm5 -vpand mask_67_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_68_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_69_1(%rip), %ymm6, %ymm5 -vpand mask_70_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_71_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_72_1(%rip), %ymm8, %ymm5 -vpand mask_73_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_74_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_75_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_76_1(%rip), %ymm8, %ymm5 -vpand mask_77_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_78_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm6, %ymm5 -vpsllq $1, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_79_1(%rip), %ymm7, %ymm5 -vpand mask_80_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_81_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_82_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_83_1(%rip), %ymm7, %ymm5 -vpand mask_84_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_85_1(%rip), %ymm8, %ymm5 -vpand mask_86_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_87_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_88_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_89_1(%rip), %ymm8, %ymm5 -vpand mask_90_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm7, %ymm5 -vpsllq $1, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_91_1(%rip), %ymm6, %ymm5 -vpand mask_92_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_93_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_94_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_95_1(%rip), %ymm6, %ymm5 -vpand mask_96_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_97_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_98_1(%rip), %ymm8, %ymm5 -vpand mask_99_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_100_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_101_1(%rip), %ymm8, %ymm5 -vpand mask_102_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_103_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vmovdqa 32(%rsi), %ymm0 -vpshufb mask_104_1(%rip), %ymm0, %ymm5 -vpand mask_105_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_106_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_107_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_108_1(%rip), %ymm0, %ymm5 -vpand mask_109_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_110_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm8 -vpshufb mask_111_1(%rip), %ymm8, %ymm5 -vpand mask_112_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_113_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_114_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_115_1(%rip), %ymm8, %ymm5 -vpand mask_116_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_117_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm0, %ymm5 -vpsllq $1, %ymm0, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_118_1(%rip), %ymm6, %ymm5 -vpand mask_119_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_120_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_121_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_122_1(%rip), %ymm6, %ymm5 -vpand mask_123_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_124_1(%rip), %ymm8, %ymm5 -vpand mask_125_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_126_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_127_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_128_1(%rip), %ymm8, %ymm5 -vpand mask_129_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm6, %ymm5 -vpsllq $1, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_130_1(%rip), %ymm7, %ymm5 -vpand mask_131_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_132_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_133_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_134_1(%rip), %ymm7, %ymm5 -vpand mask_135_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_136_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_137_1(%rip), %ymm8, %ymm5 -vpand mask_138_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_139_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_140_1(%rip), %ymm8, %ymm5 -vpand mask_141_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_142_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm7, %ymm6 -vpshufb mask_143_1(%rip), %ymm6, %ymm5 -vpand mask_144_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_145_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_146_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_147_1(%rip), %ymm6, %ymm5 -vpand mask_148_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_149_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_150_1(%rip), %ymm8, %ymm5 -vpand mask_151_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_152_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_153_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_154_1(%rip), %ymm8, %ymm5 -vpand mask_155_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsrlq $62, %ymm7, %ymm5 -vpsllq $2, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_156_1(%rip), %ymm6, %ymm5 -vpand mask_157_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_158_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_159_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_160_1(%rip), %ymm6, %ymm5 -vpand mask_161_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_162_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_163_1(%rip), %ymm8, %ymm5 -vpand mask_164_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_165_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_166_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_167_1(%rip), %ymm8, %ymm5 -vpand mask_168_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_169_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm6, %ymm7 -vpshufb mask_170_1(%rip), %ymm7, %ymm5 -vpand mask_171_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_172_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_173_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_174_1(%rip), %ymm7, %ymm5 -vpand mask_175_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_176_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_177_1(%rip), %ymm8, %ymm5 -vpand mask_178_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_179_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_180_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_181_1(%rip), %ymm8, %ymm5 -vpand mask_182_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $62, %ymm6, %ymm5 -vpsllq $2, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_183_1(%rip), %ymm7, %ymm5 -vpand mask_184_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_185_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_186_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_187_1(%rip), %ymm7, %ymm5 -vpand mask_188_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_189_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_190_1(%rip), %ymm8, %ymm5 -vpand mask_191_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_192_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_193_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_194_1(%rip), %ymm8, %ymm5 -vpand mask_195_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsrlq $63, %ymm7, %ymm5 -vpsllq $1, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_196_1(%rip), %ymm6, %ymm5 -vpand mask_197_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_198_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_199_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_200_1(%rip), %ymm6, %ymm5 -vpand mask_201_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_202_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_203_1(%rip), %ymm8, %ymm5 -vpand mask_204_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_205_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_206_1(%rip), %ymm8, %ymm5 -vpand mask_207_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_208_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vmovdqa 64(%rsi), %ymm0 -vpshufb mask_209_1(%rip), %ymm0, %ymm5 -vpand mask_210_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_211_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_212_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_213_1(%rip), %ymm0, %ymm5 -vpand mask_214_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm0, %ymm8 -vpshufb mask_215_1(%rip), %ymm8, %ymm5 -vpand mask_216_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_217_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_218_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_219_1(%rip), %ymm8, %ymm5 -vpand mask_220_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm0, %ymm6 -vpshufb mask_221_1(%rip), %ymm6, %ymm5 -vpand mask_222_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_223_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_224_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_225_1(%rip), %ymm6, %ymm5 -vpand mask_226_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_227_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_228_1(%rip), %ymm8, %ymm5 -vpand mask_229_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_230_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_231_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_232_1(%rip), %ymm8, %ymm5 -vpand mask_233_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsllq $2, %ymm0, %ymm6 -vpshufb mask_234_1(%rip), %ymm6, %ymm5 -vpand mask_235_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_236_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_237_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_238_1(%rip), %ymm6, %ymm5 -vpand mask_239_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_240_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_241_1(%rip), %ymm8, %ymm5 -vpand mask_242_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_243_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_244_1(%rip), %ymm8, %ymm5 -vpand mask_245_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_246_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $3, %ymm0, %ymm6 -vpshufb mask_247_1(%rip), %ymm6, %ymm5 -vpand mask_248_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_249_1(%rip), %ymm8, %ymm5 -vpand mask_250_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $60, %ymm0, %ymm5 -vpsllq $4, %ymm0, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_251_1(%rip), %ymm6, %ymm5 -vpand mask_252_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_253_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_254_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_255_1(%rip), %ymm6, %ymm5 -vpand mask_256_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_257_1(%rip), %ymm8, %ymm5 -vpand mask_258_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_259_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_260_1(%rip), %ymm8, %ymm5 -vpand mask_261_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm6, %ymm7 -vpshufb mask_262_1(%rip), %ymm7, %ymm5 -vpand mask_263_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_264_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_265_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_266_1(%rip), %ymm7, %ymm5 -vpand mask_267_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_268_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_269_1(%rip), %ymm8, %ymm5 -vpand mask_270_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_271_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_272_1(%rip), %ymm8, %ymm5 -vpand mask_273_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_274_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $62, %ymm6, %ymm5 -vpsllq $2, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_275_1(%rip), %ymm7, %ymm5 -vpand mask_276_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_277_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_278_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_279_1(%rip), %ymm7, %ymm5 -vpand mask_280_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_281_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_282_1(%rip), %ymm8, %ymm5 -vpand mask_283_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_284_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_285_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_286_1(%rip), %ymm8, %ymm5 -vpand mask_287_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsllq $1, %ymm7, %ymm6 -vpshufb mask_288_1(%rip), %ymm6, %ymm5 -vpand mask_289_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_290_1(%rip), %ymm8, %ymm5 -vpand mask_291_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vmovdqa %ymm1, 0(%rdi) -vmovdqa %ymm2, 32(%rdi) -vmovdqa %ymm3, 64(%rdi) -ret diff --git a/src/kem/ntru/ntruhps2048677/avx2/square_1_677_patience.s b/src/kem/ntru/ntruhps2048677/avx2/square_1_677_patience.s deleted file mode 100644 index c3dece86..00000000 --- a/src/kem/ntru/ntruhps2048677/avx2/square_1_677_patience.s +++ /dev/null @@ -1,134 +0,0 @@ -.data -.p2align 5 -.text -.global PQCLEAN_NTRUHPS2048677_AVX2_square_1_677 -.global _PQCLEAN_NTRUHPS2048677_AVX2_square_1_677 -PQCLEAN_NTRUHPS2048677_AVX2_square_1_677: -_PQCLEAN_NTRUHPS2048677_AVX2_square_1_677: -push %r15 -push %r14 -push %r13 -push %r12 -push %rbx -push %rbp -mov 0(%rsi), %r11 -mov %r11, %r10 -and $-0x1, %r10 -mov $0x5555555555555555, %rbp -pdep %rbp, %r10, %r10 -mov %r10, 0(%rdi) -mov $0xffffffff00000000, %rbx -pext %rbx, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 8(%rdi) -mov 8(%rsi), %r11 -mov %r11, %r10 -and $-0x1, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 16(%rdi) -pext %rbx, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 24(%rdi) -mov 16(%rsi), %r11 -mov %r11, %r10 -and $-0x1, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 32(%rdi) -pext %rbx, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 40(%rdi) -mov 24(%rsi), %r11 -mov %r11, %r10 -and $-0x1, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 48(%rdi) -pext %rbx, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 56(%rdi) -mov 32(%rsi), %r11 -mov %r11, %r10 -and $-0x1, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 64(%rdi) -pext %rbx, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 72(%rdi) -mov 40(%rsi), %r11 -mov $0x7fffffff80000, %r12 -pext %r12, %r11, %r10 -mov $0xaaaaaaaaaaaaaaaa, %r13 -pdep %r13, %r10, %r10 -xor %r10, 0(%rdi) -mov $0xfff8000000000000, %r14 -pext %r14, %r11, %r10 -mov $0x2aaaaaa, %r15 -pdep %r15, %r10, %r10 -xor %r10, 8(%rdi) -mov %r11, %r10 -and $0x7ffff, %r10 -mov $0x1555555555, %r9 -pdep %r9, %r10, %r10 -mov %r10, 80(%rdi) -mov 48(%rsi), %r11 -mov %r11, %r10 -and $0x7ffff, %r10 -mov $0xaaaaaaaaa8000000, %r8 -pdep %r8, %r10, %r10 -xor %r10, 8(%rdi) -pext %r12, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 16(%rdi) -pext %r14, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 24(%rdi) -mov 56(%rsi), %r11 -mov %r11, %r10 -and $0x7ffff, %r10 -pdep %r8, %r10, %r10 -xor %r10, 24(%rdi) -pext %r12, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 32(%rdi) -pext %r14, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 40(%rdi) -mov 64(%rsi), %r11 -mov %r11, %r10 -and $0x7ffff, %r10 -pdep %r8, %r10, %r10 -xor %r10, 40(%rdi) -pext %r12, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 48(%rdi) -pext %r14, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 56(%rdi) -mov 72(%rsi), %r11 -mov %r11, %r10 -and $0x7ffff, %r10 -pdep %r8, %r10, %r10 -xor %r10, 56(%rdi) -pext %r12, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 64(%rdi) -pext %r14, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 72(%rdi) -mov 80(%rsi), %r11 -mov %r11, %r10 -and $0x7ffff, %r10 -pdep %r8, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x1ffff80000, %rdx -pext %rdx, %r11, %r10 -mov $0xaaaaaaaaa, %rcx -pdep %rcx, %r10, %r10 -xor %r10, 80(%rdi) -movq $0x0, 88(%rdi) -pop %rbp -pop %rbx -pop %r12 -pop %r13 -pop %r14 -pop %r15 -ret diff --git a/src/kem/ntru/ntruhps2048677/avx2/square_21_677_shufbytes.s b/src/kem/ntru/ntruhps2048677/avx2/square_21_677_shufbytes.s deleted file mode 100644 index 3d357c1b..00000000 --- a/src/kem/ntru/ntruhps2048677/avx2/square_21_677_shufbytes.s +++ /dev/null @@ -1,6580 +0,0 @@ -.data -.p2align 5 -mask_0_1: -.byte 0 -.byte 4 -.byte 255 -.byte 9 -.byte 255 -.byte 10 -.byte 255 -.byte 15 -.byte 255 -.byte 3 -.byte 255 -.byte 8 -.byte 255 -.byte 13 -.byte 255 -.byte 14 -.byte 255 -.byte 3 -.byte 255 -.byte 8 -.byte 255 -.byte 9 -.byte 255 -.byte 14 -.byte 255 -.byte 2 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 13 - -mask_1_1: -.word 0x1 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x1000 - -mask_2_1: -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 - -mask_3_1: -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_4_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 - -mask_5_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 - -mask_6_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_7_1: -.byte 255 -.byte 1 -.byte 255 -.byte 6 -.byte 255 -.byte 11 -.byte 255 -.byte 12 -.byte 255 -.byte 4 -.byte 255 -.byte 5 -.byte 255 -.byte 10 -.byte 255 -.byte 15 -.byte 255 -.byte 6 -.byte 255 -.byte 7 -.byte 255 -.byte 12 -.byte 255 -.byte 0 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 - -mask_8_1: -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 - -mask_9_1: -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_10_1: -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_11_1: -.byte 13 -.byte 255 -.byte 255 -.byte 15 -.byte 6 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 13 -.byte 255 -.byte 1 -.byte 255 -.byte 6 -.byte 10 -.byte 255 -.byte 12 -.byte 255 -.byte 0 -.byte 14 -.byte 5 -.byte 255 -.byte 255 -.byte 7 -.byte 11 -.byte 255 -.byte 255 -.byte 0 -.byte 4 -.byte 255 -.byte 255 -.byte 255 - -mask_12_1: -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 - -mask_13_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x40 -.word 0x0 - -mask_14_1: -.word 0x40 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x10 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_15_1: -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_16_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_17_1: -.byte 255 -.byte 11 -.byte 15 -.byte 255 -.byte 255 -.byte 4 -.byte 8 -.byte 255 -.byte 255 -.byte 10 -.byte 14 -.byte 255 -.byte 255 -.byte 3 -.byte 7 -.byte 255 -.byte 255 -.byte 12 -.byte 3 -.byte 255 -.byte 255 -.byte 5 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 - -mask_18_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 - -mask_19_1: -.word 0x100 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 - -mask_20_1: -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_21_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_22_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_23_1: -.byte 6 -.byte 255 -.byte 11 -.byte 255 -.byte 12 -.byte 255 -.byte 4 -.byte 255 -.byte 5 -.byte 255 -.byte 10 -.byte 255 -.byte 15 -.byte 255 -.byte 3 -.byte 255 -.byte 5 -.byte 255 -.byte 10 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 - -mask_24_1: -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x10 - -mask_25_1: -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x10 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 - -mask_26_1: -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_27_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 - -mask_28_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 - -mask_29_1: -.byte 3 -.byte 255 -.byte 8 -.byte 255 -.byte 13 -.byte 255 -.byte 14 -.byte 255 -.byte 6 -.byte 255 -.byte 7 -.byte 255 -.byte 12 -.byte 255 -.byte 0 -.byte 255 -.byte 8 -.byte 255 -.byte 9 -.byte 255 -.byte 14 -.byte 255 -.byte 2 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 - -mask_30_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 - -mask_31_1: -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_32_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_33_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 - -mask_34_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 - -mask_35_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_36_1: -.byte 255 -.byte 255 -.byte 4 -.byte 8 -.byte 255 -.byte 255 -.byte 10 -.byte 1 -.byte 15 -.byte 255 -.byte 3 -.byte 255 -.byte 8 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 9 -.byte 13 -.byte 255 -.byte 255 -.byte 2 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_37_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 - -mask_38_1: -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 - -mask_39_1: -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_40_1: -.byte 13 -.byte 255 -.byte 1 -.byte 255 -.byte 6 -.byte 10 -.byte 255 -.byte 255 -.byte 12 -.byte 3 -.byte 255 -.byte 255 -.byte 5 -.byte 9 -.byte 255 -.byte 14 -.byte 14 -.byte 5 -.byte 0 -.byte 255 -.byte 7 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 15 - -mask_41_1: -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x4 -.word 0x2 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 - -mask_42_1: -.word 0x1 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x4000 - -mask_43_1: -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_44_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_45_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_46_1: -.byte 255 -.byte 13 -.byte 255 -.byte 14 -.byte 255 -.byte 6 -.byte 255 -.byte 7 -.byte 255 -.byte 12 -.byte 255 -.byte 0 -.byte 255 -.byte 5 -.byte 255 -.byte 10 -.byte 255 -.byte 12 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 - -mask_47_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_48_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x400 -.word 0x0 - -mask_49_1: -.word 0x400 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_50_1: -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_51_1: -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_52_1: -.byte 255 -.byte 10 -.byte 255 -.byte 15 -.byte 255 -.byte 3 -.byte 255 -.byte 8 -.byte 255 -.byte 9 -.byte 255 -.byte 14 -.byte 255 -.byte 2 -.byte 255 -.byte 7 -.byte 255 -.byte 11 -.byte 255 -.byte 3 -.byte 255 -.byte 4 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 8 - -mask_53_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x2000 - -mask_54_1: -.word 0x1000 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_55_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_56_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_57_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 - -mask_58_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_59_1: -.byte 255 -.byte 6 -.byte 10 -.byte 255 -.byte 255 -.byte 12 -.byte 3 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 10 -.byte 14 -.byte 255 -.byte 0 -.byte 3 -.byte 4 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 11 -.byte 15 -.byte 255 -.byte 255 -.byte 4 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 15 - -mask_60_1: -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x100 - -mask_61_1: -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x100 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x40 - -mask_62_1: -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x10 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_63_1: -.byte 255 -.byte 3 -.byte 255 -.byte 8 -.byte 12 -.byte 255 -.byte 255 -.byte 14 -.byte 5 -.byte 255 -.byte 255 -.byte 7 -.byte 11 -.byte 255 -.byte 255 -.byte 0 -.byte 7 -.byte 255 -.byte 255 -.byte 9 -.byte 13 -.byte 255 -.byte 255 -.byte 2 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 - -mask_64_1: -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 - -mask_65_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_66_1: -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_67_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_68_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_69_1: -.byte 15 -.byte 255 -.byte 3 -.byte 255 -.byte 8 -.byte 255 -.byte 9 -.byte 255 -.byte 14 -.byte 255 -.byte 2 -.byte 255 -.byte 7 -.byte 255 -.byte 12 -.byte 255 -.byte 14 -.byte 255 -.byte 15 -.byte 255 -.byte 7 -.byte 255 -.byte 8 -.byte 255 -.byte 13 -.byte 255 -.byte 1 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 - -mask_70_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 - -mask_71_1: -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x4 -.word 0x0 - -mask_72_1: -.word 0x4 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x1 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_73_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_74_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_75_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_76_1: -.byte 12 -.byte 255 -.byte 0 -.byte 255 -.byte 5 -.byte 255 -.byte 10 -.byte 255 -.byte 11 -.byte 255 -.byte 3 -.byte 255 -.byte 4 -.byte 255 -.byte 9 -.byte 255 -.byte 13 -.byte 255 -.byte 5 -.byte 255 -.byte 6 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 - -mask_77_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 - -mask_78_1: -.word 0x10 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 - -mask_79_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_80_1: -.byte 8 -.byte 12 -.byte 255 -.byte 255 -.byte 14 -.byte 5 -.byte 0 -.byte 255 -.byte 7 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 9 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 - -mask_81_1: -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x4 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_82_1: -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x4000 -.word 0x0 - -mask_83_1: -.word 0x4000 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_84_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_85_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_86_1: -.byte 5 -.byte 255 -.byte 10 -.byte 14 -.byte 255 -.byte 255 -.byte 3 -.byte 7 -.byte 255 -.byte 255 -.byte 9 -.byte 13 -.byte 255 -.byte 255 -.byte 2 -.byte 6 -.byte 255 -.byte 255 -.byte 11 -.byte 15 -.byte 255 -.byte 255 -.byte 4 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 15 -.byte 255 -.byte 255 -.byte 255 - -mask_87_1: -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 - -mask_88_1: -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 - -mask_89_1: -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_90_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_91_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_92_1: -.byte 255 -.byte 15 -.byte 255 -.byte 3 -.byte 255 -.byte 8 -.byte 255 -.byte 13 -.byte 255 -.byte 14 -.byte 255 -.byte 6 -.byte 255 -.byte 7 -.byte 255 -.byte 12 -.byte 0 -.byte 14 -.byte 255 -.byte 2 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 11 - -mask_93_1: -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x800 -.word 0x0 - -mask_94_1: -.word 0x800 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x200 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 - -mask_95_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_96_1: -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_97_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_98_1: -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_99_1: -.byte 255 -.byte 12 -.byte 255 -.byte 4 -.byte 255 -.byte 5 -.byte 255 -.byte 10 -.byte 14 -.byte 255 -.byte 255 -.byte 3 -.byte 7 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 0 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 9 -.byte 255 -.byte 255 - -mask_100_1: -.word 0x2000 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 - -mask_101_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 - -mask_102_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_103_1: -.byte 255 -.byte 8 -.byte 12 -.byte 255 -.byte 255 -.byte 1 -.byte 5 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 12 -.byte 3 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 7 -.byte 11 -.byte 255 -.byte 255 -.byte 0 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 15 -.byte 255 -.byte 3 -.byte 255 - -mask_104_1: -.word 0x400 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x200 -.word 0x100 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x80 - -mask_105_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 - -mask_106_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_107_1: -.byte 8 -.byte 255 -.byte 255 -.byte 10 -.byte 14 -.byte 255 -.byte 255 -.byte 3 -.byte 7 -.byte 255 -.byte 12 -.byte 255 -.byte 0 -.byte 14 -.byte 5 -.byte 255 -.byte 9 -.byte 255 -.byte 14 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 13 -.byte 255 -.byte 255 -.byte 2 -.byte 6 -.byte 255 - -mask_108_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x100 -.word 0x0 - -mask_109_1: -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x20 - -mask_110_1: -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_111_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_112_1: -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_113_1: -.byte 4 -.byte 255 -.byte 5 -.byte 255 -.byte 10 -.byte 255 -.byte 15 -.byte 255 -.byte 3 -.byte 255 -.byte 8 -.byte 255 -.byte 9 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 13 -.byte 255 - -mask_114_1: -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x8 -.word 0x0 - -mask_115_1: -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 - -mask_116_1: -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_117_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_118_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_119_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_120_1: -.byte 14 -.byte 255 -.byte 6 -.byte 255 -.byte 7 -.byte 255 -.byte 12 -.byte 255 -.byte 0 -.byte 255 -.byte 5 -.byte 9 -.byte 255 -.byte 255 -.byte 11 -.byte 2 -.byte 2 -.byte 255 -.byte 7 -.byte 11 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 - -mask_121_1: -.word 0x20 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 - -mask_122_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 - -mask_123_1: -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_124_1: -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_125_1: -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_126_1: -.byte 10 -.byte 14 -.byte 255 -.byte 255 -.byte 3 -.byte 7 -.byte 255 -.byte 12 -.byte 255 -.byte 0 -.byte 14 -.byte 5 -.byte 0 -.byte 255 -.byte 7 -.byte 11 -.byte 9 -.byte 13 -.byte 255 -.byte 255 -.byte 2 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 10 - -mask_127_1: -.word 0x4 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x1 -.word 0x2 -.word 0x1 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x8000 -.word 0x0 - -mask_128_1: -.word 0x8000 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x2000 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 - -mask_129_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_130_1: -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_131_1: -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_132_1: -.byte 255 -.byte 255 -.byte 12 -.byte 3 -.byte 255 -.byte 255 -.byte 5 -.byte 9 -.byte 255 -.byte 14 -.byte 255 -.byte 2 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 15 -.byte 255 -.byte 255 -.byte 4 -.byte 8 -.byte 255 -.byte 255 - -mask_133_1: -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x1 -.word 0x0 - -mask_134_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x2000 -.word 0x0 - -mask_135_1: -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_136_1: -.byte 255 -.byte 7 -.byte 255 -.byte 12 -.byte 255 -.byte 0 -.byte 255 -.byte 5 -.byte 255 -.byte 10 -.byte 255 -.byte 11 -.byte 255 -.byte 3 -.byte 255 -.byte 4 -.byte 255 -.byte 6 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 15 -.byte 255 -.byte 3 - -mask_137_1: -.word 0x4000 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x2000 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x800 - -mask_138_1: -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 - -mask_139_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_140_1: -.byte 255 -.byte 8 -.byte 255 -.byte 9 -.byte 255 -.byte 14 -.byte 255 -.byte 2 -.byte 255 -.byte 7 -.byte 11 -.byte 255 -.byte 255 -.byte 13 -.byte 4 -.byte 255 -.byte 255 -.byte 9 -.byte 13 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 13 -.byte 255 -.byte 1 -.byte 255 -.byte 6 - -mask_141_1: -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x1000 -.word 0x0 - -mask_142_1: -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x200 - -mask_143_1: -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_144_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_145_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_146_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_147_1: -.byte 3 -.byte 255 -.byte 255 -.byte 5 -.byte 9 -.byte 255 -.byte 14 -.byte 255 -.byte 2 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 9 -.byte 13 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 4 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 12 -.byte 255 - -mask_148_1: -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x80 -.word 0x0 - -mask_149_1: -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x20 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 - -mask_150_1: -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_151_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_152_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_153_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_154_1: -.byte 0 -.byte 14 -.byte 5 -.byte 255 -.byte 255 -.byte 7 -.byte 11 -.byte 255 -.byte 255 -.byte 0 -.byte 4 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 2 -.byte 6 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 10 -.byte 255 -.byte 255 -.byte 255 - -mask_155_1: -.word 0x200 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 - -mask_156_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 - -mask_157_1: -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_158_1: -.byte 9 -.byte 255 -.byte 14 -.byte 255 -.byte 2 -.byte 255 -.byte 7 -.byte 255 -.byte 12 -.byte 255 -.byte 13 -.byte 255 -.byte 5 -.byte 255 -.byte 6 -.byte 255 -.byte 8 -.byte 255 -.byte 13 -.byte 255 -.byte 1 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 - -mask_159_1: -.word 0x40 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x20 -.word 0x10 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x8 - -mask_160_1: -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_161_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_162_1: -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_163_1: -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_164_1: -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_165_1: -.byte 10 -.byte 255 -.byte 11 -.byte 255 -.byte 3 -.byte 255 -.byte 4 -.byte 255 -.byte 9 -.byte 13 -.byte 255 -.byte 255 -.byte 15 -.byte 6 -.byte 255 -.byte 255 -.byte 11 -.byte 15 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 15 -.byte 255 -.byte 3 -.byte 255 -.byte 8 -.byte 255 - -mask_166_1: -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x10 -.word 0x0 - -mask_167_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x2 - -mask_168_1: -.word 0x1 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_169_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_170_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_171_1: -.byte 0 -.byte 255 -.byte 7 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 11 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 14 -.byte 255 -.byte 2 - -mask_172_1: -.word 0x2 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x8000 - -mask_173_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 - -mask_174_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_175_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_176_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_177_1: -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 9 -.byte 13 -.byte 255 -.byte 255 -.byte 2 -.byte 6 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 13 -.byte 4 -.byte 4 -.byte 8 -.byte 255 -.byte 13 -.byte 255 -.byte 1 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 12 -.byte 255 -.byte 255 -.byte 1 -.byte 5 - -mask_178_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x1 - -mask_179_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x2000 - -mask_180_1: -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_181_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_182_1: -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_183_1: -.byte 12 -.byte 255 -.byte 255 -.byte 14 -.byte 5 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 12 -.byte 255 -.byte 0 -.byte 255 -.byte 5 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 - -mask_184_1: -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_185_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 - -mask_186_1: -.word 0x80 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_187_1: -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_188_1: -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_189_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 2 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 8 - -mask_190_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x400 - -mask_191_1: -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_192_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_193_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_194_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 - -mask_195_1: -.byte 5 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 12 -.byte 3 -.byte 255 -.byte 255 -.byte 5 -.byte 9 -.byte 255 -.byte 14 -.byte 255 -.byte 15 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 - -mask_196_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_197_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 - -mask_198_1: -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_199_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_200_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_201_1: -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 8 -.byte 255 -.byte 13 -.byte 255 -.byte 1 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 - -mask_202_1: -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 - -mask_203_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_204_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_205_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_206_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_207_1: -.byte 255 -.byte 255 -.byte 3 -.byte 7 -.byte 255 -.byte 255 -.byte 9 -.byte 0 -.byte 14 -.byte 255 -.byte 2 -.byte 255 -.byte 7 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_208_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 - -mask_209_1: -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_210_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_211_1: -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 4 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 14 - -mask_212_1: -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 - -mask_213_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x8000 - -mask_214_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_215_1: -.byte 255 -.byte 12 -.byte 255 -.byte 0 -.byte 14 -.byte 5 -.byte 255 -.byte 255 -.byte 7 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 - -mask_216_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_217_1: -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 - -mask_218_1: -.word 0x800 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_219_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 15 -.byte 255 -.byte 3 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 7 - -mask_220_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x4000 - -mask_221_1: -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_222_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_223_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_224_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 - -mask_225_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_226_1: -.byte 255 -.byte 5 -.byte 9 -.byte 255 -.byte 255 -.byte 11 -.byte 2 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 9 -.byte 13 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 - -mask_227_1: -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_228_1: -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 - -mask_229_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_230_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_231_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_232_1: -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 13 -.byte 255 -.byte 1 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 - -mask_233_1: -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 - -mask_234_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_235_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_236_1: -.byte 14 -.byte 255 -.byte 2 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 9 -.byte 13 -.byte 255 -.byte 255 -.byte 2 -.byte 6 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_237_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 - -mask_238_1: -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_239_1: -.word 0x8 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_240_1: -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 4 -.byte 255 -.byte 5 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 - -mask_241_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 - -mask_242_1: -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 - -mask_243_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_244_1: -.byte 7 -.byte 11 -.byte 255 -.byte 255 -.byte 13 -.byte 4 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 11 -.byte 15 -.byte 255 -.byte 255 -.byte 4 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 - -mask_245_1: -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_246_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 - -mask_247_1: -.word 0x8000 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_248_1: -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 1 -.byte 15 -.byte 255 -.byte 3 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 - -mask_249_1: -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 - -mask_250_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_251_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_252_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 - -mask_253_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 - -mask_254_1: -.byte 255 -.byte 4 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 11 -.byte 15 -.byte 255 -.byte 255 -.byte 4 -.byte 8 -.byte 255 -.byte 13 -.byte 255 -.byte 14 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 - -mask_255_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_256_1: -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 - -mask_257_1: -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_258_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_259_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_260_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_261_1: -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 7 -.byte 255 -.byte 12 -.byte 255 -.byte 0 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 - -mask_262_1: -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 - -mask_263_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_264_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -.text -.global PQCLEAN_NTRUHPS2048677_AVX2_square_21_677 -.global _PQCLEAN_NTRUHPS2048677_AVX2_square_21_677 -PQCLEAN_NTRUHPS2048677_AVX2_square_21_677: -_PQCLEAN_NTRUHPS2048677_AVX2_square_21_677: -vmovdqa 0(%rsi), %ymm0 -vpshufb mask_0_1(%rip), %ymm0, %ymm5 -vpand mask_1_1(%rip), %ymm5, %ymm1 -vpand mask_2_1(%rip), %ymm5, %ymm2 -vpand mask_3_1(%rip), %ymm5, %ymm3 -vpshufb mask_4_1(%rip), %ymm0, %ymm5 -vpand mask_5_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_6_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm8 -vpshufb mask_7_1(%rip), %ymm8, %ymm5 -vpand mask_8_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_9_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_10_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm0, %ymm6 -vpshufb mask_11_1(%rip), %ymm6, %ymm5 -vpand mask_12_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_13_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_14_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_15_1(%rip), %ymm6, %ymm5 -vpand mask_16_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_17_1(%rip), %ymm8, %ymm5 -vpand mask_18_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_19_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_20_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_21_1(%rip), %ymm8, %ymm5 -vpand mask_22_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $62, %ymm0, %ymm5 -vpsllq $2, %ymm0, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_23_1(%rip), %ymm6, %ymm5 -vpand mask_24_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_25_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_26_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_27_1(%rip), %ymm6, %ymm5 -vpand mask_28_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_29_1(%rip), %ymm8, %ymm5 -vpand mask_30_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_31_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_32_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_33_1(%rip), %ymm8, %ymm5 -vpand mask_34_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_35_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm6, %ymm5 -vpsllq $1, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_36_1(%rip), %ymm7, %ymm5 -vpand mask_37_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_38_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_39_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_40_1(%rip), %ymm8, %ymm5 -vpand mask_41_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_42_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_43_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_44_1(%rip), %ymm8, %ymm5 -vpand mask_45_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsllq $1, %ymm7, %ymm6 -vpshufb mask_46_1(%rip), %ymm6, %ymm5 -vpand mask_47_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_48_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_49_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_50_1(%rip), %ymm6, %ymm5 -vpand mask_51_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_52_1(%rip), %ymm8, %ymm5 -vpand mask_53_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_54_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_55_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_56_1(%rip), %ymm8, %ymm5 -vpand mask_57_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_58_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $62, %ymm7, %ymm5 -vpsllq $2, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_59_1(%rip), %ymm6, %ymm5 -vpand mask_60_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_61_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_62_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_63_1(%rip), %ymm8, %ymm5 -vpand mask_64_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_65_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_66_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_67_1(%rip), %ymm8, %ymm5 -vpand mask_68_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsllq $1, %ymm6, %ymm7 -vpshufb mask_69_1(%rip), %ymm7, %ymm5 -vpand mask_70_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_71_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_72_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_73_1(%rip), %ymm7, %ymm5 -vpand mask_74_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_75_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_76_1(%rip), %ymm8, %ymm5 -vpand mask_77_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_78_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_79_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $62, %ymm6, %ymm5 -vpsllq $2, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_80_1(%rip), %ymm7, %ymm5 -vpand mask_81_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_82_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_83_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_84_1(%rip), %ymm7, %ymm5 -vpand mask_85_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_86_1(%rip), %ymm8, %ymm5 -vpand mask_87_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_88_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_89_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_90_1(%rip), %ymm8, %ymm5 -vpand mask_91_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vmovdqa 32(%rsi), %ymm0 -vpshufb mask_92_1(%rip), %ymm0, %ymm5 -vpand mask_93_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_94_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_95_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_96_1(%rip), %ymm0, %ymm5 -vpand mask_97_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_98_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm8 -vpshufb mask_99_1(%rip), %ymm8, %ymm5 -vpand mask_100_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_101_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_102_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm0, %ymm5 -vpsllq $1, %ymm0, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_103_1(%rip), %ymm6, %ymm5 -vpand mask_104_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_105_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_106_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_107_1(%rip), %ymm8, %ymm5 -vpand mask_108_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_109_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_110_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_111_1(%rip), %ymm8, %ymm5 -vpand mask_112_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm6, %ymm5 -vpsllq $1, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_113_1(%rip), %ymm7, %ymm5 -vpand mask_114_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_115_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_116_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_117_1(%rip), %ymm7, %ymm5 -vpand mask_118_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_119_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_120_1(%rip), %ymm8, %ymm5 -vpand mask_121_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_122_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_123_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_124_1(%rip), %ymm8, %ymm5 -vpand mask_125_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsrlq $63, %ymm7, %ymm5 -vpsllq $1, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_126_1(%rip), %ymm6, %ymm5 -vpand mask_127_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_128_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_129_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_130_1(%rip), %ymm6, %ymm5 -vpand mask_131_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_132_1(%rip), %ymm8, %ymm5 -vpand mask_133_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_134_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_135_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm6, %ymm5 -vpsllq $1, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_136_1(%rip), %ymm7, %ymm5 -vpand mask_137_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_138_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_139_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_140_1(%rip), %ymm8, %ymm5 -vpand mask_141_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_142_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_143_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_144_1(%rip), %ymm8, %ymm5 -vpand mask_145_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_146_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm7, %ymm6 -vpshufb mask_147_1(%rip), %ymm6, %ymm5 -vpand mask_148_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_149_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_150_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_151_1(%rip), %ymm6, %ymm5 -vpand mask_152_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_153_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_154_1(%rip), %ymm8, %ymm5 -vpand mask_155_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_156_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_157_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $62, %ymm7, %ymm5 -vpsllq $2, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_158_1(%rip), %ymm6, %ymm5 -vpand mask_159_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_160_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_161_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_162_1(%rip), %ymm6, %ymm5 -vpand mask_163_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_164_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_165_1(%rip), %ymm8, %ymm5 -vpand mask_166_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_167_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_168_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_169_1(%rip), %ymm8, %ymm5 -vpand mask_170_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsrlq $63, %ymm6, %ymm5 -vpsllq $1, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_171_1(%rip), %ymm7, %ymm5 -vpand mask_172_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_173_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_174_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_175_1(%rip), %ymm7, %ymm5 -vpand mask_176_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_177_1(%rip), %ymm8, %ymm5 -vpand mask_178_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_179_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_180_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_181_1(%rip), %ymm8, %ymm5 -vpand mask_182_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vmovdqa 64(%rsi), %ymm0 -vpshufb mask_183_1(%rip), %ymm0, %ymm5 -vpand mask_184_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_185_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_186_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_187_1(%rip), %ymm0, %ymm5 -vpand mask_188_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm0, %ymm8 -vpshufb mask_189_1(%rip), %ymm8, %ymm5 -vpand mask_190_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_191_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_192_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_193_1(%rip), %ymm8, %ymm5 -vpand mask_194_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsllq $1, %ymm0, %ymm6 -vpshufb mask_195_1(%rip), %ymm6, %ymm5 -vpand mask_196_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_197_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_198_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_199_1(%rip), %ymm6, %ymm5 -vpand mask_200_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_201_1(%rip), %ymm8, %ymm5 -vpand mask_202_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_203_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_204_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_205_1(%rip), %ymm8, %ymm5 -vpand mask_206_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $2, %ymm0, %ymm6 -vpshufb mask_207_1(%rip), %ymm6, %ymm5 -vpand mask_208_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_209_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_210_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_211_1(%rip), %ymm8, %ymm5 -vpand mask_212_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_213_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_214_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $61, %ymm0, %ymm5 -vpsllq $3, %ymm0, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_215_1(%rip), %ymm6, %ymm5 -vpand mask_216_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_217_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_218_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_219_1(%rip), %ymm8, %ymm5 -vpand mask_220_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_221_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_222_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_223_1(%rip), %ymm8, %ymm5 -vpand mask_224_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_225_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm6, %ymm7 -vpshufb mask_226_1(%rip), %ymm7, %ymm5 -vpand mask_227_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_228_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_229_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_230_1(%rip), %ymm7, %ymm5 -vpand mask_231_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_232_1(%rip), %ymm8, %ymm5 -vpand mask_233_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_234_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_235_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $62, %ymm6, %ymm5 -vpsllq $2, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_236_1(%rip), %ymm7, %ymm5 -vpand mask_237_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_238_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_239_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_240_1(%rip), %ymm8, %ymm5 -vpand mask_241_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_242_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_243_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm7, %ymm5 -vpsllq $1, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_244_1(%rip), %ymm6, %ymm5 -vpand mask_245_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_246_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_247_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_248_1(%rip), %ymm8, %ymm5 -vpand mask_249_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_250_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_251_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_252_1(%rip), %ymm8, %ymm5 -vpand mask_253_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsllq $1, %ymm6, %ymm7 -vpshufb mask_254_1(%rip), %ymm7, %ymm5 -vpand mask_255_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_256_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_257_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_258_1(%rip), %ymm7, %ymm5 -vpand mask_259_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_260_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_261_1(%rip), %ymm8, %ymm5 -vpand mask_262_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_263_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_264_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vmovdqa %ymm1, 0(%rdi) -vmovdqa %ymm2, 32(%rdi) -vmovdqa %ymm3, 64(%rdi) -ret diff --git a/src/kem/ntru/ntruhps2048677/avx2/square_2_677_patience.s b/src/kem/ntru/ntruhps2048677/avx2/square_2_677_patience.s deleted file mode 100644 index 74e32bf6..00000000 --- a/src/kem/ntru/ntruhps2048677/avx2/square_2_677_patience.s +++ /dev/null @@ -1,235 +0,0 @@ -.data -.p2align 5 -.text -.global PQCLEAN_NTRUHPS2048677_AVX2_square_2_677 -.global _PQCLEAN_NTRUHPS2048677_AVX2_square_2_677 -PQCLEAN_NTRUHPS2048677_AVX2_square_2_677: -_PQCLEAN_NTRUHPS2048677_AVX2_square_2_677: -push %r15 -push %r14 -push %r13 -push %r12 -push %rbx -push %rbp -mov 0(%rsi), %r11 -mov %r11, %r10 -and $0xffff, %r10 -mov $0x1111111111111111, %rbp -pdep %rbp, %r10, %r10 -mov %r10, 0(%rdi) -mov $0xffff0000, %rbx -pext %rbx, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 8(%rdi) -mov $0xffff00000000, %r12 -pext %r12, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 16(%rdi) -mov $0xffff000000000000, %r13 -pext %r13, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 24(%rdi) -mov 8(%rsi), %r11 -mov %r11, %r10 -and $0xffff, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 32(%rdi) -pext %rbx, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 40(%rdi) -pext %r12, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 48(%rdi) -pext %r13, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 56(%rdi) -mov 16(%rsi), %r11 -mov $0x3fffc0000000000, %r14 -pext %r14, %r11, %r10 -mov $0x8888888888888888, %r15 -pdep %r15, %r10, %r10 -xor %r10, 0(%rdi) -mov $0xfc00000000000000, %r9 -pext %r9, %r11, %r10 -mov $0x888888, %r8 -pdep %r8, %r10, %r10 -xor %r10, 8(%rdi) -mov %r11, %r10 -and $0xffff, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 64(%rdi) -pext %rbx, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 72(%rdi) -mov $0x3ff00000000, %rdx -pext %rdx, %r11, %r10 -mov $0x1111111111, %rcx -pdep %rcx, %r10, %r10 -mov %r10, 80(%rdi) -mov 24(%rsi), %r11 -mov %r11, %r10 -and $0x3ff, %r10 -mov $0x8888888888000000, %rax -pdep %rax, %r10, %r10 -xor %r10, 8(%rdi) -mov $0x3fffc00, %r12 -pext %r12, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x3fffc000000, %r13 -pext %r13, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 24(%rdi) -pext %r14, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 32(%rdi) -pext %r9, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 40(%rdi) -mov 32(%rsi), %r11 -mov %r11, %r10 -and $0x3ff, %r10 -pdep %rax, %r10, %r10 -xor %r10, 40(%rdi) -pext %r12, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 48(%rdi) -pext %r13, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 56(%rdi) -pext %r14, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 64(%rdi) -pext %r9, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 72(%rdi) -mov 40(%rsi), %r11 -mov $0x7fff80000, %rbx -pext %rbx, %r11, %r10 -mov $0x4444444444444444, %rbp -pdep %rbp, %r10, %r10 -xor %r10, 0(%rdi) -mov $0x7fff800000000, %rdx -pext %rdx, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 8(%rdi) -mov $0xfff8000000000000, %rcx -pext %rcx, %r11, %r10 -mov $0x4444444444444, %rax -pdep %rax, %r10, %r10 -xor %r10, 16(%rdi) -mov %r11, %r10 -and $0x3ff, %r10 -mov $0x8888888888000000, %r12 -pdep %r12, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x7fc00, %r13 -pext %r13, %r11, %r10 -mov $0x888888888, %r14 -pdep %r14, %r10, %r10 -xor %r10, 80(%rdi) -mov 48(%rsi), %r11 -mov %r11, %r10 -and $0x7, %r10 -mov $0x4440000000000000, %r15 -pdep %r15, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x7fff8, %r9 -pext %r9, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 24(%rdi) -pext %rbx, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 32(%rdi) -pext %rdx, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 40(%rdi) -pext %rcx, %r11, %r10 -pdep %rax, %r10, %r10 -xor %r10, 48(%rdi) -mov 56(%rsi), %r11 -mov $0xf000000000000000, %r8 -pext %r8, %r11, %r10 -mov $0x2222, %r12 -pdep %r12, %r10, %r10 -xor %r10, 0(%rdi) -mov %r11, %r10 -and $0x7, %r10 -pdep %r15, %r10, %r10 -xor %r10, 48(%rdi) -pext %r9, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 56(%rdi) -pext %rbx, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 64(%rdi) -pext %rdx, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 72(%rdi) -mov $0xff8000000000000, %r13 -pext %r13, %r11, %r10 -mov $0x444444444, %r14 -pdep %r14, %r10, %r10 -xor %r10, 80(%rdi) -mov 64(%rsi), %r11 -mov %r11, %r10 -and $0xfff, %r10 -mov $0x2222222222220000, %rcx -pdep %rcx, %r10, %r10 -xor %r10, 0(%rdi) -mov $0xffff000, %rax -pext %rax, %r11, %r10 -mov $0x2222222222222222, %r8 -pdep %r8, %r10, %r10 -xor %r10, 8(%rdi) -mov $0xffff0000000, %r12 -pext %r12, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 16(%rdi) -mov $0xffff00000000000, %r15 -pext %r15, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 24(%rdi) -mov $0xf000000000000000, %r9 -pext %r9, %r11, %r10 -mov $0x2222, %rbx -pdep %rbx, %r10, %r10 -xor %r10, 32(%rdi) -mov 72(%rsi), %r11 -mov %r11, %r10 -and $0xfff, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 32(%rdi) -pext %rax, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 40(%rdi) -pext %r12, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 48(%rdi) -pext %r15, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 56(%rdi) -pext %r9, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 64(%rdi) -mov 80(%rsi), %r11 -mov %r11, %r10 -and $0xfff, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 64(%rdi) -pext %rax, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x1ff0000000, %rdx -pext %rdx, %r11, %r10 -mov $0x222222222, %rbp -pdep %rbp, %r10, %r10 -xor %r10, 80(%rdi) -movq $0x0, 88(%rdi) -pop %rbp -pop %rbx -pop %r12 -pop %r13 -pop %r14 -pop %r15 -ret diff --git a/src/kem/ntru/ntruhps2048677/avx2/square_336_677_shufbytes.s b/src/kem/ntru/ntruhps2048677/avx2/square_336_677_shufbytes.s deleted file mode 100644 index 62cdb964..00000000 --- a/src/kem/ntru/ntruhps2048677/avx2/square_336_677_shufbytes.s +++ /dev/null @@ -1,6450 +0,0 @@ -.data -.p2align 5 -mask_0_1: -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_1_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x202 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_2_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x404 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x808 -.word 0x808 -.word 0x0 -.word 0x0 - -mask_3_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_4_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_5_1: -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 12 -.byte 8 -.byte 255 -.byte 12 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 - -mask_6_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x202 -.word 0x0 -.word 0x202 -.word 0x202 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_7_1: -.word 0x0 -.word 0x400 -.word 0x404 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x808 -.word 0x808 - -mask_8_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_9_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 4 -.byte 255 -.byte 255 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_10_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1010 -.word 0x0 -.word 0x1010 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_11_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_12_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_13_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8080 -.word 0x8080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x101 -.word 0x101 -.word 0x0 -.word 0x0 - -mask_14_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_15_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_16_1: -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 - -mask_17_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x4040 -.word 0x4000 -.word 0x4040 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_18_1: -.word 0x0 -.word 0x8080 -.word 0x8080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x101 -.word 0x101 - -mask_19_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_20_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x202 -.word 0x200 -.word 0x202 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_21_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_22_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_23_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1010 -.word 0x1010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x2020 -.word 0x20 -.word 0x0 -.word 0x0 - -mask_24_1: -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 15 -.byte 11 -.byte 7 -.byte 15 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 - -mask_25_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x808 -.word 0x800 -.word 0x808 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_26_1: -.word 0x0 -.word 0x1010 -.word 0x1010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x2020 -.word 0x20 - -mask_27_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_28_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_29_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x4040 -.word 0x4000 -.word 0x4040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_30_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_31_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x101 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_32_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x202 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x404 -.word 0x404 -.word 0x0 -.word 0x0 - -mask_33_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_34_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_35_1: -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 13 -.byte 9 -.byte 255 -.byte 13 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 - -mask_36_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x101 -.word 0x0 -.word 0x101 -.word 0x101 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_37_1: -.word 0x0 -.word 0x200 -.word 0x202 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x404 -.word 0x404 - -mask_38_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_39_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 5 -.byte 255 -.byte 255 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_40_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x808 -.word 0x0 -.word 0x808 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_41_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_42_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_43_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4040 -.word 0x4040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x8080 -.word 0x80 -.word 0x0 -.word 0x0 - -mask_44_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_45_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_46_1: -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 - -mask_47_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x2020 -.word 0x2000 -.word 0x2020 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_48_1: -.word 0x0 -.word 0x4040 -.word 0x4040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x8080 -.word 0x80 - -mask_49_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_50_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x101 -.word 0x100 -.word 0x101 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_51_1: -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_52_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x404 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_53_1: -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x800 -.word 0x808 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1010 -.word 0x1010 -.word 0x0 -.word 0x0 - -mask_54_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_55_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_56_1: -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 12 -.byte 8 -.byte 255 -.byte 12 -.byte 12 -.byte 8 -.byte 4 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 255 - -mask_57_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x404 -.word 0x0 -.word 0x404 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_58_1: -.word 0x0 -.word 0x800 -.word 0x808 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x1010 -.word 0x10 - -mask_59_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_60_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 4 -.byte 255 -.byte 255 -.byte 8 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_61_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2020 -.word 0x0 -.word 0x2020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_62_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_63_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_64_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x101 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x202 -.word 0x202 -.word 0x0 -.word 0x0 - -mask_65_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_66_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_67_1: -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 - -mask_68_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x8080 -.word 0x8000 -.word 0x8080 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_69_1: -.word 0x0 -.word 0x100 -.word 0x101 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x202 -.word 0x202 - -mask_70_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_71_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x404 -.word 0x400 -.word 0x404 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_72_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_73_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_74_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2020 -.word 0x2020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x4040 -.word 0x40 -.word 0x0 -.word 0x0 - -mask_75_1: -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 15 -.byte 11 -.byte 7 -.byte 15 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 - -mask_76_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x1010 -.word 0x1000 -.word 0x1010 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_77_1: -.word 0x0 -.word 0x2020 -.word 0x2020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x4040 -.word 0x40 - -mask_78_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_79_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_80_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x8080 -.word 0x8000 -.word 0x8080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_81_1: -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 - -mask_82_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x202 -.word 0x202 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x404 -.word 0x4 - -mask_83_1: -.word 0x404 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x808 -.word 0x808 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_84_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_85_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_86_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1010 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_87_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 - -mask_88_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x202 -.word 0x202 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 - -mask_89_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x808 -.word 0x808 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_90_1: -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_91_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_92_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1010 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_93_1: -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 - -mask_94_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x4040 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8080 -.word 0x8080 -.word 0x0 - -mask_95_1: -.word 0x8080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x101 -.word 0x101 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_96_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_97_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x202 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_98_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 - -mask_99_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x4040 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8080 - -mask_100_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x101 -.word 0x101 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_101_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_102_1: -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x202 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_103_1: -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 - -mask_104_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x808 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1010 -.word 0x1010 -.word 0x0 - -mask_105_1: -.word 0x1010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2020 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_106_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_107_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_108_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x4040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_109_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 - -mask_110_1: -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x808 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1010 - -mask_111_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x2000 -.word 0x2020 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_112_1: -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_113_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_114_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x4040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_115_1: -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 - -mask_116_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x101 -.word 0x101 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x202 -.word 0x2 - -mask_117_1: -.word 0x202 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x404 -.word 0x404 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_118_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_119_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_120_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x808 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_121_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 - -mask_122_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x101 -.word 0x101 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 - -mask_123_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x404 -.word 0x404 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_124_1: -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_125_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_126_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x808 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_127_1: -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 - -mask_128_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x2020 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4040 -.word 0x4040 -.word 0x0 - -mask_129_1: -.word 0x4040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8080 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_130_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_131_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x101 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_132_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 - -mask_133_1: -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x2020 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4040 - -mask_134_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x8000 -.word 0x8080 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_135_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_136_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x101 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_137_1: -.byte 8 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 12 -.byte 8 -.byte 4 -.byte 255 -.byte 255 -.byte 0 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 - -mask_138_1: -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x404 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x808 -.word 0x8 - -mask_139_1: -.word 0x808 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x1010 -.word 0x1010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_140_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_141_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_142_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2020 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_143_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 - -mask_144_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x404 -.word 0x404 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x800 - -mask_145_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1010 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_146_1: -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_147_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_148_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2020 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_149_1: -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 - -mask_150_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x8080 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x101 -.word 0x1 - -mask_151_1: -.word 0x101 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x202 -.word 0x202 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_152_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_153_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x404 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_154_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 - -mask_155_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x8080 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 - -mask_156_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x202 -.word 0x202 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_157_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_158_1: -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x404 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_159_1: -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 - -mask_160_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x1010 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2020 -.word 0x2020 -.word 0x0 - -mask_161_1: -.word 0x2020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4040 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_162_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_163_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_164_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x8080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_165_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 - -mask_166_1: -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x1010 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2020 - -mask_167_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x4000 -.word 0x4040 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_168_1: -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_169_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_170_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x8080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_171_1: -.byte 255 -.byte 12 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 - -mask_172_1: -.word 0x0 -.word 0x202 -.word 0x202 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_173_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x808 -.word 0x808 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 - -mask_174_1: -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_175_1: -.byte 255 -.byte 255 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_176_1: -.word 0x0 -.word 0x1010 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_177_1: -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_178_1: -.word 0x202 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x404 -.word 0x4 -.word 0x0 -.word 0x0 - -mask_179_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x808 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_180_1: -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_181_1: -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_182_1: -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_183_1: -.word 0x4000 -.word 0x4040 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_184_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x101 -.word 0x101 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_185_1: -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_186_1: -.word 0x200 -.word 0x202 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_187_1: -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_188_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8080 -.word 0x8080 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_189_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_190_1: -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_191_1: -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_192_1: -.byte 15 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 - -mask_193_1: -.word 0x800 -.word 0x808 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_194_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x2020 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 - -mask_195_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_196_1: -.byte 255 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_197_1: -.word 0x4000 -.word 0x4040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_198_1: -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_199_1: -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1010 -.word 0x1010 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_200_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_201_1: -.byte 255 -.byte 13 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_202_1: -.word 0x0 -.word 0x101 -.word 0x101 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_203_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x404 -.word 0x404 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_204_1: -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_205_1: -.byte 255 -.byte 255 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_206_1: -.word 0x0 -.word 0x808 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_207_1: -.byte 1 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_208_1: -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x202 -.word 0x2 -.word 0x0 -.word 0x0 - -mask_209_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_210_1: -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_211_1: -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_212_1: -.word 0x2000 -.word 0x2020 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_213_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x8080 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_214_1: -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_215_1: -.word 0x100 -.word 0x101 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_216_1: -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_217_1: -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4040 -.word 0x4040 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_218_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_219_1: -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_220_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_221_1: -.byte 255 -.byte 12 -.byte 12 -.byte 8 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 - -mask_222_1: -.word 0x0 -.word 0x404 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_223_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1010 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 - -mask_224_1: -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_225_1: -.byte 255 -.byte 255 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_226_1: -.word 0x0 -.word 0x2020 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_227_1: -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_228_1: -.word 0x404 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x808 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_229_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_230_1: -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_231_1: -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_232_1: -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_233_1: -.word 0x8000 -.word 0x8080 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_234_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x202 -.word 0x202 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_235_1: -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_236_1: -.word 0x400 -.word 0x404 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_237_1: -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_238_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x101 -.word 0x1 -.word 0x0 -.word 0x0 - -mask_239_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_240_1: -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_241_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_242_1: -.byte 15 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 - -mask_243_1: -.word 0x1000 -.word 0x1010 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_244_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x4040 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 - -mask_245_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_246_1: -.byte 255 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_247_1: -.word 0x8000 -.word 0x8080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_248_1: -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_249_1: -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2020 -.word 0x2020 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_250_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -.text -.global PQCLEAN_NTRUHPS2048677_AVX2_square_336_677 -.global _PQCLEAN_NTRUHPS2048677_AVX2_square_336_677 -PQCLEAN_NTRUHPS2048677_AVX2_square_336_677: -_PQCLEAN_NTRUHPS2048677_AVX2_square_336_677: -vmovdqa 0(%rsi), %ymm0 -vpshufb mask_0_1(%rip), %ymm0, %ymm5 -vpand mask_1_1(%rip), %ymm5, %ymm1 -vpand mask_2_1(%rip), %ymm5, %ymm2 -vpshufb mask_3_1(%rip), %ymm0, %ymm5 -vpand mask_4_1(%rip), %ymm5, %ymm3 -vpermq $78, %ymm0, %ymm8 -vpshufb mask_5_1(%rip), %ymm8, %ymm5 -vpand mask_6_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_7_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_8_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_9_1(%rip), %ymm8, %ymm5 -vpand mask_10_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm0, %ymm6 -vpshufb mask_11_1(%rip), %ymm6, %ymm5 -vpand mask_12_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_13_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_14_1(%rip), %ymm6, %ymm5 -vpand mask_15_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_16_1(%rip), %ymm8, %ymm5 -vpand mask_17_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_18_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_19_1(%rip), %ymm8, %ymm5 -vpand mask_20_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $2, %ymm0, %ymm6 -vpshufb mask_21_1(%rip), %ymm6, %ymm5 -vpand mask_22_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_23_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_24_1(%rip), %ymm8, %ymm5 -vpand mask_25_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_26_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_27_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_28_1(%rip), %ymm8, %ymm5 -vpand mask_29_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $3, %ymm0, %ymm6 -vpshufb mask_30_1(%rip), %ymm6, %ymm5 -vpand mask_31_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_32_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_33_1(%rip), %ymm6, %ymm5 -vpand mask_34_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_35_1(%rip), %ymm8, %ymm5 -vpand mask_36_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_37_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_38_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_39_1(%rip), %ymm8, %ymm5 -vpand mask_40_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $4, %ymm0, %ymm6 -vpshufb mask_41_1(%rip), %ymm6, %ymm5 -vpand mask_42_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_43_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_44_1(%rip), %ymm6, %ymm5 -vpand mask_45_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_46_1(%rip), %ymm8, %ymm5 -vpand mask_47_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_48_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_49_1(%rip), %ymm8, %ymm5 -vpand mask_50_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $59, %ymm0, %ymm5 -vpsllq $5, %ymm0, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_51_1(%rip), %ymm6, %ymm5 -vpand mask_52_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_53_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_54_1(%rip), %ymm6, %ymm5 -vpand mask_55_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_56_1(%rip), %ymm8, %ymm5 -vpand mask_57_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_58_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_59_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_60_1(%rip), %ymm8, %ymm5 -vpand mask_61_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm6, %ymm7 -vpshufb mask_62_1(%rip), %ymm7, %ymm5 -vpand mask_63_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_64_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_65_1(%rip), %ymm7, %ymm5 -vpand mask_66_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_67_1(%rip), %ymm8, %ymm5 -vpand mask_68_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_69_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_70_1(%rip), %ymm8, %ymm5 -vpand mask_71_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $2, %ymm6, %ymm7 -vpshufb mask_72_1(%rip), %ymm7, %ymm5 -vpand mask_73_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_74_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_75_1(%rip), %ymm8, %ymm5 -vpand mask_76_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_77_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_78_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_79_1(%rip), %ymm8, %ymm5 -vpand mask_80_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vmovdqa 32(%rsi), %ymm0 -vpshufb mask_81_1(%rip), %ymm0, %ymm5 -vpand mask_82_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_83_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_84_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_85_1(%rip), %ymm0, %ymm5 -vpand mask_86_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm8 -vpshufb mask_87_1(%rip), %ymm8, %ymm5 -vpand mask_88_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_89_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_90_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_91_1(%rip), %ymm8, %ymm5 -vpand mask_92_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm0, %ymm6 -vpshufb mask_93_1(%rip), %ymm6, %ymm5 -vpand mask_94_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_95_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_96_1(%rip), %ymm6, %ymm5 -vpand mask_97_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_98_1(%rip), %ymm8, %ymm5 -vpand mask_99_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_100_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_101_1(%rip), %ymm8, %ymm5 -vpand mask_102_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $2, %ymm0, %ymm6 -vpshufb mask_103_1(%rip), %ymm6, %ymm5 -vpand mask_104_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_105_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_106_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_107_1(%rip), %ymm6, %ymm5 -vpand mask_108_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_109_1(%rip), %ymm8, %ymm5 -vpand mask_110_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_111_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_112_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_113_1(%rip), %ymm8, %ymm5 -vpand mask_114_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $3, %ymm0, %ymm6 -vpshufb mask_115_1(%rip), %ymm6, %ymm5 -vpand mask_116_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_117_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_118_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_119_1(%rip), %ymm6, %ymm5 -vpand mask_120_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_121_1(%rip), %ymm8, %ymm5 -vpand mask_122_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_123_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_124_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_125_1(%rip), %ymm8, %ymm5 -vpand mask_126_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $4, %ymm0, %ymm6 -vpshufb mask_127_1(%rip), %ymm6, %ymm5 -vpand mask_128_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_129_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_130_1(%rip), %ymm6, %ymm5 -vpand mask_131_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_132_1(%rip), %ymm8, %ymm5 -vpand mask_133_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_134_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_135_1(%rip), %ymm8, %ymm5 -vpand mask_136_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $59, %ymm0, %ymm5 -vpsllq $5, %ymm0, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_137_1(%rip), %ymm6, %ymm5 -vpand mask_138_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_139_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_140_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_141_1(%rip), %ymm6, %ymm5 -vpand mask_142_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_143_1(%rip), %ymm8, %ymm5 -vpand mask_144_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_145_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_146_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_147_1(%rip), %ymm8, %ymm5 -vpand mask_148_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm6, %ymm7 -vpshufb mask_149_1(%rip), %ymm7, %ymm5 -vpand mask_150_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_151_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_152_1(%rip), %ymm7, %ymm5 -vpand mask_153_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_154_1(%rip), %ymm8, %ymm5 -vpand mask_155_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_156_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_157_1(%rip), %ymm8, %ymm5 -vpand mask_158_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $2, %ymm6, %ymm7 -vpshufb mask_159_1(%rip), %ymm7, %ymm5 -vpand mask_160_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_161_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_162_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_163_1(%rip), %ymm7, %ymm5 -vpand mask_164_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_165_1(%rip), %ymm8, %ymm5 -vpand mask_166_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_167_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_168_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_169_1(%rip), %ymm8, %ymm5 -vpand mask_170_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vmovdqa 64(%rsi), %ymm0 -vpshufb mask_171_1(%rip), %ymm0, %ymm5 -vpand mask_172_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_173_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_174_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_175_1(%rip), %ymm0, %ymm5 -vpand mask_176_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm8 -vpshufb mask_177_1(%rip), %ymm8, %ymm5 -vpand mask_178_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_179_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_180_1(%rip), %ymm8, %ymm5 -vpand mask_181_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm0, %ymm6 -vpshufb mask_182_1(%rip), %ymm6, %ymm5 -vpand mask_183_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_184_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_185_1(%rip), %ymm6, %ymm5 -vpand mask_186_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_187_1(%rip), %ymm8, %ymm5 -vpand mask_188_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_189_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_190_1(%rip), %ymm8, %ymm5 -vpand mask_191_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $2, %ymm0, %ymm6 -vpshufb mask_192_1(%rip), %ymm6, %ymm5 -vpand mask_193_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_194_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_195_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_196_1(%rip), %ymm6, %ymm5 -vpand mask_197_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_198_1(%rip), %ymm8, %ymm5 -vpand mask_199_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_200_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsllq $3, %ymm0, %ymm6 -vpshufb mask_201_1(%rip), %ymm6, %ymm5 -vpand mask_202_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_203_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_204_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_205_1(%rip), %ymm6, %ymm5 -vpand mask_206_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_207_1(%rip), %ymm8, %ymm5 -vpand mask_208_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_209_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_210_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $4, %ymm0, %ymm6 -vpshufb mask_211_1(%rip), %ymm6, %ymm5 -vpand mask_212_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_213_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_214_1(%rip), %ymm6, %ymm5 -vpand mask_215_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_216_1(%rip), %ymm8, %ymm5 -vpand mask_217_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_218_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_219_1(%rip), %ymm8, %ymm5 -vpand mask_220_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $59, %ymm0, %ymm5 -vpsllq $5, %ymm0, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_221_1(%rip), %ymm6, %ymm5 -vpand mask_222_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_223_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_224_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_225_1(%rip), %ymm6, %ymm5 -vpand mask_226_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_227_1(%rip), %ymm8, %ymm5 -vpand mask_228_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_229_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_230_1(%rip), %ymm8, %ymm5 -vpand mask_231_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm6, %ymm7 -vpshufb mask_232_1(%rip), %ymm7, %ymm5 -vpand mask_233_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_234_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_235_1(%rip), %ymm7, %ymm5 -vpand mask_236_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_237_1(%rip), %ymm8, %ymm5 -vpand mask_238_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_239_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_240_1(%rip), %ymm8, %ymm5 -vpand mask_241_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $2, %ymm6, %ymm7 -vpshufb mask_242_1(%rip), %ymm7, %ymm5 -vpand mask_243_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_244_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_245_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_246_1(%rip), %ymm7, %ymm5 -vpand mask_247_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_248_1(%rip), %ymm8, %ymm5 -vpand mask_249_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_250_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vmovdqa %ymm1, 0(%rdi) -vmovdqa %ymm2, 32(%rdi) -vmovdqa %ymm3, 64(%rdi) -ret diff --git a/src/kem/ntru/ntruhps2048677/avx2/square_3_677_patience.s b/src/kem/ntru/ntruhps2048677/avx2/square_3_677_patience.s deleted file mode 100644 index aa7c1bd8..00000000 --- a/src/kem/ntru/ntruhps2048677/avx2/square_3_677_patience.s +++ /dev/null @@ -1,452 +0,0 @@ -.data -.p2align 5 -.text -.global PQCLEAN_NTRUHPS2048677_AVX2_square_3_677 -.global _PQCLEAN_NTRUHPS2048677_AVX2_square_3_677 -PQCLEAN_NTRUHPS2048677_AVX2_square_3_677: -_PQCLEAN_NTRUHPS2048677_AVX2_square_3_677: -push %r15 -push %r14 -push %r13 -push %r12 -push %rbx -push %rbp -mov 0(%rsi), %r11 -mov %r11, %r10 -and $0xff, %r10 -mov $0x101010101010101, %rbp -pdep %rbp, %r10, %r10 -mov %r10, 0(%rdi) -mov $0xff00, %rbx -pext %rbx, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 8(%rdi) -mov $0xff0000, %r12 -pext %r12, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 16(%rdi) -mov $0xff000000, %r13 -pext %r13, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 24(%rdi) -mov $0xff00000000, %r14 -pext %r14, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 32(%rdi) -mov $0xff0000000000, %r15 -pext %r15, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 40(%rdi) -mov $0xff000000000000, %r9 -pext %r9, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 48(%rdi) -mov $0xff00000000000000, %r8 -pext %r8, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 56(%rdi) -mov 8(%rsi), %r11 -mov $0x1fe00000, %rdx -pext %rdx, %r11, %r10 -mov $0x808080808080808, %rcx -pdep %rcx, %r10, %r10 -xor %r10, 0(%rdi) -mov $0x1fe0000000, %rax -pext %rax, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 8(%rdi) -mov $0x1fe000000000, %rbx -pext %rbx, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x1fe00000000000, %r12 -pext %r12, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x1fe0000000000000, %r13 -pext %r13, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 32(%rdi) -mov $0xe000000000000000, %r14 -pext %r14, %r11, %r10 -mov $0x80808, %r15 -pdep %r15, %r10, %r10 -xor %r10, 40(%rdi) -mov %r11, %r10 -and $0xff, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 64(%rdi) -mov $0xff00, %r9 -pext %r9, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 72(%rdi) -mov $0x1f0000, %r8 -pext %r8, %r11, %r10 -mov $0x101010101, %rdx -pdep %rdx, %r10, %r10 -mov %r10, 80(%rdi) -mov 16(%rsi), %r11 -mov $0x3fc0000000000, %rax -pext %rax, %r11, %r10 -mov $0x4040404040404040, %rbx -pdep %rbx, %r10, %r10 -xor %r10, 0(%rdi) -mov $0x3fc000000000000, %r12 -pext %r12, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 8(%rdi) -mov $0xfc00000000000000, %r13 -pext %r13, %r11, %r10 -mov $0x404040404040, %rcx -pdep %rcx, %r10, %r10 -xor %r10, 16(%rdi) -mov %r11, %r10 -and $0x1f, %r10 -mov $0x808080808000000, %r14 -pdep %r14, %r10, %r10 -xor %r10, 40(%rdi) -mov $0x1fe0, %r15 -pext %r15, %r11, %r10 -mov $0x808080808080808, %r9 -pdep %r9, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x1fe000, %rbp -pext %rbp, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 56(%rdi) -mov $0x1fe00000, %r8 -pext %r8, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x1fe0000000, %rdx -pext %rdx, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x3e000000000, %rax -pext %rax, %r11, %r10 -mov $0x808080808, %r12 -pdep %r12, %r10, %r10 -xor %r10, 80(%rdi) -mov 24(%rsi), %r11 -mov $0xc000000000000000, %rbx -pext %rbx, %r11, %r10 -mov $0x202, %r13 -pdep %r13, %r10, %r10 -xor %r10, 0(%rdi) -mov %r11, %r10 -and $0x3, %r10 -mov $0x4040000000000000, %rcx -pdep %rcx, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x3fc, %r14 -pext %r14, %r11, %r10 -mov $0x4040404040404040, %r15 -pdep %r15, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x3fc00, %rbp -pext %rbp, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x3fc0000, %r8 -pext %r8, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 40(%rdi) -mov $0x3fc000000, %rdx -pext %rdx, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x3fc00000000, %r9 -pext %r9, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 56(%rdi) -mov $0x3fc0000000000, %rax -pext %rax, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x3fc000000000000, %r12 -pext %r12, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x3c00000000000000, %rbx -pext %rbx, %r11, %r10 -mov $0x40404040, %r13 -pdep %r13, %r10, %r10 -xor %r10, 80(%rdi) -mov 32(%rsi), %r11 -mov %r11, %r10 -and $0x3f, %r10 -mov $0x202020202020000, %rcx -pdep %rcx, %r10, %r10 -xor %r10, 0(%rdi) -mov $0x3fc0, %r14 -pext %r14, %r11, %r10 -mov $0x202020202020202, %rbp -pdep %rbp, %r10, %r10 -xor %r10, 8(%rdi) -mov $0x3fc000, %r8 -pext %r8, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x3fc00000, %rdx -pext %rdx, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x3fc0000000, %r9 -pext %r9, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x3fc000000000, %rax -pext %rax, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 40(%rdi) -mov $0x3fc00000000000, %r12 -pext %r12, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x3fc0000000000000, %r15 -pext %r15, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 56(%rdi) -mov $0xc000000000000000, %rbx -pext %rbx, %r11, %r10 -mov $0x202, %r13 -pdep %r13, %r10, %r10 -xor %r10, 64(%rdi) -mov 40(%rsi), %r11 -mov $0x7f80000, %rcx -pext %rcx, %r11, %r10 -mov $0x1010101010101010, %r14 -pdep %r14, %r10, %r10 -xor %r10, 0(%rdi) -mov $0x7f8000000, %r8 -pext %r8, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 8(%rdi) -mov $0x7f800000000, %rdx -pext %rdx, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x7f80000000000, %r9 -pext %r9, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x7f8000000000000, %rax -pext %rax, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 32(%rdi) -mov $0xf800000000000000, %r12 -pext %r12, %r11, %r10 -mov $0x1010101010, %r15 -pdep %r15, %r10, %r10 -xor %r10, 40(%rdi) -mov %r11, %r10 -and $0x3f, %r10 -mov $0x202020202020000, %rbp -pdep %rbp, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x3fc0, %rbx -pext %rbx, %r11, %r10 -mov $0x202020202020202, %r13 -pdep %r13, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x7c000, %rcx -pext %rcx, %r11, %r10 -mov $0x202020202, %r8 -pdep %r8, %r10, %r10 -xor %r10, 80(%rdi) -mov 48(%rsi), %r11 -mov $0xff0000000000, %rdx -pext %rdx, %r11, %r10 -mov $0x8080808080808080, %r9 -pdep %r9, %r10, %r10 -xor %r10, 0(%rdi) -mov $0xff000000000000, %rax -pext %rax, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 8(%rdi) -mov $0xff00000000000000, %r14 -pext %r14, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 16(%rdi) -mov %r11, %r10 -and $0x7, %r10 -mov $0x1010100000000000, %r12 -pdep %r12, %r10, %r10 -xor %r10, 40(%rdi) -mov $0x7f8, %r15 -pext %r15, %r11, %r10 -mov $0x1010101010101010, %rbp -pdep %rbp, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x7f800, %rbx -pext %rbx, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 56(%rdi) -mov $0x7f80000, %r13 -pext %r13, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x7f8000000, %rcx -pext %rcx, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 72(%rdi) -mov $0xf800000000, %r8 -pext %r8, %r11, %r10 -mov $0x1010101010, %rdx -pdep %rdx, %r10, %r10 -xor %r10, 80(%rdi) -mov 56(%rsi), %r11 -mov $0xf000000000000000, %rax -pext %rax, %r11, %r10 -mov $0x4040404, %r14 -pdep %r14, %r10, %r10 -xor %r10, 0(%rdi) -mov %r11, %r10 -and $0xff, %r10 -pdep %r9, %r10, %r10 -xor %r10, 24(%rdi) -mov $0xff00, %r12 -pext %r12, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 32(%rdi) -mov $0xff0000, %r15 -pext %r15, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 40(%rdi) -mov $0xff000000, %rbx -pext %rbx, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 48(%rdi) -mov $0xff00000000, %r13 -pext %r13, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 56(%rdi) -mov $0xff0000000000, %rcx -pext %rcx, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 64(%rdi) -mov $0xff000000000000, %rbp -pext %rbp, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 72(%rdi) -mov $0xf00000000000000, %r8 -pext %r8, %r11, %r10 -mov $0x80808080, %rdx -pdep %rdx, %r10, %r10 -xor %r10, 80(%rdi) -mov 64(%rsi), %r11 -mov %r11, %r10 -and $0xf, %r10 -mov $0x404040400000000, %rax -pdep %rax, %r10, %r10 -xor %r10, 0(%rdi) -mov $0xff0, %r14 -pext %r14, %r11, %r10 -mov $0x404040404040404, %r12 -pdep %r12, %r10, %r10 -xor %r10, 8(%rdi) -mov $0xff000, %r15 -pext %r15, %r11, %r10 -pdep %r12, %r10, %r10 -xor %r10, 16(%rdi) -mov $0xff00000, %rbx -pext %rbx, %r11, %r10 -pdep %r12, %r10, %r10 -xor %r10, 24(%rdi) -mov $0xff0000000, %r13 -pext %r13, %r11, %r10 -pdep %r12, %r10, %r10 -xor %r10, 32(%rdi) -mov $0xff000000000, %rcx -pext %rcx, %r11, %r10 -pdep %r12, %r10, %r10 -xor %r10, 40(%rdi) -mov $0xff00000000000, %rbp -pext %rbp, %r11, %r10 -pdep %r12, %r10, %r10 -xor %r10, 48(%rdi) -mov $0xff0000000000000, %r9 -pext %r9, %r11, %r10 -pdep %r12, %r10, %r10 -xor %r10, 56(%rdi) -mov $0xf000000000000000, %r8 -pext %r8, %r11, %r10 -mov $0x4040404, %rdx -pdep %rdx, %r10, %r10 -xor %r10, 64(%rdi) -mov 72(%rsi), %r11 -mov $0x1fe0000, %rax -pext %rax, %r11, %r10 -mov $0x2020202020202020, %r14 -pdep %r14, %r10, %r10 -xor %r10, 0(%rdi) -mov $0x1fe000000, %r15 -pext %r15, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 8(%rdi) -mov $0x1fe00000000, %rbx -pext %rbx, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x1fe0000000000, %r13 -pext %r13, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x1fe000000000000, %rcx -pext %rcx, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 32(%rdi) -mov $0xfe00000000000000, %rbp -pext %rbp, %r11, %r10 -mov $0x20202020202020, %r9 -pdep %r9, %r10, %r10 -xor %r10, 40(%rdi) -mov %r11, %r10 -and $0xf, %r10 -mov $0x404040400000000, %r12 -pdep %r12, %r10, %r10 -xor %r10, 64(%rdi) -mov $0xff0, %r8 -pext %r8, %r11, %r10 -mov $0x404040404040404, %rdx -pdep %rdx, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x1f000, %rax -pext %rax, %r11, %r10 -mov $0x404040404, %r15 -pdep %r15, %r10, %r10 -xor %r10, 80(%rdi) -mov 80(%rsi), %r11 -mov %r11, %r10 -and $0x1, %r10 -rol $61, %r10 -xor %r10, 40(%rdi) -mov $0x1fe, %rbx -pext %rbx, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x1fe00, %r13 -pext %r13, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 56(%rdi) -mov $0x1fe0000, %rcx -pext %rcx, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x1fe000000, %rbp -pext %rbp, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x1e00000000, %r9 -pext %r9, %r11, %r10 -mov $0x20202020, %r12 -pdep %r12, %r10, %r10 -xor %r10, 80(%rdi) -movq $0x0, 88(%rdi) -pop %rbp -pop %rbx -pop %r12 -pop %r13 -pop %r14 -pop %r15 -ret diff --git a/src/kem/ntru/ntruhps2048677/avx2/square_42_677_shufbytes.s b/src/kem/ntru/ntruhps2048677/avx2/square_42_677_shufbytes.s deleted file mode 100644 index e34a0d6d..00000000 --- a/src/kem/ntru/ntruhps2048677/avx2/square_42_677_shufbytes.s +++ /dev/null @@ -1,8477 +0,0 @@ -.data -.p2align 5 -mask_0_1: -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 8 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 9 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_1_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x2008 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_2_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_3_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2008 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_4_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_5_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_6_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_7_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 9 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 7 -.byte 4 -.byte 1 -.byte 6 -.byte 3 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 8 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_8_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1080 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_9_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4010 -.word 0x108 -.word 0x1080 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_10_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x4010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_11_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_12_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_13_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_14_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_15_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 9 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 7 -.byte 0 -.byte 255 -.byte 13 -.byte 6 -.byte 3 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_16_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4010 -.word 0x108 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_17_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2008 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_18_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x2008 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_19_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 4 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_20_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_21_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_22_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_23_1: -.byte 255 -.byte 255 -.byte 13 -.byte 6 -.byte 3 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 8 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 5 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_24_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x1080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_25_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x4010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_26_1: -.word 0x0 -.word 0x8020 -.word 0x210 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_27_1: -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_28_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_29_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_30_1: -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_31_1: -.byte 255 -.byte 255 -.byte 13 -.byte 6 -.byte 3 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 11 -.byte 8 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 - -mask_32_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x4000 -.word 0x2008 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 - -mask_33_1: -.word 0x0 -.word 0x4010 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_34_1: -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_35_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_36_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_37_1: -.byte 7 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 5 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 7 -.byte 0 -.byte 13 -.byte 6 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_38_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x4010 -.word 0x2008 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_39_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8020 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_40_1: -.word 0x8020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_41_1: -.byte 11 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 4 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_42_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x200 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_43_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_44_1: -.word 0x401 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_45_1: -.byte 7 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 5 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 7 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 8 -.byte 1 -.byte 255 - -mask_46_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x2008 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_47_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x4010 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x840 -.word 0x20 - -mask_48_1: -.word 0x4010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_49_1: -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 5 -.byte 255 - -mask_50_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_51_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x1 - -mask_52_1: -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_53_1: -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 6 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 4 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 - -mask_54_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8020 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_55_1: -.word 0x0 -.word 0x800 -.word 0x420 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 - -mask_56_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 - -mask_57_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x401 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_58_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 - -mask_59_1: -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 6 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 11 -.byte 4 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 7 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 5 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_60_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x4010 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_61_1: -.word 0x0 -.word 0x8000 -.word 0x210 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1080 -.word 0x840 -.word 0x0 -.word 0x0 - -mask_62_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1080 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_63_1: -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_64_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_65_1: -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 - -mask_66_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_67_1: -.byte 10 -.byte 7 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 5 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 4 -.byte 1 -.byte 255 - -mask_68_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x840 -.word 0x420 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_69_1: -.word 0x840 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8020 -.word 0x10 - -mask_70_1: -.byte 14 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 8 -.byte 255 -.byte 255 - -mask_71_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_72_1: -.word 0x2 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x401 -.word 0x0 - -mask_73_1: -.byte 10 -.byte 3 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 15 -.byte 8 -.byte 5 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 6 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 11 -.byte 4 -.byte 1 - -mask_74_1: -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x8020 -.word 0x210 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1080 -.word 0x840 - -mask_75_1: -.word 0x8020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1080 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_76_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_77_1: -.byte 14 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 - -mask_78_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 - -mask_79_1: -.word 0x401 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_80_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_81_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 6 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 10 -.byte 7 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 5 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_82_1: -.word 0x0 -.word 0x0 -.word 0x840 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_83_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x840 -.word 0x420 -.word 0x0 -.word 0x0 - -mask_84_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x840 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_85_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_86_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_87_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 - -mask_88_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_89_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 3 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 8 -.byte 5 -.byte 2 -.byte 255 -.byte 255 -.byte 255 - -mask_90_1: -.word 0x0 -.word 0x0 -.word 0x8020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x1080 -.word 0x2 -.word 0x0 - -mask_91_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x1080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_92_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_93_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_94_1: -.word 0x0 -.word 0x0 -.word 0x401 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 - -mask_95_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_96_1: -.byte 13 -.byte 10 -.byte 3 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 5 -.byte 2 -.byte 255 -.byte 4 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 6 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 11 -.byte 4 -.byte 1 - -mask_97_1: -.word 0x1080 -.word 0x840 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x840 -.word 0x420 - -mask_98_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x840 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_99_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x2008 -.word 0x4 -.word 0x840 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_100_1: -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 - -mask_101_1: -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 - -mask_102_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_103_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_104_1: -.byte 13 -.byte 10 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 15 -.byte 8 -.byte 5 -.byte 2 -.byte 255 -.byte 11 -.byte 4 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_105_1: -.word 0x840 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_106_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2008 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_107_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x2000 -.word 0x1080 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_108_1: -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_109_1: -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_110_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_111_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_112_1: -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 6 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 13 -.byte 10 -.byte 3 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 15 -.byte 8 -.byte 5 -.byte 2 -.byte 255 -.byte 255 -.byte 255 - -mask_113_1: -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x1000 -.word 0x840 -.word 0x1 -.word 0x0 - -mask_114_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x1080 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_115_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x108 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_116_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_117_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 - -mask_118_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_119_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_120_1: -.byte 255 -.byte 255 -.byte 13 -.byte 10 -.byte 3 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 8 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 - -mask_121_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_122_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x8020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 - -mask_123_1: -.word 0x0 -.word 0x840 -.word 0x420 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_124_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_125_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x401 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_126_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_127_1: -.byte 7 -.byte 4 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 9 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 7 -.byte 4 -.byte 13 -.byte 6 -.byte 3 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_128_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x840 -.word 0x8020 -.word 0x210 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_129_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1080 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_130_1: -.word 0x1080 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_131_1: -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_132_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_133_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_134_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_135_1: -.byte 7 -.byte 4 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 9 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 7 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 8 -.byte 1 -.byte 255 - -mask_136_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x8020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_137_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x840 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2008 -.word 0x80 - -mask_138_1: -.word 0x840 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_139_1: -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 5 -.byte 255 - -mask_140_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x401 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_141_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x4 - -mask_142_1: -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_143_1: -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 6 -.byte 3 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 8 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 - -mask_144_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1080 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_145_1: -.word 0x0 -.word 0x2000 -.word 0x1080 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 - -mask_146_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_147_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_148_1: -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_149_1: -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 6 -.byte 3 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 11 -.byte 8 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 7 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 9 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_150_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x840 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_151_1: -.word 0x0 -.word 0x1000 -.word 0x840 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x2008 -.word 0x0 -.word 0x0 - -mask_152_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4010 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_153_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_154_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_155_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 - -mask_156_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_157_1: -.byte 14 -.byte 7 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 5 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 11 -.byte 8 -.byte 1 -.byte 255 - -mask_158_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x1080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_159_1: -.word 0x2008 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x1080 -.word 0x40 - -mask_160_1: -.byte 255 -.byte 11 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 5 -.byte 255 - -mask_161_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_162_1: -.word 0x100 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2 - -mask_163_1: -.byte 10 -.byte 7 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 5 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 6 -.byte 3 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 8 -.byte 1 - -mask_164_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1080 -.word 0x840 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x2008 - -mask_165_1: -.word 0x1080 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4010 -.word 0x108 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_166_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_167_1: -.byte 14 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 5 - -mask_168_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x100 - -mask_169_1: -.word 0x4 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_170_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_171_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 6 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 14 -.byte 7 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 5 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_172_1: -.word 0x0 -.word 0x0 -.word 0x2008 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_173_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x1080 -.word 0x0 -.word 0x0 - -mask_174_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x2008 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_175_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_176_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_177_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 - -mask_178_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_179_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 6 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 7 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 5 -.byte 2 -.byte 255 -.byte 255 -.byte 255 - -mask_180_1: -.word 0x0 -.word 0x0 -.word 0x1080 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x4010 -.word 0x8 -.word 0x0 - -mask_181_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x4010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_182_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_183_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_184_1: -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 - -mask_185_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_186_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_187_1: -.byte 255 -.byte 10 -.byte 7 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 5 -.byte 2 -.byte 255 -.byte 8 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 6 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 4 -.byte 1 - -mask_188_1: -.word 0x4000 -.word 0x2008 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x1080 - -mask_189_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2008 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_190_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8020 -.word 0x10 -.word 0x2008 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_191_1: -.byte 255 -.byte 14 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 8 -.byte 255 - -mask_192_1: -.word 0x200 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x4 - -mask_193_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_194_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_195_1: -.byte 255 -.byte 10 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 5 -.byte 2 -.byte 255 -.byte 11 -.byte 4 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 6 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_196_1: -.word 0x2000 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x210 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_197_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8020 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_198_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x4010 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_199_1: -.byte 255 -.byte 14 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 15 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_200_1: -.word 0x100 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_201_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x401 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_202_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_203_1: -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 6 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 7 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 5 -.byte 2 -.byte 255 -.byte 255 -.byte 255 - -mask_204_1: -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x2008 -.word 0x4 -.word 0x0 - -mask_205_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x2008 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_206_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x420 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_207_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_208_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 - -mask_209_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_210_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_211_1: -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 6 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 3 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_212_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8020 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_213_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_214_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x210 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_215_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_216_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x401 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_217_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_218_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 7 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 5 -.byte 2 -.byte 11 -.byte 4 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 6 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_219_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x108 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_220_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x840 -.word 0x420 -.word 0x4010 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_221_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x840 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_222_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_223_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_224_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_225_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_226_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 3 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 15 -.byte 8 -.byte 5 -.byte 2 -.byte 14 -.byte 11 -.byte 4 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_227_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x840 -.word 0x420 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_228_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x8020 -.word 0x210 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_229_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_230_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_231_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_232_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_233_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x401 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_234_1: -.byte 255 -.byte 255 -.byte 14 -.byte 11 -.byte 4 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 6 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 10 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_235_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x4010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_236_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x840 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_237_1: -.word 0x0 -.word 0x1080 -.word 0x840 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_238_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_239_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_240_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_241_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_242_1: -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 10 -.byte 3 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 8 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_243_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2008 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_244_1: -.word 0x0 -.word 0x4000 -.word 0x2008 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 - -mask_245_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_246_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_247_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_248_1: -.byte 255 -.byte 255 -.byte 4 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 8 -.byte 5 -.byte 2 - -mask_249_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_250_1: -.word 0x0 -.word 0x210 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4010 -.word 0x108 - -mask_251_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 - -mask_252_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 - -mask_253_1: -.byte 14 -.byte 7 -.byte 4 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 9 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 - -mask_254_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x2008 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 - -mask_255_1: -.word 0x4010 -.word 0x108 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x420 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_256_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_257_1: -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_258_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_259_1: -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_260_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 7 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 9 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_261_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x210 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_262_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x4010 -.word 0x0 -.word 0x0 - -mask_263_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8020 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_264_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_265_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 - -mask_266_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_267_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 6 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 - -mask_268_1: -.word 0x0 -.word 0x0 -.word 0x4010 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 - -mask_269_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_270_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_271_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_272_1: -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_273_1: -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 8 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 6 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 8 -.byte 1 - -mask_274_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x4010 - -mask_275_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8020 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_276_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x8020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_277_1: -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 5 - -mask_278_1: -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x200 - -mask_279_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_280_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x401 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_281_1: -.byte 255 -.byte 10 -.byte 7 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 9 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_282_1: -.word 0x8000 -.word 0x4010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x1 -.word 0x0 -.word 0x0 - -mask_283_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_284_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x840 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_285_1: -.byte 255 -.byte 14 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_286_1: -.word 0x400 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_287_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_288_1: -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 7 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 5 -.byte 2 -.byte 255 -.byte 255 -.byte 255 - -mask_289_1: -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8020 -.word 0x10 -.word 0x0 - -mask_290_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x8020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_291_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_292_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_293_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 - -mask_294_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x401 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_295_1: -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 6 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_296_1: -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_297_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x840 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_298_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_299_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_300_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_301_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 11 -.byte 8 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 6 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_302_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x420 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_303_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x840 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_304_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_305_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_306_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_307_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_308_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_309_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 7 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 5 -.byte 2 -.byte 255 -.byte 255 -.byte 4 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_310_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_311_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1080 -.word 0x840 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_312_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1080 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_313_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_314_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_315_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_316_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 7 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_317_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x840 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_318_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_319_1: -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_320_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_321_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_322_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_323_1: -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 4 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 6 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_324_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_325_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1080 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_326_1: -.word 0x0 -.word 0x2000 -.word 0x1080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_327_1: -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_328_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_329_1: -.word 0x0 -.word 0x100 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_330_1: -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 11 -.byte 4 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_331_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1080 -.word 0x840 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_332_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_333_1: -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_334_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_335_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_336_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_337_1: -.byte 12 -.byte 5 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 8 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 - -mask_338_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x1080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_339_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 - -mask_340_1: -.word 0x2008 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_341_1: -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_342_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_343_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_344_1: -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_345_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 - -mask_346_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_347_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 - -.text -.global PQCLEAN_NTRUHPS2048677_AVX2_square_42_677 -.global _PQCLEAN_NTRUHPS2048677_AVX2_square_42_677 -PQCLEAN_NTRUHPS2048677_AVX2_square_42_677: -_PQCLEAN_NTRUHPS2048677_AVX2_square_42_677: -vmovdqa 0(%rsi), %ymm0 -vpshufb mask_0_1(%rip), %ymm0, %ymm5 -vpand mask_1_1(%rip), %ymm5, %ymm1 -vpand mask_2_1(%rip), %ymm5, %ymm2 -vpand mask_3_1(%rip), %ymm5, %ymm3 -vpshufb mask_4_1(%rip), %ymm0, %ymm5 -vpand mask_5_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_6_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm8 -vpshufb mask_7_1(%rip), %ymm8, %ymm5 -vpand mask_8_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_9_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_10_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_11_1(%rip), %ymm8, %ymm5 -vpand mask_12_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_13_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_14_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm0, %ymm5 -vpsllq $1, %ymm0, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_15_1(%rip), %ymm6, %ymm5 -vpand mask_16_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_17_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_18_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_19_1(%rip), %ymm6, %ymm5 -vpand mask_20_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_21_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_22_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_23_1(%rip), %ymm8, %ymm5 -vpand mask_24_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_25_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_26_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_27_1(%rip), %ymm8, %ymm5 -vpand mask_28_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_29_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_30_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm6, %ymm5 -vpsllq $1, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_31_1(%rip), %ymm7, %ymm5 -vpand mask_32_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_33_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_34_1(%rip), %ymm7, %ymm5 -vpand mask_35_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_36_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_37_1(%rip), %ymm8, %ymm5 -vpand mask_38_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_39_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_40_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_41_1(%rip), %ymm8, %ymm5 -vpand mask_42_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_43_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_44_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm7, %ymm6 -vpshufb mask_45_1(%rip), %ymm6, %ymm5 -vpand mask_46_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_47_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_48_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_49_1(%rip), %ymm6, %ymm5 -vpand mask_50_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_51_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_52_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_53_1(%rip), %ymm8, %ymm5 -vpand mask_54_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_55_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_56_1(%rip), %ymm8, %ymm5 -vpand mask_57_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_58_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsrlq $62, %ymm7, %ymm5 -vpsllq $2, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_59_1(%rip), %ymm6, %ymm5 -vpand mask_60_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_61_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_62_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_63_1(%rip), %ymm6, %ymm5 -vpand mask_64_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_65_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_66_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_67_1(%rip), %ymm8, %ymm5 -vpand mask_68_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_69_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_70_1(%rip), %ymm8, %ymm5 -vpand mask_71_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_72_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsllq $1, %ymm6, %ymm7 -vpshufb mask_73_1(%rip), %ymm7, %ymm5 -vpand mask_74_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_75_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_76_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_77_1(%rip), %ymm7, %ymm5 -vpand mask_78_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_79_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_80_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_81_1(%rip), %ymm8, %ymm5 -vpand mask_82_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_83_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_84_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_85_1(%rip), %ymm8, %ymm5 -vpand mask_86_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_87_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_88_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $62, %ymm6, %ymm5 -vpsllq $2, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_89_1(%rip), %ymm7, %ymm5 -vpand mask_90_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_91_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_92_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_93_1(%rip), %ymm7, %ymm5 -vpand mask_94_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_95_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_96_1(%rip), %ymm8, %ymm5 -vpand mask_97_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_98_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_99_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_100_1(%rip), %ymm8, %ymm5 -vpand mask_101_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_102_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_103_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm7, %ymm5 -vpsllq $1, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_104_1(%rip), %ymm6, %ymm5 -vpand mask_105_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_106_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_107_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_108_1(%rip), %ymm6, %ymm5 -vpand mask_109_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_110_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_111_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_112_1(%rip), %ymm8, %ymm5 -vpand mask_113_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_114_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_115_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_116_1(%rip), %ymm8, %ymm5 -vpand mask_117_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_118_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_119_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vmovdqa 32(%rsi), %ymm0 -vpshufb mask_120_1(%rip), %ymm0, %ymm5 -vpand mask_121_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_122_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_123_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_124_1(%rip), %ymm0, %ymm5 -vpand mask_125_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_126_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm8 -vpshufb mask_127_1(%rip), %ymm8, %ymm5 -vpand mask_128_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_129_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_130_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_131_1(%rip), %ymm8, %ymm5 -vpand mask_132_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_133_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_134_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm0, %ymm6 -vpshufb mask_135_1(%rip), %ymm6, %ymm5 -vpand mask_136_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_137_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_138_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_139_1(%rip), %ymm6, %ymm5 -vpand mask_140_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_141_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_142_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_143_1(%rip), %ymm8, %ymm5 -vpand mask_144_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_145_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_146_1(%rip), %ymm8, %ymm5 -vpand mask_147_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_148_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsrlq $62, %ymm0, %ymm5 -vpsllq $2, %ymm0, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_149_1(%rip), %ymm6, %ymm5 -vpand mask_150_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_151_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_152_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_153_1(%rip), %ymm6, %ymm5 -vpand mask_154_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_155_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_156_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_157_1(%rip), %ymm8, %ymm5 -vpand mask_158_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_159_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_160_1(%rip), %ymm8, %ymm5 -vpand mask_161_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_162_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsrlq $63, %ymm6, %ymm5 -vpsllq $1, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_163_1(%rip), %ymm7, %ymm5 -vpand mask_164_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_165_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_166_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_167_1(%rip), %ymm7, %ymm5 -vpand mask_168_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_169_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_170_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_171_1(%rip), %ymm8, %ymm5 -vpand mask_172_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_173_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_174_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_175_1(%rip), %ymm8, %ymm5 -vpand mask_176_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_177_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_178_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm7, %ymm5 -vpsllq $1, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_179_1(%rip), %ymm6, %ymm5 -vpand mask_180_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_181_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_182_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_183_1(%rip), %ymm6, %ymm5 -vpand mask_184_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_185_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_186_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_187_1(%rip), %ymm8, %ymm5 -vpand mask_188_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_189_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_190_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_191_1(%rip), %ymm8, %ymm5 -vpand mask_192_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_193_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_194_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm6, %ymm7 -vpshufb mask_195_1(%rip), %ymm7, %ymm5 -vpand mask_196_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_197_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_198_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_199_1(%rip), %ymm7, %ymm5 -vpand mask_200_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_201_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_202_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_203_1(%rip), %ymm8, %ymm5 -vpand mask_204_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_205_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_206_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_207_1(%rip), %ymm8, %ymm5 -vpand mask_208_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_209_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_210_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $62, %ymm6, %ymm5 -vpsllq $2, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_211_1(%rip), %ymm7, %ymm5 -vpand mask_212_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_213_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_214_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_215_1(%rip), %ymm7, %ymm5 -vpand mask_216_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_217_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_218_1(%rip), %ymm8, %ymm5 -vpand mask_219_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_220_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_221_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_222_1(%rip), %ymm8, %ymm5 -vpand mask_223_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_224_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_225_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm7, %ymm5 -vpsllq $1, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_226_1(%rip), %ymm6, %ymm5 -vpand mask_227_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_228_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_229_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_230_1(%rip), %ymm6, %ymm5 -vpand mask_231_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_232_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_233_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_234_1(%rip), %ymm8, %ymm5 -vpand mask_235_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_236_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_237_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_238_1(%rip), %ymm8, %ymm5 -vpand mask_239_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_240_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_241_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vmovdqa 64(%rsi), %ymm0 -vpshufb mask_242_1(%rip), %ymm0, %ymm5 -vpand mask_243_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_244_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_245_1(%rip), %ymm0, %ymm5 -vpand mask_246_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_247_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm0, %ymm8 -vpshufb mask_248_1(%rip), %ymm8, %ymm5 -vpand mask_249_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_250_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_251_1(%rip), %ymm8, %ymm5 -vpand mask_252_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsllq $1, %ymm0, %ymm6 -vpshufb mask_253_1(%rip), %ymm6, %ymm5 -vpand mask_254_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_255_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_256_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_257_1(%rip), %ymm6, %ymm5 -vpand mask_258_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_259_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_260_1(%rip), %ymm8, %ymm5 -vpand mask_261_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_262_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_263_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_264_1(%rip), %ymm8, %ymm5 -vpand mask_265_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_266_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $2, %ymm0, %ymm6 -vpshufb mask_267_1(%rip), %ymm6, %ymm5 -vpand mask_268_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_269_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_270_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_271_1(%rip), %ymm6, %ymm5 -vpand mask_272_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_273_1(%rip), %ymm8, %ymm5 -vpand mask_274_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_275_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_276_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_277_1(%rip), %ymm8, %ymm5 -vpand mask_278_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_279_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_280_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $61, %ymm0, %ymm5 -vpsllq $3, %ymm0, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_281_1(%rip), %ymm6, %ymm5 -vpand mask_282_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_283_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_284_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_285_1(%rip), %ymm6, %ymm5 -vpand mask_286_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_287_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_288_1(%rip), %ymm8, %ymm5 -vpand mask_289_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_290_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_291_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_292_1(%rip), %ymm8, %ymm5 -vpand mask_293_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_294_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsllq $1, %ymm6, %ymm7 -vpshufb mask_295_1(%rip), %ymm7, %ymm5 -vpand mask_296_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_297_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_298_1(%rip), %ymm7, %ymm5 -vpand mask_299_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_300_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_301_1(%rip), %ymm8, %ymm5 -vpand mask_302_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_303_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_304_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_305_1(%rip), %ymm8, %ymm5 -vpand mask_306_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_307_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_308_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $2, %ymm6, %ymm7 -vpshufb mask_309_1(%rip), %ymm7, %ymm5 -vpand mask_310_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_311_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_312_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_313_1(%rip), %ymm7, %ymm5 -vpand mask_314_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_315_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_316_1(%rip), %ymm8, %ymm5 -vpand mask_317_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_318_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_319_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_320_1(%rip), %ymm8, %ymm5 -vpand mask_321_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_322_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $61, %ymm6, %ymm5 -vpsllq $3, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_323_1(%rip), %ymm7, %ymm5 -vpand mask_324_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_325_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_326_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_327_1(%rip), %ymm7, %ymm5 -vpand mask_328_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_329_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_330_1(%rip), %ymm8, %ymm5 -vpand mask_331_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_332_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_333_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_334_1(%rip), %ymm8, %ymm5 -vpand mask_335_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_336_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsllq $1, %ymm7, %ymm6 -vpshufb mask_337_1(%rip), %ymm6, %ymm5 -vpand mask_338_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_339_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_340_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_341_1(%rip), %ymm6, %ymm5 -vpand mask_342_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_343_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_344_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_345_1(%rip), %ymm8, %ymm5 -vpand mask_346_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_347_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vmovdqa %ymm1, 0(%rdi) -vmovdqa %ymm2, 32(%rdi) -vmovdqa %ymm3, 64(%rdi) -ret diff --git a/src/kem/ntru/ntruhps2048677/avx2/square_5_677_patience.s b/src/kem/ntru/ntruhps2048677/avx2/square_5_677_patience.s deleted file mode 100644 index 320e1670..00000000 --- a/src/kem/ntru/ntruhps2048677/avx2/square_5_677_patience.s +++ /dev/null @@ -1,1478 +0,0 @@ -.data -.p2align 5 -.text -.global PQCLEAN_NTRUHPS2048677_AVX2_square_5_677 -.global _PQCLEAN_NTRUHPS2048677_AVX2_square_5_677 -PQCLEAN_NTRUHPS2048677_AVX2_square_5_677: -_PQCLEAN_NTRUHPS2048677_AVX2_square_5_677: -push %r15 -push %r14 -push %r13 -push %r12 -push %rbx -push %rbp -mov 0(%rsi), %r11 -mov $0x180000000001, %rbp -pext %rbp, %r11, %r10 -mov $0x40000000400001, %rbx -pdep %rbx, %r10, %r10 -mov %r10, 0(%rdi) -mov $0xc00000, %r12 -pext %r12, %r11, %r10 -mov $0x800000008000000, %r13 -pdep %r13, %r10, %r10 -xor %r10, 0(%rdi) -mov %r11, %r10 -and $0x2, %r10 -rol $31, %r10 -xor %r10, 0(%rdi) -mov $0x600000000004, %r14 -pext %r14, %r11, %r10 -pdep %rbx, %r10, %r10 -mov %r10, 8(%rdi) -mov $0x3000000, %r15 -pext %r15, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 8(%rdi) -mov %r11, %r10 -and $0x8, %r10 -rol $29, %r10 -xor %r10, 8(%rdi) -mov $0x1800000000010, %r9 -pext %r9, %r11, %r10 -pdep %rbx, %r10, %r10 -mov %r10, 16(%rdi) -mov $0xc000000, %r8 -pext %r8, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 16(%rdi) -mov %r11, %r10 -and $0x20, %r10 -rol $27, %r10 -xor %r10, 16(%rdi) -mov $0x6000000000040, %rdx -pext %rdx, %r11, %r10 -pdep %rbx, %r10, %r10 -mov %r10, 24(%rdi) -mov $0x30000000, %rcx -pext %rcx, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 24(%rdi) -mov %r11, %r10 -and $0x80, %r10 -rol $25, %r10 -xor %r10, 24(%rdi) -mov $0x18000000000100, %rax -pext %rax, %r11, %r10 -pdep %rbx, %r10, %r10 -mov %r10, 32(%rdi) -mov $0xc0000000, %rbp -pext %rbp, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 32(%rdi) -mov %r11, %r10 -and $0x200, %r10 -rol $23, %r10 -xor %r10, 32(%rdi) -mov $0x60000000000400, %r12 -pext %r12, %r11, %r10 -pdep %rbx, %r10, %r10 -mov %r10, 40(%rdi) -mov $0x300000000, %r14 -pext %r14, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 40(%rdi) -mov %r11, %r10 -and $0x800, %r10 -rol $21, %r10 -xor %r10, 40(%rdi) -mov $0x180000000001000, %r15 -pext %r15, %r11, %r10 -pdep %rbx, %r10, %r10 -mov %r10, 48(%rdi) -mov $0xc00000000, %r9 -pext %r9, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 48(%rdi) -mov %r11, %r10 -and $0x2000, %r10 -rol $19, %r10 -xor %r10, 48(%rdi) -mov $0x600000000004000, %r8 -pext %r8, %r11, %r10 -pdep %rbx, %r10, %r10 -mov %r10, 56(%rdi) -mov $0x3000000000, %rdx -pext %rdx, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 56(%rdi) -mov %r11, %r10 -and $0x8000, %r10 -rol $17, %r10 -xor %r10, 56(%rdi) -mov $0x1800000000010000, %rcx -pext %rcx, %r11, %r10 -pdep %rbx, %r10, %r10 -mov %r10, 64(%rdi) -mov $0xc000000000, %rax -pext %rax, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 64(%rdi) -mov %r11, %r10 -and $0x20000, %r10 -rol $15, %r10 -xor %r10, 64(%rdi) -mov $0x6000000000040000, %rbp -pext %rbp, %r11, %r10 -pdep %rbx, %r10, %r10 -mov %r10, 72(%rdi) -mov $0x30000000000, %r12 -pext %r12, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 72(%rdi) -mov %r11, %r10 -and $0x80000, %r10 -rol $13, %r10 -xor %r10, 72(%rdi) -mov $0x8000000000200000, %r14 -pext %r14, %r11, %r10 -mov $0x400000000000010, %r15 -pdep %r15, %r10, %r10 -rol $28, %r10 -mov %r10, 80(%rdi) -mov $0x40000100000, %r9 -pext %r9, %r11, %r10 -mov $0x8000001000000000, %r8 -pdep %r8, %r10, %r10 -rol $28, %r10 -xor %r10, 80(%rdi) -mov 8(%rsi), %r11 -mov $0x80000c0000000000, %rdx -pext %rdx, %r11, %r10 -mov $0x8000001000000010, %rcx -pdep %rcx, %r10, %r10 -rol $3, %r10 -xor %r10, 0(%rdi) -mov $0x600000, %rax -pext %rax, %r11, %r10 -mov $0x20000000200, %rbp -pdep %rbp, %r10, %r10 -rol $3, %r10 -xor %r10, 0(%rdi) -mov %r11, %r10 -and $0x3, %r10 -mov $0x400000004000, %rbx -pdep %rbx, %r10, %r10 -rol $3, %r10 -xor %r10, 0(%rdi) -mov $0x300000000000, %r12 -pext %r12, %r11, %r10 -mov $0x8000000080, %r13 -pdep %r13, %r10, %r10 -xor %r10, 8(%rdi) -mov $0x1800000, %r14 -pext %r14, %r11, %r10 -mov $0x100000001000, %r15 -pdep %r15, %r10, %r10 -xor %r10, 8(%rdi) -mov $0xc, %r9 -pext %r9, %r11, %r10 -mov $0x2000000020000, %r8 -pdep %r8, %r10, %r10 -xor %r10, 8(%rdi) -mov $0xc00000000000, %rdx -pext %rdx, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x6000000, %rcx -pext %rcx, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x30, %rax -pext %rax, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x3000000000000, %rbp -pext %rbp, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x18000000, %rbx -pext %rbx, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 24(%rdi) -mov $0xc0, %r12 -pext %r12, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 24(%rdi) -mov $0xc000000000000, %r14 -pext %r14, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x60000000, %r9 -pext %r9, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x300, %rdx -pext %rdx, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x30000000000000, %rcx -pext %rcx, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 40(%rdi) -mov $0x180000000, %rax -pext %rax, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 40(%rdi) -mov $0xc00, %rbp -pext %rbp, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 40(%rdi) -mov $0xc0000000000000, %rbx -pext %rbx, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x600000000, %r12 -pext %r12, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x3000, %r14 -pext %r14, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x300000000000000, %r9 -pext %r9, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 56(%rdi) -mov $0x1800000000, %rdx -pext %rdx, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 56(%rdi) -mov $0xc000, %rcx -pext %rcx, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 56(%rdi) -mov $0xc00000000000000, %rax -pext %rax, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x6000000000, %rbp -pext %rbp, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x30000, %rbx -pext %rbx, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x3000000000000000, %r12 -pext %r12, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x18000000000, %r14 -pext %r14, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 72(%rdi) -mov $0xc0000, %r9 -pext %r9, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x4000020000000000, %rdx -pext %rdx, %r11, %r10 -mov $0x8000000000000010, %rcx -pdep %rcx, %r10, %r10 -rol $8, %r10 -xor %r10, 80(%rdi) -mov %r11, %r10 -and $0x100000, %r10 -rol $61, %r10 -xor %r10, 80(%rdi) -mov 16(%rsi), %r11 -mov $0x8000080000200000, %rax -pext %rax, %r11, %r10 -mov $0x400000080000010, %rbp -pdep %rbp, %r10, %r10 -rol $25, %r10 -xor %r10, 0(%rdi) -mov $0x40000400001, %rbx -pext %rbx, %r11, %r10 -mov $0x8000001000000200, %r12 -pdep %r12, %r10, %r10 -rol $25, %r10 -xor %r10, 0(%rdi) -mov $0x300000000002, %r13 -pext %r13, %r11, %r10 -mov $0x100000001000004, %r14 -pdep %r14, %r10, %r10 -xor %r10, 8(%rdi) -mov $0x1800000, %r15 -pext %r15, %r11, %r10 -mov $0x2000000020000000, %r9 -pdep %r9, %r10, %r10 -xor %r10, 8(%rdi) -mov %r11, %r10 -and $0x4, %r10 -rol $32, %r10 -xor %r10, 8(%rdi) -mov $0xc00000000008, %r8 -pext %r8, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x6000000, %rdx -pext %rdx, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 16(%rdi) -mov %r11, %r10 -and $0x10, %r10 -rol $30, %r10 -xor %r10, 16(%rdi) -mov $0x3000000000020, %rcx -pext %rcx, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x18000000, %rax -pext %rax, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 24(%rdi) -mov %r11, %r10 -and $0x40, %r10 -rol $28, %r10 -xor %r10, 24(%rdi) -mov $0xc000000000080, %rbp -pext %rbp, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x60000000, %rbx -pext %rbx, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 32(%rdi) -mov %r11, %r10 -and $0x100, %r10 -rol $26, %r10 -xor %r10, 32(%rdi) -mov $0x30000000000200, %r12 -pext %r12, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 40(%rdi) -mov $0x180000000, %r13 -pext %r13, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 40(%rdi) -mov %r11, %r10 -and $0x400, %r10 -rol $24, %r10 -xor %r10, 40(%rdi) -mov $0xc0000000000800, %r15 -pext %r15, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x600000000, %r8 -pext %r8, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 48(%rdi) -mov %r11, %r10 -and $0x1000, %r10 -rol $22, %r10 -xor %r10, 48(%rdi) -mov $0x300000000002000, %rdx -pext %rdx, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 56(%rdi) -mov $0x1800000000, %rcx -pext %rcx, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 56(%rdi) -mov %r11, %r10 -and $0x4000, %r10 -rol $20, %r10 -xor %r10, 56(%rdi) -mov $0xc00000000008000, %rax -pext %rax, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x6000000000, %rbp -pext %rbp, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 64(%rdi) -mov %r11, %r10 -and $0x10000, %r10 -rol $18, %r10 -xor %r10, 64(%rdi) -mov $0x3000000000020000, %rbx -pext %rbx, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x18000000000, %r12 -pext %r12, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 72(%rdi) -mov %r11, %r10 -and $0x40000, %r10 -rol $16, %r10 -xor %r10, 72(%rdi) -mov $0x4000000000100000, %r13 -pext %r13, %r11, %r10 -mov $0x400000000000010, %r15 -pdep %r15, %r10, %r10 -rol $30, %r10 -xor %r10, 80(%rdi) -mov $0x20000080000, %r8 -pext %r8, %r11, %r10 -mov $0x8000001000000000, %rdx -pdep %rdx, %r10, %r10 -rol $30, %r10 -xor %r10, 80(%rdi) -mov 24(%rsi), %r11 -mov $0xc000040000000000, %rcx -pext %rcx, %r11, %r10 -mov $0x8000000080000010, %rax -pdep %rax, %r10, %r10 -rol $37, %r10 -xor %r10, 0(%rdi) -mov $0x20000200000, %rbp -pext %rbp, %r11, %r10 -mov $0x1000000200, %rbx -pdep %rbx, %r10, %r10 -rol $37, %r10 -xor %r10, 0(%rdi) -mov $0x100001, %r14 -pext %r14, %r11, %r10 -mov $0x20000004000, %r12 -pdep %r12, %r10, %r10 -rol $37, %r10 -xor %r10, 0(%rdi) -mov $0x180000000000, %r9 -pext %r9, %r11, %r10 -mov $0x20000000200, %r13 -pdep %r13, %r10, %r10 -xor %r10, 8(%rdi) -mov $0xc00000, %r15 -pext %r15, %r11, %r10 -mov $0x400000004000, %r8 -pdep %r8, %r10, %r10 -xor %r10, 8(%rdi) -mov $0x6, %rdx -pext %rdx, %r11, %r10 -mov $0x8000000080000, %rcx -pdep %rcx, %r10, %r10 -xor %r10, 8(%rdi) -mov $0x600000000000, %rax -pext %rax, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x3000000, %rbp -pext %rbp, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x18, %rbx -pext %rbx, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x1800000000000, %r14 -pext %r14, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 24(%rdi) -mov $0xc000000, %r12 -pext %r12, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x60, %r9 -pext %r9, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x6000000000000, %r15 -pext %r15, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x30000000, %rdx -pext %rdx, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x180, %rax -pext %rax, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x18000000000000, %rbp -pext %rbp, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 40(%rdi) -mov $0xc0000000, %rbx -pext %rbx, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 40(%rdi) -mov $0x600, %r14 -pext %r14, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 40(%rdi) -mov $0x60000000000000, %r12 -pext %r12, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x300000000, %r9 -pext %r9, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x1800, %r15 -pext %r15, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x180000000000000, %rdx -pext %rdx, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 56(%rdi) -mov $0xc00000000, %rax -pext %rax, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 56(%rdi) -mov $0x6000, %rbp -pext %rbp, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 56(%rdi) -mov $0x600000000000000, %rbx -pext %rbx, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x3000000000, %r14 -pext %r14, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x18000, %r12 -pext %r12, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x1800000000000000, %r9 -pext %r9, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 72(%rdi) -mov $0xc000000000, %r15 -pext %r15, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x60000, %rdx -pext %rdx, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x2000010000000000, %rax -pext %rax, %r11, %r10 -mov $0x8000000000000010, %rbp -pdep %rbp, %r10, %r10 -rol $10, %r10 -xor %r10, 80(%rdi) -mov %r11, %r10 -and $0x80000, %r10 -rol $0, %r10 -xor %r10, 80(%rdi) -mov 32(%rsi), %r11 -mov $0xc000000000000000, %rbx -pext %rbx, %r11, %r10 -mov $0x20000000200000, %r14 -pdep %r14, %r10, %r10 -xor %r10, 0(%rdi) -mov $0x60000000000, %r12 -pext %r12, %r11, %r10 -mov $0x400000004000000, %r9 -pdep %r9, %r10, %r10 -xor %r10, 0(%rdi) -mov $0x300000, %r13 -pext %r13, %r11, %r10 -mov $0x8000000080000000, %r15 -pdep %r15, %r10, %r10 -xor %r10, 0(%rdi) -mov $0x180000000001, %r8 -pext %r8, %r11, %r10 -mov $0x400000004000010, %rdx -pdep %rdx, %r10, %r10 -xor %r10, 8(%rdi) -mov $0xc00000, %rcx -pext %rcx, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 8(%rdi) -mov %r11, %r10 -and $0x2, %r10 -rol $35, %r10 -xor %r10, 8(%rdi) -mov $0x600000000004, %rax -pext %rax, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x3000000, %rbp -pext %rbp, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 16(%rdi) -mov %r11, %r10 -and $0x8, %r10 -rol $33, %r10 -xor %r10, 16(%rdi) -mov $0x1800000000010, %rbx -pext %rbx, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 24(%rdi) -mov $0xc000000, %r14 -pext %r14, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 24(%rdi) -mov %r11, %r10 -and $0x20, %r10 -rol $31, %r10 -xor %r10, 24(%rdi) -mov $0x6000000000040, %r12 -pext %r12, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x30000000, %r9 -pext %r9, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 32(%rdi) -mov %r11, %r10 -and $0x80, %r10 -rol $29, %r10 -xor %r10, 32(%rdi) -mov $0x18000000000100, %r13 -pext %r13, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 40(%rdi) -mov $0xc0000000, %r8 -pext %r8, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 40(%rdi) -mov %r11, %r10 -and $0x200, %r10 -rol $27, %r10 -xor %r10, 40(%rdi) -mov $0x60000000000400, %rcx -pext %rcx, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x300000000, %rax -pext %rax, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 48(%rdi) -mov %r11, %r10 -and $0x800, %r10 -rol $25, %r10 -xor %r10, 48(%rdi) -mov $0x180000000001000, %rbp -pext %rbp, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 56(%rdi) -mov $0xc00000000, %rbx -pext %rbx, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 56(%rdi) -mov %r11, %r10 -and $0x2000, %r10 -rol $23, %r10 -xor %r10, 56(%rdi) -mov $0x600000000004000, %r14 -pext %r14, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x3000000000, %r12 -pext %r12, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 64(%rdi) -mov %r11, %r10 -and $0x8000, %r10 -rol $21, %r10 -xor %r10, 64(%rdi) -mov $0x1800000000010000, %r9 -pext %r9, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 72(%rdi) -mov $0xc000000000, %r13 -pext %r13, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 72(%rdi) -mov %r11, %r10 -and $0x20000, %r10 -rol $19, %r10 -xor %r10, 72(%rdi) -mov $0x2000000000080000, %r8 -pext %r8, %r11, %r10 -mov $0x400000000000010, %rcx -pdep %rcx, %r10, %r10 -rol $32, %r10 -xor %r10, 80(%rdi) -mov $0x10000040000, %rax -pext %rax, %r11, %r10 -mov $0x8000001000000000, %rbp -pdep %rbp, %r10, %r10 -rol $32, %r10 -xor %r10, 80(%rdi) -mov 40(%rsi), %r11 -mov $0x6000000000000000, %rbx -pext %rbx, %r11, %r10 -mov $0x4000000040, %r14 -pdep %r14, %r10, %r10 -xor %r10, 0(%rdi) -mov $0x30000000000, %r12 -pext %r12, %r11, %r10 -mov $0x80000000800, %r9 -pdep %r9, %r10, %r10 -xor %r10, 0(%rdi) -mov $0x180000, %rdx -pext %rdx, %r11, %r10 -mov $0x1000000010000, %r13 -pdep %r13, %r10, %r10 -xor %r10, 0(%rdi) -mov $0x80000c0000000000, %r15 -pext %r15, %r11, %r10 -mov $0x8000001000000010, %r8 -pdep %r8, %r10, %r10 -rol $7, %r10 -xor %r10, 8(%rdi) -mov $0x600000, %rcx -pext %rcx, %r11, %r10 -mov $0x20000000200, %rax -pdep %rax, %r10, %r10 -rol $7, %r10 -xor %r10, 8(%rdi) -mov %r11, %r10 -and $0x3, %r10 -mov $0x400000004000, %rbp -pdep %rbp, %r10, %r10 -rol $7, %r10 -xor %r10, 8(%rdi) -mov $0x300000000000, %rbx -pext %rbx, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x1800000, %r14 -pext %r14, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 16(%rdi) -mov $0xc, %r12 -pext %r12, %r11, %r10 -mov $0x20000000200000, %rdx -pdep %rdx, %r10, %r10 -xor %r10, 16(%rdi) -mov $0xc00000000000, %r15 -pext %r15, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x6000000, %r8 -pext %r8, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x30, %rcx -pext %rcx, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x3000000000000, %rax -pext %rax, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x18000000, %rbp -pext %rbp, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 32(%rdi) -mov $0xc0, %rbx -pext %rbx, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 32(%rdi) -mov $0xc000000000000, %r14 -pext %r14, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 40(%rdi) -mov $0x60000000, %r12 -pext %r12, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 40(%rdi) -mov $0x300, %r15 -pext %r15, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 40(%rdi) -mov $0x30000000000000, %r8 -pext %r8, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x180000000, %rcx -pext %rcx, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 48(%rdi) -mov $0xc00, %rax -pext %rax, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 48(%rdi) -mov $0xc0000000000000, %rbp -pext %rbp, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 56(%rdi) -mov $0x600000000, %rbx -pext %rbx, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 56(%rdi) -mov $0x3000, %r14 -pext %r14, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 56(%rdi) -mov $0x300000000000000, %r12 -pext %r12, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x1800000000, %r15 -pext %r15, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 64(%rdi) -mov $0xc000, %r8 -pext %r8, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 64(%rdi) -mov $0xc00000000000000, %rcx -pext %rcx, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x6000000000, %rax -pext %rax, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x30000, %rbp -pext %rbp, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x1000008000000000, %rbx -pext %rbx, %r11, %r10 -mov $0x8000000000000010, %r14 -pdep %r14, %r10, %r10 -rol $12, %r10 -xor %r10, 80(%rdi) -mov %r11, %r10 -and $0x40000, %r10 -rol $3, %r10 -xor %r10, 80(%rdi) -mov 48(%rsi), %r11 -mov $0x6000000000040000, %r12 -pext %r12, %r11, %r10 -mov $0x80000000800002, %r15 -pdep %r15, %r10, %r10 -xor %r10, 0(%rdi) -mov $0x30000000000, %r8 -pext %r8, %r11, %r10 -mov $0x1000000010000000, %rcx -pdep %rcx, %r10, %r10 -xor %r10, 0(%rdi) -mov %r11, %r10 -and $0x80000, %r10 -rol $14, %r10 -xor %r10, 0(%rdi) -mov $0x8000080000200000, %r9 -pext %r9, %r11, %r10 -mov $0x400000080000010, %rax -pdep %rax, %r10, %r10 -rol $29, %r10 -xor %r10, 8(%rdi) -mov $0x40000100001, %r13 -pext %r13, %r11, %r10 -mov $0x8000001000000200, %rbp -pdep %rbp, %r10, %r10 -rol $29, %r10 -xor %r10, 8(%rdi) -mov $0x300000400000, %rdx -pext %rdx, %r11, %r10 -mov $0x1000000010000002, %rbx -pdep %rbx, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x800002, %r14 -pext %r14, %r11, %r10 -mov $0x200000040, %r12 -pdep %r12, %r10, %r10 -xor %r10, 16(%rdi) -mov %r11, %r10 -and $0x4, %r10 -rol $36, %r10 -xor %r10, 16(%rdi) -mov $0xc00001000000, %r15 -pext %r15, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x2000008, %r8 -pext %r8, %r11, %r10 -pdep %r12, %r10, %r10 -xor %r10, 24(%rdi) -mov %r11, %r10 -and $0x10, %r10 -rol $34, %r10 -xor %r10, 24(%rdi) -mov $0x3000004000000, %rcx -pext %rcx, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x8000020, %r9 -pext %r9, %r11, %r10 -pdep %r12, %r10, %r10 -xor %r10, 32(%rdi) -mov %r11, %r10 -and $0x40, %r10 -rol $32, %r10 -xor %r10, 32(%rdi) -mov $0xc000010000000, %rax -pext %rax, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 40(%rdi) -mov $0x20000080, %r13 -pext %r13, %r11, %r10 -pdep %r12, %r10, %r10 -xor %r10, 40(%rdi) -mov %r11, %r10 -and $0x100, %r10 -rol $30, %r10 -xor %r10, 40(%rdi) -mov $0x30000040000000, %rbp -pext %rbp, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x80000200, %rdx -pext %rdx, %r11, %r10 -pdep %r12, %r10, %r10 -xor %r10, 48(%rdi) -mov %r11, %r10 -and $0x400, %r10 -rol $28, %r10 -xor %r10, 48(%rdi) -mov $0xc0000100000000, %r14 -pext %r14, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 56(%rdi) -mov $0x200000800, %r15 -pext %r15, %r11, %r10 -pdep %r12, %r10, %r10 -xor %r10, 56(%rdi) -mov %r11, %r10 -and $0x1000, %r10 -rol $26, %r10 -xor %r10, 56(%rdi) -mov $0x300000400000000, %r8 -pext %r8, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x800002000, %rcx -pext %rcx, %r11, %r10 -pdep %r12, %r10, %r10 -xor %r10, 64(%rdi) -mov %r11, %r10 -and $0x4000, %r10 -rol $24, %r10 -xor %r10, 64(%rdi) -mov $0xc00001000000000, %r9 -pext %r9, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x2000008000, %rax -pext %rax, %r11, %r10 -pdep %r12, %r10, %r10 -xor %r10, 72(%rdi) -mov %r11, %r10 -and $0x10000, %r10 -rol $22, %r10 -xor %r10, 72(%rdi) -mov $0x1000004000000000, %r13 -pext %r13, %r11, %r10 -mov $0x10000002, %rbp -pdep %rbp, %r10, %r10 -xor %r10, 80(%rdi) -mov $0x8000020000, %rdx -pext %rdx, %r11, %r10 -pdep %r12, %r10, %r10 -xor %r10, 80(%rdi) -mov 56(%rsi), %r11 -mov $0x3000000000000000, %r14 -pext %r14, %r11, %r10 -mov $0x10000000100, %r15 -pdep %r15, %r10, %r10 -xor %r10, 0(%rdi) -mov $0x18000000000, %r8 -pext %r8, %r11, %r10 -mov $0x200000002000, %rcx -pdep %rcx, %r10, %r10 -xor %r10, 0(%rdi) -mov $0xc0000, %r9 -pext %r9, %r11, %r10 -mov $0x4000000040000, %rbx -pdep %rbx, %r10, %r10 -xor %r10, 0(%rdi) -mov $0xc000040000000000, %rax -pext %rax, %r11, %r10 -mov $0x8000000080000010, %r13 -pdep %r13, %r10, %r10 -rol $41, %r10 -xor %r10, 8(%rdi) -mov $0x20000200000, %rbp -pext %rbp, %r11, %r10 -mov $0x1000000200, %rdx -pdep %rdx, %r10, %r10 -rol $41, %r10 -xor %r10, 8(%rdi) -mov $0x100001, %r12 -pext %r12, %r11, %r10 -mov $0x20000004000, %r14 -pdep %r14, %r10, %r10 -rol $41, %r10 -xor %r10, 8(%rdi) -mov $0x180000000000, %r15 -pext %r15, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 16(%rdi) -mov $0xc00000, %r8 -pext %r8, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x6, %r9 -pext %r9, %r11, %r10 -mov $0x80000000800000, %rax -pdep %rax, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x600000000000, %r13 -pext %r13, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x3000000, %rbp -pext %rbp, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x18, %rdx -pext %rdx, %r11, %r10 -pdep %rax, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x1800000000000, %r12 -pext %r12, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 32(%rdi) -mov $0xc000000, %r14 -pext %r14, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x60, %r15 -pext %r15, %r11, %r10 -pdep %rax, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x6000000000000, %r8 -pext %r8, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 40(%rdi) -mov $0x30000000, %r9 -pext %r9, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 40(%rdi) -mov $0x180, %r13 -pext %r13, %r11, %r10 -pdep %rax, %r10, %r10 -xor %r10, 40(%rdi) -mov $0x18000000000000, %rbp -pext %rbp, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 48(%rdi) -mov $0xc0000000, %rdx -pext %rdx, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x600, %r12 -pext %r12, %r11, %r10 -pdep %rax, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x60000000000000, %r14 -pext %r14, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 56(%rdi) -mov $0x300000000, %r15 -pext %r15, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 56(%rdi) -mov $0x1800, %r8 -pext %r8, %r11, %r10 -pdep %rax, %r10, %r10 -xor %r10, 56(%rdi) -mov $0x180000000000000, %r9 -pext %r9, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 64(%rdi) -mov $0xc00000000, %r13 -pext %r13, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x6000, %rbp -pext %rbp, %r11, %r10 -pdep %rax, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x600000000000000, %rdx -pext %rdx, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x3000000000, %r12 -pext %r12, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x18000, %r14 -pext %r14, %r11, %r10 -pdep %rax, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x800004000000000, %r15 -pext %r15, %r11, %r10 -mov $0x8000000000000010, %r8 -pdep %r8, %r10, %r10 -rol $14, %r10 -xor %r10, 80(%rdi) -mov %r11, %r10 -and $0x20000, %r10 -rol $6, %r10 -xor %r10, 80(%rdi) -mov 64(%rsi), %r11 -mov $0x3000000000020000, %r9 -pext %r9, %r11, %r10 -mov $0x200000002000008, %r13 -pdep %r13, %r10, %r10 -xor %r10, 0(%rdi) -mov $0x18000000000, %rbp -pext %rbp, %r11, %r10 -mov $0x4000000040000000, %rdx -pdep %rdx, %r10, %r10 -xor %r10, 0(%rdi) -mov %r11, %r10 -and $0x40000, %r10 -rol $17, %r10 -xor %r10, 0(%rdi) -mov $0xc000000000080000, %rcx -pext %rcx, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 8(%rdi) -mov $0x60000000000, %r12 -pext %r12, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 8(%rdi) -mov %r11, %r10 -and $0x100000, %r10 -rol $15, %r10 -xor %r10, 8(%rdi) -mov $0x180000200000, %rbx -pext %rbx, %r11, %r10 -mov $0x4000000040000008, %r14 -pdep %r14, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x400001, %rax -pext %rax, %r11, %r10 -mov $0x800000100, %r15 -pdep %r15, %r10, %r10 -xor %r10, 16(%rdi) -mov %r11, %r10 -and $0x2, %r10 -rol $39, %r10 -xor %r10, 16(%rdi) -mov $0x600000800000, %r8 -pext %r8, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x1000004, %r9 -pext %r9, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 24(%rdi) -mov %r11, %r10 -and $0x8, %r10 -rol $37, %r10 -xor %r10, 24(%rdi) -mov $0x1800002000000, %rbp -pext %rbp, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x4000010, %rcx -pext %rcx, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 32(%rdi) -mov %r11, %r10 -and $0x20, %r10 -rol $35, %r10 -xor %r10, 32(%rdi) -mov $0x6000008000000, %r13 -pext %r13, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 40(%rdi) -mov $0x10000040, %r12 -pext %r12, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 40(%rdi) -mov %r11, %r10 -and $0x80, %r10 -rol $33, %r10 -xor %r10, 40(%rdi) -mov $0x18000020000000, %rdx -pext %rdx, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x40000100, %rbx -pext %rbx, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 48(%rdi) -mov %r11, %r10 -and $0x200, %r10 -rol $31, %r10 -xor %r10, 48(%rdi) -mov $0x60000080000000, %rax -pext %rax, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 56(%rdi) -mov $0x100000400, %r8 -pext %r8, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 56(%rdi) -mov %r11, %r10 -and $0x800, %r10 -rol $29, %r10 -xor %r10, 56(%rdi) -mov $0x180000200000000, %r9 -pext %r9, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x400001000, %rbp -pext %rbp, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 64(%rdi) -mov %r11, %r10 -and $0x2000, %r10 -rol $27, %r10 -xor %r10, 64(%rdi) -mov $0x600000800000000, %rcx -pext %rcx, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x1000004000, %r13 -pext %r13, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 72(%rdi) -mov %r11, %r10 -and $0x8000, %r10 -rol $25, %r10 -xor %r10, 72(%rdi) -mov $0x800002000000000, %r12 -pext %r12, %r11, %r10 -mov $0x40000008, %rdx -pdep %rdx, %r10, %r10 -xor %r10, 80(%rdi) -mov $0x4000010000, %rbx -pext %rbx, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 80(%rdi) -mov 72(%rsi), %r11 -mov $0x1800000000000000, %rax -pext %rax, %r11, %r10 -mov $0x40000000400, %r8 -pdep %r8, %r10, %r10 -xor %r10, 0(%rdi) -mov $0xc000000000, %r9 -pext %r9, %r11, %r10 -mov $0x800000008000, %rbp -pdep %rbp, %r10, %r10 -xor %r10, 0(%rdi) -mov $0x60000, %rcx -pext %rcx, %r11, %r10 -mov $0x10000000100000, %r14 -pdep %r14, %r10, %r10 -xor %r10, 0(%rdi) -mov $0x6000000000000000, %r13 -pext %r13, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 8(%rdi) -mov $0x30000000000, %r12 -pext %r12, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 8(%rdi) -mov $0x180000, %rdx -pext %rdx, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 8(%rdi) -mov $0x80000c0000000000, %rbx -pext %rbx, %r11, %r10 -mov $0x8000001000000010, %r15 -pdep %r15, %r10, %r10 -rol $11, %r10 -xor %r10, 16(%rdi) -mov $0x600000, %rax -pext %rax, %r11, %r10 -mov $0x20000000200, %r9 -pdep %r9, %r10, %r10 -rol $11, %r10 -xor %r10, 16(%rdi) -mov %r11, %r10 -and $0x3, %r10 -mov $0x400000004000, %rcx -pdep %rcx, %r10, %r10 -rol $11, %r10 -xor %r10, 16(%rdi) -mov $0x300000000000, %r13 -pext %r13, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x1800000, %r8 -pext %r8, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 24(%rdi) -mov $0xc, %r12 -pext %r12, %r11, %r10 -mov $0x200000002000000, %rdx -pdep %rdx, %r10, %r10 -xor %r10, 24(%rdi) -mov $0xc00000000000, %rbx -pext %rbx, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x6000000, %r15 -pext %r15, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x30, %rax -pext %rax, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x3000000000000, %r9 -pext %r9, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 40(%rdi) -mov $0x18000000, %rcx -pext %rcx, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 40(%rdi) -mov $0xc0, %r13 -pext %r13, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 40(%rdi) -mov $0xc000000000000, %r8 -pext %r8, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x60000000, %r12 -pext %r12, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x300, %rbx -pext %rbx, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x30000000000000, %r15 -pext %r15, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 56(%rdi) -mov $0x180000000, %rax -pext %rax, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 56(%rdi) -mov $0xc00, %r9 -pext %r9, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 56(%rdi) -mov $0xc0000000000000, %rcx -pext %rcx, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x600000000, %r13 -pext %r13, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x3000, %r8 -pext %r8, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x300000000000000, %r12 -pext %r12, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x1800000000, %rbx -pext %rbx, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 72(%rdi) -mov $0xc000, %r15 -pext %r15, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x400002000000000, %rax -pext %rax, %r11, %r10 -mov $0x8000000000000010, %r9 -pdep %r9, %r10, %r10 -rol $16, %r10 -xor %r10, 80(%rdi) -mov %r11, %r10 -and $0x10000, %r10 -rol $9, %r10 -xor %r10, 80(%rdi) -mov 80(%rsi), %r11 -mov $0x30000, %rcx -pext %rcx, %r11, %r10 -mov $0x2000000020, %r13 -pdep %r13, %r10, %r10 -xor %r10, 0(%rdi) -mov $0xc0000, %r8 -pext %r8, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 8(%rdi) -mov $0x300001, %r12 -pext %r12, %r11, %r10 -mov $0x8000000080000010, %rbp -pdep %rbp, %r10, %r10 -rol $38, %r10 -xor %r10, 16(%rdi) -mov $0xc00000, %rbx -pext %rbx, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x6, %r14 -pext %r14, %r11, %r10 -mov $0x40000000400, %r15 -pdep %r15, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x3000000, %rdx -pext %rdx, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x18, %rax -pext %rax, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 32(%rdi) -mov $0xc000000, %r9 -pext %r9, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 40(%rdi) -mov $0x60, %rcx -pext %rcx, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 40(%rdi) -mov $0x30000000, %r8 -pext %r8, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x180, %r12 -pext %r12, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 48(%rdi) -mov $0xc0000000, %rbp -pext %rbp, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 56(%rdi) -mov $0x600, %rbx -pext %rbx, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 56(%rdi) -mov $0x300000000, %r14 -pext %r14, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x1800, %rdx -pext %rdx, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 64(%rdi) -mov $0xc00000000, %rax -pext %rax, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x6000, %r9 -pext %r9, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x1000008000, %rcx -pext %rcx, %r11, %r10 -mov $0x8000000000000010, %r8 -pdep %r8, %r10, %r10 -rol $6, %r10 -xor %r10, 80(%rdi) -movq $0x0, 88(%rdi) -pop %rbp -pop %rbx -pop %r12 -pop %r13 -pop %r14 -pop %r15 -ret diff --git a/src/kem/ntru/ntruhps2048677/avx2/square_84_677_shufbytes.s b/src/kem/ntru/ntruhps2048677/avx2/square_84_677_shufbytes.s deleted file mode 100644 index 5a0134b6..00000000 --- a/src/kem/ntru/ntruhps2048677/avx2/square_84_677_shufbytes.s +++ /dev/null @@ -1,6940 +0,0 @@ -.data -.p2align 5 -mask_0_1: -.byte 0 -.byte 5 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 9 -.byte 14 -.byte 2 -.byte 255 -.byte 255 -.byte 7 -.byte 12 -.byte 0 -.byte 2 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 - -mask_1_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 - -mask_2_1: -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x880 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 - -mask_3_1: -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_4_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_5_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_6_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_7_1: -.byte 14 -.byte 2 -.byte 7 -.byte 255 -.byte 255 -.byte 12 -.byte 0 -.byte 5 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 2 -.byte 7 -.byte 255 -.byte 255 -.byte 255 - -mask_8_1: -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x110 -.word 0x0 -.word 0x0 - -mask_9_1: -.word 0x220 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 - -mask_10_1: -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_11_1: -.byte 8 -.byte 255 -.byte 12 -.byte 0 -.byte 255 -.byte 6 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 9 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 4 -.byte 9 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 4 - -mask_12_1: -.word 0x0 -.word 0x880 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 - -mask_13_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x1000 - -mask_14_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_15_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_16_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_17_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_18_1: -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 2 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 6 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 0 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 2 -.byte 255 - -mask_19_1: -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x8 - -mask_20_1: -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_21_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_22_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_23_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_24_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_25_1: -.byte 255 -.byte 2 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 6 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 10 -.byte 12 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 13 -.byte 1 -.byte 255 -.byte 255 -.byte 255 - -mask_26_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 - -mask_27_1: -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x4 -.word 0x0 - -mask_28_1: -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_29_1: -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_30_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_31_1: -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_32_1: -.byte 11 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 2 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 6 -.byte 255 -.byte 15 -.byte 3 -.byte 255 -.byte 255 -.byte 8 -.byte 13 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 - -mask_33_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 - -mask_34_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 - -mask_35_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x220 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_36_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_37_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_38_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_39_1: -.byte 5 -.byte 255 -.byte 255 -.byte 10 -.byte 15 -.byte 3 -.byte 8 -.byte 255 -.byte 255 -.byte 13 -.byte 1 -.byte 6 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 1 -.byte 6 -.byte 255 -.byte 12 -.byte 0 -.byte 255 -.byte 4 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 1 - -mask_40_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 - -mask_41_1: -.word 0x0 -.word 0x0 -.word 0x220 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x2000 - -mask_42_1: -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_43_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 - -mask_44_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 - -mask_45_1: -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 12 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 10 -.byte 15 -.byte 3 -.byte 8 -.byte 255 -.byte 255 -.byte 13 -.byte 4 -.byte 255 -.byte 10 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 - -mask_46_1: -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 - -mask_47_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x440 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_48_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_49_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_50_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_51_1: -.byte 255 -.byte 12 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 3 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 1 -.byte 0 -.byte 7 -.byte 9 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_52_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 - -mask_53_1: -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x202 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 - -mask_54_1: -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_55_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_56_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_57_1: -.byte 8 -.byte 255 -.byte 14 -.byte 2 -.byte 255 -.byte 6 -.byte 255 -.byte 12 -.byte 0 -.byte 5 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 3 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 - -mask_58_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 - -mask_59_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 - -mask_60_1: -.word 0x0 -.word 0x110 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_61_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 - -mask_62_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 - -mask_63_1: -.byte 2 -.byte 255 -.byte 0 -.byte 7 -.byte 12 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 3 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 9 -.byte 255 -.byte 255 -.byte 14 -.byte 2 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 11 - -mask_64_1: -.word 0x0 -.word 0x202 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x110 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 - -mask_65_1: -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x400 - -mask_66_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_67_1: -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 9 -.byte 14 -.byte 2 -.byte 255 -.byte 255 -.byte 7 -.byte 12 -.byte 0 -.byte 255 -.byte 6 -.byte 255 -.byte 10 -.byte 1 -.byte 0 -.byte 7 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 14 - -mask_68_1: -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 - -mask_69_1: -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x880 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x4000 - -mask_70_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_71_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_72_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_73_1: -.byte 255 -.byte 9 -.byte 255 -.byte 2 -.byte 255 -.byte 0 -.byte 7 -.byte 255 -.byte 13 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 4 -.byte 6 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 2 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 - -mask_74_1: -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x8 -.word 0x0 -.word 0x0 - -mask_75_1: -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 - -mask_76_1: -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_77_1: -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_78_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_79_1: -.byte 255 -.byte 6 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 9 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 0 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 14 -.byte 2 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 - -mask_80_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 - -mask_81_1: -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 - -mask_82_1: -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_83_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_84_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_85_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_86_1: -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 9 -.byte 255 -.byte 15 -.byte 3 -.byte 255 -.byte 7 -.byte 255 -.byte 13 -.byte 1 -.byte 6 -.byte 255 -.byte 255 -.byte 8 -.byte 13 -.byte 1 -.byte 6 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 8 - -mask_87_1: -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 - -mask_88_1: -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x1 -.word 0x0 -.word 0x2000 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x800 - -mask_89_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x110 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_90_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 - -mask_91_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 - -mask_92_1: -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 6 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 10 -.byte 15 -.byte 3 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 4 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 11 - -mask_93_1: -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 - -mask_94_1: -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x8000 - -mask_95_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x220 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_96_1: -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_97_1: -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_98_1: -.byte 11 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 9 -.byte 14 -.byte 2 -.byte 7 -.byte 255 -.byte 255 -.byte 12 -.byte 0 -.byte 5 -.byte 255 -.byte 11 -.byte 255 -.byte 12 -.byte 0 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 - -mask_99_1: -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x4 -.word 0x0 -.word 0x8000 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x2000 - -mask_100_1: -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x440 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 - -mask_101_1: -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_102_1: -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 11 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 9 -.byte 14 -.byte 2 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_103_1: -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_104_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x880 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 - -mask_105_1: -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_106_1: -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_107_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 - -mask_108_1: -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_109_1: -.byte 255 -.byte 5 -.byte 255 -.byte 11 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 2 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 0 -.byte 2 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 10 -.byte 255 - -mask_110_1: -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 - -mask_111_1: -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 - -mask_112_1: -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_113_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_114_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_115_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_116_1: -.byte 14 -.byte 2 -.byte 255 -.byte 8 -.byte 13 -.byte 1 -.byte 255 -.byte 255 -.byte 6 -.byte 11 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 6 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 13 -.byte 1 - -mask_117_1: -.word 0x880 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 - -mask_118_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x110 - -mask_119_1: -.word 0x0 -.word 0x0 -.word 0x220 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_120_1: -.byte 8 -.byte 13 -.byte 1 -.byte 255 -.byte 255 -.byte 6 -.byte 11 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 9 -.byte 255 -.byte 15 -.byte 3 -.byte 8 -.byte 255 -.byte 255 -.byte 10 -.byte 15 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 1 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 - -mask_121_1: -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x220 -.word 0x0 -.word 0x0 -.word 0x4000 - -mask_122_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x1 -.word 0x0 -.word 0x2000 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 - -mask_123_1: -.word 0x8000 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_124_1: -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 8 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 12 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 13 -.byte 1 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_125_1: -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x110 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_126_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 - -mask_127_1: -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_128_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_129_1: -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_130_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_131_1: -.byte 255 -.byte 15 -.byte 3 -.byte 8 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 12 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 10 -.byte 12 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 7 -.byte 255 - -mask_132_1: -.word 0x1000 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 - -mask_133_1: -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 - -mask_134_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_135_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 - -mask_136_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 - -mask_137_1: -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_138_1: -.byte 255 -.byte 12 -.byte 255 -.byte 5 -.byte 10 -.byte 255 -.byte 255 -.byte 15 -.byte 3 -.byte 8 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 15 -.byte 3 -.byte 255 -.byte 9 -.byte 255 -.byte 13 -.byte 1 -.byte 0 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 10 -.byte 255 - -mask_139_1: -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 - -mask_140_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x880 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x20 - -mask_141_1: -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_142_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_143_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_144_1: -.byte 5 -.byte 255 -.byte 11 -.byte 255 -.byte 15 -.byte 3 -.byte 255 -.byte 9 -.byte 14 -.byte 2 -.byte 255 -.byte 0 -.byte 7 -.byte 12 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 7 -.byte 12 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 - -mask_145_1: -.word 0x0 -.word 0x0 -.word 0x880 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x8000 - -mask_146_1: -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 - -mask_147_1: -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x220 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_148_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 - -mask_149_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 - -mask_150_1: -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 5 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 9 -.byte 14 -.byte 2 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 0 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_151_1: -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_152_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x808 -.word 0x0 -.word 0x0 - -mask_153_1: -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x440 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_154_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_155_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_156_1: -.byte 255 -.byte 12 -.byte 255 -.byte 5 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 9 -.byte 255 -.byte 2 -.byte 255 -.byte 0 -.byte 7 -.byte 9 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 4 -.byte 255 - -mask_157_1: -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x808 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 - -mask_158_1: -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 - -mask_159_1: -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_160_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_161_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_162_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_163_1: -.byte 255 -.byte 9 -.byte 14 -.byte 2 -.byte 7 -.byte 255 -.byte 255 -.byte 12 -.byte 0 -.byte 5 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 2 -.byte 7 -.byte 255 - -mask_164_1: -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x220 -.word 0x0 - -mask_165_1: -.word 0x0 -.word 0x440 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x40 - -mask_166_1: -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_167_1: -.byte 2 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 6 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 9 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 4 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 13 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 11 - -mask_168_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x1000 - -mask_169_1: -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x110 -.word 0x0 -.word 0x0 - -mask_170_1: -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_171_1: -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_172_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_173_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_174_1: -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 2 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 6 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_175_1: -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_176_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 - -mask_177_1: -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_178_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_179_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_180_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_181_1: -.byte 255 -.byte 9 -.byte 255 -.byte 2 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 6 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 4 -.byte 6 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 13 -.byte 1 -.byte 255 - -mask_182_1: -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 - -mask_183_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x8 - -mask_184_1: -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_185_1: -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_186_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_187_1: -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_188_1: -.byte 255 -.byte 6 -.byte 11 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 9 -.byte 255 -.byte 15 -.byte 3 -.byte 8 -.byte 255 -.byte 255 -.byte 13 -.byte 1 -.byte 255 -.byte 10 -.byte 15 -.byte 3 -.byte 255 -.byte 255 -.byte 8 -.byte 13 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 4 -.byte 255 - -mask_189_1: -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x110 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 - -mask_190_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x80 - -mask_191_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x440 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_192_1: -.byte 9 -.byte 255 -.byte 255 -.byte 14 -.byte 2 -.byte 7 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 11 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 - -mask_193_1: -.word 0x0 -.word 0x2000 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 - -mask_194_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_195_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_196_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_197_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_198_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 - -mask_199_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x200 - -mask_200_1: -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 - -mask_201_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_202_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_203_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_204_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_205_1: -.byte 11 -.byte 255 -.byte 4 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 8 -.byte 13 -.byte 1 -.byte 255 -.byte 255 -.byte 6 -.byte 11 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 - -mask_206_1: -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_207_1: -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 - -mask_208_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x440 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_209_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_210_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_211_1: -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 6 -.byte 255 -.byte 255 - -mask_212_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 - -mask_213_1: -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 - -mask_214_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_215_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_216_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 - -mask_217_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_218_1: -.byte 6 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 4 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 8 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_219_1: -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_220_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_221_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_222_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_223_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_224_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_225_1: -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 15 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 1 - -mask_226_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x440 - -mask_227_1: -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x4 -.word 0x0 -.word 0x0 - -mask_228_1: -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_229_1: -.byte 8 -.byte 255 -.byte 1 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 5 -.byte 10 -.byte 255 -.byte 255 -.byte 15 -.byte 3 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 - -mask_230_1: -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_231_1: -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 - -mask_232_1: -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_233_1: -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_234_1: -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_235_1: -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 2 -.byte 255 -.byte 6 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 3 -.byte 255 -.byte 255 - -mask_236_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 - -mask_237_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 - -mask_238_1: -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_239_1: -.byte 255 -.byte 4 -.byte 255 -.byte 8 -.byte 255 -.byte 14 -.byte 2 -.byte 7 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 5 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_240_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_241_1: -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_242_1: -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_243_1: -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 - -mask_244_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x80 - -mask_245_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_246_1: -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_247_1: -.byte 5 -.byte 255 -.byte 11 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 9 -.byte 14 -.byte 2 -.byte 255 -.byte 8 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_248_1: -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 - -mask_249_1: -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x880 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_250_1: -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_251_1: -.byte 2 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 6 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 0 -.byte 255 -.byte 255 - -mask_252_1: -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 - -mask_253_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 - -mask_254_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_255_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 - -mask_256_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 - -mask_257_1: -.byte 13 -.byte 1 -.byte 255 -.byte 255 -.byte 6 -.byte 11 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 2 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 - -mask_258_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 - -mask_259_1: -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_260_1: -.word 0x220 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_261_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_262_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_263_1: -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 - -mask_264_1: -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x100 - -mask_265_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 - -mask_266_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_267_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_268_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_269_1: -.byte 2 -.byte 255 -.byte 8 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 12 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 10 -.byte 15 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_270_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 - -mask_271_1: -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_272_1: -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_273_1: -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_274_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_275_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_276_1: -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 8 -.byte 255 -.byte 255 -.byte 13 -.byte 1 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 10 -.byte 255 -.byte 255 - -mask_277_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x220 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 - -mask_278_1: -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 - -mask_279_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -.text -.global PQCLEAN_NTRUHPS2048677_AVX2_square_84_677 -.global _PQCLEAN_NTRUHPS2048677_AVX2_square_84_677 -PQCLEAN_NTRUHPS2048677_AVX2_square_84_677: -_PQCLEAN_NTRUHPS2048677_AVX2_square_84_677: -vmovdqa 0(%rsi), %ymm0 -vpshufb mask_0_1(%rip), %ymm0, %ymm5 -vpand mask_1_1(%rip), %ymm5, %ymm1 -vpand mask_2_1(%rip), %ymm5, %ymm2 -vpand mask_3_1(%rip), %ymm5, %ymm3 -vpshufb mask_4_1(%rip), %ymm0, %ymm5 -vpand mask_5_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_6_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm8 -vpshufb mask_7_1(%rip), %ymm8, %ymm5 -vpand mask_8_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_9_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_10_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm0, %ymm5 -vpsllq $1, %ymm0, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_11_1(%rip), %ymm6, %ymm5 -vpand mask_12_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_13_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_14_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_15_1(%rip), %ymm6, %ymm5 -vpand mask_16_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_17_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_18_1(%rip), %ymm8, %ymm5 -vpand mask_19_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_20_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_21_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_22_1(%rip), %ymm8, %ymm5 -vpand mask_23_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_24_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsrlq $63, %ymm6, %ymm5 -vpsllq $1, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_25_1(%rip), %ymm7, %ymm5 -vpand mask_26_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_27_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_28_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_29_1(%rip), %ymm7, %ymm5 -vpand mask_30_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_31_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_32_1(%rip), %ymm8, %ymm5 -vpand mask_33_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_34_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_35_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_36_1(%rip), %ymm8, %ymm5 -vpand mask_37_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_38_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsrlq $63, %ymm7, %ymm5 -vpsllq $1, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_39_1(%rip), %ymm6, %ymm5 -vpand mask_40_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_41_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_42_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_43_1(%rip), %ymm6, %ymm5 -vpand mask_44_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_45_1(%rip), %ymm8, %ymm5 -vpand mask_46_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_47_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_48_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_49_1(%rip), %ymm8, %ymm5 -vpand mask_50_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsrlq $63, %ymm6, %ymm5 -vpsllq $1, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_51_1(%rip), %ymm7, %ymm5 -vpand mask_52_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_53_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_54_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_55_1(%rip), %ymm7, %ymm5 -vpand mask_56_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_57_1(%rip), %ymm8, %ymm5 -vpand mask_58_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_59_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_60_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_61_1(%rip), %ymm8, %ymm5 -vpand mask_62_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsllq $1, %ymm7, %ymm6 -vpshufb mask_63_1(%rip), %ymm6, %ymm5 -vpand mask_64_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_65_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_66_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_67_1(%rip), %ymm8, %ymm5 -vpand mask_68_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_69_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_70_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_71_1(%rip), %ymm8, %ymm5 -vpand mask_72_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpsrlq $62, %ymm7, %ymm5 -vpsllq $2, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_73_1(%rip), %ymm6, %ymm5 -vpand mask_74_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_75_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_76_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_77_1(%rip), %ymm6, %ymm5 -vpand mask_78_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_79_1(%rip), %ymm8, %ymm5 -vpand mask_80_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_81_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_82_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_83_1(%rip), %ymm8, %ymm5 -vpand mask_84_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_85_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm6, %ymm5 -vpsllq $1, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_86_1(%rip), %ymm7, %ymm5 -vpand mask_87_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_88_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_89_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_90_1(%rip), %ymm7, %ymm5 -vpand mask_91_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_92_1(%rip), %ymm8, %ymm5 -vpand mask_93_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_94_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_95_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_96_1(%rip), %ymm8, %ymm5 -vpand mask_97_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vmovdqa 32(%rsi), %ymm0 -vpshufb mask_98_1(%rip), %ymm0, %ymm5 -vpand mask_99_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_100_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_101_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm8 -vpshufb mask_102_1(%rip), %ymm8, %ymm5 -vpand mask_103_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_104_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_105_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_106_1(%rip), %ymm8, %ymm5 -vpand mask_107_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_108_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm0, %ymm5 -vpsllq $1, %ymm0, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_109_1(%rip), %ymm6, %ymm5 -vpand mask_110_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_111_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_112_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_113_1(%rip), %ymm6, %ymm5 -vpand mask_114_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_115_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_116_1(%rip), %ymm8, %ymm5 -vpand mask_117_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_118_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_119_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm6, %ymm7 -vpshufb mask_120_1(%rip), %ymm7, %ymm5 -vpand mask_121_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_122_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_123_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_124_1(%rip), %ymm8, %ymm5 -vpand mask_125_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_126_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_127_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_128_1(%rip), %ymm8, %ymm5 -vpand mask_129_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_130_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $62, %ymm6, %ymm5 -vpsllq $2, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_131_1(%rip), %ymm7, %ymm5 -vpand mask_132_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_133_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_134_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_135_1(%rip), %ymm7, %ymm5 -vpand mask_136_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_137_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_138_1(%rip), %ymm8, %ymm5 -vpand mask_139_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_140_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_141_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_142_1(%rip), %ymm8, %ymm5 -vpand mask_143_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm7, %ymm5 -vpsllq $1, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_144_1(%rip), %ymm6, %ymm5 -vpand mask_145_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_146_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_147_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_148_1(%rip), %ymm6, %ymm5 -vpand mask_149_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_150_1(%rip), %ymm8, %ymm5 -vpand mask_151_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_152_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_153_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_154_1(%rip), %ymm8, %ymm5 -vpand mask_155_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpsllq $1, %ymm6, %ymm7 -vpshufb mask_156_1(%rip), %ymm7, %ymm5 -vpand mask_157_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_158_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_159_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_160_1(%rip), %ymm7, %ymm5 -vpand mask_161_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_162_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_163_1(%rip), %ymm8, %ymm5 -vpand mask_164_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_165_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_166_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $62, %ymm6, %ymm5 -vpsllq $2, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_167_1(%rip), %ymm7, %ymm5 -vpand mask_168_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_169_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_170_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_171_1(%rip), %ymm7, %ymm5 -vpand mask_172_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_173_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_174_1(%rip), %ymm8, %ymm5 -vpand mask_175_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_176_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_177_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_178_1(%rip), %ymm8, %ymm5 -vpand mask_179_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_180_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsllq $1, %ymm7, %ymm6 -vpshufb mask_181_1(%rip), %ymm6, %ymm5 -vpand mask_182_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_183_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_184_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_185_1(%rip), %ymm6, %ymm5 -vpand mask_186_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_187_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_188_1(%rip), %ymm8, %ymm5 -vpand mask_189_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_190_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_191_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vmovdqa 64(%rsi), %ymm0 -vpshufb mask_192_1(%rip), %ymm0, %ymm5 -vpand mask_193_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_194_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_195_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_196_1(%rip), %ymm0, %ymm5 -vpand mask_197_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm8 -vpshufb mask_198_1(%rip), %ymm8, %ymm5 -vpand mask_199_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_200_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_201_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_202_1(%rip), %ymm8, %ymm5 -vpand mask_203_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_204_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsllq $1, %ymm0, %ymm6 -vpshufb mask_205_1(%rip), %ymm6, %ymm5 -vpand mask_206_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_207_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_208_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_209_1(%rip), %ymm6, %ymm5 -vpand mask_210_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_211_1(%rip), %ymm8, %ymm5 -vpand mask_212_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_213_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_214_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_215_1(%rip), %ymm8, %ymm5 -vpand mask_216_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_217_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsllq $2, %ymm0, %ymm6 -vpshufb mask_218_1(%rip), %ymm6, %ymm5 -vpand mask_219_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_220_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_221_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_222_1(%rip), %ymm6, %ymm5 -vpand mask_223_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_224_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_225_1(%rip), %ymm8, %ymm5 -vpand mask_226_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_227_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_228_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $61, %ymm0, %ymm5 -vpsllq $3, %ymm0, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_229_1(%rip), %ymm6, %ymm5 -vpand mask_230_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_231_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_232_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_233_1(%rip), %ymm6, %ymm5 -vpand mask_234_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_235_1(%rip), %ymm8, %ymm5 -vpand mask_236_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_237_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_238_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm6, %ymm7 -vpshufb mask_239_1(%rip), %ymm7, %ymm5 -vpand mask_240_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_241_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_242_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_243_1(%rip), %ymm8, %ymm5 -vpand mask_244_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_245_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_246_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $62, %ymm6, %ymm5 -vpsllq $2, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_247_1(%rip), %ymm7, %ymm5 -vpand mask_248_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_249_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_250_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_251_1(%rip), %ymm8, %ymm5 -vpand mask_252_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_253_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_254_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_255_1(%rip), %ymm8, %ymm5 -vpand mask_256_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsrlq $63, %ymm7, %ymm5 -vpsllq $1, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_257_1(%rip), %ymm6, %ymm5 -vpand mask_258_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_259_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_260_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_261_1(%rip), %ymm6, %ymm5 -vpand mask_262_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_263_1(%rip), %ymm8, %ymm5 -vpand mask_264_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_265_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_266_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_267_1(%rip), %ymm8, %ymm5 -vpand mask_268_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpsllq $1, %ymm6, %ymm7 -vpshufb mask_269_1(%rip), %ymm7, %ymm5 -vpand mask_270_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_271_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_272_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_273_1(%rip), %ymm7, %ymm5 -vpand mask_274_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_275_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_276_1(%rip), %ymm8, %ymm5 -vpand mask_277_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_278_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_279_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vmovdqa %ymm1, 0(%rdi) -vmovdqa %ymm2, 32(%rdi) -vmovdqa %ymm3, 64(%rdi) -ret diff --git a/src/kem/ntru/ntruhps2048677/avx2/vec32_sample_iid.s b/src/kem/ntru/ntruhps2048677/avx2/vec32_sample_iid.s deleted file mode 100644 index f3af1d16..00000000 --- a/src/kem/ntru/ntruhps2048677/avx2/vec32_sample_iid.s +++ /dev/null @@ -1,1066 +0,0 @@ -.data -.p2align 5 -cast8_to_16: -.byte 255 -.byte 0 -.byte 255 -.byte 1 -.byte 255 -.byte 2 -.byte 255 -.byte 3 -.byte 255 -.byte 4 -.byte 255 -.byte 5 -.byte 255 -.byte 6 -.byte 255 -.byte 7 -.byte 255 -.byte 0 -.byte 255 -.byte 1 -.byte 255 -.byte 2 -.byte 255 -.byte 3 -.byte 255 -.byte 4 -.byte 255 -.byte 5 -.byte 255 -.byte 6 -.byte 255 -.byte 7 -mask_ff: -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -mask_f: -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -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 -.text -.global PQCLEAN_NTRUHPS2048677_AVX2_vec32_sample_iid -.global _PQCLEAN_NTRUHPS2048677_AVX2_vec32_sample_iid -PQCLEAN_NTRUHPS2048677_AVX2_vec32_sample_iid: -_PQCLEAN_NTRUHPS2048677_AVX2_vec32_sample_iid: -vmovdqa 0(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 32(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 64(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 96(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 128(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 160(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 192(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 224(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 256(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 288(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 320(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 352(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 384(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 416(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 448(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 480(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 512(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 544(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 576(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 608(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 640(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 672(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -movw $0, 1352(%rdi) -movw $0, 1354(%rdi) -movw $0, 1356(%rdi) -movw $0, 1358(%rdi) -movw $0, 1360(%rdi) -movw $0, 1362(%rdi) -movw $0, 1364(%rdi) -movw $0, 1366(%rdi) -movw $0, 1368(%rdi) -movw $0, 1370(%rdi) -movw $0, 1372(%rdi) -movw $0, 1374(%rdi) -movw $0, 1376(%rdi) -movw $0, 1378(%rdi) -movw $0, 1380(%rdi) -movw $0, 1382(%rdi) -movw $0, 1384(%rdi) -movw $0, 1386(%rdi) -movw $0, 1388(%rdi) -movw $0, 1390(%rdi) -movw $0, 1392(%rdi) -movw $0, 1394(%rdi) -movw $0, 1396(%rdi) -movw $0, 1398(%rdi) -movw $0, 1400(%rdi) -movw $0, 1402(%rdi) -movw $0, 1404(%rdi) -movw $0, 1406(%rdi) -ret diff --git a/src/kem/ntru/ntruhps2048677/clean/CMakeLists.txt b/src/kem/ntru/ntruhps2048677/clean/CMakeLists.txt deleted file mode 100644 index 4f3e87ec..00000000 --- a/src/kem/ntru/ntruhps2048677/clean/CMakeLists.txt +++ /dev/null @@ -1,20 +0,0 @@ -set( - SRC_CLEAN_NTRUHPS2048677 - cmov.c - crypto_sort_int32.c - kem.c - owcpa.c - pack3.c - packq.c - poly.c - poly_lift.c - poly_mod.c - poly_r2_inv.c - poly_rq_mul.c - poly_s3_inv.c - sample.c - sample_iid.c -) - -define_kem_alg(ntruhps2048677_clean - PQCLEAN_NTRUHPS2048677_CLEAN "${SRC_CLEAN_NTRUHPS2048677}" "${CMAKE_CURRENT_SOURCE_DIR}") diff --git a/src/kem/ntru/ntruhps2048677/clean/api.h b/src/kem/ntru/ntruhps2048677/clean/api.h deleted file mode 100644 index f186494e..00000000 --- a/src/kem/ntru/ntruhps2048677/clean/api.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef PQCLEAN_NTRUHPS2048677_CLEAN_API_H -#define PQCLEAN_NTRUHPS2048677_CLEAN_API_H - -#include - -#define PQCLEAN_NTRUHPS2048677_CLEAN_CRYPTO_SECRETKEYBYTES 1234 -#define PQCLEAN_NTRUHPS2048677_CLEAN_CRYPTO_PUBLICKEYBYTES 930 -#define PQCLEAN_NTRUHPS2048677_CLEAN_CRYPTO_CIPHERTEXTBYTES 930 -#define PQCLEAN_NTRUHPS2048677_CLEAN_CRYPTO_BYTES 32 - -#define PQCLEAN_NTRUHPS2048677_CLEAN_CRYPTO_ALGNAME "ntruhps2048677" - -int PQCLEAN_NTRUHPS2048677_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk); - -int PQCLEAN_NTRUHPS2048677_CLEAN_crypto_kem_enc(uint8_t *c, uint8_t *k, const uint8_t *pk); - -int PQCLEAN_NTRUHPS2048677_CLEAN_crypto_kem_dec(uint8_t *k, const uint8_t *c, const uint8_t *sk); - -#endif diff --git a/src/kem/ntru/ntruhps2048677/clean/cmov.c b/src/kem/ntru/ntruhps2048677/clean/cmov.c deleted file mode 100644 index 30bf1e30..00000000 --- a/src/kem/ntru/ntruhps2048677/clean/cmov.c +++ /dev/null @@ -1,11 +0,0 @@ -#include "cmov.h" - -/* b = 1 means mov, b = 0 means don't mov*/ -void PQCLEAN_NTRUHPS2048677_CLEAN_cmov(unsigned char *r, const unsigned char *x, size_t len, unsigned char b) { - size_t i; - - b = (~b + 1); - for (i = 0; i < len; i++) { - r[i] ^= b & (x[i] ^ r[i]); - } -} diff --git a/src/kem/ntru/ntruhps2048677/clean/cmov.h b/src/kem/ntru/ntruhps2048677/clean/cmov.h deleted file mode 100644 index 5e65aaf9..00000000 --- a/src/kem/ntru/ntruhps2048677/clean/cmov.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef VERIFY_H -#define VERIFY_H - -#include "params.h" - -#include - -void PQCLEAN_NTRUHPS2048677_CLEAN_cmov(unsigned char *r, const unsigned char *x, size_t len, unsigned char b); - -#endif diff --git a/src/kem/ntru/ntruhps2048677/clean/crypto_sort_int32.c b/src/kem/ntru/ntruhps2048677/clean/crypto_sort_int32.c deleted file mode 100644 index 99b31d1c..00000000 --- a/src/kem/ntru/ntruhps2048677/clean/crypto_sort_int32.c +++ /dev/null @@ -1,86 +0,0 @@ -// Based on supercop-20190110/crypto_sort/int32/x86 - -#include "crypto_sort_int32.h" - -#include -#define int32 int32_t - -#define int32_MINMAX(a,b) \ - do { \ - int32_t ab = (b) ^ (a); \ - int32_t c = (int32_t)((int64_t)(b) - (int64_t)(a)); \ - c ^= ab & (c ^ (b)); \ - c >>= 31; \ - c &= ab; \ - (a) ^= c; \ - (b) ^= c; \ - } while(0) - -/* assume 2 <= n <= 0x40000000 */ -void PQCLEAN_NTRUHPS2048677_CLEAN_crypto_sort_int32(int32 *array, size_t n) { - size_t top, p, q, r, i, j; - int32 *x = array; - - top = 1; - while (top < n - top) { - top += top; - } - - for (p = top; p >= 1; p >>= 1) { - i = 0; - while (i + 2 * p <= n) { - for (j = i; j < i + p; ++j) { - int32_MINMAX(x[j], x[j + p]); - } - i += 2 * p; - } - for (j = i; j < n - p; ++j) { - int32_MINMAX(x[j], x[j + p]); - } - - i = 0; - j = 0; - for (q = top; q > p; q >>= 1) { - if (j != i) { - for (;;) { - if (j == n - q) { - goto done; - } - int32 a = x[j + p]; - for (r = q; r > p; r >>= 1) { - int32_MINMAX(a, x[j + r]); - } - x[j + p] = a; - ++j; - if (j == i + p) { - i += 2 * p; - break; - } - } - } - while (i + p <= n - q) { - for (j = i; j < i + p; ++j) { - int32 a = x[j + p]; - for (r = q; r > p; r >>= 1) { - int32_MINMAX(a, x[j + r]); - } - x[j + p] = a; - } - i += 2 * p; - } - /* now i + p > n - q */ - j = i; - while (j < n - q) { - int32 a = x[j + p]; - for (r = q; r > p; r >>= 1) { - int32_MINMAX(a, x[j + r]); - } - x[j + p] = a; - ++j; - } - -done: - ; - } - } -} diff --git a/src/kem/ntru/ntruhps2048677/clean/crypto_sort_int32.h b/src/kem/ntru/ntruhps2048677/clean/crypto_sort_int32.h deleted file mode 100644 index 1fa89e4b..00000000 --- a/src/kem/ntru/ntruhps2048677/clean/crypto_sort_int32.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef CRYPTO_SORT -#define CRYPTO_SORT - -#include "params.h" - -#include -#include - -void PQCLEAN_NTRUHPS2048677_CLEAN_crypto_sort_int32(int32_t *array, size_t n); - -#endif diff --git a/src/kem/ntru/ntruhps2048677/clean/kem.c b/src/kem/ntru/ntruhps2048677/clean/kem.c deleted file mode 100644 index 8378dc25..00000000 --- a/src/kem/ntru/ntruhps2048677/clean/kem.c +++ /dev/null @@ -1,63 +0,0 @@ -#include "api.h" -#include "cmov.h" -#include "fips202.h" -#include "owcpa.h" -#include "params.h" -#include "randombytes.h" -#include "sample.h" - -// API FUNCTIONS -int PQCLEAN_NTRUHPS2048677_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk) { - uint8_t seed[NTRU_SAMPLE_FG_BYTES]; - - randombytes(seed, NTRU_SAMPLE_FG_BYTES); - PQCLEAN_NTRUHPS2048677_CLEAN_owcpa_keypair(pk, sk, seed); - - randombytes(sk + NTRU_OWCPA_SECRETKEYBYTES, NTRU_PRFKEYBYTES); - - return 0; -} - -int PQCLEAN_NTRUHPS2048677_CLEAN_crypto_kem_enc(uint8_t *c, uint8_t *k, const uint8_t *pk) { - poly r, m; - uint8_t rm[NTRU_OWCPA_MSGBYTES]; - uint8_t rm_seed[NTRU_SAMPLE_RM_BYTES]; - - randombytes(rm_seed, NTRU_SAMPLE_RM_BYTES); - - PQCLEAN_NTRUHPS2048677_CLEAN_sample_rm(&r, &m, rm_seed); - - PQCLEAN_NTRUHPS2048677_CLEAN_poly_S3_tobytes(rm, &r); - PQCLEAN_NTRUHPS2048677_CLEAN_poly_S3_tobytes(rm + NTRU_PACK_TRINARY_BYTES, &m); - sha3_256(k, rm, NTRU_OWCPA_MSGBYTES); - - PQCLEAN_NTRUHPS2048677_CLEAN_poly_Z3_to_Zq(&r); - PQCLEAN_NTRUHPS2048677_CLEAN_owcpa_enc(c, &r, &m, pk); - - return 0; -} - -int PQCLEAN_NTRUHPS2048677_CLEAN_crypto_kem_dec(uint8_t *k, const uint8_t *c, const uint8_t *sk) { - int i, fail; - uint8_t rm[NTRU_OWCPA_MSGBYTES]; - uint8_t buf[NTRU_PRFKEYBYTES + NTRU_CIPHERTEXTBYTES]; - - fail = PQCLEAN_NTRUHPS2048677_CLEAN_owcpa_dec(rm, c, sk); - /* If fail = 0 then c = Enc(h, rm). There is no need to re-encapsulate. */ - /* See comment in PQCLEAN_NTRUHPS2048677_CLEAN_owcpa_dec for details. */ - - sha3_256(k, rm, NTRU_OWCPA_MSGBYTES); - - /* shake(secret PRF key || input ciphertext) */ - for (i = 0; i < NTRU_PRFKEYBYTES; i++) { - buf[i] = sk[i + NTRU_OWCPA_SECRETKEYBYTES]; - } - for (i = 0; i < NTRU_CIPHERTEXTBYTES; i++) { - buf[NTRU_PRFKEYBYTES + i] = c[i]; - } - sha3_256(rm, buf, NTRU_PRFKEYBYTES + NTRU_CIPHERTEXTBYTES); - - PQCLEAN_NTRUHPS2048677_CLEAN_cmov(k, rm, NTRU_SHAREDKEYBYTES, (unsigned char) fail); - - return 0; -} diff --git a/src/kem/ntru/ntruhps2048677/clean/owcpa.c b/src/kem/ntru/ntruhps2048677/clean/owcpa.c deleted file mode 100644 index 2128b054..00000000 --- a/src/kem/ntru/ntruhps2048677/clean/owcpa.c +++ /dev/null @@ -1,183 +0,0 @@ -#include "owcpa.h" -#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) { - /* 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; - uint32_t t = 0; - uint16_t c; - 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 |= 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, 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; - uint32_t t = 0; - uint16_t ps = 0; - uint16_t ms = 0; - for (i = 0; i < NTRU_N; i++) { - ps += m->coeffs[i] & 1; - ms += m->coeffs[i] & 2; - } - 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, - unsigned char *sk, - const unsigned char seed[NTRU_SAMPLE_FG_BYTES]) { - int i; - - poly x1, x2, x3, x4, x5; - - poly *f = &x1, *g = &x2, *invf_mod3 = &x3; - poly *gf = &x3, *invgf = &x4, *tmp = &x5; - poly *invh = &x3, *h = &x3; - - PQCLEAN_NTRUHPS2048677_CLEAN_sample_fg(f, g, seed); - - PQCLEAN_NTRUHPS2048677_CLEAN_poly_S3_inv(invf_mod3, f); - PQCLEAN_NTRUHPS2048677_CLEAN_poly_S3_tobytes(sk, f); - PQCLEAN_NTRUHPS2048677_CLEAN_poly_S3_tobytes(sk + NTRU_PACK_TRINARY_BYTES, invf_mod3); - - /* Lift coeffs of f and g from Z_p to Z_q */ - PQCLEAN_NTRUHPS2048677_CLEAN_poly_Z3_to_Zq(f); - PQCLEAN_NTRUHPS2048677_CLEAN_poly_Z3_to_Zq(g); - - - /* g = 3*g */ - for (i = 0; i < NTRU_N; i++) { - g->coeffs[i] = 3 * g->coeffs[i]; - } - - PQCLEAN_NTRUHPS2048677_CLEAN_poly_Rq_mul(gf, g, f); - - PQCLEAN_NTRUHPS2048677_CLEAN_poly_Rq_inv(invgf, gf); - - PQCLEAN_NTRUHPS2048677_CLEAN_poly_Rq_mul(tmp, invgf, f); - PQCLEAN_NTRUHPS2048677_CLEAN_poly_Sq_mul(invh, tmp, f); - PQCLEAN_NTRUHPS2048677_CLEAN_poly_Sq_tobytes(sk + 2 * NTRU_PACK_TRINARY_BYTES, invh); - - PQCLEAN_NTRUHPS2048677_CLEAN_poly_Rq_mul(tmp, invgf, g); - PQCLEAN_NTRUHPS2048677_CLEAN_poly_Rq_mul(h, tmp, g); - PQCLEAN_NTRUHPS2048677_CLEAN_poly_Rq_sum_zero_tobytes(pk, h); -} - - -void PQCLEAN_NTRUHPS2048677_CLEAN_owcpa_enc(unsigned char *c, - const poly *r, - const poly *m, - const unsigned char *pk) { - int i; - poly x1, x2; - poly *h = &x1, *liftm = &x1; - poly *ct = &x2; - - PQCLEAN_NTRUHPS2048677_CLEAN_poly_Rq_sum_zero_frombytes(h, pk); - - PQCLEAN_NTRUHPS2048677_CLEAN_poly_Rq_mul(ct, r, h); - - PQCLEAN_NTRUHPS2048677_CLEAN_poly_lift(liftm, m); - for (i = 0; i < NTRU_N; i++) { - ct->coeffs[i] = ct->coeffs[i] + liftm->coeffs[i]; - } - - PQCLEAN_NTRUHPS2048677_CLEAN_poly_Rq_sum_zero_tobytes(c, ct); -} - -int PQCLEAN_NTRUHPS2048677_CLEAN_owcpa_dec(unsigned char *rm, - const unsigned char *ciphertext, - const unsigned char *secretkey) { - int i; - int fail; - poly x1, x2, x3, x4; - - poly *c = &x1, *f = &x2, *cf = &x3; - poly *mf = &x2, *finv3 = &x3, *m = &x4; - poly *liftm = &x2, *invh = &x3, *r = &x4; - poly *b = &x1; - - PQCLEAN_NTRUHPS2048677_CLEAN_poly_Rq_sum_zero_frombytes(c, ciphertext); - PQCLEAN_NTRUHPS2048677_CLEAN_poly_S3_frombytes(f, secretkey); - PQCLEAN_NTRUHPS2048677_CLEAN_poly_Z3_to_Zq(f); - - PQCLEAN_NTRUHPS2048677_CLEAN_poly_Rq_mul(cf, c, f); - PQCLEAN_NTRUHPS2048677_CLEAN_poly_Rq_to_S3(mf, cf); - - PQCLEAN_NTRUHPS2048677_CLEAN_poly_S3_frombytes(finv3, secretkey + NTRU_PACK_TRINARY_BYTES); - PQCLEAN_NTRUHPS2048677_CLEAN_poly_S3_mul(m, mf, finv3); - PQCLEAN_NTRUHPS2048677_CLEAN_poly_S3_tobytes(rm + NTRU_PACK_TRINARY_BYTES, m); - - fail = 0; - - /* 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 */ - /* r (defined as b/h mod (q, Phi_n)) and m are in the message space. */ - /* (m can take any value in S3 in NTRU_HRSS) */ - fail |= owcpa_check_m(m); - - /* b = c - Lift(m) mod (q, x^n - 1) */ - PQCLEAN_NTRUHPS2048677_CLEAN_poly_lift(liftm, m); - for (i = 0; i < NTRU_N; i++) { - b->coeffs[i] = c->coeffs[i] - liftm->coeffs[i]; - } - - /* r = b / h mod (q, Phi_n) */ - PQCLEAN_NTRUHPS2048677_CLEAN_poly_Sq_frombytes(invh, secretkey + 2 * NTRU_PACK_TRINARY_BYTES); - PQCLEAN_NTRUHPS2048677_CLEAN_poly_Sq_mul(r, b, invh); - - /* NOTE: Our definition of r as b/h mod (q, Phi_n) follows Figure 4 of */ - /* [Sch18] https://eprint.iacr.org/2018/1174/20181203:032458. */ - /* This differs from Figure 10 of Saito--Xagawa--Yamakawa */ - /* [SXY17] https://eprint.iacr.org/2017/1005/20180516:055500 */ - /* where r gets a final reduction modulo p. */ - /* We need this change to use Proposition 1 of [Sch18]. */ - - /* Proposition 1 of [Sch18] shows that re-encryption with (r,m) yields c. */ - /* if and only if fail==0 after the following call to owcpa_check_r */ - /* The procedure given in Fig. 8 of [Sch18] can be skipped because we have */ - /* c(1) = 0 due to the use of poly_Rq_sum_zero_{to,from}bytes. */ - fail |= owcpa_check_r(r); - - PQCLEAN_NTRUHPS2048677_CLEAN_poly_trinary_Zq_to_Z3(r); - PQCLEAN_NTRUHPS2048677_CLEAN_poly_S3_tobytes(rm, r); - - return fail; -} diff --git a/src/kem/ntru/ntruhps2048677/clean/owcpa.h b/src/kem/ntru/ntruhps2048677/clean/owcpa.h deleted file mode 100644 index 3b75ba40..00000000 --- a/src/kem/ntru/ntruhps2048677/clean/owcpa.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef OWCPA_H -#define OWCPA_H - -#include "params.h" -#include "poly.h" - -void PQCLEAN_NTRUHPS2048677_CLEAN_owcpa_keypair(unsigned char *pk, - unsigned char *sk, - const unsigned char seed[NTRU_SAMPLE_FG_BYTES]); - -void PQCLEAN_NTRUHPS2048677_CLEAN_owcpa_enc(unsigned char *c, - const poly *r, - const poly *m, - const unsigned char *pk); - -int PQCLEAN_NTRUHPS2048677_CLEAN_owcpa_dec(unsigned char *rm, - const unsigned char *ciphertext, - const unsigned char *secretkey); -#endif diff --git a/src/kem/ntru/ntruhps2048677/clean/pack3.c b/src/kem/ntru/ntruhps2048677/clean/pack3.c deleted file mode 100644 index dac82872..00000000 --- a/src/kem/ntru/ntruhps2048677/clean/pack3.c +++ /dev/null @@ -1,46 +0,0 @@ -#include "poly.h" - -void PQCLEAN_NTRUHPS2048677_CLEAN_poly_S3_tobytes(unsigned char msg[NTRU_OWCPA_MSGBYTES], const poly *a) { - int i; - unsigned char c; - int j; - - for (i = 0; i < NTRU_PACK_DEG / 5; i++) { - c = a->coeffs[5 * i + 4] & 255; - c = (3 * c + a->coeffs[5 * i + 3]) & 255; - c = (3 * c + a->coeffs[5 * i + 2]) & 255; - c = (3 * c + a->coeffs[5 * i + 1]) & 255; - c = (3 * c + a->coeffs[5 * i + 0]) & 255; - msg[i] = c; - } - i = NTRU_PACK_DEG / 5; - c = 0; - for (j = NTRU_PACK_DEG - (5 * i) - 1; j >= 0; j--) { - c = (3 * c + a->coeffs[5 * i + j]) & 255; - } - msg[i] = c; -} - -void PQCLEAN_NTRUHPS2048677_CLEAN_poly_S3_frombytes(poly *r, const unsigned char msg[NTRU_OWCPA_MSGBYTES]) { - int i; - unsigned char c; - int j; - - for (i = 0; i < NTRU_PACK_DEG / 5; i++) { - c = msg[i]; - r->coeffs[5 * i + 0] = c; - r->coeffs[5 * i + 1] = c * 171 >> 9; // this is division by 3 - r->coeffs[5 * i + 2] = c * 57 >> 9; // division by 3^2 - r->coeffs[5 * i + 3] = c * 19 >> 9; // division by 3^3 - r->coeffs[5 * i + 4] = c * 203 >> 14; // etc. - } - i = NTRU_PACK_DEG / 5; - c = msg[i]; - for (j = 0; (5 * i + j) < NTRU_PACK_DEG; j++) { - r->coeffs[5 * i + j] = c; - c = c * 171 >> 9; - } - r->coeffs[NTRU_N - 1] = 0; - PQCLEAN_NTRUHPS2048677_CLEAN_poly_mod_3_Phi_n(r); -} - diff --git a/src/kem/ntru/ntruhps2048677/clean/packq.c b/src/kem/ntru/ntruhps2048677/clean/packq.c deleted file mode 100644 index 1b60c3af..00000000 --- a/src/kem/ntru/ntruhps2048677/clean/packq.c +++ /dev/null @@ -1,93 +0,0 @@ -#include "poly.h" - -void PQCLEAN_NTRUHPS2048677_CLEAN_poly_Sq_tobytes(unsigned char *r, const poly *a) { - int i, j; - uint16_t t[8]; - - for (i = 0; i < NTRU_PACK_DEG / 8; i++) { - for (j = 0; j < 8; j++) { - t[j] = MODQ(a->coeffs[8 * i + j]); - } - - r[11 * i + 0] = (unsigned char) ( t[0] & 0xff); - r[11 * i + 1] = (unsigned char) ((t[0] >> 8) | ((t[1] & 0x1f) << 3)); - r[11 * i + 2] = (unsigned char) ((t[1] >> 5) | ((t[2] & 0x03) << 6)); - r[11 * i + 3] = (unsigned char) ((t[2] >> 2) & 0xff); - r[11 * i + 4] = (unsigned char) ((t[2] >> 10) | ((t[3] & 0x7f) << 1)); - r[11 * i + 5] = (unsigned char) ((t[3] >> 7) | ((t[4] & 0x0f) << 4)); - r[11 * i + 6] = (unsigned char) ((t[4] >> 4) | ((t[5] & 0x01) << 7)); - r[11 * i + 7] = (unsigned char) ((t[5] >> 1) & 0xff); - r[11 * i + 8] = (unsigned char) ((t[5] >> 9) | ((t[6] & 0x3f) << 2)); - r[11 * i + 9] = (unsigned char) ((t[6] >> 6) | ((t[7] & 0x07) << 5)); - r[11 * i + 10] = (unsigned char) ((t[7] >> 3)); - } - - for (j = 0; j < NTRU_PACK_DEG - 8 * i; j++) { - t[j] = MODQ(a->coeffs[8 * i + j]); - } - for (; j < 8; j++) { - t[j] = 0; - } - - switch (NTRU_PACK_DEG & 0x07) { - // cases 0 and 6 are impossible since 2 generates (Z/n)* and - // p mod 8 in {1, 7} implies that 2 is a quadratic residue. - case 4: - r[11 * i + 0] = (unsigned char) (t[0] & 0xff); - r[11 * i + 1] = (unsigned char) (t[0] >> 8) | ((t[1] & 0x1f) << 3); - r[11 * i + 2] = (unsigned char) (t[1] >> 5) | ((t[2] & 0x03) << 6); - r[11 * i + 3] = (unsigned char) (t[2] >> 2) & 0xff; - r[11 * i + 4] = (unsigned char) (t[2] >> 10) | ((t[3] & 0x7f) << 1); - r[11 * i + 5] = (unsigned char) (t[3] >> 7) | ((t[4] & 0x0f) << 4); - break; - case 2: - r[11 * i + 0] = (unsigned char) (t[0] & 0xff); - r[11 * i + 1] = (unsigned char) (t[0] >> 8) | ((t[1] & 0x1f) << 3); - r[11 * i + 2] = (unsigned char) (t[1] >> 5) | ((t[2] & 0x03) << 6); - break; - } -} - -void PQCLEAN_NTRUHPS2048677_CLEAN_poly_Sq_frombytes(poly *r, const unsigned char *a) { - int i; - for (i = 0; i < NTRU_PACK_DEG / 8; i++) { - r->coeffs[8 * i + 0] = (a[11 * i + 0] >> 0) | (((uint16_t)a[11 * i + 1] & 0x07) << 8); - r->coeffs[8 * i + 1] = (a[11 * i + 1] >> 3) | (((uint16_t)a[11 * i + 2] & 0x3f) << 5); - r->coeffs[8 * i + 2] = (a[11 * i + 2] >> 6) | (((uint16_t)a[11 * i + 3] & 0xff) << 2) | (((uint16_t)a[11 * i + 4] & 0x01) << 10); - r->coeffs[8 * i + 3] = (a[11 * i + 4] >> 1) | (((uint16_t)a[11 * i + 5] & 0x0f) << 7); - r->coeffs[8 * i + 4] = (a[11 * i + 5] >> 4) | (((uint16_t)a[11 * i + 6] & 0x7f) << 4); - r->coeffs[8 * i + 5] = (a[11 * i + 6] >> 7) | (((uint16_t)a[11 * i + 7] & 0xff) << 1) | (((uint16_t)a[11 * i + 8] & 0x03) << 9); - r->coeffs[8 * i + 6] = (a[11 * i + 8] >> 2) | (((uint16_t)a[11 * i + 9] & 0x1f) << 6); - r->coeffs[8 * i + 7] = (a[11 * i + 9] >> 5) | (((uint16_t)a[11 * i + 10] & 0xff) << 3); - } - switch (NTRU_PACK_DEG & 0x07) { - // cases 0 and 6 are impossible since 2 generates (Z/n)* and - // p mod 8 in {1, 7} implies that 2 is a quadratic residue. - case 4: - r->coeffs[8 * i + 0] = (a[11 * i + 0] >> 0) | (((uint16_t)a[11 * i + 1] & 0x07) << 8); - r->coeffs[8 * i + 1] = (a[11 * i + 1] >> 3) | (((uint16_t)a[11 * i + 2] & 0x3f) << 5); - r->coeffs[8 * i + 2] = (a[11 * i + 2] >> 6) | (((uint16_t)a[11 * i + 3] & 0xff) << 2) | (((uint16_t)a[11 * i + 4] & 0x01) << 10); - r->coeffs[8 * i + 3] = (a[11 * i + 4] >> 1) | (((uint16_t)a[11 * i + 5] & 0x0f) << 7); - break; - case 2: - r->coeffs[8 * i + 0] = (a[11 * i + 0] >> 0) | (((uint16_t)a[11 * i + 1] & 0x07) << 8); - r->coeffs[8 * i + 1] = (a[11 * i + 1] >> 3) | (((uint16_t)a[11 * i + 2] & 0x3f) << 5); - break; - } - r->coeffs[NTRU_N - 1] = 0; -} - -void PQCLEAN_NTRUHPS2048677_CLEAN_poly_Rq_sum_zero_tobytes(unsigned char *r, const poly *a) { - PQCLEAN_NTRUHPS2048677_CLEAN_poly_Sq_tobytes(r, a); -} - -void PQCLEAN_NTRUHPS2048677_CLEAN_poly_Rq_sum_zero_frombytes(poly *r, const unsigned char *a) { - int i; - PQCLEAN_NTRUHPS2048677_CLEAN_poly_Sq_frombytes(r, a); - - /* Set r[n-1] so that the sum of coefficients is zero mod q */ - r->coeffs[NTRU_N - 1] = 0; - for (i = 0; i < NTRU_PACK_DEG; i++) { - r->coeffs[NTRU_N - 1] -= r->coeffs[i]; - } -} diff --git a/src/kem/ntru/ntruhps2048677/clean/params.h b/src/kem/ntru/ntruhps2048677/clean/params.h deleted file mode 100644 index 0ef8ab54..00000000 --- a/src/kem/ntru/ntruhps2048677/clean/params.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef PARAMS_H -#define PARAMS_H - -#define NTRU_HPS -#define NTRU_N 677 -#define NTRU_LOGQ 11 - - -/* Do not modify below this line */ - -#define PAD32(X) ((((X) + 31)/32)*32) - -#define NTRU_Q (1 << NTRU_LOGQ) -#define NTRU_WEIGHT (NTRU_Q/8 - 2) - -#define NTRU_SEEDBYTES 32 -#define NTRU_PRFKEYBYTES 32 -#define NTRU_SHAREDKEYBYTES 32 - -#define NTRU_SAMPLE_IID_BYTES (NTRU_N-1) -#define NTRU_SAMPLE_FT_BYTES ((30*(NTRU_N-1)+7)/8) -#define NTRU_SAMPLE_FG_BYTES (NTRU_SAMPLE_IID_BYTES+NTRU_SAMPLE_FT_BYTES) -#define NTRU_SAMPLE_RM_BYTES (NTRU_SAMPLE_IID_BYTES+NTRU_SAMPLE_FT_BYTES) - -#define NTRU_PACK_DEG (NTRU_N-1) -#define NTRU_PACK_TRINARY_BYTES ((NTRU_PACK_DEG+4)/5) - -#define NTRU_OWCPA_MSGBYTES (2*NTRU_PACK_TRINARY_BYTES) -#define NTRU_OWCPA_PUBLICKEYBYTES ((NTRU_LOGQ*NTRU_PACK_DEG+7)/8) -#define NTRU_OWCPA_SECRETKEYBYTES (2*NTRU_PACK_TRINARY_BYTES + NTRU_OWCPA_PUBLICKEYBYTES) -#define NTRU_OWCPA_BYTES ((NTRU_LOGQ*NTRU_PACK_DEG+7)/8) - -#define NTRU_PUBLICKEYBYTES (NTRU_OWCPA_PUBLICKEYBYTES) -#define NTRU_SECRETKEYBYTES (NTRU_OWCPA_SECRETKEYBYTES + NTRU_PRFKEYBYTES) -#define NTRU_CIPHERTEXTBYTES (NTRU_OWCPA_BYTES) - -#endif diff --git a/src/kem/ntru/ntruhps2048677/clean/poly.c b/src/kem/ntru/ntruhps2048677/clean/poly.c deleted file mode 100644 index 6ca3a7c7..00000000 --- a/src/kem/ntru/ntruhps2048677/clean/poly.c +++ /dev/null @@ -1,75 +0,0 @@ -#include "poly.h" - -/* Map {0, 1, 2} -> {0,1,q-1} in place */ -void PQCLEAN_NTRUHPS2048677_CLEAN_poly_Z3_to_Zq(poly *r) { - int i; - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = r->coeffs[i] | ((-(r->coeffs[i] >> 1)) & (NTRU_Q - 1)); - } -} - -/* Map {0, 1, q-1} -> {0,1,2} in place */ -void PQCLEAN_NTRUHPS2048677_CLEAN_poly_trinary_Zq_to_Z3(poly *r) { - int i; - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = MODQ(r->coeffs[i]); - r->coeffs[i] = 3 & (r->coeffs[i] ^ (r->coeffs[i] >> (NTRU_LOGQ - 1))); - } -} - -void PQCLEAN_NTRUHPS2048677_CLEAN_poly_Sq_mul(poly *r, const poly *a, const poly *b) { - PQCLEAN_NTRUHPS2048677_CLEAN_poly_Rq_mul(r, a, b); - PQCLEAN_NTRUHPS2048677_CLEAN_poly_mod_q_Phi_n(r); -} - -void PQCLEAN_NTRUHPS2048677_CLEAN_poly_S3_mul(poly *r, const poly *a, const poly *b) { - int i; - - /* Our S3 multiplications do not overflow mod q, */ - /* so we can re-purpose PQCLEAN_NTRUHPS2048677_CLEAN_poly_Rq_mul, as long as we */ - /* follow with an explicit reduction mod q. */ - PQCLEAN_NTRUHPS2048677_CLEAN_poly_Rq_mul(r, a, b); - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = MODQ(r->coeffs[i]); - } - PQCLEAN_NTRUHPS2048677_CLEAN_poly_mod_3_Phi_n(r); -} - -static void PQCLEAN_NTRUHPS2048677_CLEAN_poly_R2_inv_to_Rq_inv(poly *r, const poly *ai, const poly *a) { - - int i; - poly b, c; - poly s; - - // for 0..4 - // ai = ai * (2 - a*ai) mod q - for (i = 0; i < NTRU_N; i++) { - b.coeffs[i] = -(a->coeffs[i]); - } - - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = ai->coeffs[i]; - } - - PQCLEAN_NTRUHPS2048677_CLEAN_poly_Rq_mul(&c, r, &b); - c.coeffs[0] += 2; // c = 2 - a*ai - PQCLEAN_NTRUHPS2048677_CLEAN_poly_Rq_mul(&s, &c, r); // s = ai*c - - PQCLEAN_NTRUHPS2048677_CLEAN_poly_Rq_mul(&c, &s, &b); - c.coeffs[0] += 2; // c = 2 - a*s - PQCLEAN_NTRUHPS2048677_CLEAN_poly_Rq_mul(r, &c, &s); // r = s*c - - PQCLEAN_NTRUHPS2048677_CLEAN_poly_Rq_mul(&c, r, &b); - c.coeffs[0] += 2; // c = 2 - a*r - PQCLEAN_NTRUHPS2048677_CLEAN_poly_Rq_mul(&s, &c, r); // s = r*c - - PQCLEAN_NTRUHPS2048677_CLEAN_poly_Rq_mul(&c, &s, &b); - c.coeffs[0] += 2; // c = 2 - a*s - PQCLEAN_NTRUHPS2048677_CLEAN_poly_Rq_mul(r, &c, &s); // r = s*c -} - -void PQCLEAN_NTRUHPS2048677_CLEAN_poly_Rq_inv(poly *r, const poly *a) { - poly ai2; - PQCLEAN_NTRUHPS2048677_CLEAN_poly_R2_inv(&ai2, a); - PQCLEAN_NTRUHPS2048677_CLEAN_poly_R2_inv_to_Rq_inv(r, &ai2, a); -} diff --git a/src/kem/ntru/ntruhps2048677/clean/poly.h b/src/kem/ntru/ntruhps2048677/clean/poly.h deleted file mode 100644 index ae8bb7ce..00000000 --- a/src/kem/ntru/ntruhps2048677/clean/poly.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef POLY_H -#define POLY_H - -#include "params.h" - -#include -#include - -#define MODQ(X) ((X) & (NTRU_Q-1)) - -typedef struct { - uint16_t coeffs[NTRU_N]; -} poly; - -void PQCLEAN_NTRUHPS2048677_CLEAN_poly_mod_3_Phi_n(poly *r); -void PQCLEAN_NTRUHPS2048677_CLEAN_poly_mod_q_Phi_n(poly *r); - -void PQCLEAN_NTRUHPS2048677_CLEAN_poly_Sq_tobytes(unsigned char *r, const poly *a); -void PQCLEAN_NTRUHPS2048677_CLEAN_poly_Sq_frombytes(poly *r, const unsigned char *a); - -void PQCLEAN_NTRUHPS2048677_CLEAN_poly_Rq_sum_zero_tobytes(unsigned char *r, const poly *a); -void PQCLEAN_NTRUHPS2048677_CLEAN_poly_Rq_sum_zero_frombytes(poly *r, const unsigned char *a); - -void PQCLEAN_NTRUHPS2048677_CLEAN_poly_S3_tobytes(unsigned char msg[NTRU_PACK_TRINARY_BYTES], const poly *a); -void PQCLEAN_NTRUHPS2048677_CLEAN_poly_S3_frombytes(poly *r, const unsigned char msg[NTRU_PACK_TRINARY_BYTES]); - -void PQCLEAN_NTRUHPS2048677_CLEAN_poly_Sq_mul(poly *r, const poly *a, const poly *b); -void PQCLEAN_NTRUHPS2048677_CLEAN_poly_Rq_mul(poly *r, const poly *a, const poly *b); -void PQCLEAN_NTRUHPS2048677_CLEAN_poly_S3_mul(poly *r, const poly *a, const poly *b); -void PQCLEAN_NTRUHPS2048677_CLEAN_poly_lift(poly *r, const poly *a); -void PQCLEAN_NTRUHPS2048677_CLEAN_poly_Rq_to_S3(poly *r, const poly *a); - -void PQCLEAN_NTRUHPS2048677_CLEAN_poly_R2_inv(poly *r, const poly *a); -void PQCLEAN_NTRUHPS2048677_CLEAN_poly_Rq_inv(poly *r, const poly *a); -void PQCLEAN_NTRUHPS2048677_CLEAN_poly_S3_inv(poly *r, const poly *a); - -void PQCLEAN_NTRUHPS2048677_CLEAN_poly_Z3_to_Zq(poly *r); -void PQCLEAN_NTRUHPS2048677_CLEAN_poly_trinary_Zq_to_Z3(poly *r); -#endif diff --git a/src/kem/ntru/ntruhps2048677/clean/poly_lift.c b/src/kem/ntru/ntruhps2048677/clean/poly_lift.c deleted file mode 100644 index d2d23683..00000000 --- a/src/kem/ntru/ntruhps2048677/clean/poly_lift.c +++ /dev/null @@ -1,11 +0,0 @@ -#include "poly.h" - -void PQCLEAN_NTRUHPS2048677_CLEAN_poly_lift(poly *r, const poly *a) { - int i; - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = a->coeffs[i]; - } - PQCLEAN_NTRUHPS2048677_CLEAN_poly_Z3_to_Zq(r); -} - - diff --git a/src/kem/ntru/ntruhps2048677/clean/poly_mod.c b/src/kem/ntru/ntruhps2048677/clean/poly_mod.c deleted file mode 100644 index d0482327..00000000 --- a/src/kem/ntru/ntruhps2048677/clean/poly_mod.c +++ /dev/null @@ -1,53 +0,0 @@ -#include "poly.h" - -static uint16_t mod3(uint16_t a) { - uint16_t r; - int16_t t, c; - - r = (a >> 8) + (a & 0xff); // r mod 255 == a mod 255 - r = (r >> 4) + (r & 0xf); // r' mod 15 == r mod 15 - r = (r >> 2) + (r & 0x3); // r' mod 3 == r mod 3 - r = (r >> 2) + (r & 0x3); // r' mod 3 == r mod 3 - - t = r - 3; - c = t >> 15; - - return (c & r) ^ (~c & t); -} - -void PQCLEAN_NTRUHPS2048677_CLEAN_poly_mod_3_Phi_n(poly *r) { - int i; - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = mod3(r->coeffs[i] + 2 * r->coeffs[NTRU_N - 1]); - } -} - -void PQCLEAN_NTRUHPS2048677_CLEAN_poly_mod_q_Phi_n(poly *r) { - int i; - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = r->coeffs[i] - r->coeffs[NTRU_N - 1]; - } -} - -void PQCLEAN_NTRUHPS2048677_CLEAN_poly_Rq_to_S3(poly *r, const poly *a) { - int i; - uint16_t flag; - - /* 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++) { - /* 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/src/kem/ntru/ntruhps2048677/clean/poly_r2_inv.c b/src/kem/ntru/ntruhps2048677/clean/poly_r2_inv.c deleted file mode 100644 index 3e1e1c76..00000000 --- a/src/kem/ntru/ntruhps2048677/clean/poly_r2_inv.c +++ /dev/null @@ -1,69 +0,0 @@ -/* Based on supercop-20200702/crypto_core/invhrss701/simpler/core.c */ - -#include "poly.h" - -/* return -1 if x<0 and y<0; otherwise return 0 */ -static inline int16_t both_negative_mask(int16_t x, int16_t y) { - return (x & y) >> 15; -} - -void PQCLEAN_NTRUHPS2048677_CLEAN_poly_R2_inv(poly *r, const poly *a) { - poly f, g, v, w; - size_t i, loop; - int16_t delta, sign, swap, t; - - for (i = 0; i < NTRU_N; ++i) { - v.coeffs[i] = 0; - } - for (i = 0; i < NTRU_N; ++i) { - w.coeffs[i] = 0; - } - w.coeffs[0] = 1; - - for (i = 0; i < NTRU_N; ++i) { - f.coeffs[i] = 1; - } - for (i = 0; i < NTRU_N - 1; ++i) { - g.coeffs[NTRU_N - 2 - i] = (a->coeffs[i] ^ a->coeffs[NTRU_N - 1]) & 1; - } - g.coeffs[NTRU_N - 1] = 0; - - delta = 1; - - for (loop = 0; loop < 2 * (NTRU_N - 1) - 1; ++loop) { - for (i = NTRU_N - 1; i > 0; --i) { - v.coeffs[i] = v.coeffs[i - 1]; - } - v.coeffs[0] = 0; - - sign = g.coeffs[0] & f.coeffs[0]; - swap = both_negative_mask(-delta, -(int16_t) g.coeffs[0]); - delta ^= swap & (delta ^ -delta); - delta += 1; - - for (i = 0; i < NTRU_N; ++i) { - t = swap & (f.coeffs[i] ^ g.coeffs[i]); - f.coeffs[i] ^= t; - g.coeffs[i] ^= t; - t = swap & (v.coeffs[i] ^ w.coeffs[i]); - v.coeffs[i] ^= t; - w.coeffs[i] ^= t; - } - - for (i = 0; i < NTRU_N; ++i) { - g.coeffs[i] = g.coeffs[i] ^ (sign & f.coeffs[i]); - } - for (i = 0; i < NTRU_N; ++i) { - w.coeffs[i] = w.coeffs[i] ^ (sign & v.coeffs[i]); - } - for (i = 0; i < NTRU_N - 1; ++i) { - g.coeffs[i] = g.coeffs[i + 1]; - } - g.coeffs[NTRU_N - 1] = 0; - } - - for (i = 0; i < NTRU_N - 1; ++i) { - r->coeffs[i] = v.coeffs[NTRU_N - 2 - i]; - } - r->coeffs[NTRU_N - 1] = 0; -} diff --git a/src/kem/ntru/ntruhps2048677/clean/poly_rq_mul.c b/src/kem/ntru/ntruhps2048677/clean/poly_rq_mul.c deleted file mode 100644 index 0643a099..00000000 --- a/src/kem/ntru/ntruhps2048677/clean/poly_rq_mul.c +++ /dev/null @@ -1,284 +0,0 @@ -#include "poly.h" - -/* Polynomial multiplication using */ -/* Toom-4 and two layers of Karatsuba. */ - -#define L PAD32(NTRU_N) -#define M (L/4) -#define K (L/16) - -static void toom4_k2x2_mul(uint16_t ab[2 * L], const uint16_t a[L], const uint16_t b[L]); - -static void toom4_k2x2_eval_0(uint16_t r[9 * K], const uint16_t a[M]); -static void toom4_k2x2_eval_p1(uint16_t r[9 * K], const uint16_t a[M]); -static void toom4_k2x2_eval_m1(uint16_t r[9 * K], const uint16_t a[M]); -static void toom4_k2x2_eval_p2(uint16_t r[9 * K], const uint16_t a[M]); -static void toom4_k2x2_eval_m2(uint16_t r[9 * K], const uint16_t a[M]); -static void toom4_k2x2_eval_p3(uint16_t r[9 * K], const uint16_t a[M]); -static void toom4_k2x2_eval_inf(uint16_t r[9 * K], const uint16_t a[M]); -static inline void k2x2_eval(uint16_t r[9 * K]); - -static void toom4_k2x2_basemul(uint16_t r[18 * K], const uint16_t a[9 * K], const uint16_t b[9 * K]); -static inline void schoolbook_KxK(uint16_t r[2 * K], const uint16_t a[K], const uint16_t b[K]); - -static void toom4_k2x2_interpolate(uint16_t r[2 * M], const uint16_t a[63 * 2 * K]); -static inline void k2x2_interpolate(uint16_t r[M], const uint16_t a[9 * K]); - -void PQCLEAN_NTRUHPS2048677_CLEAN_poly_Rq_mul(poly *r, const poly *a, const poly *b) { - size_t i; - uint16_t ab[2 * L]; - - for (i = 0; i < NTRU_N; i++) { - ab[i] = a->coeffs[i]; - ab[L + i] = b->coeffs[i]; - } - for (i = NTRU_N; i < L; i++) { - ab[i] = 0; - ab[L + i] = 0; - } - - toom4_k2x2_mul(ab, ab, ab + L); - - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = ab[i] + ab[NTRU_N + i]; - } -} - -static void toom4_k2x2_mul(uint16_t ab[2 * L], const uint16_t a[L], const uint16_t b[L]) { - uint16_t tmpA[9 * K]; - uint16_t tmpB[9 * K]; - uint16_t eC[63 * 2 * K]; - - toom4_k2x2_eval_0(tmpA, a); - toom4_k2x2_eval_0(tmpB, b); - toom4_k2x2_basemul(eC + 0 * 9 * 2 * K, tmpA, tmpB); - - toom4_k2x2_eval_p1(tmpA, a); - toom4_k2x2_eval_p1(tmpB, b); - toom4_k2x2_basemul(eC + 1 * 9 * 2 * K, tmpA, tmpB); - - toom4_k2x2_eval_m1(tmpA, a); - toom4_k2x2_eval_m1(tmpB, b); - toom4_k2x2_basemul(eC + 2 * 9 * 2 * K, tmpA, tmpB); - - toom4_k2x2_eval_p2(tmpA, a); - toom4_k2x2_eval_p2(tmpB, b); - toom4_k2x2_basemul(eC + 3 * 9 * 2 * K, tmpA, tmpB); - - toom4_k2x2_eval_m2(tmpA, a); - toom4_k2x2_eval_m2(tmpB, b); - toom4_k2x2_basemul(eC + 4 * 9 * 2 * K, tmpA, tmpB); - - toom4_k2x2_eval_p3(tmpA, a); - toom4_k2x2_eval_p3(tmpB, b); - toom4_k2x2_basemul(eC + 5 * 9 * 2 * K, tmpA, tmpB); - - toom4_k2x2_eval_inf(tmpA, a); - toom4_k2x2_eval_inf(tmpB, b); - toom4_k2x2_basemul(eC + 6 * 9 * 2 * K, tmpA, tmpB); - - toom4_k2x2_interpolate(ab, eC); -} - - -static void toom4_k2x2_eval_0(uint16_t r[9 * K], const uint16_t a[M]) { - for (size_t i = 0; i < M; i++) { - r[i] = a[i]; - } - k2x2_eval(r); -} - -static void toom4_k2x2_eval_p1(uint16_t r[9 * K], const uint16_t a[M]) { - for (size_t i = 0; i < M; i++) { - r[i] = a[0 * M + i]; - r[i] += a[1 * M + i]; - r[i] += a[2 * M + i]; - r[i] += a[3 * M + i]; - } - k2x2_eval(r); -} - -static void toom4_k2x2_eval_m1(uint16_t r[9 * K], const uint16_t a[M]) { - for (size_t i = 0; i < M; i++) { - r[i] = a[0 * M + i]; - r[i] -= a[1 * M + i]; - r[i] += a[2 * M + i]; - r[i] -= a[3 * M + i]; - } - k2x2_eval(r); -} - -static void toom4_k2x2_eval_p2(uint16_t r[9 * K], const uint16_t a[M]) { - for (size_t i = 0; i < M; i++) { - r[i] = a[0 * M + i]; - r[i] += 2 * a[1 * M + i]; - r[i] += 4 * a[2 * M + i]; - r[i] += 8 * a[3 * M + i]; - } - k2x2_eval(r); -} - -static void toom4_k2x2_eval_m2(uint16_t r[9 * K], const uint16_t a[M]) { - for (size_t i = 0; i < M; i++) { - r[i] = a[0 * M + i]; - r[i] -= 2 * a[1 * M + i]; - r[i] += 4 * a[2 * M + i]; - r[i] -= 8 * a[3 * M + i]; - } - k2x2_eval(r); -} - -static void toom4_k2x2_eval_p3(uint16_t r[9 * K], const uint16_t a[M]) { - for (size_t i = 0; i < M; i++) { - r[i] = a[0 * M + i]; - r[i] += 3 * a[1 * M + i]; - r[i] += 9 * a[2 * M + i]; - r[i] += 27 * a[3 * M + i]; - } - k2x2_eval(r); -} - -static void toom4_k2x2_eval_inf(uint16_t r[9 * K], const uint16_t a[M]) { - for (size_t i = 0; i < M; i++) { - r[i] = a[3 * M + i]; - } - k2x2_eval(r); -} - -static inline void k2x2_eval(uint16_t r[9 * K]) { - /* Input: e + f.Y + g.Y^2 + h.Y^3 */ - /* Output: [ e | f | g | h | e+f | f+h | g+e | h+g | e+f+g+h ] */ - - size_t i; - for (i = 0; i < 4 * K; i++) { - r[4 * K + i] = r[i]; - } - for (i = 0; i < K; i++) { - r[4 * K + i] += r[1 * K + i]; - r[5 * K + i] += r[3 * K + i]; - r[6 * K + i] += r[0 * K + i]; - r[7 * K + i] += r[2 * K + i]; - r[8 * K + i] = r[5 * K + i]; - r[8 * K + i] += r[6 * K + i]; - } -} - -static void toom4_k2x2_basemul(uint16_t r[18 * K], const uint16_t a[9 * K], const uint16_t b[9 * K]) { - schoolbook_KxK(r + 0 * 2 * K, a + 0 * K, b + 0 * K); - schoolbook_KxK(r + 1 * 2 * K, a + 1 * K, b + 1 * K); - schoolbook_KxK(r + 2 * 2 * K, a + 2 * K, b + 2 * K); - schoolbook_KxK(r + 3 * 2 * K, a + 3 * K, b + 3 * K); - schoolbook_KxK(r + 4 * 2 * K, a + 4 * K, b + 4 * K); - schoolbook_KxK(r + 5 * 2 * K, a + 5 * K, b + 5 * K); - schoolbook_KxK(r + 6 * 2 * K, a + 6 * K, b + 6 * K); - schoolbook_KxK(r + 7 * 2 * K, a + 7 * K, b + 7 * K); - schoolbook_KxK(r + 8 * 2 * K, a + 8 * K, b + 8 * K); -} - -static inline void schoolbook_KxK(uint16_t r[2 * K], const uint16_t a[K], const uint16_t b[K]) { - size_t i, j; - for (j = 0; j < K; j++) { - r[j] = a[0] * (uint32_t)b[j]; - } - for (i = 1; i < K; i++) { - for (j = 0; j < K - 1; j++) { - r[i + j] += a[i] * (uint32_t)b[j]; - } - r[i + K - 1] = a[i] * (uint32_t)b[K - 1]; - } - r[2 * K - 1] = 0; -} - -static void toom4_k2x2_interpolate(uint16_t r[2 * M], const uint16_t a[7 * 18 * K]) { - size_t i; - - uint16_t P1[2 * M]; - uint16_t Pm1[2 * M]; - uint16_t P2[2 * M]; - uint16_t Pm2[2 * M]; - - uint16_t *C0 = r; - uint16_t *C2 = r + 2 * M; - uint16_t *C4 = r + 4 * M; - uint16_t *C6 = r + 6 * M; - - uint16_t V0, V1, V2; - - k2x2_interpolate(C0, a + 0 * 9 * 2 * K); - k2x2_interpolate(P1, a + 1 * 9 * 2 * K); - k2x2_interpolate(Pm1, a + 2 * 9 * 2 * K); - k2x2_interpolate(P2, a + 3 * 9 * 2 * K); - k2x2_interpolate(Pm2, a + 4 * 9 * 2 * K); - k2x2_interpolate(C6, a + 6 * 9 * 2 * K); - - for (i = 0; i < 2 * M; i++) { - V0 = ((uint32_t)(P1[i] + Pm1[i])) >> 1; - V0 = V0 - C0[i] - C6[i]; - V1 = ((uint32_t)(P2[i] + Pm2[i] - 2 * C0[i] - 128 * C6[i])) >> 3; - C4[i] = 43691 * (uint32_t)(V1 - V0); - C2[i] = V0 - C4[i]; - P1[i] = ((uint32_t)(P1[i] - Pm1[i])) >> 1; - } - - /* reuse Pm1 for P3 */ -#define P3 Pm1 - k2x2_interpolate(P3, a + 5 * 9 * 2 * K); - - for (i = 0; i < 2 * M; i++) { - V0 = P1[i]; - V1 = 43691 * (((uint32_t)(P2[i] - Pm2[i]) >> 2) - V0); - V2 = 43691 * (uint32_t)(P3[i] - C0[i] - 9 * (C2[i] + 9 * (C4[i] + 9 * C6[i]))); - V2 = ((uint32_t)(V2 - V0)) >> 3; - V2 -= V1; - P3[i] = 52429 * (uint32_t)V2; - P2[i] = V1 - V2; - P1[i] = V0 - P2[i] - P3[i]; - } - - for (i = 0; i < 2 * M; i++) { - r[1 * M + i] += P1[i]; - r[3 * M + i] += P2[i]; - r[5 * M + i] += P3[i]; - } -} - -static inline void k2x2_interpolate(uint16_t r[M], const uint16_t a[9 * K]) { - size_t i; - uint16_t tmp[4 * K]; - - for (i = 0; i < 2 * K; i++) { - r[0 * K + i] = a[0 * K + i]; - r[2 * K + i] = a[2 * K + i]; - } - - for (i = 0; i < 2 * K; i++) { - r[1 * K + i] += a[8 * K + i] - a[0 * K + i] - a[2 * K + i]; - } - - for (i = 0; i < 2 * K; i++) { - r[4 * K + i] = a[4 * K + i]; - r[6 * K + i] = a[6 * K + i]; - } - - for (i = 0; i < 2 * K; i++) { - r[5 * K + i] += a[14 * K + i] - a[4 * K + i] - a[6 * K + i]; - } - - for (i = 0; i < 2 * K; i++) { - tmp[0 * K + i] = a[12 * K + i]; - tmp[2 * K + i] = a[10 * K + i]; - } - - for (i = 0; i < 2 * K; i++) { - tmp[K + i] += a[16 * K + i] - a[12 * K + i] - a[10 * K + i]; - } - - for (i = 0; i < 4 * K; i++) { - tmp[0 * K + i] = tmp[0 * K + i] - r[0 * K + i] - r[4 * K + i]; - } - - for (i = 0; i < 4 * K; i++) { - r[2 * K + i] += tmp[0 * K + i]; - } -} - diff --git a/src/kem/ntru/ntruhps2048677/clean/poly_s3_inv.c b/src/kem/ntru/ntruhps2048677/clean/poly_s3_inv.c deleted file mode 100644 index 46f6ece1..00000000 --- a/src/kem/ntru/ntruhps2048677/clean/poly_s3_inv.c +++ /dev/null @@ -1,78 +0,0 @@ -/* Based on supercop-20200702/crypto_core/invhrss701/simpler/core.c */ - -#include "poly.h" - -static inline uint8_t mod3(uint8_t a) { /* a between 0 and 9 */ - int16_t t, c; - a = (a >> 2) + (a & 3); /* between 0 and 4 */ - t = a - 3; - c = t >> 5; - return (uint8_t) (t ^ (c & (a ^ t))); -} - -/* return -1 if x<0 and y<0; otherwise return 0 */ -static inline int16_t both_negative_mask(int16_t x, int16_t y) { - return (x & y) >> 15; -} - -void PQCLEAN_NTRUHPS2048677_CLEAN_poly_S3_inv(poly *r, const poly *a) { - poly f, g, v, w; - size_t i, loop; - int16_t delta, sign, swap, t; - - for (i = 0; i < NTRU_N; ++i) { - v.coeffs[i] = 0; - } - for (i = 0; i < NTRU_N; ++i) { - w.coeffs[i] = 0; - } - w.coeffs[0] = 1; - - for (i = 0; i < NTRU_N; ++i) { - f.coeffs[i] = 1; - } - for (i = 0; i < NTRU_N - 1; ++i) { - g.coeffs[NTRU_N - 2 - i] = mod3((a->coeffs[i] & 3) + 2 * (a->coeffs[NTRU_N - 1] & 3)); - } - g.coeffs[NTRU_N - 1] = 0; - - delta = 1; - - for (loop = 0; loop < 2 * (NTRU_N - 1) - 1; ++loop) { - for (i = NTRU_N - 1; i > 0; --i) { - v.coeffs[i] = v.coeffs[i - 1]; - } - v.coeffs[0] = 0; - - sign = mod3((uint8_t) (2 * g.coeffs[0] * f.coeffs[0])); - swap = both_negative_mask(-delta, -(int16_t) g.coeffs[0]); - delta ^= swap & (delta ^ -delta); - delta += 1; - - for (i = 0; i < NTRU_N; ++i) { - t = swap & (f.coeffs[i] ^ g.coeffs[i]); - f.coeffs[i] ^= t; - g.coeffs[i] ^= t; - t = swap & (v.coeffs[i] ^ w.coeffs[i]); - v.coeffs[i] ^= t; - w.coeffs[i] ^= t; - } - - for (i = 0; i < NTRU_N; ++i) { - g.coeffs[i] = mod3((uint8_t) (g.coeffs[i] + sign * f.coeffs[i])); - } - for (i = 0; i < NTRU_N; ++i) { - w.coeffs[i] = mod3((uint8_t) (w.coeffs[i] + sign * v.coeffs[i])); - } - for (i = 0; i < NTRU_N - 1; ++i) { - g.coeffs[i] = g.coeffs[i + 1]; - } - g.coeffs[NTRU_N - 1] = 0; - } - - sign = f.coeffs[0]; - for (i = 0; i < NTRU_N - 1; ++i) { - r->coeffs[i] = mod3((uint8_t) (sign * v.coeffs[NTRU_N - 2 - i])); - } - r->coeffs[NTRU_N - 1] = 0; -} diff --git a/src/kem/ntru/ntruhps2048677/clean/sample.c b/src/kem/ntru/ntruhps2048677/clean/sample.c deleted file mode 100644 index 8b73071e..00000000 --- a/src/kem/ntru/ntruhps2048677/clean/sample.c +++ /dev/null @@ -1,45 +0,0 @@ -#include "sample.h" - -void PQCLEAN_NTRUHPS2048677_CLEAN_sample_fg(poly *f, poly *g, const unsigned char uniformbytes[NTRU_SAMPLE_FG_BYTES]) { - - PQCLEAN_NTRUHPS2048677_CLEAN_sample_iid(f, uniformbytes); - PQCLEAN_NTRUHPS2048677_CLEAN_sample_fixed_type(g, uniformbytes + NTRU_SAMPLE_IID_BYTES); -} - -void PQCLEAN_NTRUHPS2048677_CLEAN_sample_rm(poly *r, poly *m, const unsigned char uniformbytes[NTRU_SAMPLE_RM_BYTES]) { - - PQCLEAN_NTRUHPS2048677_CLEAN_sample_iid(r, uniformbytes); - PQCLEAN_NTRUHPS2048677_CLEAN_sample_fixed_type(m, uniformbytes + NTRU_SAMPLE_IID_BYTES); -} - - -void PQCLEAN_NTRUHPS2048677_CLEAN_sample_fixed_type(poly *r, const unsigned char u[NTRU_SAMPLE_FT_BYTES]) { - // Assumes NTRU_SAMPLE_FT_BYTES = ceil(30*(n-1)/8) - - int32_t s[NTRU_N - 1]; - int i; - - // Use 30 bits of u per word - for (i = 0; i < (NTRU_N - 1) / 4; i++) { - s[4 * i + 0] = (u[15 * i + 0] << 2) + (u[15 * i + 1] << 10) + (u[15 * i + 2] << 18) + ((uint32_t) u[15 * i + 3] << 26); - s[4 * i + 1] = ((u[15 * i + 3] & 0xc0) >> 4) + (u[15 * i + 4] << 4) + (u[15 * i + 5] << 12) + (u[15 * i + 6] << 20) + ((uint32_t) u[15 * i + 7] << 28); - s[4 * i + 2] = ((u[15 * i + 7] & 0xf0) >> 2) + (u[15 * i + 8] << 6) + (u[15 * i + 9] << 14) + (u[15 * i + 10] << 22) + ((uint32_t) u[15 * i + 11] << 30); - s[4 * i + 3] = (u[15 * i + 11] & 0xfc) + (u[15 * i + 12] << 8) + (u[15 * i + 13] << 16) + ((uint32_t) u[15 * i + 14] << 24); - } - - for (i = 0; i < NTRU_WEIGHT / 2; i++) { - s[i] |= 1; - } - - for (i = NTRU_WEIGHT / 2; i < NTRU_WEIGHT; i++) { - s[i] |= 2; - } - - PQCLEAN_NTRUHPS2048677_CLEAN_crypto_sort_int32(s, NTRU_N - 1); - - for (i = 0; i < NTRU_N - 1; i++) { - r->coeffs[i] = ((uint16_t) (s[i] & 3)); - } - - r->coeffs[NTRU_N - 1] = 0; -} diff --git a/src/kem/ntru/ntruhps2048677/clean/sample.h b/src/kem/ntru/ntruhps2048677/clean/sample.h deleted file mode 100644 index a919891f..00000000 --- a/src/kem/ntru/ntruhps2048677/clean/sample.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef SAMPLE_H -#define SAMPLE_H - -#include "params.h" -#include "poly.h" - -#include "crypto_sort_int32.h" - -void PQCLEAN_NTRUHPS2048677_CLEAN_sample_fg(poly *f, poly *g, const unsigned char uniformbytes[NTRU_SAMPLE_FG_BYTES]); -void PQCLEAN_NTRUHPS2048677_CLEAN_sample_rm(poly *r, poly *m, const unsigned char uniformbytes[NTRU_SAMPLE_RM_BYTES]); - -void PQCLEAN_NTRUHPS2048677_CLEAN_sample_iid(poly *r, const unsigned char uniformbytes[NTRU_SAMPLE_IID_BYTES]); - -void PQCLEAN_NTRUHPS2048677_CLEAN_sample_fixed_type(poly *r, const unsigned char uniformbytes[NTRU_SAMPLE_FT_BYTES]); - - -#endif diff --git a/src/kem/ntru/ntruhps2048677/clean/sample_iid.c b/src/kem/ntru/ntruhps2048677/clean/sample_iid.c deleted file mode 100644 index 59e3f0f2..00000000 --- a/src/kem/ntru/ntruhps2048677/clean/sample_iid.c +++ /dev/null @@ -1,26 +0,0 @@ -#include "sample.h" - -static uint16_t mod3(uint16_t a) { - uint16_t r; - int16_t t, c; - - r = (a >> 8) + (a & 0xff); // r mod 255 == a mod 255 - r = (r >> 4) + (r & 0xf); // r' mod 15 == r mod 15 - r = (r >> 2) + (r & 0x3); // r' mod 3 == r mod 3 - r = (r >> 2) + (r & 0x3); // r' mod 3 == r mod 3 - - t = r - 3; - c = t >> 15; - - return (c & r) ^ (~c & t); -} - -void PQCLEAN_NTRUHPS2048677_CLEAN_sample_iid(poly *r, const unsigned char uniformbytes[NTRU_SAMPLE_IID_BYTES]) { - int i; - /* {0,1,...,255} -> {0,1,2}; Pr[0] = 86/256, Pr[1] = Pr[-1] = 85/256 */ - for (i = 0; i < NTRU_N - 1; i++) { - r->coeffs[i] = mod3(uniformbytes[i]); - } - - r->coeffs[NTRU_N - 1] = 0; -} diff --git a/src/kem/ntru/ntruhps4096821/avx2/CMakeLists.txt b/src/kem/ntru/ntruhps4096821/avx2/CMakeLists.txt deleted file mode 100644 index a657905f..00000000 --- a/src/kem/ntru/ntruhps4096821/avx2/CMakeLists.txt +++ /dev/null @@ -1,33 +0,0 @@ -set( - SRC_AVX2_NTRUHPS4096821 - cmov.c - crypto_sort_int32.c - kem.c - owcpa.c - pack3.c - packq.c - poly.c - poly_lift.c - poly_mod_3_Phi_n.s - poly_mod_q_Phi_n.s - poly_r2_inv.c - poly_r2_mul.s - poly_rq_mul.s - poly_rq_to_s3.s - poly_s3_inv.c - sample.c - sample_iid.c - square_102_821_shufbytes.s - square_12_821_shufbytes.s - square_1_821_patience.s - square_204_821_shufbytes.s - square_24_821_shufbytes.s - square_3_821_patience.s - square_408_821_shufbytes.s - square_51_821_shufbytes.s - square_6_821_patience.s - vec32_sample_iid.s -) - -define_kem_alg(ntruhps4096821_avx2 - PQCLEAN_NTRUHPS4096821_AVX2 "${SRC_AVX2_NTRUHPS4096821}" "${CMAKE_CURRENT_SOURCE_DIR}") diff --git a/src/kem/ntru/ntruhps4096821/avx2/api.h b/src/kem/ntru/ntruhps4096821/avx2/api.h deleted file mode 100644 index 1aa6af6b..00000000 --- a/src/kem/ntru/ntruhps4096821/avx2/api.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef PQCLEAN_NTRUHPS4096821_AVX2_API_H -#define PQCLEAN_NTRUHPS4096821_AVX2_API_H - -#include - -#define PQCLEAN_NTRUHPS4096821_AVX2_CRYPTO_SECRETKEYBYTES 1590 -#define PQCLEAN_NTRUHPS4096821_AVX2_CRYPTO_PUBLICKEYBYTES 1230 -#define PQCLEAN_NTRUHPS4096821_AVX2_CRYPTO_CIPHERTEXTBYTES 1230 -#define PQCLEAN_NTRUHPS4096821_AVX2_CRYPTO_BYTES 32 - -#define PQCLEAN_NTRUHPS4096821_AVX2_CRYPTO_ALGNAME "ntruhps4096821" - -int PQCLEAN_NTRUHPS4096821_AVX2_crypto_kem_keypair(uint8_t *pk, uint8_t *sk); - -int PQCLEAN_NTRUHPS4096821_AVX2_crypto_kem_enc(uint8_t *c, uint8_t *k, const uint8_t *pk); - -int PQCLEAN_NTRUHPS4096821_AVX2_crypto_kem_dec(uint8_t *k, const uint8_t *c, const uint8_t *sk); - -#endif diff --git a/src/kem/ntru/ntruhps4096821/avx2/cmov.c b/src/kem/ntru/ntruhps4096821/avx2/cmov.c deleted file mode 100644 index a03811f8..00000000 --- a/src/kem/ntru/ntruhps4096821/avx2/cmov.c +++ /dev/null @@ -1,11 +0,0 @@ -#include "cmov.h" - -/* b = 1 means mov, b = 0 means don't mov*/ -void PQCLEAN_NTRUHPS4096821_AVX2_cmov(unsigned char *r, const unsigned char *x, size_t len, unsigned char b) { - size_t i; - - b = (~b + 1); - for (i = 0; i < len; i++) { - r[i] ^= b & (x[i] ^ r[i]); - } -} diff --git a/src/kem/ntru/ntruhps4096821/avx2/cmov.h b/src/kem/ntru/ntruhps4096821/avx2/cmov.h deleted file mode 100644 index efa8639f..00000000 --- a/src/kem/ntru/ntruhps4096821/avx2/cmov.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef VERIFY_H -#define VERIFY_H - -#include "params.h" - -#include - -void PQCLEAN_NTRUHPS4096821_AVX2_cmov(unsigned char *r, const unsigned char *x, size_t len, unsigned char b); - -#endif diff --git a/src/kem/ntru/ntruhps4096821/avx2/crypto_sort_int32.c b/src/kem/ntru/ntruhps4096821/avx2/crypto_sort_int32.c deleted file mode 100644 index 2023a7e7..00000000 --- a/src/kem/ntru/ntruhps4096821/avx2/crypto_sort_int32.c +++ /dev/null @@ -1,1218 +0,0 @@ -// Based on supercop-20200820/crypto_sort/int32/avx2 - -#include "crypto_sort_int32.h" - -#include -#define int32 int32_t - -typedef __m256i int32x8; -#define int32x8_load(z) _mm256_loadu_si256((__m256i *) (z)) -#define int32x8_store(z,i) _mm256_storeu_si256((__m256i *) (z),(i)) -#define int32x8_min _mm256_min_epi32 -#define int32x8_max _mm256_max_epi32 - -#define int32x8_MINMAX(a,b) \ - do { \ - int32x8 c = int32x8_min((a),(b)); \ - (b) = int32x8_max((a),(b)); \ - (a) = c; \ - } while(0) - -static inline void int32_MINMAX(int32 *a, int32 *b) { - int32 ab = *b ^ *a; - int32 c = (int32)((int64_t) * b - (int64_t) * a); - c ^= ab & (c ^ *b); - c >>= 31; - c &= ab; - *a ^= c; - *b ^= c; -} - - -static void minmax_vector(int32 *x, int32 *y, size_t n) { - if ((long long) n < 8) { - while ((long long) n > 0) { - int32_MINMAX(x, y); - ++x; - ++y; - --n; - } - return; - } - if (n & 7) { - int32x8 x0 = int32x8_load(x + n - 8); - int32x8 y0 = int32x8_load(y + n - 8); - int32x8_MINMAX(x0, y0); - int32x8_store(x + n - 8, x0); - int32x8_store(y + n - 8, y0); - n &= ~7; - } - do { - int32x8 x0 = int32x8_load(x); - int32x8 y0 = int32x8_load(y); - int32x8_MINMAX(x0, y0); - int32x8_store(x, x0); - int32x8_store(y, y0); - x += 8; - y += 8; - n -= 8; - } while (n); -} - -/* stages 8,4,2,1 of size-16 bitonic merging */ - -static void merge16_finish(int32 *x, int32x8 x0, int32x8 x1, int flagdown) { - int32x8 b0, b1, c0, c1, mask; - - int32x8_MINMAX(x0, x1); - - b0 = _mm256_permute2x128_si256(x0, x1, 0x20); /* A0123B0123 */ - b1 = _mm256_permute2x128_si256(x0, x1, 0x31); /* A4567B4567 */ - - int32x8_MINMAX(b0, b1); - - c0 = _mm256_unpacklo_epi64(b0, b1); /* A0145B0145 */ - c1 = _mm256_unpackhi_epi64(b0, b1); /* A2367B2367 */ - - int32x8_MINMAX(c0, c1); - - b0 = _mm256_unpacklo_epi32(c0, c1); /* A0213B0213 */ - b1 = _mm256_unpackhi_epi32(c0, c1); /* A4657B4657 */ - - c0 = _mm256_unpacklo_epi64(b0, b1); /* A0246B0246 */ - c1 = _mm256_unpackhi_epi64(b0, b1); /* A1357B1357 */ - - int32x8_MINMAX(c0, c1); - - b0 = _mm256_unpacklo_epi32(c0, c1); /* A0123B0123 */ - b1 = _mm256_unpackhi_epi32(c0, c1); /* A4567B4567 */ - - x0 = _mm256_permute2x128_si256(b0, b1, 0x20); /* A01234567 */ - x1 = _mm256_permute2x128_si256(b0, b1, 0x31); /* A01234567 */ - - if (flagdown) { - mask = _mm256_set1_epi32(-1); - x0 ^= mask; - x1 ^= mask; - } - - int32x8_store(&x[0], x0); - int32x8_store(&x[8], x1); -} - -/* stages 64,32 of bitonic merging; n is multiple of 128 */ - -static void int32_twostages_32(int32 *x, size_t n) { - size_t i; - - while (n > 0) { - for (i = 0; i < 32; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + 32]); - int32x8 x2 = int32x8_load(&x[i + 64]); - int32x8 x3 = int32x8_load(&x[i + 96]); - - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - - int32x8_store(&x[i], x0); - int32x8_store(&x[i + 32], x1); - int32x8_store(&x[i + 64], x2); - int32x8_store(&x[i + 96], x3); - } - x += 128; - n -= 128; - } -} - -/* stages 4q,2q,q of bitonic merging */ - -static size_t int32_threestages(int32 *x, size_t n, size_t q) { - size_t k, i; - - for (k = 0; k + 8 * q <= n; k += 8 * q) { - for (i = k; i < k + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8 x4 = int32x8_load(&x[i + 4 * q]); - int32x8 x5 = int32x8_load(&x[i + 5 * q]); - int32x8 x6 = int32x8_load(&x[i + 6 * q]); - int32x8 x7 = int32x8_load(&x[i + 7 * q]); - - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - int32x8_store(&x[i + 4 * q], x4); - int32x8_store(&x[i + 5 * q], x5); - int32x8_store(&x[i + 6 * q], x6); - int32x8_store(&x[i + 7 * q], x7); - } - } - - return k; -} - -/* n is a power of 2; n >= 8; if n == 8 then flagdown */ - -// NOLINTNEXTLINE(google-readability-function-size) -static void int32_sort_2power(int32 *x, size_t n, int flagdown) { - size_t p, q, i, j, k; - int32x8 mask; - - if (n == 8) { - int32 x0 = x[0]; - int32 x1 = x[1]; - int32 x2 = x[2]; - int32 x3 = x[3]; - int32 x4 = x[4]; - int32 x5 = x[5]; - int32 x6 = x[6]; - int32 x7 = x[7]; - - /* odd-even sort instead of bitonic sort */ - - int32_MINMAX(&x1, &x0); - int32_MINMAX(&x3, &x2); - int32_MINMAX(&x2, &x0); - int32_MINMAX(&x3, &x1); - int32_MINMAX(&x2, &x1); - - int32_MINMAX(&x5, &x4); - int32_MINMAX(&x7, &x6); - int32_MINMAX(&x6, &x4); - int32_MINMAX(&x7, &x5); - int32_MINMAX(&x6, &x5); - - int32_MINMAX(&x4, &x0); - int32_MINMAX(&x6, &x2); - int32_MINMAX(&x4, &x2); - - int32_MINMAX(&x5, &x1); - int32_MINMAX(&x7, &x3); - int32_MINMAX(&x5, &x3); - - int32_MINMAX(&x2, &x1); - int32_MINMAX(&x4, &x3); - int32_MINMAX(&x6, &x5); - - x[0] = x0; - x[1] = x1; - x[2] = x2; - x[3] = x3; - x[4] = x4; - x[5] = x5; - x[6] = x6; - x[7] = x7; - return; - } - - if (n == 16) { - int32x8 x0, x1, b0, b1, c0, c1; - - x0 = int32x8_load(&x[0]); - x1 = int32x8_load(&x[8]); - - mask = _mm256_set_epi32(0, 0, -1, -1, 0, 0, -1, -1); - - x0 ^= mask; /* A01234567 */ - x1 ^= mask; /* B01234567 */ - - b0 = _mm256_unpacklo_epi32(x0, x1); /* AB0AB1AB4AB5 */ - b1 = _mm256_unpackhi_epi32(x0, x1); /* AB2AB3AB6AB7 */ - - c0 = _mm256_unpacklo_epi64(b0, b1); /* AB0AB2AB4AB6 */ - c1 = _mm256_unpackhi_epi64(b0, b1); /* AB1AB3AB5AB7 */ - - int32x8_MINMAX(c0, c1); - - mask = _mm256_set_epi32(0, 0, -1, -1, -1, -1, 0, 0); - c0 ^= mask; - c1 ^= mask; - - b0 = _mm256_unpacklo_epi32(c0, c1); /* A01B01A45B45 */ - b1 = _mm256_unpackhi_epi32(c0, c1); /* A23B23A67B67 */ - - int32x8_MINMAX(b0, b1); - - x0 = _mm256_unpacklo_epi64(b0, b1); /* A01234567 */ - x1 = _mm256_unpackhi_epi64(b0, b1); /* B01234567 */ - - b0 = _mm256_unpacklo_epi32(x0, x1); /* AB0AB1AB4AB5 */ - b1 = _mm256_unpackhi_epi32(x0, x1); /* AB2AB3AB6AB7 */ - - c0 = _mm256_unpacklo_epi64(b0, b1); /* AB0AB2AB4AB6 */ - c1 = _mm256_unpackhi_epi64(b0, b1); /* AB1AB3AB5AB7 */ - - int32x8_MINMAX(c0, c1); - - b0 = _mm256_unpacklo_epi32(c0, c1); /* A01B01A45B45 */ - b1 = _mm256_unpackhi_epi32(c0, c1); /* A23B23A67B67 */ - - b0 ^= mask; - b1 ^= mask; - - c0 = _mm256_permute2x128_si256(b0, b1, 0x20); /* A01B01A23B23 */ - c1 = _mm256_permute2x128_si256(b0, b1, 0x31); /* A45B45A67B67 */ - - int32x8_MINMAX(c0, c1); - - b0 = _mm256_permute2x128_si256(c0, c1, 0x20); /* A01B01A45B45 */ - b1 = _mm256_permute2x128_si256(c0, c1, 0x31); /* A23B23A67B67 */ - - int32x8_MINMAX(b0, b1); - - x0 = _mm256_unpacklo_epi64(b0, b1); /* A01234567 */ - x1 = _mm256_unpackhi_epi64(b0, b1); /* B01234567 */ - - b0 = _mm256_unpacklo_epi32(x0, x1); /* AB0AB1AB4AB5 */ - b1 = _mm256_unpackhi_epi32(x0, x1); /* AB2AB3AB6AB7 */ - - c0 = _mm256_unpacklo_epi64(b0, b1); /* AB0AB2AB4AB6 */ - c1 = _mm256_unpackhi_epi64(b0, b1); /* AB1AB3AB5AB7 */ - - int32x8_MINMAX(c0, c1); - - b0 = _mm256_unpacklo_epi32(c0, c1); /* A01B01A45B45 */ - b1 = _mm256_unpackhi_epi32(c0, c1); /* A23B23A67B67 */ - - x0 = _mm256_unpacklo_epi64(b0, b1); /* A01234567 */ - x1 = _mm256_unpackhi_epi64(b0, b1); /* B01234567 */ - - mask = _mm256_set1_epi32(-1); - if (flagdown) { - x1 ^= mask; - } else { - x0 ^= mask; - } - - merge16_finish(x, x0, x1, flagdown); - return; - } - - if (n == 32) { - int32x8 x0, x1, x2, x3; - - int32_sort_2power(x, 16, 1); - int32_sort_2power(x + 16, 16, 0); - - x0 = int32x8_load(&x[0]); - x1 = int32x8_load(&x[8]); - x2 = int32x8_load(&x[16]); - x3 = int32x8_load(&x[24]); - - if (flagdown) { - mask = _mm256_set1_epi32(-1); - x0 ^= mask; - x1 ^= mask; - x2 ^= mask; - x3 ^= mask; - } - - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - - merge16_finish(x, x0, x1, flagdown); - merge16_finish(x + 16, x2, x3, flagdown); - return; - } - - p = n >> 3; - for (i = 0; i < p; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x2 = int32x8_load(&x[i + 2 * p]); - int32x8 x4 = int32x8_load(&x[i + 4 * p]); - int32x8 x6 = int32x8_load(&x[i + 6 * p]); - - /* odd-even stage instead of bitonic stage */ - - int32x8_MINMAX(x4, x0); - int32x8_MINMAX(x6, x2); - int32x8_MINMAX(x2, x0); - int32x8_MINMAX(x6, x4); - int32x8_MINMAX(x2, x4); - - int32x8_store(&x[i], x0); - int32x8_store(&x[i + 2 * p], x2); - int32x8_store(&x[i + 4 * p], x4); - int32x8_store(&x[i + 6 * p], x6); - - int32x8 x1 = int32x8_load(&x[i + p]); - int32x8 x3 = int32x8_load(&x[i + 3 * p]); - int32x8 x5 = int32x8_load(&x[i + 5 * p]); - int32x8 x7 = int32x8_load(&x[i + 7 * p]); - - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x3, x7); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x5, x3); - - int32x8_store(&x[i + p], x1); - int32x8_store(&x[i + 3 * p], x3); - int32x8_store(&x[i + 5 * p], x5); - int32x8_store(&x[i + 7 * p], x7); - } - - if (n >= 128) { - int flip, flipflip; - - mask = _mm256_set1_epi32(-1); - - for (j = 0; j < n; j += 32) { - int32x8 x0 = int32x8_load(&x[j]); - int32x8 x1 = int32x8_load(&x[j + 16]); - x0 ^= mask; - x1 ^= mask; - int32x8_store(&x[j], x0); - int32x8_store(&x[j + 16], x1); - } - - p = 8; - for (;;) { /* for p in [8, 16, ..., n/16] */ - q = p >> 1; - while (q >= 128) { - int32_threestages(x, n, q >> 2); - q >>= 3; - } - if (q == 64) { - int32_twostages_32(x, n); - q = 16; - } - if (q == 32) { - q = 8; - for (k = 0; k < n; k += 8 * q) { - for (i = k; i < k + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8 x4 = int32x8_load(&x[i + 4 * q]); - int32x8 x5 = int32x8_load(&x[i + 5 * q]); - int32x8 x6 = int32x8_load(&x[i + 6 * q]); - int32x8 x7 = int32x8_load(&x[i + 7 * q]); - - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - int32x8_store(&x[i + 4 * q], x4); - int32x8_store(&x[i + 5 * q], x5); - int32x8_store(&x[i + 6 * q], x6); - int32x8_store(&x[i + 7 * q], x7); - } - } - q = 4; - } - if (q == 16) { - q = 8; - for (k = 0; k < n; k += 4 * q) { - for (i = k; i < k + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - } - } - q = 4; - } - if (q == 8) { - for (k = 0; k < n; k += q + q) { - int32x8 x0 = int32x8_load(&x[k]); - int32x8 x1 = int32x8_load(&x[k + q]); - - int32x8_MINMAX(x0, x1); - - int32x8_store(&x[k], x0); - int32x8_store(&x[k + q], x1); - } - } - - q = n >> 3; - flip = 0; - if (p << 1 == q) { - flip = 1; - } - flipflip = 1 - flip; - for (j = 0; j < q; j += p + p) { - for (k = j; k < j + p + p; k += p) { - for (i = k; i < k + p; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8 x4 = int32x8_load(&x[i + 4 * q]); - int32x8 x5 = int32x8_load(&x[i + 5 * q]); - int32x8 x6 = int32x8_load(&x[i + 6 * q]); - int32x8 x7 = int32x8_load(&x[i + 7 * q]); - - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - - if (flip) { - x0 ^= mask; - x1 ^= mask; - x2 ^= mask; - x3 ^= mask; - x4 ^= mask; - x5 ^= mask; - x6 ^= mask; - x7 ^= mask; - } - - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - int32x8_store(&x[i + 4 * q], x4); - int32x8_store(&x[i + 5 * q], x5); - int32x8_store(&x[i + 6 * q], x6); - int32x8_store(&x[i + 7 * q], x7); - } - flip ^= 1; - } - flip ^= flipflip; - } - - if (p << 4 == n) { - break; - } - p <<= 1; - } - } - - for (p = 4; p >= 1; p >>= 1) { - int32 *z = x; - int32 *target = x + n; - if (p == 4) { - mask = _mm256_set_epi32(0, 0, 0, 0, -1, -1, -1, -1); - while (z != target) { - int32x8 x0 = int32x8_load(&z[0]); - int32x8 x1 = int32x8_load(&z[8]); - x0 ^= mask; - x1 ^= mask; - int32x8_store(&z[0], x0); - int32x8_store(&z[8], x1); - z += 16; - } - } else if (p == 2) { - mask = _mm256_set_epi32(0, 0, -1, -1, -1, -1, 0, 0); - while (z != target) { - int32x8 x0 = int32x8_load(&z[0]); - int32x8 x1 = int32x8_load(&z[8]); - x0 ^= mask; - x1 ^= mask; - int32x8 b0 = _mm256_permute2x128_si256(x0, x1, 0x20); - int32x8 b1 = _mm256_permute2x128_si256(x0, x1, 0x31); - int32x8_MINMAX(b0, b1); - int32x8 c0 = _mm256_permute2x128_si256(b0, b1, 0x20); - int32x8 c1 = _mm256_permute2x128_si256(b0, b1, 0x31); - int32x8_store(&z[0], c0); - int32x8_store(&z[8], c1); - z += 16; - } - } else { /* p == 1 */ - mask = _mm256_set_epi32(0, -1, -1, 0, 0, -1, -1, 0); - while (z != target) { - int32x8 x0 = int32x8_load(&z[0]); - int32x8 x1 = int32x8_load(&z[8]); - x0 ^= mask; - x1 ^= mask; - int32x8 b0 = _mm256_permute2x128_si256(x0, x1, 0x20); /* A0123B0123 */ - int32x8 b1 = _mm256_permute2x128_si256(x0, x1, 0x31); /* A4567B4567 */ - int32x8 c0 = _mm256_unpacklo_epi64(b0, b1); /* A0145B0145 */ - int32x8 c1 = _mm256_unpackhi_epi64(b0, b1); /* A2367B2367 */ - int32x8_MINMAX(c0, c1); - int32x8 d0 = _mm256_unpacklo_epi64(c0, c1); /* A0123B0123 */ - int32x8 d1 = _mm256_unpackhi_epi64(c0, c1); /* A4567B4567 */ - int32x8_MINMAX(d0, d1); - int32x8 e0 = _mm256_permute2x128_si256(d0, d1, 0x20); - int32x8 e1 = _mm256_permute2x128_si256(d0, d1, 0x31); - int32x8_store(&z[0], e0); - int32x8_store(&z[8], e1); - z += 16; - } - } - - q = n >> 4; - while (q >= 128 || q == 32) { - int32_threestages(x, n, q >> 2); - q >>= 3; - } - while (q >= 16) { - q >>= 1; - for (j = 0; j < n; j += 4 * q) { - for (k = j; k < j + q; k += 8) { - int32x8 x0 = int32x8_load(&x[k]); - int32x8 x1 = int32x8_load(&x[k + q]); - int32x8 x2 = int32x8_load(&x[k + 2 * q]); - int32x8 x3 = int32x8_load(&x[k + 3 * q]); - - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - - int32x8_store(&x[k], x0); - int32x8_store(&x[k + q], x1); - int32x8_store(&x[k + 2 * q], x2); - int32x8_store(&x[k + 3 * q], x3); - } - } - q >>= 1; - } - if (q == 8) { - for (j = 0; j < n; j += 2 * q) { - int32x8 x0 = int32x8_load(&x[j]); - int32x8 x1 = int32x8_load(&x[j + q]); - - int32x8_MINMAX(x0, x1); - - int32x8_store(&x[j], x0); - int32x8_store(&x[j + q], x1); - } - } - - q = n >> 3; - for (k = 0; k < q; k += 8) { - int32x8 x0 = int32x8_load(&x[k]); - int32x8 x1 = int32x8_load(&x[k + q]); - int32x8 x2 = int32x8_load(&x[k + 2 * q]); - int32x8 x3 = int32x8_load(&x[k + 3 * q]); - int32x8 x4 = int32x8_load(&x[k + 4 * q]); - int32x8 x5 = int32x8_load(&x[k + 5 * q]); - int32x8 x6 = int32x8_load(&x[k + 6 * q]); - int32x8 x7 = int32x8_load(&x[k + 7 * q]); - - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - - int32x8_store(&x[k], x0); - int32x8_store(&x[k + q], x1); - int32x8_store(&x[k + 2 * q], x2); - int32x8_store(&x[k + 3 * q], x3); - int32x8_store(&x[k + 4 * q], x4); - int32x8_store(&x[k + 5 * q], x5); - int32x8_store(&x[k + 6 * q], x6); - int32x8_store(&x[k + 7 * q], x7); - } - } - - /* everything is still masked with _mm256_set_epi32(0,-1,0,-1,0,-1,0,-1); */ - mask = _mm256_set1_epi32(-1); - - for (i = 0; i < n; i += 64) { - int32x8 a0 = int32x8_load(&x[i]); - int32x8 a1 = int32x8_load(&x[i + 8]); - int32x8 a2 = int32x8_load(&x[i + 16]); - int32x8 a3 = int32x8_load(&x[i + 24]); - int32x8 a4 = int32x8_load(&x[i + 32]); - int32x8 a5 = int32x8_load(&x[i + 40]); - int32x8 a6 = int32x8_load(&x[i + 48]); - int32x8 a7 = int32x8_load(&x[i + 56]); - - int32x8 b0 = _mm256_unpacklo_epi32(a0, a1); /* AB0AB1AB4AB5 */ - int32x8 b1 = _mm256_unpackhi_epi32(a0, a1); /* AB2AB3AB6AB7 */ - int32x8 b2 = _mm256_unpacklo_epi32(a2, a3); /* CD0CD1CD4CD5 */ - int32x8 b3 = _mm256_unpackhi_epi32(a2, a3); /* CD2CD3CD6CD7 */ - int32x8 b4 = _mm256_unpacklo_epi32(a4, a5); /* EF0EF1EF4EF5 */ - int32x8 b5 = _mm256_unpackhi_epi32(a4, a5); /* EF2EF3EF6EF7 */ - int32x8 b6 = _mm256_unpacklo_epi32(a6, a7); /* GH0GH1GH4GH5 */ - int32x8 b7 = _mm256_unpackhi_epi32(a6, a7); /* GH2GH3GH6GH7 */ - - int32x8 c0 = _mm256_unpacklo_epi64(b0, b2); /* ABCD0ABCD4 */ - int32x8 c1 = _mm256_unpacklo_epi64(b1, b3); /* ABCD2ABCD6 */ - int32x8 c2 = _mm256_unpackhi_epi64(b0, b2); /* ABCD1ABCD5 */ - int32x8 c3 = _mm256_unpackhi_epi64(b1, b3); /* ABCD3ABCD7 */ - int32x8 c4 = _mm256_unpacklo_epi64(b4, b6); /* EFGH0EFGH4 */ - int32x8 c5 = _mm256_unpacklo_epi64(b5, b7); /* EFGH2EFGH6 */ - int32x8 c6 = _mm256_unpackhi_epi64(b4, b6); /* EFGH1EFGH5 */ - int32x8 c7 = _mm256_unpackhi_epi64(b5, b7); /* EFGH3EFGH7 */ - - if (flagdown) { - c2 ^= mask; - c3 ^= mask; - c6 ^= mask; - c7 ^= mask; - } else { - c0 ^= mask; - c1 ^= mask; - c4 ^= mask; - c5 ^= mask; - } - - int32x8 d0 = _mm256_permute2x128_si256(c0, c4, 0x20); /* ABCDEFGH0 */ - int32x8 d1 = _mm256_permute2x128_si256(c2, c6, 0x20); /* ABCDEFGH1 */ - int32x8 d2 = _mm256_permute2x128_si256(c1, c5, 0x20); /* ABCDEFGH2 */ - int32x8 d3 = _mm256_permute2x128_si256(c3, c7, 0x20); /* ABCDEFGH5 */ - int32x8 d4 = _mm256_permute2x128_si256(c0, c4, 0x31); /* ABCDEFGH4 */ - int32x8 d5 = _mm256_permute2x128_si256(c2, c6, 0x31); /* ABCDEFGH3 */ - int32x8 d6 = _mm256_permute2x128_si256(c1, c5, 0x31); /* ABCDEFGH6 */ - int32x8 d7 = _mm256_permute2x128_si256(c3, c7, 0x31); /* ABCDEFGH7 */ - - int32x8_MINMAX(d0, d1); - int32x8_MINMAX(d2, d3); - int32x8_MINMAX(d4, d5); - int32x8_MINMAX(d6, d7); - int32x8_MINMAX(d0, d2); - int32x8_MINMAX(d1, d3); - int32x8_MINMAX(d4, d6); - int32x8_MINMAX(d5, d7); - int32x8_MINMAX(d0, d4); - int32x8_MINMAX(d1, d5); - int32x8_MINMAX(d2, d6); - int32x8_MINMAX(d3, d7); - - int32x8 e0 = _mm256_unpacklo_epi32(d0, d1); - int32x8 e1 = _mm256_unpackhi_epi32(d0, d1); - int32x8 e2 = _mm256_unpacklo_epi32(d2, d3); - int32x8 e3 = _mm256_unpackhi_epi32(d2, d3); - int32x8 e4 = _mm256_unpacklo_epi32(d4, d5); - int32x8 e5 = _mm256_unpackhi_epi32(d4, d5); - int32x8 e6 = _mm256_unpacklo_epi32(d6, d7); - int32x8 e7 = _mm256_unpackhi_epi32(d6, d7); - - int32x8 f0 = _mm256_unpacklo_epi64(e0, e2); - int32x8 f1 = _mm256_unpacklo_epi64(e1, e3); - int32x8 f2 = _mm256_unpackhi_epi64(e0, e2); - int32x8 f3 = _mm256_unpackhi_epi64(e1, e3); - int32x8 f4 = _mm256_unpacklo_epi64(e4, e6); - int32x8 f5 = _mm256_unpacklo_epi64(e5, e7); - int32x8 f6 = _mm256_unpackhi_epi64(e4, e6); - int32x8 f7 = _mm256_unpackhi_epi64(e5, e7); - - int32x8 g0 = _mm256_permute2x128_si256(f0, f4, 0x20); - int32x8 g1 = _mm256_permute2x128_si256(f2, f6, 0x20); - int32x8 g2 = _mm256_permute2x128_si256(f1, f5, 0x20); - int32x8 g3 = _mm256_permute2x128_si256(f3, f7, 0x20); - int32x8 g4 = _mm256_permute2x128_si256(f0, f4, 0x31); - int32x8 g5 = _mm256_permute2x128_si256(f2, f6, 0x31); - int32x8 g6 = _mm256_permute2x128_si256(f1, f5, 0x31); - int32x8 g7 = _mm256_permute2x128_si256(f3, f7, 0x31); - - int32x8_store(&x[i], g0); - int32x8_store(&x[i + 8], g1); - int32x8_store(&x[i + 16], g2); - int32x8_store(&x[i + 24], g3); - int32x8_store(&x[i + 32], g4); - int32x8_store(&x[i + 40], g5); - int32x8_store(&x[i + 48], g6); - int32x8_store(&x[i + 56], g7); - } - - q = n >> 4; - while (q >= 128 || q == 32) { - q >>= 2; - for (j = 0; j < n; j += 8 * q) { - for (i = j; i < j + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8 x4 = int32x8_load(&x[i + 4 * q]); - int32x8 x5 = int32x8_load(&x[i + 5 * q]); - int32x8 x6 = int32x8_load(&x[i + 6 * q]); - int32x8 x7 = int32x8_load(&x[i + 7 * q]); - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - int32x8_store(&x[i + 4 * q], x4); - int32x8_store(&x[i + 5 * q], x5); - int32x8_store(&x[i + 6 * q], x6); - int32x8_store(&x[i + 7 * q], x7); - } - } - q >>= 1; - } - while (q >= 16) { - q >>= 1; - for (j = 0; j < n; j += 4 * q) { - for (i = j; i < j + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - } - } - q >>= 1; - } - if (q == 8) { - for (j = 0; j < n; j += q + q) { - int32x8 x0 = int32x8_load(&x[j]); - int32x8 x1 = int32x8_load(&x[j + q]); - int32x8_MINMAX(x0, x1); - int32x8_store(&x[j], x0); - int32x8_store(&x[j + q], x1); - } - } - - q = n >> 3; - for (i = 0; i < q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8 x4 = int32x8_load(&x[i + 4 * q]); - int32x8 x5 = int32x8_load(&x[i + 5 * q]); - int32x8 x6 = int32x8_load(&x[i + 6 * q]); - int32x8 x7 = int32x8_load(&x[i + 7 * q]); - - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - - int32x8 b0 = _mm256_unpacklo_epi32(x0, x4); /* AE0AE1AE4AE5 */ - int32x8 b1 = _mm256_unpackhi_epi32(x0, x4); /* AE2AE3AE6AE7 */ - int32x8 b2 = _mm256_unpacklo_epi32(x1, x5); /* BF0BF1BF4BF5 */ - int32x8 b3 = _mm256_unpackhi_epi32(x1, x5); /* BF2BF3BF6BF7 */ - int32x8 b4 = _mm256_unpacklo_epi32(x2, x6); /* CG0CG1CG4CG5 */ - int32x8 b5 = _mm256_unpackhi_epi32(x2, x6); /* CG2CG3CG6CG7 */ - int32x8 b6 = _mm256_unpacklo_epi32(x3, x7); /* DH0DH1DH4DH5 */ - int32x8 b7 = _mm256_unpackhi_epi32(x3, x7); /* DH2DH3DH6DH7 */ - - int32x8 c0 = _mm256_unpacklo_epi64(b0, b4); /* AECG0AECG4 */ - int32x8 c1 = _mm256_unpacklo_epi64(b1, b5); /* AECG2AECG6 */ - int32x8 c2 = _mm256_unpackhi_epi64(b0, b4); /* AECG1AECG5 */ - int32x8 c3 = _mm256_unpackhi_epi64(b1, b5); /* AECG3AECG7 */ - int32x8 c4 = _mm256_unpacklo_epi64(b2, b6); /* BFDH0BFDH4 */ - int32x8 c5 = _mm256_unpacklo_epi64(b3, b7); /* BFDH2BFDH6 */ - int32x8 c6 = _mm256_unpackhi_epi64(b2, b6); /* BFDH1BFDH5 */ - int32x8 c7 = _mm256_unpackhi_epi64(b3, b7); /* BFDH3BFDH7 */ - - int32x8 d0 = _mm256_permute2x128_si256(c0, c4, 0x20); /* AECGBFDH0 */ - int32x8 d1 = _mm256_permute2x128_si256(c1, c5, 0x20); /* AECGBFDH2 */ - int32x8 d2 = _mm256_permute2x128_si256(c2, c6, 0x20); /* AECGBFDH1 */ - int32x8 d3 = _mm256_permute2x128_si256(c3, c7, 0x20); /* AECGBFDH3 */ - int32x8 d4 = _mm256_permute2x128_si256(c0, c4, 0x31); /* AECGBFDH4 */ - int32x8 d5 = _mm256_permute2x128_si256(c1, c5, 0x31); /* AECGBFDH6 */ - int32x8 d6 = _mm256_permute2x128_si256(c2, c6, 0x31); /* AECGBFDH5 */ - int32x8 d7 = _mm256_permute2x128_si256(c3, c7, 0x31); /* AECGBFDH7 */ - - if (flagdown) { - d0 ^= mask; - d1 ^= mask; - d2 ^= mask; - d3 ^= mask; - d4 ^= mask; - d5 ^= mask; - d6 ^= mask; - d7 ^= mask; - } - - int32x8_store(&x[i], d0); - int32x8_store(&x[i + q], d4); - int32x8_store(&x[i + 2 * q], d1); - int32x8_store(&x[i + 3 * q], d5); - int32x8_store(&x[i + 4 * q], d2); - int32x8_store(&x[i + 5 * q], d6); - int32x8_store(&x[i + 6 * q], d3); - int32x8_store(&x[i + 7 * q], d7); - } -} - -void PQCLEAN_NTRUHPS4096821_AVX2_crypto_sort_int32(int32 *x, size_t n) { - size_t q, i, j; - - if (n <= 8) { - if (n == 8) { - int32_MINMAX(&x[0], &x[1]); - int32_MINMAX(&x[1], &x[2]); - int32_MINMAX(&x[2], &x[3]); - int32_MINMAX(&x[3], &x[4]); - int32_MINMAX(&x[4], &x[5]); - int32_MINMAX(&x[5], &x[6]); - int32_MINMAX(&x[6], &x[7]); - } - if (n >= 7) { - int32_MINMAX(&x[0], &x[1]); - int32_MINMAX(&x[1], &x[2]); - int32_MINMAX(&x[2], &x[3]); - int32_MINMAX(&x[3], &x[4]); - int32_MINMAX(&x[4], &x[5]); - int32_MINMAX(&x[5], &x[6]); - } - if (n >= 6) { - int32_MINMAX(&x[0], &x[1]); - int32_MINMAX(&x[1], &x[2]); - int32_MINMAX(&x[2], &x[3]); - int32_MINMAX(&x[3], &x[4]); - int32_MINMAX(&x[4], &x[5]); - } - if (n >= 5) { - int32_MINMAX(&x[0], &x[1]); - int32_MINMAX(&x[1], &x[2]); - int32_MINMAX(&x[2], &x[3]); - int32_MINMAX(&x[3], &x[4]); - } - if (n >= 4) { - int32_MINMAX(&x[0], &x[1]); - int32_MINMAX(&x[1], &x[2]); - int32_MINMAX(&x[2], &x[3]); - } - if (n >= 3) { - int32_MINMAX(&x[0], &x[1]); - int32_MINMAX(&x[1], &x[2]); - } - if (n >= 2) { - int32_MINMAX(&x[0], &x[1]); - } - return; - } - - if (!(n & (n - 1))) { - int32_sort_2power(x, n, 0); - return; - } - - q = 8; - while (q < n - q) { - q += q; - } - /* n > q >= 8 */ - - if (q <= 128) { /* n <= 256 */ - int32x8 y[32]; - for (i = q >> 3; i < q >> 2; ++i) { - y[i] = _mm256_set1_epi32(0x7fffffff); - } - for (i = 0; i < n; ++i) { - ((int32 *) y)[i] = x[i]; - } - int32_sort_2power((int32 *) y, 2 * q, 0); - for (i = 0; i < n; ++i) { - x[i] = ((int32 *) y)[i]; - } - return; - } - - int32_sort_2power(x, q, 1); - PQCLEAN_NTRUHPS4096821_AVX2_crypto_sort_int32(x + q, n - q); - - while (q >= 64) { - q >>= 2; - j = int32_threestages(x, n, q); - minmax_vector(x + j, x + j + 4 * q, n - 4 * q - j); - if (j + 4 * q <= n) { - for (i = j; i < j + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - } - j += 4 * q; - } - minmax_vector(x + j, x + j + 2 * q, n - 2 * q - j); - if (j + 2 * q <= n) { - for (i = j; i < j + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8_MINMAX(x0, x1); - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - } - j += 2 * q; - } - minmax_vector(x + j, x + j + q, n - q - j); - q >>= 1; - } - if (q == 32) { - j = 0; - for (; j + 64 <= n; j += 64) { - int32x8 x0 = int32x8_load(&x[j]); - int32x8 x1 = int32x8_load(&x[j + 8]); - int32x8 x2 = int32x8_load(&x[j + 16]); - int32x8 x3 = int32x8_load(&x[j + 24]); - int32x8 x4 = int32x8_load(&x[j + 32]); - int32x8 x5 = int32x8_load(&x[j + 40]); - int32x8 x6 = int32x8_load(&x[j + 48]); - int32x8 x7 = int32x8_load(&x[j + 56]); - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - int32x8 a0 = _mm256_permute2x128_si256(x0, x1, 0x20); - int32x8 a1 = _mm256_permute2x128_si256(x0, x1, 0x31); - int32x8 a2 = _mm256_permute2x128_si256(x2, x3, 0x20); - int32x8 a3 = _mm256_permute2x128_si256(x2, x3, 0x31); - int32x8 a4 = _mm256_permute2x128_si256(x4, x5, 0x20); - int32x8 a5 = _mm256_permute2x128_si256(x4, x5, 0x31); - int32x8 a6 = _mm256_permute2x128_si256(x6, x7, 0x20); - int32x8 a7 = _mm256_permute2x128_si256(x6, x7, 0x31); - int32x8_MINMAX(a0, a1); - int32x8_MINMAX(a2, a3); - int32x8_MINMAX(a4, a5); - int32x8_MINMAX(a6, a7); - int32x8 b0 = _mm256_permute2x128_si256(a0, a1, 0x20); - int32x8 b1 = _mm256_permute2x128_si256(a0, a1, 0x31); - int32x8 b2 = _mm256_permute2x128_si256(a2, a3, 0x20); - int32x8 b3 = _mm256_permute2x128_si256(a2, a3, 0x31); - int32x8 b4 = _mm256_permute2x128_si256(a4, a5, 0x20); - int32x8 b5 = _mm256_permute2x128_si256(a4, a5, 0x31); - int32x8 b6 = _mm256_permute2x128_si256(a6, a7, 0x20); - int32x8 b7 = _mm256_permute2x128_si256(a6, a7, 0x31); - int32x8 c0 = _mm256_unpacklo_epi64(b0, b1); - int32x8 c1 = _mm256_unpackhi_epi64(b0, b1); - int32x8 c2 = _mm256_unpacklo_epi64(b2, b3); - int32x8 c3 = _mm256_unpackhi_epi64(b2, b3); - int32x8 c4 = _mm256_unpacklo_epi64(b4, b5); - int32x8 c5 = _mm256_unpackhi_epi64(b4, b5); - int32x8 c6 = _mm256_unpacklo_epi64(b6, b7); - int32x8 c7 = _mm256_unpackhi_epi64(b6, b7); - int32x8_MINMAX(c0, c1); - int32x8_MINMAX(c2, c3); - int32x8_MINMAX(c4, c5); - int32x8_MINMAX(c6, c7); - int32x8 d0 = _mm256_unpacklo_epi32(c0, c1); - int32x8 d1 = _mm256_unpackhi_epi32(c0, c1); - int32x8 d2 = _mm256_unpacklo_epi32(c2, c3); - int32x8 d3 = _mm256_unpackhi_epi32(c2, c3); - int32x8 d4 = _mm256_unpacklo_epi32(c4, c5); - int32x8 d5 = _mm256_unpackhi_epi32(c4, c5); - int32x8 d6 = _mm256_unpacklo_epi32(c6, c7); - int32x8 d7 = _mm256_unpackhi_epi32(c6, c7); - int32x8 e0 = _mm256_unpacklo_epi64(d0, d1); - int32x8 e1 = _mm256_unpackhi_epi64(d0, d1); - int32x8 e2 = _mm256_unpacklo_epi64(d2, d3); - int32x8 e3 = _mm256_unpackhi_epi64(d2, d3); - int32x8 e4 = _mm256_unpacklo_epi64(d4, d5); - int32x8 e5 = _mm256_unpackhi_epi64(d4, d5); - int32x8 e6 = _mm256_unpacklo_epi64(d6, d7); - int32x8 e7 = _mm256_unpackhi_epi64(d6, d7); - int32x8_MINMAX(e0, e1); - int32x8_MINMAX(e2, e3); - int32x8_MINMAX(e4, e5); - int32x8_MINMAX(e6, e7); - int32x8 f0 = _mm256_unpacklo_epi32(e0, e1); - int32x8 f1 = _mm256_unpackhi_epi32(e0, e1); - int32x8 f2 = _mm256_unpacklo_epi32(e2, e3); - int32x8 f3 = _mm256_unpackhi_epi32(e2, e3); - int32x8 f4 = _mm256_unpacklo_epi32(e4, e5); - int32x8 f5 = _mm256_unpackhi_epi32(e4, e5); - int32x8 f6 = _mm256_unpacklo_epi32(e6, e7); - int32x8 f7 = _mm256_unpackhi_epi32(e6, e7); - int32x8_store(&x[j], f0); - int32x8_store(&x[j + 8], f1); - int32x8_store(&x[j + 16], f2); - int32x8_store(&x[j + 24], f3); - int32x8_store(&x[j + 32], f4); - int32x8_store(&x[j + 40], f5); - int32x8_store(&x[j + 48], f6); - int32x8_store(&x[j + 56], f7); - } - minmax_vector(x + j, x + j + 32, n - 32 - j); - goto continue16; - } - if (q == 16) { - j = 0; -continue16: - for (; j + 32 <= n; j += 32) { - int32x8 x0 = int32x8_load(&x[j]); - int32x8 x1 = int32x8_load(&x[j + 8]); - int32x8 x2 = int32x8_load(&x[j + 16]); - int32x8 x3 = int32x8_load(&x[j + 24]); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8 a0 = _mm256_permute2x128_si256(x0, x1, 0x20); - int32x8 a1 = _mm256_permute2x128_si256(x0, x1, 0x31); - int32x8 a2 = _mm256_permute2x128_si256(x2, x3, 0x20); - int32x8 a3 = _mm256_permute2x128_si256(x2, x3, 0x31); - int32x8_MINMAX(a0, a1); - int32x8_MINMAX(a2, a3); - int32x8 b0 = _mm256_permute2x128_si256(a0, a1, 0x20); - int32x8 b1 = _mm256_permute2x128_si256(a0, a1, 0x31); - int32x8 b2 = _mm256_permute2x128_si256(a2, a3, 0x20); - int32x8 b3 = _mm256_permute2x128_si256(a2, a3, 0x31); - int32x8 c0 = _mm256_unpacklo_epi64(b0, b1); - int32x8 c1 = _mm256_unpackhi_epi64(b0, b1); - int32x8 c2 = _mm256_unpacklo_epi64(b2, b3); - int32x8 c3 = _mm256_unpackhi_epi64(b2, b3); - int32x8_MINMAX(c0, c1); - int32x8_MINMAX(c2, c3); - int32x8 d0 = _mm256_unpacklo_epi32(c0, c1); - int32x8 d1 = _mm256_unpackhi_epi32(c0, c1); - int32x8 d2 = _mm256_unpacklo_epi32(c2, c3); - int32x8 d3 = _mm256_unpackhi_epi32(c2, c3); - int32x8 e0 = _mm256_unpacklo_epi64(d0, d1); - int32x8 e1 = _mm256_unpackhi_epi64(d0, d1); - int32x8 e2 = _mm256_unpacklo_epi64(d2, d3); - int32x8 e3 = _mm256_unpackhi_epi64(d2, d3); - int32x8_MINMAX(e0, e1); - int32x8_MINMAX(e2, e3); - int32x8 f0 = _mm256_unpacklo_epi32(e0, e1); - int32x8 f1 = _mm256_unpackhi_epi32(e0, e1); - int32x8 f2 = _mm256_unpacklo_epi32(e2, e3); - int32x8 f3 = _mm256_unpackhi_epi32(e2, e3); - int32x8_store(&x[j], f0); - int32x8_store(&x[j + 8], f1); - int32x8_store(&x[j + 16], f2); - int32x8_store(&x[j + 24], f3); - } - minmax_vector(x + j, x + j + 16, n - 16 - j); - goto continue8; - } - /* q == 8 */ - j = 0; -continue8: - for (; j + 16 <= n; j += 16) { - int32x8 x0 = int32x8_load(&x[j]); - int32x8 x1 = int32x8_load(&x[j + 8]); - int32x8_MINMAX(x0, x1); - int32x8_store(&x[j], x0); - int32x8_store(&x[j + 8], x1); - int32x8 a0 = _mm256_permute2x128_si256(x0, x1, 0x20); /* x0123y0123 */ - int32x8 a1 = _mm256_permute2x128_si256(x0, x1, 0x31); /* x4567y4567 */ - int32x8_MINMAX(a0, a1); - int32x8 b0 = _mm256_permute2x128_si256(a0, a1, 0x20); /* x01234567 */ - int32x8 b1 = _mm256_permute2x128_si256(a0, a1, 0x31); /* y01234567 */ - int32x8 c0 = _mm256_unpacklo_epi64(b0, b1); /* x01y01x45y45 */ - int32x8 c1 = _mm256_unpackhi_epi64(b0, b1); /* x23y23x67y67 */ - int32x8_MINMAX(c0, c1); - int32x8 d0 = _mm256_unpacklo_epi32(c0, c1); /* x02x13x46x57 */ - int32x8 d1 = _mm256_unpackhi_epi32(c0, c1); /* y02y13y46y57 */ - int32x8 e0 = _mm256_unpacklo_epi64(d0, d1); /* x02y02x46y46 */ - int32x8 e1 = _mm256_unpackhi_epi64(d0, d1); /* x13y13x57y57 */ - int32x8_MINMAX(e0, e1); - int32x8 f0 = _mm256_unpacklo_epi32(e0, e1); /* x01234567 */ - int32x8 f1 = _mm256_unpackhi_epi32(e0, e1); /* y01234567 */ - int32x8_store(&x[j], f0); - int32x8_store(&x[j + 8], f1); - } - minmax_vector(x + j, x + j + 8, n - 8 - j); - if (j + 8 <= n) { - int32_MINMAX(&x[j], &x[j + 4]); - int32_MINMAX(&x[j + 1], &x[j + 5]); - int32_MINMAX(&x[j + 2], &x[j + 6]); - int32_MINMAX(&x[j + 3], &x[j + 7]); - int32_MINMAX(&x[j], &x[j + 2]); - int32_MINMAX(&x[j + 1], &x[j + 3]); - int32_MINMAX(&x[j], &x[j + 1]); - int32_MINMAX(&x[j + 2], &x[j + 3]); - int32_MINMAX(&x[j + 4], &x[j + 6]); - int32_MINMAX(&x[j + 5], &x[j + 7]); - int32_MINMAX(&x[j + 4], &x[j + 5]); - int32_MINMAX(&x[j + 6], &x[j + 7]); - j += 8; - } - minmax_vector(x + j, x + j + 4, n - 4 - j); - if (j + 4 <= n) { - int32_MINMAX(&x[j], &x[j + 2]); - int32_MINMAX(&x[j + 1], &x[j + 3]); - int32_MINMAX(&x[j], &x[j + 1]); - int32_MINMAX(&x[j + 2], &x[j + 3]); - j += 4; - } - if (j + 3 <= n) { - int32_MINMAX(&x[j], &x[j + 2]); - } - if (j + 2 <= n) { - int32_MINMAX(&x[j], &x[j + 1]); - } -} diff --git a/src/kem/ntru/ntruhps4096821/avx2/crypto_sort_int32.h b/src/kem/ntru/ntruhps4096821/avx2/crypto_sort_int32.h deleted file mode 100644 index 63d91ade..00000000 --- a/src/kem/ntru/ntruhps4096821/avx2/crypto_sort_int32.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef CRYPTO_SORT -#define CRYPTO_SORT - -#include "params.h" - -#include -#include - -void PQCLEAN_NTRUHPS4096821_AVX2_crypto_sort_int32(int32_t *x, size_t n); - -#endif diff --git a/src/kem/ntru/ntruhps4096821/avx2/kem.c b/src/kem/ntru/ntruhps4096821/avx2/kem.c deleted file mode 100644 index cc7e3887..00000000 --- a/src/kem/ntru/ntruhps4096821/avx2/kem.c +++ /dev/null @@ -1,63 +0,0 @@ -#include "api.h" -#include "cmov.h" -#include "fips202.h" -#include "owcpa.h" -#include "params.h" -#include "randombytes.h" -#include "sample.h" - -// API FUNCTIONS -int PQCLEAN_NTRUHPS4096821_AVX2_crypto_kem_keypair(uint8_t *pk, uint8_t *sk) { - uint8_t seed[NTRU_SAMPLE_FG_BYTES]; - - randombytes(seed, NTRU_SAMPLE_FG_BYTES); - PQCLEAN_NTRUHPS4096821_AVX2_owcpa_keypair(pk, sk, seed); - - randombytes(sk + NTRU_OWCPA_SECRETKEYBYTES, NTRU_PRFKEYBYTES); - - return 0; -} - -int PQCLEAN_NTRUHPS4096821_AVX2_crypto_kem_enc(uint8_t *c, uint8_t *k, const uint8_t *pk) { - poly r, m; - uint8_t rm[NTRU_OWCPA_MSGBYTES]; - uint8_t rm_seed[NTRU_SAMPLE_RM_BYTES]; - - randombytes(rm_seed, NTRU_SAMPLE_RM_BYTES); - - PQCLEAN_NTRUHPS4096821_AVX2_sample_rm(&r, &m, rm_seed); - - PQCLEAN_NTRUHPS4096821_AVX2_poly_S3_tobytes(rm, &r); - PQCLEAN_NTRUHPS4096821_AVX2_poly_S3_tobytes(rm + NTRU_PACK_TRINARY_BYTES, &m); - sha3_256(k, rm, NTRU_OWCPA_MSGBYTES); - - PQCLEAN_NTRUHPS4096821_AVX2_poly_Z3_to_Zq(&r); - PQCLEAN_NTRUHPS4096821_AVX2_owcpa_enc(c, &r, &m, pk); - - return 0; -} - -int PQCLEAN_NTRUHPS4096821_AVX2_crypto_kem_dec(uint8_t *k, const uint8_t *c, const uint8_t *sk) { - int i, fail; - uint8_t rm[NTRU_OWCPA_MSGBYTES]; - uint8_t buf[NTRU_PRFKEYBYTES + NTRU_CIPHERTEXTBYTES]; - - fail = PQCLEAN_NTRUHPS4096821_AVX2_owcpa_dec(rm, c, sk); - /* If fail = 0 then c = Enc(h, rm). There is no need to re-encapsulate. */ - /* See comment in PQCLEAN_NTRUHPS4096821_AVX2_owcpa_dec for details. */ - - sha3_256(k, rm, NTRU_OWCPA_MSGBYTES); - - /* shake(secret PRF key || input ciphertext) */ - for (i = 0; i < NTRU_PRFKEYBYTES; i++) { - buf[i] = sk[i + NTRU_OWCPA_SECRETKEYBYTES]; - } - for (i = 0; i < NTRU_CIPHERTEXTBYTES; i++) { - buf[NTRU_PRFKEYBYTES + i] = c[i]; - } - sha3_256(rm, buf, NTRU_PRFKEYBYTES + NTRU_CIPHERTEXTBYTES); - - PQCLEAN_NTRUHPS4096821_AVX2_cmov(k, rm, NTRU_SHAREDKEYBYTES, (unsigned char) fail); - - return 0; -} diff --git a/src/kem/ntru/ntruhps4096821/avx2/owcpa.c b/src/kem/ntru/ntruhps4096821/avx2/owcpa.c deleted file mode 100644 index 6a73b097..00000000 --- a/src/kem/ntru/ntruhps4096821/avx2/owcpa.c +++ /dev/null @@ -1,183 +0,0 @@ -#include "owcpa.h" -#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) { - /* 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; - uint32_t t = 0; - uint16_t c; - 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 |= 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, 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; - uint32_t t = 0; - uint16_t ps = 0; - uint16_t ms = 0; - for (i = 0; i < NTRU_N; i++) { - ps += m->coeffs[i] & 1; - ms += m->coeffs[i] & 2; - } - 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, - unsigned char *sk, - const unsigned char seed[NTRU_SAMPLE_FG_BYTES]) { - int i; - - poly x1, x2, x3, x4, x5; - - poly *f = &x1, *g = &x2, *invf_mod3 = &x3; - poly *gf = &x3, *invgf = &x4, *tmp = &x5; - poly *invh = &x3, *h = &x3; - - PQCLEAN_NTRUHPS4096821_AVX2_sample_fg(f, g, seed); - - PQCLEAN_NTRUHPS4096821_AVX2_poly_S3_inv(invf_mod3, f); - PQCLEAN_NTRUHPS4096821_AVX2_poly_S3_tobytes(sk, f); - PQCLEAN_NTRUHPS4096821_AVX2_poly_S3_tobytes(sk + NTRU_PACK_TRINARY_BYTES, invf_mod3); - - /* Lift coeffs of f and g from Z_p to Z_q */ - PQCLEAN_NTRUHPS4096821_AVX2_poly_Z3_to_Zq(f); - PQCLEAN_NTRUHPS4096821_AVX2_poly_Z3_to_Zq(g); - - - /* g = 3*g */ - for (i = 0; i < NTRU_N; i++) { - g->coeffs[i] = 3 * g->coeffs[i]; - } - - PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_mul(gf, g, f); - - PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_inv(invgf, gf); - - PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_mul(tmp, invgf, f); - PQCLEAN_NTRUHPS4096821_AVX2_poly_Sq_mul(invh, tmp, f); - PQCLEAN_NTRUHPS4096821_AVX2_poly_Sq_tobytes(sk + 2 * NTRU_PACK_TRINARY_BYTES, invh); - - PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_mul(tmp, invgf, g); - PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_mul(h, tmp, g); - PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_sum_zero_tobytes(pk, h); -} - - -void PQCLEAN_NTRUHPS4096821_AVX2_owcpa_enc(unsigned char *c, - const poly *r, - const poly *m, - const unsigned char *pk) { - int i; - poly x1, x2; - poly *h = &x1, *liftm = &x1; - poly *ct = &x2; - - PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_sum_zero_frombytes(h, pk); - - PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_mul(ct, r, h); - - PQCLEAN_NTRUHPS4096821_AVX2_poly_lift(liftm, m); - for (i = 0; i < NTRU_N; i++) { - ct->coeffs[i] = ct->coeffs[i] + liftm->coeffs[i]; - } - - PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_sum_zero_tobytes(c, ct); -} - -int PQCLEAN_NTRUHPS4096821_AVX2_owcpa_dec(unsigned char *rm, - const unsigned char *ciphertext, - const unsigned char *secretkey) { - int i; - int fail; - poly x1, x2, x3, x4; - - poly *c = &x1, *f = &x2, *cf = &x3; - poly *mf = &x2, *finv3 = &x3, *m = &x4; - poly *liftm = &x2, *invh = &x3, *r = &x4; - poly *b = &x1; - - PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_sum_zero_frombytes(c, ciphertext); - PQCLEAN_NTRUHPS4096821_AVX2_poly_S3_frombytes(f, secretkey); - PQCLEAN_NTRUHPS4096821_AVX2_poly_Z3_to_Zq(f); - - PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_mul(cf, c, f); - PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_to_S3(mf, cf); - - PQCLEAN_NTRUHPS4096821_AVX2_poly_S3_frombytes(finv3, secretkey + NTRU_PACK_TRINARY_BYTES); - PQCLEAN_NTRUHPS4096821_AVX2_poly_S3_mul(m, mf, finv3); - PQCLEAN_NTRUHPS4096821_AVX2_poly_S3_tobytes(rm + NTRU_PACK_TRINARY_BYTES, m); - - fail = 0; - - /* 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 */ - /* r (defined as b/h mod (q, Phi_n)) and m are in the message space. */ - /* (m can take any value in S3 in NTRU_HRSS) */ - fail |= owcpa_check_m(m); - - /* b = c - Lift(m) mod (q, x^n - 1) */ - PQCLEAN_NTRUHPS4096821_AVX2_poly_lift(liftm, m); - for (i = 0; i < NTRU_N; i++) { - b->coeffs[i] = c->coeffs[i] - liftm->coeffs[i]; - } - - /* r = b / h mod (q, Phi_n) */ - PQCLEAN_NTRUHPS4096821_AVX2_poly_Sq_frombytes(invh, secretkey + 2 * NTRU_PACK_TRINARY_BYTES); - PQCLEAN_NTRUHPS4096821_AVX2_poly_Sq_mul(r, b, invh); - - /* NOTE: Our definition of r as b/h mod (q, Phi_n) follows Figure 4 of */ - /* [Sch18] https://eprint.iacr.org/2018/1174/20181203:032458. */ - /* This differs from Figure 10 of Saito--Xagawa--Yamakawa */ - /* [SXY17] https://eprint.iacr.org/2017/1005/20180516:055500 */ - /* where r gets a final reduction modulo p. */ - /* We need this change to use Proposition 1 of [Sch18]. */ - - /* Proposition 1 of [Sch18] shows that re-encryption with (r,m) yields c. */ - /* if and only if fail==0 after the following call to owcpa_check_r */ - /* The procedure given in Fig. 8 of [Sch18] can be skipped because we have */ - /* c(1) = 0 due to the use of poly_Rq_sum_zero_{to,from}bytes. */ - fail |= owcpa_check_r(r); - - PQCLEAN_NTRUHPS4096821_AVX2_poly_trinary_Zq_to_Z3(r); - PQCLEAN_NTRUHPS4096821_AVX2_poly_S3_tobytes(rm, r); - - return fail; -} diff --git a/src/kem/ntru/ntruhps4096821/avx2/owcpa.h b/src/kem/ntru/ntruhps4096821/avx2/owcpa.h deleted file mode 100644 index 7c880f62..00000000 --- a/src/kem/ntru/ntruhps4096821/avx2/owcpa.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef OWCPA_H -#define OWCPA_H - -#include "params.h" -#include "poly.h" - -void PQCLEAN_NTRUHPS4096821_AVX2_owcpa_keypair(unsigned char *pk, - unsigned char *sk, - const unsigned char seed[NTRU_SAMPLE_FG_BYTES]); - -void PQCLEAN_NTRUHPS4096821_AVX2_owcpa_enc(unsigned char *c, - const poly *r, - const poly *m, - const unsigned char *pk); - -int PQCLEAN_NTRUHPS4096821_AVX2_owcpa_dec(unsigned char *rm, - const unsigned char *ciphertext, - const unsigned char *secretkey); -#endif diff --git a/src/kem/ntru/ntruhps4096821/avx2/pack3.c b/src/kem/ntru/ntruhps4096821/avx2/pack3.c deleted file mode 100644 index df9ec285..00000000 --- a/src/kem/ntru/ntruhps4096821/avx2/pack3.c +++ /dev/null @@ -1,32 +0,0 @@ -#include "poly.h" - -void PQCLEAN_NTRUHPS4096821_AVX2_poly_S3_tobytes(unsigned char msg[NTRU_OWCPA_MSGBYTES], const poly *a) { - int i; - unsigned char c; - - for (i = 0; i < NTRU_PACK_DEG / 5; i++) { - c = a->coeffs[5 * i + 4] & 255; - c = (3 * c + a->coeffs[5 * i + 3]) & 255; - c = (3 * c + a->coeffs[5 * i + 2]) & 255; - c = (3 * c + a->coeffs[5 * i + 1]) & 255; - c = (3 * c + a->coeffs[5 * i + 0]) & 255; - msg[i] = c; - } -} - -void PQCLEAN_NTRUHPS4096821_AVX2_poly_S3_frombytes(poly *r, const unsigned char msg[NTRU_OWCPA_MSGBYTES]) { - int i; - unsigned char c; - - for (i = 0; i < NTRU_PACK_DEG / 5; i++) { - c = msg[i]; - r->coeffs[5 * i + 0] = c; - r->coeffs[5 * i + 1] = c * 171 >> 9; // this is division by 3 - r->coeffs[5 * i + 2] = c * 57 >> 9; // division by 3^2 - r->coeffs[5 * i + 3] = c * 19 >> 9; // division by 3^3 - r->coeffs[5 * i + 4] = c * 203 >> 14; // etc. - } - r->coeffs[NTRU_N - 1] = 0; - PQCLEAN_NTRUHPS4096821_AVX2_poly_mod_3_Phi_n(r); -} - diff --git a/src/kem/ntru/ntruhps4096821/avx2/packq.c b/src/kem/ntru/ntruhps4096821/avx2/packq.c deleted file mode 100644 index dccacc72..00000000 --- a/src/kem/ntru/ntruhps4096821/avx2/packq.c +++ /dev/null @@ -1,36 +0,0 @@ -#include "poly.h" - - -void PQCLEAN_NTRUHPS4096821_AVX2_poly_Sq_tobytes(unsigned char *r, const poly *a) { - int i; - - for (i = 0; i < NTRU_PACK_DEG / 2; i++) { - r[3 * i + 0] = (unsigned char) ( MODQ(a->coeffs[2 * i + 0]) & 0xff); - r[3 * i + 1] = (unsigned char) ((MODQ(a->coeffs[2 * i + 0]) >> 8) | ((MODQ(a->coeffs[2 * i + 1]) & 0x0f) << 4)); - r[3 * i + 2] = (unsigned char) ((MODQ(a->coeffs[2 * i + 1]) >> 4)); - } -} - -void PQCLEAN_NTRUHPS4096821_AVX2_poly_Sq_frombytes(poly *r, const unsigned char *a) { - int i; - for (i = 0; i < NTRU_PACK_DEG / 2; i++) { - r->coeffs[2 * i + 0] = (a[3 * i + 0] >> 0) | (((uint16_t)a[3 * i + 1] & 0x0f) << 8); - r->coeffs[2 * i + 1] = (a[3 * i + 1] >> 4) | (((uint16_t)a[3 * i + 2] & 0xff) << 4); - } - r->coeffs[NTRU_N - 1] = 0; -} - -void PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_sum_zero_tobytes(unsigned char *r, const poly *a) { - PQCLEAN_NTRUHPS4096821_AVX2_poly_Sq_tobytes(r, a); -} - -void PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_sum_zero_frombytes(poly *r, const unsigned char *a) { - int i; - PQCLEAN_NTRUHPS4096821_AVX2_poly_Sq_frombytes(r, a); - - /* Set r[n-1] so that the sum of coefficients is zero mod q */ - r->coeffs[NTRU_N - 1] = 0; - for (i = 0; i < NTRU_PACK_DEG; i++) { - r->coeffs[NTRU_N - 1] -= r->coeffs[i]; - } -} diff --git a/src/kem/ntru/ntruhps4096821/avx2/params.h b/src/kem/ntru/ntruhps4096821/avx2/params.h deleted file mode 100644 index f09b48fa..00000000 --- a/src/kem/ntru/ntruhps4096821/avx2/params.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef PARAMS_H -#define PARAMS_H - -#define NTRU_HPS -#define NTRU_N 821 -#define NTRU_LOGQ 12 - - -/* Do not modify below this line */ - -#define PAD32(X) ((((X) + 31)/32)*32) - -#define NTRU_Q (1 << NTRU_LOGQ) -#define NTRU_WEIGHT (NTRU_Q/8 - 2) - -#define NTRU_SEEDBYTES 32 -#define NTRU_PRFKEYBYTES 32 -#define NTRU_SHAREDKEYBYTES 32 - -#define NTRU_SAMPLE_IID_BYTES (NTRU_N-1) -#define NTRU_SAMPLE_FT_BYTES ((30*(NTRU_N-1)+7)/8) -#define NTRU_SAMPLE_FG_BYTES (NTRU_SAMPLE_IID_BYTES+NTRU_SAMPLE_FT_BYTES) -#define NTRU_SAMPLE_RM_BYTES (NTRU_SAMPLE_IID_BYTES+NTRU_SAMPLE_FT_BYTES) - -#define NTRU_PACK_DEG (NTRU_N-1) -#define NTRU_PACK_TRINARY_BYTES ((NTRU_PACK_DEG+4)/5) - -#define NTRU_OWCPA_MSGBYTES (2*NTRU_PACK_TRINARY_BYTES) -#define NTRU_OWCPA_PUBLICKEYBYTES ((NTRU_LOGQ*NTRU_PACK_DEG+7)/8) -#define NTRU_OWCPA_SECRETKEYBYTES (2*NTRU_PACK_TRINARY_BYTES + NTRU_OWCPA_PUBLICKEYBYTES) -#define NTRU_OWCPA_BYTES ((NTRU_LOGQ*NTRU_PACK_DEG+7)/8) - -#define NTRU_PUBLICKEYBYTES (NTRU_OWCPA_PUBLICKEYBYTES) -#define NTRU_SECRETKEYBYTES (NTRU_OWCPA_SECRETKEYBYTES + NTRU_PRFKEYBYTES) -#define NTRU_CIPHERTEXTBYTES (NTRU_OWCPA_BYTES) - -#endif diff --git a/src/kem/ntru/ntruhps4096821/avx2/poly.c b/src/kem/ntru/ntruhps4096821/avx2/poly.c deleted file mode 100644 index 8280858e..00000000 --- a/src/kem/ntru/ntruhps4096821/avx2/poly.c +++ /dev/null @@ -1,75 +0,0 @@ -#include "poly.h" - -/* Map {0, 1, 2} -> {0,1,q-1} in place */ -void PQCLEAN_NTRUHPS4096821_AVX2_poly_Z3_to_Zq(poly *r) { - int i; - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = r->coeffs[i] | ((-(r->coeffs[i] >> 1)) & (NTRU_Q - 1)); - } -} - -/* Map {0, 1, q-1} -> {0,1,2} in place */ -void PQCLEAN_NTRUHPS4096821_AVX2_poly_trinary_Zq_to_Z3(poly *r) { - int i; - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = MODQ(r->coeffs[i]); - r->coeffs[i] = 3 & (r->coeffs[i] ^ (r->coeffs[i] >> (NTRU_LOGQ - 1))); - } -} - -void PQCLEAN_NTRUHPS4096821_AVX2_poly_Sq_mul(poly *r, const poly *a, const poly *b) { - PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_mul(r, a, b); - PQCLEAN_NTRUHPS4096821_AVX2_poly_mod_q_Phi_n(r); -} - -void PQCLEAN_NTRUHPS4096821_AVX2_poly_S3_mul(poly *r, const poly *a, const poly *b) { - int i; - - /* Our S3 multiplications do not overflow mod q, */ - /* so we can re-purpose PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_mul, as long as we */ - /* follow with an explicit reduction mod q. */ - PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_mul(r, a, b); - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = MODQ(r->coeffs[i]); - } - PQCLEAN_NTRUHPS4096821_AVX2_poly_mod_3_Phi_n(r); -} - -static void PQCLEAN_NTRUHPS4096821_AVX2_poly_R2_inv_to_Rq_inv(poly *r, const poly *ai, const poly *a) { - - int i; - poly b, c; - poly s; - - // for 0..4 - // ai = ai * (2 - a*ai) mod q - for (i = 0; i < NTRU_N; i++) { - b.coeffs[i] = -(a->coeffs[i]); - } - - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = ai->coeffs[i]; - } - - PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_mul(&c, r, &b); - c.coeffs[0] += 2; // c = 2 - a*ai - PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_mul(&s, &c, r); // s = ai*c - - PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_mul(&c, &s, &b); - c.coeffs[0] += 2; // c = 2 - a*s - PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_mul(r, &c, &s); // r = s*c - - PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_mul(&c, r, &b); - c.coeffs[0] += 2; // c = 2 - a*r - PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_mul(&s, &c, r); // s = r*c - - PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_mul(&c, &s, &b); - c.coeffs[0] += 2; // c = 2 - a*s - PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_mul(r, &c, &s); // r = s*c -} - -void PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_inv(poly *r, const poly *a) { - poly ai2; - PQCLEAN_NTRUHPS4096821_AVX2_poly_R2_inv(&ai2, a); - PQCLEAN_NTRUHPS4096821_AVX2_poly_R2_inv_to_Rq_inv(r, &ai2, a); -} diff --git a/src/kem/ntru/ntruhps4096821/avx2/poly.h b/src/kem/ntru/ntruhps4096821/avx2/poly.h deleted file mode 100644 index c904137a..00000000 --- a/src/kem/ntru/ntruhps4096821/avx2/poly.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef POLY_H -#define POLY_H - -#include -#include - -#include "params.h" - -#define MODQ(X) ((X) & (NTRU_Q-1)) - -typedef union { /* align to 32 byte boundary for vmovdqa */ - uint16_t coeffs[PAD32(NTRU_N)]; - __m256i coeffs_x16[PAD32(NTRU_N) / 16]; -} poly; - -void PQCLEAN_NTRUHPS4096821_AVX2_poly_mod_3_Phi_n(poly *r); -void PQCLEAN_NTRUHPS4096821_AVX2_poly_mod_q_Phi_n(poly *r); - -void PQCLEAN_NTRUHPS4096821_AVX2_poly_Sq_tobytes(unsigned char *r, const poly *a); -void PQCLEAN_NTRUHPS4096821_AVX2_poly_Sq_frombytes(poly *r, const unsigned char *a); - -void PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_sum_zero_tobytes(unsigned char *r, const poly *a); -void PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_sum_zero_frombytes(poly *r, const unsigned char *a); - -void PQCLEAN_NTRUHPS4096821_AVX2_poly_S3_tobytes(unsigned char msg[NTRU_PACK_TRINARY_BYTES], const poly *a); -void PQCLEAN_NTRUHPS4096821_AVX2_poly_S3_frombytes(poly *r, const unsigned char msg[NTRU_PACK_TRINARY_BYTES]); - -void PQCLEAN_NTRUHPS4096821_AVX2_poly_Sq_mul(poly *r, const poly *a, const poly *b); -void PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_mul(poly *r, const poly *a, const poly *b); -void PQCLEAN_NTRUHPS4096821_AVX2_poly_S3_mul(poly *r, const poly *a, const poly *b); -void PQCLEAN_NTRUHPS4096821_AVX2_poly_lift(poly *r, const poly *a); -void PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_to_S3(poly *r, const poly *a); - -void PQCLEAN_NTRUHPS4096821_AVX2_poly_R2_inv(poly *r, const poly *a); -void PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_inv(poly *r, const poly *a); -void PQCLEAN_NTRUHPS4096821_AVX2_poly_S3_inv(poly *r, const poly *a); - -void PQCLEAN_NTRUHPS4096821_AVX2_poly_Z3_to_Zq(poly *r); -void PQCLEAN_NTRUHPS4096821_AVX2_poly_trinary_Zq_to_Z3(poly *r); - -#endif diff --git a/src/kem/ntru/ntruhps4096821/avx2/poly_lift.c b/src/kem/ntru/ntruhps4096821/avx2/poly_lift.c deleted file mode 100644 index b89ed1c4..00000000 --- a/src/kem/ntru/ntruhps4096821/avx2/poly_lift.c +++ /dev/null @@ -1,11 +0,0 @@ -#include "poly.h" - -void PQCLEAN_NTRUHPS4096821_AVX2_poly_lift(poly *r, const poly *a) { - int i; - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = a->coeffs[i]; - } - PQCLEAN_NTRUHPS4096821_AVX2_poly_Z3_to_Zq(r); -} - - diff --git a/src/kem/ntru/ntruhps4096821/avx2/poly_mod_3_Phi_n.s b/src/kem/ntru/ntruhps4096821/avx2/poly_mod_3_Phi_n.s deleted file mode 100644 index 235edaa4..00000000 --- a/src/kem/ntru/ntruhps4096821/avx2/poly_mod_3_Phi_n.s +++ /dev/null @@ -1,1064 +0,0 @@ -.data -.p2align 5 -mask_ff: -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -mask_f: -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -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 -.text -.global PQCLEAN_NTRUHPS4096821_AVX2_poly_mod_3_Phi_n -.global _PQCLEAN_NTRUHPS4096821_AVX2_poly_mod_3_Phi_n -PQCLEAN_NTRUHPS4096821_AVX2_poly_mod_3_Phi_n: -_PQCLEAN_NTRUHPS4096821_AVX2_poly_mod_3_Phi_n: -vmovdqa 1632(%rdi), %ymm0 -vpermq $1, %ymm0, %ymm0 -vpslld $17, %ymm0, %ymm0 -vpsrld $16, %ymm0, %ymm1 -vpor %ymm0, %ymm1, %ymm0 -vbroadcastss %xmm0, %ymm0 -vpaddw 0(%rdi), %ymm0, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vpaddw 1408(%rdi), %ymm0, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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, 1408(%rdi) -vpaddw 1440(%rdi), %ymm0, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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, 1440(%rdi) -vpaddw 1472(%rdi), %ymm0, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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, 1472(%rdi) -vpaddw 1504(%rdi), %ymm0, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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, 1504(%rdi) -vpaddw 1536(%rdi), %ymm0, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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, 1536(%rdi) -vpaddw 1568(%rdi), %ymm0, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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, 1568(%rdi) -vpaddw 1600(%rdi), %ymm0, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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, 1600(%rdi) -vpaddw 1632(%rdi), %ymm0, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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, 1632(%rdi) -movw $0, 1642(%rdi) -movw $0, 1644(%rdi) -movw $0, 1646(%rdi) -movw $0, 1648(%rdi) -movw $0, 1650(%rdi) -movw $0, 1652(%rdi) -movw $0, 1654(%rdi) -movw $0, 1656(%rdi) -movw $0, 1658(%rdi) -movw $0, 1660(%rdi) -movw $0, 1662(%rdi) -ret diff --git a/src/kem/ntru/ntruhps4096821/avx2/poly_mod_q_Phi_n.s b/src/kem/ntru/ntruhps4096821/avx2/poly_mod_q_Phi_n.s deleted file mode 100644 index 2519db6b..00000000 --- a/src/kem/ntru/ntruhps4096821/avx2/poly_mod_q_Phi_n.s +++ /dev/null @@ -1,120 +0,0 @@ -.data -.p2align 5 -.text -.global PQCLEAN_NTRUHPS4096821_AVX2_poly_mod_q_Phi_n -.global _PQCLEAN_NTRUHPS4096821_AVX2_poly_mod_q_Phi_n -PQCLEAN_NTRUHPS4096821_AVX2_poly_mod_q_Phi_n: -_PQCLEAN_NTRUHPS4096821_AVX2_poly_mod_q_Phi_n: -vmovdqa 1632(%rdi), %ymm0 -vpermq $1, %ymm0, %ymm0 -vpslld $16, %ymm0, %ymm0 -vpsrld $16, %ymm0, %ymm1 -vpor %ymm0, %ymm1, %ymm0 -vbroadcastss %xmm0, %ymm0 -vxorpd %ymm1, %ymm1, %ymm1 -vpsubw %ymm0, %ymm1, %ymm0 -vpaddw 0(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 0(%rdi) -vpaddw 32(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 32(%rdi) -vpaddw 64(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 64(%rdi) -vpaddw 96(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 96(%rdi) -vpaddw 128(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 128(%rdi) -vpaddw 160(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 160(%rdi) -vpaddw 192(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 192(%rdi) -vpaddw 224(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 224(%rdi) -vpaddw 256(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 256(%rdi) -vpaddw 288(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 288(%rdi) -vpaddw 320(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 320(%rdi) -vpaddw 352(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 352(%rdi) -vpaddw 384(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 384(%rdi) -vpaddw 416(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 416(%rdi) -vpaddw 448(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 448(%rdi) -vpaddw 480(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 480(%rdi) -vpaddw 512(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 512(%rdi) -vpaddw 544(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 544(%rdi) -vpaddw 576(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 576(%rdi) -vpaddw 608(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 608(%rdi) -vpaddw 640(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 640(%rdi) -vpaddw 672(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 672(%rdi) -vpaddw 704(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 704(%rdi) -vpaddw 736(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 736(%rdi) -vpaddw 768(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 768(%rdi) -vpaddw 800(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 800(%rdi) -vpaddw 832(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 832(%rdi) -vpaddw 864(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 864(%rdi) -vpaddw 896(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 896(%rdi) -vpaddw 928(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 928(%rdi) -vpaddw 960(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 960(%rdi) -vpaddw 992(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 992(%rdi) -vpaddw 1024(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1024(%rdi) -vpaddw 1056(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1056(%rdi) -vpaddw 1088(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1088(%rdi) -vpaddw 1120(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1120(%rdi) -vpaddw 1152(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1152(%rdi) -vpaddw 1184(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1184(%rdi) -vpaddw 1216(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1216(%rdi) -vpaddw 1248(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1248(%rdi) -vpaddw 1280(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1280(%rdi) -vpaddw 1312(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1312(%rdi) -vpaddw 1344(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1344(%rdi) -vpaddw 1376(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1376(%rdi) -vpaddw 1408(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1408(%rdi) -vpaddw 1440(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1440(%rdi) -vpaddw 1472(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1472(%rdi) -vpaddw 1504(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1504(%rdi) -vpaddw 1536(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1536(%rdi) -vpaddw 1568(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1568(%rdi) -vpaddw 1600(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1600(%rdi) -vpaddw 1632(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1632(%rdi) -ret diff --git a/src/kem/ntru/ntruhps4096821/avx2/poly_r2_inv.c b/src/kem/ntru/ntruhps4096821/avx2/poly_r2_inv.c deleted file mode 100644 index 8cce5ee7..00000000 --- a/src/kem/ntru/ntruhps4096821/avx2/poly_r2_inv.c +++ /dev/null @@ -1,89 +0,0 @@ -#include "poly.h" -#include "poly_r2_inv.h" - -// TODO this costs 1764 cycles.. (implementing as S3_to_bytes results in 2108) -// This can be implemented nicely in assembly using pdep / pext functions -void PQCLEAN_NTRUHPS4096821_AVX2_poly_R2_tobytes(unsigned char *out, const poly *a) { - int i, j, k; - for (i = 0; i < 16; i++) { - for (k = 0; k < 8; k++) { - out[i * 8 + k] = 0; - for (j = 0; j < 8; j++) { - if ((i * 8 + k) * 8 + j < NTRU_N) { - out[i * 8 + k] |= (a->coeffs[(i * 8 + k) * 8 + j] & 1) << j; - } - } - } - } -} - -void PQCLEAN_NTRUHPS4096821_AVX2_poly_R2_frombytes(poly *a, const unsigned char *in) { - int i, j, k; - for (i = 0; i < 16; i++) { - for (k = 0; k < 8; k++) { - for (j = 0; j < 8; j++) { - if ((i * 8 + k) * 8 + j < NTRU_N) { - a->coeffs[(i * 8 + k) * 8 + j] = (in[i * 8 + k] >> j) & 1; - } - } - } - } -} - - -static void _poly_R2_mul(unsigned char r[128], unsigned char a[128], unsigned char b[128]) { - // TODO: Try to avoid copying input - int i; - union { - unsigned char b[128]; - __m256i b_x32[4]; - } rt; - - PQCLEAN_NTRUHPS4096821_AVX2_poly_R2_mul(rt.b, a, b); - for (i = 0; i < 128; i++) { - r[i] = rt.b[i]; - } -} - -void PQCLEAN_NTRUHPS4096821_AVX2_poly_R2_inv(poly *r, const poly *a) { - union { - unsigned char s[128]; - __m256i s_x32[4]; - } squares[13]; -#define s(x) squares[(x)].s - - // This relies on the following addition chain: - // 1, 2, 3, 6, 12, 24, 48, 51, 102, 204, 408, 816, 819 - - PQCLEAN_NTRUHPS4096821_AVX2_poly_R2_tobytes(s(0), a); // TODO alignment - - PQCLEAN_NTRUHPS4096821_AVX2_square_1_821(s(1), s(0)); - _poly_R2_mul(s(1), s(1), s(0)); - PQCLEAN_NTRUHPS4096821_AVX2_square_1_821(s(2), s(1)); - _poly_R2_mul(s(2), s(2), s(0)); - PQCLEAN_NTRUHPS4096821_AVX2_square_3_821(s(3), s(2)); - _poly_R2_mul(s(3), s(3), s(2)); - PQCLEAN_NTRUHPS4096821_AVX2_square_6_821(s(4), s(3)); - _poly_R2_mul(s(4), s(4), s(3)); - PQCLEAN_NTRUHPS4096821_AVX2_square_12_821(s(5), s(4)); - _poly_R2_mul(s(5), s(5), s(4)); - PQCLEAN_NTRUHPS4096821_AVX2_square_24_821(s(6), s(5)); - _poly_R2_mul(s(6), s(6), s(5)); - PQCLEAN_NTRUHPS4096821_AVX2_square_3_821(s(7), s(6)); - _poly_R2_mul(s(7), s(7), s(2)); - PQCLEAN_NTRUHPS4096821_AVX2_square_51_821(s(8), s(7)); - _poly_R2_mul(s(8), s(8), s(7)); - PQCLEAN_NTRUHPS4096821_AVX2_square_102_821(s(9), s(8)); - _poly_R2_mul(s(9), s(9), s(8)); - PQCLEAN_NTRUHPS4096821_AVX2_square_204_821(s(10), s(9)); - _poly_R2_mul(s(10), s(10), s(9)); - PQCLEAN_NTRUHPS4096821_AVX2_square_408_821(s(11), s(10)); - _poly_R2_mul(s(11), s(11), s(10)); - PQCLEAN_NTRUHPS4096821_AVX2_square_3_821(s(12), s(11)); - _poly_R2_mul(s(12), s(12), s(2)); - PQCLEAN_NTRUHPS4096821_AVX2_square_1_821(s(0), s(12)); - - - PQCLEAN_NTRUHPS4096821_AVX2_poly_R2_frombytes(r, s(0)); -#undef s -} diff --git a/src/kem/ntru/ntruhps4096821/avx2/poly_r2_inv.h b/src/kem/ntru/ntruhps4096821/avx2/poly_r2_inv.h deleted file mode 100644 index 811f5ae6..00000000 --- a/src/kem/ntru/ntruhps4096821/avx2/poly_r2_inv.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef POLY_R2_INV_H -#define POLY_R2_INV_H - -#include "poly.h" - -void PQCLEAN_NTRUHPS4096821_AVX2_poly_R2_tobytes(unsigned char *out, const poly *a); -void PQCLEAN_NTRUHPS4096821_AVX2_poly_R2_frombytes(poly *a, const unsigned char *in); - -extern void PQCLEAN_NTRUHPS4096821_AVX2_square_1_821(unsigned char *out, const unsigned char *a); -extern void PQCLEAN_NTRUHPS4096821_AVX2_square_3_821(unsigned char *out, const unsigned char *a); -extern void PQCLEAN_NTRUHPS4096821_AVX2_square_6_821(unsigned char *out, const unsigned char *a); -extern void PQCLEAN_NTRUHPS4096821_AVX2_square_12_821(unsigned char *out, const unsigned char *a); -extern void PQCLEAN_NTRUHPS4096821_AVX2_square_24_821(unsigned char *out, const unsigned char *a); -extern void PQCLEAN_NTRUHPS4096821_AVX2_square_51_821(unsigned char *out, const unsigned char *a); -extern void PQCLEAN_NTRUHPS4096821_AVX2_square_102_821(unsigned char *out, const unsigned char *a); -extern void PQCLEAN_NTRUHPS4096821_AVX2_square_204_821(unsigned char *out, const unsigned char *a); -extern void PQCLEAN_NTRUHPS4096821_AVX2_square_408_821(unsigned char *out, const unsigned char *a); - -extern void PQCLEAN_NTRUHPS4096821_AVX2_poly_R2_mul(unsigned char *out, const unsigned char *a, - const unsigned char *b); -#endif diff --git a/src/kem/ntru/ntruhps4096821/avx2/poly_r2_mul.s b/src/kem/ntru/ntruhps4096821/avx2/poly_r2_mul.s deleted file mode 100644 index 33681d86..00000000 --- a/src/kem/ntru/ntruhps4096821/avx2/poly_r2_mul.s +++ /dev/null @@ -1,748 +0,0 @@ -.data -.p2align 5 -mask1100: -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -mask0110: -.word 0 -.word 0 -.word 0 -.word 0 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 0 -.word 0 -.word 0 -.word 0 -mask0011: -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -mask0001: -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -mask1110: -.word 0 -.word 0 -.word 0 -.word 0 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -low53: -.word 65535 -.word 65535 -.word 65535 -.word 31 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.text -.global PQCLEAN_NTRUHPS4096821_AVX2_poly_R2_mul -.global _PQCLEAN_NTRUHPS4096821_AVX2_poly_R2_mul -PQCLEAN_NTRUHPS4096821_AVX2_poly_R2_mul: -_PQCLEAN_NTRUHPS4096821_AVX2_poly_R2_mul: -vmovdqa 0(%rsi), %ymm4 -vmovdqa 32(%rsi), %ymm5 -vmovdqa 0(%rdx), %ymm6 -vmovdqa 32(%rdx), %ymm7 -vpxor %ymm4, %ymm5, %ymm13 -vpxor %ymm6, %ymm7, %ymm14 -vextracti128 $1, %ymm4, %xmm8 -vextracti128 $1, %ymm6, %xmm9 -vpclmulqdq $1, %xmm8, %xmm9, %xmm1 -vpclmulqdq $16, %xmm8, %xmm9, %xmm11 -vpclmulqdq $17, %xmm8, %xmm9, %xmm12 -vpxor %xmm1, %xmm11, %xmm11 -vpclmulqdq $0, %xmm8, %xmm9, %xmm1 -vpermq $16, %ymm11, %ymm11 -vinserti128 $1, %xmm12, %ymm12, %ymm12 -vpand mask0011(%rip), %ymm1, %ymm1 -vpand mask0110(%rip), %ymm11, %ymm11 -vpand mask1100(%rip), %ymm12, %ymm12 -vpxor %ymm1, %ymm11, %ymm11 -vpxor %ymm11, %ymm12, %ymm1 -vpxor %xmm4, %xmm8, %xmm8 -vpxor %xmm6, %xmm9, %xmm9 -vpclmulqdq $1, %xmm8, %xmm9, %xmm10 -vpclmulqdq $16, %xmm8, %xmm9, %xmm11 -vpclmulqdq $17, %xmm8, %xmm9, %xmm12 -vpxor %xmm10, %xmm11, %xmm11 -vpclmulqdq $0, %xmm8, %xmm9, %xmm10 -vpermq $16, %ymm11, %ymm11 -vinserti128 $1, %xmm12, %ymm12, %ymm12 -vpand mask0011(%rip), %ymm10, %ymm10 -vpand mask0110(%rip), %ymm11, %ymm11 -vpand mask1100(%rip), %ymm12, %ymm12 -vpxor %ymm10, %ymm11, %ymm11 -vpxor %ymm11, %ymm12, %ymm10 -vpclmulqdq $1, %xmm4, %xmm6, %xmm0 -vpclmulqdq $16, %xmm4, %xmm6, %xmm11 -vpclmulqdq $17, %xmm4, %xmm6, %xmm12 -vpxor %xmm0, %xmm11, %xmm11 -vpclmulqdq $0, %xmm4, %xmm6, %xmm0 -vpermq $16, %ymm11, %ymm11 -vinserti128 $1, %xmm12, %ymm12, %ymm12 -vpand mask0011(%rip), %ymm0, %ymm0 -vpand mask0110(%rip), %ymm11, %ymm11 -vpand mask1100(%rip), %ymm12, %ymm12 -vpxor %ymm0, %ymm11, %ymm11 -vpxor %ymm11, %ymm12, %ymm0 -vpxor %ymm10, %ymm1, %ymm10 -vpxor %ymm10, %ymm0, %ymm10 -vpxor %ymm8, %ymm8, %ymm8 -vextracti128 $1, %ymm10, %xmm8 -vpxor %ymm1, %ymm8, %ymm1 -vpxor %ymm8, %ymm8, %ymm8 -vinserti128 $1, %xmm10, %ymm8, %ymm8 -vpxor %ymm8, %ymm0, %ymm0 -vextracti128 $1, %ymm5, %xmm8 -vextracti128 $1, %ymm7, %xmm9 -vpclmulqdq $1, %xmm8, %xmm9, %xmm3 -vpclmulqdq $16, %xmm8, %xmm9, %xmm11 -vpclmulqdq $17, %xmm8, %xmm9, %xmm12 -vpxor %xmm3, %xmm11, %xmm11 -vpclmulqdq $0, %xmm8, %xmm9, %xmm3 -vpermq $16, %ymm11, %ymm11 -vinserti128 $1, %xmm12, %ymm12, %ymm12 -vpand mask0011(%rip), %ymm3, %ymm3 -vpand mask0110(%rip), %ymm11, %ymm11 -vpand mask1100(%rip), %ymm12, %ymm12 -vpxor %ymm3, %ymm11, %ymm11 -vpxor %ymm11, %ymm12, %ymm3 -vpxor %xmm5, %xmm8, %xmm8 -vpxor %xmm7, %xmm9, %xmm9 -vpclmulqdq $1, %xmm8, %xmm9, %xmm10 -vpclmulqdq $16, %xmm8, %xmm9, %xmm11 -vpclmulqdq $17, %xmm8, %xmm9, %xmm12 -vpxor %xmm10, %xmm11, %xmm11 -vpclmulqdq $0, %xmm8, %xmm9, %xmm10 -vpermq $16, %ymm11, %ymm11 -vinserti128 $1, %xmm12, %ymm12, %ymm12 -vpand mask0011(%rip), %ymm10, %ymm10 -vpand mask0110(%rip), %ymm11, %ymm11 -vpand mask1100(%rip), %ymm12, %ymm12 -vpxor %ymm10, %ymm11, %ymm11 -vpxor %ymm11, %ymm12, %ymm10 -vpclmulqdq $1, %xmm5, %xmm7, %xmm2 -vpclmulqdq $16, %xmm5, %xmm7, %xmm11 -vpclmulqdq $17, %xmm5, %xmm7, %xmm12 -vpxor %xmm2, %xmm11, %xmm11 -vpclmulqdq $0, %xmm5, %xmm7, %xmm2 -vpermq $16, %ymm11, %ymm11 -vinserti128 $1, %xmm12, %ymm12, %ymm12 -vpand mask0011(%rip), %ymm2, %ymm2 -vpand mask0110(%rip), %ymm11, %ymm11 -vpand mask1100(%rip), %ymm12, %ymm12 -vpxor %ymm2, %ymm11, %ymm11 -vpxor %ymm11, %ymm12, %ymm2 -vpxor %ymm10, %ymm3, %ymm10 -vpxor %ymm10, %ymm2, %ymm10 -vpxor %ymm8, %ymm8, %ymm8 -vextracti128 $1, %ymm10, %xmm8 -vpxor %ymm3, %ymm8, %ymm3 -vpxor %ymm8, %ymm8, %ymm8 -vinserti128 $1, %xmm10, %ymm8, %ymm8 -vpxor %ymm8, %ymm2, %ymm2 -vextracti128 $1, %ymm13, %xmm8 -vextracti128 $1, %ymm14, %xmm9 -vpclmulqdq $1, %xmm8, %xmm9, %xmm5 -vpclmulqdq $16, %xmm8, %xmm9, %xmm11 -vpclmulqdq $17, %xmm8, %xmm9, %xmm12 -vpxor %xmm5, %xmm11, %xmm11 -vpclmulqdq $0, %xmm8, %xmm9, %xmm5 -vpermq $16, %ymm11, %ymm11 -vinserti128 $1, %xmm12, %ymm12, %ymm12 -vpand mask0011(%rip), %ymm5, %ymm5 -vpand mask0110(%rip), %ymm11, %ymm11 -vpand mask1100(%rip), %ymm12, %ymm12 -vpxor %ymm5, %ymm11, %ymm11 -vpxor %ymm11, %ymm12, %ymm5 -vpxor %xmm13, %xmm8, %xmm8 -vpxor %xmm14, %xmm9, %xmm9 -vpclmulqdq $1, %xmm8, %xmm9, %xmm10 -vpclmulqdq $16, %xmm8, %xmm9, %xmm11 -vpclmulqdq $17, %xmm8, %xmm9, %xmm12 -vpxor %xmm10, %xmm11, %xmm11 -vpclmulqdq $0, %xmm8, %xmm9, %xmm10 -vpermq $16, %ymm11, %ymm11 -vinserti128 $1, %xmm12, %ymm12, %ymm12 -vpand mask0011(%rip), %ymm10, %ymm10 -vpand mask0110(%rip), %ymm11, %ymm11 -vpand mask1100(%rip), %ymm12, %ymm12 -vpxor %ymm10, %ymm11, %ymm11 -vpxor %ymm11, %ymm12, %ymm10 -vpclmulqdq $1, %xmm13, %xmm14, %xmm4 -vpclmulqdq $16, %xmm13, %xmm14, %xmm11 -vpclmulqdq $17, %xmm13, %xmm14, %xmm12 -vpxor %xmm4, %xmm11, %xmm11 -vpclmulqdq $0, %xmm13, %xmm14, %xmm4 -vpermq $16, %ymm11, %ymm11 -vinserti128 $1, %xmm12, %ymm12, %ymm12 -vpand mask0011(%rip), %ymm4, %ymm4 -vpand mask0110(%rip), %ymm11, %ymm11 -vpand mask1100(%rip), %ymm12, %ymm12 -vpxor %ymm4, %ymm11, %ymm11 -vpxor %ymm11, %ymm12, %ymm4 -vpxor %ymm10, %ymm5, %ymm10 -vpxor %ymm10, %ymm4, %ymm10 -vpxor %ymm8, %ymm8, %ymm8 -vextracti128 $1, %ymm10, %xmm8 -vpxor %ymm5, %ymm8, %ymm5 -vpxor %ymm8, %ymm8, %ymm8 -vinserti128 $1, %xmm10, %ymm8, %ymm8 -vpxor %ymm8, %ymm4, %ymm4 -vpxor %ymm0, %ymm4, %ymm4 -vpxor %ymm1, %ymm5, %ymm5 -vpxor %ymm2, %ymm4, %ymm4 -vpxor %ymm3, %ymm5, %ymm5 -vpxor %ymm4, %ymm1, %ymm1 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask1110(%rip), %ymm3, %ymm8 -vpsllq $11, %ymm8, %ymm8 -vpermq $57, %ymm8, %ymm8 -vpsrlq $53, %ymm3, %ymm14 -vpxor %ymm14, %ymm8, %ymm8 -vpxor %ymm0, %ymm8, %ymm8 -vpand low53(%rip), %ymm3, %ymm9 -vmovdqa %ymm8, 0(%rdi) -vmovdqa %ymm1, 32(%rdi) -vmovdqa %ymm2, 64(%rdi) -vmovdqa %ymm9, 96(%rdi) -vmovdqa 0(%rdi), %ymm4 -vmovdqa 32(%rdi), %ymm5 -vmovdqa 64(%rdi), %ymm6 -vmovdqa 96(%rdi), %ymm7 -vpxor %ymm0, %ymm6, %ymm6 -vpand low53(%rip), %ymm1, %ymm11 -vpxor %ymm11, %ymm7, %ymm7 -vpand mask1110(%rip), %ymm1, %ymm8 -vpsllq $11, %ymm8, %ymm8 -vpermq $57, %ymm8, %ymm8 -vpsrlq $53, %ymm1, %ymm11 -vpxor %ymm11, %ymm8, %ymm8 -vpand mask0001(%rip), %ymm2, %ymm9 -vpermq $57, %ymm9, %ymm9 -vpsllq $11, %ymm9, %ymm9 -vpand mask1110(%rip), %ymm2, %ymm10 -vpsllq $11, %ymm10, %ymm10 -vpermq $57, %ymm10, %ymm10 -vpsrlq $53, %ymm2, %ymm11 -vpxor %ymm11, %ymm10, %ymm10 -vpxor %ymm8, %ymm9, %ymm9 -vpxor %ymm9, %ymm4, %ymm4 -vpand mask0001(%rip), %ymm3, %ymm8 -vpermq $57, %ymm8, %ymm8 -vpsllq $11, %ymm8, %ymm8 -vpand mask1110(%rip), %ymm3, %ymm9 -vpsllq $11, %ymm9, %ymm9 -vpermq $57, %ymm9, %ymm9 -vpsrlq $53, %ymm3, %ymm11 -vpxor %ymm11, %ymm9, %ymm9 -vpxor %ymm8, %ymm10, %ymm10 -vpxor %ymm10, %ymm5, %ymm5 -vpxor %ymm9, %ymm6, %ymm6 -vmovdqa %ymm4, 0(%rdi) -vmovdqa %ymm5, 32(%rdi) -vmovdqa %ymm6, 64(%rdi) -vmovdqa %ymm7, 96(%rdi) -vmovdqa 64(%rsi), %ymm4 -vmovdqa 96(%rsi), %ymm5 -vmovdqa 64(%rdx), %ymm6 -vmovdqa 96(%rdx), %ymm7 -vpxor %ymm4, %ymm5, %ymm13 -vpxor %ymm6, %ymm7, %ymm14 -vextracti128 $1, %ymm4, %xmm8 -vextracti128 $1, %ymm6, %xmm9 -vpclmulqdq $1, %xmm8, %xmm9, %xmm1 -vpclmulqdq $16, %xmm8, %xmm9, %xmm11 -vpclmulqdq $17, %xmm8, %xmm9, %xmm12 -vpxor %xmm1, %xmm11, %xmm11 -vpclmulqdq $0, %xmm8, %xmm9, %xmm1 -vpermq $16, %ymm11, %ymm11 -vinserti128 $1, %xmm12, %ymm12, %ymm12 -vpand mask0011(%rip), %ymm1, %ymm1 -vpand mask0110(%rip), %ymm11, %ymm11 -vpand mask1100(%rip), %ymm12, %ymm12 -vpxor %ymm1, %ymm11, %ymm11 -vpxor %ymm11, %ymm12, %ymm1 -vpxor %xmm4, %xmm8, %xmm8 -vpxor %xmm6, %xmm9, %xmm9 -vpclmulqdq $1, %xmm8, %xmm9, %xmm10 -vpclmulqdq $16, %xmm8, %xmm9, %xmm11 -vpclmulqdq $17, %xmm8, %xmm9, %xmm12 -vpxor %xmm10, %xmm11, %xmm11 -vpclmulqdq $0, %xmm8, %xmm9, %xmm10 -vpermq $16, %ymm11, %ymm11 -vinserti128 $1, %xmm12, %ymm12, %ymm12 -vpand mask0011(%rip), %ymm10, %ymm10 -vpand mask0110(%rip), %ymm11, %ymm11 -vpand mask1100(%rip), %ymm12, %ymm12 -vpxor %ymm10, %ymm11, %ymm11 -vpxor %ymm11, %ymm12, %ymm10 -vpclmulqdq $1, %xmm4, %xmm6, %xmm0 -vpclmulqdq $16, %xmm4, %xmm6, %xmm11 -vpclmulqdq $17, %xmm4, %xmm6, %xmm12 -vpxor %xmm0, %xmm11, %xmm11 -vpclmulqdq $0, %xmm4, %xmm6, %xmm0 -vpermq $16, %ymm11, %ymm11 -vinserti128 $1, %xmm12, %ymm12, %ymm12 -vpand mask0011(%rip), %ymm0, %ymm0 -vpand mask0110(%rip), %ymm11, %ymm11 -vpand mask1100(%rip), %ymm12, %ymm12 -vpxor %ymm0, %ymm11, %ymm11 -vpxor %ymm11, %ymm12, %ymm0 -vpxor %ymm10, %ymm1, %ymm10 -vpxor %ymm10, %ymm0, %ymm10 -vpxor %ymm8, %ymm8, %ymm8 -vextracti128 $1, %ymm10, %xmm8 -vpxor %ymm1, %ymm8, %ymm1 -vpxor %ymm8, %ymm8, %ymm8 -vinserti128 $1, %xmm10, %ymm8, %ymm8 -vpxor %ymm8, %ymm0, %ymm0 -vextracti128 $1, %ymm5, %xmm8 -vextracti128 $1, %ymm7, %xmm9 -vpclmulqdq $1, %xmm8, %xmm9, %xmm3 -vpclmulqdq $16, %xmm8, %xmm9, %xmm11 -vpclmulqdq $17, %xmm8, %xmm9, %xmm12 -vpxor %xmm3, %xmm11, %xmm11 -vpclmulqdq $0, %xmm8, %xmm9, %xmm3 -vpermq $16, %ymm11, %ymm11 -vinserti128 $1, %xmm12, %ymm12, %ymm12 -vpand mask0011(%rip), %ymm3, %ymm3 -vpand mask0110(%rip), %ymm11, %ymm11 -vpand mask1100(%rip), %ymm12, %ymm12 -vpxor %ymm3, %ymm11, %ymm11 -vpxor %ymm11, %ymm12, %ymm3 -vpxor %xmm5, %xmm8, %xmm8 -vpxor %xmm7, %xmm9, %xmm9 -vpclmulqdq $1, %xmm8, %xmm9, %xmm10 -vpclmulqdq $16, %xmm8, %xmm9, %xmm11 -vpclmulqdq $17, %xmm8, %xmm9, %xmm12 -vpxor %xmm10, %xmm11, %xmm11 -vpclmulqdq $0, %xmm8, %xmm9, %xmm10 -vpermq $16, %ymm11, %ymm11 -vinserti128 $1, %xmm12, %ymm12, %ymm12 -vpand mask0011(%rip), %ymm10, %ymm10 -vpand mask0110(%rip), %ymm11, %ymm11 -vpand mask1100(%rip), %ymm12, %ymm12 -vpxor %ymm10, %ymm11, %ymm11 -vpxor %ymm11, %ymm12, %ymm10 -vpclmulqdq $1, %xmm5, %xmm7, %xmm2 -vpclmulqdq $16, %xmm5, %xmm7, %xmm11 -vpclmulqdq $17, %xmm5, %xmm7, %xmm12 -vpxor %xmm2, %xmm11, %xmm11 -vpclmulqdq $0, %xmm5, %xmm7, %xmm2 -vpermq $16, %ymm11, %ymm11 -vinserti128 $1, %xmm12, %ymm12, %ymm12 -vpand mask0011(%rip), %ymm2, %ymm2 -vpand mask0110(%rip), %ymm11, %ymm11 -vpand mask1100(%rip), %ymm12, %ymm12 -vpxor %ymm2, %ymm11, %ymm11 -vpxor %ymm11, %ymm12, %ymm2 -vpxor %ymm10, %ymm3, %ymm10 -vpxor %ymm10, %ymm2, %ymm10 -vpxor %ymm8, %ymm8, %ymm8 -vextracti128 $1, %ymm10, %xmm8 -vpxor %ymm3, %ymm8, %ymm3 -vpxor %ymm8, %ymm8, %ymm8 -vinserti128 $1, %xmm10, %ymm8, %ymm8 -vpxor %ymm8, %ymm2, %ymm2 -vextracti128 $1, %ymm13, %xmm8 -vextracti128 $1, %ymm14, %xmm9 -vpclmulqdq $1, %xmm8, %xmm9, %xmm5 -vpclmulqdq $16, %xmm8, %xmm9, %xmm11 -vpclmulqdq $17, %xmm8, %xmm9, %xmm12 -vpxor %xmm5, %xmm11, %xmm11 -vpclmulqdq $0, %xmm8, %xmm9, %xmm5 -vpermq $16, %ymm11, %ymm11 -vinserti128 $1, %xmm12, %ymm12, %ymm12 -vpand mask0011(%rip), %ymm5, %ymm5 -vpand mask0110(%rip), %ymm11, %ymm11 -vpand mask1100(%rip), %ymm12, %ymm12 -vpxor %ymm5, %ymm11, %ymm11 -vpxor %ymm11, %ymm12, %ymm5 -vpxor %xmm13, %xmm8, %xmm8 -vpxor %xmm14, %xmm9, %xmm9 -vpclmulqdq $1, %xmm8, %xmm9, %xmm10 -vpclmulqdq $16, %xmm8, %xmm9, %xmm11 -vpclmulqdq $17, %xmm8, %xmm9, %xmm12 -vpxor %xmm10, %xmm11, %xmm11 -vpclmulqdq $0, %xmm8, %xmm9, %xmm10 -vpermq $16, %ymm11, %ymm11 -vinserti128 $1, %xmm12, %ymm12, %ymm12 -vpand mask0011(%rip), %ymm10, %ymm10 -vpand mask0110(%rip), %ymm11, %ymm11 -vpand mask1100(%rip), %ymm12, %ymm12 -vpxor %ymm10, %ymm11, %ymm11 -vpxor %ymm11, %ymm12, %ymm10 -vpclmulqdq $1, %xmm13, %xmm14, %xmm4 -vpclmulqdq $16, %xmm13, %xmm14, %xmm11 -vpclmulqdq $17, %xmm13, %xmm14, %xmm12 -vpxor %xmm4, %xmm11, %xmm11 -vpclmulqdq $0, %xmm13, %xmm14, %xmm4 -vpermq $16, %ymm11, %ymm11 -vinserti128 $1, %xmm12, %ymm12, %ymm12 -vpand mask0011(%rip), %ymm4, %ymm4 -vpand mask0110(%rip), %ymm11, %ymm11 -vpand mask1100(%rip), %ymm12, %ymm12 -vpxor %ymm4, %ymm11, %ymm11 -vpxor %ymm11, %ymm12, %ymm4 -vpxor %ymm10, %ymm5, %ymm10 -vpxor %ymm10, %ymm4, %ymm10 -vpxor %ymm8, %ymm8, %ymm8 -vextracti128 $1, %ymm10, %xmm8 -vpxor %ymm5, %ymm8, %ymm5 -vpxor %ymm8, %ymm8, %ymm8 -vinserti128 $1, %xmm10, %ymm8, %ymm8 -vpxor %ymm8, %ymm4, %ymm4 -vpxor %ymm0, %ymm4, %ymm4 -vpxor %ymm1, %ymm5, %ymm5 -vpxor %ymm2, %ymm4, %ymm4 -vpxor %ymm3, %ymm5, %ymm5 -vpxor %ymm4, %ymm1, %ymm1 -vpxor %ymm5, %ymm2, %ymm2 -vmovdqa 0(%rdi), %ymm4 -vmovdqa 32(%rdi), %ymm5 -vmovdqa 64(%rdi), %ymm6 -vmovdqa 96(%rdi), %ymm7 -vpxor %ymm0, %ymm6, %ymm6 -vpand low53(%rip), %ymm1, %ymm11 -vpxor %ymm11, %ymm7, %ymm7 -vpand mask1110(%rip), %ymm1, %ymm8 -vpsllq $11, %ymm8, %ymm8 -vpermq $57, %ymm8, %ymm8 -vpsrlq $53, %ymm1, %ymm11 -vpxor %ymm11, %ymm8, %ymm8 -vpand mask0001(%rip), %ymm2, %ymm9 -vpermq $57, %ymm9, %ymm9 -vpsllq $11, %ymm9, %ymm9 -vpand mask1110(%rip), %ymm2, %ymm10 -vpsllq $11, %ymm10, %ymm10 -vpermq $57, %ymm10, %ymm10 -vpsrlq $53, %ymm2, %ymm11 -vpxor %ymm11, %ymm10, %ymm10 -vpxor %ymm8, %ymm9, %ymm9 -vpxor %ymm9, %ymm4, %ymm4 -vpand mask0001(%rip), %ymm3, %ymm8 -vpermq $57, %ymm8, %ymm8 -vpsllq $11, %ymm8, %ymm8 -vpand mask1110(%rip), %ymm3, %ymm9 -vpsllq $11, %ymm9, %ymm9 -vpermq $57, %ymm9, %ymm9 -vpsrlq $53, %ymm3, %ymm11 -vpxor %ymm11, %ymm9, %ymm9 -vpxor %ymm8, %ymm10, %ymm10 -vpxor %ymm10, %ymm5, %ymm5 -vpxor %ymm9, %ymm6, %ymm6 -vpand mask1110(%rip), %ymm3, %ymm8 -vpsllq $11, %ymm8, %ymm8 -vpermq $57, %ymm8, %ymm8 -vpsrlq $53, %ymm3, %ymm10 -vpxor %ymm10, %ymm8, %ymm8 -vpand mask0001(%rip), %ymm0, %ymm9 -vpermq $57, %ymm9, %ymm9 -vpsllq $11, %ymm9, %ymm9 -vpxor %ymm8, %ymm9, %ymm9 -vpxor %ymm9, %ymm4, %ymm4 -vpand mask1110(%rip), %ymm0, %ymm8 -vpsllq $11, %ymm8, %ymm8 -vpermq $57, %ymm8, %ymm8 -vpsrlq $53, %ymm0, %ymm10 -vpxor %ymm10, %ymm8, %ymm8 -vpand mask0001(%rip), %ymm1, %ymm9 -vpermq $57, %ymm9, %ymm9 -vpsllq $11, %ymm9, %ymm9 -vpxor %ymm8, %ymm9, %ymm9 -vpxor %ymm9, %ymm5, %ymm5 -vpand mask1110(%rip), %ymm1, %ymm8 -vpsllq $11, %ymm8, %ymm8 -vpermq $57, %ymm8, %ymm8 -vpsrlq $53, %ymm1, %ymm10 -vpxor %ymm10, %ymm8, %ymm8 -vpand mask0001(%rip), %ymm2, %ymm9 -vpermq $57, %ymm9, %ymm9 -vpsllq $11, %ymm9, %ymm9 -vpxor %ymm8, %ymm9, %ymm9 -vpxor %ymm9, %ymm6, %ymm6 -vpand mask1110(%rip), %ymm2, %ymm8 -vpsllq $11, %ymm8, %ymm8 -vpermq $57, %ymm8, %ymm8 -vpsrlq $53, %ymm2, %ymm10 -vpxor %ymm10, %ymm8, %ymm8 -vpand mask0001(%rip), %ymm3, %ymm9 -vpermq $57, %ymm9, %ymm9 -vpsllq $11, %ymm9, %ymm9 -vpxor %ymm8, %ymm9, %ymm9 -vpxor %ymm9, %ymm7, %ymm7 -vmovdqa %ymm4, 0(%rdi) -vmovdqa %ymm5, 32(%rdi) -vmovdqa %ymm6, 64(%rdi) -vmovdqa %ymm7, 96(%rdi) -vmovdqa 0(%rsi), %ymm4 -vmovdqa 32(%rsi), %ymm5 -vmovdqa 64(%rsi), %ymm8 -vmovdqa 96(%rsi), %ymm9 -vmovdqa 0(%rdx), %ymm6 -vmovdqa 32(%rdx), %ymm7 -vmovdqa 64(%rdx), %ymm10 -vmovdqa 96(%rdx), %ymm11 -vpxor %ymm4, %ymm8, %ymm4 -vpxor %ymm5, %ymm9, %ymm5 -vpxor %ymm6, %ymm10, %ymm6 -vpxor %ymm7, %ymm11, %ymm7 -vpxor %ymm4, %ymm5, %ymm13 -vpxor %ymm6, %ymm7, %ymm14 -vextracti128 $1, %ymm4, %xmm8 -vextracti128 $1, %ymm6, %xmm9 -vpclmulqdq $1, %xmm8, %xmm9, %xmm1 -vpclmulqdq $16, %xmm8, %xmm9, %xmm11 -vpclmulqdq $17, %xmm8, %xmm9, %xmm12 -vpxor %xmm1, %xmm11, %xmm11 -vpclmulqdq $0, %xmm8, %xmm9, %xmm1 -vpermq $16, %ymm11, %ymm11 -vinserti128 $1, %xmm12, %ymm12, %ymm12 -vpand mask0011(%rip), %ymm1, %ymm1 -vpand mask0110(%rip), %ymm11, %ymm11 -vpand mask1100(%rip), %ymm12, %ymm12 -vpxor %ymm1, %ymm11, %ymm11 -vpxor %ymm11, %ymm12, %ymm1 -vpxor %xmm4, %xmm8, %xmm8 -vpxor %xmm6, %xmm9, %xmm9 -vpclmulqdq $1, %xmm8, %xmm9, %xmm10 -vpclmulqdq $16, %xmm8, %xmm9, %xmm11 -vpclmulqdq $17, %xmm8, %xmm9, %xmm12 -vpxor %xmm10, %xmm11, %xmm11 -vpclmulqdq $0, %xmm8, %xmm9, %xmm10 -vpermq $16, %ymm11, %ymm11 -vinserti128 $1, %xmm12, %ymm12, %ymm12 -vpand mask0011(%rip), %ymm10, %ymm10 -vpand mask0110(%rip), %ymm11, %ymm11 -vpand mask1100(%rip), %ymm12, %ymm12 -vpxor %ymm10, %ymm11, %ymm11 -vpxor %ymm11, %ymm12, %ymm10 -vpclmulqdq $1, %xmm4, %xmm6, %xmm0 -vpclmulqdq $16, %xmm4, %xmm6, %xmm11 -vpclmulqdq $17, %xmm4, %xmm6, %xmm12 -vpxor %xmm0, %xmm11, %xmm11 -vpclmulqdq $0, %xmm4, %xmm6, %xmm0 -vpermq $16, %ymm11, %ymm11 -vinserti128 $1, %xmm12, %ymm12, %ymm12 -vpand mask0011(%rip), %ymm0, %ymm0 -vpand mask0110(%rip), %ymm11, %ymm11 -vpand mask1100(%rip), %ymm12, %ymm12 -vpxor %ymm0, %ymm11, %ymm11 -vpxor %ymm11, %ymm12, %ymm0 -vpxor %ymm10, %ymm1, %ymm10 -vpxor %ymm10, %ymm0, %ymm10 -vpxor %ymm8, %ymm8, %ymm8 -vextracti128 $1, %ymm10, %xmm8 -vpxor %ymm1, %ymm8, %ymm1 -vpxor %ymm8, %ymm8, %ymm8 -vinserti128 $1, %xmm10, %ymm8, %ymm8 -vpxor %ymm8, %ymm0, %ymm0 -vextracti128 $1, %ymm5, %xmm8 -vextracti128 $1, %ymm7, %xmm9 -vpclmulqdq $1, %xmm8, %xmm9, %xmm3 -vpclmulqdq $16, %xmm8, %xmm9, %xmm11 -vpclmulqdq $17, %xmm8, %xmm9, %xmm12 -vpxor %xmm3, %xmm11, %xmm11 -vpclmulqdq $0, %xmm8, %xmm9, %xmm3 -vpermq $16, %ymm11, %ymm11 -vinserti128 $1, %xmm12, %ymm12, %ymm12 -vpand mask0011(%rip), %ymm3, %ymm3 -vpand mask0110(%rip), %ymm11, %ymm11 -vpand mask1100(%rip), %ymm12, %ymm12 -vpxor %ymm3, %ymm11, %ymm11 -vpxor %ymm11, %ymm12, %ymm3 -vpxor %xmm5, %xmm8, %xmm8 -vpxor %xmm7, %xmm9, %xmm9 -vpclmulqdq $1, %xmm8, %xmm9, %xmm10 -vpclmulqdq $16, %xmm8, %xmm9, %xmm11 -vpclmulqdq $17, %xmm8, %xmm9, %xmm12 -vpxor %xmm10, %xmm11, %xmm11 -vpclmulqdq $0, %xmm8, %xmm9, %xmm10 -vpermq $16, %ymm11, %ymm11 -vinserti128 $1, %xmm12, %ymm12, %ymm12 -vpand mask0011(%rip), %ymm10, %ymm10 -vpand mask0110(%rip), %ymm11, %ymm11 -vpand mask1100(%rip), %ymm12, %ymm12 -vpxor %ymm10, %ymm11, %ymm11 -vpxor %ymm11, %ymm12, %ymm10 -vpclmulqdq $1, %xmm5, %xmm7, %xmm2 -vpclmulqdq $16, %xmm5, %xmm7, %xmm11 -vpclmulqdq $17, %xmm5, %xmm7, %xmm12 -vpxor %xmm2, %xmm11, %xmm11 -vpclmulqdq $0, %xmm5, %xmm7, %xmm2 -vpermq $16, %ymm11, %ymm11 -vinserti128 $1, %xmm12, %ymm12, %ymm12 -vpand mask0011(%rip), %ymm2, %ymm2 -vpand mask0110(%rip), %ymm11, %ymm11 -vpand mask1100(%rip), %ymm12, %ymm12 -vpxor %ymm2, %ymm11, %ymm11 -vpxor %ymm11, %ymm12, %ymm2 -vpxor %ymm10, %ymm3, %ymm10 -vpxor %ymm10, %ymm2, %ymm10 -vpxor %ymm8, %ymm8, %ymm8 -vextracti128 $1, %ymm10, %xmm8 -vpxor %ymm3, %ymm8, %ymm3 -vpxor %ymm8, %ymm8, %ymm8 -vinserti128 $1, %xmm10, %ymm8, %ymm8 -vpxor %ymm8, %ymm2, %ymm2 -vextracti128 $1, %ymm13, %xmm8 -vextracti128 $1, %ymm14, %xmm9 -vpclmulqdq $1, %xmm8, %xmm9, %xmm5 -vpclmulqdq $16, %xmm8, %xmm9, %xmm11 -vpclmulqdq $17, %xmm8, %xmm9, %xmm12 -vpxor %xmm5, %xmm11, %xmm11 -vpclmulqdq $0, %xmm8, %xmm9, %xmm5 -vpermq $16, %ymm11, %ymm11 -vinserti128 $1, %xmm12, %ymm12, %ymm12 -vpand mask0011(%rip), %ymm5, %ymm5 -vpand mask0110(%rip), %ymm11, %ymm11 -vpand mask1100(%rip), %ymm12, %ymm12 -vpxor %ymm5, %ymm11, %ymm11 -vpxor %ymm11, %ymm12, %ymm5 -vpxor %xmm13, %xmm8, %xmm8 -vpxor %xmm14, %xmm9, %xmm9 -vpclmulqdq $1, %xmm8, %xmm9, %xmm10 -vpclmulqdq $16, %xmm8, %xmm9, %xmm11 -vpclmulqdq $17, %xmm8, %xmm9, %xmm12 -vpxor %xmm10, %xmm11, %xmm11 -vpclmulqdq $0, %xmm8, %xmm9, %xmm10 -vpermq $16, %ymm11, %ymm11 -vinserti128 $1, %xmm12, %ymm12, %ymm12 -vpand mask0011(%rip), %ymm10, %ymm10 -vpand mask0110(%rip), %ymm11, %ymm11 -vpand mask1100(%rip), %ymm12, %ymm12 -vpxor %ymm10, %ymm11, %ymm11 -vpxor %ymm11, %ymm12, %ymm10 -vpclmulqdq $1, %xmm13, %xmm14, %xmm4 -vpclmulqdq $16, %xmm13, %xmm14, %xmm11 -vpclmulqdq $17, %xmm13, %xmm14, %xmm12 -vpxor %xmm4, %xmm11, %xmm11 -vpclmulqdq $0, %xmm13, %xmm14, %xmm4 -vpermq $16, %ymm11, %ymm11 -vinserti128 $1, %xmm12, %ymm12, %ymm12 -vpand mask0011(%rip), %ymm4, %ymm4 -vpand mask0110(%rip), %ymm11, %ymm11 -vpand mask1100(%rip), %ymm12, %ymm12 -vpxor %ymm4, %ymm11, %ymm11 -vpxor %ymm11, %ymm12, %ymm4 -vpxor %ymm10, %ymm5, %ymm10 -vpxor %ymm10, %ymm4, %ymm10 -vpxor %ymm8, %ymm8, %ymm8 -vextracti128 $1, %ymm10, %xmm8 -vpxor %ymm5, %ymm8, %ymm5 -vpxor %ymm8, %ymm8, %ymm8 -vinserti128 $1, %xmm10, %ymm8, %ymm8 -vpxor %ymm8, %ymm4, %ymm4 -vpxor %ymm0, %ymm4, %ymm4 -vpxor %ymm1, %ymm5, %ymm5 -vpxor %ymm2, %ymm4, %ymm4 -vpxor %ymm3, %ymm5, %ymm5 -vpxor %ymm4, %ymm1, %ymm1 -vpxor %ymm5, %ymm2, %ymm2 -vmovdqa 0(%rdi), %ymm8 -vmovdqa 32(%rdi), %ymm9 -vmovdqa 64(%rdi), %ymm10 -vmovdqa 96(%rdi), %ymm11 -vpxor %ymm0, %ymm10, %ymm10 -vpand low53(%rip), %ymm1, %ymm7 -vpxor %ymm7, %ymm11, %ymm11 -vpand mask1110(%rip), %ymm1, %ymm4 -vpsllq $11, %ymm4, %ymm4 -vpermq $57, %ymm4, %ymm4 -vpsrlq $53, %ymm1, %ymm7 -vpxor %ymm7, %ymm4, %ymm4 -vpand mask0001(%rip), %ymm2, %ymm5 -vpermq $57, %ymm5, %ymm5 -vpsllq $11, %ymm5, %ymm5 -vpand mask1110(%rip), %ymm2, %ymm6 -vpsllq $11, %ymm6, %ymm6 -vpermq $57, %ymm6, %ymm6 -vpsrlq $53, %ymm2, %ymm7 -vpxor %ymm7, %ymm6, %ymm6 -vpxor %ymm4, %ymm5, %ymm5 -vpxor %ymm5, %ymm8, %ymm8 -vpand mask0001(%rip), %ymm3, %ymm4 -vpermq $57, %ymm4, %ymm4 -vpsllq $11, %ymm4, %ymm4 -vpand mask1110(%rip), %ymm3, %ymm5 -vpsllq $11, %ymm5, %ymm5 -vpermq $57, %ymm5, %ymm5 -vpsrlq $53, %ymm3, %ymm7 -vpxor %ymm7, %ymm5, %ymm5 -vpxor %ymm4, %ymm6, %ymm6 -vpxor %ymm6, %ymm9, %ymm9 -vpxor %ymm5, %ymm10, %ymm10 -vmovdqa %ymm8, 0(%rdi) -vmovdqa %ymm9, 32(%rdi) -vmovdqa %ymm10, 64(%rdi) -vmovdqa %ymm11, 96(%rdi) -ret diff --git a/src/kem/ntru/ntruhps4096821/avx2/poly_rq_mul.s b/src/kem/ntru/ntruhps4096821/avx2/poly_rq_mul.s deleted file mode 100644 index ae969761..00000000 --- a/src/kem/ntru/ntruhps4096821/avx2/poly_rq_mul.s +++ /dev/null @@ -1,10652 +0,0 @@ -.data -.p2align 5 -mask_low9words: -.word 0xffff -.word 0xffff -.word 0xffff -.word 0xffff -.word 0xffff -.word 0xffff -.word 0xffff -.word 0xffff -.word 0xffff -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -const3: -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -const9: -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -const0: -.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 0 -const729: -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -const3_inv: -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -const5_inv: -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -rol_rol_16: -.byte 2 -.byte 3 -.byte 4 -.byte 5 -.byte 6 -.byte 7 -.byte 8 -.byte 9 -.byte 10 -.byte 11 -.byte 12 -.byte 13 -.byte 14 -.byte 15 -.byte 0 -.byte 1 -.byte 2 -.byte 3 -.byte 4 -.byte 5 -.byte 6 -.byte 7 -.byte 8 -.byte 9 -.byte 10 -.byte 11 -.byte 12 -.byte 13 -.byte 14 -.byte 15 -.byte 0 -.byte 1 -mask32_to_16: -.word 0xffff -.word 0x0 -.word 0xffff -.word 0x0 -.word 0xffff -.word 0x0 -.word 0xffff -.word 0x0 -.word 0xffff -.word 0x0 -.word 0xffff -.word 0x0 -.word 0xffff -.word 0x0 -.word 0xffff -.word 0x0 -mask_9_7: -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -mask_7_9: -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.text -.global PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_mul -.global _PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_mul -PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_mul: -_PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_mul: -push %r12 -mov %rsp, %r8 -andq $-32, %rsp -subq $8192, %rsp -mov %rsp, %rax -subq $8192, %rsp -mov %rsp, %r11 -subq $16384, %rsp -mov %rsp, %r12 -subq $512, %rsp -vpxor %ymm3, %ymm3, %ymm3 -vmovdqa %ymm3, 0(%rdi) -vmovdqa %ymm3, 32(%rdi) -vmovdqa %ymm3, 64(%rdi) -vmovdqa %ymm3, 96(%rdi) -vmovdqa %ymm3, 128(%rdi) -vmovdqa %ymm3, 160(%rdi) -vmovdqa %ymm3, 192(%rdi) -vmovdqa %ymm3, 224(%rdi) -vmovdqa %ymm3, 256(%rdi) -vmovdqa %ymm3, 288(%rdi) -vmovdqa %ymm3, 320(%rdi) -vmovdqa %ymm3, 352(%rdi) -vmovdqa %ymm3, 384(%rdi) -vmovdqa %ymm3, 416(%rdi) -vmovdqa %ymm3, 448(%rdi) -vmovdqa %ymm3, 480(%rdi) -vmovdqa %ymm3, 512(%rdi) -vmovdqa %ymm3, 544(%rdi) -vmovdqa %ymm3, 576(%rdi) -vmovdqa %ymm3, 608(%rdi) -vmovdqa %ymm3, 640(%rdi) -vmovdqa %ymm3, 672(%rdi) -vmovdqa %ymm3, 704(%rdi) -vmovdqa %ymm3, 736(%rdi) -vmovdqa %ymm3, 768(%rdi) -vmovdqa %ymm3, 800(%rdi) -vmovdqa %ymm3, 832(%rdi) -vmovdqa %ymm3, 864(%rdi) -vmovdqa %ymm3, 896(%rdi) -vmovdqa %ymm3, 928(%rdi) -vmovdqa %ymm3, 960(%rdi) -vmovdqa %ymm3, 992(%rdi) -vmovdqa %ymm3, 1024(%rdi) -vmovdqa %ymm3, 1056(%rdi) -vmovdqa %ymm3, 1088(%rdi) -vmovdqa %ymm3, 1120(%rdi) -vmovdqa %ymm3, 1152(%rdi) -vmovdqa %ymm3, 1184(%rdi) -vmovdqa %ymm3, 1216(%rdi) -vmovdqa %ymm3, 1248(%rdi) -vmovdqa %ymm3, 1280(%rdi) -vmovdqa %ymm3, 1312(%rdi) -vmovdqa %ymm3, 1344(%rdi) -vmovdqa %ymm3, 1376(%rdi) -vmovdqa %ymm3, 1408(%rdi) -vmovdqa %ymm3, 1440(%rdi) -vmovdqa %ymm3, 1472(%rdi) -vmovdqa %ymm3, 1504(%rdi) -vmovdqa %ymm3, 1536(%rdi) -vmovdqa %ymm3, 1568(%rdi) -vmovdqa %ymm3, 1600(%rdi) -vmovdqa %ymm3, 1632(%rdi) -vmovdqa const3(%rip), %ymm3 -vmovdqu 0(%rsi), %ymm0 -vmovdqu 104(%rsi), %ymm1 -vmovdqu 208(%rsi), %ymm2 -vmovdqu 312(%rsi), %ymm12 -vmovdqu 1248(%rsi), %ymm4 -vmovdqu 1352(%rsi), %ymm5 -vmovdqu 1456(%rsi), %ymm6 -vmovdqu 1560(%rsi), %ymm7 -vmovdqu 416(%rsi), %ymm8 -vmovdqu 520(%rsi), %ymm9 -vmovdqu 624(%rsi), %ymm10 -vmovdqu 728(%rsi), %ymm11 -vmovdqa %ymm0, 0(%rax) -vmovdqa %ymm1, 128(%rax) -vpaddw %ymm0, %ymm1, %ymm14 -vmovdqa %ymm14, 256(%rax) -vmovdqa %ymm2, 384(%rax) -vmovdqa %ymm12, 512(%rax) -vpaddw %ymm2, %ymm12, %ymm14 -vmovdqa %ymm14, 640(%rax) -vpaddw %ymm0, %ymm2, %ymm14 -vmovdqa %ymm14, 768(%rax) -vpaddw %ymm1, %ymm12, %ymm15 -vmovdqa %ymm15, 896(%rax) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 1024(%rax) -vmovdqa %ymm4, 6912(%rax) -vmovdqa %ymm5, 7040(%rax) -vpaddw %ymm4, %ymm5, %ymm14 -vmovdqa %ymm14, 7168(%rax) -vmovdqa %ymm6, 7296(%rax) -vmovdqa %ymm7, 7424(%rax) -vpaddw %ymm6, %ymm7, %ymm14 -vmovdqa %ymm14, 7552(%rax) -vpaddw %ymm4, %ymm6, %ymm14 -vmovdqa %ymm14, 7680(%rax) -vpaddw %ymm5, %ymm7, %ymm15 -vmovdqa %ymm15, 7808(%rax) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7936(%rax) -vmovdqa %ymm0, 0(%rsp) -vmovdqa %ymm1, 32(%rsp) -vmovdqa %ymm2, 64(%rsp) -vmovdqa %ymm12, 96(%rsp) -vmovdqa %ymm8, 128(%rsp) -vmovdqa %ymm9, 160(%rsp) -vmovdqa %ymm10, 192(%rsp) -vmovdqa %ymm11, 224(%rsp) -vmovdqu 832(%rsi), %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm1 -vpaddw 128(%rsp), %ymm4, %ymm2 -vpaddw %ymm2, %ymm1, %ymm8 -vpsubw %ymm2, %ymm1, %ymm12 -vmovdqa %ymm0, 256(%rsp) -vmovdqu 936(%rsi), %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm1 -vpaddw 160(%rsp), %ymm5, %ymm2 -vpaddw %ymm2, %ymm1, %ymm9 -vpsubw %ymm2, %ymm1, %ymm13 -vmovdqa %ymm0, 288(%rsp) -vmovdqu 1040(%rsi), %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm1 -vpaddw 192(%rsp), %ymm6, %ymm2 -vpaddw %ymm2, %ymm1, %ymm10 -vpsubw %ymm2, %ymm1, %ymm14 -vmovdqa %ymm0, 320(%rsp) -vmovdqu 1144(%rsi), %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm1 -vpaddw 224(%rsp), %ymm7, %ymm2 -vpaddw %ymm2, %ymm1, %ymm11 -vpsubw %ymm2, %ymm1, %ymm15 -vmovdqa %ymm0, 352(%rsp) -vmovdqa %ymm8, 1152(%rax) -vmovdqa %ymm9, 1280(%rax) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 1408(%rax) -vmovdqa %ymm10, 1536(%rax) -vmovdqa %ymm11, 1664(%rax) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 1792(%rax) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 1920(%rax) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 2048(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 2176(%rax) -vmovdqa %ymm12, 2304(%rax) -vmovdqa %ymm13, 2432(%rax) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 2560(%rax) -vmovdqa %ymm14, 2688(%rax) -vmovdqa %ymm15, 2816(%rax) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 2944(%rax) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 3072(%rax) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 3200(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 3328(%rax) -vmovdqa 256(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm4, %ymm1 -vpaddw 128(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm8 -vpsubw %ymm1, %ymm0, %ymm12 -vmovdqa 288(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm5, %ymm1 -vpaddw 160(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm9 -vpsubw %ymm1, %ymm0, %ymm13 -vmovdqa 320(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm6, %ymm1 -vpaddw 192(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm10 -vpsubw %ymm1, %ymm0, %ymm14 -vmovdqa 352(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm7, %ymm1 -vpaddw 224(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm11 -vpsubw %ymm1, %ymm0, %ymm15 -vmovdqa %ymm8, 3456(%rax) -vmovdqa %ymm9, 3584(%rax) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 3712(%rax) -vmovdqa %ymm10, 3840(%rax) -vmovdqa %ymm11, 3968(%rax) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 4096(%rax) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 4224(%rax) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 4352(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 4480(%rax) -vmovdqa %ymm12, 4608(%rax) -vmovdqa %ymm13, 4736(%rax) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 4864(%rax) -vmovdqa %ymm14, 4992(%rax) -vmovdqa %ymm15, 5120(%rax) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 5248(%rax) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 5376(%rax) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 5504(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 5632(%rax) -vpmullw %ymm3, %ymm4, %ymm0 -vpaddw 256(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 128(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm12 -vpmullw %ymm3, %ymm5, %ymm0 -vpaddw 288(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 160(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm13 -vpmullw %ymm3, %ymm6, %ymm0 -vpaddw 320(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 192(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm14 -vpmullw %ymm3, %ymm7, %ymm0 -vpaddw 352(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 224(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm15 -vmovdqa %ymm12, 5760(%rax) -vmovdqa %ymm13, 5888(%rax) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 6016(%rax) -vmovdqa %ymm14, 6144(%rax) -vmovdqa %ymm15, 6272(%rax) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 6400(%rax) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 6528(%rax) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 6656(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 6784(%rax) -vmovdqu 32(%rsi), %ymm0 -vmovdqu 136(%rsi), %ymm1 -vmovdqu 240(%rsi), %ymm2 -vmovdqu 344(%rsi), %ymm12 -vmovdqu 1280(%rsi), %ymm4 -vmovdqu 1384(%rsi), %ymm5 -vmovdqu 1488(%rsi), %ymm6 -vmovdqu 1592(%rsi), %ymm7 -vmovdqu 448(%rsi), %ymm8 -vmovdqu 552(%rsi), %ymm9 -vmovdqu 656(%rsi), %ymm10 -vmovdqu 760(%rsi), %ymm11 -vmovdqa %ymm0, 32(%rax) -vmovdqa %ymm1, 160(%rax) -vpaddw %ymm0, %ymm1, %ymm14 -vmovdqa %ymm14, 288(%rax) -vmovdqa %ymm2, 416(%rax) -vmovdqa %ymm12, 544(%rax) -vpaddw %ymm2, %ymm12, %ymm14 -vmovdqa %ymm14, 672(%rax) -vpaddw %ymm0, %ymm2, %ymm14 -vmovdqa %ymm14, 800(%rax) -vpaddw %ymm1, %ymm12, %ymm15 -vmovdqa %ymm15, 928(%rax) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 1056(%rax) -vmovdqa %ymm4, 6944(%rax) -vmovdqa %ymm5, 7072(%rax) -vpaddw %ymm4, %ymm5, %ymm14 -vmovdqa %ymm14, 7200(%rax) -vmovdqa %ymm6, 7328(%rax) -vmovdqa %ymm7, 7456(%rax) -vpaddw %ymm6, %ymm7, %ymm14 -vmovdqa %ymm14, 7584(%rax) -vpaddw %ymm4, %ymm6, %ymm14 -vmovdqa %ymm14, 7712(%rax) -vpaddw %ymm5, %ymm7, %ymm15 -vmovdqa %ymm15, 7840(%rax) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7968(%rax) -vmovdqa %ymm0, 0(%rsp) -vmovdqa %ymm1, 32(%rsp) -vmovdqa %ymm2, 64(%rsp) -vmovdqa %ymm12, 96(%rsp) -vmovdqa %ymm8, 128(%rsp) -vmovdqa %ymm9, 160(%rsp) -vmovdqa %ymm10, 192(%rsp) -vmovdqa %ymm11, 224(%rsp) -vmovdqu 864(%rsi), %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm1 -vpaddw 128(%rsp), %ymm4, %ymm2 -vpaddw %ymm2, %ymm1, %ymm8 -vpsubw %ymm2, %ymm1, %ymm12 -vmovdqa %ymm0, 256(%rsp) -vmovdqu 968(%rsi), %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm1 -vpaddw 160(%rsp), %ymm5, %ymm2 -vpaddw %ymm2, %ymm1, %ymm9 -vpsubw %ymm2, %ymm1, %ymm13 -vmovdqa %ymm0, 288(%rsp) -vmovdqu 1072(%rsi), %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm1 -vpaddw 192(%rsp), %ymm6, %ymm2 -vpaddw %ymm2, %ymm1, %ymm10 -vpsubw %ymm2, %ymm1, %ymm14 -vmovdqa %ymm0, 320(%rsp) -vmovdqu 1176(%rsi), %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm1 -vpaddw 224(%rsp), %ymm7, %ymm2 -vpaddw %ymm2, %ymm1, %ymm11 -vpsubw %ymm2, %ymm1, %ymm15 -vmovdqa %ymm0, 352(%rsp) -vmovdqa %ymm8, 1184(%rax) -vmovdqa %ymm9, 1312(%rax) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 1440(%rax) -vmovdqa %ymm10, 1568(%rax) -vmovdqa %ymm11, 1696(%rax) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 1824(%rax) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 1952(%rax) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 2080(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 2208(%rax) -vmovdqa %ymm12, 2336(%rax) -vmovdqa %ymm13, 2464(%rax) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 2592(%rax) -vmovdqa %ymm14, 2720(%rax) -vmovdqa %ymm15, 2848(%rax) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 2976(%rax) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 3104(%rax) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 3232(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 3360(%rax) -vmovdqa 256(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm4, %ymm1 -vpaddw 128(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm8 -vpsubw %ymm1, %ymm0, %ymm12 -vmovdqa 288(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm5, %ymm1 -vpaddw 160(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm9 -vpsubw %ymm1, %ymm0, %ymm13 -vmovdqa 320(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm6, %ymm1 -vpaddw 192(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm10 -vpsubw %ymm1, %ymm0, %ymm14 -vmovdqa 352(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm7, %ymm1 -vpaddw 224(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm11 -vpsubw %ymm1, %ymm0, %ymm15 -vmovdqa %ymm8, 3488(%rax) -vmovdqa %ymm9, 3616(%rax) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 3744(%rax) -vmovdqa %ymm10, 3872(%rax) -vmovdqa %ymm11, 4000(%rax) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 4128(%rax) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 4256(%rax) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 4384(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 4512(%rax) -vmovdqa %ymm12, 4640(%rax) -vmovdqa %ymm13, 4768(%rax) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 4896(%rax) -vmovdqa %ymm14, 5024(%rax) -vmovdqa %ymm15, 5152(%rax) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 5280(%rax) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 5408(%rax) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 5536(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 5664(%rax) -vpmullw %ymm3, %ymm4, %ymm0 -vpaddw 256(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 128(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm12 -vpmullw %ymm3, %ymm5, %ymm0 -vpaddw 288(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 160(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm13 -vpmullw %ymm3, %ymm6, %ymm0 -vpaddw 320(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 192(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm14 -vpmullw %ymm3, %ymm7, %ymm0 -vpaddw 352(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 224(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm15 -vmovdqa %ymm12, 5792(%rax) -vmovdqa %ymm13, 5920(%rax) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 6048(%rax) -vmovdqa %ymm14, 6176(%rax) -vmovdqa %ymm15, 6304(%rax) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 6432(%rax) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 6560(%rax) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 6688(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 6816(%rax) -vmovdqu 64(%rsi), %ymm0 -vmovdqu 168(%rsi), %ymm1 -vmovdqu 272(%rsi), %ymm2 -vmovdqu 376(%rsi), %ymm12 -vmovdqu 1312(%rsi), %ymm4 -vmovdqu 1416(%rsi), %ymm5 -vmovdqu 1520(%rsi), %ymm6 -vmovdqu 1624(%rsi), %ymm7 -vpand mask_9_7(%rip), %ymm7, %ymm7 -vmovdqu 480(%rsi), %ymm8 -vmovdqu 584(%rsi), %ymm9 -vmovdqu 688(%rsi), %ymm10 -vmovdqu 792(%rsi), %ymm11 -vmovdqa %ymm0, 64(%rax) -vmovdqa %ymm1, 192(%rax) -vpaddw %ymm0, %ymm1, %ymm14 -vmovdqa %ymm14, 320(%rax) -vmovdqa %ymm2, 448(%rax) -vmovdqa %ymm12, 576(%rax) -vpaddw %ymm2, %ymm12, %ymm14 -vmovdqa %ymm14, 704(%rax) -vpaddw %ymm0, %ymm2, %ymm14 -vmovdqa %ymm14, 832(%rax) -vpaddw %ymm1, %ymm12, %ymm15 -vmovdqa %ymm15, 960(%rax) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 1088(%rax) -vmovdqa %ymm4, 6976(%rax) -vmovdqa %ymm5, 7104(%rax) -vpaddw %ymm4, %ymm5, %ymm14 -vmovdqa %ymm14, 7232(%rax) -vmovdqa %ymm6, 7360(%rax) -vmovdqa %ymm7, 7488(%rax) -vpaddw %ymm6, %ymm7, %ymm14 -vmovdqa %ymm14, 7616(%rax) -vpaddw %ymm4, %ymm6, %ymm14 -vmovdqa %ymm14, 7744(%rax) -vpaddw %ymm5, %ymm7, %ymm15 -vmovdqa %ymm15, 7872(%rax) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 8000(%rax) -vmovdqa %ymm0, 0(%rsp) -vmovdqa %ymm1, 32(%rsp) -vmovdqa %ymm2, 64(%rsp) -vmovdqa %ymm12, 96(%rsp) -vmovdqa %ymm8, 128(%rsp) -vmovdqa %ymm9, 160(%rsp) -vmovdqa %ymm10, 192(%rsp) -vmovdqa %ymm11, 224(%rsp) -vmovdqu 896(%rsi), %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm1 -vpaddw 128(%rsp), %ymm4, %ymm2 -vpaddw %ymm2, %ymm1, %ymm8 -vpsubw %ymm2, %ymm1, %ymm12 -vmovdqa %ymm0, 256(%rsp) -vmovdqu 1000(%rsi), %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm1 -vpaddw 160(%rsp), %ymm5, %ymm2 -vpaddw %ymm2, %ymm1, %ymm9 -vpsubw %ymm2, %ymm1, %ymm13 -vmovdqa %ymm0, 288(%rsp) -vmovdqu 1104(%rsi), %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm1 -vpaddw 192(%rsp), %ymm6, %ymm2 -vpaddw %ymm2, %ymm1, %ymm10 -vpsubw %ymm2, %ymm1, %ymm14 -vmovdqa %ymm0, 320(%rsp) -vmovdqu 1208(%rsi), %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm1 -vpaddw 224(%rsp), %ymm7, %ymm2 -vpaddw %ymm2, %ymm1, %ymm11 -vpsubw %ymm2, %ymm1, %ymm15 -vmovdqa %ymm0, 352(%rsp) -vmovdqa %ymm8, 1216(%rax) -vmovdqa %ymm9, 1344(%rax) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 1472(%rax) -vmovdqa %ymm10, 1600(%rax) -vmovdqa %ymm11, 1728(%rax) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 1856(%rax) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 1984(%rax) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 2112(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 2240(%rax) -vmovdqa %ymm12, 2368(%rax) -vmovdqa %ymm13, 2496(%rax) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 2624(%rax) -vmovdqa %ymm14, 2752(%rax) -vmovdqa %ymm15, 2880(%rax) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 3008(%rax) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 3136(%rax) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 3264(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 3392(%rax) -vmovdqa 256(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm4, %ymm1 -vpaddw 128(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm8 -vpsubw %ymm1, %ymm0, %ymm12 -vmovdqa 288(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm5, %ymm1 -vpaddw 160(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm9 -vpsubw %ymm1, %ymm0, %ymm13 -vmovdqa 320(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm6, %ymm1 -vpaddw 192(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm10 -vpsubw %ymm1, %ymm0, %ymm14 -vmovdqa 352(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm7, %ymm1 -vpaddw 224(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm11 -vpsubw %ymm1, %ymm0, %ymm15 -vmovdqa %ymm8, 3520(%rax) -vmovdqa %ymm9, 3648(%rax) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 3776(%rax) -vmovdqa %ymm10, 3904(%rax) -vmovdqa %ymm11, 4032(%rax) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 4160(%rax) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 4288(%rax) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 4416(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 4544(%rax) -vmovdqa %ymm12, 4672(%rax) -vmovdqa %ymm13, 4800(%rax) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 4928(%rax) -vmovdqa %ymm14, 5056(%rax) -vmovdqa %ymm15, 5184(%rax) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 5312(%rax) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 5440(%rax) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 5568(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 5696(%rax) -vpmullw %ymm3, %ymm4, %ymm0 -vpaddw 256(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 128(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm12 -vpmullw %ymm3, %ymm5, %ymm0 -vpaddw 288(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 160(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm13 -vpmullw %ymm3, %ymm6, %ymm0 -vpaddw 320(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 192(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm14 -vpmullw %ymm3, %ymm7, %ymm0 -vpaddw 352(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 224(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm15 -vmovdqa %ymm12, 5824(%rax) -vmovdqa %ymm13, 5952(%rax) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 6080(%rax) -vmovdqa %ymm14, 6208(%rax) -vmovdqa %ymm15, 6336(%rax) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 6464(%rax) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 6592(%rax) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 6720(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 6848(%rax) -vmovdqu 96(%rsi), %ymm0 -vmovdqu 200(%rsi), %ymm1 -vmovdqu 304(%rsi), %ymm2 -vmovdqu 408(%rsi), %ymm12 -vmovdqu 1344(%rsi), %ymm4 -vmovdqu 1448(%rsi), %ymm5 -vmovdqu 1552(%rsi), %ymm6 -vmovdqu 1656(%rsi), %ymm7 -vpxor %ymm7, %ymm7, %ymm7 -vmovdqu 512(%rsi), %ymm8 -vmovdqu 616(%rsi), %ymm9 -vmovdqu 720(%rsi), %ymm10 -vmovdqu 824(%rsi), %ymm11 -vmovdqa %ymm0, 96(%rax) -vmovdqa %ymm1, 224(%rax) -vpaddw %ymm0, %ymm1, %ymm14 -vmovdqa %ymm14, 352(%rax) -vmovdqa %ymm2, 480(%rax) -vmovdqa %ymm12, 608(%rax) -vpaddw %ymm2, %ymm12, %ymm14 -vmovdqa %ymm14, 736(%rax) -vpaddw %ymm0, %ymm2, %ymm14 -vmovdqa %ymm14, 864(%rax) -vpaddw %ymm1, %ymm12, %ymm15 -vmovdqa %ymm15, 992(%rax) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 1120(%rax) -vmovdqa %ymm4, 7008(%rax) -vmovdqa %ymm5, 7136(%rax) -vpaddw %ymm4, %ymm5, %ymm14 -vmovdqa %ymm14, 7264(%rax) -vmovdqa %ymm6, 7392(%rax) -vmovdqa %ymm7, 7520(%rax) -vpaddw %ymm6, %ymm7, %ymm14 -vmovdqa %ymm14, 7648(%rax) -vpaddw %ymm4, %ymm6, %ymm14 -vmovdqa %ymm14, 7776(%rax) -vpaddw %ymm5, %ymm7, %ymm15 -vmovdqa %ymm15, 7904(%rax) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 8032(%rax) -vmovdqa %ymm0, 0(%rsp) -vmovdqa %ymm1, 32(%rsp) -vmovdqa %ymm2, 64(%rsp) -vmovdqa %ymm12, 96(%rsp) -vmovdqa %ymm8, 128(%rsp) -vmovdqa %ymm9, 160(%rsp) -vmovdqa %ymm10, 192(%rsp) -vmovdqa %ymm11, 224(%rsp) -vmovdqu 928(%rsi), %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm1 -vpaddw 128(%rsp), %ymm4, %ymm2 -vpaddw %ymm2, %ymm1, %ymm8 -vpsubw %ymm2, %ymm1, %ymm12 -vmovdqa %ymm0, 256(%rsp) -vmovdqu 1032(%rsi), %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm1 -vpaddw 160(%rsp), %ymm5, %ymm2 -vpaddw %ymm2, %ymm1, %ymm9 -vpsubw %ymm2, %ymm1, %ymm13 -vmovdqa %ymm0, 288(%rsp) -vmovdqu 1136(%rsi), %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm1 -vpaddw 192(%rsp), %ymm6, %ymm2 -vpaddw %ymm2, %ymm1, %ymm10 -vpsubw %ymm2, %ymm1, %ymm14 -vmovdqa %ymm0, 320(%rsp) -vmovdqu 1240(%rsi), %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm1 -vpaddw 224(%rsp), %ymm7, %ymm2 -vpaddw %ymm2, %ymm1, %ymm11 -vpsubw %ymm2, %ymm1, %ymm15 -vmovdqa %ymm0, 352(%rsp) -vmovdqa %ymm8, 1248(%rax) -vmovdqa %ymm9, 1376(%rax) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 1504(%rax) -vmovdqa %ymm10, 1632(%rax) -vmovdqa %ymm11, 1760(%rax) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 1888(%rax) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 2016(%rax) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 2144(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 2272(%rax) -vmovdqa %ymm12, 2400(%rax) -vmovdqa %ymm13, 2528(%rax) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 2656(%rax) -vmovdqa %ymm14, 2784(%rax) -vmovdqa %ymm15, 2912(%rax) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 3040(%rax) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 3168(%rax) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 3296(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 3424(%rax) -vmovdqa 256(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm4, %ymm1 -vpaddw 128(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm8 -vpsubw %ymm1, %ymm0, %ymm12 -vmovdqa 288(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm5, %ymm1 -vpaddw 160(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm9 -vpsubw %ymm1, %ymm0, %ymm13 -vmovdqa 320(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm6, %ymm1 -vpaddw 192(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm10 -vpsubw %ymm1, %ymm0, %ymm14 -vmovdqa 352(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm7, %ymm1 -vpaddw 224(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm11 -vpsubw %ymm1, %ymm0, %ymm15 -vmovdqa %ymm8, 3552(%rax) -vmovdqa %ymm9, 3680(%rax) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 3808(%rax) -vmovdqa %ymm10, 3936(%rax) -vmovdqa %ymm11, 4064(%rax) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 4192(%rax) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 4320(%rax) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 4448(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 4576(%rax) -vmovdqa %ymm12, 4704(%rax) -vmovdqa %ymm13, 4832(%rax) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 4960(%rax) -vmovdqa %ymm14, 5088(%rax) -vmovdqa %ymm15, 5216(%rax) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 5344(%rax) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 5472(%rax) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 5600(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 5728(%rax) -vpmullw %ymm3, %ymm4, %ymm0 -vpaddw 256(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 128(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm12 -vpmullw %ymm3, %ymm5, %ymm0 -vpaddw 288(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 160(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm13 -vpmullw %ymm3, %ymm6, %ymm0 -vpaddw 320(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 192(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm14 -vpmullw %ymm3, %ymm7, %ymm0 -vpaddw 352(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 224(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm15 -vmovdqa %ymm12, 5856(%rax) -vmovdqa %ymm13, 5984(%rax) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 6112(%rax) -vmovdqa %ymm14, 6240(%rax) -vmovdqa %ymm15, 6368(%rax) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 6496(%rax) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 6624(%rax) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 6752(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 6880(%rax) -vmovdqu 0(%rdx), %ymm0 -vmovdqu 104(%rdx), %ymm1 -vmovdqu 208(%rdx), %ymm2 -vmovdqu 312(%rdx), %ymm12 -vmovdqu 1248(%rdx), %ymm4 -vmovdqu 1352(%rdx), %ymm5 -vmovdqu 1456(%rdx), %ymm6 -vmovdqu 1560(%rdx), %ymm7 -vmovdqu 416(%rdx), %ymm8 -vmovdqu 520(%rdx), %ymm9 -vmovdqu 624(%rdx), %ymm10 -vmovdqu 728(%rdx), %ymm11 -vmovdqa %ymm0, 0(%r11) -vmovdqa %ymm1, 128(%r11) -vpaddw %ymm0, %ymm1, %ymm14 -vmovdqa %ymm14, 256(%r11) -vmovdqa %ymm2, 384(%r11) -vmovdqa %ymm12, 512(%r11) -vpaddw %ymm2, %ymm12, %ymm14 -vmovdqa %ymm14, 640(%r11) -vpaddw %ymm0, %ymm2, %ymm14 -vmovdqa %ymm14, 768(%r11) -vpaddw %ymm1, %ymm12, %ymm15 -vmovdqa %ymm15, 896(%r11) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 1024(%r11) -vmovdqa %ymm4, 6912(%r11) -vmovdqa %ymm5, 7040(%r11) -vpaddw %ymm4, %ymm5, %ymm14 -vmovdqa %ymm14, 7168(%r11) -vmovdqa %ymm6, 7296(%r11) -vmovdqa %ymm7, 7424(%r11) -vpaddw %ymm6, %ymm7, %ymm14 -vmovdqa %ymm14, 7552(%r11) -vpaddw %ymm4, %ymm6, %ymm14 -vmovdqa %ymm14, 7680(%r11) -vpaddw %ymm5, %ymm7, %ymm15 -vmovdqa %ymm15, 7808(%r11) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7936(%r11) -vmovdqa %ymm0, 0(%rsp) -vmovdqa %ymm1, 32(%rsp) -vmovdqa %ymm2, 64(%rsp) -vmovdqa %ymm12, 96(%rsp) -vmovdqa %ymm8, 128(%rsp) -vmovdqa %ymm9, 160(%rsp) -vmovdqa %ymm10, 192(%rsp) -vmovdqa %ymm11, 224(%rsp) -vmovdqu 832(%rdx), %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm1 -vpaddw 128(%rsp), %ymm4, %ymm2 -vpaddw %ymm2, %ymm1, %ymm8 -vpsubw %ymm2, %ymm1, %ymm12 -vmovdqa %ymm0, 256(%rsp) -vmovdqu 936(%rdx), %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm1 -vpaddw 160(%rsp), %ymm5, %ymm2 -vpaddw %ymm2, %ymm1, %ymm9 -vpsubw %ymm2, %ymm1, %ymm13 -vmovdqa %ymm0, 288(%rsp) -vmovdqu 1040(%rdx), %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm1 -vpaddw 192(%rsp), %ymm6, %ymm2 -vpaddw %ymm2, %ymm1, %ymm10 -vpsubw %ymm2, %ymm1, %ymm14 -vmovdqa %ymm0, 320(%rsp) -vmovdqu 1144(%rdx), %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm1 -vpaddw 224(%rsp), %ymm7, %ymm2 -vpaddw %ymm2, %ymm1, %ymm11 -vpsubw %ymm2, %ymm1, %ymm15 -vmovdqa %ymm0, 352(%rsp) -vmovdqa %ymm8, 1152(%r11) -vmovdqa %ymm9, 1280(%r11) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 1408(%r11) -vmovdqa %ymm10, 1536(%r11) -vmovdqa %ymm11, 1664(%r11) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 1792(%r11) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 1920(%r11) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 2048(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 2176(%r11) -vmovdqa %ymm12, 2304(%r11) -vmovdqa %ymm13, 2432(%r11) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 2560(%r11) -vmovdqa %ymm14, 2688(%r11) -vmovdqa %ymm15, 2816(%r11) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 2944(%r11) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 3072(%r11) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 3200(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 3328(%r11) -vmovdqa 256(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm4, %ymm1 -vpaddw 128(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm8 -vpsubw %ymm1, %ymm0, %ymm12 -vmovdqa 288(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm5, %ymm1 -vpaddw 160(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm9 -vpsubw %ymm1, %ymm0, %ymm13 -vmovdqa 320(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm6, %ymm1 -vpaddw 192(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm10 -vpsubw %ymm1, %ymm0, %ymm14 -vmovdqa 352(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm7, %ymm1 -vpaddw 224(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm11 -vpsubw %ymm1, %ymm0, %ymm15 -vmovdqa %ymm8, 3456(%r11) -vmovdqa %ymm9, 3584(%r11) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 3712(%r11) -vmovdqa %ymm10, 3840(%r11) -vmovdqa %ymm11, 3968(%r11) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 4096(%r11) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 4224(%r11) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 4352(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 4480(%r11) -vmovdqa %ymm12, 4608(%r11) -vmovdqa %ymm13, 4736(%r11) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 4864(%r11) -vmovdqa %ymm14, 4992(%r11) -vmovdqa %ymm15, 5120(%r11) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 5248(%r11) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 5376(%r11) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 5504(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 5632(%r11) -vpmullw %ymm3, %ymm4, %ymm0 -vpaddw 256(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 128(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm12 -vpmullw %ymm3, %ymm5, %ymm0 -vpaddw 288(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 160(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm13 -vpmullw %ymm3, %ymm6, %ymm0 -vpaddw 320(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 192(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm14 -vpmullw %ymm3, %ymm7, %ymm0 -vpaddw 352(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 224(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm15 -vmovdqa %ymm12, 5760(%r11) -vmovdqa %ymm13, 5888(%r11) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 6016(%r11) -vmovdqa %ymm14, 6144(%r11) -vmovdqa %ymm15, 6272(%r11) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 6400(%r11) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 6528(%r11) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 6656(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 6784(%r11) -vmovdqu 32(%rdx), %ymm0 -vmovdqu 136(%rdx), %ymm1 -vmovdqu 240(%rdx), %ymm2 -vmovdqu 344(%rdx), %ymm12 -vmovdqu 1280(%rdx), %ymm4 -vmovdqu 1384(%rdx), %ymm5 -vmovdqu 1488(%rdx), %ymm6 -vmovdqu 1592(%rdx), %ymm7 -vmovdqu 448(%rdx), %ymm8 -vmovdqu 552(%rdx), %ymm9 -vmovdqu 656(%rdx), %ymm10 -vmovdqu 760(%rdx), %ymm11 -vmovdqa %ymm0, 32(%r11) -vmovdqa %ymm1, 160(%r11) -vpaddw %ymm0, %ymm1, %ymm14 -vmovdqa %ymm14, 288(%r11) -vmovdqa %ymm2, 416(%r11) -vmovdqa %ymm12, 544(%r11) -vpaddw %ymm2, %ymm12, %ymm14 -vmovdqa %ymm14, 672(%r11) -vpaddw %ymm0, %ymm2, %ymm14 -vmovdqa %ymm14, 800(%r11) -vpaddw %ymm1, %ymm12, %ymm15 -vmovdqa %ymm15, 928(%r11) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 1056(%r11) -vmovdqa %ymm4, 6944(%r11) -vmovdqa %ymm5, 7072(%r11) -vpaddw %ymm4, %ymm5, %ymm14 -vmovdqa %ymm14, 7200(%r11) -vmovdqa %ymm6, 7328(%r11) -vmovdqa %ymm7, 7456(%r11) -vpaddw %ymm6, %ymm7, %ymm14 -vmovdqa %ymm14, 7584(%r11) -vpaddw %ymm4, %ymm6, %ymm14 -vmovdqa %ymm14, 7712(%r11) -vpaddw %ymm5, %ymm7, %ymm15 -vmovdqa %ymm15, 7840(%r11) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7968(%r11) -vmovdqa %ymm0, 0(%rsp) -vmovdqa %ymm1, 32(%rsp) -vmovdqa %ymm2, 64(%rsp) -vmovdqa %ymm12, 96(%rsp) -vmovdqa %ymm8, 128(%rsp) -vmovdqa %ymm9, 160(%rsp) -vmovdqa %ymm10, 192(%rsp) -vmovdqa %ymm11, 224(%rsp) -vmovdqu 864(%rdx), %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm1 -vpaddw 128(%rsp), %ymm4, %ymm2 -vpaddw %ymm2, %ymm1, %ymm8 -vpsubw %ymm2, %ymm1, %ymm12 -vmovdqa %ymm0, 256(%rsp) -vmovdqu 968(%rdx), %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm1 -vpaddw 160(%rsp), %ymm5, %ymm2 -vpaddw %ymm2, %ymm1, %ymm9 -vpsubw %ymm2, %ymm1, %ymm13 -vmovdqa %ymm0, 288(%rsp) -vmovdqu 1072(%rdx), %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm1 -vpaddw 192(%rsp), %ymm6, %ymm2 -vpaddw %ymm2, %ymm1, %ymm10 -vpsubw %ymm2, %ymm1, %ymm14 -vmovdqa %ymm0, 320(%rsp) -vmovdqu 1176(%rdx), %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm1 -vpaddw 224(%rsp), %ymm7, %ymm2 -vpaddw %ymm2, %ymm1, %ymm11 -vpsubw %ymm2, %ymm1, %ymm15 -vmovdqa %ymm0, 352(%rsp) -vmovdqa %ymm8, 1184(%r11) -vmovdqa %ymm9, 1312(%r11) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 1440(%r11) -vmovdqa %ymm10, 1568(%r11) -vmovdqa %ymm11, 1696(%r11) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 1824(%r11) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 1952(%r11) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 2080(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 2208(%r11) -vmovdqa %ymm12, 2336(%r11) -vmovdqa %ymm13, 2464(%r11) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 2592(%r11) -vmovdqa %ymm14, 2720(%r11) -vmovdqa %ymm15, 2848(%r11) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 2976(%r11) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 3104(%r11) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 3232(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 3360(%r11) -vmovdqa 256(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm4, %ymm1 -vpaddw 128(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm8 -vpsubw %ymm1, %ymm0, %ymm12 -vmovdqa 288(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm5, %ymm1 -vpaddw 160(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm9 -vpsubw %ymm1, %ymm0, %ymm13 -vmovdqa 320(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm6, %ymm1 -vpaddw 192(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm10 -vpsubw %ymm1, %ymm0, %ymm14 -vmovdqa 352(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm7, %ymm1 -vpaddw 224(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm11 -vpsubw %ymm1, %ymm0, %ymm15 -vmovdqa %ymm8, 3488(%r11) -vmovdqa %ymm9, 3616(%r11) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 3744(%r11) -vmovdqa %ymm10, 3872(%r11) -vmovdqa %ymm11, 4000(%r11) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 4128(%r11) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 4256(%r11) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 4384(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 4512(%r11) -vmovdqa %ymm12, 4640(%r11) -vmovdqa %ymm13, 4768(%r11) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 4896(%r11) -vmovdqa %ymm14, 5024(%r11) -vmovdqa %ymm15, 5152(%r11) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 5280(%r11) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 5408(%r11) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 5536(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 5664(%r11) -vpmullw %ymm3, %ymm4, %ymm0 -vpaddw 256(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 128(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm12 -vpmullw %ymm3, %ymm5, %ymm0 -vpaddw 288(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 160(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm13 -vpmullw %ymm3, %ymm6, %ymm0 -vpaddw 320(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 192(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm14 -vpmullw %ymm3, %ymm7, %ymm0 -vpaddw 352(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 224(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm15 -vmovdqa %ymm12, 5792(%r11) -vmovdqa %ymm13, 5920(%r11) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 6048(%r11) -vmovdqa %ymm14, 6176(%r11) -vmovdqa %ymm15, 6304(%r11) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 6432(%r11) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 6560(%r11) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 6688(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 6816(%r11) -vmovdqu 64(%rdx), %ymm0 -vmovdqu 168(%rdx), %ymm1 -vmovdqu 272(%rdx), %ymm2 -vmovdqu 376(%rdx), %ymm12 -vmovdqu 1312(%rdx), %ymm4 -vmovdqu 1416(%rdx), %ymm5 -vmovdqu 1520(%rdx), %ymm6 -vmovdqu 1624(%rdx), %ymm7 -vpand mask_9_7(%rip), %ymm7, %ymm7 -vmovdqu 480(%rdx), %ymm8 -vmovdqu 584(%rdx), %ymm9 -vmovdqu 688(%rdx), %ymm10 -vmovdqu 792(%rdx), %ymm11 -vmovdqa %ymm0, 64(%r11) -vmovdqa %ymm1, 192(%r11) -vpaddw %ymm0, %ymm1, %ymm14 -vmovdqa %ymm14, 320(%r11) -vmovdqa %ymm2, 448(%r11) -vmovdqa %ymm12, 576(%r11) -vpaddw %ymm2, %ymm12, %ymm14 -vmovdqa %ymm14, 704(%r11) -vpaddw %ymm0, %ymm2, %ymm14 -vmovdqa %ymm14, 832(%r11) -vpaddw %ymm1, %ymm12, %ymm15 -vmovdqa %ymm15, 960(%r11) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 1088(%r11) -vmovdqa %ymm4, 6976(%r11) -vmovdqa %ymm5, 7104(%r11) -vpaddw %ymm4, %ymm5, %ymm14 -vmovdqa %ymm14, 7232(%r11) -vmovdqa %ymm6, 7360(%r11) -vmovdqa %ymm7, 7488(%r11) -vpaddw %ymm6, %ymm7, %ymm14 -vmovdqa %ymm14, 7616(%r11) -vpaddw %ymm4, %ymm6, %ymm14 -vmovdqa %ymm14, 7744(%r11) -vpaddw %ymm5, %ymm7, %ymm15 -vmovdqa %ymm15, 7872(%r11) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 8000(%r11) -vmovdqa %ymm0, 0(%rsp) -vmovdqa %ymm1, 32(%rsp) -vmovdqa %ymm2, 64(%rsp) -vmovdqa %ymm12, 96(%rsp) -vmovdqa %ymm8, 128(%rsp) -vmovdqa %ymm9, 160(%rsp) -vmovdqa %ymm10, 192(%rsp) -vmovdqa %ymm11, 224(%rsp) -vmovdqu 896(%rdx), %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm1 -vpaddw 128(%rsp), %ymm4, %ymm2 -vpaddw %ymm2, %ymm1, %ymm8 -vpsubw %ymm2, %ymm1, %ymm12 -vmovdqa %ymm0, 256(%rsp) -vmovdqu 1000(%rdx), %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm1 -vpaddw 160(%rsp), %ymm5, %ymm2 -vpaddw %ymm2, %ymm1, %ymm9 -vpsubw %ymm2, %ymm1, %ymm13 -vmovdqa %ymm0, 288(%rsp) -vmovdqu 1104(%rdx), %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm1 -vpaddw 192(%rsp), %ymm6, %ymm2 -vpaddw %ymm2, %ymm1, %ymm10 -vpsubw %ymm2, %ymm1, %ymm14 -vmovdqa %ymm0, 320(%rsp) -vmovdqu 1208(%rdx), %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm1 -vpaddw 224(%rsp), %ymm7, %ymm2 -vpaddw %ymm2, %ymm1, %ymm11 -vpsubw %ymm2, %ymm1, %ymm15 -vmovdqa %ymm0, 352(%rsp) -vmovdqa %ymm8, 1216(%r11) -vmovdqa %ymm9, 1344(%r11) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 1472(%r11) -vmovdqa %ymm10, 1600(%r11) -vmovdqa %ymm11, 1728(%r11) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 1856(%r11) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 1984(%r11) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 2112(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 2240(%r11) -vmovdqa %ymm12, 2368(%r11) -vmovdqa %ymm13, 2496(%r11) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 2624(%r11) -vmovdqa %ymm14, 2752(%r11) -vmovdqa %ymm15, 2880(%r11) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 3008(%r11) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 3136(%r11) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 3264(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 3392(%r11) -vmovdqa 256(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm4, %ymm1 -vpaddw 128(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm8 -vpsubw %ymm1, %ymm0, %ymm12 -vmovdqa 288(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm5, %ymm1 -vpaddw 160(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm9 -vpsubw %ymm1, %ymm0, %ymm13 -vmovdqa 320(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm6, %ymm1 -vpaddw 192(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm10 -vpsubw %ymm1, %ymm0, %ymm14 -vmovdqa 352(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm7, %ymm1 -vpaddw 224(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm11 -vpsubw %ymm1, %ymm0, %ymm15 -vmovdqa %ymm8, 3520(%r11) -vmovdqa %ymm9, 3648(%r11) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 3776(%r11) -vmovdqa %ymm10, 3904(%r11) -vmovdqa %ymm11, 4032(%r11) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 4160(%r11) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 4288(%r11) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 4416(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 4544(%r11) -vmovdqa %ymm12, 4672(%r11) -vmovdqa %ymm13, 4800(%r11) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 4928(%r11) -vmovdqa %ymm14, 5056(%r11) -vmovdqa %ymm15, 5184(%r11) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 5312(%r11) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 5440(%r11) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 5568(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 5696(%r11) -vpmullw %ymm3, %ymm4, %ymm0 -vpaddw 256(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 128(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm12 -vpmullw %ymm3, %ymm5, %ymm0 -vpaddw 288(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 160(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm13 -vpmullw %ymm3, %ymm6, %ymm0 -vpaddw 320(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 192(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm14 -vpmullw %ymm3, %ymm7, %ymm0 -vpaddw 352(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 224(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm15 -vmovdqa %ymm12, 5824(%r11) -vmovdqa %ymm13, 5952(%r11) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 6080(%r11) -vmovdqa %ymm14, 6208(%r11) -vmovdqa %ymm15, 6336(%r11) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 6464(%r11) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 6592(%r11) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 6720(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 6848(%r11) -vmovdqu 96(%rdx), %ymm0 -vmovdqu 200(%rdx), %ymm1 -vmovdqu 304(%rdx), %ymm2 -vmovdqu 408(%rdx), %ymm12 -vmovdqu 1344(%rdx), %ymm4 -vmovdqu 1448(%rdx), %ymm5 -vmovdqu 1552(%rdx), %ymm6 -vmovdqu 1656(%rdx), %ymm7 -vpxor %ymm7, %ymm7, %ymm7 -vmovdqu 512(%rdx), %ymm8 -vmovdqu 616(%rdx), %ymm9 -vmovdqu 720(%rdx), %ymm10 -vmovdqu 824(%rdx), %ymm11 -vmovdqa %ymm0, 96(%r11) -vmovdqa %ymm1, 224(%r11) -vpaddw %ymm0, %ymm1, %ymm14 -vmovdqa %ymm14, 352(%r11) -vmovdqa %ymm2, 480(%r11) -vmovdqa %ymm12, 608(%r11) -vpaddw %ymm2, %ymm12, %ymm14 -vmovdqa %ymm14, 736(%r11) -vpaddw %ymm0, %ymm2, %ymm14 -vmovdqa %ymm14, 864(%r11) -vpaddw %ymm1, %ymm12, %ymm15 -vmovdqa %ymm15, 992(%r11) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 1120(%r11) -vmovdqa %ymm4, 7008(%r11) -vmovdqa %ymm5, 7136(%r11) -vpaddw %ymm4, %ymm5, %ymm14 -vmovdqa %ymm14, 7264(%r11) -vmovdqa %ymm6, 7392(%r11) -vmovdqa %ymm7, 7520(%r11) -vpaddw %ymm6, %ymm7, %ymm14 -vmovdqa %ymm14, 7648(%r11) -vpaddw %ymm4, %ymm6, %ymm14 -vmovdqa %ymm14, 7776(%r11) -vpaddw %ymm5, %ymm7, %ymm15 -vmovdqa %ymm15, 7904(%r11) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 8032(%r11) -vmovdqa %ymm0, 0(%rsp) -vmovdqa %ymm1, 32(%rsp) -vmovdqa %ymm2, 64(%rsp) -vmovdqa %ymm12, 96(%rsp) -vmovdqa %ymm8, 128(%rsp) -vmovdqa %ymm9, 160(%rsp) -vmovdqa %ymm10, 192(%rsp) -vmovdqa %ymm11, 224(%rsp) -vmovdqu 928(%rdx), %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm1 -vpaddw 128(%rsp), %ymm4, %ymm2 -vpaddw %ymm2, %ymm1, %ymm8 -vpsubw %ymm2, %ymm1, %ymm12 -vmovdqa %ymm0, 256(%rsp) -vmovdqu 1032(%rdx), %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm1 -vpaddw 160(%rsp), %ymm5, %ymm2 -vpaddw %ymm2, %ymm1, %ymm9 -vpsubw %ymm2, %ymm1, %ymm13 -vmovdqa %ymm0, 288(%rsp) -vmovdqu 1136(%rdx), %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm1 -vpaddw 192(%rsp), %ymm6, %ymm2 -vpaddw %ymm2, %ymm1, %ymm10 -vpsubw %ymm2, %ymm1, %ymm14 -vmovdqa %ymm0, 320(%rsp) -vmovdqu 1240(%rdx), %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm1 -vpaddw 224(%rsp), %ymm7, %ymm2 -vpaddw %ymm2, %ymm1, %ymm11 -vpsubw %ymm2, %ymm1, %ymm15 -vmovdqa %ymm0, 352(%rsp) -vmovdqa %ymm8, 1248(%r11) -vmovdqa %ymm9, 1376(%r11) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 1504(%r11) -vmovdqa %ymm10, 1632(%r11) -vmovdqa %ymm11, 1760(%r11) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 1888(%r11) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 2016(%r11) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 2144(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 2272(%r11) -vmovdqa %ymm12, 2400(%r11) -vmovdqa %ymm13, 2528(%r11) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 2656(%r11) -vmovdqa %ymm14, 2784(%r11) -vmovdqa %ymm15, 2912(%r11) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 3040(%r11) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 3168(%r11) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 3296(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 3424(%r11) -vmovdqa 256(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm4, %ymm1 -vpaddw 128(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm8 -vpsubw %ymm1, %ymm0, %ymm12 -vmovdqa 288(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm5, %ymm1 -vpaddw 160(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm9 -vpsubw %ymm1, %ymm0, %ymm13 -vmovdqa 320(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm6, %ymm1 -vpaddw 192(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm10 -vpsubw %ymm1, %ymm0, %ymm14 -vmovdqa 352(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm7, %ymm1 -vpaddw 224(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm11 -vpsubw %ymm1, %ymm0, %ymm15 -vmovdqa %ymm8, 3552(%r11) -vmovdqa %ymm9, 3680(%r11) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 3808(%r11) -vmovdqa %ymm10, 3936(%r11) -vmovdqa %ymm11, 4064(%r11) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 4192(%r11) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 4320(%r11) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 4448(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 4576(%r11) -vmovdqa %ymm12, 4704(%r11) -vmovdqa %ymm13, 4832(%r11) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 4960(%r11) -vmovdqa %ymm14, 5088(%r11) -vmovdqa %ymm15, 5216(%r11) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 5344(%r11) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 5472(%r11) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 5600(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 5728(%r11) -vpmullw %ymm3, %ymm4, %ymm0 -vpaddw 256(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 128(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm12 -vpmullw %ymm3, %ymm5, %ymm0 -vpaddw 288(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 160(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm13 -vpmullw %ymm3, %ymm6, %ymm0 -vpaddw 320(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 192(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm14 -vpmullw %ymm3, %ymm7, %ymm0 -vpaddw 352(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 224(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm15 -vmovdqa %ymm12, 5856(%r11) -vmovdqa %ymm13, 5984(%r11) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 6112(%r11) -vmovdqa %ymm14, 6240(%r11) -vmovdqa %ymm15, 6368(%r11) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 6496(%r11) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 6624(%r11) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 6752(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 6880(%r11) -subq $11584, %rsp -mov $4, %ecx -karatsuba_loop_1: -mov %rsp, %r9 -mov %rsp, %r10 -subq $32, %rsp -vmovdqa 0(%rax), %ymm0 -vmovdqa 256(%rax), %ymm1 -vmovdqa 512(%rax), %ymm2 -vmovdqa 768(%rax), %ymm3 -vpunpcklwd 128(%rax), %ymm0, %ymm4 -vpunpckhwd 128(%rax), %ymm0, %ymm5 -vpunpcklwd 384(%rax), %ymm1, %ymm6 -vpunpckhwd 384(%rax), %ymm1, %ymm7 -vpunpcklwd 640(%rax), %ymm2, %ymm8 -vpunpckhwd 640(%rax), %ymm2, %ymm9 -vpunpcklwd 896(%rax), %ymm3, %ymm10 -vpunpckhwd 896(%rax), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 1024(%rax), %ymm0 -vmovdqa 1280(%rax), %ymm1 -vmovdqa 1536(%rax), %ymm2 -vmovdqa 1792(%rax), %ymm3 -vpunpcklwd 1152(%rax), %ymm0, %ymm12 -vpunpckhwd 1152(%rax), %ymm0, %ymm13 -vpunpcklwd 1408(%rax), %ymm1, %ymm14 -vpunpckhwd 1408(%rax), %ymm1, %ymm15 -vpunpcklwd 1664(%rax), %ymm2, %ymm0 -vpunpckhwd 1664(%rax), %ymm2, %ymm1 -vpunpcklwd 1920(%rax), %ymm3, %ymm2 -vpunpckhwd 1920(%rax), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 0(%r9) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 32(%r9) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 64(%r9) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 96(%r9) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 128(%r9) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 160(%r9) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 192(%r9) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 256(%r9) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 288(%r9) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 320(%r9) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 352(%r9) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 384(%r9) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 416(%r9) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 448(%r9) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 224(%r9) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 480(%r9) -vmovdqa 32(%rax), %ymm0 -vmovdqa 288(%rax), %ymm1 -vmovdqa 544(%rax), %ymm2 -vmovdqa 800(%rax), %ymm3 -vpunpcklwd 160(%rax), %ymm0, %ymm4 -vpunpckhwd 160(%rax), %ymm0, %ymm5 -vpunpcklwd 416(%rax), %ymm1, %ymm6 -vpunpckhwd 416(%rax), %ymm1, %ymm7 -vpunpcklwd 672(%rax), %ymm2, %ymm8 -vpunpckhwd 672(%rax), %ymm2, %ymm9 -vpunpcklwd 928(%rax), %ymm3, %ymm10 -vpunpckhwd 928(%rax), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 1056(%rax), %ymm0 -vmovdqa 1312(%rax), %ymm1 -vmovdqa 1568(%rax), %ymm2 -vmovdqa 1824(%rax), %ymm3 -vpunpcklwd 1184(%rax), %ymm0, %ymm12 -vpunpckhwd 1184(%rax), %ymm0, %ymm13 -vpunpcklwd 1440(%rax), %ymm1, %ymm14 -vpunpckhwd 1440(%rax), %ymm1, %ymm15 -vpunpcklwd 1696(%rax), %ymm2, %ymm0 -vpunpckhwd 1696(%rax), %ymm2, %ymm1 -vpunpcklwd 1952(%rax), %ymm3, %ymm2 -vpunpckhwd 1952(%rax), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 512(%r9) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 544(%r9) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 576(%r9) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 608(%r9) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 640(%r9) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 672(%r9) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 704(%r9) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 768(%r9) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 800(%r9) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 832(%r9) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 864(%r9) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 896(%r9) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 928(%r9) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 960(%r9) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 736(%r9) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 992(%r9) -vmovdqa 64(%rax), %ymm0 -vmovdqa 320(%rax), %ymm1 -vmovdqa 576(%rax), %ymm2 -vmovdqa 832(%rax), %ymm3 -vpunpcklwd 192(%rax), %ymm0, %ymm4 -vpunpckhwd 192(%rax), %ymm0, %ymm5 -vpunpcklwd 448(%rax), %ymm1, %ymm6 -vpunpckhwd 448(%rax), %ymm1, %ymm7 -vpunpcklwd 704(%rax), %ymm2, %ymm8 -vpunpckhwd 704(%rax), %ymm2, %ymm9 -vpunpcklwd 960(%rax), %ymm3, %ymm10 -vpunpckhwd 960(%rax), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 1088(%rax), %ymm0 -vmovdqa 1344(%rax), %ymm1 -vmovdqa 1600(%rax), %ymm2 -vmovdqa 1856(%rax), %ymm3 -vpunpcklwd 1216(%rax), %ymm0, %ymm12 -vpunpckhwd 1216(%rax), %ymm0, %ymm13 -vpunpcklwd 1472(%rax), %ymm1, %ymm14 -vpunpckhwd 1472(%rax), %ymm1, %ymm15 -vpunpcklwd 1728(%rax), %ymm2, %ymm0 -vpunpckhwd 1728(%rax), %ymm2, %ymm1 -vpunpcklwd 1984(%rax), %ymm3, %ymm2 -vpunpckhwd 1984(%rax), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 1024(%r9) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 1056(%r9) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 1088(%r9) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 1120(%r9) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 1152(%r9) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 1184(%r9) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 1216(%r9) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 1280(%r9) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 1312(%r9) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 1344(%r9) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 1376(%r9) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 1408(%r9) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 1440(%r9) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 1472(%r9) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 1248(%r9) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 1504(%r9) -vmovdqa 96(%rax), %ymm0 -vmovdqa 352(%rax), %ymm1 -vmovdqa 608(%rax), %ymm2 -vmovdqa 864(%rax), %ymm3 -vpunpcklwd 224(%rax), %ymm0, %ymm4 -vpunpckhwd 224(%rax), %ymm0, %ymm5 -vpunpcklwd 480(%rax), %ymm1, %ymm6 -vpunpckhwd 480(%rax), %ymm1, %ymm7 -vpunpcklwd 736(%rax), %ymm2, %ymm8 -vpunpckhwd 736(%rax), %ymm2, %ymm9 -vpunpcklwd 992(%rax), %ymm3, %ymm10 -vpunpckhwd 992(%rax), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 1120(%rax), %ymm0 -vmovdqa 1376(%rax), %ymm1 -vmovdqa 1632(%rax), %ymm2 -vmovdqa 1888(%rax), %ymm3 -vpunpcklwd 1248(%rax), %ymm0, %ymm12 -vpunpckhwd 1248(%rax), %ymm0, %ymm13 -vpunpcklwd 1504(%rax), %ymm1, %ymm14 -vpunpckhwd 1504(%rax), %ymm1, %ymm15 -vpunpcklwd 1760(%rax), %ymm2, %ymm0 -vpunpckhwd 1760(%rax), %ymm2, %ymm1 -vpunpcklwd 2016(%rax), %ymm3, %ymm2 -vpunpckhwd 2016(%rax), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 1536(%r9) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 1568(%r9) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 1600(%r9) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 1632(%r9) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 1664(%r9) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 1696(%r9) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 1728(%r9) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 1760(%r9) -addq $32, %rsp -subq $32, %rsp -vmovdqa 0(%r11), %ymm0 -vmovdqa 256(%r11), %ymm1 -vmovdqa 512(%r11), %ymm2 -vmovdqa 768(%r11), %ymm3 -vpunpcklwd 128(%r11), %ymm0, %ymm4 -vpunpckhwd 128(%r11), %ymm0, %ymm5 -vpunpcklwd 384(%r11), %ymm1, %ymm6 -vpunpckhwd 384(%r11), %ymm1, %ymm7 -vpunpcklwd 640(%r11), %ymm2, %ymm8 -vpunpckhwd 640(%r11), %ymm2, %ymm9 -vpunpcklwd 896(%r11), %ymm3, %ymm10 -vpunpckhwd 896(%r11), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 1024(%r11), %ymm0 -vmovdqa 1280(%r11), %ymm1 -vmovdqa 1536(%r11), %ymm2 -vmovdqa 1792(%r11), %ymm3 -vpunpcklwd 1152(%r11), %ymm0, %ymm12 -vpunpckhwd 1152(%r11), %ymm0, %ymm13 -vpunpcklwd 1408(%r11), %ymm1, %ymm14 -vpunpckhwd 1408(%r11), %ymm1, %ymm15 -vpunpcklwd 1664(%r11), %ymm2, %ymm0 -vpunpckhwd 1664(%r11), %ymm2, %ymm1 -vpunpcklwd 1920(%r11), %ymm3, %ymm2 -vpunpckhwd 1920(%r11), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 1664(%r9) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 1696(%r9) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 1728(%r9) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 1760(%r9) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 1792(%r9) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 1824(%r9) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 1856(%r9) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 1920(%r9) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 1952(%r9) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 1984(%r9) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 2016(%r9) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 2048(%r9) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 2080(%r9) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 2112(%r9) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 1888(%r9) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 2144(%r9) -vmovdqa 32(%r11), %ymm0 -vmovdqa 288(%r11), %ymm1 -vmovdqa 544(%r11), %ymm2 -vmovdqa 800(%r11), %ymm3 -vpunpcklwd 160(%r11), %ymm0, %ymm4 -vpunpckhwd 160(%r11), %ymm0, %ymm5 -vpunpcklwd 416(%r11), %ymm1, %ymm6 -vpunpckhwd 416(%r11), %ymm1, %ymm7 -vpunpcklwd 672(%r11), %ymm2, %ymm8 -vpunpckhwd 672(%r11), %ymm2, %ymm9 -vpunpcklwd 928(%r11), %ymm3, %ymm10 -vpunpckhwd 928(%r11), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 1056(%r11), %ymm0 -vmovdqa 1312(%r11), %ymm1 -vmovdqa 1568(%r11), %ymm2 -vmovdqa 1824(%r11), %ymm3 -vpunpcklwd 1184(%r11), %ymm0, %ymm12 -vpunpckhwd 1184(%r11), %ymm0, %ymm13 -vpunpcklwd 1440(%r11), %ymm1, %ymm14 -vpunpckhwd 1440(%r11), %ymm1, %ymm15 -vpunpcklwd 1696(%r11), %ymm2, %ymm0 -vpunpckhwd 1696(%r11), %ymm2, %ymm1 -vpunpcklwd 1952(%r11), %ymm3, %ymm2 -vpunpckhwd 1952(%r11), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 2176(%r9) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 2208(%r9) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 2240(%r9) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 2272(%r9) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 2304(%r9) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 2336(%r9) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 2368(%r9) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 2432(%r9) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 2464(%r9) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 2496(%r9) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 2528(%r9) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 2560(%r9) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 2592(%r9) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 2624(%r9) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 2400(%r9) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 2656(%r9) -vmovdqa 64(%r11), %ymm0 -vmovdqa 320(%r11), %ymm1 -vmovdqa 576(%r11), %ymm2 -vmovdqa 832(%r11), %ymm3 -vpunpcklwd 192(%r11), %ymm0, %ymm4 -vpunpckhwd 192(%r11), %ymm0, %ymm5 -vpunpcklwd 448(%r11), %ymm1, %ymm6 -vpunpckhwd 448(%r11), %ymm1, %ymm7 -vpunpcklwd 704(%r11), %ymm2, %ymm8 -vpunpckhwd 704(%r11), %ymm2, %ymm9 -vpunpcklwd 960(%r11), %ymm3, %ymm10 -vpunpckhwd 960(%r11), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 1088(%r11), %ymm0 -vmovdqa 1344(%r11), %ymm1 -vmovdqa 1600(%r11), %ymm2 -vmovdqa 1856(%r11), %ymm3 -vpunpcklwd 1216(%r11), %ymm0, %ymm12 -vpunpckhwd 1216(%r11), %ymm0, %ymm13 -vpunpcklwd 1472(%r11), %ymm1, %ymm14 -vpunpckhwd 1472(%r11), %ymm1, %ymm15 -vpunpcklwd 1728(%r11), %ymm2, %ymm0 -vpunpckhwd 1728(%r11), %ymm2, %ymm1 -vpunpcklwd 1984(%r11), %ymm3, %ymm2 -vpunpckhwd 1984(%r11), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 2688(%r9) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 2720(%r9) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 2752(%r9) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 2784(%r9) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 2816(%r9) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 2848(%r9) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 2880(%r9) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 2944(%r9) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 2976(%r9) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 3008(%r9) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 3040(%r9) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 3072(%r9) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 3104(%r9) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 3136(%r9) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 2912(%r9) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 3168(%r9) -vmovdqa 96(%r11), %ymm0 -vmovdqa 352(%r11), %ymm1 -vmovdqa 608(%r11), %ymm2 -vmovdqa 864(%r11), %ymm3 -vpunpcklwd 224(%r11), %ymm0, %ymm4 -vpunpckhwd 224(%r11), %ymm0, %ymm5 -vpunpcklwd 480(%r11), %ymm1, %ymm6 -vpunpckhwd 480(%r11), %ymm1, %ymm7 -vpunpcklwd 736(%r11), %ymm2, %ymm8 -vpunpckhwd 736(%r11), %ymm2, %ymm9 -vpunpcklwd 992(%r11), %ymm3, %ymm10 -vpunpckhwd 992(%r11), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 1120(%r11), %ymm0 -vmovdqa 1376(%r11), %ymm1 -vmovdqa 1632(%r11), %ymm2 -vmovdqa 1888(%r11), %ymm3 -vpunpcklwd 1248(%r11), %ymm0, %ymm12 -vpunpckhwd 1248(%r11), %ymm0, %ymm13 -vpunpcklwd 1504(%r11), %ymm1, %ymm14 -vpunpckhwd 1504(%r11), %ymm1, %ymm15 -vpunpcklwd 1760(%r11), %ymm2, %ymm0 -vpunpckhwd 1760(%r11), %ymm2, %ymm1 -vpunpcklwd 2016(%r11), %ymm3, %ymm2 -vpunpckhwd 2016(%r11), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 3200(%r9) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 3232(%r9) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 3264(%r9) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 3296(%r9) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 3328(%r9) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 3360(%r9) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 3392(%r9) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 3424(%r9) -addq $32, %rsp -innerloop_1: -vmovdqa 0(%r9), %ymm0 -vmovdqa 1664(%r9), %ymm7 -vmovdqa 32(%r9), %ymm1 -vmovdqa 1696(%r9), %ymm8 -vmovdqa 64(%r9), %ymm2 -vmovdqa 1728(%r9), %ymm9 -vmovdqa 96(%r9), %ymm3 -vmovdqa 1760(%r9), %ymm10 -vmovdqa 128(%r9), %ymm4 -vmovdqa 1792(%r9), %ymm11 -vmovdqa 160(%r9), %ymm5 -vmovdqa 1824(%r9), %ymm12 -vmovdqa 192(%r9), %ymm6 -vmovdqa 1856(%r9), %ymm13 -vpmullw %ymm0, %ymm7, %ymm14 -vmovdqa %ymm14, 3328(%r10) -vpmullw %ymm0, %ymm8, %ymm14 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3360(%r10) -vpmullw %ymm0, %ymm9, %ymm14 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3392(%r10) -vpmullw %ymm0, %ymm10, %ymm14 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3424(%r10) -vpmullw %ymm0, %ymm11, %ymm14 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3456(%r10) -vpmullw %ymm0, %ymm12, %ymm14 -vpmullw %ymm1, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3488(%r10) -vpmullw %ymm0, %ymm13, %ymm14 -vpmullw %ymm1, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3520(%r10) -vpmullw %ymm1, %ymm13, %ymm14 -vpmullw %ymm2, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3552(%r10) -vpmullw %ymm2, %ymm13, %ymm14 -vpmullw %ymm3, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3584(%r10) -vpmullw %ymm3, %ymm13, %ymm14 -vpmullw %ymm4, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3616(%r10) -vpmullw %ymm4, %ymm13, %ymm14 -vpmullw %ymm5, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3648(%r10) -vpmullw %ymm5, %ymm13, %ymm14 -vpmullw %ymm6, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3680(%r10) -vpmullw %ymm6, %ymm13, %ymm14 -vmovdqa %ymm14, 3712(%r10) -vmovdqa 1888(%r9), %ymm7 -vmovdqa 1920(%r9), %ymm8 -vmovdqa 1952(%r9), %ymm9 -vmovdqa 1984(%r9), %ymm10 -vmovdqa 2016(%r9), %ymm11 -vmovdqa 2048(%r9), %ymm12 -vmovdqa 3552(%r10), %ymm14 -vpmullw %ymm0, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3552(%r10) -vmovdqa 3584(%r10), %ymm14 -vpmullw %ymm0, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3584(%r10) -vmovdqa 3616(%r10), %ymm14 -vpmullw %ymm0, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3616(%r10) -vmovdqa 3648(%r10), %ymm14 -vpmullw %ymm0, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3648(%r10) -vmovdqa 3680(%r10), %ymm14 -vpmullw %ymm0, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3680(%r10) -vmovdqa 3712(%r10), %ymm14 -vpmullw %ymm0, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3712(%r10) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm1, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3744(%r10) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm2, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3776(%r10) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm3, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3808(%r10) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm4, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3840(%r10) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm5, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3872(%r10) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm6, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3904(%r10) -vmovdqa 224(%r9), %ymm0 -vmovdqa 256(%r9), %ymm1 -vmovdqa 288(%r9), %ymm2 -vmovdqa 320(%r9), %ymm3 -vmovdqa 352(%r9), %ymm4 -vmovdqa 384(%r9), %ymm5 -vmovdqa 3776(%r10), %ymm14 -vpmullw %ymm0, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3776(%r10) -vmovdqa 3808(%r10), %ymm14 -vpmullw %ymm0, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3808(%r10) -vmovdqa 3840(%r10), %ymm14 -vpmullw %ymm0, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3840(%r10) -vmovdqa 3872(%r10), %ymm14 -vpmullw %ymm0, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3872(%r10) -vmovdqa 3904(%r10), %ymm14 -vpmullw %ymm0, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3904(%r10) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm0, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3936(%r10) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm1, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3968(%r10) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm2, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4000(%r10) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm3, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4032(%r10) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm4, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4064(%r10) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm5, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4096(%r10) -vmovdqa 1664(%r9), %ymm7 -vmovdqa 1696(%r9), %ymm8 -vmovdqa 1728(%r9), %ymm9 -vmovdqa 1760(%r9), %ymm10 -vmovdqa 1792(%r9), %ymm11 -vmovdqa 1824(%r9), %ymm12 -vmovdqa 3552(%r10), %ymm14 -vpmullw %ymm0, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3552(%r10) -vmovdqa 3584(%r10), %ymm14 -vpmullw %ymm0, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3584(%r10) -vmovdqa 3616(%r10), %ymm14 -vpmullw %ymm0, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3616(%r10) -vmovdqa 3648(%r10), %ymm14 -vpmullw %ymm0, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3648(%r10) -vmovdqa 3680(%r10), %ymm14 -vpmullw %ymm0, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3680(%r10) -vmovdqa 3712(%r10), %ymm14 -vpmullw %ymm0, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3712(%r10) -vmovdqa 3744(%r10), %ymm14 -vpmullw %ymm0, %ymm13, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3744(%r10) -vmovdqa 3776(%r10), %ymm14 -vpmullw %ymm1, %ymm13, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3776(%r10) -vmovdqa 3808(%r10), %ymm14 -vpmullw %ymm2, %ymm13, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3808(%r10) -vmovdqa 3840(%r10), %ymm14 -vpmullw %ymm3, %ymm13, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3840(%r10) -vmovdqa 3872(%r10), %ymm14 -vpmullw %ymm4, %ymm13, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3872(%r10) -vmovdqa 3904(%r10), %ymm14 -vpmullw %ymm5, %ymm13, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 3904(%r10) -vmovdqa 416(%r9), %ymm0 -vmovdqa 2080(%r9), %ymm7 -vmovdqa 448(%r9), %ymm1 -vmovdqa 2112(%r9), %ymm8 -vmovdqa 480(%r9), %ymm2 -vmovdqa 2144(%r9), %ymm9 -vmovdqa 512(%r9), %ymm3 -vmovdqa 2176(%r9), %ymm10 -vmovdqa 544(%r9), %ymm4 -vmovdqa 2208(%r9), %ymm11 -vmovdqa 576(%r9), %ymm5 -vmovdqa 2240(%r9), %ymm12 -vmovdqa 608(%r9), %ymm6 -vmovdqa 2272(%r9), %ymm13 -vpmullw %ymm0, %ymm7, %ymm14 -vmovdqa %ymm14, 4160(%r10) -vpmullw %ymm0, %ymm8, %ymm14 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4192(%r10) -vpmullw %ymm0, %ymm9, %ymm14 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4224(%r10) -vpmullw %ymm0, %ymm10, %ymm14 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4256(%r10) -vpmullw %ymm0, %ymm11, %ymm14 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4288(%r10) -vpmullw %ymm0, %ymm12, %ymm14 -vpmullw %ymm1, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4320(%r10) -vpmullw %ymm0, %ymm13, %ymm14 -vpmullw %ymm1, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4352(%r10) -vpmullw %ymm1, %ymm13, %ymm14 -vpmullw %ymm2, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4384(%r10) -vpmullw %ymm2, %ymm13, %ymm14 -vpmullw %ymm3, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4416(%r10) -vpmullw %ymm3, %ymm13, %ymm14 -vpmullw %ymm4, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4448(%r10) -vpmullw %ymm4, %ymm13, %ymm14 -vpmullw %ymm5, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4480(%r10) -vpmullw %ymm5, %ymm13, %ymm14 -vpmullw %ymm6, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4512(%r10) -vpmullw %ymm6, %ymm13, %ymm14 -vmovdqa %ymm14, 4544(%r10) -vmovdqa 2304(%r9), %ymm7 -vmovdqa 2336(%r9), %ymm8 -vmovdqa 2368(%r9), %ymm9 -vmovdqa 2400(%r9), %ymm10 -vmovdqa 2432(%r9), %ymm11 -vmovdqa 2464(%r9), %ymm12 -vmovdqa 4384(%r10), %ymm14 -vpmullw %ymm0, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4384(%r10) -vmovdqa 4416(%r10), %ymm14 -vpmullw %ymm0, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4416(%r10) -vmovdqa 4448(%r10), %ymm14 -vpmullw %ymm0, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4448(%r10) -vmovdqa 4480(%r10), %ymm14 -vpmullw %ymm0, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4480(%r10) -vmovdqa 4512(%r10), %ymm14 -vpmullw %ymm0, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4512(%r10) -vmovdqa 4544(%r10), %ymm14 -vpmullw %ymm0, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4544(%r10) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm1, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4576(%r10) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm2, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4608(%r10) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm3, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4640(%r10) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm4, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4672(%r10) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm5, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4704(%r10) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm6, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4736(%r10) -vmovdqa 640(%r9), %ymm0 -vmovdqa 672(%r9), %ymm1 -vmovdqa 704(%r9), %ymm2 -vmovdqa 736(%r9), %ymm3 -vmovdqa 768(%r9), %ymm4 -vmovdqa 800(%r9), %ymm5 -vmovdqa 4608(%r10), %ymm14 -vpmullw %ymm0, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4608(%r10) -vmovdqa 4640(%r10), %ymm14 -vpmullw %ymm0, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4640(%r10) -vmovdqa 4672(%r10), %ymm14 -vpmullw %ymm0, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4672(%r10) -vmovdqa 4704(%r10), %ymm14 -vpmullw %ymm0, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4704(%r10) -vmovdqa 4736(%r10), %ymm14 -vpmullw %ymm0, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4736(%r10) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm0, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4768(%r10) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm1, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4800(%r10) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm2, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4832(%r10) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm3, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4864(%r10) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm4, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4896(%r10) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm5, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4928(%r10) -vmovdqa 2080(%r9), %ymm7 -vmovdqa 2112(%r9), %ymm8 -vmovdqa 2144(%r9), %ymm9 -vmovdqa 2176(%r9), %ymm10 -vmovdqa 2208(%r9), %ymm11 -vmovdqa 2240(%r9), %ymm12 -vmovdqa 4384(%r10), %ymm14 -vpmullw %ymm0, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4384(%r10) -vmovdqa 4416(%r10), %ymm14 -vpmullw %ymm0, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4416(%r10) -vmovdqa 4448(%r10), %ymm14 -vpmullw %ymm0, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4448(%r10) -vmovdqa 4480(%r10), %ymm14 -vpmullw %ymm0, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4480(%r10) -vmovdqa 4512(%r10), %ymm14 -vpmullw %ymm0, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4512(%r10) -vmovdqa 4544(%r10), %ymm14 -vpmullw %ymm0, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4544(%r10) -vmovdqa 4576(%r10), %ymm14 -vpmullw %ymm0, %ymm13, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4576(%r10) -vmovdqa 4608(%r10), %ymm14 -vpmullw %ymm1, %ymm13, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4608(%r10) -vmovdqa 4640(%r10), %ymm14 -vpmullw %ymm2, %ymm13, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4640(%r10) -vmovdqa 4672(%r10), %ymm14 -vpmullw %ymm3, %ymm13, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4672(%r10) -vmovdqa 4704(%r10), %ymm14 -vpmullw %ymm4, %ymm13, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4704(%r10) -vmovdqa 4736(%r10), %ymm14 -vpmullw %ymm5, %ymm13, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 4736(%r10) -vmovdqa 0(%r9), %ymm0 -vmovdqa 1664(%r9), %ymm7 -vpaddw 416(%r9), %ymm0, %ymm0 -vpaddw 2080(%r9), %ymm7, %ymm7 -vmovdqa 32(%r9), %ymm1 -vmovdqa 1696(%r9), %ymm8 -vpaddw 448(%r9), %ymm1, %ymm1 -vpaddw 2112(%r9), %ymm8, %ymm8 -vmovdqa 64(%r9), %ymm2 -vmovdqa 1728(%r9), %ymm9 -vpaddw 480(%r9), %ymm2, %ymm2 -vpaddw 2144(%r9), %ymm9, %ymm9 -vmovdqa 96(%r9), %ymm3 -vmovdqa 1760(%r9), %ymm10 -vpaddw 512(%r9), %ymm3, %ymm3 -vpaddw 2176(%r9), %ymm10, %ymm10 -vmovdqa 128(%r9), %ymm4 -vmovdqa 1792(%r9), %ymm11 -vpaddw 544(%r9), %ymm4, %ymm4 -vpaddw 2208(%r9), %ymm11, %ymm11 -vmovdqa 160(%r9), %ymm5 -vmovdqa 1824(%r9), %ymm12 -vpaddw 576(%r9), %ymm5, %ymm5 -vpaddw 2240(%r9), %ymm12, %ymm12 -vmovdqa 192(%r9), %ymm6 -vmovdqa 1856(%r9), %ymm13 -vpaddw 608(%r9), %ymm6, %ymm6 -vpaddw 2272(%r9), %ymm13, %ymm13 -vpmullw %ymm0, %ymm7, %ymm14 -vmovdqa %ymm14, 7424(%rsp) -vpmullw %ymm0, %ymm8, %ymm14 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7456(%rsp) -vpmullw %ymm0, %ymm9, %ymm14 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7488(%rsp) -vpmullw %ymm0, %ymm10, %ymm14 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7520(%rsp) -vpmullw %ymm0, %ymm11, %ymm14 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7552(%rsp) -vpmullw %ymm0, %ymm12, %ymm14 -vpmullw %ymm1, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7584(%rsp) -vpmullw %ymm0, %ymm13, %ymm14 -vpmullw %ymm1, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7616(%rsp) -vpmullw %ymm1, %ymm13, %ymm14 -vpmullw %ymm2, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7648(%rsp) -vpmullw %ymm2, %ymm13, %ymm14 -vpmullw %ymm3, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7680(%rsp) -vpmullw %ymm3, %ymm13, %ymm14 -vpmullw %ymm4, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7712(%rsp) -vpmullw %ymm4, %ymm13, %ymm14 -vpmullw %ymm5, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7744(%rsp) -vpmullw %ymm5, %ymm13, %ymm14 -vpmullw %ymm6, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7776(%rsp) -vpmullw %ymm6, %ymm13, %ymm14 -vmovdqa %ymm14, 7808(%rsp) -vmovdqa 1888(%r9), %ymm7 -vpaddw 2304(%r9), %ymm7, %ymm7 -vmovdqa 1920(%r9), %ymm8 -vpaddw 2336(%r9), %ymm8, %ymm8 -vmovdqa 1952(%r9), %ymm9 -vpaddw 2368(%r9), %ymm9, %ymm9 -vmovdqa 1984(%r9), %ymm10 -vpaddw 2400(%r9), %ymm10, %ymm10 -vmovdqa 2016(%r9), %ymm11 -vpaddw 2432(%r9), %ymm11, %ymm11 -vmovdqa 2048(%r9), %ymm12 -vpaddw 2464(%r9), %ymm12, %ymm12 -vmovdqa 7648(%rsp), %ymm14 -vpmullw %ymm0, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7648(%rsp) -vmovdqa 7680(%rsp), %ymm14 -vpmullw %ymm0, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7680(%rsp) -vmovdqa 7712(%rsp), %ymm14 -vpmullw %ymm0, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7712(%rsp) -vmovdqa 7744(%rsp), %ymm14 -vpmullw %ymm0, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7744(%rsp) -vmovdqa 7776(%rsp), %ymm14 -vpmullw %ymm0, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7776(%rsp) -vmovdqa 7808(%rsp), %ymm14 -vpmullw %ymm0, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7808(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm1, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7840(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm2, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7872(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm3, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7904(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm4, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7936(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm5, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7968(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm6, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 8000(%rsp) -vmovdqa 224(%r9), %ymm0 -vpaddw 640(%r9), %ymm0, %ymm0 -vmovdqa 256(%r9), %ymm1 -vpaddw 672(%r9), %ymm1, %ymm1 -vmovdqa 288(%r9), %ymm2 -vpaddw 704(%r9), %ymm2, %ymm2 -vmovdqa 320(%r9), %ymm3 -vpaddw 736(%r9), %ymm3, %ymm3 -vmovdqa 352(%r9), %ymm4 -vpaddw 768(%r9), %ymm4, %ymm4 -vmovdqa 384(%r9), %ymm5 -vpaddw 800(%r9), %ymm5, %ymm5 -vmovdqa 7872(%rsp), %ymm14 -vpmullw %ymm0, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7872(%rsp) -vmovdqa 7904(%rsp), %ymm14 -vpmullw %ymm0, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7904(%rsp) -vmovdqa 7936(%rsp), %ymm14 -vpmullw %ymm0, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7936(%rsp) -vmovdqa 7968(%rsp), %ymm14 -vpmullw %ymm0, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7968(%rsp) -vmovdqa 8000(%rsp), %ymm14 -vpmullw %ymm0, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 8000(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm0, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 8032(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm1, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 8064(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm2, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 8096(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm3, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 8128(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm4, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 8160(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm5, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 8192(%rsp) -vmovdqa 1664(%r9), %ymm7 -vpaddw 2080(%r9), %ymm7, %ymm7 -vmovdqa 1696(%r9), %ymm8 -vpaddw 2112(%r9), %ymm8, %ymm8 -vmovdqa 1728(%r9), %ymm9 -vpaddw 2144(%r9), %ymm9, %ymm9 -vmovdqa 1760(%r9), %ymm10 -vpaddw 2176(%r9), %ymm10, %ymm10 -vmovdqa 1792(%r9), %ymm11 -vpaddw 2208(%r9), %ymm11, %ymm11 -vmovdqa 1824(%r9), %ymm12 -vpaddw 2240(%r9), %ymm12, %ymm12 -vmovdqa 7648(%rsp), %ymm14 -vpmullw %ymm0, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7648(%rsp) -vmovdqa 7680(%rsp), %ymm14 -vpmullw %ymm0, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7680(%rsp) -vmovdqa 7712(%rsp), %ymm14 -vpmullw %ymm0, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7712(%rsp) -vmovdqa 7744(%rsp), %ymm14 -vpmullw %ymm0, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7744(%rsp) -vmovdqa 7776(%rsp), %ymm14 -vpmullw %ymm0, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7776(%rsp) -vmovdqa 7808(%rsp), %ymm14 -vpmullw %ymm0, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7808(%rsp) -vmovdqa 7840(%rsp), %ymm14 -vpmullw %ymm0, %ymm13, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7840(%rsp) -vmovdqa 7872(%rsp), %ymm14 -vpmullw %ymm1, %ymm13, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7872(%rsp) -vmovdqa 7904(%rsp), %ymm14 -vpmullw %ymm2, %ymm13, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7904(%rsp) -vmovdqa 7936(%rsp), %ymm14 -vpmullw %ymm3, %ymm13, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7936(%rsp) -vmovdqa 7968(%rsp), %ymm14 -vpmullw %ymm4, %ymm13, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7968(%rsp) -vmovdqa 8000(%rsp), %ymm14 -vpmullw %ymm5, %ymm13, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 8000(%rsp) -vmovdqa 7808(%rsp), %ymm0 -vpsubw 3712(%r10), %ymm0, %ymm0 -vpsubw 4544(%r10), %ymm0, %ymm0 -vmovdqa %ymm0, 4128(%r10) -vmovdqa 3744(%r10), %ymm0 -vpsubw 4160(%r10), %ymm0, %ymm0 -vmovdqa 7840(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 4576(%r10), %ymm1, %ymm1 -vpsubw 3328(%r10), %ymm0, %ymm0 -vpaddw 7424(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3744(%r10) -vmovdqa %ymm1, 4160(%r10) -vmovdqa 3776(%r10), %ymm0 -vpsubw 4192(%r10), %ymm0, %ymm0 -vmovdqa 7872(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 4608(%r10), %ymm1, %ymm1 -vpsubw 3360(%r10), %ymm0, %ymm0 -vpaddw 7456(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3776(%r10) -vmovdqa %ymm1, 4192(%r10) -vmovdqa 3808(%r10), %ymm0 -vpsubw 4224(%r10), %ymm0, %ymm0 -vmovdqa 7904(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 4640(%r10), %ymm1, %ymm1 -vpsubw 3392(%r10), %ymm0, %ymm0 -vpaddw 7488(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3808(%r10) -vmovdqa %ymm1, 4224(%r10) -vmovdqa 3840(%r10), %ymm0 -vpsubw 4256(%r10), %ymm0, %ymm0 -vmovdqa 7936(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 4672(%r10), %ymm1, %ymm1 -vpsubw 3424(%r10), %ymm0, %ymm0 -vpaddw 7520(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3840(%r10) -vmovdqa %ymm1, 4256(%r10) -vmovdqa 3872(%r10), %ymm0 -vpsubw 4288(%r10), %ymm0, %ymm0 -vmovdqa 7968(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 4704(%r10), %ymm1, %ymm1 -vpsubw 3456(%r10), %ymm0, %ymm0 -vpaddw 7552(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3872(%r10) -vmovdqa %ymm1, 4288(%r10) -vmovdqa 3904(%r10), %ymm0 -vpsubw 4320(%r10), %ymm0, %ymm0 -vmovdqa 8000(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 4736(%r10), %ymm1, %ymm1 -vpsubw 3488(%r10), %ymm0, %ymm0 -vpaddw 7584(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3904(%r10) -vmovdqa %ymm1, 4320(%r10) -vmovdqa 3936(%r10), %ymm0 -vpsubw 4352(%r10), %ymm0, %ymm0 -vmovdqa 8032(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 4768(%r10), %ymm1, %ymm1 -vpsubw 3520(%r10), %ymm0, %ymm0 -vpaddw 7616(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3936(%r10) -vmovdqa %ymm1, 4352(%r10) -vmovdqa 3968(%r10), %ymm0 -vpsubw 4384(%r10), %ymm0, %ymm0 -vmovdqa 8064(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 4800(%r10), %ymm1, %ymm1 -vpsubw 3552(%r10), %ymm0, %ymm0 -vpaddw 7648(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3968(%r10) -vmovdqa %ymm1, 4384(%r10) -vmovdqa 4000(%r10), %ymm0 -vpsubw 4416(%r10), %ymm0, %ymm0 -vmovdqa 8096(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 4832(%r10), %ymm1, %ymm1 -vpsubw 3584(%r10), %ymm0, %ymm0 -vpaddw 7680(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4000(%r10) -vmovdqa %ymm1, 4416(%r10) -vmovdqa 4032(%r10), %ymm0 -vpsubw 4448(%r10), %ymm0, %ymm0 -vmovdqa 8128(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 4864(%r10), %ymm1, %ymm1 -vpsubw 3616(%r10), %ymm0, %ymm0 -vpaddw 7712(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4032(%r10) -vmovdqa %ymm1, 4448(%r10) -vmovdqa 4064(%r10), %ymm0 -vpsubw 4480(%r10), %ymm0, %ymm0 -vmovdqa 8160(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 4896(%r10), %ymm1, %ymm1 -vpsubw 3648(%r10), %ymm0, %ymm0 -vpaddw 7744(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4064(%r10) -vmovdqa %ymm1, 4480(%r10) -vmovdqa 4096(%r10), %ymm0 -vpsubw 4512(%r10), %ymm0, %ymm0 -vmovdqa 8192(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 4928(%r10), %ymm1, %ymm1 -vpsubw 3680(%r10), %ymm0, %ymm0 -vpaddw 7776(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4096(%r10) -vmovdqa %ymm1, 4512(%r10) -neg %ecx -jns done_1 -add $832, %r9 -add $1664, %r10 -jmp innerloop_1 -done_1: -sub $832, %r9 -sub $1664, %r10 -vmovdqa 0(%r9), %ymm0 -vpaddw 832(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 8256(%rsp) -vmovdqa 1664(%r9), %ymm0 -vpaddw 2496(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 9088(%rsp) -vmovdqa 32(%r9), %ymm0 -vpaddw 864(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 8288(%rsp) -vmovdqa 1696(%r9), %ymm0 -vpaddw 2528(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 9120(%rsp) -vmovdqa 64(%r9), %ymm0 -vpaddw 896(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 8320(%rsp) -vmovdqa 1728(%r9), %ymm0 -vpaddw 2560(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 9152(%rsp) -vmovdqa 96(%r9), %ymm0 -vpaddw 928(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 8352(%rsp) -vmovdqa 1760(%r9), %ymm0 -vpaddw 2592(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 9184(%rsp) -vmovdqa 128(%r9), %ymm0 -vpaddw 960(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 8384(%rsp) -vmovdqa 1792(%r9), %ymm0 -vpaddw 2624(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 9216(%rsp) -vmovdqa 160(%r9), %ymm0 -vpaddw 992(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 8416(%rsp) -vmovdqa 1824(%r9), %ymm0 -vpaddw 2656(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 9248(%rsp) -vmovdqa 192(%r9), %ymm0 -vpaddw 1024(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 8448(%rsp) -vmovdqa 1856(%r9), %ymm0 -vpaddw 2688(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 9280(%rsp) -vmovdqa 224(%r9), %ymm0 -vpaddw 1056(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 8480(%rsp) -vmovdqa 1888(%r9), %ymm0 -vpaddw 2720(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 9312(%rsp) -vmovdqa 256(%r9), %ymm0 -vpaddw 1088(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 8512(%rsp) -vmovdqa 1920(%r9), %ymm0 -vpaddw 2752(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 9344(%rsp) -vmovdqa 288(%r9), %ymm0 -vpaddw 1120(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 8544(%rsp) -vmovdqa 1952(%r9), %ymm0 -vpaddw 2784(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 9376(%rsp) -vmovdqa 320(%r9), %ymm0 -vpaddw 1152(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 8576(%rsp) -vmovdqa 1984(%r9), %ymm0 -vpaddw 2816(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 9408(%rsp) -vmovdqa 352(%r9), %ymm0 -vpaddw 1184(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 8608(%rsp) -vmovdqa 2016(%r9), %ymm0 -vpaddw 2848(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 9440(%rsp) -vmovdqa 384(%r9), %ymm0 -vpaddw 1216(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 8640(%rsp) -vmovdqa 2048(%r9), %ymm0 -vpaddw 2880(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 9472(%rsp) -vmovdqa 416(%r9), %ymm0 -vpaddw 1248(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 8672(%rsp) -vmovdqa 2080(%r9), %ymm0 -vpaddw 2912(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 9504(%rsp) -vmovdqa 448(%r9), %ymm0 -vpaddw 1280(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 8704(%rsp) -vmovdqa 2112(%r9), %ymm0 -vpaddw 2944(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 9536(%rsp) -vmovdqa 480(%r9), %ymm0 -vpaddw 1312(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 8736(%rsp) -vmovdqa 2144(%r9), %ymm0 -vpaddw 2976(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 9568(%rsp) -vmovdqa 512(%r9), %ymm0 -vpaddw 1344(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 8768(%rsp) -vmovdqa 2176(%r9), %ymm0 -vpaddw 3008(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 9600(%rsp) -vmovdqa 544(%r9), %ymm0 -vpaddw 1376(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 8800(%rsp) -vmovdqa 2208(%r9), %ymm0 -vpaddw 3040(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 9632(%rsp) -vmovdqa 576(%r9), %ymm0 -vpaddw 1408(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 8832(%rsp) -vmovdqa 2240(%r9), %ymm0 -vpaddw 3072(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 9664(%rsp) -vmovdqa 608(%r9), %ymm0 -vpaddw 1440(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 8864(%rsp) -vmovdqa 2272(%r9), %ymm0 -vpaddw 3104(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 9696(%rsp) -vmovdqa 640(%r9), %ymm0 -vpaddw 1472(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 8896(%rsp) -vmovdqa 2304(%r9), %ymm0 -vpaddw 3136(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 9728(%rsp) -vmovdqa 672(%r9), %ymm0 -vpaddw 1504(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 8928(%rsp) -vmovdqa 2336(%r9), %ymm0 -vpaddw 3168(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 9760(%rsp) -vmovdqa 704(%r9), %ymm0 -vpaddw 1536(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 8960(%rsp) -vmovdqa 2368(%r9), %ymm0 -vpaddw 3200(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 9792(%rsp) -vmovdqa 736(%r9), %ymm0 -vpaddw 1568(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 8992(%rsp) -vmovdqa 2400(%r9), %ymm0 -vpaddw 3232(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 9824(%rsp) -vmovdqa 768(%r9), %ymm0 -vpaddw 1600(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 9024(%rsp) -vmovdqa 2432(%r9), %ymm0 -vpaddw 3264(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 9856(%rsp) -vmovdqa 800(%r9), %ymm0 -vpaddw 1632(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 9056(%rsp) -vmovdqa 2464(%r9), %ymm0 -vpaddw 3296(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 9888(%rsp) -vmovdqa 8256(%rsp), %ymm0 -vmovdqa 9088(%rsp), %ymm7 -vmovdqa 8288(%rsp), %ymm1 -vmovdqa 9120(%rsp), %ymm8 -vmovdqa 8320(%rsp), %ymm2 -vmovdqa 9152(%rsp), %ymm9 -vmovdqa 8352(%rsp), %ymm3 -vmovdqa 9184(%rsp), %ymm10 -vmovdqa 8384(%rsp), %ymm4 -vmovdqa 9216(%rsp), %ymm11 -vmovdqa 8416(%rsp), %ymm5 -vmovdqa 9248(%rsp), %ymm12 -vmovdqa 8448(%rsp), %ymm6 -vmovdqa 9280(%rsp), %ymm13 -vpmullw %ymm0, %ymm7, %ymm14 -vmovdqa %ymm14, 9920(%rsp) -vpmullw %ymm0, %ymm8, %ymm14 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 9952(%rsp) -vpmullw %ymm0, %ymm9, %ymm14 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 9984(%rsp) -vpmullw %ymm0, %ymm10, %ymm14 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10016(%rsp) -vpmullw %ymm0, %ymm11, %ymm14 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10048(%rsp) -vpmullw %ymm0, %ymm12, %ymm14 -vpmullw %ymm1, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10080(%rsp) -vpmullw %ymm0, %ymm13, %ymm14 -vpmullw %ymm1, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10112(%rsp) -vpmullw %ymm1, %ymm13, %ymm14 -vpmullw %ymm2, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10144(%rsp) -vpmullw %ymm2, %ymm13, %ymm14 -vpmullw %ymm3, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10176(%rsp) -vpmullw %ymm3, %ymm13, %ymm14 -vpmullw %ymm4, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10208(%rsp) -vpmullw %ymm4, %ymm13, %ymm14 -vpmullw %ymm5, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10240(%rsp) -vpmullw %ymm5, %ymm13, %ymm14 -vpmullw %ymm6, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10272(%rsp) -vpmullw %ymm6, %ymm13, %ymm14 -vmovdqa %ymm14, 10304(%rsp) -vmovdqa 9312(%rsp), %ymm7 -vmovdqa 9344(%rsp), %ymm8 -vmovdqa 9376(%rsp), %ymm9 -vmovdqa 9408(%rsp), %ymm10 -vmovdqa 9440(%rsp), %ymm11 -vmovdqa 9472(%rsp), %ymm12 -vmovdqa 10144(%rsp), %ymm14 -vpmullw %ymm0, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10144(%rsp) -vmovdqa 10176(%rsp), %ymm14 -vpmullw %ymm0, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10176(%rsp) -vmovdqa 10208(%rsp), %ymm14 -vpmullw %ymm0, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10208(%rsp) -vmovdqa 10240(%rsp), %ymm14 -vpmullw %ymm0, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10240(%rsp) -vmovdqa 10272(%rsp), %ymm14 -vpmullw %ymm0, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10272(%rsp) -vmovdqa 10304(%rsp), %ymm14 -vpmullw %ymm0, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10304(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm1, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10336(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm2, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10368(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm3, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10400(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm4, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10432(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm5, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10464(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm6, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10496(%rsp) -vmovdqa 8480(%rsp), %ymm0 -vmovdqa 8512(%rsp), %ymm1 -vmovdqa 8544(%rsp), %ymm2 -vmovdqa 8576(%rsp), %ymm3 -vmovdqa 8608(%rsp), %ymm4 -vmovdqa 8640(%rsp), %ymm5 -vmovdqa 10368(%rsp), %ymm14 -vpmullw %ymm0, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10368(%rsp) -vmovdqa 10400(%rsp), %ymm14 -vpmullw %ymm0, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10400(%rsp) -vmovdqa 10432(%rsp), %ymm14 -vpmullw %ymm0, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10432(%rsp) -vmovdqa 10464(%rsp), %ymm14 -vpmullw %ymm0, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10464(%rsp) -vmovdqa 10496(%rsp), %ymm14 -vpmullw %ymm0, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10496(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm0, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10528(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm1, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10560(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm2, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10592(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm3, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10624(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm4, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10656(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm5, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10688(%rsp) -vmovdqa 9088(%rsp), %ymm7 -vmovdqa 9120(%rsp), %ymm8 -vmovdqa 9152(%rsp), %ymm9 -vmovdqa 9184(%rsp), %ymm10 -vmovdqa 9216(%rsp), %ymm11 -vmovdqa 9248(%rsp), %ymm12 -vmovdqa 10144(%rsp), %ymm14 -vpmullw %ymm0, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10144(%rsp) -vmovdqa 10176(%rsp), %ymm14 -vpmullw %ymm0, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10176(%rsp) -vmovdqa 10208(%rsp), %ymm14 -vpmullw %ymm0, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10208(%rsp) -vmovdqa 10240(%rsp), %ymm14 -vpmullw %ymm0, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10240(%rsp) -vmovdqa 10272(%rsp), %ymm14 -vpmullw %ymm0, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10272(%rsp) -vmovdqa 10304(%rsp), %ymm14 -vpmullw %ymm0, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10304(%rsp) -vmovdqa 10336(%rsp), %ymm14 -vpmullw %ymm0, %ymm13, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10336(%rsp) -vmovdqa 10368(%rsp), %ymm14 -vpmullw %ymm1, %ymm13, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10368(%rsp) -vmovdqa 10400(%rsp), %ymm14 -vpmullw %ymm2, %ymm13, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10400(%rsp) -vmovdqa 10432(%rsp), %ymm14 -vpmullw %ymm3, %ymm13, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10432(%rsp) -vmovdqa 10464(%rsp), %ymm14 -vpmullw %ymm4, %ymm13, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10464(%rsp) -vmovdqa 10496(%rsp), %ymm14 -vpmullw %ymm5, %ymm13, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10496(%rsp) -vmovdqa 8672(%rsp), %ymm0 -vmovdqa 9504(%rsp), %ymm7 -vmovdqa 8704(%rsp), %ymm1 -vmovdqa 9536(%rsp), %ymm8 -vmovdqa 8736(%rsp), %ymm2 -vmovdqa 9568(%rsp), %ymm9 -vmovdqa 8768(%rsp), %ymm3 -vmovdqa 9600(%rsp), %ymm10 -vmovdqa 8800(%rsp), %ymm4 -vmovdqa 9632(%rsp), %ymm11 -vmovdqa 8832(%rsp), %ymm5 -vmovdqa 9664(%rsp), %ymm12 -vmovdqa 8864(%rsp), %ymm6 -vmovdqa 9696(%rsp), %ymm13 -vpmullw %ymm0, %ymm7, %ymm14 -vmovdqa %ymm14, 10752(%rsp) -vpmullw %ymm0, %ymm8, %ymm14 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10784(%rsp) -vpmullw %ymm0, %ymm9, %ymm14 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10816(%rsp) -vpmullw %ymm0, %ymm10, %ymm14 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10848(%rsp) -vpmullw %ymm0, %ymm11, %ymm14 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10880(%rsp) -vpmullw %ymm0, %ymm12, %ymm14 -vpmullw %ymm1, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10912(%rsp) -vpmullw %ymm0, %ymm13, %ymm14 -vpmullw %ymm1, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10944(%rsp) -vpmullw %ymm1, %ymm13, %ymm14 -vpmullw %ymm2, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10976(%rsp) -vpmullw %ymm2, %ymm13, %ymm14 -vpmullw %ymm3, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 11008(%rsp) -vpmullw %ymm3, %ymm13, %ymm14 -vpmullw %ymm4, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 11040(%rsp) -vpmullw %ymm4, %ymm13, %ymm14 -vpmullw %ymm5, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 11072(%rsp) -vpmullw %ymm5, %ymm13, %ymm14 -vpmullw %ymm6, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 11104(%rsp) -vpmullw %ymm6, %ymm13, %ymm14 -vmovdqa %ymm14, 11136(%rsp) -vmovdqa 9728(%rsp), %ymm7 -vmovdqa 9760(%rsp), %ymm8 -vmovdqa 9792(%rsp), %ymm9 -vmovdqa 9824(%rsp), %ymm10 -vmovdqa 9856(%rsp), %ymm11 -vmovdqa 9888(%rsp), %ymm12 -vmovdqa 10976(%rsp), %ymm14 -vpmullw %ymm0, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10976(%rsp) -vmovdqa 11008(%rsp), %ymm14 -vpmullw %ymm0, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 11008(%rsp) -vmovdqa 11040(%rsp), %ymm14 -vpmullw %ymm0, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 11040(%rsp) -vmovdqa 11072(%rsp), %ymm14 -vpmullw %ymm0, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 11072(%rsp) -vmovdqa 11104(%rsp), %ymm14 -vpmullw %ymm0, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 11104(%rsp) -vmovdqa 11136(%rsp), %ymm14 -vpmullw %ymm0, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 11136(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm1, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 11168(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm2, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 11200(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm3, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 11232(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm4, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 11264(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm5, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 11296(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm6, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 11328(%rsp) -vmovdqa 8896(%rsp), %ymm0 -vmovdqa 8928(%rsp), %ymm1 -vmovdqa 8960(%rsp), %ymm2 -vmovdqa 8992(%rsp), %ymm3 -vmovdqa 9024(%rsp), %ymm4 -vmovdqa 9056(%rsp), %ymm5 -vmovdqa 11200(%rsp), %ymm14 -vpmullw %ymm0, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 11200(%rsp) -vmovdqa 11232(%rsp), %ymm14 -vpmullw %ymm0, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 11232(%rsp) -vmovdqa 11264(%rsp), %ymm14 -vpmullw %ymm0, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 11264(%rsp) -vmovdqa 11296(%rsp), %ymm14 -vpmullw %ymm0, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 11296(%rsp) -vmovdqa 11328(%rsp), %ymm14 -vpmullw %ymm0, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 11328(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm0, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 11360(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm1, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 11392(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm2, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 11424(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm3, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 11456(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm4, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 11488(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm5, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 11520(%rsp) -vmovdqa 9504(%rsp), %ymm7 -vmovdqa 9536(%rsp), %ymm8 -vmovdqa 9568(%rsp), %ymm9 -vmovdqa 9600(%rsp), %ymm10 -vmovdqa 9632(%rsp), %ymm11 -vmovdqa 9664(%rsp), %ymm12 -vmovdqa 10976(%rsp), %ymm14 -vpmullw %ymm0, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 10976(%rsp) -vmovdqa 11008(%rsp), %ymm14 -vpmullw %ymm0, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 11008(%rsp) -vmovdqa 11040(%rsp), %ymm14 -vpmullw %ymm0, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 11040(%rsp) -vmovdqa 11072(%rsp), %ymm14 -vpmullw %ymm0, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 11072(%rsp) -vmovdqa 11104(%rsp), %ymm14 -vpmullw %ymm0, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 11104(%rsp) -vmovdqa 11136(%rsp), %ymm14 -vpmullw %ymm0, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 11136(%rsp) -vmovdqa 11168(%rsp), %ymm14 -vpmullw %ymm0, %ymm13, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 11168(%rsp) -vmovdqa 11200(%rsp), %ymm14 -vpmullw %ymm1, %ymm13, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 11200(%rsp) -vmovdqa 11232(%rsp), %ymm14 -vpmullw %ymm2, %ymm13, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 11232(%rsp) -vmovdqa 11264(%rsp), %ymm14 -vpmullw %ymm3, %ymm13, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 11264(%rsp) -vmovdqa 11296(%rsp), %ymm14 -vpmullw %ymm4, %ymm13, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 11296(%rsp) -vmovdqa 11328(%rsp), %ymm14 -vpmullw %ymm5, %ymm13, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 11328(%rsp) -vmovdqa 8256(%rsp), %ymm0 -vmovdqa 9088(%rsp), %ymm7 -vpaddw 8672(%rsp), %ymm0, %ymm0 -vpaddw 9504(%rsp), %ymm7, %ymm7 -vmovdqa 8288(%rsp), %ymm1 -vmovdqa 9120(%rsp), %ymm8 -vpaddw 8704(%rsp), %ymm1, %ymm1 -vpaddw 9536(%rsp), %ymm8, %ymm8 -vmovdqa 8320(%rsp), %ymm2 -vmovdqa 9152(%rsp), %ymm9 -vpaddw 8736(%rsp), %ymm2, %ymm2 -vpaddw 9568(%rsp), %ymm9, %ymm9 -vmovdqa 8352(%rsp), %ymm3 -vmovdqa 9184(%rsp), %ymm10 -vpaddw 8768(%rsp), %ymm3, %ymm3 -vpaddw 9600(%rsp), %ymm10, %ymm10 -vmovdqa 8384(%rsp), %ymm4 -vmovdqa 9216(%rsp), %ymm11 -vpaddw 8800(%rsp), %ymm4, %ymm4 -vpaddw 9632(%rsp), %ymm11, %ymm11 -vmovdqa 8416(%rsp), %ymm5 -vmovdqa 9248(%rsp), %ymm12 -vpaddw 8832(%rsp), %ymm5, %ymm5 -vpaddw 9664(%rsp), %ymm12, %ymm12 -vmovdqa 8448(%rsp), %ymm6 -vmovdqa 9280(%rsp), %ymm13 -vpaddw 8864(%rsp), %ymm6, %ymm6 -vpaddw 9696(%rsp), %ymm13, %ymm13 -vpmullw %ymm0, %ymm7, %ymm14 -vmovdqa %ymm14, 7424(%rsp) -vpmullw %ymm0, %ymm8, %ymm14 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7456(%rsp) -vpmullw %ymm0, %ymm9, %ymm14 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7488(%rsp) -vpmullw %ymm0, %ymm10, %ymm14 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7520(%rsp) -vpmullw %ymm0, %ymm11, %ymm14 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7552(%rsp) -vpmullw %ymm0, %ymm12, %ymm14 -vpmullw %ymm1, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7584(%rsp) -vpmullw %ymm0, %ymm13, %ymm14 -vpmullw %ymm1, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7616(%rsp) -vpmullw %ymm1, %ymm13, %ymm14 -vpmullw %ymm2, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7648(%rsp) -vpmullw %ymm2, %ymm13, %ymm14 -vpmullw %ymm3, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7680(%rsp) -vpmullw %ymm3, %ymm13, %ymm14 -vpmullw %ymm4, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7712(%rsp) -vpmullw %ymm4, %ymm13, %ymm14 -vpmullw %ymm5, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7744(%rsp) -vpmullw %ymm5, %ymm13, %ymm14 -vpmullw %ymm6, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7776(%rsp) -vpmullw %ymm6, %ymm13, %ymm14 -vmovdqa %ymm14, 7808(%rsp) -vmovdqa 9312(%rsp), %ymm7 -vpaddw 9728(%rsp), %ymm7, %ymm7 -vmovdqa 9344(%rsp), %ymm8 -vpaddw 9760(%rsp), %ymm8, %ymm8 -vmovdqa 9376(%rsp), %ymm9 -vpaddw 9792(%rsp), %ymm9, %ymm9 -vmovdqa 9408(%rsp), %ymm10 -vpaddw 9824(%rsp), %ymm10, %ymm10 -vmovdqa 9440(%rsp), %ymm11 -vpaddw 9856(%rsp), %ymm11, %ymm11 -vmovdqa 9472(%rsp), %ymm12 -vpaddw 9888(%rsp), %ymm12, %ymm12 -vmovdqa 7648(%rsp), %ymm14 -vpmullw %ymm0, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7648(%rsp) -vmovdqa 7680(%rsp), %ymm14 -vpmullw %ymm0, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7680(%rsp) -vmovdqa 7712(%rsp), %ymm14 -vpmullw %ymm0, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7712(%rsp) -vmovdqa 7744(%rsp), %ymm14 -vpmullw %ymm0, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7744(%rsp) -vmovdqa 7776(%rsp), %ymm14 -vpmullw %ymm0, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7776(%rsp) -vmovdqa 7808(%rsp), %ymm14 -vpmullw %ymm0, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7808(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm1, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7840(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm2, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7872(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm3, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7904(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm4, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7936(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm5, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm6, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7968(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm6, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 8000(%rsp) -vmovdqa 8480(%rsp), %ymm0 -vpaddw 8896(%rsp), %ymm0, %ymm0 -vmovdqa 8512(%rsp), %ymm1 -vpaddw 8928(%rsp), %ymm1, %ymm1 -vmovdqa 8544(%rsp), %ymm2 -vpaddw 8960(%rsp), %ymm2, %ymm2 -vmovdqa 8576(%rsp), %ymm3 -vpaddw 8992(%rsp), %ymm3, %ymm3 -vmovdqa 8608(%rsp), %ymm4 -vpaddw 9024(%rsp), %ymm4, %ymm4 -vmovdqa 8640(%rsp), %ymm5 -vpaddw 9056(%rsp), %ymm5, %ymm5 -vmovdqa 7872(%rsp), %ymm14 -vpmullw %ymm0, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7872(%rsp) -vmovdqa 7904(%rsp), %ymm14 -vpmullw %ymm0, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7904(%rsp) -vmovdqa 7936(%rsp), %ymm14 -vpmullw %ymm0, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7936(%rsp) -vmovdqa 7968(%rsp), %ymm14 -vpmullw %ymm0, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7968(%rsp) -vmovdqa 8000(%rsp), %ymm14 -vpmullw %ymm0, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 8000(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm0, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 8032(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm1, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 8064(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm2, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 8096(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm3, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 8128(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm4, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 8160(%rsp) -vpxor %ymm14, %ymm14, %ymm14 -vpmullw %ymm5, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 8192(%rsp) -vmovdqa 9088(%rsp), %ymm7 -vpaddw 9504(%rsp), %ymm7, %ymm7 -vmovdqa 9120(%rsp), %ymm8 -vpaddw 9536(%rsp), %ymm8, %ymm8 -vmovdqa 9152(%rsp), %ymm9 -vpaddw 9568(%rsp), %ymm9, %ymm9 -vmovdqa 9184(%rsp), %ymm10 -vpaddw 9600(%rsp), %ymm10, %ymm10 -vmovdqa 9216(%rsp), %ymm11 -vpaddw 9632(%rsp), %ymm11, %ymm11 -vmovdqa 9248(%rsp), %ymm12 -vpaddw 9664(%rsp), %ymm12, %ymm12 -vmovdqa 7648(%rsp), %ymm14 -vpmullw %ymm0, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7648(%rsp) -vmovdqa 7680(%rsp), %ymm14 -vpmullw %ymm0, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7680(%rsp) -vmovdqa 7712(%rsp), %ymm14 -vpmullw %ymm0, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7712(%rsp) -vmovdqa 7744(%rsp), %ymm14 -vpmullw %ymm0, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7744(%rsp) -vmovdqa 7776(%rsp), %ymm14 -vpmullw %ymm0, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7776(%rsp) -vmovdqa 7808(%rsp), %ymm14 -vpmullw %ymm0, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm7, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7808(%rsp) -vmovdqa 7840(%rsp), %ymm14 -vpmullw %ymm0, %ymm13, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm1, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm8, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7840(%rsp) -vmovdqa 7872(%rsp), %ymm14 -vpmullw %ymm1, %ymm13, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm2, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm9, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7872(%rsp) -vmovdqa 7904(%rsp), %ymm14 -vpmullw %ymm2, %ymm13, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm3, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm10, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7904(%rsp) -vmovdqa 7936(%rsp), %ymm14 -vpmullw %ymm3, %ymm13, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm4, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm11, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7936(%rsp) -vmovdqa 7968(%rsp), %ymm14 -vpmullw %ymm4, %ymm13, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vpmullw %ymm5, %ymm12, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 7968(%rsp) -vmovdqa 8000(%rsp), %ymm14 -vpmullw %ymm5, %ymm13, %ymm15 -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 8000(%rsp) -vmovdqa 10336(%rsp), %ymm0 -vpsubw 10752(%rsp), %ymm0, %ymm0 -vmovdqa 7840(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 11168(%rsp), %ymm1, %ymm4 -vpsubw 9920(%rsp), %ymm0, %ymm0 -vpaddw 7424(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 10336(%rsp) -vmovdqa 10368(%rsp), %ymm0 -vpsubw 10784(%rsp), %ymm0, %ymm0 -vmovdqa 7872(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 11200(%rsp), %ymm1, %ymm5 -vpsubw 9952(%rsp), %ymm0, %ymm0 -vpaddw 7456(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 10368(%rsp) -vmovdqa 10400(%rsp), %ymm0 -vpsubw 10816(%rsp), %ymm0, %ymm0 -vmovdqa 7904(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 11232(%rsp), %ymm1, %ymm6 -vpsubw 9984(%rsp), %ymm0, %ymm0 -vpaddw 7488(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 10400(%rsp) -vmovdqa 10432(%rsp), %ymm0 -vpsubw 10848(%rsp), %ymm0, %ymm0 -vmovdqa 7936(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 11264(%rsp), %ymm1, %ymm7 -vpsubw 10016(%rsp), %ymm0, %ymm0 -vpaddw 7520(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 10432(%rsp) -vmovdqa 10464(%rsp), %ymm0 -vpsubw 10880(%rsp), %ymm0, %ymm0 -vmovdqa 7968(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 11296(%rsp), %ymm1, %ymm8 -vpsubw 10048(%rsp), %ymm0, %ymm0 -vpaddw 7552(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 10464(%rsp) -vmovdqa 10496(%rsp), %ymm0 -vpsubw 10912(%rsp), %ymm0, %ymm0 -vmovdqa 8000(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 11328(%rsp), %ymm1, %ymm9 -vpsubw 10080(%rsp), %ymm0, %ymm0 -vpaddw 7584(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 10496(%rsp) -vmovdqa 10528(%rsp), %ymm0 -vpsubw 10944(%rsp), %ymm0, %ymm0 -vmovdqa 8032(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 11360(%rsp), %ymm1, %ymm10 -vpsubw 10112(%rsp), %ymm0, %ymm0 -vpaddw 7616(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 10528(%rsp) -vmovdqa 10560(%rsp), %ymm0 -vpsubw 10976(%rsp), %ymm0, %ymm0 -vmovdqa 8064(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 11392(%rsp), %ymm1, %ymm11 -vpsubw 10144(%rsp), %ymm0, %ymm0 -vpaddw 7648(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 10560(%rsp) -vmovdqa 10592(%rsp), %ymm0 -vpsubw 11008(%rsp), %ymm0, %ymm0 -vmovdqa 8096(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 11424(%rsp), %ymm1, %ymm12 -vpsubw 10176(%rsp), %ymm0, %ymm0 -vpaddw 7680(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 10592(%rsp) -vmovdqa 10624(%rsp), %ymm0 -vpsubw 11040(%rsp), %ymm0, %ymm0 -vmovdqa 8128(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 11456(%rsp), %ymm1, %ymm13 -vpsubw 10208(%rsp), %ymm0, %ymm0 -vpaddw 7712(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 10624(%rsp) -vmovdqa 10656(%rsp), %ymm0 -vpsubw 11072(%rsp), %ymm0, %ymm0 -vmovdqa 8160(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 11488(%rsp), %ymm1, %ymm14 -vpsubw 10240(%rsp), %ymm0, %ymm0 -vpaddw 7744(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 10656(%rsp) -vmovdqa 10688(%rsp), %ymm0 -vpsubw 11104(%rsp), %ymm0, %ymm0 -vmovdqa 8192(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 11520(%rsp), %ymm1, %ymm15 -vpsubw 10272(%rsp), %ymm0, %ymm0 -vpaddw 7776(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 10688(%rsp) -vmovdqa 7808(%rsp), %ymm0 -vpsubw 10304(%rsp), %ymm0, %ymm0 -vpsubw 11136(%rsp), %ymm0, %ymm0 -vpsubw 4128(%r10), %ymm0, %ymm0 -vpsubw 5792(%r10), %ymm0, %ymm0 -vmovdqa %ymm0, 4960(%r10) -vmovdqa 4160(%r10), %ymm0 -vpsubw 4992(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm4, %ymm4 -vpsubw 5824(%r10), %ymm4, %ymm4 -vpsubw 3328(%r10), %ymm0, %ymm0 -vpaddw 9920(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4160(%r10) -vmovdqa %ymm4, 4992(%r10) -vmovdqa 4192(%r10), %ymm0 -vpsubw 5024(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm5, %ymm5 -vpsubw 5856(%r10), %ymm5, %ymm5 -vpsubw 3360(%r10), %ymm0, %ymm0 -vpaddw 9952(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4192(%r10) -vmovdqa %ymm5, 5024(%r10) -vmovdqa 4224(%r10), %ymm0 -vpsubw 5056(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm6, %ymm6 -vpsubw 5888(%r10), %ymm6, %ymm6 -vpsubw 3392(%r10), %ymm0, %ymm0 -vpaddw 9984(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4224(%r10) -vmovdqa %ymm6, 5056(%r10) -vmovdqa 4256(%r10), %ymm0 -vpsubw 5088(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm7, %ymm7 -vpsubw 5920(%r10), %ymm7, %ymm7 -vpsubw 3424(%r10), %ymm0, %ymm0 -vpaddw 10016(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4256(%r10) -vmovdqa %ymm7, 5088(%r10) -vmovdqa 4288(%r10), %ymm0 -vpsubw 5120(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm8, %ymm8 -vpsubw 5952(%r10), %ymm8, %ymm8 -vpsubw 3456(%r10), %ymm0, %ymm0 -vpaddw 10048(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4288(%r10) -vmovdqa %ymm8, 5120(%r10) -vmovdqa 4320(%r10), %ymm0 -vpsubw 5152(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm9, %ymm9 -vpsubw 5984(%r10), %ymm9, %ymm9 -vpsubw 3488(%r10), %ymm0, %ymm0 -vpaddw 10080(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4320(%r10) -vmovdqa %ymm9, 5152(%r10) -vmovdqa 4352(%r10), %ymm0 -vpsubw 5184(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm10, %ymm10 -vpsubw 6016(%r10), %ymm10, %ymm10 -vpsubw 3520(%r10), %ymm0, %ymm0 -vpaddw 10112(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4352(%r10) -vmovdqa %ymm10, 5184(%r10) -vmovdqa 4384(%r10), %ymm0 -vpsubw 5216(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm11, %ymm11 -vpsubw 6048(%r10), %ymm11, %ymm11 -vpsubw 3552(%r10), %ymm0, %ymm0 -vpaddw 10144(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4384(%r10) -vmovdqa %ymm11, 5216(%r10) -vmovdqa 4416(%r10), %ymm0 -vpsubw 5248(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm12, %ymm12 -vpsubw 6080(%r10), %ymm12, %ymm12 -vpsubw 3584(%r10), %ymm0, %ymm0 -vpaddw 10176(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4416(%r10) -vmovdqa %ymm12, 5248(%r10) -vmovdqa 4448(%r10), %ymm0 -vpsubw 5280(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm13, %ymm13 -vpsubw 6112(%r10), %ymm13, %ymm13 -vpsubw 3616(%r10), %ymm0, %ymm0 -vpaddw 10208(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4448(%r10) -vmovdqa %ymm13, 5280(%r10) -vmovdqa 4480(%r10), %ymm0 -vpsubw 5312(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm14, %ymm14 -vpsubw 6144(%r10), %ymm14, %ymm14 -vpsubw 3648(%r10), %ymm0, %ymm0 -vpaddw 10240(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4480(%r10) -vmovdqa %ymm14, 5312(%r10) -vmovdqa 4512(%r10), %ymm0 -vpsubw 5344(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm15, %ymm15 -vpsubw 6176(%r10), %ymm15, %ymm15 -vpsubw 3680(%r10), %ymm0, %ymm0 -vpaddw 10272(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4512(%r10) -vmovdqa %ymm15, 5344(%r10) -vmovdqa 4544(%r10), %ymm0 -vpsubw 5376(%r10), %ymm0, %ymm0 -vmovdqa 11136(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 6208(%r10), %ymm1, %ymm1 -vpsubw 3712(%r10), %ymm0, %ymm0 -vpaddw 10304(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4544(%r10) -vmovdqa %ymm1, 5376(%r10) -vmovdqa 4576(%r10), %ymm0 -vpsubw 5408(%r10), %ymm0, %ymm0 -vmovdqa 11168(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 6240(%r10), %ymm1, %ymm1 -vpsubw 3744(%r10), %ymm0, %ymm0 -vpaddw 10336(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4576(%r10) -vmovdqa %ymm1, 5408(%r10) -vmovdqa 4608(%r10), %ymm0 -vpsubw 5440(%r10), %ymm0, %ymm0 -vmovdqa 11200(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 6272(%r10), %ymm1, %ymm1 -vpsubw 3776(%r10), %ymm0, %ymm0 -vpaddw 10368(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4608(%r10) -vmovdqa %ymm1, 5440(%r10) -vmovdqa 4640(%r10), %ymm0 -vpsubw 5472(%r10), %ymm0, %ymm0 -vmovdqa 11232(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 6304(%r10), %ymm1, %ymm1 -vpsubw 3808(%r10), %ymm0, %ymm0 -vpaddw 10400(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4640(%r10) -vmovdqa %ymm1, 5472(%r10) -vmovdqa 4672(%r10), %ymm0 -vpsubw 5504(%r10), %ymm0, %ymm0 -vmovdqa 11264(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 6336(%r10), %ymm1, %ymm1 -vpsubw 3840(%r10), %ymm0, %ymm0 -vpaddw 10432(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4672(%r10) -vmovdqa %ymm1, 5504(%r10) -vmovdqa 4704(%r10), %ymm0 -vpsubw 5536(%r10), %ymm0, %ymm0 -vmovdqa 11296(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 6368(%r10), %ymm1, %ymm1 -vpsubw 3872(%r10), %ymm0, %ymm0 -vpaddw 10464(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4704(%r10) -vmovdqa %ymm1, 5536(%r10) -vmovdqa 4736(%r10), %ymm0 -vpsubw 5568(%r10), %ymm0, %ymm0 -vmovdqa 11328(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 6400(%r10), %ymm1, %ymm1 -vpsubw 3904(%r10), %ymm0, %ymm0 -vpaddw 10496(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4736(%r10) -vmovdqa %ymm1, 5568(%r10) -vmovdqa 4768(%r10), %ymm0 -vpsubw 5600(%r10), %ymm0, %ymm0 -vmovdqa 11360(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 6432(%r10), %ymm1, %ymm1 -vpsubw 3936(%r10), %ymm0, %ymm0 -vpaddw 10528(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4768(%r10) -vmovdqa %ymm1, 5600(%r10) -vmovdqa 4800(%r10), %ymm0 -vpsubw 5632(%r10), %ymm0, %ymm0 -vmovdqa 11392(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 6464(%r10), %ymm1, %ymm1 -vpsubw 3968(%r10), %ymm0, %ymm0 -vpaddw 10560(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4800(%r10) -vmovdqa %ymm1, 5632(%r10) -vmovdqa 4832(%r10), %ymm0 -vpsubw 5664(%r10), %ymm0, %ymm0 -vmovdqa 11424(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 6496(%r10), %ymm1, %ymm1 -vpsubw 4000(%r10), %ymm0, %ymm0 -vpaddw 10592(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4832(%r10) -vmovdqa %ymm1, 5664(%r10) -vmovdqa 4864(%r10), %ymm0 -vpsubw 5696(%r10), %ymm0, %ymm0 -vmovdqa 11456(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 6528(%r10), %ymm1, %ymm1 -vpsubw 4032(%r10), %ymm0, %ymm0 -vpaddw 10624(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4864(%r10) -vmovdqa %ymm1, 5696(%r10) -vmovdqa 4896(%r10), %ymm0 -vpsubw 5728(%r10), %ymm0, %ymm0 -vmovdqa 11488(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 6560(%r10), %ymm1, %ymm1 -vpsubw 4064(%r10), %ymm0, %ymm0 -vpaddw 10656(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4896(%r10) -vmovdqa %ymm1, 5728(%r10) -vmovdqa 4928(%r10), %ymm0 -vpsubw 5760(%r10), %ymm0, %ymm0 -vmovdqa 11520(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 6592(%r10), %ymm1, %ymm1 -vpsubw 4096(%r10), %ymm0, %ymm0 -vpaddw 10688(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4928(%r10) -vmovdqa %ymm1, 5760(%r10) -vpxor %ymm1, %ymm1, %ymm1 -vmovdqa %ymm1, 6624(%r10) -subq $32, %rsp -vmovdqa 3328(%r10), %ymm0 -vmovdqa 3392(%r10), %ymm1 -vmovdqa 3456(%r10), %ymm2 -vmovdqa 3520(%r10), %ymm3 -vpunpcklwd 3360(%r10), %ymm0, %ymm4 -vpunpckhwd 3360(%r10), %ymm0, %ymm5 -vpunpcklwd 3424(%r10), %ymm1, %ymm6 -vpunpckhwd 3424(%r10), %ymm1, %ymm7 -vpunpcklwd 3488(%r10), %ymm2, %ymm8 -vpunpckhwd 3488(%r10), %ymm2, %ymm9 -vpunpcklwd 3552(%r10), %ymm3, %ymm10 -vpunpckhwd 3552(%r10), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 3584(%r10), %ymm0 -vmovdqa 3648(%r10), %ymm1 -vmovdqa 3712(%r10), %ymm2 -vmovdqa 3776(%r10), %ymm3 -vpunpcklwd 3616(%r10), %ymm0, %ymm12 -vpunpckhwd 3616(%r10), %ymm0, %ymm13 -vpunpcklwd 3680(%r10), %ymm1, %ymm14 -vpunpckhwd 3680(%r10), %ymm1, %ymm15 -vpunpcklwd 3744(%r10), %ymm2, %ymm0 -vpunpckhwd 3744(%r10), %ymm2, %ymm1 -vpunpcklwd 3808(%r10), %ymm3, %ymm2 -vpunpckhwd 3808(%r10), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 0(%r12) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 256(%r12) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 512(%r12) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 768(%r12) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 1024(%r12) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 1280(%r12) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 1536(%r12) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 2048(%r12) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 2304(%r12) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 2560(%r12) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 2816(%r12) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 3072(%r12) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 3328(%r12) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 3584(%r12) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 1792(%r12) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 3840(%r12) -vmovdqa 3840(%r10), %ymm0 -vmovdqa 3904(%r10), %ymm1 -vmovdqa 3968(%r10), %ymm2 -vmovdqa 4032(%r10), %ymm3 -vpunpcklwd 3872(%r10), %ymm0, %ymm4 -vpunpckhwd 3872(%r10), %ymm0, %ymm5 -vpunpcklwd 3936(%r10), %ymm1, %ymm6 -vpunpckhwd 3936(%r10), %ymm1, %ymm7 -vpunpcklwd 4000(%r10), %ymm2, %ymm8 -vpunpckhwd 4000(%r10), %ymm2, %ymm9 -vpunpcklwd 4064(%r10), %ymm3, %ymm10 -vpunpckhwd 4064(%r10), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 4096(%r10), %ymm0 -vmovdqa 4160(%r10), %ymm1 -vmovdqa 4224(%r10), %ymm2 -vmovdqa 4288(%r10), %ymm3 -vpunpcklwd 4128(%r10), %ymm0, %ymm12 -vpunpckhwd 4128(%r10), %ymm0, %ymm13 -vpunpcklwd 4192(%r10), %ymm1, %ymm14 -vpunpckhwd 4192(%r10), %ymm1, %ymm15 -vpunpcklwd 4256(%r10), %ymm2, %ymm0 -vpunpckhwd 4256(%r10), %ymm2, %ymm1 -vpunpcklwd 4320(%r10), %ymm3, %ymm2 -vpunpckhwd 4320(%r10), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 32(%r12) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 288(%r12) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 544(%r12) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 800(%r12) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 1056(%r12) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 1312(%r12) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 1568(%r12) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 2080(%r12) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 2336(%r12) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 2592(%r12) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 2848(%r12) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 3104(%r12) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 3360(%r12) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 3616(%r12) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 1824(%r12) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 3872(%r12) -vmovdqa 4352(%r10), %ymm0 -vmovdqa 4416(%r10), %ymm1 -vmovdqa 4480(%r10), %ymm2 -vmovdqa 4544(%r10), %ymm3 -vpunpcklwd 4384(%r10), %ymm0, %ymm4 -vpunpckhwd 4384(%r10), %ymm0, %ymm5 -vpunpcklwd 4448(%r10), %ymm1, %ymm6 -vpunpckhwd 4448(%r10), %ymm1, %ymm7 -vpunpcklwd 4512(%r10), %ymm2, %ymm8 -vpunpckhwd 4512(%r10), %ymm2, %ymm9 -vpunpcklwd 4576(%r10), %ymm3, %ymm10 -vpunpckhwd 4576(%r10), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 4608(%r10), %ymm0 -vmovdqa 4672(%r10), %ymm1 -vmovdqa 4736(%r10), %ymm2 -vmovdqa 4800(%r10), %ymm3 -vpunpcklwd 4640(%r10), %ymm0, %ymm12 -vpunpckhwd 4640(%r10), %ymm0, %ymm13 -vpunpcklwd 4704(%r10), %ymm1, %ymm14 -vpunpckhwd 4704(%r10), %ymm1, %ymm15 -vpunpcklwd 4768(%r10), %ymm2, %ymm0 -vpunpckhwd 4768(%r10), %ymm2, %ymm1 -vpunpcklwd 4832(%r10), %ymm3, %ymm2 -vpunpckhwd 4832(%r10), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 64(%r12) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 320(%r12) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 576(%r12) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 832(%r12) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 1088(%r12) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 1344(%r12) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 1600(%r12) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 2112(%r12) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 2368(%r12) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 2624(%r12) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 2880(%r12) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 3136(%r12) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 3392(%r12) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 3648(%r12) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 1856(%r12) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 3904(%r12) -vmovdqa 4864(%r10), %ymm0 -vmovdqa 4928(%r10), %ymm1 -vmovdqa 4992(%r10), %ymm2 -vmovdqa 5056(%r10), %ymm3 -vpunpcklwd 4896(%r10), %ymm0, %ymm4 -vpunpckhwd 4896(%r10), %ymm0, %ymm5 -vpunpcklwd 4960(%r10), %ymm1, %ymm6 -vpunpckhwd 4960(%r10), %ymm1, %ymm7 -vpunpcklwd 5024(%r10), %ymm2, %ymm8 -vpunpckhwd 5024(%r10), %ymm2, %ymm9 -vpunpcklwd 5088(%r10), %ymm3, %ymm10 -vpunpckhwd 5088(%r10), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 5120(%r10), %ymm0 -vmovdqa 5184(%r10), %ymm1 -vmovdqa 5248(%r10), %ymm2 -vmovdqa 5312(%r10), %ymm3 -vpunpcklwd 5152(%r10), %ymm0, %ymm12 -vpunpckhwd 5152(%r10), %ymm0, %ymm13 -vpunpcklwd 5216(%r10), %ymm1, %ymm14 -vpunpckhwd 5216(%r10), %ymm1, %ymm15 -vpunpcklwd 5280(%r10), %ymm2, %ymm0 -vpunpckhwd 5280(%r10), %ymm2, %ymm1 -vpunpcklwd 5344(%r10), %ymm3, %ymm2 -vpunpckhwd 5344(%r10), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 96(%r12) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 352(%r12) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 608(%r12) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 864(%r12) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 1120(%r12) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 1376(%r12) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 1632(%r12) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 2144(%r12) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 2400(%r12) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 2656(%r12) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 2912(%r12) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 3168(%r12) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 3424(%r12) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 3680(%r12) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 1888(%r12) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 3936(%r12) -vmovdqa 4992(%r10), %ymm0 -vmovdqa 5056(%r10), %ymm1 -vmovdqa 5120(%r10), %ymm2 -vmovdqa 5184(%r10), %ymm3 -vpunpcklwd 5024(%r10), %ymm0, %ymm4 -vpunpckhwd 5024(%r10), %ymm0, %ymm5 -vpunpcklwd 5088(%r10), %ymm1, %ymm6 -vpunpckhwd 5088(%r10), %ymm1, %ymm7 -vpunpcklwd 5152(%r10), %ymm2, %ymm8 -vpunpckhwd 5152(%r10), %ymm2, %ymm9 -vpunpcklwd 5216(%r10), %ymm3, %ymm10 -vpunpckhwd 5216(%r10), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 5248(%r10), %ymm0 -vmovdqa 5312(%r10), %ymm1 -vmovdqa 5376(%r10), %ymm2 -vmovdqa 5440(%r10), %ymm3 -vpunpcklwd 5280(%r10), %ymm0, %ymm12 -vpunpckhwd 5280(%r10), %ymm0, %ymm13 -vpunpcklwd 5344(%r10), %ymm1, %ymm14 -vpunpckhwd 5344(%r10), %ymm1, %ymm15 -vpunpcklwd 5408(%r10), %ymm2, %ymm0 -vpunpckhwd 5408(%r10), %ymm2, %ymm1 -vpunpcklwd 5472(%r10), %ymm3, %ymm2 -vpunpckhwd 5472(%r10), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 128(%r12) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 384(%r12) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 640(%r12) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 896(%r12) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 1152(%r12) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 1408(%r12) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 1664(%r12) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 2176(%r12) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 2432(%r12) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 2688(%r12) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 2944(%r12) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 3200(%r12) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 3456(%r12) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 3712(%r12) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 1920(%r12) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 3968(%r12) -vmovdqa 5504(%r10), %ymm0 -vmovdqa 5568(%r10), %ymm1 -vmovdqa 5632(%r10), %ymm2 -vmovdqa 5696(%r10), %ymm3 -vpunpcklwd 5536(%r10), %ymm0, %ymm4 -vpunpckhwd 5536(%r10), %ymm0, %ymm5 -vpunpcklwd 5600(%r10), %ymm1, %ymm6 -vpunpckhwd 5600(%r10), %ymm1, %ymm7 -vpunpcklwd 5664(%r10), %ymm2, %ymm8 -vpunpckhwd 5664(%r10), %ymm2, %ymm9 -vpunpcklwd 5728(%r10), %ymm3, %ymm10 -vpunpckhwd 5728(%r10), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 5760(%r10), %ymm0 -vmovdqa 5824(%r10), %ymm1 -vmovdqa 5888(%r10), %ymm2 -vmovdqa 5952(%r10), %ymm3 -vpunpcklwd 5792(%r10), %ymm0, %ymm12 -vpunpckhwd 5792(%r10), %ymm0, %ymm13 -vpunpcklwd 5856(%r10), %ymm1, %ymm14 -vpunpckhwd 5856(%r10), %ymm1, %ymm15 -vpunpcklwd 5920(%r10), %ymm2, %ymm0 -vpunpckhwd 5920(%r10), %ymm2, %ymm1 -vpunpcklwd 5984(%r10), %ymm3, %ymm2 -vpunpckhwd 5984(%r10), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 160(%r12) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 416(%r12) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 672(%r12) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 928(%r12) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 1184(%r12) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 1440(%r12) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 1696(%r12) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 2208(%r12) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 2464(%r12) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 2720(%r12) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 2976(%r12) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 3232(%r12) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 3488(%r12) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 3744(%r12) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 1952(%r12) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 4000(%r12) -vmovdqa 6016(%r10), %ymm0 -vmovdqa 6080(%r10), %ymm1 -vmovdqa 6144(%r10), %ymm2 -vmovdqa 6208(%r10), %ymm3 -vpunpcklwd 6048(%r10), %ymm0, %ymm4 -vpunpckhwd 6048(%r10), %ymm0, %ymm5 -vpunpcklwd 6112(%r10), %ymm1, %ymm6 -vpunpckhwd 6112(%r10), %ymm1, %ymm7 -vpunpcklwd 6176(%r10), %ymm2, %ymm8 -vpunpckhwd 6176(%r10), %ymm2, %ymm9 -vpunpcklwd 6240(%r10), %ymm3, %ymm10 -vpunpckhwd 6240(%r10), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 6272(%r10), %ymm0 -vmovdqa 6336(%r10), %ymm1 -vmovdqa 6400(%r10), %ymm2 -vmovdqa 6464(%r10), %ymm3 -vpunpcklwd 6304(%r10), %ymm0, %ymm12 -vpunpckhwd 6304(%r10), %ymm0, %ymm13 -vpunpcklwd 6368(%r10), %ymm1, %ymm14 -vpunpckhwd 6368(%r10), %ymm1, %ymm15 -vpunpcklwd 6432(%r10), %ymm2, %ymm0 -vpunpckhwd 6432(%r10), %ymm2, %ymm1 -vpunpcklwd 6496(%r10), %ymm3, %ymm2 -vpunpckhwd 6496(%r10), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 192(%r12) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 448(%r12) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 704(%r12) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 960(%r12) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 1216(%r12) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 1472(%r12) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 1728(%r12) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 2240(%r12) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 2496(%r12) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 2752(%r12) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 3008(%r12) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 3264(%r12) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 3520(%r12) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 3776(%r12) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 1984(%r12) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 4032(%r12) -vmovdqa 6528(%r10), %ymm0 -vmovdqa 6592(%r10), %ymm1 -vmovdqa 6656(%r10), %ymm2 -vmovdqa 6720(%r10), %ymm3 -vpunpcklwd 6560(%r10), %ymm0, %ymm4 -vpunpckhwd 6560(%r10), %ymm0, %ymm5 -vpunpcklwd 6624(%r10), %ymm1, %ymm6 -vpunpckhwd 6624(%r10), %ymm1, %ymm7 -vpunpcklwd 6688(%r10), %ymm2, %ymm8 -vpunpckhwd 6688(%r10), %ymm2, %ymm9 -vpunpcklwd 6752(%r10), %ymm3, %ymm10 -vpunpckhwd 6752(%r10), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 6784(%r10), %ymm0 -vmovdqa 6848(%r10), %ymm1 -vmovdqa 6912(%r10), %ymm2 -vmovdqa 6976(%r10), %ymm3 -vpunpcklwd 6816(%r10), %ymm0, %ymm12 -vpunpckhwd 6816(%r10), %ymm0, %ymm13 -vpunpcklwd 6880(%r10), %ymm1, %ymm14 -vpunpckhwd 6880(%r10), %ymm1, %ymm15 -vpunpcklwd 6944(%r10), %ymm2, %ymm0 -vpunpckhwd 6944(%r10), %ymm2, %ymm1 -vpunpcklwd 7008(%r10), %ymm3, %ymm2 -vpunpckhwd 7008(%r10), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 224(%r12) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 480(%r12) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 736(%r12) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 992(%r12) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 1248(%r12) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 1504(%r12) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 1760(%r12) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 2272(%r12) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 2528(%r12) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 2784(%r12) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 3040(%r12) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 3296(%r12) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 3552(%r12) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 3808(%r12) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 2016(%r12) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 4064(%r12) -addq $32, %rsp -add $2048, %rax -add $2048, %r11 -add $4096, %r12 -dec %ecx -jnz karatsuba_loop_1 -sub $16384, %r12 -add $11584, %rsp -subq $1280, %rsp -vmovdqa const729(%rip), %ymm15 -vmovdqa const3_inv(%rip), %ymm14 -vmovdqa const5_inv(%rip), %ymm13 -vmovdqa const9(%rip), %ymm12 -vmovdqa 128(%r12), %ymm0 -vpsubw 256(%r12), %ymm0, %ymm0 -vmovdqa 640(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 384(%r12), %ymm1, %ymm1 -vpsubw 0(%r12), %ymm0, %ymm0 -vpaddw 512(%r12), %ymm0, %ymm0 -vmovdqa 896(%r12), %ymm2 -vpsubw 1024(%r12), %ymm2, %ymm2 -vmovdqa 1408(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 1152(%r12), %ymm3, %ymm3 -vpsubw 768(%r12), %ymm2, %ymm2 -vpaddw 1280(%r12), %ymm2, %ymm2 -vmovdqa 1664(%r12), %ymm4 -vpsubw 1792(%r12), %ymm4, %ymm4 -vmovdqa 2176(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 1920(%r12), %ymm5, %ymm5 -vpsubw 1536(%r12), %ymm4, %ymm4 -vpaddw 2048(%r12), %ymm4, %ymm4 -vpsubw 768(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 0(%r12), %ymm1, %ymm1 -vpaddw 1536(%r12), %ymm1, %ymm1 -vmovdqa 384(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 1920(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 1152(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 0(%r12), %ymm8 -vmovdqa 1152(%r12), %ymm9 -vmovdqa %ymm8, 0(%rsp) -vmovdqa %ymm0, 32(%rsp) -vmovdqa %ymm1, 64(%rsp) -vmovdqa %ymm7, 96(%rsp) -vmovdqa %ymm5, 128(%rsp) -vmovdqa %ymm2, 160(%rsp) -vmovdqa %ymm3, 192(%rsp) -vmovdqa %ymm9, 224(%rsp) -vmovdqa 2432(%r12), %ymm0 -vpsubw 2560(%r12), %ymm0, %ymm0 -vmovdqa 2944(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 2688(%r12), %ymm1, %ymm1 -vpsubw 2304(%r12), %ymm0, %ymm0 -vpaddw 2816(%r12), %ymm0, %ymm0 -vmovdqa 3200(%r12), %ymm2 -vpsubw 3328(%r12), %ymm2, %ymm2 -vmovdqa 3712(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 3456(%r12), %ymm3, %ymm3 -vpsubw 3072(%r12), %ymm2, %ymm2 -vpaddw 3584(%r12), %ymm2, %ymm2 -vmovdqa 3968(%r12), %ymm4 -vpsubw 4096(%r12), %ymm4, %ymm4 -vmovdqa 4480(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 4224(%r12), %ymm5, %ymm5 -vpsubw 3840(%r12), %ymm4, %ymm4 -vpaddw 4352(%r12), %ymm4, %ymm4 -vpsubw 3072(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 2304(%r12), %ymm1, %ymm1 -vpaddw 3840(%r12), %ymm1, %ymm1 -vmovdqa 2688(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 4224(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 3456(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 2304(%r12), %ymm8 -vmovdqa 3456(%r12), %ymm9 -vmovdqa %ymm8, 256(%rsp) -vmovdqa %ymm0, 288(%rsp) -vmovdqa %ymm1, 320(%rsp) -vmovdqa %ymm7, 352(%rsp) -vmovdqa %ymm5, 384(%rsp) -vmovdqa %ymm2, 416(%rsp) -vmovdqa %ymm3, 448(%rsp) -vmovdqa %ymm9, 480(%rsp) -vmovdqa 4736(%r12), %ymm0 -vpsubw 4864(%r12), %ymm0, %ymm0 -vmovdqa 5248(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 4992(%r12), %ymm1, %ymm1 -vpsubw 4608(%r12), %ymm0, %ymm0 -vpaddw 5120(%r12), %ymm0, %ymm0 -vmovdqa 5504(%r12), %ymm2 -vpsubw 5632(%r12), %ymm2, %ymm2 -vmovdqa 6016(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 5760(%r12), %ymm3, %ymm3 -vpsubw 5376(%r12), %ymm2, %ymm2 -vpaddw 5888(%r12), %ymm2, %ymm2 -vmovdqa 6272(%r12), %ymm4 -vpsubw 6400(%r12), %ymm4, %ymm4 -vmovdqa 6784(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 6528(%r12), %ymm5, %ymm5 -vpsubw 6144(%r12), %ymm4, %ymm4 -vpaddw 6656(%r12), %ymm4, %ymm4 -vpsubw 5376(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 4608(%r12), %ymm1, %ymm1 -vpaddw 6144(%r12), %ymm1, %ymm1 -vmovdqa 4992(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 6528(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 5760(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 4608(%r12), %ymm8 -vmovdqa 5760(%r12), %ymm9 -vmovdqa %ymm8, 512(%rsp) -vmovdqa %ymm0, 544(%rsp) -vmovdqa %ymm1, 576(%rsp) -vmovdqa %ymm7, 608(%rsp) -vmovdqa %ymm5, 640(%rsp) -vmovdqa %ymm2, 672(%rsp) -vmovdqa %ymm3, 704(%rsp) -vmovdqa %ymm9, 736(%rsp) -vmovdqa 7040(%r12), %ymm0 -vpsubw 7168(%r12), %ymm0, %ymm0 -vmovdqa 7552(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 7296(%r12), %ymm1, %ymm1 -vpsubw 6912(%r12), %ymm0, %ymm0 -vpaddw 7424(%r12), %ymm0, %ymm0 -vmovdqa 7808(%r12), %ymm2 -vpsubw 7936(%r12), %ymm2, %ymm2 -vmovdqa 8320(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 8064(%r12), %ymm3, %ymm3 -vpsubw 7680(%r12), %ymm2, %ymm2 -vpaddw 8192(%r12), %ymm2, %ymm2 -vmovdqa 8576(%r12), %ymm4 -vpsubw 8704(%r12), %ymm4, %ymm4 -vmovdqa 9088(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 8832(%r12), %ymm5, %ymm5 -vpsubw 8448(%r12), %ymm4, %ymm4 -vpaddw 8960(%r12), %ymm4, %ymm4 -vpsubw 7680(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 6912(%r12), %ymm1, %ymm1 -vpaddw 8448(%r12), %ymm1, %ymm1 -vmovdqa 7296(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 8832(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 8064(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 6912(%r12), %ymm8 -vmovdqa 8064(%r12), %ymm9 -vmovdqa %ymm8, 768(%rsp) -vmovdqa %ymm0, 800(%rsp) -vmovdqa %ymm1, 832(%rsp) -vmovdqa %ymm7, 864(%rsp) -vmovdqa %ymm5, 896(%rsp) -vmovdqa %ymm2, 928(%rsp) -vmovdqa %ymm3, 960(%rsp) -vmovdqa %ymm9, 992(%rsp) -vmovdqa 9344(%r12), %ymm0 -vpsubw 9472(%r12), %ymm0, %ymm0 -vmovdqa 9856(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 9600(%r12), %ymm1, %ymm1 -vpsubw 9216(%r12), %ymm0, %ymm0 -vpaddw 9728(%r12), %ymm0, %ymm0 -vmovdqa 10112(%r12), %ymm2 -vpsubw 10240(%r12), %ymm2, %ymm2 -vmovdqa 10624(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 10368(%r12), %ymm3, %ymm3 -vpsubw 9984(%r12), %ymm2, %ymm2 -vpaddw 10496(%r12), %ymm2, %ymm2 -vmovdqa 10880(%r12), %ymm4 -vpsubw 11008(%r12), %ymm4, %ymm4 -vmovdqa 11392(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 11136(%r12), %ymm5, %ymm5 -vpsubw 10752(%r12), %ymm4, %ymm4 -vpaddw 11264(%r12), %ymm4, %ymm4 -vpsubw 9984(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 9216(%r12), %ymm1, %ymm1 -vpaddw 10752(%r12), %ymm1, %ymm1 -vmovdqa 9600(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 11136(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 10368(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 9216(%r12), %ymm8 -vmovdqa 10368(%r12), %ymm9 -vmovdqa %ymm8, 1024(%rsp) -vmovdqa %ymm0, 1056(%rsp) -vmovdqa %ymm1, 1088(%rsp) -vmovdqa %ymm7, 1120(%rsp) -vmovdqa %ymm5, 1152(%rsp) -vmovdqa %ymm2, 1184(%rsp) -vmovdqa %ymm3, 1216(%rsp) -vmovdqa %ymm9, 1248(%rsp) -vmovdqa 11648(%r12), %ymm0 -vpsubw 11776(%r12), %ymm0, %ymm0 -vmovdqa 12160(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 11904(%r12), %ymm1, %ymm1 -vpsubw 11520(%r12), %ymm0, %ymm0 -vpaddw 12032(%r12), %ymm0, %ymm0 -vmovdqa 12416(%r12), %ymm2 -vpsubw 12544(%r12), %ymm2, %ymm2 -vmovdqa 12928(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 12672(%r12), %ymm3, %ymm3 -vpsubw 12288(%r12), %ymm2, %ymm2 -vpaddw 12800(%r12), %ymm2, %ymm2 -vmovdqa 13184(%r12), %ymm4 -vpsubw 13312(%r12), %ymm4, %ymm4 -vmovdqa 13696(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 13440(%r12), %ymm5, %ymm5 -vpsubw 13056(%r12), %ymm4, %ymm4 -vpaddw 13568(%r12), %ymm4, %ymm4 -vpsubw 12288(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 11520(%r12), %ymm1, %ymm1 -vpaddw 13056(%r12), %ymm1, %ymm1 -vmovdqa 11904(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 13440(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 12672(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 11520(%r12), %ymm8 -vmovdqa 12672(%r12), %ymm9 -vmovdqa %ymm8, 1280(%rsp) -vmovdqa %ymm0, 1312(%rsp) -vmovdqa %ymm1, 1344(%rsp) -vmovdqa %ymm7, 1376(%rsp) -vmovdqa %ymm5, 1408(%rsp) -vmovdqa %ymm2, 1440(%rsp) -vmovdqa %ymm3, 1472(%rsp) -vmovdqa %ymm9, 1504(%rsp) -vmovdqa 13952(%r12), %ymm0 -vpsubw 14080(%r12), %ymm0, %ymm0 -vmovdqa 14464(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 14208(%r12), %ymm1, %ymm1 -vpsubw 13824(%r12), %ymm0, %ymm0 -vpaddw 14336(%r12), %ymm0, %ymm0 -vmovdqa 14720(%r12), %ymm2 -vpsubw 14848(%r12), %ymm2, %ymm2 -vmovdqa 15232(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 14976(%r12), %ymm3, %ymm3 -vpsubw 14592(%r12), %ymm2, %ymm2 -vpaddw 15104(%r12), %ymm2, %ymm2 -vmovdqa 15488(%r12), %ymm4 -vpsubw 15616(%r12), %ymm4, %ymm4 -vmovdqa 16000(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 15744(%r12), %ymm5, %ymm5 -vpsubw 15360(%r12), %ymm4, %ymm4 -vpaddw 15872(%r12), %ymm4, %ymm4 -vpsubw 14592(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 13824(%r12), %ymm1, %ymm1 -vpaddw 15360(%r12), %ymm1, %ymm1 -vmovdqa 14208(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 15744(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 14976(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 13824(%r12), %ymm8 -vmovdqa 14976(%r12), %ymm9 -vmovdqa %ymm8, 1536(%rsp) -vmovdqa %ymm0, 1568(%rsp) -vmovdqa %ymm1, 1600(%rsp) -vmovdqa %ymm7, 1632(%rsp) -vmovdqa %ymm5, 1664(%rsp) -vmovdqa %ymm2, 1696(%rsp) -vmovdqa %ymm3, 1728(%rsp) -vmovdqa %ymm9, 1760(%rsp) -vmovdqa 0(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm10 -vpunpckhwd const0(%rip), %ymm11, %ymm9 -vpslld $1, %ymm10, %ymm10 -vpslld $1, %ymm9, %ymm9 -vmovdqa 256(%rsp), %ymm8 -vpunpcklwd const0(%rip), %ymm8, %ymm7 -vpunpckhwd const0(%rip), %ymm8, %ymm8 -vmovdqa 512(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm7, %ymm4 -vpaddd %ymm6, %ymm8, %ymm3 -vpsubd %ymm10, %ymm4, %ymm4 -vpsubd %ymm9, %ymm3, %ymm3 -vpsubd %ymm5, %ymm7, %ymm5 -vpsubd %ymm6, %ymm8, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1536(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm8 -vpunpckhwd const0(%rip), %ymm5, %ymm7 -vpslld $1, %ymm8, %ymm8 -vpslld $1, %ymm7, %ymm7 -vpsubd %ymm8, %ymm4, %ymm4 -vpsubd %ymm7, %ymm3, %ymm3 -vpsrld $1, %ymm4, %ymm4 -vpsrld $1, %ymm3, %ymm3 -vpand mask32_to_16(%rip), %ymm4, %ymm4 -vpand mask32_to_16(%rip), %ymm3, %ymm3 -vpackusdw %ymm3, %ymm4, %ymm3 -vmovdqa 768(%rsp), %ymm4 -vpaddw 1024(%rsp), %ymm4, %ymm7 -vpsubw 1024(%rsp), %ymm4, %ymm4 -vpsrlw $2, %ymm4, %ymm4 -vpsubw %ymm6, %ymm4, %ymm4 -vpmullw %ymm14, %ymm4, %ymm4 -vpsllw $1, %ymm11, %ymm8 -vpsubw %ymm8, %ymm7, %ymm8 -vpsllw $7, %ymm5, %ymm7 -vpsubw %ymm7, %ymm8, %ymm7 -vpsrlw $3, %ymm7, %ymm7 -vpsubw %ymm3, %ymm7, %ymm7 -vmovdqa 1280(%rsp), %ymm8 -vpsubw %ymm11, %ymm8, %ymm8 -vpmullw %ymm15, %ymm5, %ymm9 -vpsubw %ymm9, %ymm8, %ymm9 -vpmullw %ymm14, %ymm7, %ymm7 -vpsubw %ymm7, %ymm3, %ymm3 -vpmullw %ymm12, %ymm7, %ymm8 -vpaddw %ymm8, %ymm3, %ymm8 -vpmullw %ymm12, %ymm8, %ymm8 -vpsubw %ymm8, %ymm9, %ymm8 -vpmullw %ymm14, %ymm8, %ymm8 -vpsubw %ymm6, %ymm8, %ymm8 -vpsrlw $3, %ymm8, %ymm8 -vpsubw %ymm4, %ymm8, %ymm8 -vpsubw %ymm8, %ymm4, %ymm4 -vpsubw %ymm4, %ymm6, %ymm6 -vpmullw %ymm13, %ymm8, %ymm8 -vpsubw %ymm8, %ymm6, %ymm6 -vmovdqu 0(%rdi), %ymm9 -vpaddw %ymm9, %ymm11, %ymm9 -vmovdqu %ymm9, 0(%rdi) -vmovdqu 416(%rdi), %ymm9 -vpaddw %ymm9, %ymm6, %ymm9 -vmovdqu %ymm9, 416(%rdi) -vmovdqu 832(%rdi), %ymm9 -vpaddw %ymm9, %ymm3, %ymm9 -vmovdqu %ymm9, 832(%rdi) -vmovdqu 1248(%rdi), %ymm9 -vpaddw %ymm9, %ymm4, %ymm9 -vmovdqu %ymm9, 1248(%rdi) -vmovdqu 22(%rdi), %ymm9 -vpaddw %ymm9, %ymm7, %ymm9 -vmovdqu %ymm9, 22(%rdi) -vmovdqu 438(%rdi), %ymm9 -vpaddw %ymm9, %ymm8, %ymm9 -vmovdqu %ymm9, 438(%rdi) -vmovdqu 854(%rdi), %ymm9 -vpaddw %ymm9, %ymm5, %ymm9 -vmovdqu %ymm9, 854(%rdi) -vmovdqa 32(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm8 -vpunpckhwd const0(%rip), %ymm5, %ymm7 -vpslld $1, %ymm8, %ymm8 -vpslld $1, %ymm7, %ymm7 -vmovdqa 288(%rsp), %ymm4 -vpunpcklwd const0(%rip), %ymm4, %ymm3 -vpunpckhwd const0(%rip), %ymm4, %ymm4 -vmovdqa 544(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm3, %ymm9 -vpaddd %ymm6, %ymm4, %ymm10 -vpsubd %ymm8, %ymm9, %ymm9 -vpsubd %ymm7, %ymm10, %ymm10 -vpsubd %ymm11, %ymm3, %ymm11 -vpsubd %ymm6, %ymm4, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1568(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm4 -vpunpckhwd const0(%rip), %ymm11, %ymm3 -vpslld $1, %ymm4, %ymm4 -vpslld $1, %ymm3, %ymm3 -vpsubd %ymm4, %ymm9, %ymm9 -vpsubd %ymm3, %ymm10, %ymm10 -vpsrld $1, %ymm9, %ymm9 -vpsrld $1, %ymm10, %ymm10 -vpand mask32_to_16(%rip), %ymm9, %ymm9 -vpand mask32_to_16(%rip), %ymm10, %ymm10 -vpackusdw %ymm10, %ymm9, %ymm10 -vmovdqa 800(%rsp), %ymm9 -vpaddw 1056(%rsp), %ymm9, %ymm3 -vpsubw 1056(%rsp), %ymm9, %ymm9 -vpsrlw $2, %ymm9, %ymm9 -vpsubw %ymm6, %ymm9, %ymm9 -vpmullw %ymm14, %ymm9, %ymm9 -vpsllw $1, %ymm5, %ymm4 -vpsubw %ymm4, %ymm3, %ymm4 -vpsllw $7, %ymm11, %ymm3 -vpsubw %ymm3, %ymm4, %ymm3 -vpsrlw $3, %ymm3, %ymm3 -vpsubw %ymm10, %ymm3, %ymm3 -vmovdqa 1312(%rsp), %ymm4 -vpsubw %ymm5, %ymm4, %ymm4 -vpmullw %ymm15, %ymm11, %ymm7 -vpsubw %ymm7, %ymm4, %ymm7 -vpmullw %ymm14, %ymm3, %ymm3 -vpsubw %ymm3, %ymm10, %ymm10 -vpmullw %ymm12, %ymm3, %ymm4 -vpaddw %ymm4, %ymm10, %ymm4 -vpmullw %ymm12, %ymm4, %ymm4 -vpsubw %ymm4, %ymm7, %ymm4 -vpmullw %ymm14, %ymm4, %ymm4 -vpsubw %ymm6, %ymm4, %ymm4 -vpsrlw $3, %ymm4, %ymm4 -vpsubw %ymm9, %ymm4, %ymm4 -vpsubw %ymm4, %ymm9, %ymm9 -vpsubw %ymm9, %ymm6, %ymm6 -vpmullw %ymm13, %ymm4, %ymm4 -vpsubw %ymm4, %ymm6, %ymm6 -vmovdqu 104(%rdi), %ymm7 -vpaddw %ymm7, %ymm5, %ymm7 -vmovdqu %ymm7, 104(%rdi) -vmovdqu 520(%rdi), %ymm7 -vpaddw %ymm7, %ymm6, %ymm7 -vmovdqu %ymm7, 520(%rdi) -vmovdqu 936(%rdi), %ymm7 -vpaddw %ymm7, %ymm10, %ymm7 -vmovdqu %ymm7, 936(%rdi) -vmovdqu 1352(%rdi), %ymm7 -vpaddw %ymm7, %ymm9, %ymm7 -vmovdqu %ymm7, 1352(%rdi) -vmovdqu 126(%rdi), %ymm7 -vpaddw %ymm7, %ymm3, %ymm7 -vmovdqu %ymm7, 126(%rdi) -vmovdqu 542(%rdi), %ymm7 -vpaddw %ymm7, %ymm4, %ymm7 -vmovdqu %ymm7, 542(%rdi) -vmovdqu 958(%rdi), %ymm7 -vpaddw %ymm7, %ymm11, %ymm7 -vmovdqu %ymm7, 958(%rdi) -vmovdqa 64(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm4 -vpunpckhwd const0(%rip), %ymm11, %ymm3 -vpslld $1, %ymm4, %ymm4 -vpslld $1, %ymm3, %ymm3 -vmovdqa 320(%rsp), %ymm9 -vpunpcklwd const0(%rip), %ymm9, %ymm10 -vpunpckhwd const0(%rip), %ymm9, %ymm9 -vmovdqa 576(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm10, %ymm7 -vpaddd %ymm6, %ymm9, %ymm8 -vpsubd %ymm4, %ymm7, %ymm7 -vpsubd %ymm3, %ymm8, %ymm8 -vpsubd %ymm5, %ymm10, %ymm5 -vpsubd %ymm6, %ymm9, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1600(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm9 -vpunpckhwd const0(%rip), %ymm5, %ymm10 -vpslld $1, %ymm9, %ymm9 -vpslld $1, %ymm10, %ymm10 -vpsubd %ymm9, %ymm7, %ymm7 -vpsubd %ymm10, %ymm8, %ymm8 -vpsrld $1, %ymm7, %ymm7 -vpsrld $1, %ymm8, %ymm8 -vpand mask32_to_16(%rip), %ymm7, %ymm7 -vpand mask32_to_16(%rip), %ymm8, %ymm8 -vpackusdw %ymm8, %ymm7, %ymm8 -vmovdqa 832(%rsp), %ymm7 -vpaddw 1088(%rsp), %ymm7, %ymm10 -vpsubw 1088(%rsp), %ymm7, %ymm7 -vpsrlw $2, %ymm7, %ymm7 -vpsubw %ymm6, %ymm7, %ymm7 -vpmullw %ymm14, %ymm7, %ymm7 -vpsllw $1, %ymm11, %ymm9 -vpsubw %ymm9, %ymm10, %ymm9 -vpsllw $7, %ymm5, %ymm10 -vpsubw %ymm10, %ymm9, %ymm10 -vpsrlw $3, %ymm10, %ymm10 -vpsubw %ymm8, %ymm10, %ymm10 -vmovdqa 1344(%rsp), %ymm9 -vpsubw %ymm11, %ymm9, %ymm9 -vpmullw %ymm15, %ymm5, %ymm3 -vpsubw %ymm3, %ymm9, %ymm3 -vpmullw %ymm14, %ymm10, %ymm10 -vpsubw %ymm10, %ymm8, %ymm8 -vpmullw %ymm12, %ymm10, %ymm9 -vpaddw %ymm9, %ymm8, %ymm9 -vpmullw %ymm12, %ymm9, %ymm9 -vpsubw %ymm9, %ymm3, %ymm9 -vpmullw %ymm14, %ymm9, %ymm9 -vpsubw %ymm6, %ymm9, %ymm9 -vpsrlw $3, %ymm9, %ymm9 -vpsubw %ymm7, %ymm9, %ymm9 -vpsubw %ymm9, %ymm7, %ymm7 -vpsubw %ymm7, %ymm6, %ymm6 -vpmullw %ymm13, %ymm9, %ymm9 -vpsubw %ymm9, %ymm6, %ymm6 -vmovdqu 208(%rdi), %ymm3 -vpaddw %ymm3, %ymm11, %ymm3 -vmovdqu %ymm3, 208(%rdi) -vmovdqu 624(%rdi), %ymm3 -vpaddw %ymm3, %ymm6, %ymm3 -vmovdqu %ymm3, 624(%rdi) -vmovdqu 1040(%rdi), %ymm3 -vpaddw %ymm3, %ymm8, %ymm3 -vmovdqu %ymm3, 1040(%rdi) -vmovdqu 1456(%rdi), %ymm3 -vpaddw %ymm3, %ymm7, %ymm3 -vmovdqu %ymm3, 1456(%rdi) -vmovdqu 230(%rdi), %ymm3 -vpaddw %ymm3, %ymm10, %ymm3 -vmovdqu %ymm3, 230(%rdi) -vmovdqu 646(%rdi), %ymm3 -vpaddw %ymm3, %ymm9, %ymm3 -vmovdqu %ymm3, 646(%rdi) -vmovdqu 1062(%rdi), %ymm3 -vpaddw %ymm3, %ymm5, %ymm3 -vmovdqu %ymm3, 1062(%rdi) -vmovdqa 96(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm9 -vpunpckhwd const0(%rip), %ymm5, %ymm10 -vpslld $1, %ymm9, %ymm9 -vpslld $1, %ymm10, %ymm10 -vmovdqa 352(%rsp), %ymm7 -vpunpcklwd const0(%rip), %ymm7, %ymm8 -vpunpckhwd const0(%rip), %ymm7, %ymm7 -vmovdqa 608(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm8, %ymm3 -vpaddd %ymm6, %ymm7, %ymm4 -vpsubd %ymm9, %ymm3, %ymm3 -vpsubd %ymm10, %ymm4, %ymm4 -vpsubd %ymm11, %ymm8, %ymm11 -vpsubd %ymm6, %ymm7, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1632(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm7 -vpunpckhwd const0(%rip), %ymm11, %ymm8 -vpslld $1, %ymm7, %ymm7 -vpslld $1, %ymm8, %ymm8 -vpsubd %ymm7, %ymm3, %ymm3 -vpsubd %ymm8, %ymm4, %ymm4 -vpsrld $1, %ymm3, %ymm3 -vpsrld $1, %ymm4, %ymm4 -vpand mask32_to_16(%rip), %ymm3, %ymm3 -vpand mask32_to_16(%rip), %ymm4, %ymm4 -vpackusdw %ymm4, %ymm3, %ymm4 -vmovdqa 864(%rsp), %ymm3 -vpaddw 1120(%rsp), %ymm3, %ymm8 -vpsubw 1120(%rsp), %ymm3, %ymm3 -vpsrlw $2, %ymm3, %ymm3 -vpsubw %ymm6, %ymm3, %ymm3 -vpmullw %ymm14, %ymm3, %ymm3 -vpsllw $1, %ymm5, %ymm7 -vpsubw %ymm7, %ymm8, %ymm7 -vpsllw $7, %ymm11, %ymm8 -vpsubw %ymm8, %ymm7, %ymm8 -vpsrlw $3, %ymm8, %ymm8 -vpsubw %ymm4, %ymm8, %ymm8 -vmovdqa 1376(%rsp), %ymm7 -vpsubw %ymm5, %ymm7, %ymm7 -vpmullw %ymm15, %ymm11, %ymm10 -vpsubw %ymm10, %ymm7, %ymm10 -vpmullw %ymm14, %ymm8, %ymm8 -vpsubw %ymm8, %ymm4, %ymm4 -vpmullw %ymm12, %ymm8, %ymm7 -vpaddw %ymm7, %ymm4, %ymm7 -vpmullw %ymm12, %ymm7, %ymm7 -vpsubw %ymm7, %ymm10, %ymm7 -vpmullw %ymm14, %ymm7, %ymm7 -vpsubw %ymm6, %ymm7, %ymm7 -vpsrlw $3, %ymm7, %ymm7 -vpsubw %ymm3, %ymm7, %ymm7 -vpsubw %ymm7, %ymm3, %ymm3 -vpsubw %ymm3, %ymm6, %ymm6 -vpmullw %ymm13, %ymm7, %ymm7 -vpsubw %ymm7, %ymm6, %ymm6 -vmovdqu 312(%rdi), %ymm10 -vpaddw %ymm10, %ymm5, %ymm10 -vmovdqu %ymm10, 312(%rdi) -vmovdqu 728(%rdi), %ymm10 -vpaddw %ymm10, %ymm6, %ymm10 -vmovdqu %ymm10, 728(%rdi) -vmovdqu 1144(%rdi), %ymm10 -vpaddw %ymm10, %ymm4, %ymm10 -vmovdqu %ymm10, 1144(%rdi) -vmovdqu 1560(%rdi), %ymm10 -vpaddw %ymm10, %ymm3, %ymm10 -vmovdqu %ymm10, 1560(%rdi) -vmovdqu 334(%rdi), %ymm10 -vpaddw %ymm10, %ymm8, %ymm10 -vmovdqu %ymm10, 334(%rdi) -vmovdqu 750(%rdi), %ymm10 -vpaddw %ymm10, %ymm7, %ymm10 -vmovdqu %ymm10, 750(%rdi) -vmovdqu 1166(%rdi), %ymm10 -vpaddw %ymm10, %ymm11, %ymm10 -vmovdqu %ymm10, 1166(%rdi) -vmovdqa 128(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm7 -vpunpckhwd const0(%rip), %ymm11, %ymm8 -vpslld $1, %ymm7, %ymm7 -vpslld $1, %ymm8, %ymm8 -vmovdqa 384(%rsp), %ymm3 -vpunpcklwd const0(%rip), %ymm3, %ymm4 -vpunpckhwd const0(%rip), %ymm3, %ymm3 -vmovdqa 640(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm4, %ymm10 -vpaddd %ymm6, %ymm3, %ymm9 -vpsubd %ymm7, %ymm10, %ymm10 -vpsubd %ymm8, %ymm9, %ymm9 -vpsubd %ymm5, %ymm4, %ymm5 -vpsubd %ymm6, %ymm3, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1664(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm3 -vpunpckhwd const0(%rip), %ymm5, %ymm4 -vpslld $1, %ymm3, %ymm3 -vpslld $1, %ymm4, %ymm4 -vpsubd %ymm3, %ymm10, %ymm10 -vpsubd %ymm4, %ymm9, %ymm9 -vpsrld $1, %ymm10, %ymm10 -vpsrld $1, %ymm9, %ymm9 -vpand mask32_to_16(%rip), %ymm10, %ymm10 -vpand mask32_to_16(%rip), %ymm9, %ymm9 -vpackusdw %ymm9, %ymm10, %ymm9 -vmovdqa 896(%rsp), %ymm10 -vpaddw 1152(%rsp), %ymm10, %ymm4 -vpsubw 1152(%rsp), %ymm10, %ymm10 -vpsrlw $2, %ymm10, %ymm10 -vpsubw %ymm6, %ymm10, %ymm10 -vpmullw %ymm14, %ymm10, %ymm10 -vpsllw $1, %ymm11, %ymm3 -vpsubw %ymm3, %ymm4, %ymm3 -vpsllw $7, %ymm5, %ymm4 -vpsubw %ymm4, %ymm3, %ymm4 -vpsrlw $3, %ymm4, %ymm4 -vpsubw %ymm9, %ymm4, %ymm4 -vmovdqa 1408(%rsp), %ymm3 -vpsubw %ymm11, %ymm3, %ymm3 -vpmullw %ymm15, %ymm5, %ymm8 -vpsubw %ymm8, %ymm3, %ymm8 -vpmullw %ymm14, %ymm4, %ymm4 -vpsubw %ymm4, %ymm9, %ymm9 -vpmullw %ymm12, %ymm4, %ymm3 -vpaddw %ymm3, %ymm9, %ymm3 -vpmullw %ymm12, %ymm3, %ymm3 -vpsubw %ymm3, %ymm8, %ymm3 -vpmullw %ymm14, %ymm3, %ymm3 -vpsubw %ymm6, %ymm3, %ymm3 -vpsrlw $3, %ymm3, %ymm3 -vpsubw %ymm10, %ymm3, %ymm3 -vpsubw %ymm3, %ymm10, %ymm10 -vpsubw %ymm10, %ymm6, %ymm6 -vpmullw %ymm13, %ymm3, %ymm3 -vpsubw %ymm3, %ymm6, %ymm6 -vmovdqu 416(%rdi), %ymm8 -vpaddw %ymm8, %ymm11, %ymm8 -vmovdqu %ymm8, 416(%rdi) -vmovdqu 832(%rdi), %ymm8 -vpaddw %ymm8, %ymm6, %ymm8 -vmovdqu %ymm8, 832(%rdi) -vmovdqu 1248(%rdi), %ymm8 -vpaddw %ymm8, %ymm9, %ymm8 -vmovdqu %ymm8, 1248(%rdi) -vmovdqu 22(%rdi), %ymm8 -vpaddw %ymm8, %ymm10, %ymm8 -vmovdqu %ymm8, 22(%rdi) -vmovdqu 438(%rdi), %ymm8 -vpaddw %ymm8, %ymm4, %ymm8 -vmovdqu %ymm8, 438(%rdi) -vmovdqu 854(%rdi), %ymm8 -vpaddw %ymm8, %ymm3, %ymm8 -vmovdqu %ymm8, 854(%rdi) -vmovdqu 1270(%rdi), %ymm8 -vpaddw %ymm8, %ymm5, %ymm8 -vmovdqu %ymm8, 1270(%rdi) -vmovdqa 160(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm3 -vpunpckhwd const0(%rip), %ymm5, %ymm4 -vpslld $1, %ymm3, %ymm3 -vpslld $1, %ymm4, %ymm4 -vmovdqa 416(%rsp), %ymm10 -vpunpcklwd const0(%rip), %ymm10, %ymm9 -vpunpckhwd const0(%rip), %ymm10, %ymm10 -vmovdqa 672(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm9, %ymm8 -vpaddd %ymm6, %ymm10, %ymm7 -vpsubd %ymm3, %ymm8, %ymm8 -vpsubd %ymm4, %ymm7, %ymm7 -vpsubd %ymm11, %ymm9, %ymm11 -vpsubd %ymm6, %ymm10, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1696(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm10 -vpunpckhwd const0(%rip), %ymm11, %ymm9 -vpslld $1, %ymm10, %ymm10 -vpslld $1, %ymm9, %ymm9 -vpsubd %ymm10, %ymm8, %ymm8 -vpsubd %ymm9, %ymm7, %ymm7 -vpsrld $1, %ymm8, %ymm8 -vpsrld $1, %ymm7, %ymm7 -vpand mask32_to_16(%rip), %ymm8, %ymm8 -vpand mask32_to_16(%rip), %ymm7, %ymm7 -vpackusdw %ymm7, %ymm8, %ymm7 -vmovdqa 928(%rsp), %ymm8 -vpaddw 1184(%rsp), %ymm8, %ymm9 -vpsubw 1184(%rsp), %ymm8, %ymm8 -vpsrlw $2, %ymm8, %ymm8 -vpsubw %ymm6, %ymm8, %ymm8 -vpmullw %ymm14, %ymm8, %ymm8 -vpsllw $1, %ymm5, %ymm10 -vpsubw %ymm10, %ymm9, %ymm10 -vpsllw $7, %ymm11, %ymm9 -vpsubw %ymm9, %ymm10, %ymm9 -vpsrlw $3, %ymm9, %ymm9 -vpsubw %ymm7, %ymm9, %ymm9 -vmovdqa 1440(%rsp), %ymm10 -vpsubw %ymm5, %ymm10, %ymm10 -vpmullw %ymm15, %ymm11, %ymm4 -vpsubw %ymm4, %ymm10, %ymm4 -vpmullw %ymm14, %ymm9, %ymm9 -vpsubw %ymm9, %ymm7, %ymm7 -vpmullw %ymm12, %ymm9, %ymm10 -vpaddw %ymm10, %ymm7, %ymm10 -vpmullw %ymm12, %ymm10, %ymm10 -vpsubw %ymm10, %ymm4, %ymm10 -vpmullw %ymm14, %ymm10, %ymm10 -vpsubw %ymm6, %ymm10, %ymm10 -vpsrlw $3, %ymm10, %ymm10 -vpsubw %ymm8, %ymm10, %ymm10 -vpsubw %ymm10, %ymm8, %ymm8 -vpsubw %ymm8, %ymm6, %ymm6 -vpmullw %ymm13, %ymm10, %ymm10 -vpsubw %ymm10, %ymm6, %ymm6 -vmovdqu 520(%rdi), %ymm4 -vpaddw %ymm4, %ymm5, %ymm4 -vmovdqu %ymm4, 520(%rdi) -vmovdqu 936(%rdi), %ymm4 -vpaddw %ymm4, %ymm6, %ymm4 -vmovdqu %ymm4, 936(%rdi) -vmovdqu 1352(%rdi), %ymm4 -vpaddw %ymm4, %ymm7, %ymm4 -vmovdqu %ymm4, 1352(%rdi) -vmovdqu 126(%rdi), %ymm4 -vpaddw %ymm4, %ymm8, %ymm4 -vmovdqu %ymm4, 126(%rdi) -vmovdqu 542(%rdi), %ymm4 -vpaddw %ymm4, %ymm9, %ymm4 -vmovdqu %ymm4, 542(%rdi) -vmovdqu 958(%rdi), %ymm4 -vpaddw %ymm4, %ymm10, %ymm4 -vmovdqu %ymm4, 958(%rdi) -vmovdqu 1374(%rdi), %ymm4 -vpaddw %ymm4, %ymm11, %ymm4 -vmovdqu %ymm4, 1374(%rdi) -vmovdqa 192(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm10 -vpunpckhwd const0(%rip), %ymm11, %ymm9 -vpslld $1, %ymm10, %ymm10 -vpslld $1, %ymm9, %ymm9 -vmovdqa 448(%rsp), %ymm8 -vpunpcklwd const0(%rip), %ymm8, %ymm7 -vpunpckhwd const0(%rip), %ymm8, %ymm8 -vmovdqa 704(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm7, %ymm4 -vpaddd %ymm6, %ymm8, %ymm3 -vpsubd %ymm10, %ymm4, %ymm4 -vpsubd %ymm9, %ymm3, %ymm3 -vpsubd %ymm5, %ymm7, %ymm5 -vpsubd %ymm6, %ymm8, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1728(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm8 -vpunpckhwd const0(%rip), %ymm5, %ymm7 -vpslld $1, %ymm8, %ymm8 -vpslld $1, %ymm7, %ymm7 -vpsubd %ymm8, %ymm4, %ymm4 -vpsubd %ymm7, %ymm3, %ymm3 -vpsrld $1, %ymm4, %ymm4 -vpsrld $1, %ymm3, %ymm3 -vpand mask32_to_16(%rip), %ymm4, %ymm4 -vpand mask32_to_16(%rip), %ymm3, %ymm3 -vpackusdw %ymm3, %ymm4, %ymm3 -vmovdqa 960(%rsp), %ymm4 -vpaddw 1216(%rsp), %ymm4, %ymm7 -vpsubw 1216(%rsp), %ymm4, %ymm4 -vpsrlw $2, %ymm4, %ymm4 -vpsubw %ymm6, %ymm4, %ymm4 -vpmullw %ymm14, %ymm4, %ymm4 -vpsllw $1, %ymm11, %ymm8 -vpsubw %ymm8, %ymm7, %ymm8 -vpsllw $7, %ymm5, %ymm7 -vpsubw %ymm7, %ymm8, %ymm7 -vpsrlw $3, %ymm7, %ymm7 -vpsubw %ymm3, %ymm7, %ymm7 -vmovdqa 1472(%rsp), %ymm8 -vpsubw %ymm11, %ymm8, %ymm8 -vpmullw %ymm15, %ymm5, %ymm9 -vpsubw %ymm9, %ymm8, %ymm9 -vpmullw %ymm14, %ymm7, %ymm7 -vpsubw %ymm7, %ymm3, %ymm3 -vpmullw %ymm12, %ymm7, %ymm8 -vpaddw %ymm8, %ymm3, %ymm8 -vpmullw %ymm12, %ymm8, %ymm8 -vpsubw %ymm8, %ymm9, %ymm8 -vpmullw %ymm14, %ymm8, %ymm8 -vpsubw %ymm6, %ymm8, %ymm8 -vpsrlw $3, %ymm8, %ymm8 -vpsubw %ymm4, %ymm8, %ymm8 -vpsubw %ymm8, %ymm4, %ymm4 -vpsubw %ymm4, %ymm6, %ymm6 -vpmullw %ymm13, %ymm8, %ymm8 -vpsubw %ymm8, %ymm6, %ymm6 -vmovdqu 624(%rdi), %ymm9 -vpaddw %ymm9, %ymm11, %ymm9 -vmovdqu %ymm9, 624(%rdi) -vmovdqu 1040(%rdi), %ymm9 -vpaddw %ymm9, %ymm6, %ymm9 -vmovdqu %ymm9, 1040(%rdi) -vmovdqu 1456(%rdi), %ymm9 -vpaddw %ymm9, %ymm3, %ymm9 -vmovdqu %ymm9, 1456(%rdi) -vmovdqu 230(%rdi), %ymm9 -vpaddw %ymm9, %ymm4, %ymm9 -vmovdqu %ymm9, 230(%rdi) -vmovdqu 646(%rdi), %ymm9 -vpaddw %ymm9, %ymm7, %ymm9 -vmovdqu %ymm9, 646(%rdi) -vmovdqu 1062(%rdi), %ymm9 -vpaddw %ymm9, %ymm8, %ymm9 -vmovdqu %ymm9, 1062(%rdi) -vmovdqu 1478(%rdi), %ymm9 -vpaddw %ymm9, %ymm5, %ymm9 -vmovdqu %ymm9, 1478(%rdi) -vmovdqa 224(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm8 -vpunpckhwd const0(%rip), %ymm5, %ymm7 -vpslld $1, %ymm8, %ymm8 -vpslld $1, %ymm7, %ymm7 -vmovdqa 480(%rsp), %ymm4 -vpunpcklwd const0(%rip), %ymm4, %ymm3 -vpunpckhwd const0(%rip), %ymm4, %ymm4 -vmovdqa 736(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm3, %ymm9 -vpaddd %ymm6, %ymm4, %ymm10 -vpsubd %ymm8, %ymm9, %ymm9 -vpsubd %ymm7, %ymm10, %ymm10 -vpsubd %ymm11, %ymm3, %ymm11 -vpsubd %ymm6, %ymm4, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1760(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm4 -vpunpckhwd const0(%rip), %ymm11, %ymm3 -vpslld $1, %ymm4, %ymm4 -vpslld $1, %ymm3, %ymm3 -vpsubd %ymm4, %ymm9, %ymm9 -vpsubd %ymm3, %ymm10, %ymm10 -vpsrld $1, %ymm9, %ymm9 -vpsrld $1, %ymm10, %ymm10 -vpand mask32_to_16(%rip), %ymm9, %ymm9 -vpand mask32_to_16(%rip), %ymm10, %ymm10 -vpackusdw %ymm10, %ymm9, %ymm10 -vmovdqa 992(%rsp), %ymm9 -vpaddw 1248(%rsp), %ymm9, %ymm3 -vpsubw 1248(%rsp), %ymm9, %ymm9 -vpsrlw $2, %ymm9, %ymm9 -vpsubw %ymm6, %ymm9, %ymm9 -vpmullw %ymm14, %ymm9, %ymm9 -vpsllw $1, %ymm5, %ymm4 -vpsubw %ymm4, %ymm3, %ymm4 -vpsllw $7, %ymm11, %ymm3 -vpsubw %ymm3, %ymm4, %ymm3 -vpsrlw $3, %ymm3, %ymm3 -vpsubw %ymm10, %ymm3, %ymm3 -vmovdqa 1504(%rsp), %ymm4 -vpsubw %ymm5, %ymm4, %ymm4 -vpmullw %ymm15, %ymm11, %ymm7 -vpsubw %ymm7, %ymm4, %ymm7 -vpmullw %ymm14, %ymm3, %ymm3 -vpsubw %ymm3, %ymm10, %ymm10 -vpmullw %ymm12, %ymm3, %ymm4 -vpaddw %ymm4, %ymm10, %ymm4 -vpmullw %ymm12, %ymm4, %ymm4 -vpsubw %ymm4, %ymm7, %ymm4 -vpmullw %ymm14, %ymm4, %ymm4 -vpsubw %ymm6, %ymm4, %ymm4 -vpsrlw $3, %ymm4, %ymm4 -vpsubw %ymm9, %ymm4, %ymm4 -vpsubw %ymm4, %ymm9, %ymm9 -vpsubw %ymm9, %ymm6, %ymm6 -vpmullw %ymm13, %ymm4, %ymm4 -vpsubw %ymm4, %ymm6, %ymm6 -vmovdqu 728(%rdi), %ymm7 -vpaddw %ymm7, %ymm5, %ymm7 -vmovdqu %ymm7, 728(%rdi) -vmovdqu 1144(%rdi), %ymm7 -vpaddw %ymm7, %ymm6, %ymm7 -vmovdqu %ymm7, 1144(%rdi) -vmovdqu 1560(%rdi), %ymm7 -vpaddw %ymm7, %ymm10, %ymm7 -vmovdqu %ymm7, 1560(%rdi) -vmovdqu 334(%rdi), %ymm7 -vpaddw %ymm7, %ymm9, %ymm7 -vmovdqu %ymm7, 334(%rdi) -vmovdqu 750(%rdi), %ymm7 -vpaddw %ymm7, %ymm3, %ymm7 -vmovdqu %ymm7, 750(%rdi) -vmovdqu 1166(%rdi), %ymm7 -vpaddw %ymm7, %ymm4, %ymm7 -vmovdqu %ymm7, 1166(%rdi) -vmovdqu 1582(%rdi), %ymm7 -vpaddw %ymm7, %ymm11, %ymm7 -vmovdqu %ymm7, 1582(%rdi) -vmovdqa 160(%r12), %ymm0 -vpsubw 288(%r12), %ymm0, %ymm0 -vmovdqa 672(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 416(%r12), %ymm1, %ymm1 -vpsubw 32(%r12), %ymm0, %ymm0 -vpaddw 544(%r12), %ymm0, %ymm0 -vmovdqa 928(%r12), %ymm2 -vpsubw 1056(%r12), %ymm2, %ymm2 -vmovdqa 1440(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 1184(%r12), %ymm3, %ymm3 -vpsubw 800(%r12), %ymm2, %ymm2 -vpaddw 1312(%r12), %ymm2, %ymm2 -vmovdqa 1696(%r12), %ymm4 -vpsubw 1824(%r12), %ymm4, %ymm4 -vmovdqa 2208(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 1952(%r12), %ymm5, %ymm5 -vpsubw 1568(%r12), %ymm4, %ymm4 -vpaddw 2080(%r12), %ymm4, %ymm4 -vpsubw 800(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 32(%r12), %ymm1, %ymm1 -vpaddw 1568(%r12), %ymm1, %ymm1 -vmovdqa 416(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 1952(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 1184(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 32(%r12), %ymm8 -vmovdqa 1184(%r12), %ymm9 -vmovdqa %ymm8, 0(%rsp) -vmovdqa %ymm0, 32(%rsp) -vmovdqa %ymm1, 64(%rsp) -vmovdqa %ymm7, 96(%rsp) -vmovdqa %ymm5, 128(%rsp) -vmovdqa %ymm2, 160(%rsp) -vmovdqa %ymm3, 192(%rsp) -vmovdqa %ymm9, 224(%rsp) -vmovdqa 2464(%r12), %ymm0 -vpsubw 2592(%r12), %ymm0, %ymm0 -vmovdqa 2976(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 2720(%r12), %ymm1, %ymm1 -vpsubw 2336(%r12), %ymm0, %ymm0 -vpaddw 2848(%r12), %ymm0, %ymm0 -vmovdqa 3232(%r12), %ymm2 -vpsubw 3360(%r12), %ymm2, %ymm2 -vmovdqa 3744(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 3488(%r12), %ymm3, %ymm3 -vpsubw 3104(%r12), %ymm2, %ymm2 -vpaddw 3616(%r12), %ymm2, %ymm2 -vmovdqa 4000(%r12), %ymm4 -vpsubw 4128(%r12), %ymm4, %ymm4 -vmovdqa 4512(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 4256(%r12), %ymm5, %ymm5 -vpsubw 3872(%r12), %ymm4, %ymm4 -vpaddw 4384(%r12), %ymm4, %ymm4 -vpsubw 3104(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 2336(%r12), %ymm1, %ymm1 -vpaddw 3872(%r12), %ymm1, %ymm1 -vmovdqa 2720(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 4256(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 3488(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 2336(%r12), %ymm8 -vmovdqa 3488(%r12), %ymm9 -vmovdqa %ymm8, 256(%rsp) -vmovdqa %ymm0, 288(%rsp) -vmovdqa %ymm1, 320(%rsp) -vmovdqa %ymm7, 352(%rsp) -vmovdqa %ymm5, 384(%rsp) -vmovdqa %ymm2, 416(%rsp) -vmovdqa %ymm3, 448(%rsp) -vmovdqa %ymm9, 480(%rsp) -vmovdqa 4768(%r12), %ymm0 -vpsubw 4896(%r12), %ymm0, %ymm0 -vmovdqa 5280(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 5024(%r12), %ymm1, %ymm1 -vpsubw 4640(%r12), %ymm0, %ymm0 -vpaddw 5152(%r12), %ymm0, %ymm0 -vmovdqa 5536(%r12), %ymm2 -vpsubw 5664(%r12), %ymm2, %ymm2 -vmovdqa 6048(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 5792(%r12), %ymm3, %ymm3 -vpsubw 5408(%r12), %ymm2, %ymm2 -vpaddw 5920(%r12), %ymm2, %ymm2 -vmovdqa 6304(%r12), %ymm4 -vpsubw 6432(%r12), %ymm4, %ymm4 -vmovdqa 6816(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 6560(%r12), %ymm5, %ymm5 -vpsubw 6176(%r12), %ymm4, %ymm4 -vpaddw 6688(%r12), %ymm4, %ymm4 -vpsubw 5408(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 4640(%r12), %ymm1, %ymm1 -vpaddw 6176(%r12), %ymm1, %ymm1 -vmovdqa 5024(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 6560(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 5792(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 4640(%r12), %ymm8 -vmovdqa 5792(%r12), %ymm9 -vmovdqa %ymm8, 512(%rsp) -vmovdqa %ymm0, 544(%rsp) -vmovdqa %ymm1, 576(%rsp) -vmovdqa %ymm7, 608(%rsp) -vmovdqa %ymm5, 640(%rsp) -vmovdqa %ymm2, 672(%rsp) -vmovdqa %ymm3, 704(%rsp) -vmovdqa %ymm9, 736(%rsp) -vmovdqa 7072(%r12), %ymm0 -vpsubw 7200(%r12), %ymm0, %ymm0 -vmovdqa 7584(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 7328(%r12), %ymm1, %ymm1 -vpsubw 6944(%r12), %ymm0, %ymm0 -vpaddw 7456(%r12), %ymm0, %ymm0 -vmovdqa 7840(%r12), %ymm2 -vpsubw 7968(%r12), %ymm2, %ymm2 -vmovdqa 8352(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 8096(%r12), %ymm3, %ymm3 -vpsubw 7712(%r12), %ymm2, %ymm2 -vpaddw 8224(%r12), %ymm2, %ymm2 -vmovdqa 8608(%r12), %ymm4 -vpsubw 8736(%r12), %ymm4, %ymm4 -vmovdqa 9120(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 8864(%r12), %ymm5, %ymm5 -vpsubw 8480(%r12), %ymm4, %ymm4 -vpaddw 8992(%r12), %ymm4, %ymm4 -vpsubw 7712(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 6944(%r12), %ymm1, %ymm1 -vpaddw 8480(%r12), %ymm1, %ymm1 -vmovdqa 7328(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 8864(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 8096(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 6944(%r12), %ymm8 -vmovdqa 8096(%r12), %ymm9 -vmovdqa %ymm8, 768(%rsp) -vmovdqa %ymm0, 800(%rsp) -vmovdqa %ymm1, 832(%rsp) -vmovdqa %ymm7, 864(%rsp) -vmovdqa %ymm5, 896(%rsp) -vmovdqa %ymm2, 928(%rsp) -vmovdqa %ymm3, 960(%rsp) -vmovdqa %ymm9, 992(%rsp) -vmovdqa 9376(%r12), %ymm0 -vpsubw 9504(%r12), %ymm0, %ymm0 -vmovdqa 9888(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 9632(%r12), %ymm1, %ymm1 -vpsubw 9248(%r12), %ymm0, %ymm0 -vpaddw 9760(%r12), %ymm0, %ymm0 -vmovdqa 10144(%r12), %ymm2 -vpsubw 10272(%r12), %ymm2, %ymm2 -vmovdqa 10656(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 10400(%r12), %ymm3, %ymm3 -vpsubw 10016(%r12), %ymm2, %ymm2 -vpaddw 10528(%r12), %ymm2, %ymm2 -vmovdqa 10912(%r12), %ymm4 -vpsubw 11040(%r12), %ymm4, %ymm4 -vmovdqa 11424(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 11168(%r12), %ymm5, %ymm5 -vpsubw 10784(%r12), %ymm4, %ymm4 -vpaddw 11296(%r12), %ymm4, %ymm4 -vpsubw 10016(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 9248(%r12), %ymm1, %ymm1 -vpaddw 10784(%r12), %ymm1, %ymm1 -vmovdqa 9632(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 11168(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 10400(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 9248(%r12), %ymm8 -vmovdqa 10400(%r12), %ymm9 -vmovdqa %ymm8, 1024(%rsp) -vmovdqa %ymm0, 1056(%rsp) -vmovdqa %ymm1, 1088(%rsp) -vmovdqa %ymm7, 1120(%rsp) -vmovdqa %ymm5, 1152(%rsp) -vmovdqa %ymm2, 1184(%rsp) -vmovdqa %ymm3, 1216(%rsp) -vmovdqa %ymm9, 1248(%rsp) -vmovdqa 11680(%r12), %ymm0 -vpsubw 11808(%r12), %ymm0, %ymm0 -vmovdqa 12192(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 11936(%r12), %ymm1, %ymm1 -vpsubw 11552(%r12), %ymm0, %ymm0 -vpaddw 12064(%r12), %ymm0, %ymm0 -vmovdqa 12448(%r12), %ymm2 -vpsubw 12576(%r12), %ymm2, %ymm2 -vmovdqa 12960(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 12704(%r12), %ymm3, %ymm3 -vpsubw 12320(%r12), %ymm2, %ymm2 -vpaddw 12832(%r12), %ymm2, %ymm2 -vmovdqa 13216(%r12), %ymm4 -vpsubw 13344(%r12), %ymm4, %ymm4 -vmovdqa 13728(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 13472(%r12), %ymm5, %ymm5 -vpsubw 13088(%r12), %ymm4, %ymm4 -vpaddw 13600(%r12), %ymm4, %ymm4 -vpsubw 12320(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 11552(%r12), %ymm1, %ymm1 -vpaddw 13088(%r12), %ymm1, %ymm1 -vmovdqa 11936(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 13472(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 12704(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 11552(%r12), %ymm8 -vmovdqa 12704(%r12), %ymm9 -vmovdqa %ymm8, 1280(%rsp) -vmovdqa %ymm0, 1312(%rsp) -vmovdqa %ymm1, 1344(%rsp) -vmovdqa %ymm7, 1376(%rsp) -vmovdqa %ymm5, 1408(%rsp) -vmovdqa %ymm2, 1440(%rsp) -vmovdqa %ymm3, 1472(%rsp) -vmovdqa %ymm9, 1504(%rsp) -vmovdqa 13984(%r12), %ymm0 -vpsubw 14112(%r12), %ymm0, %ymm0 -vmovdqa 14496(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 14240(%r12), %ymm1, %ymm1 -vpsubw 13856(%r12), %ymm0, %ymm0 -vpaddw 14368(%r12), %ymm0, %ymm0 -vmovdqa 14752(%r12), %ymm2 -vpsubw 14880(%r12), %ymm2, %ymm2 -vmovdqa 15264(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 15008(%r12), %ymm3, %ymm3 -vpsubw 14624(%r12), %ymm2, %ymm2 -vpaddw 15136(%r12), %ymm2, %ymm2 -vmovdqa 15520(%r12), %ymm4 -vpsubw 15648(%r12), %ymm4, %ymm4 -vmovdqa 16032(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 15776(%r12), %ymm5, %ymm5 -vpsubw 15392(%r12), %ymm4, %ymm4 -vpaddw 15904(%r12), %ymm4, %ymm4 -vpsubw 14624(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 13856(%r12), %ymm1, %ymm1 -vpaddw 15392(%r12), %ymm1, %ymm1 -vmovdqa 14240(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 15776(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 15008(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 13856(%r12), %ymm8 -vmovdqa 15008(%r12), %ymm9 -vmovdqa %ymm8, 1536(%rsp) -vmovdqa %ymm0, 1568(%rsp) -vmovdqa %ymm1, 1600(%rsp) -vmovdqa %ymm7, 1632(%rsp) -vmovdqa %ymm5, 1664(%rsp) -vmovdqa %ymm2, 1696(%rsp) -vmovdqa %ymm3, 1728(%rsp) -vmovdqa %ymm9, 1760(%rsp) -vmovdqa 0(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm4 -vpunpckhwd const0(%rip), %ymm11, %ymm3 -vpslld $1, %ymm4, %ymm4 -vpslld $1, %ymm3, %ymm3 -vmovdqa 256(%rsp), %ymm9 -vpunpcklwd const0(%rip), %ymm9, %ymm10 -vpunpckhwd const0(%rip), %ymm9, %ymm9 -vmovdqa 512(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm10, %ymm7 -vpaddd %ymm6, %ymm9, %ymm8 -vpsubd %ymm4, %ymm7, %ymm7 -vpsubd %ymm3, %ymm8, %ymm8 -vpsubd %ymm5, %ymm10, %ymm5 -vpsubd %ymm6, %ymm9, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1536(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm9 -vpunpckhwd const0(%rip), %ymm5, %ymm10 -vpslld $1, %ymm9, %ymm9 -vpslld $1, %ymm10, %ymm10 -vpsubd %ymm9, %ymm7, %ymm7 -vpsubd %ymm10, %ymm8, %ymm8 -vpsrld $1, %ymm7, %ymm7 -vpsrld $1, %ymm8, %ymm8 -vpand mask32_to_16(%rip), %ymm7, %ymm7 -vpand mask32_to_16(%rip), %ymm8, %ymm8 -vpackusdw %ymm8, %ymm7, %ymm8 -vmovdqa 768(%rsp), %ymm7 -vpaddw 1024(%rsp), %ymm7, %ymm10 -vpsubw 1024(%rsp), %ymm7, %ymm7 -vpsrlw $2, %ymm7, %ymm7 -vpsubw %ymm6, %ymm7, %ymm7 -vpmullw %ymm14, %ymm7, %ymm7 -vpsllw $1, %ymm11, %ymm9 -vpsubw %ymm9, %ymm10, %ymm9 -vpsllw $7, %ymm5, %ymm10 -vpsubw %ymm10, %ymm9, %ymm10 -vpsrlw $3, %ymm10, %ymm10 -vpsubw %ymm8, %ymm10, %ymm10 -vmovdqa 1280(%rsp), %ymm9 -vpsubw %ymm11, %ymm9, %ymm9 -vpmullw %ymm15, %ymm5, %ymm3 -vpsubw %ymm3, %ymm9, %ymm3 -vpmullw %ymm14, %ymm10, %ymm10 -vpsubw %ymm10, %ymm8, %ymm8 -vpmullw %ymm12, %ymm10, %ymm9 -vpaddw %ymm9, %ymm8, %ymm9 -vpmullw %ymm12, %ymm9, %ymm9 -vpsubw %ymm9, %ymm3, %ymm9 -vpmullw %ymm14, %ymm9, %ymm9 -vpsubw %ymm6, %ymm9, %ymm9 -vpsrlw $3, %ymm9, %ymm9 -vpsubw %ymm7, %ymm9, %ymm9 -vpsubw %ymm9, %ymm7, %ymm7 -vpsubw %ymm7, %ymm6, %ymm6 -vpmullw %ymm13, %ymm9, %ymm9 -vpsubw %ymm9, %ymm6, %ymm6 -vmovdqu 32(%rdi), %ymm3 -vpaddw %ymm3, %ymm11, %ymm3 -vmovdqu %ymm3, 32(%rdi) -vmovdqu 448(%rdi), %ymm3 -vpaddw %ymm3, %ymm6, %ymm3 -vmovdqu %ymm3, 448(%rdi) -vmovdqu 864(%rdi), %ymm3 -vpaddw %ymm3, %ymm8, %ymm3 -vmovdqu %ymm3, 864(%rdi) -vmovdqu 1280(%rdi), %ymm3 -vpaddw %ymm3, %ymm7, %ymm3 -vmovdqu %ymm3, 1280(%rdi) -vmovdqu 54(%rdi), %ymm3 -vpaddw %ymm3, %ymm10, %ymm3 -vmovdqu %ymm3, 54(%rdi) -vmovdqu 470(%rdi), %ymm3 -vpaddw %ymm3, %ymm9, %ymm3 -vmovdqu %ymm3, 470(%rdi) -vmovdqu 886(%rdi), %ymm3 -vpaddw %ymm3, %ymm5, %ymm3 -vmovdqu %ymm3, 886(%rdi) -vmovdqa 32(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm9 -vpunpckhwd const0(%rip), %ymm5, %ymm10 -vpslld $1, %ymm9, %ymm9 -vpslld $1, %ymm10, %ymm10 -vmovdqa 288(%rsp), %ymm7 -vpunpcklwd const0(%rip), %ymm7, %ymm8 -vpunpckhwd const0(%rip), %ymm7, %ymm7 -vmovdqa 544(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm8, %ymm3 -vpaddd %ymm6, %ymm7, %ymm4 -vpsubd %ymm9, %ymm3, %ymm3 -vpsubd %ymm10, %ymm4, %ymm4 -vpsubd %ymm11, %ymm8, %ymm11 -vpsubd %ymm6, %ymm7, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1568(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm7 -vpunpckhwd const0(%rip), %ymm11, %ymm8 -vpslld $1, %ymm7, %ymm7 -vpslld $1, %ymm8, %ymm8 -vpsubd %ymm7, %ymm3, %ymm3 -vpsubd %ymm8, %ymm4, %ymm4 -vpsrld $1, %ymm3, %ymm3 -vpsrld $1, %ymm4, %ymm4 -vpand mask32_to_16(%rip), %ymm3, %ymm3 -vpand mask32_to_16(%rip), %ymm4, %ymm4 -vpackusdw %ymm4, %ymm3, %ymm4 -vmovdqa 800(%rsp), %ymm3 -vpaddw 1056(%rsp), %ymm3, %ymm8 -vpsubw 1056(%rsp), %ymm3, %ymm3 -vpsrlw $2, %ymm3, %ymm3 -vpsubw %ymm6, %ymm3, %ymm3 -vpmullw %ymm14, %ymm3, %ymm3 -vpsllw $1, %ymm5, %ymm7 -vpsubw %ymm7, %ymm8, %ymm7 -vpsllw $7, %ymm11, %ymm8 -vpsubw %ymm8, %ymm7, %ymm8 -vpsrlw $3, %ymm8, %ymm8 -vpsubw %ymm4, %ymm8, %ymm8 -vmovdqa 1312(%rsp), %ymm7 -vpsubw %ymm5, %ymm7, %ymm7 -vpmullw %ymm15, %ymm11, %ymm10 -vpsubw %ymm10, %ymm7, %ymm10 -vpmullw %ymm14, %ymm8, %ymm8 -vpsubw %ymm8, %ymm4, %ymm4 -vpmullw %ymm12, %ymm8, %ymm7 -vpaddw %ymm7, %ymm4, %ymm7 -vpmullw %ymm12, %ymm7, %ymm7 -vpsubw %ymm7, %ymm10, %ymm7 -vpmullw %ymm14, %ymm7, %ymm7 -vpsubw %ymm6, %ymm7, %ymm7 -vpsrlw $3, %ymm7, %ymm7 -vpsubw %ymm3, %ymm7, %ymm7 -vpsubw %ymm7, %ymm3, %ymm3 -vpsubw %ymm3, %ymm6, %ymm6 -vpmullw %ymm13, %ymm7, %ymm7 -vpsubw %ymm7, %ymm6, %ymm6 -vmovdqu 136(%rdi), %ymm10 -vpaddw %ymm10, %ymm5, %ymm10 -vmovdqu %ymm10, 136(%rdi) -vmovdqu 552(%rdi), %ymm10 -vpaddw %ymm10, %ymm6, %ymm10 -vmovdqu %ymm10, 552(%rdi) -vmovdqu 968(%rdi), %ymm10 -vpaddw %ymm10, %ymm4, %ymm10 -vmovdqu %ymm10, 968(%rdi) -vmovdqu 1384(%rdi), %ymm10 -vpaddw %ymm10, %ymm3, %ymm10 -vmovdqu %ymm10, 1384(%rdi) -vmovdqu 158(%rdi), %ymm10 -vpaddw %ymm10, %ymm8, %ymm10 -vmovdqu %ymm10, 158(%rdi) -vmovdqu 574(%rdi), %ymm10 -vpaddw %ymm10, %ymm7, %ymm10 -vmovdqu %ymm10, 574(%rdi) -vmovdqu 990(%rdi), %ymm10 -vpaddw %ymm10, %ymm11, %ymm10 -vmovdqu %ymm10, 990(%rdi) -vmovdqa 64(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm7 -vpunpckhwd const0(%rip), %ymm11, %ymm8 -vpslld $1, %ymm7, %ymm7 -vpslld $1, %ymm8, %ymm8 -vmovdqa 320(%rsp), %ymm3 -vpunpcklwd const0(%rip), %ymm3, %ymm4 -vpunpckhwd const0(%rip), %ymm3, %ymm3 -vmovdqa 576(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm4, %ymm10 -vpaddd %ymm6, %ymm3, %ymm9 -vpsubd %ymm7, %ymm10, %ymm10 -vpsubd %ymm8, %ymm9, %ymm9 -vpsubd %ymm5, %ymm4, %ymm5 -vpsubd %ymm6, %ymm3, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1600(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm3 -vpunpckhwd const0(%rip), %ymm5, %ymm4 -vpslld $1, %ymm3, %ymm3 -vpslld $1, %ymm4, %ymm4 -vpsubd %ymm3, %ymm10, %ymm10 -vpsubd %ymm4, %ymm9, %ymm9 -vpsrld $1, %ymm10, %ymm10 -vpsrld $1, %ymm9, %ymm9 -vpand mask32_to_16(%rip), %ymm10, %ymm10 -vpand mask32_to_16(%rip), %ymm9, %ymm9 -vpackusdw %ymm9, %ymm10, %ymm9 -vmovdqa 832(%rsp), %ymm10 -vpaddw 1088(%rsp), %ymm10, %ymm4 -vpsubw 1088(%rsp), %ymm10, %ymm10 -vpsrlw $2, %ymm10, %ymm10 -vpsubw %ymm6, %ymm10, %ymm10 -vpmullw %ymm14, %ymm10, %ymm10 -vpsllw $1, %ymm11, %ymm3 -vpsubw %ymm3, %ymm4, %ymm3 -vpsllw $7, %ymm5, %ymm4 -vpsubw %ymm4, %ymm3, %ymm4 -vpsrlw $3, %ymm4, %ymm4 -vpsubw %ymm9, %ymm4, %ymm4 -vmovdqa 1344(%rsp), %ymm3 -vpsubw %ymm11, %ymm3, %ymm3 -vpmullw %ymm15, %ymm5, %ymm8 -vpsubw %ymm8, %ymm3, %ymm8 -vpmullw %ymm14, %ymm4, %ymm4 -vpsubw %ymm4, %ymm9, %ymm9 -vpmullw %ymm12, %ymm4, %ymm3 -vpaddw %ymm3, %ymm9, %ymm3 -vpmullw %ymm12, %ymm3, %ymm3 -vpsubw %ymm3, %ymm8, %ymm3 -vpmullw %ymm14, %ymm3, %ymm3 -vpsubw %ymm6, %ymm3, %ymm3 -vpsrlw $3, %ymm3, %ymm3 -vpsubw %ymm10, %ymm3, %ymm3 -vpsubw %ymm3, %ymm10, %ymm10 -vpsubw %ymm10, %ymm6, %ymm6 -vpmullw %ymm13, %ymm3, %ymm3 -vpsubw %ymm3, %ymm6, %ymm6 -vmovdqu 240(%rdi), %ymm8 -vpaddw %ymm8, %ymm11, %ymm8 -vmovdqu %ymm8, 240(%rdi) -vmovdqu 656(%rdi), %ymm8 -vpaddw %ymm8, %ymm6, %ymm8 -vmovdqu %ymm8, 656(%rdi) -vmovdqu 1072(%rdi), %ymm8 -vpaddw %ymm8, %ymm9, %ymm8 -vmovdqu %ymm8, 1072(%rdi) -vmovdqu 1488(%rdi), %ymm8 -vpaddw %ymm8, %ymm10, %ymm8 -vmovdqu %ymm8, 1488(%rdi) -vmovdqu 262(%rdi), %ymm8 -vpaddw %ymm8, %ymm4, %ymm8 -vmovdqu %ymm8, 262(%rdi) -vmovdqu 678(%rdi), %ymm8 -vpaddw %ymm8, %ymm3, %ymm8 -vmovdqu %ymm8, 678(%rdi) -vmovdqu 1094(%rdi), %ymm8 -vpaddw %ymm8, %ymm5, %ymm8 -vmovdqu %ymm8, 1094(%rdi) -vmovdqa 96(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm3 -vpunpckhwd const0(%rip), %ymm5, %ymm4 -vpslld $1, %ymm3, %ymm3 -vpslld $1, %ymm4, %ymm4 -vmovdqa 352(%rsp), %ymm10 -vpunpcklwd const0(%rip), %ymm10, %ymm9 -vpunpckhwd const0(%rip), %ymm10, %ymm10 -vmovdqa 608(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm9, %ymm8 -vpaddd %ymm6, %ymm10, %ymm7 -vpsubd %ymm3, %ymm8, %ymm8 -vpsubd %ymm4, %ymm7, %ymm7 -vpsubd %ymm11, %ymm9, %ymm11 -vpsubd %ymm6, %ymm10, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1632(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm10 -vpunpckhwd const0(%rip), %ymm11, %ymm9 -vpslld $1, %ymm10, %ymm10 -vpslld $1, %ymm9, %ymm9 -vpsubd %ymm10, %ymm8, %ymm8 -vpsubd %ymm9, %ymm7, %ymm7 -vpsrld $1, %ymm8, %ymm8 -vpsrld $1, %ymm7, %ymm7 -vpand mask32_to_16(%rip), %ymm8, %ymm8 -vpand mask32_to_16(%rip), %ymm7, %ymm7 -vpackusdw %ymm7, %ymm8, %ymm7 -vmovdqa 864(%rsp), %ymm8 -vpaddw 1120(%rsp), %ymm8, %ymm9 -vpsubw 1120(%rsp), %ymm8, %ymm8 -vpsrlw $2, %ymm8, %ymm8 -vpsubw %ymm6, %ymm8, %ymm8 -vpmullw %ymm14, %ymm8, %ymm8 -vpsllw $1, %ymm5, %ymm10 -vpsubw %ymm10, %ymm9, %ymm10 -vpsllw $7, %ymm11, %ymm9 -vpsubw %ymm9, %ymm10, %ymm9 -vpsrlw $3, %ymm9, %ymm9 -vpsubw %ymm7, %ymm9, %ymm9 -vmovdqa 1376(%rsp), %ymm10 -vpsubw %ymm5, %ymm10, %ymm10 -vpmullw %ymm15, %ymm11, %ymm4 -vpsubw %ymm4, %ymm10, %ymm4 -vpmullw %ymm14, %ymm9, %ymm9 -vpsubw %ymm9, %ymm7, %ymm7 -vpmullw %ymm12, %ymm9, %ymm10 -vpaddw %ymm10, %ymm7, %ymm10 -vpmullw %ymm12, %ymm10, %ymm10 -vpsubw %ymm10, %ymm4, %ymm10 -vpmullw %ymm14, %ymm10, %ymm10 -vpsubw %ymm6, %ymm10, %ymm10 -vpsrlw $3, %ymm10, %ymm10 -vpsubw %ymm8, %ymm10, %ymm10 -vpsubw %ymm10, %ymm8, %ymm8 -vpsubw %ymm8, %ymm6, %ymm6 -vpmullw %ymm13, %ymm10, %ymm10 -vpsubw %ymm10, %ymm6, %ymm6 -vmovdqu 344(%rdi), %ymm4 -vpaddw %ymm4, %ymm5, %ymm4 -vmovdqu %ymm4, 344(%rdi) -vmovdqu 760(%rdi), %ymm4 -vpaddw %ymm4, %ymm6, %ymm4 -vmovdqu %ymm4, 760(%rdi) -vmovdqu 1176(%rdi), %ymm4 -vpaddw %ymm4, %ymm7, %ymm4 -vmovdqu %ymm4, 1176(%rdi) -vmovdqu 1592(%rdi), %ymm4 -vpaddw %ymm4, %ymm8, %ymm4 -vmovdqu %ymm4, 1592(%rdi) -vmovdqu 366(%rdi), %ymm4 -vpaddw %ymm4, %ymm9, %ymm4 -vmovdqu %ymm4, 366(%rdi) -vmovdqu 782(%rdi), %ymm4 -vpaddw %ymm4, %ymm10, %ymm4 -vmovdqu %ymm4, 782(%rdi) -vmovdqu 1198(%rdi), %ymm4 -vpaddw %ymm4, %ymm11, %ymm4 -vmovdqu %ymm4, 1198(%rdi) -vmovdqa 128(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm10 -vpunpckhwd const0(%rip), %ymm11, %ymm9 -vpslld $1, %ymm10, %ymm10 -vpslld $1, %ymm9, %ymm9 -vmovdqa 384(%rsp), %ymm8 -vpunpcklwd const0(%rip), %ymm8, %ymm7 -vpunpckhwd const0(%rip), %ymm8, %ymm8 -vmovdqa 640(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm7, %ymm4 -vpaddd %ymm6, %ymm8, %ymm3 -vpsubd %ymm10, %ymm4, %ymm4 -vpsubd %ymm9, %ymm3, %ymm3 -vpsubd %ymm5, %ymm7, %ymm5 -vpsubd %ymm6, %ymm8, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1664(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm8 -vpunpckhwd const0(%rip), %ymm5, %ymm7 -vpslld $1, %ymm8, %ymm8 -vpslld $1, %ymm7, %ymm7 -vpsubd %ymm8, %ymm4, %ymm4 -vpsubd %ymm7, %ymm3, %ymm3 -vpsrld $1, %ymm4, %ymm4 -vpsrld $1, %ymm3, %ymm3 -vpand mask32_to_16(%rip), %ymm4, %ymm4 -vpand mask32_to_16(%rip), %ymm3, %ymm3 -vpackusdw %ymm3, %ymm4, %ymm3 -vmovdqa 896(%rsp), %ymm4 -vpaddw 1152(%rsp), %ymm4, %ymm7 -vpsubw 1152(%rsp), %ymm4, %ymm4 -vpsrlw $2, %ymm4, %ymm4 -vpsubw %ymm6, %ymm4, %ymm4 -vpmullw %ymm14, %ymm4, %ymm4 -vpsllw $1, %ymm11, %ymm8 -vpsubw %ymm8, %ymm7, %ymm8 -vpsllw $7, %ymm5, %ymm7 -vpsubw %ymm7, %ymm8, %ymm7 -vpsrlw $3, %ymm7, %ymm7 -vpsubw %ymm3, %ymm7, %ymm7 -vmovdqa 1408(%rsp), %ymm8 -vpsubw %ymm11, %ymm8, %ymm8 -vpmullw %ymm15, %ymm5, %ymm9 -vpsubw %ymm9, %ymm8, %ymm9 -vpmullw %ymm14, %ymm7, %ymm7 -vpsubw %ymm7, %ymm3, %ymm3 -vpmullw %ymm12, %ymm7, %ymm8 -vpaddw %ymm8, %ymm3, %ymm8 -vpmullw %ymm12, %ymm8, %ymm8 -vpsubw %ymm8, %ymm9, %ymm8 -vpmullw %ymm14, %ymm8, %ymm8 -vpsubw %ymm6, %ymm8, %ymm8 -vpsrlw $3, %ymm8, %ymm8 -vpsubw %ymm4, %ymm8, %ymm8 -vpsubw %ymm8, %ymm4, %ymm4 -vpsubw %ymm4, %ymm6, %ymm6 -vpmullw %ymm13, %ymm8, %ymm8 -vpsubw %ymm8, %ymm6, %ymm6 -vmovdqu 448(%rdi), %ymm9 -vpaddw %ymm9, %ymm11, %ymm9 -vmovdqu %ymm9, 448(%rdi) -vmovdqu 864(%rdi), %ymm9 -vpaddw %ymm9, %ymm6, %ymm9 -vmovdqu %ymm9, 864(%rdi) -vmovdqu 1280(%rdi), %ymm9 -vpaddw %ymm9, %ymm3, %ymm9 -vmovdqu %ymm9, 1280(%rdi) -vmovdqu 54(%rdi), %ymm9 -vpaddw %ymm9, %ymm4, %ymm9 -vmovdqu %ymm9, 54(%rdi) -vmovdqu 470(%rdi), %ymm9 -vpaddw %ymm9, %ymm7, %ymm9 -vmovdqu %ymm9, 470(%rdi) -vmovdqu 886(%rdi), %ymm9 -vpaddw %ymm9, %ymm8, %ymm9 -vmovdqu %ymm9, 886(%rdi) -vmovdqu 1302(%rdi), %ymm9 -vpaddw %ymm9, %ymm5, %ymm9 -vmovdqu %ymm9, 1302(%rdi) -vmovdqa 160(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm8 -vpunpckhwd const0(%rip), %ymm5, %ymm7 -vpslld $1, %ymm8, %ymm8 -vpslld $1, %ymm7, %ymm7 -vmovdqa 416(%rsp), %ymm4 -vpunpcklwd const0(%rip), %ymm4, %ymm3 -vpunpckhwd const0(%rip), %ymm4, %ymm4 -vmovdqa 672(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm3, %ymm9 -vpaddd %ymm6, %ymm4, %ymm10 -vpsubd %ymm8, %ymm9, %ymm9 -vpsubd %ymm7, %ymm10, %ymm10 -vpsubd %ymm11, %ymm3, %ymm11 -vpsubd %ymm6, %ymm4, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1696(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm4 -vpunpckhwd const0(%rip), %ymm11, %ymm3 -vpslld $1, %ymm4, %ymm4 -vpslld $1, %ymm3, %ymm3 -vpsubd %ymm4, %ymm9, %ymm9 -vpsubd %ymm3, %ymm10, %ymm10 -vpsrld $1, %ymm9, %ymm9 -vpsrld $1, %ymm10, %ymm10 -vpand mask32_to_16(%rip), %ymm9, %ymm9 -vpand mask32_to_16(%rip), %ymm10, %ymm10 -vpackusdw %ymm10, %ymm9, %ymm10 -vmovdqa 928(%rsp), %ymm9 -vpaddw 1184(%rsp), %ymm9, %ymm3 -vpsubw 1184(%rsp), %ymm9, %ymm9 -vpsrlw $2, %ymm9, %ymm9 -vpsubw %ymm6, %ymm9, %ymm9 -vpmullw %ymm14, %ymm9, %ymm9 -vpsllw $1, %ymm5, %ymm4 -vpsubw %ymm4, %ymm3, %ymm4 -vpsllw $7, %ymm11, %ymm3 -vpsubw %ymm3, %ymm4, %ymm3 -vpsrlw $3, %ymm3, %ymm3 -vpsubw %ymm10, %ymm3, %ymm3 -vmovdqa 1440(%rsp), %ymm4 -vpsubw %ymm5, %ymm4, %ymm4 -vpmullw %ymm15, %ymm11, %ymm7 -vpsubw %ymm7, %ymm4, %ymm7 -vpmullw %ymm14, %ymm3, %ymm3 -vpsubw %ymm3, %ymm10, %ymm10 -vpmullw %ymm12, %ymm3, %ymm4 -vpaddw %ymm4, %ymm10, %ymm4 -vpmullw %ymm12, %ymm4, %ymm4 -vpsubw %ymm4, %ymm7, %ymm4 -vpmullw %ymm14, %ymm4, %ymm4 -vpsubw %ymm6, %ymm4, %ymm4 -vpsrlw $3, %ymm4, %ymm4 -vpsubw %ymm9, %ymm4, %ymm4 -vpsubw %ymm4, %ymm9, %ymm9 -vpsubw %ymm9, %ymm6, %ymm6 -vpmullw %ymm13, %ymm4, %ymm4 -vpsubw %ymm4, %ymm6, %ymm6 -vmovdqu 552(%rdi), %ymm7 -vpaddw %ymm7, %ymm5, %ymm7 -vmovdqu %ymm7, 552(%rdi) -vmovdqu 968(%rdi), %ymm7 -vpaddw %ymm7, %ymm6, %ymm7 -vmovdqu %ymm7, 968(%rdi) -vmovdqu 1384(%rdi), %ymm7 -vpaddw %ymm7, %ymm10, %ymm7 -vmovdqu %ymm7, 1384(%rdi) -vmovdqu 158(%rdi), %ymm7 -vpaddw %ymm7, %ymm9, %ymm7 -vmovdqu %ymm7, 158(%rdi) -vmovdqu 574(%rdi), %ymm7 -vpaddw %ymm7, %ymm3, %ymm7 -vmovdqu %ymm7, 574(%rdi) -vmovdqu 990(%rdi), %ymm7 -vpaddw %ymm7, %ymm4, %ymm7 -vmovdqu %ymm7, 990(%rdi) -vmovdqu 1406(%rdi), %ymm7 -vpaddw %ymm7, %ymm11, %ymm7 -vmovdqu %ymm7, 1406(%rdi) -vmovdqa 192(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm4 -vpunpckhwd const0(%rip), %ymm11, %ymm3 -vpslld $1, %ymm4, %ymm4 -vpslld $1, %ymm3, %ymm3 -vmovdqa 448(%rsp), %ymm9 -vpunpcklwd const0(%rip), %ymm9, %ymm10 -vpunpckhwd const0(%rip), %ymm9, %ymm9 -vmovdqa 704(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm10, %ymm7 -vpaddd %ymm6, %ymm9, %ymm8 -vpsubd %ymm4, %ymm7, %ymm7 -vpsubd %ymm3, %ymm8, %ymm8 -vpsubd %ymm5, %ymm10, %ymm5 -vpsubd %ymm6, %ymm9, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1728(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm9 -vpunpckhwd const0(%rip), %ymm5, %ymm10 -vpslld $1, %ymm9, %ymm9 -vpslld $1, %ymm10, %ymm10 -vpsubd %ymm9, %ymm7, %ymm7 -vpsubd %ymm10, %ymm8, %ymm8 -vpsrld $1, %ymm7, %ymm7 -vpsrld $1, %ymm8, %ymm8 -vpand mask32_to_16(%rip), %ymm7, %ymm7 -vpand mask32_to_16(%rip), %ymm8, %ymm8 -vpackusdw %ymm8, %ymm7, %ymm8 -vmovdqa 960(%rsp), %ymm7 -vpaddw 1216(%rsp), %ymm7, %ymm10 -vpsubw 1216(%rsp), %ymm7, %ymm7 -vpsrlw $2, %ymm7, %ymm7 -vpsubw %ymm6, %ymm7, %ymm7 -vpmullw %ymm14, %ymm7, %ymm7 -vpsllw $1, %ymm11, %ymm9 -vpsubw %ymm9, %ymm10, %ymm9 -vpsllw $7, %ymm5, %ymm10 -vpsubw %ymm10, %ymm9, %ymm10 -vpsrlw $3, %ymm10, %ymm10 -vpsubw %ymm8, %ymm10, %ymm10 -vmovdqa 1472(%rsp), %ymm9 -vpsubw %ymm11, %ymm9, %ymm9 -vpmullw %ymm15, %ymm5, %ymm3 -vpsubw %ymm3, %ymm9, %ymm3 -vpmullw %ymm14, %ymm10, %ymm10 -vpsubw %ymm10, %ymm8, %ymm8 -vpmullw %ymm12, %ymm10, %ymm9 -vpaddw %ymm9, %ymm8, %ymm9 -vpmullw %ymm12, %ymm9, %ymm9 -vpsubw %ymm9, %ymm3, %ymm9 -vpmullw %ymm14, %ymm9, %ymm9 -vpsubw %ymm6, %ymm9, %ymm9 -vpsrlw $3, %ymm9, %ymm9 -vpsubw %ymm7, %ymm9, %ymm9 -vpsubw %ymm9, %ymm7, %ymm7 -vpsubw %ymm7, %ymm6, %ymm6 -vpmullw %ymm13, %ymm9, %ymm9 -vpsubw %ymm9, %ymm6, %ymm6 -vmovdqu 656(%rdi), %ymm3 -vpaddw %ymm3, %ymm11, %ymm3 -vmovdqu %ymm3, 656(%rdi) -vmovdqu 1072(%rdi), %ymm3 -vpaddw %ymm3, %ymm6, %ymm3 -vmovdqu %ymm3, 1072(%rdi) -vmovdqu 1488(%rdi), %ymm3 -vpaddw %ymm3, %ymm8, %ymm3 -vmovdqu %ymm3, 1488(%rdi) -vmovdqu 262(%rdi), %ymm3 -vpaddw %ymm3, %ymm7, %ymm3 -vmovdqu %ymm3, 262(%rdi) -vmovdqu 678(%rdi), %ymm3 -vpaddw %ymm3, %ymm10, %ymm3 -vmovdqu %ymm3, 678(%rdi) -vmovdqu 1094(%rdi), %ymm3 -vpaddw %ymm3, %ymm9, %ymm3 -vmovdqu %ymm3, 1094(%rdi) -vmovdqu 1510(%rdi), %ymm3 -vpaddw %ymm3, %ymm5, %ymm3 -vmovdqu %ymm3, 1510(%rdi) -vmovdqa 224(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm9 -vpunpckhwd const0(%rip), %ymm5, %ymm10 -vpslld $1, %ymm9, %ymm9 -vpslld $1, %ymm10, %ymm10 -vmovdqa 480(%rsp), %ymm7 -vpunpcklwd const0(%rip), %ymm7, %ymm8 -vpunpckhwd const0(%rip), %ymm7, %ymm7 -vmovdqa 736(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm8, %ymm3 -vpaddd %ymm6, %ymm7, %ymm4 -vpsubd %ymm9, %ymm3, %ymm3 -vpsubd %ymm10, %ymm4, %ymm4 -vpsubd %ymm11, %ymm8, %ymm11 -vpsubd %ymm6, %ymm7, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1760(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm7 -vpunpckhwd const0(%rip), %ymm11, %ymm8 -vpslld $1, %ymm7, %ymm7 -vpslld $1, %ymm8, %ymm8 -vpsubd %ymm7, %ymm3, %ymm3 -vpsubd %ymm8, %ymm4, %ymm4 -vpsrld $1, %ymm3, %ymm3 -vpsrld $1, %ymm4, %ymm4 -vpand mask32_to_16(%rip), %ymm3, %ymm3 -vpand mask32_to_16(%rip), %ymm4, %ymm4 -vpackusdw %ymm4, %ymm3, %ymm4 -vmovdqa 992(%rsp), %ymm3 -vpaddw 1248(%rsp), %ymm3, %ymm8 -vpsubw 1248(%rsp), %ymm3, %ymm3 -vpsrlw $2, %ymm3, %ymm3 -vpsubw %ymm6, %ymm3, %ymm3 -vpmullw %ymm14, %ymm3, %ymm3 -vpsllw $1, %ymm5, %ymm7 -vpsubw %ymm7, %ymm8, %ymm7 -vpsllw $7, %ymm11, %ymm8 -vpsubw %ymm8, %ymm7, %ymm8 -vpsrlw $3, %ymm8, %ymm8 -vpsubw %ymm4, %ymm8, %ymm8 -vmovdqa 1504(%rsp), %ymm7 -vpsubw %ymm5, %ymm7, %ymm7 -vpmullw %ymm15, %ymm11, %ymm10 -vpsubw %ymm10, %ymm7, %ymm10 -vpmullw %ymm14, %ymm8, %ymm8 -vpsubw %ymm8, %ymm4, %ymm4 -vpmullw %ymm12, %ymm8, %ymm7 -vpaddw %ymm7, %ymm4, %ymm7 -vpmullw %ymm12, %ymm7, %ymm7 -vpsubw %ymm7, %ymm10, %ymm7 -vpmullw %ymm14, %ymm7, %ymm7 -vpsubw %ymm6, %ymm7, %ymm7 -vpsrlw $3, %ymm7, %ymm7 -vpsubw %ymm3, %ymm7, %ymm7 -vpsubw %ymm7, %ymm3, %ymm3 -vpsubw %ymm3, %ymm6, %ymm6 -vpmullw %ymm13, %ymm7, %ymm7 -vpsubw %ymm7, %ymm6, %ymm6 -vmovdqu 760(%rdi), %ymm10 -vpaddw %ymm10, %ymm5, %ymm10 -vmovdqu %ymm10, 760(%rdi) -vmovdqu 1176(%rdi), %ymm10 -vpaddw %ymm10, %ymm6, %ymm10 -vmovdqu %ymm10, 1176(%rdi) -vmovdqu 1592(%rdi), %ymm10 -vpaddw %ymm10, %ymm4, %ymm10 -vmovdqu %ymm10, 1592(%rdi) -vmovdqu 366(%rdi), %ymm10 -vpaddw %ymm10, %ymm3, %ymm10 -vmovdqu %ymm10, 366(%rdi) -vmovdqu 782(%rdi), %ymm10 -vpaddw %ymm10, %ymm8, %ymm10 -vmovdqu %ymm10, 782(%rdi) -vmovdqu 1198(%rdi), %ymm10 -vpaddw %ymm10, %ymm7, %ymm10 -vmovdqu %ymm10, 1198(%rdi) -vmovdqu 1614(%rdi), %ymm10 -vpaddw %ymm10, %ymm11, %ymm10 -vmovdqu %ymm10, 1614(%rdi) -vmovdqa 192(%r12), %ymm0 -vpsubw 320(%r12), %ymm0, %ymm0 -vmovdqa 704(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 448(%r12), %ymm1, %ymm1 -vpsubw 64(%r12), %ymm0, %ymm0 -vpaddw 576(%r12), %ymm0, %ymm0 -vmovdqa 960(%r12), %ymm2 -vpsubw 1088(%r12), %ymm2, %ymm2 -vmovdqa 1472(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 1216(%r12), %ymm3, %ymm3 -vpsubw 832(%r12), %ymm2, %ymm2 -vpaddw 1344(%r12), %ymm2, %ymm2 -vmovdqa 1728(%r12), %ymm4 -vpsubw 1856(%r12), %ymm4, %ymm4 -vmovdqa 2240(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 1984(%r12), %ymm5, %ymm5 -vpsubw 1600(%r12), %ymm4, %ymm4 -vpaddw 2112(%r12), %ymm4, %ymm4 -vpsubw 832(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 64(%r12), %ymm1, %ymm1 -vpaddw 1600(%r12), %ymm1, %ymm1 -vmovdqa 448(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 1984(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 1216(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 64(%r12), %ymm8 -vmovdqa 1216(%r12), %ymm9 -vmovdqa %ymm8, 0(%rsp) -vmovdqa %ymm0, 32(%rsp) -vmovdqa %ymm1, 64(%rsp) -vmovdqa %ymm7, 96(%rsp) -vmovdqa %ymm5, 128(%rsp) -vmovdqa %ymm2, 160(%rsp) -vmovdqa %ymm3, 192(%rsp) -vmovdqa %ymm9, 224(%rsp) -vmovdqa 2496(%r12), %ymm0 -vpsubw 2624(%r12), %ymm0, %ymm0 -vmovdqa 3008(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 2752(%r12), %ymm1, %ymm1 -vpsubw 2368(%r12), %ymm0, %ymm0 -vpaddw 2880(%r12), %ymm0, %ymm0 -vmovdqa 3264(%r12), %ymm2 -vpsubw 3392(%r12), %ymm2, %ymm2 -vmovdqa 3776(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 3520(%r12), %ymm3, %ymm3 -vpsubw 3136(%r12), %ymm2, %ymm2 -vpaddw 3648(%r12), %ymm2, %ymm2 -vmovdqa 4032(%r12), %ymm4 -vpsubw 4160(%r12), %ymm4, %ymm4 -vmovdqa 4544(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 4288(%r12), %ymm5, %ymm5 -vpsubw 3904(%r12), %ymm4, %ymm4 -vpaddw 4416(%r12), %ymm4, %ymm4 -vpsubw 3136(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 2368(%r12), %ymm1, %ymm1 -vpaddw 3904(%r12), %ymm1, %ymm1 -vmovdqa 2752(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 4288(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 3520(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 2368(%r12), %ymm8 -vmovdqa 3520(%r12), %ymm9 -vmovdqa %ymm8, 256(%rsp) -vmovdqa %ymm0, 288(%rsp) -vmovdqa %ymm1, 320(%rsp) -vmovdqa %ymm7, 352(%rsp) -vmovdqa %ymm5, 384(%rsp) -vmovdqa %ymm2, 416(%rsp) -vmovdqa %ymm3, 448(%rsp) -vmovdqa %ymm9, 480(%rsp) -vmovdqa 4800(%r12), %ymm0 -vpsubw 4928(%r12), %ymm0, %ymm0 -vmovdqa 5312(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 5056(%r12), %ymm1, %ymm1 -vpsubw 4672(%r12), %ymm0, %ymm0 -vpaddw 5184(%r12), %ymm0, %ymm0 -vmovdqa 5568(%r12), %ymm2 -vpsubw 5696(%r12), %ymm2, %ymm2 -vmovdqa 6080(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 5824(%r12), %ymm3, %ymm3 -vpsubw 5440(%r12), %ymm2, %ymm2 -vpaddw 5952(%r12), %ymm2, %ymm2 -vmovdqa 6336(%r12), %ymm4 -vpsubw 6464(%r12), %ymm4, %ymm4 -vmovdqa 6848(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 6592(%r12), %ymm5, %ymm5 -vpsubw 6208(%r12), %ymm4, %ymm4 -vpaddw 6720(%r12), %ymm4, %ymm4 -vpsubw 5440(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 4672(%r12), %ymm1, %ymm1 -vpaddw 6208(%r12), %ymm1, %ymm1 -vmovdqa 5056(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 6592(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 5824(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 4672(%r12), %ymm8 -vmovdqa 5824(%r12), %ymm9 -vmovdqa %ymm8, 512(%rsp) -vmovdqa %ymm0, 544(%rsp) -vmovdqa %ymm1, 576(%rsp) -vmovdqa %ymm7, 608(%rsp) -vmovdqa %ymm5, 640(%rsp) -vmovdqa %ymm2, 672(%rsp) -vmovdqa %ymm3, 704(%rsp) -vmovdqa %ymm9, 736(%rsp) -vmovdqa 7104(%r12), %ymm0 -vpsubw 7232(%r12), %ymm0, %ymm0 -vmovdqa 7616(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 7360(%r12), %ymm1, %ymm1 -vpsubw 6976(%r12), %ymm0, %ymm0 -vpaddw 7488(%r12), %ymm0, %ymm0 -vmovdqa 7872(%r12), %ymm2 -vpsubw 8000(%r12), %ymm2, %ymm2 -vmovdqa 8384(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 8128(%r12), %ymm3, %ymm3 -vpsubw 7744(%r12), %ymm2, %ymm2 -vpaddw 8256(%r12), %ymm2, %ymm2 -vmovdqa 8640(%r12), %ymm4 -vpsubw 8768(%r12), %ymm4, %ymm4 -vmovdqa 9152(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 8896(%r12), %ymm5, %ymm5 -vpsubw 8512(%r12), %ymm4, %ymm4 -vpaddw 9024(%r12), %ymm4, %ymm4 -vpsubw 7744(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 6976(%r12), %ymm1, %ymm1 -vpaddw 8512(%r12), %ymm1, %ymm1 -vmovdqa 7360(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 8896(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 8128(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 6976(%r12), %ymm8 -vmovdqa 8128(%r12), %ymm9 -vmovdqa %ymm8, 768(%rsp) -vmovdqa %ymm0, 800(%rsp) -vmovdqa %ymm1, 832(%rsp) -vmovdqa %ymm7, 864(%rsp) -vmovdqa %ymm5, 896(%rsp) -vmovdqa %ymm2, 928(%rsp) -vmovdqa %ymm3, 960(%rsp) -vmovdqa %ymm9, 992(%rsp) -vmovdqa 9408(%r12), %ymm0 -vpsubw 9536(%r12), %ymm0, %ymm0 -vmovdqa 9920(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 9664(%r12), %ymm1, %ymm1 -vpsubw 9280(%r12), %ymm0, %ymm0 -vpaddw 9792(%r12), %ymm0, %ymm0 -vmovdqa 10176(%r12), %ymm2 -vpsubw 10304(%r12), %ymm2, %ymm2 -vmovdqa 10688(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 10432(%r12), %ymm3, %ymm3 -vpsubw 10048(%r12), %ymm2, %ymm2 -vpaddw 10560(%r12), %ymm2, %ymm2 -vmovdqa 10944(%r12), %ymm4 -vpsubw 11072(%r12), %ymm4, %ymm4 -vmovdqa 11456(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 11200(%r12), %ymm5, %ymm5 -vpsubw 10816(%r12), %ymm4, %ymm4 -vpaddw 11328(%r12), %ymm4, %ymm4 -vpsubw 10048(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 9280(%r12), %ymm1, %ymm1 -vpaddw 10816(%r12), %ymm1, %ymm1 -vmovdqa 9664(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 11200(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 10432(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 9280(%r12), %ymm8 -vmovdqa 10432(%r12), %ymm9 -vmovdqa %ymm8, 1024(%rsp) -vmovdqa %ymm0, 1056(%rsp) -vmovdqa %ymm1, 1088(%rsp) -vmovdqa %ymm7, 1120(%rsp) -vmovdqa %ymm5, 1152(%rsp) -vmovdqa %ymm2, 1184(%rsp) -vmovdqa %ymm3, 1216(%rsp) -vmovdqa %ymm9, 1248(%rsp) -vmovdqa 11712(%r12), %ymm0 -vpsubw 11840(%r12), %ymm0, %ymm0 -vmovdqa 12224(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 11968(%r12), %ymm1, %ymm1 -vpsubw 11584(%r12), %ymm0, %ymm0 -vpaddw 12096(%r12), %ymm0, %ymm0 -vmovdqa 12480(%r12), %ymm2 -vpsubw 12608(%r12), %ymm2, %ymm2 -vmovdqa 12992(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 12736(%r12), %ymm3, %ymm3 -vpsubw 12352(%r12), %ymm2, %ymm2 -vpaddw 12864(%r12), %ymm2, %ymm2 -vmovdqa 13248(%r12), %ymm4 -vpsubw 13376(%r12), %ymm4, %ymm4 -vmovdqa 13760(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 13504(%r12), %ymm5, %ymm5 -vpsubw 13120(%r12), %ymm4, %ymm4 -vpaddw 13632(%r12), %ymm4, %ymm4 -vpsubw 12352(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 11584(%r12), %ymm1, %ymm1 -vpaddw 13120(%r12), %ymm1, %ymm1 -vmovdqa 11968(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 13504(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 12736(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 11584(%r12), %ymm8 -vmovdqa 12736(%r12), %ymm9 -vmovdqa %ymm8, 1280(%rsp) -vmovdqa %ymm0, 1312(%rsp) -vmovdqa %ymm1, 1344(%rsp) -vmovdqa %ymm7, 1376(%rsp) -vmovdqa %ymm5, 1408(%rsp) -vmovdqa %ymm2, 1440(%rsp) -vmovdqa %ymm3, 1472(%rsp) -vmovdqa %ymm9, 1504(%rsp) -vmovdqa 14016(%r12), %ymm0 -vpsubw 14144(%r12), %ymm0, %ymm0 -vmovdqa 14528(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 14272(%r12), %ymm1, %ymm1 -vpsubw 13888(%r12), %ymm0, %ymm0 -vpaddw 14400(%r12), %ymm0, %ymm0 -vmovdqa 14784(%r12), %ymm2 -vpsubw 14912(%r12), %ymm2, %ymm2 -vmovdqa 15296(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 15040(%r12), %ymm3, %ymm3 -vpsubw 14656(%r12), %ymm2, %ymm2 -vpaddw 15168(%r12), %ymm2, %ymm2 -vmovdqa 15552(%r12), %ymm4 -vpsubw 15680(%r12), %ymm4, %ymm4 -vmovdqa 16064(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 15808(%r12), %ymm5, %ymm5 -vpsubw 15424(%r12), %ymm4, %ymm4 -vpaddw 15936(%r12), %ymm4, %ymm4 -vpsubw 14656(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 13888(%r12), %ymm1, %ymm1 -vpaddw 15424(%r12), %ymm1, %ymm1 -vmovdqa 14272(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 15808(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 15040(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 13888(%r12), %ymm8 -vmovdqa 15040(%r12), %ymm9 -vmovdqa %ymm8, 1536(%rsp) -vmovdqa %ymm0, 1568(%rsp) -vmovdqa %ymm1, 1600(%rsp) -vmovdqa %ymm7, 1632(%rsp) -vmovdqa %ymm5, 1664(%rsp) -vmovdqa %ymm2, 1696(%rsp) -vmovdqa %ymm3, 1728(%rsp) -vmovdqa %ymm9, 1760(%rsp) -vmovdqa 0(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm7 -vpunpckhwd const0(%rip), %ymm11, %ymm8 -vpslld $1, %ymm7, %ymm7 -vpslld $1, %ymm8, %ymm8 -vmovdqa 256(%rsp), %ymm3 -vpunpcklwd const0(%rip), %ymm3, %ymm4 -vpunpckhwd const0(%rip), %ymm3, %ymm3 -vmovdqa 512(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm4, %ymm10 -vpaddd %ymm6, %ymm3, %ymm9 -vpsubd %ymm7, %ymm10, %ymm10 -vpsubd %ymm8, %ymm9, %ymm9 -vpsubd %ymm5, %ymm4, %ymm5 -vpsubd %ymm6, %ymm3, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1536(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm3 -vpunpckhwd const0(%rip), %ymm5, %ymm4 -vpslld $1, %ymm3, %ymm3 -vpslld $1, %ymm4, %ymm4 -vpsubd %ymm3, %ymm10, %ymm10 -vpsubd %ymm4, %ymm9, %ymm9 -vpsrld $1, %ymm10, %ymm10 -vpsrld $1, %ymm9, %ymm9 -vpand mask32_to_16(%rip), %ymm10, %ymm10 -vpand mask32_to_16(%rip), %ymm9, %ymm9 -vpackusdw %ymm9, %ymm10, %ymm9 -vmovdqa 768(%rsp), %ymm10 -vpaddw 1024(%rsp), %ymm10, %ymm4 -vpsubw 1024(%rsp), %ymm10, %ymm10 -vpsrlw $2, %ymm10, %ymm10 -vpsubw %ymm6, %ymm10, %ymm10 -vpmullw %ymm14, %ymm10, %ymm10 -vpsllw $1, %ymm11, %ymm3 -vpsubw %ymm3, %ymm4, %ymm3 -vpsllw $7, %ymm5, %ymm4 -vpsubw %ymm4, %ymm3, %ymm4 -vpsrlw $3, %ymm4, %ymm4 -vpsubw %ymm9, %ymm4, %ymm4 -vmovdqa 1280(%rsp), %ymm3 -vpsubw %ymm11, %ymm3, %ymm3 -vpmullw %ymm15, %ymm5, %ymm8 -vpsubw %ymm8, %ymm3, %ymm8 -vpmullw %ymm14, %ymm4, %ymm4 -vpsubw %ymm4, %ymm9, %ymm9 -vpmullw %ymm12, %ymm4, %ymm3 -vpaddw %ymm3, %ymm9, %ymm3 -vpmullw %ymm12, %ymm3, %ymm3 -vpsubw %ymm3, %ymm8, %ymm3 -vpmullw %ymm14, %ymm3, %ymm3 -vpsubw %ymm6, %ymm3, %ymm3 -vpsrlw $3, %ymm3, %ymm3 -vpsubw %ymm10, %ymm3, %ymm3 -vpsubw %ymm3, %ymm10, %ymm10 -vpsubw %ymm10, %ymm6, %ymm6 -vpmullw %ymm13, %ymm3, %ymm3 -vpsubw %ymm3, %ymm6, %ymm6 -vmovdqu 64(%rdi), %ymm8 -vpaddw %ymm8, %ymm11, %ymm8 -vmovdqu %ymm8, 64(%rdi) -vmovdqu 480(%rdi), %ymm8 -vpaddw %ymm8, %ymm6, %ymm8 -vmovdqu %ymm8, 480(%rdi) -vmovdqu 896(%rdi), %ymm8 -vpaddw %ymm8, %ymm9, %ymm8 -vmovdqu %ymm8, 896(%rdi) -vmovdqu 1312(%rdi), %ymm8 -vpaddw %ymm8, %ymm10, %ymm8 -vmovdqu %ymm8, 1312(%rdi) -vmovdqu 86(%rdi), %ymm8 -vpaddw %ymm8, %ymm4, %ymm8 -vmovdqu %ymm8, 86(%rdi) -vmovdqu 502(%rdi), %ymm8 -vpaddw %ymm8, %ymm3, %ymm8 -vmovdqu %ymm8, 502(%rdi) -vmovdqu 918(%rdi), %ymm8 -vpaddw %ymm8, %ymm5, %ymm8 -vmovdqu %ymm8, 918(%rdi) -vmovdqa 32(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm3 -vpunpckhwd const0(%rip), %ymm5, %ymm4 -vpslld $1, %ymm3, %ymm3 -vpslld $1, %ymm4, %ymm4 -vmovdqa 288(%rsp), %ymm10 -vpunpcklwd const0(%rip), %ymm10, %ymm9 -vpunpckhwd const0(%rip), %ymm10, %ymm10 -vmovdqa 544(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm9, %ymm8 -vpaddd %ymm6, %ymm10, %ymm7 -vpsubd %ymm3, %ymm8, %ymm8 -vpsubd %ymm4, %ymm7, %ymm7 -vpsubd %ymm11, %ymm9, %ymm11 -vpsubd %ymm6, %ymm10, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1568(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm10 -vpunpckhwd const0(%rip), %ymm11, %ymm9 -vpslld $1, %ymm10, %ymm10 -vpslld $1, %ymm9, %ymm9 -vpsubd %ymm10, %ymm8, %ymm8 -vpsubd %ymm9, %ymm7, %ymm7 -vpsrld $1, %ymm8, %ymm8 -vpsrld $1, %ymm7, %ymm7 -vpand mask32_to_16(%rip), %ymm8, %ymm8 -vpand mask32_to_16(%rip), %ymm7, %ymm7 -vpackusdw %ymm7, %ymm8, %ymm7 -vmovdqa 800(%rsp), %ymm8 -vpaddw 1056(%rsp), %ymm8, %ymm9 -vpsubw 1056(%rsp), %ymm8, %ymm8 -vpsrlw $2, %ymm8, %ymm8 -vpsubw %ymm6, %ymm8, %ymm8 -vpmullw %ymm14, %ymm8, %ymm8 -vpsllw $1, %ymm5, %ymm10 -vpsubw %ymm10, %ymm9, %ymm10 -vpsllw $7, %ymm11, %ymm9 -vpsubw %ymm9, %ymm10, %ymm9 -vpsrlw $3, %ymm9, %ymm9 -vpsubw %ymm7, %ymm9, %ymm9 -vmovdqa 1312(%rsp), %ymm10 -vpsubw %ymm5, %ymm10, %ymm10 -vpmullw %ymm15, %ymm11, %ymm4 -vpsubw %ymm4, %ymm10, %ymm4 -vpmullw %ymm14, %ymm9, %ymm9 -vpsubw %ymm9, %ymm7, %ymm7 -vpmullw %ymm12, %ymm9, %ymm10 -vpaddw %ymm10, %ymm7, %ymm10 -vpmullw %ymm12, %ymm10, %ymm10 -vpsubw %ymm10, %ymm4, %ymm10 -vpmullw %ymm14, %ymm10, %ymm10 -vpsubw %ymm6, %ymm10, %ymm10 -vpsrlw $3, %ymm10, %ymm10 -vpsubw %ymm8, %ymm10, %ymm10 -vpsubw %ymm10, %ymm8, %ymm8 -vpsubw %ymm8, %ymm6, %ymm6 -vpmullw %ymm13, %ymm10, %ymm10 -vpsubw %ymm10, %ymm6, %ymm6 -vmovdqu 168(%rdi), %ymm4 -vpaddw %ymm4, %ymm5, %ymm4 -vmovdqu %ymm4, 168(%rdi) -vmovdqu 584(%rdi), %ymm4 -vpaddw %ymm4, %ymm6, %ymm4 -vmovdqu %ymm4, 584(%rdi) -vmovdqu 1000(%rdi), %ymm4 -vpaddw %ymm4, %ymm7, %ymm4 -vmovdqu %ymm4, 1000(%rdi) -vmovdqu 1416(%rdi), %ymm4 -vpaddw %ymm4, %ymm8, %ymm4 -vmovdqu %ymm4, 1416(%rdi) -vmovdqu 190(%rdi), %ymm4 -vpaddw %ymm4, %ymm9, %ymm4 -vmovdqu %ymm4, 190(%rdi) -vmovdqu 606(%rdi), %ymm4 -vpaddw %ymm4, %ymm10, %ymm4 -vmovdqu %ymm4, 606(%rdi) -vmovdqu 1022(%rdi), %ymm4 -vpaddw %ymm4, %ymm11, %ymm4 -vmovdqu %ymm4, 1022(%rdi) -vmovdqa 64(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm10 -vpunpckhwd const0(%rip), %ymm11, %ymm9 -vpslld $1, %ymm10, %ymm10 -vpslld $1, %ymm9, %ymm9 -vmovdqa 320(%rsp), %ymm8 -vpunpcklwd const0(%rip), %ymm8, %ymm7 -vpunpckhwd const0(%rip), %ymm8, %ymm8 -vmovdqa 576(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm7, %ymm4 -vpaddd %ymm6, %ymm8, %ymm3 -vpsubd %ymm10, %ymm4, %ymm4 -vpsubd %ymm9, %ymm3, %ymm3 -vpsubd %ymm5, %ymm7, %ymm5 -vpsubd %ymm6, %ymm8, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1600(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm8 -vpunpckhwd const0(%rip), %ymm5, %ymm7 -vpslld $1, %ymm8, %ymm8 -vpslld $1, %ymm7, %ymm7 -vpsubd %ymm8, %ymm4, %ymm4 -vpsubd %ymm7, %ymm3, %ymm3 -vpsrld $1, %ymm4, %ymm4 -vpsrld $1, %ymm3, %ymm3 -vpand mask32_to_16(%rip), %ymm4, %ymm4 -vpand mask32_to_16(%rip), %ymm3, %ymm3 -vpackusdw %ymm3, %ymm4, %ymm3 -vmovdqa 832(%rsp), %ymm4 -vpaddw 1088(%rsp), %ymm4, %ymm7 -vpsubw 1088(%rsp), %ymm4, %ymm4 -vpsrlw $2, %ymm4, %ymm4 -vpsubw %ymm6, %ymm4, %ymm4 -vpmullw %ymm14, %ymm4, %ymm4 -vpsllw $1, %ymm11, %ymm8 -vpsubw %ymm8, %ymm7, %ymm8 -vpsllw $7, %ymm5, %ymm7 -vpsubw %ymm7, %ymm8, %ymm7 -vpsrlw $3, %ymm7, %ymm7 -vpsubw %ymm3, %ymm7, %ymm7 -vmovdqa 1344(%rsp), %ymm8 -vpsubw %ymm11, %ymm8, %ymm8 -vpmullw %ymm15, %ymm5, %ymm9 -vpsubw %ymm9, %ymm8, %ymm9 -vpmullw %ymm14, %ymm7, %ymm7 -vpsubw %ymm7, %ymm3, %ymm3 -vpmullw %ymm12, %ymm7, %ymm8 -vpaddw %ymm8, %ymm3, %ymm8 -vpmullw %ymm12, %ymm8, %ymm8 -vpsubw %ymm8, %ymm9, %ymm8 -vpmullw %ymm14, %ymm8, %ymm8 -vpsubw %ymm6, %ymm8, %ymm8 -vpsrlw $3, %ymm8, %ymm8 -vpsubw %ymm4, %ymm8, %ymm8 -vpsubw %ymm8, %ymm4, %ymm4 -vpsubw %ymm4, %ymm6, %ymm6 -vpmullw %ymm13, %ymm8, %ymm8 -vpsubw %ymm8, %ymm6, %ymm6 -vmovdqu 272(%rdi), %ymm9 -vpaddw %ymm9, %ymm11, %ymm9 -vmovdqu %ymm9, 272(%rdi) -vmovdqu 688(%rdi), %ymm9 -vpaddw %ymm9, %ymm6, %ymm9 -vmovdqu %ymm9, 688(%rdi) -vmovdqu 1104(%rdi), %ymm9 -vpaddw %ymm9, %ymm3, %ymm9 -vmovdqu %ymm9, 1104(%rdi) -vmovdqu 1520(%rdi), %ymm9 -vpaddw %ymm9, %ymm4, %ymm9 -vmovdqu %ymm9, 1520(%rdi) -vmovdqu 294(%rdi), %ymm9 -vpaddw %ymm9, %ymm7, %ymm9 -vmovdqu %ymm9, 294(%rdi) -vmovdqu 710(%rdi), %ymm9 -vpaddw %ymm9, %ymm8, %ymm9 -vmovdqu %ymm9, 710(%rdi) -vmovdqu 1126(%rdi), %ymm9 -vpaddw %ymm9, %ymm5, %ymm9 -vmovdqu %ymm9, 1126(%rdi) -vmovdqa 96(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm8 -vpunpckhwd const0(%rip), %ymm5, %ymm7 -vpslld $1, %ymm8, %ymm8 -vpslld $1, %ymm7, %ymm7 -vmovdqa 352(%rsp), %ymm4 -vpunpcklwd const0(%rip), %ymm4, %ymm3 -vpunpckhwd const0(%rip), %ymm4, %ymm4 -vmovdqa 608(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm3, %ymm9 -vpaddd %ymm6, %ymm4, %ymm10 -vpsubd %ymm8, %ymm9, %ymm9 -vpsubd %ymm7, %ymm10, %ymm10 -vpsubd %ymm11, %ymm3, %ymm11 -vpsubd %ymm6, %ymm4, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1632(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm4 -vpunpckhwd const0(%rip), %ymm11, %ymm3 -vpslld $1, %ymm4, %ymm4 -vpslld $1, %ymm3, %ymm3 -vpsubd %ymm4, %ymm9, %ymm9 -vpsubd %ymm3, %ymm10, %ymm10 -vpsrld $1, %ymm9, %ymm9 -vpsrld $1, %ymm10, %ymm10 -vpand mask32_to_16(%rip), %ymm9, %ymm9 -vpand mask32_to_16(%rip), %ymm10, %ymm10 -vpackusdw %ymm10, %ymm9, %ymm10 -vmovdqa 864(%rsp), %ymm9 -vpaddw 1120(%rsp), %ymm9, %ymm3 -vpsubw 1120(%rsp), %ymm9, %ymm9 -vpsrlw $2, %ymm9, %ymm9 -vpsubw %ymm6, %ymm9, %ymm9 -vpmullw %ymm14, %ymm9, %ymm9 -vpsllw $1, %ymm5, %ymm4 -vpsubw %ymm4, %ymm3, %ymm4 -vpsllw $7, %ymm11, %ymm3 -vpsubw %ymm3, %ymm4, %ymm3 -vpsrlw $3, %ymm3, %ymm3 -vpsubw %ymm10, %ymm3, %ymm3 -vmovdqa 1376(%rsp), %ymm4 -vpsubw %ymm5, %ymm4, %ymm4 -vpmullw %ymm15, %ymm11, %ymm7 -vpsubw %ymm7, %ymm4, %ymm7 -vpmullw %ymm14, %ymm3, %ymm3 -vpsubw %ymm3, %ymm10, %ymm10 -vpmullw %ymm12, %ymm3, %ymm4 -vpaddw %ymm4, %ymm10, %ymm4 -vpmullw %ymm12, %ymm4, %ymm4 -vpsubw %ymm4, %ymm7, %ymm4 -vpmullw %ymm14, %ymm4, %ymm4 -vpsubw %ymm6, %ymm4, %ymm4 -vpsrlw $3, %ymm4, %ymm4 -vpsubw %ymm9, %ymm4, %ymm4 -vpsubw %ymm4, %ymm9, %ymm9 -vpsubw %ymm9, %ymm6, %ymm6 -vpmullw %ymm13, %ymm4, %ymm4 -vpsubw %ymm4, %ymm6, %ymm6 -vmovdqu 376(%rdi), %ymm7 -vpaddw %ymm7, %ymm5, %ymm7 -vmovdqu %ymm7, 376(%rdi) -vmovdqu 792(%rdi), %ymm7 -vpaddw %ymm7, %ymm6, %ymm7 -vmovdqu %ymm7, 792(%rdi) -vmovdqu 1208(%rdi), %ymm7 -vpaddw %ymm7, %ymm10, %ymm7 -vmovdqu %ymm7, 1208(%rdi) -vmovdqu 1624(%rdi), %ymm7 -vpand mask_9_7(%rip), %ymm9, %ymm8 -vpaddw %ymm7, %ymm8, %ymm7 -vmovdqu %ymm7, 1624(%rdi) -vpshufb rol_rol_16(%rip), %ymm9, %ymm9 -vextracti128 $1, %ymm9, %xmm9 -vpand mask_7_9(%rip), %ymm9, %ymm9 -vmovdqu 0(%rdi), %ymm7 -vpaddw %ymm7, %ymm9, %ymm7 -vmovdqu %ymm7, 0(%rdi) -vmovdqu 398(%rdi), %ymm7 -vpaddw %ymm7, %ymm3, %ymm7 -vmovdqu %ymm7, 398(%rdi) -vmovdqu 814(%rdi), %ymm7 -vpaddw %ymm7, %ymm4, %ymm7 -vmovdqu %ymm7, 814(%rdi) -vmovdqu 1230(%rdi), %ymm7 -vpaddw %ymm7, %ymm11, %ymm7 -vmovdqu %ymm7, 1230(%rdi) -vmovdqa 128(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm4 -vpunpckhwd const0(%rip), %ymm11, %ymm3 -vpslld $1, %ymm4, %ymm4 -vpslld $1, %ymm3, %ymm3 -vmovdqa 384(%rsp), %ymm9 -vpunpcklwd const0(%rip), %ymm9, %ymm10 -vpunpckhwd const0(%rip), %ymm9, %ymm9 -vmovdqa 640(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm10, %ymm7 -vpaddd %ymm6, %ymm9, %ymm8 -vpsubd %ymm4, %ymm7, %ymm7 -vpsubd %ymm3, %ymm8, %ymm8 -vpsubd %ymm5, %ymm10, %ymm5 -vpsubd %ymm6, %ymm9, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1664(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm9 -vpunpckhwd const0(%rip), %ymm5, %ymm10 -vpslld $1, %ymm9, %ymm9 -vpslld $1, %ymm10, %ymm10 -vpsubd %ymm9, %ymm7, %ymm7 -vpsubd %ymm10, %ymm8, %ymm8 -vpsrld $1, %ymm7, %ymm7 -vpsrld $1, %ymm8, %ymm8 -vpand mask32_to_16(%rip), %ymm7, %ymm7 -vpand mask32_to_16(%rip), %ymm8, %ymm8 -vpackusdw %ymm8, %ymm7, %ymm8 -vmovdqa 896(%rsp), %ymm7 -vpaddw 1152(%rsp), %ymm7, %ymm10 -vpsubw 1152(%rsp), %ymm7, %ymm7 -vpsrlw $2, %ymm7, %ymm7 -vpsubw %ymm6, %ymm7, %ymm7 -vpmullw %ymm14, %ymm7, %ymm7 -vpsllw $1, %ymm11, %ymm9 -vpsubw %ymm9, %ymm10, %ymm9 -vpsllw $7, %ymm5, %ymm10 -vpsubw %ymm10, %ymm9, %ymm10 -vpsrlw $3, %ymm10, %ymm10 -vpsubw %ymm8, %ymm10, %ymm10 -vmovdqa 1408(%rsp), %ymm9 -vpsubw %ymm11, %ymm9, %ymm9 -vpmullw %ymm15, %ymm5, %ymm3 -vpsubw %ymm3, %ymm9, %ymm3 -vpmullw %ymm14, %ymm10, %ymm10 -vpsubw %ymm10, %ymm8, %ymm8 -vpmullw %ymm12, %ymm10, %ymm9 -vpaddw %ymm9, %ymm8, %ymm9 -vpmullw %ymm12, %ymm9, %ymm9 -vpsubw %ymm9, %ymm3, %ymm9 -vpmullw %ymm14, %ymm9, %ymm9 -vpsubw %ymm6, %ymm9, %ymm9 -vpsrlw $3, %ymm9, %ymm9 -vpsubw %ymm7, %ymm9, %ymm9 -vpsubw %ymm9, %ymm7, %ymm7 -vpsubw %ymm7, %ymm6, %ymm6 -vpmullw %ymm13, %ymm9, %ymm9 -vpsubw %ymm9, %ymm6, %ymm6 -vmovdqu 480(%rdi), %ymm3 -vpaddw %ymm3, %ymm11, %ymm3 -vmovdqu %ymm3, 480(%rdi) -vmovdqu 896(%rdi), %ymm3 -vpaddw %ymm3, %ymm6, %ymm3 -vmovdqu %ymm3, 896(%rdi) -vmovdqu 1312(%rdi), %ymm3 -vpaddw %ymm3, %ymm8, %ymm3 -vmovdqu %ymm3, 1312(%rdi) -vmovdqu 86(%rdi), %ymm3 -vpaddw %ymm3, %ymm7, %ymm3 -vmovdqu %ymm3, 86(%rdi) -vmovdqu 502(%rdi), %ymm3 -vpaddw %ymm3, %ymm10, %ymm3 -vmovdqu %ymm3, 502(%rdi) -vmovdqu 918(%rdi), %ymm3 -vpaddw %ymm3, %ymm9, %ymm3 -vmovdqu %ymm3, 918(%rdi) -vmovdqu 1334(%rdi), %ymm3 -vpaddw %ymm3, %ymm5, %ymm3 -vmovdqu %ymm3, 1334(%rdi) -vmovdqa 160(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm9 -vpunpckhwd const0(%rip), %ymm5, %ymm10 -vpslld $1, %ymm9, %ymm9 -vpslld $1, %ymm10, %ymm10 -vmovdqa 416(%rsp), %ymm7 -vpunpcklwd const0(%rip), %ymm7, %ymm8 -vpunpckhwd const0(%rip), %ymm7, %ymm7 -vmovdqa 672(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm8, %ymm3 -vpaddd %ymm6, %ymm7, %ymm4 -vpsubd %ymm9, %ymm3, %ymm3 -vpsubd %ymm10, %ymm4, %ymm4 -vpsubd %ymm11, %ymm8, %ymm11 -vpsubd %ymm6, %ymm7, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1696(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm7 -vpunpckhwd const0(%rip), %ymm11, %ymm8 -vpslld $1, %ymm7, %ymm7 -vpslld $1, %ymm8, %ymm8 -vpsubd %ymm7, %ymm3, %ymm3 -vpsubd %ymm8, %ymm4, %ymm4 -vpsrld $1, %ymm3, %ymm3 -vpsrld $1, %ymm4, %ymm4 -vpand mask32_to_16(%rip), %ymm3, %ymm3 -vpand mask32_to_16(%rip), %ymm4, %ymm4 -vpackusdw %ymm4, %ymm3, %ymm4 -vmovdqa 928(%rsp), %ymm3 -vpaddw 1184(%rsp), %ymm3, %ymm8 -vpsubw 1184(%rsp), %ymm3, %ymm3 -vpsrlw $2, %ymm3, %ymm3 -vpsubw %ymm6, %ymm3, %ymm3 -vpmullw %ymm14, %ymm3, %ymm3 -vpsllw $1, %ymm5, %ymm7 -vpsubw %ymm7, %ymm8, %ymm7 -vpsllw $7, %ymm11, %ymm8 -vpsubw %ymm8, %ymm7, %ymm8 -vpsrlw $3, %ymm8, %ymm8 -vpsubw %ymm4, %ymm8, %ymm8 -vmovdqa 1440(%rsp), %ymm7 -vpsubw %ymm5, %ymm7, %ymm7 -vpmullw %ymm15, %ymm11, %ymm10 -vpsubw %ymm10, %ymm7, %ymm10 -vpmullw %ymm14, %ymm8, %ymm8 -vpsubw %ymm8, %ymm4, %ymm4 -vpmullw %ymm12, %ymm8, %ymm7 -vpaddw %ymm7, %ymm4, %ymm7 -vpmullw %ymm12, %ymm7, %ymm7 -vpsubw %ymm7, %ymm10, %ymm7 -vpmullw %ymm14, %ymm7, %ymm7 -vpsubw %ymm6, %ymm7, %ymm7 -vpsrlw $3, %ymm7, %ymm7 -vpsubw %ymm3, %ymm7, %ymm7 -vpsubw %ymm7, %ymm3, %ymm3 -vpsubw %ymm3, %ymm6, %ymm6 -vpmullw %ymm13, %ymm7, %ymm7 -vpsubw %ymm7, %ymm6, %ymm6 -vmovdqu 584(%rdi), %ymm10 -vpaddw %ymm10, %ymm5, %ymm10 -vmovdqu %ymm10, 584(%rdi) -vmovdqu 1000(%rdi), %ymm10 -vpaddw %ymm10, %ymm6, %ymm10 -vmovdqu %ymm10, 1000(%rdi) -vmovdqu 1416(%rdi), %ymm10 -vpaddw %ymm10, %ymm4, %ymm10 -vmovdqu %ymm10, 1416(%rdi) -vmovdqu 190(%rdi), %ymm10 -vpaddw %ymm10, %ymm3, %ymm10 -vmovdqu %ymm10, 190(%rdi) -vmovdqu 606(%rdi), %ymm10 -vpaddw %ymm10, %ymm8, %ymm10 -vmovdqu %ymm10, 606(%rdi) -vmovdqu 1022(%rdi), %ymm10 -vpaddw %ymm10, %ymm7, %ymm10 -vmovdqu %ymm10, 1022(%rdi) -vmovdqu 1438(%rdi), %ymm10 -vpaddw %ymm10, %ymm11, %ymm10 -vmovdqu %ymm10, 1438(%rdi) -vmovdqa 192(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm7 -vpunpckhwd const0(%rip), %ymm11, %ymm8 -vpslld $1, %ymm7, %ymm7 -vpslld $1, %ymm8, %ymm8 -vmovdqa 448(%rsp), %ymm3 -vpunpcklwd const0(%rip), %ymm3, %ymm4 -vpunpckhwd const0(%rip), %ymm3, %ymm3 -vmovdqa 704(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm4, %ymm10 -vpaddd %ymm6, %ymm3, %ymm9 -vpsubd %ymm7, %ymm10, %ymm10 -vpsubd %ymm8, %ymm9, %ymm9 -vpsubd %ymm5, %ymm4, %ymm5 -vpsubd %ymm6, %ymm3, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1728(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm3 -vpunpckhwd const0(%rip), %ymm5, %ymm4 -vpslld $1, %ymm3, %ymm3 -vpslld $1, %ymm4, %ymm4 -vpsubd %ymm3, %ymm10, %ymm10 -vpsubd %ymm4, %ymm9, %ymm9 -vpsrld $1, %ymm10, %ymm10 -vpsrld $1, %ymm9, %ymm9 -vpand mask32_to_16(%rip), %ymm10, %ymm10 -vpand mask32_to_16(%rip), %ymm9, %ymm9 -vpackusdw %ymm9, %ymm10, %ymm9 -vmovdqa 960(%rsp), %ymm10 -vpaddw 1216(%rsp), %ymm10, %ymm4 -vpsubw 1216(%rsp), %ymm10, %ymm10 -vpsrlw $2, %ymm10, %ymm10 -vpsubw %ymm6, %ymm10, %ymm10 -vpmullw %ymm14, %ymm10, %ymm10 -vpsllw $1, %ymm11, %ymm3 -vpsubw %ymm3, %ymm4, %ymm3 -vpsllw $7, %ymm5, %ymm4 -vpsubw %ymm4, %ymm3, %ymm4 -vpsrlw $3, %ymm4, %ymm4 -vpsubw %ymm9, %ymm4, %ymm4 -vmovdqa 1472(%rsp), %ymm3 -vpsubw %ymm11, %ymm3, %ymm3 -vpmullw %ymm15, %ymm5, %ymm8 -vpsubw %ymm8, %ymm3, %ymm8 -vpmullw %ymm14, %ymm4, %ymm4 -vpsubw %ymm4, %ymm9, %ymm9 -vpmullw %ymm12, %ymm4, %ymm3 -vpaddw %ymm3, %ymm9, %ymm3 -vpmullw %ymm12, %ymm3, %ymm3 -vpsubw %ymm3, %ymm8, %ymm3 -vpmullw %ymm14, %ymm3, %ymm3 -vpsubw %ymm6, %ymm3, %ymm3 -vpsrlw $3, %ymm3, %ymm3 -vpsubw %ymm10, %ymm3, %ymm3 -vpsubw %ymm3, %ymm10, %ymm10 -vpsubw %ymm10, %ymm6, %ymm6 -vpmullw %ymm13, %ymm3, %ymm3 -vpsubw %ymm3, %ymm6, %ymm6 -vmovdqu 688(%rdi), %ymm8 -vpaddw %ymm8, %ymm11, %ymm8 -vmovdqu %ymm8, 688(%rdi) -vmovdqu 1104(%rdi), %ymm8 -vpaddw %ymm8, %ymm6, %ymm8 -vmovdqu %ymm8, 1104(%rdi) -vmovdqu 1520(%rdi), %ymm8 -vpaddw %ymm8, %ymm9, %ymm8 -vmovdqu %ymm8, 1520(%rdi) -vmovdqu 294(%rdi), %ymm8 -vpaddw %ymm8, %ymm10, %ymm8 -vmovdqu %ymm8, 294(%rdi) -vmovdqu 710(%rdi), %ymm8 -vpaddw %ymm8, %ymm4, %ymm8 -vmovdqu %ymm8, 710(%rdi) -vmovdqu 1126(%rdi), %ymm8 -vpaddw %ymm8, %ymm3, %ymm8 -vmovdqu %ymm8, 1126(%rdi) -vmovdqu 1542(%rdi), %ymm8 -vpaddw %ymm8, %ymm5, %ymm8 -vmovdqu %ymm8, 1542(%rdi) -vmovdqa 224(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm3 -vpunpckhwd const0(%rip), %ymm5, %ymm4 -vpslld $1, %ymm3, %ymm3 -vpslld $1, %ymm4, %ymm4 -vmovdqa 480(%rsp), %ymm10 -vpunpcklwd const0(%rip), %ymm10, %ymm9 -vpunpckhwd const0(%rip), %ymm10, %ymm10 -vmovdqa 736(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm9, %ymm8 -vpaddd %ymm6, %ymm10, %ymm7 -vpsubd %ymm3, %ymm8, %ymm8 -vpsubd %ymm4, %ymm7, %ymm7 -vpsubd %ymm11, %ymm9, %ymm11 -vpsubd %ymm6, %ymm10, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1760(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm10 -vpunpckhwd const0(%rip), %ymm11, %ymm9 -vpslld $1, %ymm10, %ymm10 -vpslld $1, %ymm9, %ymm9 -vpsubd %ymm10, %ymm8, %ymm8 -vpsubd %ymm9, %ymm7, %ymm7 -vpsrld $1, %ymm8, %ymm8 -vpsrld $1, %ymm7, %ymm7 -vpand mask32_to_16(%rip), %ymm8, %ymm8 -vpand mask32_to_16(%rip), %ymm7, %ymm7 -vpackusdw %ymm7, %ymm8, %ymm7 -vmovdqa 992(%rsp), %ymm8 -vpaddw 1248(%rsp), %ymm8, %ymm9 -vpsubw 1248(%rsp), %ymm8, %ymm8 -vpsrlw $2, %ymm8, %ymm8 -vpsubw %ymm6, %ymm8, %ymm8 -vpmullw %ymm14, %ymm8, %ymm8 -vpsllw $1, %ymm5, %ymm10 -vpsubw %ymm10, %ymm9, %ymm10 -vpsllw $7, %ymm11, %ymm9 -vpsubw %ymm9, %ymm10, %ymm9 -vpsrlw $3, %ymm9, %ymm9 -vpsubw %ymm7, %ymm9, %ymm9 -vmovdqa 1504(%rsp), %ymm10 -vpsubw %ymm5, %ymm10, %ymm10 -vpmullw %ymm15, %ymm11, %ymm4 -vpsubw %ymm4, %ymm10, %ymm4 -vpmullw %ymm14, %ymm9, %ymm9 -vpsubw %ymm9, %ymm7, %ymm7 -vpmullw %ymm12, %ymm9, %ymm10 -vpaddw %ymm10, %ymm7, %ymm10 -vpmullw %ymm12, %ymm10, %ymm10 -vpsubw %ymm10, %ymm4, %ymm10 -vpmullw %ymm14, %ymm10, %ymm10 -vpsubw %ymm6, %ymm10, %ymm10 -vpsrlw $3, %ymm10, %ymm10 -vpsubw %ymm8, %ymm10, %ymm10 -vpsubw %ymm10, %ymm8, %ymm8 -vpsubw %ymm8, %ymm6, %ymm6 -vpmullw %ymm13, %ymm10, %ymm10 -vpsubw %ymm10, %ymm6, %ymm6 -vmovdqu 792(%rdi), %ymm4 -vpaddw %ymm4, %ymm5, %ymm4 -vmovdqu %ymm4, 792(%rdi) -vmovdqu 1208(%rdi), %ymm4 -vpaddw %ymm4, %ymm6, %ymm4 -vmovdqu %ymm4, 1208(%rdi) -vmovdqu 1624(%rdi), %ymm4 -vpand mask_9_7(%rip), %ymm7, %ymm3 -vpaddw %ymm4, %ymm3, %ymm4 -vmovdqu %ymm4, 1624(%rdi) -vpshufb rol_rol_16(%rip), %ymm7, %ymm7 -vextracti128 $1, %ymm7, %xmm7 -vpand mask_7_9(%rip), %ymm7, %ymm7 -vmovdqu 0(%rdi), %ymm4 -vpaddw %ymm4, %ymm7, %ymm4 -vmovdqu %ymm4, 0(%rdi) -vmovdqu 398(%rdi), %ymm4 -vpaddw %ymm4, %ymm8, %ymm4 -vmovdqu %ymm4, 398(%rdi) -vmovdqu 814(%rdi), %ymm4 -vpaddw %ymm4, %ymm9, %ymm4 -vmovdqu %ymm4, 814(%rdi) -vmovdqu 1230(%rdi), %ymm4 -vpaddw %ymm4, %ymm10, %ymm4 -vmovdqu %ymm4, 1230(%rdi) -vmovdqa 224(%r12), %ymm0 -vpsubw 352(%r12), %ymm0, %ymm0 -vmovdqa 736(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 480(%r12), %ymm1, %ymm1 -vpsubw 96(%r12), %ymm0, %ymm0 -vpaddw 608(%r12), %ymm0, %ymm0 -vmovdqa 992(%r12), %ymm2 -vpsubw 1120(%r12), %ymm2, %ymm2 -vmovdqa 1504(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 1248(%r12), %ymm3, %ymm3 -vpsubw 864(%r12), %ymm2, %ymm2 -vpaddw 1376(%r12), %ymm2, %ymm2 -vmovdqa 1760(%r12), %ymm4 -vpsubw 1888(%r12), %ymm4, %ymm4 -vmovdqa 2272(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 2016(%r12), %ymm5, %ymm5 -vpsubw 1632(%r12), %ymm4, %ymm4 -vpaddw 2144(%r12), %ymm4, %ymm4 -vpsubw 864(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 96(%r12), %ymm1, %ymm1 -vpaddw 1632(%r12), %ymm1, %ymm1 -vmovdqa 480(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 2016(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 1248(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 96(%r12), %ymm8 -vmovdqa 1248(%r12), %ymm9 -vmovdqa %ymm8, 0(%rsp) -vmovdqa %ymm0, 32(%rsp) -vmovdqa %ymm1, 64(%rsp) -vmovdqa %ymm7, 96(%rsp) -vmovdqa %ymm5, 128(%rsp) -vmovdqa %ymm2, 160(%rsp) -vmovdqa %ymm3, 192(%rsp) -vmovdqa %ymm9, 224(%rsp) -vmovdqa 2528(%r12), %ymm0 -vpsubw 2656(%r12), %ymm0, %ymm0 -vmovdqa 3040(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 2784(%r12), %ymm1, %ymm1 -vpsubw 2400(%r12), %ymm0, %ymm0 -vpaddw 2912(%r12), %ymm0, %ymm0 -vmovdqa 3296(%r12), %ymm2 -vpsubw 3424(%r12), %ymm2, %ymm2 -vmovdqa 3808(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 3552(%r12), %ymm3, %ymm3 -vpsubw 3168(%r12), %ymm2, %ymm2 -vpaddw 3680(%r12), %ymm2, %ymm2 -vmovdqa 4064(%r12), %ymm4 -vpsubw 4192(%r12), %ymm4, %ymm4 -vmovdqa 4576(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 4320(%r12), %ymm5, %ymm5 -vpsubw 3936(%r12), %ymm4, %ymm4 -vpaddw 4448(%r12), %ymm4, %ymm4 -vpsubw 3168(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 2400(%r12), %ymm1, %ymm1 -vpaddw 3936(%r12), %ymm1, %ymm1 -vmovdqa 2784(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 4320(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 3552(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 2400(%r12), %ymm8 -vmovdqa 3552(%r12), %ymm9 -vmovdqa %ymm8, 256(%rsp) -vmovdqa %ymm0, 288(%rsp) -vmovdqa %ymm1, 320(%rsp) -vmovdqa %ymm7, 352(%rsp) -vmovdqa %ymm5, 384(%rsp) -vmovdqa %ymm2, 416(%rsp) -vmovdqa %ymm3, 448(%rsp) -vmovdqa %ymm9, 480(%rsp) -vmovdqa 4832(%r12), %ymm0 -vpsubw 4960(%r12), %ymm0, %ymm0 -vmovdqa 5344(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 5088(%r12), %ymm1, %ymm1 -vpsubw 4704(%r12), %ymm0, %ymm0 -vpaddw 5216(%r12), %ymm0, %ymm0 -vmovdqa 5600(%r12), %ymm2 -vpsubw 5728(%r12), %ymm2, %ymm2 -vmovdqa 6112(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 5856(%r12), %ymm3, %ymm3 -vpsubw 5472(%r12), %ymm2, %ymm2 -vpaddw 5984(%r12), %ymm2, %ymm2 -vmovdqa 6368(%r12), %ymm4 -vpsubw 6496(%r12), %ymm4, %ymm4 -vmovdqa 6880(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 6624(%r12), %ymm5, %ymm5 -vpsubw 6240(%r12), %ymm4, %ymm4 -vpaddw 6752(%r12), %ymm4, %ymm4 -vpsubw 5472(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 4704(%r12), %ymm1, %ymm1 -vpaddw 6240(%r12), %ymm1, %ymm1 -vmovdqa 5088(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 6624(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 5856(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 4704(%r12), %ymm8 -vmovdqa 5856(%r12), %ymm9 -vmovdqa %ymm8, 512(%rsp) -vmovdqa %ymm0, 544(%rsp) -vmovdqa %ymm1, 576(%rsp) -vmovdqa %ymm7, 608(%rsp) -vmovdqa %ymm5, 640(%rsp) -vmovdqa %ymm2, 672(%rsp) -vmovdqa %ymm3, 704(%rsp) -vmovdqa %ymm9, 736(%rsp) -vmovdqa 7136(%r12), %ymm0 -vpsubw 7264(%r12), %ymm0, %ymm0 -vmovdqa 7648(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 7392(%r12), %ymm1, %ymm1 -vpsubw 7008(%r12), %ymm0, %ymm0 -vpaddw 7520(%r12), %ymm0, %ymm0 -vmovdqa 7904(%r12), %ymm2 -vpsubw 8032(%r12), %ymm2, %ymm2 -vmovdqa 8416(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 8160(%r12), %ymm3, %ymm3 -vpsubw 7776(%r12), %ymm2, %ymm2 -vpaddw 8288(%r12), %ymm2, %ymm2 -vmovdqa 8672(%r12), %ymm4 -vpsubw 8800(%r12), %ymm4, %ymm4 -vmovdqa 9184(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 8928(%r12), %ymm5, %ymm5 -vpsubw 8544(%r12), %ymm4, %ymm4 -vpaddw 9056(%r12), %ymm4, %ymm4 -vpsubw 7776(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 7008(%r12), %ymm1, %ymm1 -vpaddw 8544(%r12), %ymm1, %ymm1 -vmovdqa 7392(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 8928(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 8160(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 7008(%r12), %ymm8 -vmovdqa 8160(%r12), %ymm9 -vmovdqa %ymm8, 768(%rsp) -vmovdqa %ymm0, 800(%rsp) -vmovdqa %ymm1, 832(%rsp) -vmovdqa %ymm7, 864(%rsp) -vmovdqa %ymm5, 896(%rsp) -vmovdqa %ymm2, 928(%rsp) -vmovdqa %ymm3, 960(%rsp) -vmovdqa %ymm9, 992(%rsp) -vmovdqa 9440(%r12), %ymm0 -vpsubw 9568(%r12), %ymm0, %ymm0 -vmovdqa 9952(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 9696(%r12), %ymm1, %ymm1 -vpsubw 9312(%r12), %ymm0, %ymm0 -vpaddw 9824(%r12), %ymm0, %ymm0 -vmovdqa 10208(%r12), %ymm2 -vpsubw 10336(%r12), %ymm2, %ymm2 -vmovdqa 10720(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 10464(%r12), %ymm3, %ymm3 -vpsubw 10080(%r12), %ymm2, %ymm2 -vpaddw 10592(%r12), %ymm2, %ymm2 -vmovdqa 10976(%r12), %ymm4 -vpsubw 11104(%r12), %ymm4, %ymm4 -vmovdqa 11488(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 11232(%r12), %ymm5, %ymm5 -vpsubw 10848(%r12), %ymm4, %ymm4 -vpaddw 11360(%r12), %ymm4, %ymm4 -vpsubw 10080(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 9312(%r12), %ymm1, %ymm1 -vpaddw 10848(%r12), %ymm1, %ymm1 -vmovdqa 9696(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 11232(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 10464(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 9312(%r12), %ymm8 -vmovdqa 10464(%r12), %ymm9 -vmovdqa %ymm8, 1024(%rsp) -vmovdqa %ymm0, 1056(%rsp) -vmovdqa %ymm1, 1088(%rsp) -vmovdqa %ymm7, 1120(%rsp) -vmovdqa %ymm5, 1152(%rsp) -vmovdqa %ymm2, 1184(%rsp) -vmovdqa %ymm3, 1216(%rsp) -vmovdqa %ymm9, 1248(%rsp) -vmovdqa 11744(%r12), %ymm0 -vpsubw 11872(%r12), %ymm0, %ymm0 -vmovdqa 12256(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 12000(%r12), %ymm1, %ymm1 -vpsubw 11616(%r12), %ymm0, %ymm0 -vpaddw 12128(%r12), %ymm0, %ymm0 -vmovdqa 12512(%r12), %ymm2 -vpsubw 12640(%r12), %ymm2, %ymm2 -vmovdqa 13024(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 12768(%r12), %ymm3, %ymm3 -vpsubw 12384(%r12), %ymm2, %ymm2 -vpaddw 12896(%r12), %ymm2, %ymm2 -vmovdqa 13280(%r12), %ymm4 -vpsubw 13408(%r12), %ymm4, %ymm4 -vmovdqa 13792(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 13536(%r12), %ymm5, %ymm5 -vpsubw 13152(%r12), %ymm4, %ymm4 -vpaddw 13664(%r12), %ymm4, %ymm4 -vpsubw 12384(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 11616(%r12), %ymm1, %ymm1 -vpaddw 13152(%r12), %ymm1, %ymm1 -vmovdqa 12000(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 13536(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 12768(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 11616(%r12), %ymm8 -vmovdqa 12768(%r12), %ymm9 -vmovdqa %ymm8, 1280(%rsp) -vmovdqa %ymm0, 1312(%rsp) -vmovdqa %ymm1, 1344(%rsp) -vmovdqa %ymm7, 1376(%rsp) -vmovdqa %ymm5, 1408(%rsp) -vmovdqa %ymm2, 1440(%rsp) -vmovdqa %ymm3, 1472(%rsp) -vmovdqa %ymm9, 1504(%rsp) -vmovdqa 14048(%r12), %ymm0 -vpsubw 14176(%r12), %ymm0, %ymm0 -vmovdqa 14560(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 14304(%r12), %ymm1, %ymm1 -vpsubw 13920(%r12), %ymm0, %ymm0 -vpaddw 14432(%r12), %ymm0, %ymm0 -vmovdqa 14816(%r12), %ymm2 -vpsubw 14944(%r12), %ymm2, %ymm2 -vmovdqa 15328(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 15072(%r12), %ymm3, %ymm3 -vpsubw 14688(%r12), %ymm2, %ymm2 -vpaddw 15200(%r12), %ymm2, %ymm2 -vmovdqa 15584(%r12), %ymm4 -vpsubw 15712(%r12), %ymm4, %ymm4 -vmovdqa 16096(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 15840(%r12), %ymm5, %ymm5 -vpsubw 15456(%r12), %ymm4, %ymm4 -vpaddw 15968(%r12), %ymm4, %ymm4 -vpsubw 14688(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 13920(%r12), %ymm1, %ymm1 -vpaddw 15456(%r12), %ymm1, %ymm1 -vmovdqa 14304(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 15840(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 15072(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 13920(%r12), %ymm8 -vmovdqa 15072(%r12), %ymm9 -vmovdqa %ymm8, 1536(%rsp) -vmovdqa %ymm0, 1568(%rsp) -vmovdqa %ymm1, 1600(%rsp) -vmovdqa %ymm7, 1632(%rsp) -vmovdqa %ymm5, 1664(%rsp) -vmovdqa %ymm2, 1696(%rsp) -vmovdqa %ymm3, 1728(%rsp) -vmovdqa %ymm9, 1760(%rsp) -vmovdqa 0(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm10 -vpunpckhwd const0(%rip), %ymm11, %ymm9 -vpslld $1, %ymm10, %ymm10 -vpslld $1, %ymm9, %ymm9 -vmovdqa 256(%rsp), %ymm8 -vpunpcklwd const0(%rip), %ymm8, %ymm7 -vpunpckhwd const0(%rip), %ymm8, %ymm8 -vmovdqa 512(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm7, %ymm4 -vpaddd %ymm6, %ymm8, %ymm3 -vpsubd %ymm10, %ymm4, %ymm4 -vpsubd %ymm9, %ymm3, %ymm3 -vpsubd %ymm5, %ymm7, %ymm5 -vpsubd %ymm6, %ymm8, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1536(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm8 -vpunpckhwd const0(%rip), %ymm5, %ymm7 -vpslld $1, %ymm8, %ymm8 -vpslld $1, %ymm7, %ymm7 -vpsubd %ymm8, %ymm4, %ymm4 -vpsubd %ymm7, %ymm3, %ymm3 -vpsrld $1, %ymm4, %ymm4 -vpsrld $1, %ymm3, %ymm3 -vpand mask32_to_16(%rip), %ymm4, %ymm4 -vpand mask32_to_16(%rip), %ymm3, %ymm3 -vpackusdw %ymm3, %ymm4, %ymm3 -vmovdqa 768(%rsp), %ymm4 -vpaddw 1024(%rsp), %ymm4, %ymm7 -vpsubw 1024(%rsp), %ymm4, %ymm4 -vpsrlw $2, %ymm4, %ymm4 -vpsubw %ymm6, %ymm4, %ymm4 -vpmullw %ymm14, %ymm4, %ymm4 -vpsllw $1, %ymm11, %ymm8 -vpsubw %ymm8, %ymm7, %ymm8 -vpsllw $7, %ymm5, %ymm7 -vpsubw %ymm7, %ymm8, %ymm7 -vpsrlw $3, %ymm7, %ymm7 -vpsubw %ymm3, %ymm7, %ymm7 -vmovdqa 1280(%rsp), %ymm8 -vpsubw %ymm11, %ymm8, %ymm8 -vpmullw %ymm15, %ymm5, %ymm9 -vpsubw %ymm9, %ymm8, %ymm9 -vpmullw %ymm14, %ymm7, %ymm7 -vpsubw %ymm7, %ymm3, %ymm3 -vpmullw %ymm12, %ymm7, %ymm8 -vpaddw %ymm8, %ymm3, %ymm8 -vpmullw %ymm12, %ymm8, %ymm8 -vpsubw %ymm8, %ymm9, %ymm8 -vpmullw %ymm14, %ymm8, %ymm8 -vpsubw %ymm6, %ymm8, %ymm8 -vpsrlw $3, %ymm8, %ymm8 -vpsubw %ymm4, %ymm8, %ymm8 -vpsubw %ymm8, %ymm4, %ymm4 -vpsubw %ymm4, %ymm6, %ymm6 -vpmullw %ymm13, %ymm8, %ymm8 -vpsubw %ymm8, %ymm6, %ymm6 -vmovdqu 96(%rdi), %ymm9 -vpaddw %ymm9, %ymm11, %ymm9 -vmovq %xmm9, 96(%rdi) -vmovdqu 512(%rdi), %ymm9 -vpaddw %ymm9, %ymm6, %ymm9 -vmovq %xmm9, 512(%rdi) -vmovdqu 928(%rdi), %ymm9 -vpaddw %ymm9, %ymm3, %ymm9 -vmovq %xmm9, 928(%rdi) -vmovdqu 1344(%rdi), %ymm9 -vpaddw %ymm9, %ymm4, %ymm9 -vmovq %xmm9, 1344(%rdi) -vmovdqu 118(%rdi), %ymm9 -vpaddw %ymm9, %ymm7, %ymm9 -vmovq %xmm9, 118(%rdi) -vmovdqu 534(%rdi), %ymm9 -vpaddw %ymm9, %ymm8, %ymm9 -vmovq %xmm9, 534(%rdi) -vmovdqu 950(%rdi), %ymm9 -vpaddw %ymm9, %ymm5, %ymm9 -vmovq %xmm9, 950(%rdi) -vmovdqa 32(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm8 -vpunpckhwd const0(%rip), %ymm5, %ymm7 -vpslld $1, %ymm8, %ymm8 -vpslld $1, %ymm7, %ymm7 -vmovdqa 288(%rsp), %ymm4 -vpunpcklwd const0(%rip), %ymm4, %ymm3 -vpunpckhwd const0(%rip), %ymm4, %ymm4 -vmovdqa 544(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm3, %ymm9 -vpaddd %ymm6, %ymm4, %ymm10 -vpsubd %ymm8, %ymm9, %ymm9 -vpsubd %ymm7, %ymm10, %ymm10 -vpsubd %ymm11, %ymm3, %ymm11 -vpsubd %ymm6, %ymm4, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1568(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm4 -vpunpckhwd const0(%rip), %ymm11, %ymm3 -vpslld $1, %ymm4, %ymm4 -vpslld $1, %ymm3, %ymm3 -vpsubd %ymm4, %ymm9, %ymm9 -vpsubd %ymm3, %ymm10, %ymm10 -vpsrld $1, %ymm9, %ymm9 -vpsrld $1, %ymm10, %ymm10 -vpand mask32_to_16(%rip), %ymm9, %ymm9 -vpand mask32_to_16(%rip), %ymm10, %ymm10 -vpackusdw %ymm10, %ymm9, %ymm10 -vmovdqa 800(%rsp), %ymm9 -vpaddw 1056(%rsp), %ymm9, %ymm3 -vpsubw 1056(%rsp), %ymm9, %ymm9 -vpsrlw $2, %ymm9, %ymm9 -vpsubw %ymm6, %ymm9, %ymm9 -vpmullw %ymm14, %ymm9, %ymm9 -vpsllw $1, %ymm5, %ymm4 -vpsubw %ymm4, %ymm3, %ymm4 -vpsllw $7, %ymm11, %ymm3 -vpsubw %ymm3, %ymm4, %ymm3 -vpsrlw $3, %ymm3, %ymm3 -vpsubw %ymm10, %ymm3, %ymm3 -vmovdqa 1312(%rsp), %ymm4 -vpsubw %ymm5, %ymm4, %ymm4 -vpmullw %ymm15, %ymm11, %ymm7 -vpsubw %ymm7, %ymm4, %ymm7 -vpmullw %ymm14, %ymm3, %ymm3 -vpsubw %ymm3, %ymm10, %ymm10 -vpmullw %ymm12, %ymm3, %ymm4 -vpaddw %ymm4, %ymm10, %ymm4 -vpmullw %ymm12, %ymm4, %ymm4 -vpsubw %ymm4, %ymm7, %ymm4 -vpmullw %ymm14, %ymm4, %ymm4 -vpsubw %ymm6, %ymm4, %ymm4 -vpsrlw $3, %ymm4, %ymm4 -vpsubw %ymm9, %ymm4, %ymm4 -vpsubw %ymm4, %ymm9, %ymm9 -vpsubw %ymm9, %ymm6, %ymm6 -vpmullw %ymm13, %ymm4, %ymm4 -vpsubw %ymm4, %ymm6, %ymm6 -vmovdqu 200(%rdi), %ymm7 -vpaddw %ymm7, %ymm5, %ymm7 -vmovq %xmm7, 200(%rdi) -vmovdqu 616(%rdi), %ymm7 -vpaddw %ymm7, %ymm6, %ymm7 -vmovq %xmm7, 616(%rdi) -vmovdqu 1032(%rdi), %ymm7 -vpaddw %ymm7, %ymm10, %ymm7 -vmovq %xmm7, 1032(%rdi) -vmovdqu 1448(%rdi), %ymm7 -vpaddw %ymm7, %ymm9, %ymm7 -vmovq %xmm7, 1448(%rdi) -vmovdqu 222(%rdi), %ymm7 -vpaddw %ymm7, %ymm3, %ymm7 -vmovq %xmm7, 222(%rdi) -vmovdqu 638(%rdi), %ymm7 -vpaddw %ymm7, %ymm4, %ymm7 -vmovq %xmm7, 638(%rdi) -vmovdqu 1054(%rdi), %ymm7 -vpaddw %ymm7, %ymm11, %ymm7 -vmovq %xmm7, 1054(%rdi) -vmovdqa 64(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm4 -vpunpckhwd const0(%rip), %ymm11, %ymm3 -vpslld $1, %ymm4, %ymm4 -vpslld $1, %ymm3, %ymm3 -vmovdqa 320(%rsp), %ymm9 -vpunpcklwd const0(%rip), %ymm9, %ymm10 -vpunpckhwd const0(%rip), %ymm9, %ymm9 -vmovdqa 576(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm10, %ymm7 -vpaddd %ymm6, %ymm9, %ymm8 -vpsubd %ymm4, %ymm7, %ymm7 -vpsubd %ymm3, %ymm8, %ymm8 -vpsubd %ymm5, %ymm10, %ymm5 -vpsubd %ymm6, %ymm9, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1600(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm9 -vpunpckhwd const0(%rip), %ymm5, %ymm10 -vpslld $1, %ymm9, %ymm9 -vpslld $1, %ymm10, %ymm10 -vpsubd %ymm9, %ymm7, %ymm7 -vpsubd %ymm10, %ymm8, %ymm8 -vpsrld $1, %ymm7, %ymm7 -vpsrld $1, %ymm8, %ymm8 -vpand mask32_to_16(%rip), %ymm7, %ymm7 -vpand mask32_to_16(%rip), %ymm8, %ymm8 -vpackusdw %ymm8, %ymm7, %ymm8 -vmovdqa 832(%rsp), %ymm7 -vpaddw 1088(%rsp), %ymm7, %ymm10 -vpsubw 1088(%rsp), %ymm7, %ymm7 -vpsrlw $2, %ymm7, %ymm7 -vpsubw %ymm6, %ymm7, %ymm7 -vpmullw %ymm14, %ymm7, %ymm7 -vpsllw $1, %ymm11, %ymm9 -vpsubw %ymm9, %ymm10, %ymm9 -vpsllw $7, %ymm5, %ymm10 -vpsubw %ymm10, %ymm9, %ymm10 -vpsrlw $3, %ymm10, %ymm10 -vpsubw %ymm8, %ymm10, %ymm10 -vmovdqa 1344(%rsp), %ymm9 -vpsubw %ymm11, %ymm9, %ymm9 -vpmullw %ymm15, %ymm5, %ymm3 -vpsubw %ymm3, %ymm9, %ymm3 -vpmullw %ymm14, %ymm10, %ymm10 -vpsubw %ymm10, %ymm8, %ymm8 -vpmullw %ymm12, %ymm10, %ymm9 -vpaddw %ymm9, %ymm8, %ymm9 -vpmullw %ymm12, %ymm9, %ymm9 -vpsubw %ymm9, %ymm3, %ymm9 -vpmullw %ymm14, %ymm9, %ymm9 -vpsubw %ymm6, %ymm9, %ymm9 -vpsrlw $3, %ymm9, %ymm9 -vpsubw %ymm7, %ymm9, %ymm9 -vpsubw %ymm9, %ymm7, %ymm7 -vpsubw %ymm7, %ymm6, %ymm6 -vpmullw %ymm13, %ymm9, %ymm9 -vpsubw %ymm9, %ymm6, %ymm6 -vmovdqu 304(%rdi), %ymm3 -vpaddw %ymm3, %ymm11, %ymm3 -vmovq %xmm3, 304(%rdi) -vmovdqu 720(%rdi), %ymm3 -vpaddw %ymm3, %ymm6, %ymm3 -vmovq %xmm3, 720(%rdi) -vmovdqu 1136(%rdi), %ymm3 -vpaddw %ymm3, %ymm8, %ymm3 -vmovq %xmm3, 1136(%rdi) -vmovdqu 1552(%rdi), %ymm3 -vpaddw %ymm3, %ymm7, %ymm3 -vmovq %xmm3, 1552(%rdi) -vmovdqu 326(%rdi), %ymm3 -vpaddw %ymm3, %ymm10, %ymm3 -vmovq %xmm3, 326(%rdi) -vmovdqu 742(%rdi), %ymm3 -vpaddw %ymm3, %ymm9, %ymm3 -vmovq %xmm3, 742(%rdi) -vmovdqu 1158(%rdi), %ymm3 -vpaddw %ymm3, %ymm5, %ymm3 -vmovq %xmm3, 1158(%rdi) -vmovdqa 96(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm9 -vpunpckhwd const0(%rip), %ymm5, %ymm10 -vpslld $1, %ymm9, %ymm9 -vpslld $1, %ymm10, %ymm10 -vmovdqa 352(%rsp), %ymm7 -vpunpcklwd const0(%rip), %ymm7, %ymm8 -vpunpckhwd const0(%rip), %ymm7, %ymm7 -vmovdqa 608(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm8, %ymm3 -vpaddd %ymm6, %ymm7, %ymm4 -vpsubd %ymm9, %ymm3, %ymm3 -vpsubd %ymm10, %ymm4, %ymm4 -vpsubd %ymm11, %ymm8, %ymm11 -vpsubd %ymm6, %ymm7, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1632(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm7 -vpunpckhwd const0(%rip), %ymm11, %ymm8 -vpslld $1, %ymm7, %ymm7 -vpslld $1, %ymm8, %ymm8 -vpsubd %ymm7, %ymm3, %ymm3 -vpsubd %ymm8, %ymm4, %ymm4 -vpsrld $1, %ymm3, %ymm3 -vpsrld $1, %ymm4, %ymm4 -vpand mask32_to_16(%rip), %ymm3, %ymm3 -vpand mask32_to_16(%rip), %ymm4, %ymm4 -vpackusdw %ymm4, %ymm3, %ymm4 -vmovdqa 864(%rsp), %ymm3 -vpaddw 1120(%rsp), %ymm3, %ymm8 -vpsubw 1120(%rsp), %ymm3, %ymm3 -vpsrlw $2, %ymm3, %ymm3 -vpsubw %ymm6, %ymm3, %ymm3 -vpmullw %ymm14, %ymm3, %ymm3 -vpsllw $1, %ymm5, %ymm7 -vpsubw %ymm7, %ymm8, %ymm7 -vpsllw $7, %ymm11, %ymm8 -vpsubw %ymm8, %ymm7, %ymm8 -vpsrlw $3, %ymm8, %ymm8 -vpsubw %ymm4, %ymm8, %ymm8 -vmovdqa 1376(%rsp), %ymm7 -vpsubw %ymm5, %ymm7, %ymm7 -vpmullw %ymm15, %ymm11, %ymm10 -vpsubw %ymm10, %ymm7, %ymm10 -vpmullw %ymm14, %ymm8, %ymm8 -vpsubw %ymm8, %ymm4, %ymm4 -vpmullw %ymm12, %ymm8, %ymm7 -vpaddw %ymm7, %ymm4, %ymm7 -vpmullw %ymm12, %ymm7, %ymm7 -vpsubw %ymm7, %ymm10, %ymm7 -vpmullw %ymm14, %ymm7, %ymm7 -vpsubw %ymm6, %ymm7, %ymm7 -vpsrlw $3, %ymm7, %ymm7 -vpsubw %ymm3, %ymm7, %ymm7 -vpsubw %ymm7, %ymm3, %ymm3 -vpsubw %ymm3, %ymm6, %ymm6 -vpmullw %ymm13, %ymm7, %ymm7 -vpsubw %ymm7, %ymm6, %ymm6 -vmovdqu 408(%rdi), %ymm10 -vpaddw %ymm10, %ymm5, %ymm10 -vmovq %xmm10, 408(%rdi) -vmovdqu 824(%rdi), %ymm10 -vpaddw %ymm10, %ymm6, %ymm10 -vmovq %xmm10, 824(%rdi) -vmovdqu 1240(%rdi), %ymm10 -vpaddw %ymm10, %ymm4, %ymm10 -vmovq %xmm10, 1240(%rdi) -vmovdqu 14(%rdi), %ymm10 -vpaddw %ymm10, %ymm3, %ymm10 -vmovq %xmm10, 14(%rdi) -vmovdqu 430(%rdi), %ymm10 -vpaddw %ymm10, %ymm8, %ymm10 -vmovq %xmm10, 430(%rdi) -vmovdqu 846(%rdi), %ymm10 -vpaddw %ymm10, %ymm7, %ymm10 -vmovq %xmm10, 846(%rdi) -vmovdqu 1262(%rdi), %ymm10 -vpaddw %ymm10, %ymm11, %ymm10 -vmovq %xmm10, 1262(%rdi) -vmovdqa 128(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm7 -vpunpckhwd const0(%rip), %ymm11, %ymm8 -vpslld $1, %ymm7, %ymm7 -vpslld $1, %ymm8, %ymm8 -vmovdqa 384(%rsp), %ymm3 -vpunpcklwd const0(%rip), %ymm3, %ymm4 -vpunpckhwd const0(%rip), %ymm3, %ymm3 -vmovdqa 640(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm4, %ymm10 -vpaddd %ymm6, %ymm3, %ymm9 -vpsubd %ymm7, %ymm10, %ymm10 -vpsubd %ymm8, %ymm9, %ymm9 -vpsubd %ymm5, %ymm4, %ymm5 -vpsubd %ymm6, %ymm3, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1664(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm3 -vpunpckhwd const0(%rip), %ymm5, %ymm4 -vpslld $1, %ymm3, %ymm3 -vpslld $1, %ymm4, %ymm4 -vpsubd %ymm3, %ymm10, %ymm10 -vpsubd %ymm4, %ymm9, %ymm9 -vpsrld $1, %ymm10, %ymm10 -vpsrld $1, %ymm9, %ymm9 -vpand mask32_to_16(%rip), %ymm10, %ymm10 -vpand mask32_to_16(%rip), %ymm9, %ymm9 -vpackusdw %ymm9, %ymm10, %ymm9 -vmovdqa 896(%rsp), %ymm10 -vpaddw 1152(%rsp), %ymm10, %ymm4 -vpsubw 1152(%rsp), %ymm10, %ymm10 -vpsrlw $2, %ymm10, %ymm10 -vpsubw %ymm6, %ymm10, %ymm10 -vpmullw %ymm14, %ymm10, %ymm10 -vpsllw $1, %ymm11, %ymm3 -vpsubw %ymm3, %ymm4, %ymm3 -vpsllw $7, %ymm5, %ymm4 -vpsubw %ymm4, %ymm3, %ymm4 -vpsrlw $3, %ymm4, %ymm4 -vpsubw %ymm9, %ymm4, %ymm4 -vmovdqa 1408(%rsp), %ymm3 -vpsubw %ymm11, %ymm3, %ymm3 -vpmullw %ymm15, %ymm5, %ymm8 -vpsubw %ymm8, %ymm3, %ymm8 -vpmullw %ymm14, %ymm4, %ymm4 -vpsubw %ymm4, %ymm9, %ymm9 -vpmullw %ymm12, %ymm4, %ymm3 -vpaddw %ymm3, %ymm9, %ymm3 -vpmullw %ymm12, %ymm3, %ymm3 -vpsubw %ymm3, %ymm8, %ymm3 -vpmullw %ymm14, %ymm3, %ymm3 -vpsubw %ymm6, %ymm3, %ymm3 -vpsrlw $3, %ymm3, %ymm3 -vpsubw %ymm10, %ymm3, %ymm3 -vpsubw %ymm3, %ymm10, %ymm10 -vpsubw %ymm10, %ymm6, %ymm6 -vpmullw %ymm13, %ymm3, %ymm3 -vpsubw %ymm3, %ymm6, %ymm6 -vmovdqu 512(%rdi), %ymm8 -vpaddw %ymm8, %ymm11, %ymm8 -vmovq %xmm8, 512(%rdi) -vmovdqu 928(%rdi), %ymm8 -vpaddw %ymm8, %ymm6, %ymm8 -vmovq %xmm8, 928(%rdi) -vmovdqu 1344(%rdi), %ymm8 -vpaddw %ymm8, %ymm9, %ymm8 -vmovq %xmm8, 1344(%rdi) -vmovdqu 118(%rdi), %ymm8 -vpaddw %ymm8, %ymm10, %ymm8 -vmovq %xmm8, 118(%rdi) -vmovdqu 534(%rdi), %ymm8 -vpaddw %ymm8, %ymm4, %ymm8 -vmovq %xmm8, 534(%rdi) -vmovdqu 950(%rdi), %ymm8 -vpaddw %ymm8, %ymm3, %ymm8 -vmovq %xmm8, 950(%rdi) -vmovdqu 1366(%rdi), %ymm8 -vpaddw %ymm8, %ymm5, %ymm8 -vmovq %xmm8, 1366(%rdi) -vmovdqa 160(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm3 -vpunpckhwd const0(%rip), %ymm5, %ymm4 -vpslld $1, %ymm3, %ymm3 -vpslld $1, %ymm4, %ymm4 -vmovdqa 416(%rsp), %ymm10 -vpunpcklwd const0(%rip), %ymm10, %ymm9 -vpunpckhwd const0(%rip), %ymm10, %ymm10 -vmovdqa 672(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm9, %ymm8 -vpaddd %ymm6, %ymm10, %ymm7 -vpsubd %ymm3, %ymm8, %ymm8 -vpsubd %ymm4, %ymm7, %ymm7 -vpsubd %ymm11, %ymm9, %ymm11 -vpsubd %ymm6, %ymm10, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1696(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm10 -vpunpckhwd const0(%rip), %ymm11, %ymm9 -vpslld $1, %ymm10, %ymm10 -vpslld $1, %ymm9, %ymm9 -vpsubd %ymm10, %ymm8, %ymm8 -vpsubd %ymm9, %ymm7, %ymm7 -vpsrld $1, %ymm8, %ymm8 -vpsrld $1, %ymm7, %ymm7 -vpand mask32_to_16(%rip), %ymm8, %ymm8 -vpand mask32_to_16(%rip), %ymm7, %ymm7 -vpackusdw %ymm7, %ymm8, %ymm7 -vmovdqa 928(%rsp), %ymm8 -vpaddw 1184(%rsp), %ymm8, %ymm9 -vpsubw 1184(%rsp), %ymm8, %ymm8 -vpsrlw $2, %ymm8, %ymm8 -vpsubw %ymm6, %ymm8, %ymm8 -vpmullw %ymm14, %ymm8, %ymm8 -vpsllw $1, %ymm5, %ymm10 -vpsubw %ymm10, %ymm9, %ymm10 -vpsllw $7, %ymm11, %ymm9 -vpsubw %ymm9, %ymm10, %ymm9 -vpsrlw $3, %ymm9, %ymm9 -vpsubw %ymm7, %ymm9, %ymm9 -vmovdqa 1440(%rsp), %ymm10 -vpsubw %ymm5, %ymm10, %ymm10 -vpmullw %ymm15, %ymm11, %ymm4 -vpsubw %ymm4, %ymm10, %ymm4 -vpmullw %ymm14, %ymm9, %ymm9 -vpsubw %ymm9, %ymm7, %ymm7 -vpmullw %ymm12, %ymm9, %ymm10 -vpaddw %ymm10, %ymm7, %ymm10 -vpmullw %ymm12, %ymm10, %ymm10 -vpsubw %ymm10, %ymm4, %ymm10 -vpmullw %ymm14, %ymm10, %ymm10 -vpsubw %ymm6, %ymm10, %ymm10 -vpsrlw $3, %ymm10, %ymm10 -vpsubw %ymm8, %ymm10, %ymm10 -vpsubw %ymm10, %ymm8, %ymm8 -vpsubw %ymm8, %ymm6, %ymm6 -vpmullw %ymm13, %ymm10, %ymm10 -vpsubw %ymm10, %ymm6, %ymm6 -vmovdqu 616(%rdi), %ymm4 -vpaddw %ymm4, %ymm5, %ymm4 -vmovq %xmm4, 616(%rdi) -vmovdqu 1032(%rdi), %ymm4 -vpaddw %ymm4, %ymm6, %ymm4 -vmovq %xmm4, 1032(%rdi) -vmovdqu 1448(%rdi), %ymm4 -vpaddw %ymm4, %ymm7, %ymm4 -vmovq %xmm4, 1448(%rdi) -vmovdqu 222(%rdi), %ymm4 -vpaddw %ymm4, %ymm8, %ymm4 -vmovq %xmm4, 222(%rdi) -vmovdqu 638(%rdi), %ymm4 -vpaddw %ymm4, %ymm9, %ymm4 -vmovq %xmm4, 638(%rdi) -vmovdqu 1054(%rdi), %ymm4 -vpaddw %ymm4, %ymm10, %ymm4 -vmovq %xmm4, 1054(%rdi) -vmovdqu 1470(%rdi), %ymm4 -vpaddw %ymm4, %ymm11, %ymm4 -vmovq %xmm4, 1470(%rdi) -vmovdqa 192(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm10 -vpunpckhwd const0(%rip), %ymm11, %ymm9 -vpslld $1, %ymm10, %ymm10 -vpslld $1, %ymm9, %ymm9 -vmovdqa 448(%rsp), %ymm8 -vpunpcklwd const0(%rip), %ymm8, %ymm7 -vpunpckhwd const0(%rip), %ymm8, %ymm8 -vmovdqa 704(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm7, %ymm4 -vpaddd %ymm6, %ymm8, %ymm3 -vpsubd %ymm10, %ymm4, %ymm4 -vpsubd %ymm9, %ymm3, %ymm3 -vpsubd %ymm5, %ymm7, %ymm5 -vpsubd %ymm6, %ymm8, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1728(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm8 -vpunpckhwd const0(%rip), %ymm5, %ymm7 -vpslld $1, %ymm8, %ymm8 -vpslld $1, %ymm7, %ymm7 -vpsubd %ymm8, %ymm4, %ymm4 -vpsubd %ymm7, %ymm3, %ymm3 -vpsrld $1, %ymm4, %ymm4 -vpsrld $1, %ymm3, %ymm3 -vpand mask32_to_16(%rip), %ymm4, %ymm4 -vpand mask32_to_16(%rip), %ymm3, %ymm3 -vpackusdw %ymm3, %ymm4, %ymm3 -vmovdqa 960(%rsp), %ymm4 -vpaddw 1216(%rsp), %ymm4, %ymm7 -vpsubw 1216(%rsp), %ymm4, %ymm4 -vpsrlw $2, %ymm4, %ymm4 -vpsubw %ymm6, %ymm4, %ymm4 -vpmullw %ymm14, %ymm4, %ymm4 -vpsllw $1, %ymm11, %ymm8 -vpsubw %ymm8, %ymm7, %ymm8 -vpsllw $7, %ymm5, %ymm7 -vpsubw %ymm7, %ymm8, %ymm7 -vpsrlw $3, %ymm7, %ymm7 -vpsubw %ymm3, %ymm7, %ymm7 -vmovdqa 1472(%rsp), %ymm8 -vpsubw %ymm11, %ymm8, %ymm8 -vpmullw %ymm15, %ymm5, %ymm9 -vpsubw %ymm9, %ymm8, %ymm9 -vpmullw %ymm14, %ymm7, %ymm7 -vpsubw %ymm7, %ymm3, %ymm3 -vpmullw %ymm12, %ymm7, %ymm8 -vpaddw %ymm8, %ymm3, %ymm8 -vpmullw %ymm12, %ymm8, %ymm8 -vpsubw %ymm8, %ymm9, %ymm8 -vpmullw %ymm14, %ymm8, %ymm8 -vpsubw %ymm6, %ymm8, %ymm8 -vpsrlw $3, %ymm8, %ymm8 -vpsubw %ymm4, %ymm8, %ymm8 -vpsubw %ymm8, %ymm4, %ymm4 -vpsubw %ymm4, %ymm6, %ymm6 -vpmullw %ymm13, %ymm8, %ymm8 -vpsubw %ymm8, %ymm6, %ymm6 -vmovdqu 720(%rdi), %ymm9 -vpaddw %ymm9, %ymm11, %ymm9 -vmovq %xmm9, 720(%rdi) -vmovdqu 1136(%rdi), %ymm9 -vpaddw %ymm9, %ymm6, %ymm9 -vmovq %xmm9, 1136(%rdi) -vmovdqu 1552(%rdi), %ymm9 -vpaddw %ymm9, %ymm3, %ymm9 -vmovq %xmm9, 1552(%rdi) -vmovdqu 326(%rdi), %ymm9 -vpaddw %ymm9, %ymm4, %ymm9 -vmovq %xmm9, 326(%rdi) -vmovdqu 742(%rdi), %ymm9 -vpaddw %ymm9, %ymm7, %ymm9 -vmovq %xmm9, 742(%rdi) -vmovdqu 1158(%rdi), %ymm9 -vpaddw %ymm9, %ymm8, %ymm9 -vmovq %xmm9, 1158(%rdi) -vmovdqu 1574(%rdi), %ymm9 -vpaddw %ymm9, %ymm5, %ymm9 -vmovq %xmm9, 1574(%rdi) -vmovdqa 224(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm8 -vpunpckhwd const0(%rip), %ymm5, %ymm7 -vpslld $1, %ymm8, %ymm8 -vpslld $1, %ymm7, %ymm7 -vmovdqa 480(%rsp), %ymm4 -vpunpcklwd const0(%rip), %ymm4, %ymm3 -vpunpckhwd const0(%rip), %ymm4, %ymm4 -vmovdqa 736(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm3, %ymm9 -vpaddd %ymm6, %ymm4, %ymm10 -vpsubd %ymm8, %ymm9, %ymm9 -vpsubd %ymm7, %ymm10, %ymm10 -vpsubd %ymm11, %ymm3, %ymm11 -vpsubd %ymm6, %ymm4, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1760(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm4 -vpunpckhwd const0(%rip), %ymm11, %ymm3 -vpslld $1, %ymm4, %ymm4 -vpslld $1, %ymm3, %ymm3 -vpsubd %ymm4, %ymm9, %ymm9 -vpsubd %ymm3, %ymm10, %ymm10 -vpsrld $1, %ymm9, %ymm9 -vpsrld $1, %ymm10, %ymm10 -vpand mask32_to_16(%rip), %ymm9, %ymm9 -vpand mask32_to_16(%rip), %ymm10, %ymm10 -vpackusdw %ymm10, %ymm9, %ymm10 -vmovdqa 992(%rsp), %ymm9 -vpaddw 1248(%rsp), %ymm9, %ymm3 -vpsubw 1248(%rsp), %ymm9, %ymm9 -vpsrlw $2, %ymm9, %ymm9 -vpsubw %ymm6, %ymm9, %ymm9 -vpmullw %ymm14, %ymm9, %ymm9 -vpsllw $1, %ymm5, %ymm4 -vpsubw %ymm4, %ymm3, %ymm4 -vpsllw $7, %ymm11, %ymm3 -vpsubw %ymm3, %ymm4, %ymm3 -vpsrlw $3, %ymm3, %ymm3 -vpsubw %ymm10, %ymm3, %ymm3 -vmovdqa 1504(%rsp), %ymm4 -vpsubw %ymm5, %ymm4, %ymm4 -vpmullw %ymm15, %ymm11, %ymm7 -vpsubw %ymm7, %ymm4, %ymm7 -vpmullw %ymm14, %ymm3, %ymm3 -vpsubw %ymm3, %ymm10, %ymm10 -vpmullw %ymm12, %ymm3, %ymm4 -vpaddw %ymm4, %ymm10, %ymm4 -vpmullw %ymm12, %ymm4, %ymm4 -vpsubw %ymm4, %ymm7, %ymm4 -vpmullw %ymm14, %ymm4, %ymm4 -vpsubw %ymm6, %ymm4, %ymm4 -vpsrlw $3, %ymm4, %ymm4 -vpsubw %ymm9, %ymm4, %ymm4 -vpsubw %ymm4, %ymm9, %ymm9 -vpsubw %ymm9, %ymm6, %ymm6 -vpmullw %ymm13, %ymm4, %ymm4 -vpsubw %ymm4, %ymm6, %ymm6 -vmovdqu 824(%rdi), %ymm7 -vpaddw %ymm7, %ymm5, %ymm7 -vmovq %xmm7, 824(%rdi) -vmovdqu 1240(%rdi), %ymm7 -vpaddw %ymm7, %ymm6, %ymm7 -vmovq %xmm7, 1240(%rdi) -vmovdqu 14(%rdi), %ymm7 -vpaddw %ymm7, %ymm10, %ymm7 -vmovq %xmm7, 14(%rdi) -vmovdqu 430(%rdi), %ymm7 -vpaddw %ymm7, %ymm9, %ymm7 -vmovq %xmm7, 430(%rdi) -vmovdqu 846(%rdi), %ymm7 -vpaddw %ymm7, %ymm3, %ymm7 -vmovq %xmm7, 846(%rdi) -vmovdqu 1262(%rdi), %ymm7 -vpaddw %ymm7, %ymm4, %ymm7 -vmovq %xmm7, 1262(%rdi) -mov %r8, %rsp -pop %r12 -ret diff --git a/src/kem/ntru/ntruhps4096821/avx2/poly_rq_to_s3.s b/src/kem/ntru/ntruhps4096821/avx2/poly_rq_to_s3.s deleted file mode 100644 index 584d0035..00000000 --- a/src/kem/ntru/ntruhps4096821/avx2/poly_rq_to_s3.s +++ /dev/null @@ -1,1353 +0,0 @@ -.data -.p2align 5 -mask_modq: -.word 4095 -.word 4095 -.word 4095 -.word 4095 -.word 4095 -.word 4095 -.word 4095 -.word 4095 -.word 4095 -.word 4095 -.word 4095 -.word 4095 -.word 4095 -.word 4095 -.word 4095 -.word 4095 -mask_ff: -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -mask_f: -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -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 -.text -.global PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_to_S3 -.global _PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_to_S3 -PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_to_S3: -_PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_to_S3: -vmovdqa mask_modq(%rip), %ymm6 -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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %ymm1, %ymm14 -vpxor %ymm14, %ymm0, %ymm1 -vmovdqa %ymm1, 1632(%rdi) -ret diff --git a/src/kem/ntru/ntruhps4096821/avx2/poly_s3_inv.c b/src/kem/ntru/ntruhps4096821/avx2/poly_s3_inv.c deleted file mode 100644 index 5f91f715..00000000 --- a/src/kem/ntru/ntruhps4096821/avx2/poly_s3_inv.c +++ /dev/null @@ -1,685 +0,0 @@ -#include "poly.h" - -#include - -typedef signed char small; - -#define p 820 -#define ppad 1024 -#define numvec 4 - -typedef __m256i vec256; - -/* -This code stores 1024-coeff poly as vec256[4]. -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_divx_4(vec256 *f) { - vec256 f0 = f[0]; - vec256 f1 = f[1]; - vec256 f2 = f[2]; - vec256 f3 = f[3]; - - 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)); - unsigned long long low3 = _mm_cvtsi128_si64(_mm256_castsi256_si128(f3)); - - low0 = (low0 >> 1) | (low1 << 63); - low1 = (low1 >> 1) | (low2 << 63); - low2 = (low2 >> 1) | (low3 << 63); - low3 = low3 >> 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); - f3 = _mm256_blend_epi32(f3, _mm256_set_epi64x(0, 0, 0, low3), 0x3); - - f[0] = _mm256_permute4x64_epi64(f0, 0x39); - f[1] = _mm256_permute4x64_epi64(f1, 0x39); - f[2] = _mm256_permute4x64_epi64(f2, 0x39); - f[3] = _mm256_permute4x64_epi64(f3, 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 inline void vec256_timesx_4(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); - vec256 f3 = _mm256_permute4x64_epi64(f[3], 0x93); - - 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)); - unsigned long long low3 = _mm_cvtsi128_si64(_mm256_castsi256_si128(f3)); - - low3 = (low3 << 1) | (low2 >> 63); - low2 = (low2 << 1) | (low1 >> 63); - 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); - f2 = _mm256_blend_epi32(f2, _mm256_set_epi64x(0, 0, 0, low2), 0x3); - f3 = _mm256_blend_epi32(f3, _mm256_set_epi64x(0, 0, 0, low3), 0x3); - - f[0] = f0; - f[1] = f1; - f[2] = f2; - f[3] = f3; -} - - -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(-1, -1, -1, -1, -1, -1, -1, -1); - F0[3] = _mm256_set_epi32(0, 8191, 0, 8191, 0, 8191, 0, 16383); - F1[0] = _mm256_set1_epi32(0); - F1[1] = _mm256_set1_epi32(0); - F1[2] = _mm256_set1_epi32(0); - F1[3] = _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); - V0[3] = _mm256_set1_epi32(0); - V1[3] = _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); - R0[3] = _mm256_set1_epi32(0); - R1[3] = _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, 4, swapvec); - vec256_swap(F1, G1, 4, swapvec); - - c0vec = _mm256_set1_epi32(c0); - c1vec = _mm256_set1_epi32(c1); - - vec256_eliminate(F0, F1, G0, G1, 4, c0vec, c1vec); - vec256_divx_4(G0); - vec256_divx_4(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, 4, swapvec); - vec256_swap(F1, G1, 4, swapvec); - - c0vec = _mm256_set1_epi32(c0); - c1vec = _mm256_set1_epi32(c1); - - vec256_eliminate(F0, F1, G0, G1, 4, c0vec, c1vec); - vec256_divx_4(G0); - vec256_divx_4(G1); - - vec256_swap(V0, R0, 2, swapvec); - vec256_swap(V1, R1, 2, swapvec); - vec256_eliminate(V0, V1, R0, R1, 2, 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, 4, swapvec); - vec256_swap(F1, G1, 4, swapvec); - - c0vec = _mm256_set1_epi32(c0); - c1vec = _mm256_set1_epi32(c1); - - vec256_eliminate(F0, F1, G0, G1, 4, c0vec, c1vec); - vec256_divx_4(G0); - vec256_divx_4(G1); - - vec256_swap(V0, R0, 3, swapvec); - vec256_swap(V1, R1, 3, swapvec); - vec256_eliminate(V0, V1, R0, R1, 3, c0vec, c1vec); - } - - for (loop = 103; loop > 0; --loop) { - vec256_timesx_4(V0); - vec256_timesx_4(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, 4, swapvec); - vec256_swap(F1, G1, 4, swapvec); - - c0vec = _mm256_set1_epi32(c0); - c1vec = _mm256_set1_epi32(c1); - - vec256_eliminate(F0, F1, G0, G1, 4, c0vec, c1vec); - vec256_divx_4(G0); - vec256_divx_4(G1); - - vec256_swap(V0, R0, 4, swapvec); - vec256_swap(V1, R1, 4, swapvec); - vec256_eliminate(V0, V1, R0, R1, 4, c0vec, c1vec); - } - - for (loop = 256; loop > 0; --loop) { - vec256_timesx_4(V0); - vec256_timesx_4(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, 4, swapvec); - vec256_swap(V1, R1, 4, swapvec); - vec256_eliminate(V0, V1, R0, R1, 4, c0vec, c1vec); - } - - for (loop = 256; loop > 0; --loop) { - vec256_timesx_4(V0); - vec256_timesx_4(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, 4, swapvec); - vec256_swap(V1, R1, 4, swapvec); - vec256_eliminate(V0, V1, R0, R1, 4, c0vec, c1vec); - } - - for (loop = 256; loop > 0; --loop) { - vec256_timesx_4(V0); - vec256_timesx_4(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, 4, swapvec); - vec256_swap(V1, R1, 4, swapvec); - vec256_eliminate(V0, V1, R0, R1, 4, 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_NTRUHPS4096821_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/src/kem/ntru/ntruhps4096821/avx2/sample.c b/src/kem/ntru/ntruhps4096821/avx2/sample.c deleted file mode 100644 index 820d19d2..00000000 --- a/src/kem/ntru/ntruhps4096821/avx2/sample.c +++ /dev/null @@ -1,45 +0,0 @@ -#include "sample.h" - -void PQCLEAN_NTRUHPS4096821_AVX2_sample_fg(poly *f, poly *g, const unsigned char uniformbytes[NTRU_SAMPLE_FG_BYTES]) { - - PQCLEAN_NTRUHPS4096821_AVX2_sample_iid(f, uniformbytes); - PQCLEAN_NTRUHPS4096821_AVX2_sample_fixed_type(g, uniformbytes + NTRU_SAMPLE_IID_BYTES); -} - -void PQCLEAN_NTRUHPS4096821_AVX2_sample_rm(poly *r, poly *m, const unsigned char uniformbytes[NTRU_SAMPLE_RM_BYTES]) { - - PQCLEAN_NTRUHPS4096821_AVX2_sample_iid(r, uniformbytes); - PQCLEAN_NTRUHPS4096821_AVX2_sample_fixed_type(m, uniformbytes + NTRU_SAMPLE_IID_BYTES); -} - - -void PQCLEAN_NTRUHPS4096821_AVX2_sample_fixed_type(poly *r, const unsigned char u[NTRU_SAMPLE_FT_BYTES]) { - // Assumes NTRU_SAMPLE_FT_BYTES = ceil(30*(n-1)/8) - - int32_t s[NTRU_N - 1]; - int i; - - // Use 30 bits of u per word - for (i = 0; i < (NTRU_N - 1) / 4; i++) { - s[4 * i + 0] = (u[15 * i + 0] << 2) + (u[15 * i + 1] << 10) + (u[15 * i + 2] << 18) + ((uint32_t) u[15 * i + 3] << 26); - s[4 * i + 1] = ((u[15 * i + 3] & 0xc0) >> 4) + (u[15 * i + 4] << 4) + (u[15 * i + 5] << 12) + (u[15 * i + 6] << 20) + ((uint32_t) u[15 * i + 7] << 28); - s[4 * i + 2] = ((u[15 * i + 7] & 0xf0) >> 2) + (u[15 * i + 8] << 6) + (u[15 * i + 9] << 14) + (u[15 * i + 10] << 22) + ((uint32_t) u[15 * i + 11] << 30); - s[4 * i + 3] = (u[15 * i + 11] & 0xfc) + (u[15 * i + 12] << 8) + (u[15 * i + 13] << 16) + ((uint32_t) u[15 * i + 14] << 24); - } - - for (i = 0; i < NTRU_WEIGHT / 2; i++) { - s[i] |= 1; - } - - for (i = NTRU_WEIGHT / 2; i < NTRU_WEIGHT; i++) { - s[i] |= 2; - } - - PQCLEAN_NTRUHPS4096821_AVX2_crypto_sort_int32(s, NTRU_N - 1); - - for (i = 0; i < NTRU_N - 1; i++) { - r->coeffs[i] = ((uint16_t) (s[i] & 3)); - } - - r->coeffs[NTRU_N - 1] = 0; -} diff --git a/src/kem/ntru/ntruhps4096821/avx2/sample.h b/src/kem/ntru/ntruhps4096821/avx2/sample.h deleted file mode 100644 index 73649dc0..00000000 --- a/src/kem/ntru/ntruhps4096821/avx2/sample.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef SAMPLE_H -#define SAMPLE_H - -#include "params.h" -#include "poly.h" - -#include "crypto_sort_int32.h" - -void PQCLEAN_NTRUHPS4096821_AVX2_sample_fg(poly *f, poly *g, const unsigned char uniformbytes[NTRU_SAMPLE_FG_BYTES]); -void PQCLEAN_NTRUHPS4096821_AVX2_sample_rm(poly *r, poly *m, const unsigned char uniformbytes[NTRU_SAMPLE_RM_BYTES]); - -void PQCLEAN_NTRUHPS4096821_AVX2_sample_iid(poly *r, const unsigned char uniformbytes[NTRU_SAMPLE_IID_BYTES]); - -void PQCLEAN_NTRUHPS4096821_AVX2_sample_fixed_type(poly *r, const unsigned char uniformbytes[NTRU_SAMPLE_FT_BYTES]); - - -#endif diff --git a/src/kem/ntru/ntruhps4096821/avx2/sample_iid.c b/src/kem/ntru/ntruhps4096821/avx2/sample_iid.c deleted file mode 100644 index 125178a6..00000000 --- a/src/kem/ntru/ntruhps4096821/avx2/sample_iid.c +++ /dev/null @@ -1,21 +0,0 @@ -#include - -#include "sample.h" - -extern void PQCLEAN_NTRUHPS4096821_AVX2_vec32_sample_iid(poly *r, const unsigned char uniformbytes[PAD32(NTRU_SAMPLE_IID_BYTES)]); - -void PQCLEAN_NTRUHPS4096821_AVX2_sample_iid(poly *r, const unsigned char uniformbytes[NTRU_SAMPLE_IID_BYTES]) { - int i; - union { /* align to 32 byte boundary for vmovdqa */ - unsigned char b[PAD32(NTRU_SAMPLE_IID_BYTES)]; - __m256i b_x32[PAD32(NTRU_SAMPLE_IID_BYTES) / 32]; - } buffer; - - for (i = 0; i < NTRU_SAMPLE_IID_BYTES; i++) { - buffer.b[i] = uniformbytes[i]; - } - for (i = NTRU_SAMPLE_IID_BYTES; i < PAD32(NTRU_SAMPLE_IID_BYTES); i++) { - buffer.b[i] = 0; - } - PQCLEAN_NTRUHPS4096821_AVX2_vec32_sample_iid(r, buffer.b); -} diff --git a/src/kem/ntru/ntruhps4096821/avx2/square_102_821_shufbytes.s b/src/kem/ntru/ntruhps4096821/avx2/square_102_821_shufbytes.s deleted file mode 100644 index 0b15b8bb..00000000 --- a/src/kem/ntru/ntruhps4096821/avx2/square_102_821_shufbytes.s +++ /dev/null @@ -1,9577 +0,0 @@ -.data -.p2align 5 -mask_0_1: -.byte 0 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 9 -.byte 11 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 4 -.byte 6 -.byte 255 -.byte 255 -.byte 1 - -mask_1_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x1 -.word 0x200 - -mask_2_1: -.word 0x0 -.word 0x4 -.word 0x800 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_3_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 - -mask_4_1: -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 - -mask_5_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x100 - -mask_6_1: -.word 0x0 -.word 0x2 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_7_1: -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 - -mask_8_1: -.word 0x1000 -.word 0x0 -.word 0x20 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_9_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x2000 -.word 0x0 -.word 0x40 -.word 0x0 - -mask_10_1: -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_11_1: -.word 0x800 -.word 0x0 -.word 0x10 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_12_1: -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 15 -.byte 255 - -mask_13_1: -.word 0x0 -.word 0x2 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 - -mask_14_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x20 -.word 0x4000 -.word 0x0 -.word 0x0 - -mask_15_1: -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 - -mask_16_1: -.word 0x0 -.word 0x1 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 - -mask_17_1: -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 7 -.byte 9 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 12 -.byte 255 - -mask_18_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x8 -.word 0x1000 -.word 0x0 -.word 0x20 -.word 0x0 - -mask_19_1: -.word 0x400 -.word 0x0 -.word 0x8 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 - -mask_20_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_21_1: -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_22_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x4 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_23_1: -.word 0x200 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_24_1: -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 - -mask_25_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x10 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x800 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_26_1: -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x8000 -.word 0x0 - -mask_27_1: -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_28_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x8 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x400 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_29_1: -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_30_1: -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 - -mask_31_1: -.word 0x200 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x40 - -mask_32_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x2000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x2 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_33_1: -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 255 - -mask_34_1: -.word 0x100 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x20 - -mask_35_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_36_1: -.byte 255 -.byte 1 -.byte 255 -.byte 0 -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 - -mask_37_1: -.word 0x4000 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x4000 -.word 0x0 - -mask_38_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x200 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_39_1: -.byte 255 -.byte 0 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 - -mask_40_1: -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x2000 -.word 0x0 - -mask_41_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_42_1: -.byte 2 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 1 -.byte 3 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 - -mask_43_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x1000 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_44_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x800 -.word 0x0 -.word 0x10 - -mask_45_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_46_1: -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_47_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x800 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_48_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_49_1: -.byte 15 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 4 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 15 - -mask_50_1: -.word 0x40 -.word 0x8000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_51_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x8 -.word 0x1000 -.word 0x0 - -mask_52_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 - -mask_53_1: -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_54_1: -.word 0x20 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_55_1: -.byte 255 -.byte 255 -.byte 10 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 - -mask_56_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x400 -.word 0x0 -.word 0x8 - -mask_57_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x2 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_58_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_59_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_60_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 255 - -mask_61_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x200 -.word 0x0 -.word 0x4 - -mask_62_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_63_1: -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 0 -.byte 15 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 1 -.byte 255 -.byte 13 -.byte 15 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 12 - -mask_64_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x4 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x200 -.word 0x0 -.word 0x4 -.word 0x800 -.word 0x0 - -mask_65_1: -.word 0x10 -.word 0x2000 -.word 0x0 -.word 0x40 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 - -mask_66_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_67_1: -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_68_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x2 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 - -mask_69_1: -.word 0x8 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_70_1: -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 2 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 15 -.byte 255 -.byte 255 - -mask_71_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_72_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x8000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 - -mask_73_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 - -mask_74_1: -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_75_1: -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_76_1: -.byte 8 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 15 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 9 - -mask_77_1: -.word 0x8 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x1000 - -mask_78_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x1 -.word 0x200 -.word 0x20 -.word 0x4000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 - -mask_79_1: -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 - -mask_80_1: -.word 0x4 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x800 - -mask_81_1: -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_82_1: -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 - -mask_83_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x400 -.word 0x0 -.word 0x8 -.word 0x1000 -.word 0x0 -.word 0x20 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_84_1: -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 - -mask_85_1: -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_86_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x200 -.word 0x0 -.word 0x4 -.word 0x800 -.word 0x0 -.word 0x10 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_87_1: -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_88_1: -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 0 -.byte 15 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 - -mask_89_1: -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x40 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x2000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_90_1: -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x2 -.word 0x400 - -mask_91_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_92_1: -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_93_1: -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x20 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x1000 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_94_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_95_1: -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 7 -.byte 9 -.byte 255 -.byte 255 - -mask_96_1: -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x100 -.word 0x0 - -mask_97_1: -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x8000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_98_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 - -mask_99_1: -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_100_1: -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_101_1: -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_102_1: -.byte 15 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 - -mask_103_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x8 -.word 0x1000 -.word 0x0 - -mask_104_1: -.word 0x20 -.word 0x4000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_105_1: -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 - -mask_106_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x4 -.word 0x800 -.word 0x0 - -mask_107_1: -.word 0x10 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_108_1: -.byte 255 -.byte 255 -.byte 11 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 - -mask_109_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x2 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_110_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x200 -.word 0x0 -.word 0x4 - -mask_111_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_112_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_113_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_114_1: -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 2 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 13 - -mask_115_1: -.word 0x10 -.word 0x2000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 - -mask_116_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x2 -.word 0x400 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x2 -.word 0x400 -.word 0x0 - -mask_117_1: -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 - -mask_118_1: -.word 0x8 -.word 0x1000 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 - -mask_119_1: -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 2 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_120_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x8000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 - -mask_121_1: -.word 0x0 -.word 0x40 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_122_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 - -mask_123_1: -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_124_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_125_1: -.word 0x0 -.word 0x20 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_126_1: -.byte 8 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 5 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 15 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 0 -.byte 2 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 9 - -mask_127_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x1 -.word 0x200 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 - -mask_128_1: -.word 0x4 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x800 - -mask_129_1: -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_130_1: -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_131_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_132_1: -.word 0x2 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_133_1: -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 - -mask_134_1: -.word 0x0 -.word 0x20 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 - -mask_135_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x200 -.word 0x0 -.word 0x4 -.word 0x800 -.word 0x0 -.word 0x10 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_136_1: -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 - -mask_137_1: -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 - -mask_138_1: -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 - -mask_139_1: -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x400 - -mask_140_1: -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x20 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x1000 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_141_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_142_1: -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 - -mask_143_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x200 - -mask_144_1: -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_145_1: -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 3 -.byte 5 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 - -mask_146_1: -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x8000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x2 -.word 0x400 -.word 0x0 -.word 0x8 -.word 0x1000 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_147_1: -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 - -mask_148_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_149_1: -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_150_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_151_1: -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x4 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_152_1: -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_153_1: -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 2 - -mask_154_1: -.word 0x0 -.word 0x4 -.word 0x800 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_155_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x8000 -.word 0x0 -.word 0x100 - -mask_156_1: -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_157_1: -.word 0x0 -.word 0x2 -.word 0x400 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_158_1: -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 0 - -mask_159_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x2000 -.word 0x0 -.word 0x40 -.word 0x8000 - -mask_160_1: -.word 0x800 -.word 0x0 -.word 0x10 -.word 0x2000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_161_1: -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 - -mask_162_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x1000 -.word 0x0 -.word 0x20 -.word 0x0 - -mask_163_1: -.word 0x400 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_164_1: -.byte 255 -.byte 8 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_165_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x20 -.word 0x4000 -.word 0x0 -.word 0x0 - -mask_166_1: -.word 0x0 -.word 0x1 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_167_1: -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_168_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_169_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x10 -.word 0x2000 -.word 0x0 -.word 0x0 - -mask_170_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_171_1: -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 14 -.byte 255 - -mask_172_1: -.word 0x400 -.word 0x0 -.word 0x8 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 - -mask_173_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x800 -.word 0x0 -.word 0x10 -.word 0x0 - -mask_174_1: -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 - -mask_175_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 - -mask_176_1: -.word 0x200 -.word 0x0 -.word 0x4 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_177_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 - -mask_178_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 - -mask_179_1: -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 0 -.byte 2 -.byte 0 -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 - -mask_180_1: -.word 0x8000 -.word 0x0 -.word 0x100 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 - -mask_181_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x8 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x400 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_182_1: -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_183_1: -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 - -mask_184_1: -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 - -mask_185_1: -.byte 6 -.byte 8 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 11 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 3 -.byte 0 -.byte 15 -.byte 255 -.byte 255 -.byte 10 -.byte 255 - -mask_186_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x40 -.word 0x8000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x2 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_187_1: -.word 0x100 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x20 - -mask_188_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 - -mask_189_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_190_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_191_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x20 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_192_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_193_1: -.byte 255 -.byte 2 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 13 -.byte 255 -.byte 9 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 - -mask_194_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x4 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x200 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_195_1: -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x2000 -.word 0x0 - -mask_196_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_197_1: -.byte 255 -.byte 1 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_198_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_199_1: -.word 0x1000 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_200_1: -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 - -mask_201_1: -.word 0x80 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x10 - -mask_202_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x800 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_203_1: -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 - -mask_204_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x8 - -mask_205_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_206_1: -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 1 -.byte 3 - -mask_207_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x8000 -.word 0x0 -.word 0x100 - -mask_208_1: -.word 0x0 -.word 0x2 -.word 0x400 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_209_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 - -mask_210_1: -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_211_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x4000 -.word 0x0 -.word 0x0 - -mask_212_1: -.word 0x0 -.word 0x1 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_213_1: -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 6 -.byte 8 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 0 - -mask_214_1: -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x2000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_215_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x1000 -.word 0x0 -.word 0x20 -.word 0x4000 - -mask_216_1: -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_217_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_218_1: -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x1000 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_219_1: -.byte 255 -.byte 9 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 15 -.byte 255 -.byte 255 - -mask_220_1: -.word 0x0 -.word 0x1 -.word 0x200 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_221_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x10 -.word 0x2000 -.word 0x0 -.word 0x0 - -mask_222_1: -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 - -mask_223_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_224_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_225_1: -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 4 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 14 -.byte 255 - -mask_226_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x800 -.word 0x0 -.word 0x10 -.word 0x0 - -mask_227_1: -.word 0x200 -.word 0x0 -.word 0x4 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 - -mask_228_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_229_1: -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 - -mask_230_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x400 -.word 0x0 -.word 0x8 -.word 0x0 - -mask_231_1: -.word 0x100 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_232_1: -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 12 -.byte 255 -.byte 255 - -mask_233_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x8 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x400 -.word 0x0 -.word 0x8 -.word 0x1000 -.word 0x0 -.word 0x0 - -mask_234_1: -.word 0x4000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 - -mask_235_1: -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_236_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x4 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x200 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_237_1: -.word 0x2000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_238_1: -.byte 7 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 0 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 11 -.byte 255 - -mask_239_1: -.word 0x100 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 - -mask_240_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x20 -.word 0x4000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x1 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_241_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 - -mask_242_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_243_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 - -mask_244_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 - -mask_245_1: -.byte 255 -.byte 3 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 14 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 - -mask_246_1: -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x2000 -.word 0x0 - -mask_247_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x2 -.word 0x400 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_248_1: -.byte 255 -.byte 2 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 - -mask_249_1: -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x1000 -.word 0x0 - -mask_250_1: -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_251_1: -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 - -mask_252_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x800 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_253_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x8 - -mask_254_1: -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_255_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x400 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_256_1: -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_257_1: -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 1 -.byte 3 -.byte 0 -.byte 15 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 - -mask_258_1: -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_259_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x4 -.word 0x800 -.word 0x0 - -mask_260_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_261_1: -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_262_1: -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_263_1: -.byte 1 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 7 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 12 -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 - -mask_264_1: -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x200 -.word 0x0 -.word 0x4 - -mask_265_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x1 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_266_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_267_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_268_1: -.byte 0 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 3 -.byte 255 - -mask_269_1: -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x2 - -mask_270_1: -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_271_1: -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 3 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 10 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 14 - -mask_272_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x2 -.word 0x400 -.word 0x0 - -mask_273_1: -.word 0x8 -.word 0x1000 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 - -mask_274_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_275_1: -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 - -mask_276_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x200 -.word 0x0 - -mask_277_1: -.word 0x4 -.word 0x800 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_278_1: -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_279_1: -.word 0x0 -.word 0x40 -.word 0x8000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_280_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x4000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 - -mask_281_1: -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_282_1: -.word 0x0 -.word 0x20 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_283_1: -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 0 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 11 - -mask_284_1: -.word 0x4 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 - -mask_285_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x8000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x40 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_286_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 - -mask_287_1: -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 - -mask_288_1: -.word 0x2 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 - -mask_289_1: -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 13 -.byte 15 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 0 -.byte 14 -.byte 255 -.byte 255 - -mask_290_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x200 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x2000 -.word 0x0 -.word 0x40 -.word 0x4 -.word 0x0 - -mask_291_1: -.word 0x0 -.word 0x10 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 - -mask_292_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_293_1: -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_294_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_295_1: -.word 0x0 -.word 0x8 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_296_1: -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 - -mask_297_1: -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x20 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x1000 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_298_1: -.word 0x1 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x200 - -mask_299_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_300_1: -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x10 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x800 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_301_1: -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 4 - -mask_302_1: -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x80 -.word 0x0 - -mask_303_1: -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x4000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x1 -.word 0x200 -.word 0x0 -.word 0x4 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_304_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 - -mask_305_1: -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 - -mask_306_1: -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x40 -.word 0x0 - -mask_307_1: -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_308_1: -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_309_1: -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_310_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_311_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 - -mask_312_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_313_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 - -mask_314_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_315_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_316_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_317_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_318_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_319_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_320_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 - -mask_321_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x1 - -mask_322_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_323_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_324_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 - -mask_325_1: -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_326_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_327_1: -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_328_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_329_1: -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_330_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_331_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_332_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 - -mask_333_1: -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_334_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_335_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_336_1: -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_337_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_338_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 - -mask_339_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_340_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 - -mask_341_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_342_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_343_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_344_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_345_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_346_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_347_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 2 - -mask_348_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 - -mask_349_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_350_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 - -mask_351_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 - -mask_352_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 - -mask_353_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_354_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_355_1: -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_356_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 - -mask_357_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_358_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 - -mask_359_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_360_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_361_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_362_1: -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_363_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_364_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_365_1: -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_366_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_367_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_368_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_369_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_370_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_371_1: -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_372_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_373_1: -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_374_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_375_1: -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_376_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_377_1: -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_378_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_379_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 - -.text -.global PQCLEAN_NTRUHPS4096821_AVX2_square_102_821 -.global _PQCLEAN_NTRUHPS4096821_AVX2_square_102_821 -PQCLEAN_NTRUHPS4096821_AVX2_square_102_821: -_PQCLEAN_NTRUHPS4096821_AVX2_square_102_821: -vmovdqa 0(%rsi), %ymm0 -vpshufb mask_0_1(%rip), %ymm0, %ymm6 -vpand mask_1_1(%rip), %ymm6, %ymm1 -vpand mask_2_1(%rip), %ymm6, %ymm2 -vpand mask_3_1(%rip), %ymm6, %ymm3 -vpshufb mask_4_1(%rip), %ymm0, %ymm6 -vpand mask_5_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_6_1(%rip), %ymm6, %ymm4 -vpermq $78, %ymm0, %ymm9 -vpshufb mask_7_1(%rip), %ymm9, %ymm6 -vpand mask_8_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_9_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_10_1(%rip), %ymm9, %ymm6 -vpand mask_11_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsrlq $63, %ymm0, %ymm6 -vpsllq $1, %ymm0, %ymm5 -vpermq $147, %ymm6, %ymm7 -vpxor %ymm5, %ymm7, %ymm7 -vpshufb mask_12_1(%rip), %ymm7, %ymm6 -vpand mask_13_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_14_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_15_1(%rip), %ymm7, %ymm6 -vpand mask_16_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_17_1(%rip), %ymm9, %ymm6 -vpand mask_18_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_19_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_20_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_21_1(%rip), %ymm9, %ymm6 -vpand mask_22_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_23_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsllq $1, %ymm7, %ymm8 -vpshufb mask_24_1(%rip), %ymm8, %ymm6 -vpand mask_25_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_26_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_27_1(%rip), %ymm8, %ymm6 -vpand mask_28_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_29_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_30_1(%rip), %ymm9, %ymm6 -vpand mask_31_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_32_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_33_1(%rip), %ymm9, %ymm6 -vpand mask_34_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_35_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsllq $2, %ymm7, %ymm8 -vpshufb mask_36_1(%rip), %ymm8, %ymm6 -vpand mask_37_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_38_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_39_1(%rip), %ymm8, %ymm6 -vpand mask_40_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_41_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_42_1(%rip), %ymm9, %ymm6 -vpand mask_43_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_44_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_45_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_46_1(%rip), %ymm9, %ymm6 -vpand mask_47_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_48_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsllq $3, %ymm7, %ymm8 -vpshufb mask_49_1(%rip), %ymm8, %ymm6 -vpand mask_50_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_51_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_52_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_53_1(%rip), %ymm8, %ymm6 -vpand mask_54_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_55_1(%rip), %ymm9, %ymm6 -vpand mask_56_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_57_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_58_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_59_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_60_1(%rip), %ymm9, %ymm6 -vpand mask_61_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_62_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsrlq $60, %ymm7, %ymm6 -vpsllq $4, %ymm7, %ymm5 -vpermq $147, %ymm6, %ymm8 -vpxor %ymm5, %ymm8, %ymm8 -vpshufb mask_63_1(%rip), %ymm8, %ymm6 -vpand mask_64_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_65_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_66_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_67_1(%rip), %ymm8, %ymm6 -vpand mask_68_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_69_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_70_1(%rip), %ymm9, %ymm6 -vpand mask_71_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_72_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_73_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_74_1(%rip), %ymm9, %ymm6 -vpand mask_75_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $1, %ymm8, %ymm7 -vpshufb mask_76_1(%rip), %ymm7, %ymm6 -vpand mask_77_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_78_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_79_1(%rip), %ymm7, %ymm6 -vpand mask_80_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_81_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_82_1(%rip), %ymm9, %ymm6 -vpand mask_83_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_84_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_85_1(%rip), %ymm9, %ymm6 -vpand mask_86_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_87_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsllq $2, %ymm8, %ymm7 -vpshufb mask_88_1(%rip), %ymm7, %ymm6 -vpand mask_89_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_90_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_91_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_92_1(%rip), %ymm7, %ymm6 -vpand mask_93_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_94_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_95_1(%rip), %ymm9, %ymm6 -vpand mask_96_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_97_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_98_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_99_1(%rip), %ymm9, %ymm6 -vpand mask_100_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_101_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vmovdqa 32(%rsi), %ymm0 -vpshufb mask_102_1(%rip), %ymm0, %ymm6 -vpand mask_103_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_104_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_105_1(%rip), %ymm0, %ymm6 -vpand mask_106_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_107_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm0, %ymm9 -vpshufb mask_108_1(%rip), %ymm9, %ymm6 -vpand mask_109_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_110_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_111_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_112_1(%rip), %ymm9, %ymm6 -vpand mask_113_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $1, %ymm0, %ymm7 -vpshufb mask_114_1(%rip), %ymm7, %ymm6 -vpand mask_115_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_116_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_117_1(%rip), %ymm7, %ymm6 -vpand mask_118_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_119_1(%rip), %ymm9, %ymm6 -vpand mask_120_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_121_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_122_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_123_1(%rip), %ymm9, %ymm6 -vpand mask_124_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_125_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsrlq $62, %ymm0, %ymm6 -vpsllq $2, %ymm0, %ymm5 -vpermq $147, %ymm6, %ymm7 -vpxor %ymm5, %ymm7, %ymm7 -vpshufb mask_126_1(%rip), %ymm7, %ymm6 -vpand mask_127_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_128_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_129_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_130_1(%rip), %ymm7, %ymm6 -vpand mask_131_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_132_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_133_1(%rip), %ymm9, %ymm6 -vpand mask_134_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_135_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_136_1(%rip), %ymm9, %ymm6 -vpand mask_137_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsrlq $63, %ymm7, %ymm6 -vpsllq $1, %ymm7, %ymm5 -vpermq $147, %ymm6, %ymm8 -vpxor %ymm5, %ymm8, %ymm8 -vpshufb mask_138_1(%rip), %ymm8, %ymm6 -vpand mask_139_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_140_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_141_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_142_1(%rip), %ymm8, %ymm6 -vpand mask_143_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_144_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_145_1(%rip), %ymm9, %ymm6 -vpand mask_146_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_147_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_148_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_149_1(%rip), %ymm9, %ymm6 -vpand mask_150_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_151_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_152_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsllq $1, %ymm8, %ymm7 -vpshufb mask_153_1(%rip), %ymm7, %ymm6 -vpand mask_154_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_155_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_156_1(%rip), %ymm7, %ymm6 -vpand mask_157_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_158_1(%rip), %ymm9, %ymm6 -vpand mask_159_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_160_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_161_1(%rip), %ymm9, %ymm6 -vpand mask_162_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_163_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsrlq $62, %ymm8, %ymm6 -vpsllq $2, %ymm8, %ymm5 -vpermq $147, %ymm6, %ymm7 -vpxor %ymm5, %ymm7, %ymm7 -vpshufb mask_164_1(%rip), %ymm7, %ymm6 -vpand mask_165_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_166_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_167_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_168_1(%rip), %ymm7, %ymm6 -vpand mask_169_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_170_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_171_1(%rip), %ymm9, %ymm6 -vpand mask_172_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_173_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_174_1(%rip), %ymm9, %ymm6 -vpand mask_175_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_176_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_177_1(%rip), %ymm9, %ymm6 -vpand mask_178_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsrlq $63, %ymm7, %ymm6 -vpsllq $1, %ymm7, %ymm5 -vpermq $147, %ymm6, %ymm8 -vpxor %ymm5, %ymm8, %ymm8 -vpshufb mask_179_1(%rip), %ymm8, %ymm6 -vpand mask_180_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_181_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_182_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_183_1(%rip), %ymm8, %ymm6 -vpand mask_184_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_185_1(%rip), %ymm9, %ymm6 -vpand mask_186_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_187_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_188_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_189_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_190_1(%rip), %ymm9, %ymm6 -vpand mask_191_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_192_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsrlq $63, %ymm8, %ymm6 -vpsllq $1, %ymm8, %ymm5 -vpermq $147, %ymm6, %ymm7 -vpxor %ymm5, %ymm7, %ymm7 -vpshufb mask_193_1(%rip), %ymm7, %ymm6 -vpand mask_194_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_195_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_196_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_197_1(%rip), %ymm7, %ymm6 -vpand mask_198_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_199_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_200_1(%rip), %ymm9, %ymm6 -vpand mask_201_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_202_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_203_1(%rip), %ymm9, %ymm6 -vpand mask_204_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_205_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vmovdqa 64(%rsi), %ymm0 -vpshufb mask_206_1(%rip), %ymm0, %ymm6 -vpand mask_207_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_208_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_209_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_210_1(%rip), %ymm0, %ymm6 -vpand mask_211_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_212_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm0, %ymm9 -vpshufb mask_213_1(%rip), %ymm9, %ymm6 -vpand mask_214_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_215_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_216_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_217_1(%rip), %ymm9, %ymm6 -vpand mask_218_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsrlq $63, %ymm0, %ymm6 -vpsllq $1, %ymm0, %ymm5 -vpermq $147, %ymm6, %ymm7 -vpxor %ymm5, %ymm7, %ymm7 -vpshufb mask_219_1(%rip), %ymm7, %ymm6 -vpand mask_220_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_221_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_222_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_223_1(%rip), %ymm7, %ymm6 -vpand mask_224_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_225_1(%rip), %ymm9, %ymm6 -vpand mask_226_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_227_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_228_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_229_1(%rip), %ymm9, %ymm6 -vpand mask_230_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_231_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsrlq $63, %ymm7, %ymm6 -vpsllq $1, %ymm7, %ymm5 -vpermq $147, %ymm6, %ymm8 -vpxor %ymm5, %ymm8, %ymm8 -vpshufb mask_232_1(%rip), %ymm8, %ymm6 -vpand mask_233_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_234_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_235_1(%rip), %ymm8, %ymm6 -vpand mask_236_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_237_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_238_1(%rip), %ymm9, %ymm6 -vpand mask_239_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_240_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_241_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_242_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_243_1(%rip), %ymm9, %ymm6 -vpand mask_244_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $1, %ymm8, %ymm7 -vpshufb mask_245_1(%rip), %ymm7, %ymm6 -vpand mask_246_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_247_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_248_1(%rip), %ymm7, %ymm6 -vpand mask_249_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_250_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_251_1(%rip), %ymm9, %ymm6 -vpand mask_252_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_253_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_254_1(%rip), %ymm9, %ymm6 -vpand mask_255_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_256_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsrlq $62, %ymm8, %ymm6 -vpsllq $2, %ymm8, %ymm5 -vpermq $147, %ymm6, %ymm7 -vpxor %ymm5, %ymm7, %ymm7 -vpshufb mask_257_1(%rip), %ymm7, %ymm6 -vpand mask_258_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_259_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_260_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_261_1(%rip), %ymm7, %ymm6 -vpand mask_262_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_263_1(%rip), %ymm9, %ymm6 -vpand mask_264_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_265_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_266_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_267_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_268_1(%rip), %ymm9, %ymm6 -vpand mask_269_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_270_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsllq $1, %ymm7, %ymm8 -vpshufb mask_271_1(%rip), %ymm8, %ymm6 -vpand mask_272_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_273_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_274_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_275_1(%rip), %ymm8, %ymm6 -vpand mask_276_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_277_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_278_1(%rip), %ymm9, %ymm6 -vpand mask_279_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_280_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_281_1(%rip), %ymm9, %ymm6 -vpand mask_282_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $2, %ymm7, %ymm8 -vpshufb mask_283_1(%rip), %ymm8, %ymm6 -vpand mask_284_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_285_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_286_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_287_1(%rip), %ymm8, %ymm6 -vpand mask_288_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_289_1(%rip), %ymm9, %ymm6 -vpand mask_290_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_291_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_292_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_293_1(%rip), %ymm9, %ymm6 -vpand mask_294_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_295_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsllq $3, %ymm7, %ymm8 -vpshufb mask_296_1(%rip), %ymm8, %ymm6 -vpand mask_297_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_298_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_299_1(%rip), %ymm8, %ymm6 -vpand mask_300_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_301_1(%rip), %ymm9, %ymm6 -vpand mask_302_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_303_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_304_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_305_1(%rip), %ymm9, %ymm6 -vpand mask_306_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_307_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vmovdqa 96(%rsi), %ymm0 -vpshufb mask_308_1(%rip), %ymm0, %ymm6 -vpand mask_309_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_310_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpermq $78, %ymm0, %ymm9 -vpshufb mask_311_1(%rip), %ymm9, %ymm6 -vpand mask_312_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_313_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_314_1(%rip), %ymm9, %ymm6 -vpand mask_315_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $1, %ymm0, %ymm7 -vpshufb mask_316_1(%rip), %ymm7, %ymm6 -vpand mask_317_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpshufb mask_318_1(%rip), %ymm7, %ymm6 -vpand mask_319_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_320_1(%rip), %ymm9, %ymm6 -vpand mask_321_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_322_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_323_1(%rip), %ymm9, %ymm6 -vpand mask_324_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $2, %ymm0, %ymm7 -vpshufb mask_325_1(%rip), %ymm7, %ymm6 -vpand mask_326_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_327_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_328_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_329_1(%rip), %ymm7, %ymm6 -vpand mask_330_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_331_1(%rip), %ymm9, %ymm6 -vpand mask_332_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpsllq $3, %ymm0, %ymm7 -vpshufb mask_333_1(%rip), %ymm7, %ymm6 -vpand mask_334_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_335_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_336_1(%rip), %ymm7, %ymm6 -vpand mask_337_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_338_1(%rip), %ymm9, %ymm6 -vpand mask_339_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_340_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_341_1(%rip), %ymm9, %ymm6 -vpand mask_342_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $4, %ymm0, %ymm7 -vpshufb mask_343_1(%rip), %ymm7, %ymm6 -vpand mask_344_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpshufb mask_345_1(%rip), %ymm7, %ymm6 -vpand mask_346_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_347_1(%rip), %ymm9, %ymm6 -vpand mask_348_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_349_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_350_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_351_1(%rip), %ymm9, %ymm6 -vpand mask_352_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $5, %ymm0, %ymm7 -vpshufb mask_353_1(%rip), %ymm7, %ymm6 -vpand mask_354_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_355_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_356_1(%rip), %ymm9, %ymm6 -vpand mask_357_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_358_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_359_1(%rip), %ymm9, %ymm6 -vpand mask_360_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $6, %ymm0, %ymm7 -vpshufb mask_361_1(%rip), %ymm7, %ymm6 -vpand mask_362_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_363_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_364_1(%rip), %ymm7, %ymm6 -vpand mask_365_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_366_1(%rip), %ymm9, %ymm6 -vpand mask_367_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_368_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_369_1(%rip), %ymm9, %ymm6 -vpand mask_370_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $7, %ymm0, %ymm7 -vpshufb mask_371_1(%rip), %ymm7, %ymm6 -vpand mask_372_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_373_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_374_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_375_1(%rip), %ymm7, %ymm6 -vpand mask_376_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_377_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_378_1(%rip), %ymm9, %ymm6 -vpand mask_379_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vmovdqa %ymm1, 0(%rdi) -vmovdqa %ymm2, 32(%rdi) -vmovdqa %ymm3, 64(%rdi) -vmovdqa %ymm4, 96(%rdi) -ret diff --git a/src/kem/ntru/ntruhps4096821/avx2/square_12_821_shufbytes.s b/src/kem/ntru/ntruhps4096821/avx2/square_12_821_shufbytes.s deleted file mode 100644 index e930f39d..00000000 --- a/src/kem/ntru/ntruhps4096821/avx2/square_12_821_shufbytes.s +++ /dev/null @@ -1,10273 +0,0 @@ -.data -.p2align 5 -mask_0_1: -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 - -mask_1_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x20 -.word 0x0 - -mask_2_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_3_1: -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_4_1: -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_5_1: -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 - -mask_6_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 - -mask_7_1: -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_8_1: -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_9_1: -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_10_1: -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 5 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_11_1: -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_12_1: -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_13_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 - -mask_14_1: -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_15_1: -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_16_1: -.byte 7 -.byte 11 -.byte 255 -.byte 255 -.byte 3 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 10 -.byte 255 -.byte 255 -.byte 2 -.byte 9 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 15 -.byte 255 - -mask_17_1: -.word 0x800 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x1 - -mask_18_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 - -mask_19_1: -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_20_1: -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 - -mask_21_1: -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_22_1: -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 - -mask_23_1: -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_24_1: -.byte 255 -.byte 7 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 5 -.byte 9 -.byte 255 -.byte 0 -.byte 1 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 8 -.byte 255 -.byte 255 -.byte 0 - -mask_25_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x100 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 - -mask_26_1: -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 - -mask_27_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 - -mask_28_1: -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_29_1: -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_30_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_31_1: -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 - -mask_32_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_33_1: -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 - -mask_34_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x4000 -.word 0x0 - -mask_35_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_36_1: -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_37_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_38_1: -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 - -mask_39_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 - -mask_40_1: -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_41_1: -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 - -mask_42_1: -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_43_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_44_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x40 -.word 0x0 - -mask_45_1: -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_46_1: -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_47_1: -.byte 255 -.byte 4 -.byte 11 -.byte 255 -.byte 255 -.byte 0 -.byte 7 -.byte 11 -.byte 255 -.byte 255 -.byte 3 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 9 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 15 - -mask_48_1: -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x200 - -mask_49_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x200 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 - -mask_50_1: -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_51_1: -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_52_1: -.byte 255 -.byte 1 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 - -mask_53_1: -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 - -mask_54_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 - -mask_55_1: -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_56_1: -.byte 255 -.byte 255 -.byte 7 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 2 -.byte 9 -.byte 255 -.byte 0 -.byte 255 -.byte 5 -.byte 9 -.byte 255 -.byte 255 -.byte 1 -.byte 8 -.byte 255 -.byte 255 - -mask_57_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x10 -.word 0x2 -.word 0x100 -.word 0x0 -.word 0x1000 -.word 0x0 - -mask_58_1: -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_59_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 - -mask_60_1: -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_61_1: -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 - -mask_62_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 - -mask_63_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_64_1: -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 - -mask_65_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x80 - -mask_66_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_67_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_68_1: -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 - -mask_69_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 - -mask_70_1: -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_71_1: -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 - -mask_72_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_73_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_74_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x8000 -.word 0x0 - -mask_75_1: -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_76_1: -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_77_1: -.byte 255 -.byte 255 -.byte 4 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 11 -.byte 255 -.byte 255 -.byte 3 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 11 - -mask_78_1: -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 - -mask_79_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 - -mask_80_1: -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 - -mask_81_1: -.byte 255 -.byte 255 -.byte 1 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 8 - -mask_82_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 - -mask_83_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 - -mask_84_1: -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_85_1: -.byte 15 -.byte 255 -.byte 255 -.byte 7 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 6 -.byte 10 -.byte 255 -.byte 255 -.byte 2 -.byte 9 -.byte 255 -.byte 0 -.byte 255 -.byte 5 -.byte 9 -.byte 255 -.byte 255 -.byte 1 -.byte 8 -.byte 255 - -mask_86_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x2000 -.word 0x400 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x20 - -mask_87_1: -.word 0x4 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_88_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 - -mask_89_1: -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_90_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 - -mask_91_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 - -mask_92_1: -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_93_1: -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 0 - -mask_94_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 - -mask_95_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 - -mask_96_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_97_1: -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_98_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_99_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 - -mask_100_1: -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 6 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 - -mask_101_1: -.word 0x10 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_102_1: -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_103_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x100 - -mask_104_1: -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_105_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_106_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_107_1: -.byte 12 -.byte 255 -.byte 255 -.byte 4 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 11 -.byte 255 -.byte 255 -.byte 3 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 15 -.byte 255 -.byte 255 -.byte 255 - -mask_108_1: -.word 0x4 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 - -mask_109_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_110_1: -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 - -mask_111_1: -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 - -mask_112_1: -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 - -mask_113_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_114_1: -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_115_1: -.byte 11 -.byte 15 -.byte 255 -.byte 255 -.byte 7 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 6 -.byte 10 -.byte 255 -.byte 255 -.byte 2 -.byte 9 -.byte 255 -.byte 0 -.byte 255 -.byte 5 -.byte 9 -.byte 255 -.byte 255 -.byte 1 -.byte 8 - -mask_116_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x40 -.word 0x8 -.word 0x400 -.word 0x0 -.word 0x4000 - -mask_117_1: -.word 0x800 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x80 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 - -mask_118_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 - -mask_119_1: -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_120_1: -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 - -mask_121_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 - -mask_122_1: -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 - -mask_123_1: -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_124_1: -.byte 255 -.byte 2 -.byte 9 -.byte 13 -.byte 255 -.byte 255 -.byte 5 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 12 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 13 - -mask_125_1: -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_126_1: -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x800 - -mask_127_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 - -mask_128_1: -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_129_1: -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_130_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_131_1: -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 - -mask_132_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_133_1: -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 15 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 11 -.byte 255 -.byte 255 -.byte 3 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 10 -.byte 255 - -mask_134_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x4 - -mask_135_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 - -mask_136_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_137_1: -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 - -mask_138_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_139_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 - -mask_140_1: -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_141_1: -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 5 - -mask_142_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x2000 - -mask_143_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 - -mask_144_1: -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 - -mask_145_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 - -mask_146_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_147_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_148_1: -.byte 9 -.byte 255 -.byte 255 -.byte 1 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 8 -.byte 255 -.byte 255 -.byte 0 -.byte 7 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 - -mask_149_1: -.word 0x2 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_150_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_151_1: -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x20 - -mask_152_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_153_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_154_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_155_1: -.byte 255 -.byte 255 -.byte 2 -.byte 9 -.byte 13 -.byte 255 -.byte 255 -.byte 5 -.byte 12 -.byte 255 -.byte 0 -.byte 255 -.byte 8 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 14 -.byte 255 -.byte 255 -.byte 255 - -mask_156_1: -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_157_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 - -mask_158_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 - -mask_159_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_160_1: -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_161_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_162_1: -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_163_1: -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 4 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 11 -.byte 255 -.byte 255 -.byte 3 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 10 - -mask_164_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x800 - -mask_165_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 - -mask_166_1: -.word 0x10 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_167_1: -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_168_1: -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 - -mask_169_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 - -mask_170_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 - -mask_171_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_172_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 6 -.byte 255 -.byte 255 -.byte 255 - -mask_173_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 - -mask_174_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 - -mask_175_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_176_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_177_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_178_1: -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_179_1: -.byte 5 -.byte 9 -.byte 255 -.byte 255 -.byte 1 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 8 -.byte 255 -.byte 255 -.byte 0 -.byte 7 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 14 - -mask_180_1: -.word 0x400 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x40 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_181_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_182_1: -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x4000 - -mask_183_1: -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_184_1: -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_185_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_186_1: -.byte 10 -.byte 14 -.byte 255 -.byte 255 -.byte 6 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 13 -.byte 0 -.byte 255 -.byte 5 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 14 -.byte 255 -.byte 255 - -mask_187_1: -.word 0x100 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_188_1: -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x200 -.word 0x0 - -mask_189_1: -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 - -mask_190_1: -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_191_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_192_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_193_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_194_1: -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 8 -.byte 12 -.byte 255 -.byte 255 -.byte 4 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 11 -.byte 255 -.byte 255 -.byte 3 - -mask_195_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 - -mask_196_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 - -mask_197_1: -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 - -mask_198_1: -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_199_1: -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_200_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_201_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 - -mask_202_1: -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_203_1: -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 6 -.byte 255 -.byte 255 - -mask_204_1: -.word 0x40 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x800 -.word 0x0 - -mask_205_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 - -mask_206_1: -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_207_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_208_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_209_1: -.word 0x80 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_210_1: -.byte 255 -.byte 5 -.byte 9 -.byte 255 -.byte 255 -.byte 1 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 8 -.byte 255 -.byte 255 -.byte 0 -.byte 7 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 - -mask_211_1: -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_212_1: -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_213_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 - -mask_214_1: -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_215_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_216_1: -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_217_1: -.byte 3 -.byte 10 -.byte 14 -.byte 255 -.byte 255 -.byte 6 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 13 -.byte 0 -.byte 255 -.byte 5 -.byte 12 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 14 -.byte 255 - -mask_218_1: -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_219_1: -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x4 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x4 - -mask_220_1: -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 - -mask_221_1: -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_222_1: -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_223_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_224_1: -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_225_1: -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_226_1: -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 12 -.byte 255 -.byte 255 -.byte 4 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 11 -.byte 255 -.byte 255 - -mask_227_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x200 -.word 0x0 - -mask_228_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 - -mask_229_1: -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_230_1: -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 - -mask_231_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_232_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 - -mask_233_1: -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_234_1: -.byte 255 -.byte 2 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 4 -.byte 8 -.byte 255 -.byte 255 -.byte 0 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 - -mask_235_1: -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x800 -.word 0x100 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x10 - -mask_236_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_237_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_238_1: -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_239_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 - -mask_240_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 - -mask_241_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_242_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_243_1: -.byte 255 -.byte 255 -.byte 2 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 9 -.byte 255 -.byte 255 -.byte 1 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 - -mask_244_1: -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_245_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_246_1: -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 - -mask_247_1: -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_248_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_249_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_250_1: -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 9 -.byte 255 -.byte 255 -.byte 1 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 8 -.byte 255 -.byte 255 - -mask_251_1: -.word 0x8 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x100 -.word 0x0 - -mask_252_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 - -mask_253_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_254_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 - -mask_255_1: -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_256_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 - -mask_257_1: -.byte 0 -.byte 7 -.byte 11 -.byte 255 -.byte 255 -.byte 3 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 10 -.byte 255 -.byte 255 -.byte 2 -.byte 9 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 0 - -mask_258_1: -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x8000 - -mask_259_1: -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_260_1: -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_261_1: -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_262_1: -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_263_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_264_1: -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_265_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_266_1: -.byte 8 -.byte 15 -.byte 255 -.byte 255 -.byte 4 -.byte 11 -.byte 15 -.byte 255 -.byte 255 -.byte 7 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 - -mask_267_1: -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_268_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 - -mask_269_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_270_1: -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_271_1: -.byte 5 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 - -mask_272_1: -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_273_1: -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 - -mask_274_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_275_1: -.byte 255 -.byte 11 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 6 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 13 -.byte 255 -.byte 255 -.byte 5 -.byte 12 -.byte 255 -.byte 255 -.byte 255 - -mask_276_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x40 -.word 0x0 - -mask_277_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_278_1: -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 - -mask_279_1: -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_280_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 - -mask_281_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 - -mask_282_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_283_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_284_1: -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 9 -.byte 255 -.byte 255 -.byte 1 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 8 -.byte 255 - -mask_285_1: -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x100 -.word 0x20 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x2 - -mask_286_1: -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 - -mask_287_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_288_1: -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 - -mask_289_1: -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_290_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 - -mask_291_1: -.byte 255 -.byte 0 -.byte 7 -.byte 11 -.byte 255 -.byte 255 -.byte 3 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 10 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 - -mask_292_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x10 -.word 0x0 - -mask_293_1: -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_294_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_295_1: -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_296_1: -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_297_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_298_1: -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_299_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_300_1: -.byte 255 -.byte 8 -.byte 15 -.byte 255 -.byte 255 -.byte 4 -.byte 11 -.byte 15 -.byte 255 -.byte 255 -.byte 7 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 - -mask_301_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_302_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_303_1: -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x10 - -mask_304_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_305_1: -.byte 255 -.byte 5 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_306_1: -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_307_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_308_1: -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_309_1: -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 6 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 13 -.byte 255 -.byte 255 -.byte 5 -.byte 12 -.byte 255 -.byte 0 - -mask_310_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x8000 -.word 0x0 - -mask_311_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x100 - -mask_312_1: -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 - -mask_313_1: -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 - -mask_314_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 - -mask_315_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_316_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_317_1: -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 9 -.byte 255 -.byte 255 -.byte 1 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 8 - -mask_318_1: -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x400 - -mask_319_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 - -mask_320_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_321_1: -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 - -mask_322_1: -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 - -mask_323_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 - -mask_324_1: -.byte 255 -.byte 255 -.byte 0 -.byte 7 -.byte 11 -.byte 255 -.byte 255 -.byte 3 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 10 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 - -mask_325_1: -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x2000 -.word 0x0 - -mask_326_1: -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_327_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_328_1: -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_329_1: -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_330_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_331_1: -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_332_1: -.byte 0 -.byte 255 -.byte 5 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 12 - -mask_333_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_334_1: -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_335_1: -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x2000 - -mask_336_1: -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_337_1: -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_338_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_339_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_340_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 7 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 14 -.byte 255 -.byte 255 -.byte 6 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 13 - -mask_341_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x100 - -mask_342_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 - -mask_343_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_344_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 - -mask_345_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 - -mask_346_1: -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 - -mask_347_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_348_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_349_1: -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 9 -.byte 255 -.byte 255 -.byte 1 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 4 - -mask_350_1: -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 - -mask_351_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 - -mask_352_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 - -mask_353_1: -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 1 - -mask_354_1: -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 - -mask_355_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 - -mask_356_1: -.byte 11 -.byte 255 -.byte 255 -.byte 0 -.byte 7 -.byte 11 -.byte 255 -.byte 255 -.byte 3 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 10 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 - -mask_357_1: -.word 0x80 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x400 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x40 - -mask_358_1: -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_359_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_360_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_361_1: -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_362_1: -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_363_1: -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_364_1: -.byte 13 -.byte 0 -.byte 255 -.byte 5 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 - -mask_365_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_366_1: -.word 0x2 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_367_1: -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 - -mask_368_1: -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_369_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_370_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_371_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_372_1: -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 7 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 14 -.byte 255 -.byte 255 -.byte 6 -.byte 13 -.byte 0 -.byte 255 -.byte 255 -.byte 9 - -mask_373_1: -.word 0x20 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 - -mask_374_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x2000 - -mask_375_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x40 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 - -mask_376_1: -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 6 - -mask_377_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 - -mask_378_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 - -mask_379_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_380_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_381_1: -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_382_1: -.byte 255 -.byte 255 -.byte 2 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_383_1: -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_384_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_385_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_386_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_387_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 - -mask_388_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x8 - -mask_389_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_390_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_391_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_392_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_393_1: -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_394_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_395_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_396_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_397_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 3 - -mask_398_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x1000 - -mask_399_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 - -mask_400_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_401_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_402_1: -.byte 3 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_403_1: -.word 0x200 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_404_1: -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_405_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_406_1: -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_407_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 4 -.byte 255 -.byte 255 -.byte 255 - -mask_408_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 - -mask_409_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 - -mask_410_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_411_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_412_1: -.byte 255 -.byte 3 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_413_1: -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_414_1: -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_415_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_416_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_417_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 - -mask_418_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x400 -.word 0x0 - -mask_419_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_420_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_421_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 - -.text -.global PQCLEAN_NTRUHPS4096821_AVX2_square_12_821 -.global _PQCLEAN_NTRUHPS4096821_AVX2_square_12_821 -PQCLEAN_NTRUHPS4096821_AVX2_square_12_821: -_PQCLEAN_NTRUHPS4096821_AVX2_square_12_821: -vmovdqa 0(%rsi), %ymm0 -vpshufb mask_0_1(%rip), %ymm0, %ymm6 -vpand mask_1_1(%rip), %ymm6, %ymm1 -vpand mask_2_1(%rip), %ymm6, %ymm2 -vpand mask_3_1(%rip), %ymm6, %ymm3 -vpand mask_4_1(%rip), %ymm6, %ymm4 -vpshufb mask_5_1(%rip), %ymm0, %ymm6 -vpand mask_6_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_7_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_8_1(%rip), %ymm0, %ymm6 -vpand mask_9_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm0, %ymm9 -vpshufb mask_10_1(%rip), %ymm9, %ymm6 -vpand mask_11_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_12_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_13_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_14_1(%rip), %ymm9, %ymm6 -vpand mask_15_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpsrlq $63, %ymm0, %ymm6 -vpsllq $1, %ymm0, %ymm5 -vpermq $147, %ymm6, %ymm7 -vpxor %ymm5, %ymm7, %ymm7 -vpshufb mask_16_1(%rip), %ymm7, %ymm6 -vpand mask_17_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_18_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_19_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_20_1(%rip), %ymm7, %ymm6 -vpand mask_21_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_22_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_23_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_24_1(%rip), %ymm9, %ymm6 -vpand mask_25_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_26_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_27_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_28_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_29_1(%rip), %ymm9, %ymm6 -vpand mask_30_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_31_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_32_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsllq $1, %ymm7, %ymm8 -vpshufb mask_33_1(%rip), %ymm8, %ymm6 -vpand mask_34_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_35_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_36_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_37_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_38_1(%rip), %ymm8, %ymm6 -vpand mask_39_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_40_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_41_1(%rip), %ymm9, %ymm6 -vpand mask_42_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_43_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_44_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_45_1(%rip), %ymm9, %ymm6 -vpand mask_46_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpsrlq $62, %ymm7, %ymm6 -vpsllq $2, %ymm7, %ymm5 -vpermq $147, %ymm6, %ymm8 -vpxor %ymm5, %ymm8, %ymm8 -vpshufb mask_47_1(%rip), %ymm8, %ymm6 -vpand mask_48_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_49_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_50_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_51_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_52_1(%rip), %ymm8, %ymm6 -vpand mask_53_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_54_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_55_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_56_1(%rip), %ymm9, %ymm6 -vpand mask_57_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_58_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_59_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_60_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_61_1(%rip), %ymm9, %ymm6 -vpand mask_62_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_63_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $1, %ymm8, %ymm7 -vpshufb mask_64_1(%rip), %ymm7, %ymm6 -vpand mask_65_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_66_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_67_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_68_1(%rip), %ymm7, %ymm6 -vpand mask_69_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_70_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_71_1(%rip), %ymm9, %ymm6 -vpand mask_72_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_73_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_74_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_75_1(%rip), %ymm9, %ymm6 -vpand mask_76_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpsrlq $62, %ymm8, %ymm6 -vpsllq $2, %ymm8, %ymm5 -vpermq $147, %ymm6, %ymm7 -vpxor %ymm5, %ymm7, %ymm7 -vpshufb mask_77_1(%rip), %ymm7, %ymm6 -vpand mask_78_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_79_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_80_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_81_1(%rip), %ymm7, %ymm6 -vpand mask_82_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_83_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_84_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_85_1(%rip), %ymm9, %ymm6 -vpand mask_86_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_87_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_88_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_89_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_90_1(%rip), %ymm9, %ymm6 -vpand mask_91_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_92_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsrlq $63, %ymm7, %ymm6 -vpsllq $1, %ymm7, %ymm5 -vpermq $147, %ymm6, %ymm8 -vpxor %ymm5, %ymm8, %ymm8 -vpshufb mask_93_1(%rip), %ymm8, %ymm6 -vpand mask_94_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_95_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_96_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_97_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_98_1(%rip), %ymm8, %ymm6 -vpand mask_99_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_100_1(%rip), %ymm9, %ymm6 -vpand mask_101_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_102_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_103_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_104_1(%rip), %ymm9, %ymm6 -vpand mask_105_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_106_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $1, %ymm8, %ymm7 -vpshufb mask_107_1(%rip), %ymm7, %ymm6 -vpand mask_108_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_109_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_110_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_111_1(%rip), %ymm7, %ymm6 -vpand mask_112_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_113_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_114_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_115_1(%rip), %ymm9, %ymm6 -vpand mask_116_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_117_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_118_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_119_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_120_1(%rip), %ymm9, %ymm6 -vpand mask_121_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_122_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_123_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vmovdqa 32(%rsi), %ymm0 -vpshufb mask_124_1(%rip), %ymm0, %ymm6 -vpand mask_125_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_126_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_127_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_128_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_129_1(%rip), %ymm0, %ymm6 -vpand mask_130_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_131_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_132_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm0, %ymm9 -vpshufb mask_133_1(%rip), %ymm9, %ymm6 -vpand mask_134_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_135_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_136_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_137_1(%rip), %ymm9, %ymm6 -vpand mask_138_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_139_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_140_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsllq $1, %ymm0, %ymm7 -vpshufb mask_141_1(%rip), %ymm7, %ymm6 -vpand mask_142_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_143_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_144_1(%rip), %ymm7, %ymm6 -vpand mask_145_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_146_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_147_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_148_1(%rip), %ymm9, %ymm6 -vpand mask_149_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_150_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_151_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_152_1(%rip), %ymm9, %ymm6 -vpand mask_153_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_154_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsrlq $62, %ymm0, %ymm6 -vpsllq $2, %ymm0, %ymm5 -vpermq $147, %ymm6, %ymm7 -vpxor %ymm5, %ymm7, %ymm7 -vpshufb mask_155_1(%rip), %ymm7, %ymm6 -vpand mask_156_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_157_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_158_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_159_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_160_1(%rip), %ymm7, %ymm6 -vpand mask_161_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_162_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_163_1(%rip), %ymm9, %ymm6 -vpand mask_164_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_165_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_166_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_167_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_168_1(%rip), %ymm9, %ymm6 -vpand mask_169_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_170_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_171_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsllq $1, %ymm7, %ymm8 -vpshufb mask_172_1(%rip), %ymm8, %ymm6 -vpand mask_173_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_174_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_175_1(%rip), %ymm8, %ymm6 -vpand mask_176_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_177_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_178_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_179_1(%rip), %ymm9, %ymm6 -vpand mask_180_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_181_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_182_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_183_1(%rip), %ymm9, %ymm6 -vpand mask_184_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_185_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsrlq $62, %ymm7, %ymm6 -vpsllq $2, %ymm7, %ymm5 -vpermq $147, %ymm6, %ymm8 -vpxor %ymm5, %ymm8, %ymm8 -vpshufb mask_186_1(%rip), %ymm8, %ymm6 -vpand mask_187_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_188_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_189_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_190_1(%rip), %ymm8, %ymm6 -vpand mask_191_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_192_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_193_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_194_1(%rip), %ymm9, %ymm6 -vpand mask_195_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_196_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_197_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_198_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_199_1(%rip), %ymm9, %ymm6 -vpand mask_200_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_201_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_202_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsllq $1, %ymm8, %ymm7 -vpshufb mask_203_1(%rip), %ymm7, %ymm6 -vpand mask_204_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_205_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_206_1(%rip), %ymm7, %ymm6 -vpand mask_207_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_208_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_209_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_210_1(%rip), %ymm9, %ymm6 -vpand mask_211_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_212_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_213_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_214_1(%rip), %ymm9, %ymm6 -vpand mask_215_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_216_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsrlq $62, %ymm8, %ymm6 -vpsllq $2, %ymm8, %ymm5 -vpermq $147, %ymm6, %ymm7 -vpxor %ymm5, %ymm7, %ymm7 -vpshufb mask_217_1(%rip), %ymm7, %ymm6 -vpand mask_218_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_219_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_220_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_221_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_222_1(%rip), %ymm7, %ymm6 -vpand mask_223_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_224_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_225_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_226_1(%rip), %ymm9, %ymm6 -vpand mask_227_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_228_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_229_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_230_1(%rip), %ymm9, %ymm6 -vpand mask_231_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_232_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_233_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsrlq $63, %ymm7, %ymm6 -vpsllq $1, %ymm7, %ymm5 -vpermq $147, %ymm6, %ymm8 -vpxor %ymm5, %ymm8, %ymm8 -vpshufb mask_234_1(%rip), %ymm8, %ymm6 -vpand mask_235_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_236_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_237_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_238_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_239_1(%rip), %ymm8, %ymm6 -vpand mask_240_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_241_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_242_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_243_1(%rip), %ymm9, %ymm6 -vpand mask_244_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_245_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_246_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_247_1(%rip), %ymm9, %ymm6 -vpand mask_248_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_249_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vmovdqa 64(%rsi), %ymm0 -vpshufb mask_250_1(%rip), %ymm0, %ymm6 -vpand mask_251_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_252_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_253_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_254_1(%rip), %ymm0, %ymm6 -vpand mask_255_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_256_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm9 -vpshufb mask_257_1(%rip), %ymm9, %ymm6 -vpand mask_258_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_259_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_260_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_261_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_262_1(%rip), %ymm9, %ymm6 -vpand mask_263_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_264_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_265_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsllq $1, %ymm0, %ymm7 -vpshufb mask_266_1(%rip), %ymm7, %ymm6 -vpand mask_267_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_268_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_269_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_270_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_271_1(%rip), %ymm7, %ymm6 -vpand mask_272_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_273_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_274_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_275_1(%rip), %ymm9, %ymm6 -vpand mask_276_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_277_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_278_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_279_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_280_1(%rip), %ymm9, %ymm6 -vpand mask_281_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_282_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_283_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsrlq $62, %ymm0, %ymm6 -vpsllq $2, %ymm0, %ymm5 -vpermq $147, %ymm6, %ymm7 -vpxor %ymm5, %ymm7, %ymm7 -vpshufb mask_284_1(%rip), %ymm7, %ymm6 -vpand mask_285_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_286_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_287_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_288_1(%rip), %ymm7, %ymm6 -vpand mask_289_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_290_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_291_1(%rip), %ymm9, %ymm6 -vpand mask_292_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_293_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_294_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_295_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_296_1(%rip), %ymm9, %ymm6 -vpand mask_297_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_298_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_299_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsrlq $63, %ymm7, %ymm6 -vpsllq $1, %ymm7, %ymm5 -vpermq $147, %ymm6, %ymm8 -vpxor %ymm5, %ymm8, %ymm8 -vpshufb mask_300_1(%rip), %ymm8, %ymm6 -vpand mask_301_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_302_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_303_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_304_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_305_1(%rip), %ymm8, %ymm6 -vpand mask_306_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_307_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_308_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_309_1(%rip), %ymm9, %ymm6 -vpand mask_310_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_311_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_312_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_313_1(%rip), %ymm9, %ymm6 -vpand mask_314_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_315_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_316_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsllq $1, %ymm8, %ymm7 -vpshufb mask_317_1(%rip), %ymm7, %ymm6 -vpand mask_318_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_319_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_320_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_321_1(%rip), %ymm7, %ymm6 -vpand mask_322_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_323_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_324_1(%rip), %ymm9, %ymm6 -vpand mask_325_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_326_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_327_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_328_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_329_1(%rip), %ymm9, %ymm6 -vpand mask_330_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_331_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsrlq $62, %ymm8, %ymm6 -vpsllq $2, %ymm8, %ymm5 -vpermq $147, %ymm6, %ymm7 -vpxor %ymm5, %ymm7, %ymm7 -vpshufb mask_332_1(%rip), %ymm7, %ymm6 -vpand mask_333_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_334_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_335_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_336_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_337_1(%rip), %ymm7, %ymm6 -vpand mask_338_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_339_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_340_1(%rip), %ymm9, %ymm6 -vpand mask_341_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_342_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_343_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_344_1(%rip), %ymm9, %ymm6 -vpand mask_345_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_346_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_347_1(%rip), %ymm9, %ymm6 -vpand mask_348_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsllq $1, %ymm7, %ymm8 -vpshufb mask_349_1(%rip), %ymm8, %ymm6 -vpand mask_350_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_351_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_352_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_353_1(%rip), %ymm8, %ymm6 -vpand mask_354_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_355_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_356_1(%rip), %ymm9, %ymm6 -vpand mask_357_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_358_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_359_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_360_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_361_1(%rip), %ymm9, %ymm6 -vpand mask_362_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_363_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsrlq $62, %ymm7, %ymm6 -vpsllq $2, %ymm7, %ymm5 -vpermq $147, %ymm6, %ymm8 -vpxor %ymm5, %ymm8, %ymm8 -vpshufb mask_364_1(%rip), %ymm8, %ymm6 -vpand mask_365_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_366_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_367_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_368_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_369_1(%rip), %ymm8, %ymm6 -vpand mask_370_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_371_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_372_1(%rip), %ymm9, %ymm6 -vpand mask_373_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_374_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_375_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_376_1(%rip), %ymm9, %ymm6 -vpand mask_377_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_378_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_379_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_380_1(%rip), %ymm9, %ymm6 -vpand mask_381_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vmovdqa 96(%rsi), %ymm0 -vpermq $78, %ymm0, %ymm9 -vpsllq $1, %ymm0, %ymm7 -vpshufb mask_382_1(%rip), %ymm7, %ymm6 -vpand mask_383_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_384_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_385_1(%rip), %ymm7, %ymm6 -vpand mask_386_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_387_1(%rip), %ymm9, %ymm6 -vpand mask_388_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_389_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_390_1(%rip), %ymm9, %ymm6 -vpand mask_391_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpsllq $2, %ymm0, %ymm7 -vpermq $78, %ymm7, %ymm9 -vpsllq $3, %ymm0, %ymm7 -vpshufb mask_392_1(%rip), %ymm7, %ymm6 -vpand mask_393_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_394_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_395_1(%rip), %ymm7, %ymm6 -vpand mask_396_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_397_1(%rip), %ymm9, %ymm6 -vpand mask_398_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_399_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_400_1(%rip), %ymm9, %ymm6 -vpand mask_401_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpsllq $4, %ymm0, %ymm7 -vpermq $78, %ymm7, %ymm9 -vpsllq $5, %ymm0, %ymm7 -vpshufb mask_402_1(%rip), %ymm7, %ymm6 -vpand mask_403_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_404_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_405_1(%rip), %ymm7, %ymm6 -vpand mask_406_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_407_1(%rip), %ymm9, %ymm6 -vpand mask_408_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_409_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_410_1(%rip), %ymm9, %ymm6 -vpand mask_411_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpsllq $6, %ymm0, %ymm7 -vpermq $78, %ymm7, %ymm9 -vpsllq $7, %ymm0, %ymm7 -vpshufb mask_412_1(%rip), %ymm7, %ymm6 -vpand mask_413_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_414_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_415_1(%rip), %ymm7, %ymm6 -vpand mask_416_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_417_1(%rip), %ymm9, %ymm6 -vpand mask_418_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_419_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_420_1(%rip), %ymm9, %ymm6 -vpand mask_421_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vmovdqa %ymm1, 0(%rdi) -vmovdqa %ymm2, 32(%rdi) -vmovdqa %ymm3, 64(%rdi) -vmovdqa %ymm4, 96(%rdi) -ret diff --git a/src/kem/ntru/ntruhps4096821/avx2/square_1_821_patience.s b/src/kem/ntru/ntruhps4096821/avx2/square_1_821_patience.s deleted file mode 100644 index e3b131df..00000000 --- a/src/kem/ntru/ntruhps4096821/avx2/square_1_821_patience.s +++ /dev/null @@ -1,158 +0,0 @@ -.data -.p2align 5 -.text -.global PQCLEAN_NTRUHPS4096821_AVX2_square_1_821 -.global _PQCLEAN_NTRUHPS4096821_AVX2_square_1_821 -PQCLEAN_NTRUHPS4096821_AVX2_square_1_821: -_PQCLEAN_NTRUHPS4096821_AVX2_square_1_821: -push %r15 -push %r14 -push %r13 -push %r12 -push %rbx -push %rbp -mov 0(%rsi), %r11 -mov %r11, %r10 -and $-0x1, %r10 -mov $0x5555555555555555, %rbp -pdep %rbp, %r10, %r10 -mov %r10, 0(%rdi) -mov $0xffffffff00000000, %rbx -pext %rbx, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 8(%rdi) -mov 8(%rsi), %r11 -mov %r11, %r10 -and $-0x1, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 16(%rdi) -pext %rbx, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 24(%rdi) -mov 16(%rsi), %r11 -mov %r11, %r10 -and $-0x1, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 32(%rdi) -pext %rbx, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 40(%rdi) -mov 24(%rsi), %r11 -mov %r11, %r10 -and $-0x1, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 48(%rdi) -pext %rbx, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 56(%rdi) -mov 32(%rsi), %r11 -mov %r11, %r10 -and $-0x1, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 64(%rdi) -pext %rbx, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 72(%rdi) -mov 40(%rsi), %r11 -mov %r11, %r10 -and $-0x1, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 80(%rdi) -pext %rbx, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 88(%rdi) -mov 48(%rsi), %r11 -mov $0x7fffffff8000000, %r12 -pext %r12, %r11, %r10 -mov $0xaaaaaaaaaaaaaaaa, %r13 -pdep %r13, %r10, %r10 -xor %r10, 0(%rdi) -mov $0xf800000000000000, %r14 -pext %r14, %r11, %r10 -mov $0x2aa, %r15 -pdep %r15, %r10, %r10 -xor %r10, 8(%rdi) -mov %r11, %r10 -and $0x7ffffff, %r10 -mov $0x15555555555555, %r9 -pdep %r9, %r10, %r10 -mov %r10, 96(%rdi) -mov 56(%rsi), %r11 -mov %r11, %r10 -and $0x7ffffff, %r10 -mov $0xaaaaaaaaaaaaa800, %r8 -pdep %r8, %r10, %r10 -xor %r10, 8(%rdi) -pext %r12, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 16(%rdi) -pext %r14, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 24(%rdi) -mov 64(%rsi), %r11 -mov %r11, %r10 -and $0x7ffffff, %r10 -pdep %r8, %r10, %r10 -xor %r10, 24(%rdi) -pext %r12, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 32(%rdi) -pext %r14, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 40(%rdi) -mov 72(%rsi), %r11 -mov %r11, %r10 -and $0x7ffffff, %r10 -pdep %r8, %r10, %r10 -xor %r10, 40(%rdi) -pext %r12, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 48(%rdi) -pext %r14, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 56(%rdi) -mov 80(%rsi), %r11 -mov %r11, %r10 -and $0x7ffffff, %r10 -pdep %r8, %r10, %r10 -xor %r10, 56(%rdi) -pext %r12, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 64(%rdi) -pext %r14, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 72(%rdi) -mov 88(%rsi), %r11 -mov %r11, %r10 -and $0x7ffffff, %r10 -pdep %r8, %r10, %r10 -xor %r10, 72(%rdi) -pext %r12, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 80(%rdi) -pext %r14, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 88(%rdi) -mov 96(%rsi), %r11 -mov %r11, %r10 -and $0x7ffffff, %r10 -pdep %r8, %r10, %r10 -xor %r10, 88(%rdi) -mov $0x1ffffff8000000, %rdx -pext %rdx, %r11, %r10 -mov $0xaaaaaaaaaaaaa, %rcx -pdep %rcx, %r10, %r10 -xor %r10, 96(%rdi) -mov 104(%rsi), %r11 -mov 112(%rsi), %r11 -mov 120(%rsi), %r11 -movq $0x0, 104(%rdi) -movq $0x0, 112(%rdi) -movq $0x0, 120(%rdi) -pop %rbp -pop %rbx -pop %r12 -pop %r13 -pop %r14 -pop %r15 -ret diff --git a/src/kem/ntru/ntruhps4096821/avx2/square_204_821_shufbytes.s b/src/kem/ntru/ntruhps4096821/avx2/square_204_821_shufbytes.s deleted file mode 100644 index 969ccb1e..00000000 --- a/src/kem/ntru/ntruhps4096821/avx2/square_204_821_shufbytes.s +++ /dev/null @@ -1,16127 +0,0 @@ -.data -.p2align 5 -mask_0_1: -.byte 0 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 8 -.byte 5 -.byte 2 -.byte 2 -.byte 2 -.byte 255 -.byte 255 - -mask_1_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8002 -.word 0x2040 -.word 0x0 -.word 0x0 - -mask_2_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 - -mask_3_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 - -mask_4_1: -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_5_1: -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 5 -.byte 5 -.byte 255 -.byte 255 -.byte 255 - -mask_6_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_7_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2040 -.word 0x0 -.word 0x0 - -mask_8_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 - -mask_9_1: -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 11 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_10_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_11_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2040 -.word 0x0 -.word 0x0 - -mask_12_1: -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_13_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_14_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_15_1: -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_16_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_17_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_18_1: -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_19_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_20_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 9 -.byte 6 - -mask_21_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x810 -.word 0x204 - -mask_22_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 9 - -mask_23_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x204 - -mask_24_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 - -mask_25_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x204 - -mask_26_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_27_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_28_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_29_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_30_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_31_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 7 -.byte 4 -.byte 1 -.byte 14 -.byte 11 -.byte 8 -.byte 5 -.byte 2 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_32_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8002 -.word 0x2040 -.word 0x810 -.word 0x204 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_33_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_34_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 7 -.byte 4 -.byte 255 -.byte 14 -.byte 11 -.byte 8 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_35_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_36_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2040 -.word 0x800 -.word 0x204 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_37_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 10 -.byte 7 -.byte 255 -.byte 255 -.byte 14 -.byte 11 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_38_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_39_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2040 -.word 0x0 -.word 0x204 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_40_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_41_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_42_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_43_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_44_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_45_1: -.byte 0 -.byte 0 -.byte 255 -.byte 255 -.byte 13 -.byte 10 -.byte 7 -.byte 4 -.byte 1 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_46_1: -.word 0x0 -.word 0x0 -.word 0x810 -.word 0x204 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_47_1: -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_48_1: -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_49_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 10 -.byte 7 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_50_1: -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x204 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_51_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 10 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_52_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_53_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x204 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_54_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_55_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_56_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_57_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_58_1: -.byte 13 -.byte 6 -.byte 3 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_59_1: -.word 0x8002 -.word 0x2040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_60_1: -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_61_1: -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_62_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_63_1: -.byte 255 -.byte 10 -.byte 6 -.byte 3 -.byte 3 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_64_1: -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_65_1: -.word 0x0 -.word 0x2040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_66_1: -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_67_1: -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_68_1: -.byte 255 -.byte 9 -.byte 9 -.byte 6 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_69_1: -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_70_1: -.word 0x0 -.word 0x2040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_71_1: -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_72_1: -.byte 255 -.byte 13 -.byte 12 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_73_1: -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_74_1: -.word 0x0 -.word 0x2040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_75_1: -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_76_1: -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_77_1: -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_78_1: -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_79_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 8 -.byte 5 -.byte 2 -.byte 2 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_80_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8002 -.word 0x2040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_81_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_82_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_83_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 5 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_84_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_85_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_86_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_87_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 11 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_88_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_89_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_90_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_91_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_92_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_93_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_94_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 9 -.byte 6 -.byte 3 -.byte 2 -.byte 255 -.byte 255 - -mask_95_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x810 -.word 0x204 -.word 0x1 -.word 0x0 - -mask_96_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 - -mask_97_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 9 -.byte 2 -.byte 255 -.byte 255 -.byte 255 - -mask_98_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x204 -.word 0x80 -.word 0x0 - -mask_99_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 6 -.byte 255 -.byte 255 -.byte 255 - -mask_100_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 - -mask_101_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x204 -.word 0x0 -.word 0x0 - -mask_102_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 - -mask_103_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 - -mask_104_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 - -mask_105_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 - -mask_106_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 11 -.byte 8 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_107_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x810 -.word 0x204 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_108_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 11 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_109_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x204 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_110_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_111_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x204 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_112_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 7 -.byte 4 -.byte 1 -.byte 1 -.byte 1 -.byte 255 -.byte 255 -.byte 2 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_113_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8002 -.word 0x2040 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_114_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_115_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_116_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 7 -.byte 4 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_117_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_118_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2040 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_119_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_120_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 10 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_121_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_122_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_123_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_124_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_125_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_126_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_127_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_128_1: -.byte 13 -.byte 10 -.byte 7 -.byte 4 -.byte 1 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 6 -.byte 3 - -mask_129_1: -.word 0x810 -.word 0x204 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x2040 - -mask_130_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_131_1: -.byte 255 -.byte 13 -.byte 10 -.byte 7 -.byte 0 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 6 - -mask_132_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 - -mask_133_1: -.word 0x800 -.word 0x204 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2040 - -mask_134_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_135_1: -.byte 255 -.byte 255 -.byte 13 -.byte 10 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 12 -.byte 9 - -mask_136_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 - -mask_137_1: -.word 0x0 -.word 0x204 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2040 - -mask_138_1: -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 - -mask_139_1: -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 - -mask_140_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_141_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_142_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_143_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_144_1: -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_145_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_146_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_147_1: -.byte 0 -.byte 0 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 0 -.byte 255 -.byte 255 - -mask_148_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 - -mask_149_1: -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 - -mask_150_1: -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_151_1: -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_152_1: -.byte 3 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_153_1: -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_154_1: -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_155_1: -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_156_1: -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_157_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 8 -.byte 5 -.byte 2 -.byte 2 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_158_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8002 -.word 0x2040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_159_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_160_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_161_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 5 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_162_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_163_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_164_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_165_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 11 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_166_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_167_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_168_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_169_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_170_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_171_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_172_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 9 -.byte 6 -.byte 3 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_173_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x810 -.word 0x204 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_174_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_175_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 9 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_176_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x204 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_177_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_178_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_179_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x204 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_180_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_181_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_182_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_183_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_184_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 11 -.byte 8 -.byte 5 -.byte 2 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_185_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x810 -.word 0x204 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_186_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_187_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 11 -.byte 8 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_188_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x204 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_189_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 11 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_190_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_191_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x204 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_192_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_193_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_194_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_195_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_196_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 7 -.byte 4 -.byte 1 -.byte 1 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_197_1: -.word 0x0 -.word 0x0 -.word 0x8002 -.word 0x2040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_198_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_199_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_200_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 7 -.byte 4 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_201_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_202_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_203_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_204_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 10 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_205_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_206_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_207_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_208_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_209_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_210_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_211_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 8 -.byte 1 -.byte 1 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_212_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x204 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_213_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_214_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_215_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 11 -.byte 5 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_216_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_217_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x204 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_218_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_219_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_220_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_221_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_222_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_223_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_224_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_225_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_226_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_227_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_228_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 11 -.byte 8 -.byte 5 -.byte 2 -.byte 2 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_229_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x4000 -.word 0x1020 -.word 0x408 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_230_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_231_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_232_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 11 -.byte 8 -.byte 5 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_233_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1020 -.word 0x408 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_234_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_235_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 11 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_236_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x408 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_237_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 10 -.byte 7 -.byte 4 -.byte 1 -.byte 1 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_238_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x1020 -.word 0x408 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_239_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_240_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_241_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 10 -.byte 7 -.byte 4 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_242_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1020 -.word 0x408 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_243_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_244_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 10 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_245_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x408 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_246_1: -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 10 -.byte 7 -.byte 0 -.byte 0 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_247_1: -.word 0x0 -.word 0x800 -.word 0x204 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_248_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_249_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_250_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 10 -.byte 4 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_251_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_252_1: -.word 0x0 -.word 0x0 -.word 0x204 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_253_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_254_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_255_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_256_1: -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_257_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_258_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_259_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_260_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_261_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_262_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_263_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_264_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_265_1: -.byte 3 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 9 -.byte 2 -.byte 2 -.byte 2 -.byte 255 -.byte 255 -.byte 255 - -mask_266_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x204 -.word 0x80 -.word 0x0 -.word 0x0 - -mask_267_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 - -mask_268_1: -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 - -mask_269_1: -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_270_1: -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 6 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_271_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 - -mask_272_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x204 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_273_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 - -mask_274_1: -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_275_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_276_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 - -mask_277_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_278_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_279_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 - -mask_280_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_281_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 - -mask_282_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_283_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 - -mask_284_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 9 -.byte 6 -.byte 3 - -mask_285_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x1020 -.word 0x408 - -mask_286_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 9 -.byte 6 - -mask_287_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1020 -.word 0x408 - -mask_288_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 9 - -mask_289_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x408 - -mask_290_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_291_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_292_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_293_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 11 -.byte 8 -.byte 1 -.byte 1 -.byte 11 -.byte 8 -.byte 5 -.byte 2 -.byte 2 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_294_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x204 -.word 0x80 -.word 0x1020 -.word 0x408 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_295_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_296_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_297_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 11 -.byte 5 -.byte 4 -.byte 14 -.byte 11 -.byte 8 -.byte 5 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_298_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_299_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x204 -.word 0x0 -.word 0x1020 -.word 0x408 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_300_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_301_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 4 -.byte 255 -.byte 255 -.byte 14 -.byte 11 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_302_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_303_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x1000 -.word 0x408 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_304_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_305_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_306_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_307_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_308_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_309_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_310_1: -.byte 0 -.byte 0 -.byte 255 -.byte 13 -.byte 10 -.byte 7 -.byte 4 -.byte 1 -.byte 1 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_311_1: -.word 0x0 -.word 0x4000 -.word 0x1020 -.word 0x408 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_312_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_313_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_314_1: -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_315_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 10 -.byte 7 -.byte 4 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_316_1: -.word 0x0 -.word 0x0 -.word 0x1020 -.word 0x408 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_317_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_318_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 10 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_319_1: -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x408 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_320_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_321_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_322_1: -.byte 10 -.byte 7 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 - -mask_323_1: -.word 0x204 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 - -mask_324_1: -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_325_1: -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_326_1: -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_327_1: -.byte 13 -.byte 10 -.byte 4 -.byte 3 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_328_1: -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_329_1: -.word 0x204 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_330_1: -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_331_1: -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_332_1: -.byte 255 -.byte 13 -.byte 3 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_333_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_334_1: -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_335_1: -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_336_1: -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_337_1: -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_338_1: -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_339_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_340_1: -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_341_1: -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_342_1: -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_343_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_344_1: -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_345_1: -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_346_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 9 -.byte 2 -.byte 2 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_347_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x204 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_348_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_349_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_350_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 6 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_351_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_352_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x204 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_353_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_354_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_355_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_356_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_357_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_358_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_359_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_360_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_361_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_362_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_363_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 9 -.byte 6 -.byte 3 -.byte 3 -.byte 3 -.byte 255 -.byte 255 - -mask_364_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x1020 -.word 0x408 -.word 0x0 -.word 0x0 - -mask_365_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 - -mask_366_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 - -mask_367_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 9 -.byte 6 -.byte 6 -.byte 255 -.byte 255 -.byte 255 - -mask_368_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1020 -.word 0x408 -.word 0x0 -.word 0x0 - -mask_369_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 - -mask_370_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_371_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x408 -.word 0x0 -.word 0x0 - -mask_372_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 11 -.byte 8 -.byte 5 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_373_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x1020 -.word 0x408 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_374_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 11 -.byte 8 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_375_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1020 -.word 0x408 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_376_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 11 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_377_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x408 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_378_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 11 -.byte 8 -.byte 1 -.byte 1 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_379_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x204 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_380_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_381_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_382_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 11 -.byte 5 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_383_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_384_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x204 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_385_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_386_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_387_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_388_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_389_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_390_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_391_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_392_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_393_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_394_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_395_1: -.byte 10 -.byte 7 -.byte 4 -.byte 1 -.byte 1 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 10 -.byte 3 -.byte 0 - -mask_396_1: -.word 0x1020 -.word 0x408 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x204 -.word 0x4080 - -mask_397_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_398_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_399_1: -.byte 13 -.byte 10 -.byte 7 -.byte 4 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 7 -.byte 3 - -mask_400_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 - -mask_401_1: -.word 0x1020 -.word 0x408 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x4000 - -mask_402_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_403_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_404_1: -.byte 255 -.byte 13 -.byte 10 -.byte 7 -.byte 7 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 6 - -mask_405_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 - -mask_406_1: -.word 0x1000 -.word 0x408 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 - -mask_407_1: -.word 0x0 -.word 0x0 -.word 0x102 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_408_1: -.byte 255 -.byte 255 -.byte 13 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 - -mask_409_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 - -mask_410_1: -.word 0x0 -.word 0x408 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_411_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 - -mask_412_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 - -mask_413_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 - -mask_414_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 - -mask_415_1: -.byte 0 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 0 -.byte 0 -.byte 255 -.byte 255 - -mask_416_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 - -mask_417_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 - -mask_418_1: -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 - -mask_419_1: -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_420_1: -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_421_1: -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_422_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 7 -.byte 4 -.byte 1 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_423_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x2040 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_424_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_425_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 7 -.byte 4 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_426_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_427_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2040 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_428_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_429_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 13 -.byte 10 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_430_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_431_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2040 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_432_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 10 -.byte 7 -.byte 4 -.byte 1 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_433_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1020 -.word 0x408 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_434_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_435_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_436_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 10 -.byte 7 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_437_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x408 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_438_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_439_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 10 -.byte 7 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_440_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x408 -.word 0x102 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_441_1: -.byte 6 -.byte 3 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 9 -.byte 6 -.byte 3 -.byte 0 - -mask_442_1: -.word 0x2040 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1020 -.word 0x408 -.word 0x102 - -mask_443_1: -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_444_1: -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_445_1: -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_446_1: -.byte 9 -.byte 6 -.byte 3 -.byte 3 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 9 -.byte 6 -.byte 3 - -mask_447_1: -.word 0x2040 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x408 -.word 0x102 - -mask_448_1: -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_449_1: -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_450_1: -.byte 12 -.byte 9 -.byte 6 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 9 -.byte 2 - -mask_451_1: -.word 0x2040 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x408 -.word 0x8002 - -mask_452_1: -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_453_1: -.byte 15 -.byte 12 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 - -mask_454_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 - -mask_455_1: -.word 0x2040 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_456_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 - -mask_457_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 - -mask_458_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 - -mask_459_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 - -mask_460_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 5 -.byte 2 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_461_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x408 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_462_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_463_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 8 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_464_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x408 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_465_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_466_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 11 -.byte 8 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_467_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x408 -.word 0x102 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_468_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 8 -.byte 5 -.byte 2 -.byte 2 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_469_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1020 -.word 0x0 -.word 0x8000 -.word 0x2040 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_470_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_471_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_472_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 8 -.byte 5 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_473_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_474_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x2040 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_475_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_476_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 14 -.byte 11 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_477_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_478_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2040 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_479_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 7 -.byte 4 -.byte 1 -.byte 1 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_480_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x2040 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_481_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_482_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_483_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 7 -.byte 4 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_484_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_485_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2040 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_486_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_487_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 13 -.byte 10 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_488_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_489_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2040 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_490_1: -.byte 255 -.byte 255 -.byte 13 -.byte 10 -.byte 7 -.byte 4 -.byte 1 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_491_1: -.word 0x0 -.word 0x1020 -.word 0x408 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_492_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_493_1: -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 10 -.byte 7 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_494_1: -.word 0x0 -.word 0x1000 -.word 0x408 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_495_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_496_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 10 -.byte 7 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_497_1: -.word 0x0 -.word 0x0 -.word 0x408 -.word 0x102 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_498_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_499_1: -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_500_1: -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 9 -.byte 6 -.byte 3 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_501_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1020 -.word 0x408 -.word 0x102 -.word 0x0 -.word 0x0 - -mask_502_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_503_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 9 -.byte 6 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_504_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x408 -.word 0x102 -.word 0x0 -.word 0x0 - -mask_505_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 9 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_506_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x408 -.word 0x8002 -.word 0x0 -.word 0x0 - -mask_507_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_508_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 - -mask_509_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 9 -.byte 6 -.byte 3 -.byte 3 - -mask_510_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x2040 -.word 0x10 - -mask_511_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 - -mask_512_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 9 -.byte 6 -.byte 6 - -mask_513_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x2040 -.word 0x10 - -mask_514_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 - -mask_515_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 9 -.byte 255 - -mask_516_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2040 -.word 0x10 - -mask_517_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_518_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_519_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_520_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_521_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_522_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_523_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 11 -.byte 8 -.byte 5 -.byte 2 -.byte 2 -.byte 8 -.byte 5 -.byte 2 -.byte 2 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_524_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1020 -.word 0x408 -.word 0x2 -.word 0x2040 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_525_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_526_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_527_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 11 -.byte 8 -.byte 5 -.byte 1 -.byte 11 -.byte 8 -.byte 5 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_528_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x408 -.word 0x2 -.word 0x2040 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_529_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_530_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 11 -.byte 8 -.byte 5 -.byte 14 -.byte 11 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_531_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x408 -.word 0x102 -.word 0x2040 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_532_1: -.byte 0 -.byte 255 -.byte 255 -.byte 10 -.byte 7 -.byte 4 -.byte 1 -.byte 1 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 - -mask_533_1: -.word 0x0 -.word 0x8000 -.word 0x2040 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 - -mask_534_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_535_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_536_1: -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_537_1: -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 7 -.byte 4 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_538_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_539_1: -.word 0x0 -.word 0x0 -.word 0x2040 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_540_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_541_1: -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 13 -.byte 10 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_542_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_543_1: -.word 0x0 -.word 0x0 -.word 0x2040 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_544_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_545_1: -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_546_1: -.byte 7 -.byte 4 -.byte 1 -.byte 1 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 0 - -mask_547_1: -.word 0x408 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 - -mask_548_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 - -mask_549_1: -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_550_1: -.byte 10 -.byte 7 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_551_1: -.word 0x408 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_552_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_553_1: -.byte 13 -.byte 10 -.byte 7 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_554_1: -.word 0x408 -.word 0x102 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_555_1: -.byte 255 -.byte 13 -.byte 10 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_556_1: -.word 0x400 -.word 0x8002 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_557_1: -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_558_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_559_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 9 -.byte 6 -.byte 3 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_560_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1020 -.word 0x408 -.word 0x102 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_561_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 9 -.byte 6 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_562_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x408 -.word 0x102 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_563_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 9 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_564_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x408 -.word 0x8002 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_565_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_566_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_567_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 9 -.byte 6 -.byte 3 -.byte 3 -.byte 3 -.byte 255 -.byte 255 -.byte 255 - -mask_568_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x2040 -.word 0x10 -.word 0x0 -.word 0x0 - -mask_569_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 - -mask_570_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 - -mask_571_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 9 -.byte 6 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_572_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x2040 -.word 0x10 -.word 0x0 -.word 0x0 - -mask_573_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 - -mask_574_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 12 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_575_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2040 -.word 0x10 -.word 0x0 -.word 0x0 - -mask_576_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 0 -.byte 0 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_577_1: -.word 0x0 -.word 0x0 -.word 0x4080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_578_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_579_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_580_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_581_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_582_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_583_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 2 -.byte 2 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_584_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4080 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_585_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 - -mask_586_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 - -mask_587_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_588_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_589_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 - -mask_590_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 1 -.byte 1 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_591_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_592_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_593_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_594_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_595_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_596_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_597_1: -.byte 3 -.byte 0 -.byte 0 -.byte 0 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_598_1: -.word 0x4080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_599_1: -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_600_1: -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_601_1: -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_602_1: -.byte 6 -.byte 3 -.byte 3 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_603_1: -.word 0x4080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_604_1: -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_605_1: -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_606_1: -.byte 255 -.byte 6 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_607_1: -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_608_1: -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_609_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 2 -.byte 2 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_610_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_611_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_612_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_613_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_614_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_615_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_616_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 1 -.byte 1 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_617_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_618_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_619_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_620_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_621_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_622_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_623_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 3 -.byte 3 -.byte 3 - -mask_624_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4080 -.word 0x0 - -mask_625_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 - -mask_626_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 - -mask_627_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 6 -.byte 255 - -mask_628_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 - -mask_629_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 - -mask_630_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 2 -.byte 2 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_631_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_632_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_633_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_634_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_635_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_636_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -.text -.global PQCLEAN_NTRUHPS4096821_AVX2_square_204_821 -.global _PQCLEAN_NTRUHPS4096821_AVX2_square_204_821 -PQCLEAN_NTRUHPS4096821_AVX2_square_204_821: -_PQCLEAN_NTRUHPS4096821_AVX2_square_204_821: -vmovdqa 0(%rsi), %ymm0 -vpshufb mask_0_1(%rip), %ymm0, %ymm6 -vpand mask_1_1(%rip), %ymm6, %ymm1 -vpand mask_2_1(%rip), %ymm6, %ymm2 -vpand mask_3_1(%rip), %ymm6, %ymm3 -vpand mask_4_1(%rip), %ymm6, %ymm4 -vpshufb mask_5_1(%rip), %ymm0, %ymm6 -vpand mask_6_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_7_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_8_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_9_1(%rip), %ymm0, %ymm6 -vpand mask_10_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_11_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_12_1(%rip), %ymm0, %ymm6 -vpand mask_13_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_14_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_15_1(%rip), %ymm0, %ymm6 -vpand mask_16_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_17_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_18_1(%rip), %ymm0, %ymm6 -vpand mask_19_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm0, %ymm9 -vpshufb mask_20_1(%rip), %ymm9, %ymm6 -vpand mask_21_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpshufb mask_22_1(%rip), %ymm9, %ymm6 -vpand mask_23_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_24_1(%rip), %ymm9, %ymm6 -vpand mask_25_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsrlq $63, %ymm0, %ymm6 -vpsllq $1, %ymm0, %ymm5 -vpermq $147, %ymm6, %ymm7 -vpxor %ymm5, %ymm7, %ymm7 -vpshufb mask_26_1(%rip), %ymm7, %ymm6 -vpand mask_27_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_28_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_29_1(%rip), %ymm7, %ymm6 -vpand mask_30_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_31_1(%rip), %ymm9, %ymm6 -vpand mask_32_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_33_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_34_1(%rip), %ymm9, %ymm6 -vpand mask_35_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_36_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_37_1(%rip), %ymm9, %ymm6 -vpand mask_38_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_39_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_40_1(%rip), %ymm9, %ymm6 -vpand mask_41_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_42_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_43_1(%rip), %ymm9, %ymm6 -vpand mask_44_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsrlq $63, %ymm7, %ymm6 -vpsllq $1, %ymm7, %ymm5 -vpermq $147, %ymm6, %ymm8 -vpxor %ymm5, %ymm8, %ymm8 -vpshufb mask_45_1(%rip), %ymm8, %ymm6 -vpand mask_46_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_47_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_48_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_49_1(%rip), %ymm8, %ymm6 -vpand mask_50_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_51_1(%rip), %ymm8, %ymm6 -vpand mask_52_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_53_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_54_1(%rip), %ymm8, %ymm6 -vpand mask_55_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_56_1(%rip), %ymm8, %ymm6 -vpand mask_57_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_58_1(%rip), %ymm9, %ymm6 -vpand mask_59_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_60_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_61_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_62_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_63_1(%rip), %ymm9, %ymm6 -vpand mask_64_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_65_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_66_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_67_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_68_1(%rip), %ymm9, %ymm6 -vpand mask_69_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_70_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_71_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_72_1(%rip), %ymm9, %ymm6 -vpand mask_73_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_74_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_75_1(%rip), %ymm9, %ymm6 -vpand mask_76_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_77_1(%rip), %ymm9, %ymm6 -vpand mask_78_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsllq $1, %ymm8, %ymm7 -vpshufb mask_79_1(%rip), %ymm7, %ymm6 -vpand mask_80_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_81_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_82_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_83_1(%rip), %ymm7, %ymm6 -vpand mask_84_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_85_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_86_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_87_1(%rip), %ymm7, %ymm6 -vpand mask_88_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_89_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_90_1(%rip), %ymm7, %ymm6 -vpand mask_91_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_92_1(%rip), %ymm7, %ymm6 -vpand mask_93_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_94_1(%rip), %ymm9, %ymm6 -vpand mask_95_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_96_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_97_1(%rip), %ymm9, %ymm6 -vpand mask_98_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_99_1(%rip), %ymm9, %ymm6 -vpand mask_100_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_101_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_102_1(%rip), %ymm9, %ymm6 -vpand mask_103_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_104_1(%rip), %ymm9, %ymm6 -vpand mask_105_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsrlq $62, %ymm8, %ymm6 -vpsllq $2, %ymm8, %ymm5 -vpermq $147, %ymm6, %ymm7 -vpxor %ymm5, %ymm7, %ymm7 -vpshufb mask_106_1(%rip), %ymm7, %ymm6 -vpand mask_107_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpshufb mask_108_1(%rip), %ymm7, %ymm6 -vpand mask_109_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_110_1(%rip), %ymm7, %ymm6 -vpand mask_111_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_112_1(%rip), %ymm9, %ymm6 -vpand mask_113_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_114_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_115_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_116_1(%rip), %ymm9, %ymm6 -vpand mask_117_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_118_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_119_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_120_1(%rip), %ymm9, %ymm6 -vpand mask_121_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_122_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_123_1(%rip), %ymm9, %ymm6 -vpand mask_124_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_125_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_126_1(%rip), %ymm9, %ymm6 -vpand mask_127_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsrlq $63, %ymm7, %ymm6 -vpsllq $1, %ymm7, %ymm5 -vpermq $147, %ymm6, %ymm8 -vpxor %ymm5, %ymm8, %ymm8 -vpshufb mask_128_1(%rip), %ymm8, %ymm6 -vpand mask_129_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_130_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_131_1(%rip), %ymm8, %ymm6 -vpand mask_132_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_133_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_134_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_135_1(%rip), %ymm8, %ymm6 -vpand mask_136_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_137_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_138_1(%rip), %ymm8, %ymm6 -vpand mask_139_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_140_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_141_1(%rip), %ymm8, %ymm6 -vpand mask_142_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_143_1(%rip), %ymm8, %ymm6 -vpand mask_144_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_145_1(%rip), %ymm8, %ymm6 -vpand mask_146_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_147_1(%rip), %ymm9, %ymm6 -vpand mask_148_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_149_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_150_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_151_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_152_1(%rip), %ymm9, %ymm6 -vpand mask_153_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_154_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_155_1(%rip), %ymm9, %ymm6 -vpand mask_156_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsllq $1, %ymm8, %ymm7 -vpshufb mask_157_1(%rip), %ymm7, %ymm6 -vpand mask_158_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_159_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_160_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_161_1(%rip), %ymm7, %ymm6 -vpand mask_162_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_163_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_164_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_165_1(%rip), %ymm7, %ymm6 -vpand mask_166_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_167_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_168_1(%rip), %ymm7, %ymm6 -vpand mask_169_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_170_1(%rip), %ymm7, %ymm6 -vpand mask_171_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_172_1(%rip), %ymm9, %ymm6 -vpand mask_173_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_174_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_175_1(%rip), %ymm9, %ymm6 -vpand mask_176_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_177_1(%rip), %ymm9, %ymm6 -vpand mask_178_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_179_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_180_1(%rip), %ymm9, %ymm6 -vpand mask_181_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_182_1(%rip), %ymm9, %ymm6 -vpand mask_183_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsrlq $62, %ymm8, %ymm6 -vpsllq $2, %ymm8, %ymm5 -vpermq $147, %ymm6, %ymm7 -vpxor %ymm5, %ymm7, %ymm7 -vpshufb mask_184_1(%rip), %ymm7, %ymm6 -vpand mask_185_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_186_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_187_1(%rip), %ymm7, %ymm6 -vpand mask_188_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_189_1(%rip), %ymm7, %ymm6 -vpand mask_190_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_191_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_192_1(%rip), %ymm7, %ymm6 -vpand mask_193_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_194_1(%rip), %ymm7, %ymm6 -vpand mask_195_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_196_1(%rip), %ymm9, %ymm6 -vpand mask_197_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_198_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_199_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_200_1(%rip), %ymm9, %ymm6 -vpand mask_201_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_202_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_203_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_204_1(%rip), %ymm9, %ymm6 -vpand mask_205_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_206_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_207_1(%rip), %ymm9, %ymm6 -vpand mask_208_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_209_1(%rip), %ymm9, %ymm6 -vpand mask_210_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vmovdqa 32(%rsi), %ymm0 -vpshufb mask_211_1(%rip), %ymm0, %ymm6 -vpand mask_212_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_213_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_214_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_215_1(%rip), %ymm0, %ymm6 -vpand mask_216_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_217_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_218_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_219_1(%rip), %ymm0, %ymm6 -vpand mask_220_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_221_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_222_1(%rip), %ymm0, %ymm6 -vpand mask_223_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_224_1(%rip), %ymm0, %ymm6 -vpand mask_225_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_226_1(%rip), %ymm0, %ymm6 -vpand mask_227_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm9 -vpshufb mask_228_1(%rip), %ymm9, %ymm6 -vpand mask_229_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_230_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_231_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_232_1(%rip), %ymm9, %ymm6 -vpand mask_233_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_234_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_235_1(%rip), %ymm9, %ymm6 -vpand mask_236_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $1, %ymm0, %ymm7 -vpshufb mask_237_1(%rip), %ymm7, %ymm6 -vpand mask_238_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_239_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_240_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_241_1(%rip), %ymm7, %ymm6 -vpand mask_242_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_243_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_244_1(%rip), %ymm7, %ymm6 -vpand mask_245_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_246_1(%rip), %ymm9, %ymm6 -vpand mask_247_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_248_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_249_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_250_1(%rip), %ymm9, %ymm6 -vpand mask_251_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_252_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_253_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_254_1(%rip), %ymm9, %ymm6 -vpand mask_255_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_256_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_257_1(%rip), %ymm9, %ymm6 -vpand mask_258_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_259_1(%rip), %ymm9, %ymm6 -vpand mask_260_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_261_1(%rip), %ymm9, %ymm6 -vpand mask_262_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_263_1(%rip), %ymm9, %ymm6 -vpand mask_264_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsllq $2, %ymm0, %ymm7 -vpshufb mask_265_1(%rip), %ymm7, %ymm6 -vpand mask_266_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_267_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_268_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_269_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_270_1(%rip), %ymm7, %ymm6 -vpand mask_271_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_272_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_273_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_274_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_275_1(%rip), %ymm7, %ymm6 -vpand mask_276_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_277_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_278_1(%rip), %ymm7, %ymm6 -vpand mask_279_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_280_1(%rip), %ymm7, %ymm6 -vpand mask_281_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_282_1(%rip), %ymm7, %ymm6 -vpand mask_283_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_284_1(%rip), %ymm9, %ymm6 -vpand mask_285_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpshufb mask_286_1(%rip), %ymm9, %ymm6 -vpand mask_287_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_288_1(%rip), %ymm9, %ymm6 -vpand mask_289_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsrlq $61, %ymm0, %ymm6 -vpsllq $3, %ymm0, %ymm5 -vpermq $147, %ymm6, %ymm7 -vpxor %ymm5, %ymm7, %ymm7 -vpshufb mask_290_1(%rip), %ymm7, %ymm6 -vpand mask_291_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_292_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_293_1(%rip), %ymm9, %ymm6 -vpand mask_294_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_295_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_296_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_297_1(%rip), %ymm9, %ymm6 -vpand mask_298_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_299_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_300_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_301_1(%rip), %ymm9, %ymm6 -vpand mask_302_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_303_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_304_1(%rip), %ymm9, %ymm6 -vpand mask_305_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_306_1(%rip), %ymm9, %ymm6 -vpand mask_307_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_308_1(%rip), %ymm9, %ymm6 -vpand mask_309_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $1, %ymm7, %ymm8 -vpshufb mask_310_1(%rip), %ymm8, %ymm6 -vpand mask_311_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_312_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_313_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_314_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_315_1(%rip), %ymm8, %ymm6 -vpand mask_316_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_317_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_318_1(%rip), %ymm8, %ymm6 -vpand mask_319_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_320_1(%rip), %ymm8, %ymm6 -vpand mask_321_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_322_1(%rip), %ymm9, %ymm6 -vpand mask_323_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_324_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_325_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_326_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_327_1(%rip), %ymm9, %ymm6 -vpand mask_328_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_329_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_330_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_331_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_332_1(%rip), %ymm9, %ymm6 -vpand mask_333_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_334_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_335_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_336_1(%rip), %ymm9, %ymm6 -vpand mask_337_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_338_1(%rip), %ymm9, %ymm6 -vpand mask_339_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_340_1(%rip), %ymm9, %ymm6 -vpand mask_341_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_342_1(%rip), %ymm9, %ymm6 -vpand mask_343_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_344_1(%rip), %ymm9, %ymm6 -vpand mask_345_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsllq $2, %ymm7, %ymm8 -vpshufb mask_346_1(%rip), %ymm8, %ymm6 -vpand mask_347_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_348_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_349_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_350_1(%rip), %ymm8, %ymm6 -vpand mask_351_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_352_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_353_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_354_1(%rip), %ymm8, %ymm6 -vpand mask_355_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_356_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_357_1(%rip), %ymm8, %ymm6 -vpand mask_358_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_359_1(%rip), %ymm8, %ymm6 -vpand mask_360_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_361_1(%rip), %ymm8, %ymm6 -vpand mask_362_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_363_1(%rip), %ymm9, %ymm6 -vpand mask_364_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_365_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_366_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_367_1(%rip), %ymm9, %ymm6 -vpand mask_368_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_369_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_370_1(%rip), %ymm9, %ymm6 -vpand mask_371_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsrlq $61, %ymm7, %ymm6 -vpsllq $3, %ymm7, %ymm5 -vpermq $147, %ymm6, %ymm8 -vpxor %ymm5, %ymm8, %ymm8 -vpshufb mask_372_1(%rip), %ymm8, %ymm6 -vpand mask_373_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpshufb mask_374_1(%rip), %ymm8, %ymm6 -vpand mask_375_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_376_1(%rip), %ymm8, %ymm6 -vpand mask_377_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_378_1(%rip), %ymm9, %ymm6 -vpand mask_379_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_380_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_381_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_382_1(%rip), %ymm9, %ymm6 -vpand mask_383_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_384_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_385_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_386_1(%rip), %ymm9, %ymm6 -vpand mask_387_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_388_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_389_1(%rip), %ymm9, %ymm6 -vpand mask_390_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_391_1(%rip), %ymm9, %ymm6 -vpand mask_392_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_393_1(%rip), %ymm9, %ymm6 -vpand mask_394_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $1, %ymm8, %ymm7 -vpshufb mask_395_1(%rip), %ymm7, %ymm6 -vpand mask_396_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_397_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_398_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_399_1(%rip), %ymm7, %ymm6 -vpand mask_400_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_401_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_402_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_403_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_404_1(%rip), %ymm7, %ymm6 -vpand mask_405_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_406_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_407_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_408_1(%rip), %ymm7, %ymm6 -vpand mask_409_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_410_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_411_1(%rip), %ymm7, %ymm6 -vpand mask_412_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_413_1(%rip), %ymm7, %ymm6 -vpand mask_414_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_415_1(%rip), %ymm9, %ymm6 -vpand mask_416_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_417_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_418_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_419_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_420_1(%rip), %ymm9, %ymm6 -vpand mask_421_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vmovdqa 64(%rsi), %ymm0 -vpshufb mask_422_1(%rip), %ymm0, %ymm6 -vpand mask_423_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_424_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_425_1(%rip), %ymm0, %ymm6 -vpand mask_426_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_427_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_428_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_429_1(%rip), %ymm0, %ymm6 -vpand mask_430_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_431_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm9 -vpshufb mask_432_1(%rip), %ymm9, %ymm6 -vpand mask_433_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_434_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_435_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_436_1(%rip), %ymm9, %ymm6 -vpand mask_437_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_438_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_439_1(%rip), %ymm9, %ymm6 -vpand mask_440_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsrlq $63, %ymm0, %ymm6 -vpsllq $1, %ymm0, %ymm5 -vpermq $147, %ymm6, %ymm7 -vpxor %ymm5, %ymm7, %ymm7 -vpshufb mask_441_1(%rip), %ymm7, %ymm6 -vpand mask_442_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_443_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_444_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_445_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_446_1(%rip), %ymm7, %ymm6 -vpand mask_447_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_448_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_449_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_450_1(%rip), %ymm7, %ymm6 -vpand mask_451_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_452_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_453_1(%rip), %ymm7, %ymm6 -vpand mask_454_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_455_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_456_1(%rip), %ymm9, %ymm6 -vpand mask_457_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpshufb mask_458_1(%rip), %ymm9, %ymm6 -vpand mask_459_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpsllq $1, %ymm7, %ymm8 -vpshufb mask_460_1(%rip), %ymm8, %ymm6 -vpand mask_461_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_462_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_463_1(%rip), %ymm8, %ymm6 -vpand mask_464_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_465_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_466_1(%rip), %ymm8, %ymm6 -vpand mask_467_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_468_1(%rip), %ymm9, %ymm6 -vpand mask_469_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_470_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_471_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_472_1(%rip), %ymm9, %ymm6 -vpand mask_473_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_474_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_475_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_476_1(%rip), %ymm9, %ymm6 -vpand mask_477_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_478_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $2, %ymm7, %ymm8 -vpshufb mask_479_1(%rip), %ymm8, %ymm6 -vpand mask_480_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_481_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_482_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_483_1(%rip), %ymm8, %ymm6 -vpand mask_484_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_485_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_486_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_487_1(%rip), %ymm8, %ymm6 -vpand mask_488_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_489_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_490_1(%rip), %ymm9, %ymm6 -vpand mask_491_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_492_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_493_1(%rip), %ymm9, %ymm6 -vpand mask_494_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_495_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_496_1(%rip), %ymm9, %ymm6 -vpand mask_497_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_498_1(%rip), %ymm9, %ymm6 -vpand mask_499_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsrlq $61, %ymm7, %ymm6 -vpsllq $3, %ymm7, %ymm5 -vpermq $147, %ymm6, %ymm8 -vpxor %ymm5, %ymm8, %ymm8 -vpshufb mask_500_1(%rip), %ymm8, %ymm6 -vpand mask_501_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_502_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_503_1(%rip), %ymm8, %ymm6 -vpand mask_504_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_505_1(%rip), %ymm8, %ymm6 -vpand mask_506_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_507_1(%rip), %ymm8, %ymm6 -vpand mask_508_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_509_1(%rip), %ymm9, %ymm6 -vpand mask_510_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_511_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_512_1(%rip), %ymm9, %ymm6 -vpand mask_513_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_514_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_515_1(%rip), %ymm9, %ymm6 -vpand mask_516_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $1, %ymm8, %ymm7 -vpshufb mask_517_1(%rip), %ymm7, %ymm6 -vpand mask_518_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpshufb mask_519_1(%rip), %ymm7, %ymm6 -vpand mask_520_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpshufb mask_521_1(%rip), %ymm7, %ymm6 -vpand mask_522_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_523_1(%rip), %ymm9, %ymm6 -vpand mask_524_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_525_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_526_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_527_1(%rip), %ymm9, %ymm6 -vpand mask_528_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_529_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_530_1(%rip), %ymm9, %ymm6 -vpand mask_531_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $2, %ymm8, %ymm7 -vpshufb mask_532_1(%rip), %ymm7, %ymm6 -vpand mask_533_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_534_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_535_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_536_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_537_1(%rip), %ymm7, %ymm6 -vpand mask_538_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_539_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_540_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_541_1(%rip), %ymm7, %ymm6 -vpand mask_542_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_543_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_544_1(%rip), %ymm7, %ymm6 -vpand mask_545_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_546_1(%rip), %ymm9, %ymm6 -vpand mask_547_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_548_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_549_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_550_1(%rip), %ymm9, %ymm6 -vpand mask_551_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_552_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_553_1(%rip), %ymm9, %ymm6 -vpand mask_554_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_555_1(%rip), %ymm9, %ymm6 -vpand mask_556_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_557_1(%rip), %ymm9, %ymm6 -vpand mask_558_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsrlq $61, %ymm8, %ymm6 -vpsllq $3, %ymm8, %ymm5 -vpermq $147, %ymm6, %ymm7 -vpxor %ymm5, %ymm7, %ymm7 -vpshufb mask_559_1(%rip), %ymm7, %ymm6 -vpand mask_560_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpshufb mask_561_1(%rip), %ymm7, %ymm6 -vpand mask_562_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_563_1(%rip), %ymm7, %ymm6 -vpand mask_564_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_565_1(%rip), %ymm7, %ymm6 -vpand mask_566_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_567_1(%rip), %ymm9, %ymm6 -vpand mask_568_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_569_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_570_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_571_1(%rip), %ymm9, %ymm6 -vpand mask_572_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_573_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_574_1(%rip), %ymm9, %ymm6 -vpand mask_575_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vmovdqa 96(%rsi), %ymm0 -vpshufb mask_576_1(%rip), %ymm0, %ymm6 -vpand mask_577_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_578_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_579_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_580_1(%rip), %ymm0, %ymm6 -vpand mask_581_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_582_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm9 -vpsllq $1, %ymm0, %ymm7 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_583_1(%rip), %ymm9, %ymm6 -vpand mask_584_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_585_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_586_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_587_1(%rip), %ymm9, %ymm6 -vpand mask_588_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_589_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $2, %ymm0, %ymm7 -vpshufb mask_590_1(%rip), %ymm7, %ymm6 -vpand mask_591_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_592_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_593_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_594_1(%rip), %ymm7, %ymm6 -vpand mask_595_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_596_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpsllq $3, %ymm0, %ymm7 -vpshufb mask_597_1(%rip), %ymm7, %ymm6 -vpand mask_598_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_599_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_600_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_601_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_602_1(%rip), %ymm7, %ymm6 -vpand mask_603_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_604_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_605_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_606_1(%rip), %ymm7, %ymm6 -vpand mask_607_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_608_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm7, %ymm9 -vpsllq $4, %ymm0, %ymm7 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_609_1(%rip), %ymm9, %ymm6 -vpand mask_610_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_611_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_612_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_613_1(%rip), %ymm9, %ymm6 -vpand mask_614_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_615_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $5, %ymm0, %ymm7 -vpshufb mask_616_1(%rip), %ymm7, %ymm6 -vpand mask_617_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_618_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_619_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_620_1(%rip), %ymm7, %ymm6 -vpand mask_621_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_622_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpsllq $6, %ymm0, %ymm7 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_623_1(%rip), %ymm9, %ymm6 -vpand mask_624_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_625_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_626_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_627_1(%rip), %ymm9, %ymm6 -vpand mask_628_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_629_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $7, %ymm0, %ymm7 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_630_1(%rip), %ymm9, %ymm6 -vpand mask_631_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_632_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_633_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_634_1(%rip), %ymm9, %ymm6 -vpand mask_635_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_636_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vmovdqa %ymm1, 0(%rdi) -vmovdqa %ymm2, 32(%rdi) -vmovdqa %ymm3, 64(%rdi) -vmovdqa %ymm4, 96(%rdi) -ret diff --git a/src/kem/ntru/ntruhps4096821/avx2/square_24_821_shufbytes.s b/src/kem/ntru/ntruhps4096821/avx2/square_24_821_shufbytes.s deleted file mode 100644 index 9dc8351d..00000000 --- a/src/kem/ntru/ntruhps4096821/avx2/square_24_821_shufbytes.s +++ /dev/null @@ -1,9467 +0,0 @@ -.data -.p2align 5 -mask_0_1: -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 1 -.byte 0 -.byte 10 -.byte 0 -.byte 10 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 14 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 5 -.byte 15 -.byte 14 -.byte 4 -.byte 255 -.byte 255 -.byte 255 - -mask_1_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x20 -.word 0x0 - -mask_2_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 - -mask_3_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x810 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_4_1: -.word 0x0 -.word 0x0 -.word 0x408 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_5_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_6_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 - -mask_7_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_8_1: -.byte 255 -.byte 255 -.byte 15 -.byte 5 -.byte 15 -.byte 14 -.byte 4 -.byte 14 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 5 -.byte 11 -.byte 10 -.byte 0 -.byte 10 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 10 -.byte 0 -.byte 10 -.byte 0 -.byte 255 - -mask_9_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x8 - -mask_10_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x40 -.word 0x0 - -mask_11_1: -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x408 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 - -mask_12_1: -.word 0x0 -.word 0x1020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_13_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_14_1: -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 - -mask_15_1: -.byte 15 -.byte 14 -.byte 4 -.byte 14 -.byte 4 -.byte 14 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 14 -.byte 4 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 - -mask_16_1: -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_17_1: -.word 0x0 -.word 0x1000 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_18_1: -.word 0x8000 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 - -mask_19_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_20_1: -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_21_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_22_1: -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_23_1: -.byte 255 -.byte 9 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 14 -.byte 4 -.byte 14 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_24_1: -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x4 -.word 0x0 -.word 0x0 - -mask_25_1: -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_26_1: -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_27_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_28_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_29_1: -.byte 8 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 12 -.byte 2 -.byte 12 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 12 -.byte 2 -.byte 12 -.byte 2 - -mask_30_1: -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x408 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x810 - -mask_31_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4080 -.word 0x0 - -mask_32_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 - -mask_33_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 - -mask_34_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 - -mask_35_1: -.byte 12 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 3 -.byte 2 -.byte 12 -.byte 2 -.byte 12 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 8 -.byte 255 - -mask_36_1: -.word 0x102 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x204 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_37_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 - -mask_38_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 - -mask_39_1: -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_40_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_41_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_42_1: -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 12 -.byte 2 -.byte 0 -.byte 11 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 2 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 6 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_43_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8002 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 - -mask_44_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_45_1: -.word 0x0 -.word 0x0 -.word 0x1020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_46_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_47_1: -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 12 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_48_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x204 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_49_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_50_1: -.byte 255 -.byte 255 -.byte 7 -.byte 6 -.byte 255 -.byte 6 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 6 -.byte 0 -.byte 2 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 2 -.byte 12 -.byte 2 -.byte 12 -.byte 2 -.byte 255 -.byte 255 - -mask_51_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x102 -.word 0x0 - -mask_52_1: -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x810 -.word 0x0 -.word 0x0 - -mask_53_1: -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4080 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_54_1: -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_55_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_56_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_57_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_58_1: -.byte 255 -.byte 6 -.byte 255 -.byte 15 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 15 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 0 -.byte 10 -.byte 0 -.byte 10 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 10 - -mask_59_1: -.word 0x0 -.word 0x4000 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_60_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 - -mask_61_1: -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 - -mask_62_1: -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 - -mask_63_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_64_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 - -mask_65_1: -.byte 0 -.byte 10 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 0 -.byte 10 -.byte 0 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 6 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 - -mask_66_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_67_1: -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_68_1: -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 - -mask_69_1: -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_70_1: -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_71_1: -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 10 -.byte 255 -.byte 10 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 14 -.byte 4 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 4 -.byte 14 -.byte 4 -.byte 14 -.byte 4 -.byte 255 - -mask_72_1: -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x1 - -mask_73_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x8 -.word 0x0 - -mask_74_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x40 -.word 0x0 -.word 0x0 - -mask_75_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_76_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_77_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_78_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 14 -.byte 4 -.byte 14 -.byte 13 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 10 -.byte 255 -.byte 10 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 10 -.byte 9 -.byte 255 - -mask_79_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 - -mask_80_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 - -mask_81_1: -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 - -mask_82_1: -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_83_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_84_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_85_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_86_1: -.byte 255 -.byte 14 -.byte 4 -.byte 14 -.byte 13 -.byte 3 -.byte 13 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 4 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_87_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x810 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_88_1: -.word 0x0 -.word 0x0 -.word 0x4080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_89_1: -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_90_1: -.word 0x2000 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_91_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_92_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_93_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_94_1: -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 7 -.byte 13 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 4 -.byte 14 -.byte 13 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_95_1: -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x1020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2040 -.word 0x0 -.word 0x0 - -mask_96_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_97_1: -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_98_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_99_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_100_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 - -mask_101_1: -.byte 8 -.byte 7 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 7 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 2 -.byte 12 -.byte 11 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 2 -.byte 12 -.byte 11 - -mask_102_1: -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 - -mask_103_1: -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 - -mask_104_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x810 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1020 -.word 0x0 - -mask_105_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 - -mask_106_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 - -mask_107_1: -.byte 1 -.byte 11 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 2 -.byte 1 -.byte 11 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 7 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 - -mask_108_1: -.word 0x1000 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_109_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_110_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x408 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 - -mask_111_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_112_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_113_1: -.byte 255 -.byte 9 -.byte 255 -.byte 9 -.byte 255 -.byte 9 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 3 -.byte 13 -.byte 3 -.byte 13 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_114_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x1 -.word 0x0 -.word 0x0 - -mask_115_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_116_1: -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_117_1: -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_118_1: -.byte 3 -.byte 13 -.byte 3 -.byte 13 -.byte 12 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 3 -.byte 13 -.byte 3 -.byte 2 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 9 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_119_1: -.word 0x0 -.word 0x0 -.word 0x4080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 - -mask_120_1: -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_121_1: -.word 0x2000 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_122_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_123_1: -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_124_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_125_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_126_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_127_1: -.byte 12 -.byte 2 -.byte 12 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 3 -.byte 2 -.byte 12 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 7 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 7 -.byte 255 - -mask_128_1: -.word 0x0 -.word 0x810 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_129_1: -.word 0x4080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 - -mask_130_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 - -mask_131_1: -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_132_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_133_1: -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_134_1: -.byte 7 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 7 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 3 -.byte 13 -.byte 12 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 3 -.byte 13 - -mask_135_1: -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_136_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 - -mask_137_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x10 - -mask_138_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_139_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_140_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 7 -.byte 6 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 10 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 1 -.byte 11 -.byte 10 -.byte 0 -.byte 255 -.byte 255 -.byte 255 - -mask_141_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x40 -.word 0x0 - -mask_142_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 - -mask_143_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1020 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_144_1: -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_145_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_146_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 - -mask_147_1: -.byte 255 -.byte 255 -.byte 11 -.byte 1 -.byte 11 -.byte 1 -.byte 0 -.byte 10 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 1 -.byte 7 -.byte 6 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 7 -.byte 6 -.byte 255 -.byte 255 - -mask_148_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 - -mask_149_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 - -mask_150_1: -.word 0x0 -.word 0x0 -.word 0x408 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x810 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 - -mask_151_1: -.word 0x0 -.word 0x2040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_152_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_153_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_154_1: -.byte 11 -.byte 1 -.byte 0 -.byte 10 -.byte 0 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 10 -.byte 0 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 5 -.byte 15 -.byte 14 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 5 - -mask_155_1: -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_156_1: -.word 0x0 -.word 0x2000 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_157_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x810 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1020 - -mask_158_1: -.word 0x408 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_159_1: -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_160_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_161_1: -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_162_1: -.byte 15 -.byte 14 -.byte 4 -.byte 14 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 5 -.byte 4 -.byte 14 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 10 -.byte 0 -.byte 10 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_163_1: -.word 0x0 -.word 0x1000 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x8 -.word 0x0 -.word 0x0 - -mask_164_1: -.word 0x8000 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_165_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x408 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_166_1: -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_167_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_168_1: -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_169_1: -.byte 4 -.byte 14 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 4 -.byte 14 -.byte 4 -.byte 14 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 9 -.byte 8 -.byte 255 - -mask_170_1: -.word 0x200 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 - -mask_171_1: -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 - -mask_172_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 - -mask_173_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_174_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_175_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_176_1: -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 9 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 14 -.byte 4 -.byte 14 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 14 -.byte 4 -.byte 14 - -mask_177_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 - -mask_178_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x40 - -mask_179_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 - -mask_180_1: -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_181_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 - -mask_182_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 - -mask_183_1: -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 12 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 12 -.byte 2 -.byte 12 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_184_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x408 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x810 -.word 0x0 -.word 0x0 - -mask_185_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4080 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_186_1: -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_187_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_188_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_189_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_190_1: -.byte 255 -.byte 13 -.byte 3 -.byte 2 -.byte 12 -.byte 2 -.byte 12 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 12 -.byte 2 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 - -mask_191_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x204 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 - -mask_192_1: -.word 0x0 -.word 0x0 -.word 0x1020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2040 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 - -mask_193_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_194_1: -.word 0x800 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_195_1: -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_196_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_197_1: -.byte 0 -.byte 2 -.byte 0 -.byte 11 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 2 -.byte 0 -.byte 2 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 6 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 6 - -mask_198_1: -.word 0x0 -.word 0x8002 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_199_1: -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 - -mask_200_1: -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 - -mask_201_1: -.byte 12 -.byte 255 -.byte 12 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 12 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_202_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_203_1: -.word 0x0 -.word 0x204 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_204_1: -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_205_1: -.byte 255 -.byte 6 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 6 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 2 -.byte 0 -.byte 2 -.byte 12 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 - -mask_206_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x102 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_207_1: -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_208_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 - -mask_209_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 - -mask_210_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_211_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 - -mask_212_1: -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 6 -.byte 255 -.byte 15 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 10 -.byte 0 -.byte 10 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 10 -.byte 0 -.byte 10 -.byte 0 -.byte 255 - -mask_213_1: -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x2 - -mask_214_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x10 -.word 0x0 - -mask_215_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 - -mask_216_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_217_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_218_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_219_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 - -mask_220_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 10 -.byte 0 -.byte 10 -.byte 0 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 6 -.byte 255 -.byte 6 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 6 -.byte 255 -.byte 6 - -mask_221_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 - -mask_222_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 - -mask_223_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 - -mask_224_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_225_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_226_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_227_1: -.byte 7 -.byte 255 -.byte 7 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 7 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 11 -.byte 1 -.byte 11 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 2 -.byte 1 - -mask_228_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x810 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_229_1: -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 - -mask_230_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x4 - -mask_231_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 - -mask_232_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 - -mask_233_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_234_1: -.byte 11 -.byte 1 -.byte 11 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 11 -.byte 1 -.byte 11 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 7 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 - -mask_235_1: -.word 0x0 -.word 0x204 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x408 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_236_1: -.word 0x1020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_237_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 - -mask_238_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_239_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_240_1: -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 11 -.byte 1 -.byte 11 -.byte 1 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 5 -.byte 15 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 5 -.byte 15 -.byte 5 -.byte 255 -.byte 255 - -mask_241_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x408 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x810 -.word 0x0 - -mask_242_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x408 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4080 -.word 0x0 -.word 0x0 - -mask_243_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x2040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_244_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_245_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_246_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 - -mask_247_1: -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_248_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 5 -.byte 15 -.byte 5 -.byte 15 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 1 -.byte 11 -.byte 1 -.byte 11 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 11 -.byte 1 -.byte 11 -.byte 1 - -mask_249_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x204 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x102 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x204 - -mask_250_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x810 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1020 -.word 0x0 - -mask_251_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 - -mask_252_1: -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_253_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_254_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 - -mask_255_1: -.byte 255 -.byte 5 -.byte 15 -.byte 5 -.byte 15 -.byte 14 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 5 -.byte 15 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 9 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_256_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_257_1: -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x408 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_258_1: -.word 0x0 -.word 0x1020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_259_1: -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_260_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_261_1: -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_262_1: -.byte 10 -.byte 9 -.byte 255 -.byte 9 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 9 -.byte 255 -.byte 9 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 5 -.byte 15 -.byte 5 -.byte 15 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_263_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x102 -.word 0x0 -.word 0x0 - -mask_264_1: -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x810 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_265_1: -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_266_1: -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_267_1: -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_268_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_269_1: -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_270_1: -.byte 255 -.byte 9 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 9 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 3 -.byte 13 -.byte 3 -.byte 13 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 13 -.byte 3 -.byte 13 - -mask_271_1: -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 - -mask_272_1: -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x10 - -mask_273_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 - -mask_274_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 - -mask_275_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 - -mask_276_1: -.byte 12 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 13 -.byte 3 -.byte 13 -.byte 3 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 9 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 9 - -mask_277_1: -.word 0x4080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_278_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 - -mask_279_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 - -mask_280_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_281_1: -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_282_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_283_1: -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_284_1: -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 3 -.byte 13 -.byte 3 -.byte 2 -.byte 12 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 7 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 7 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 - -mask_285_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 - -mask_286_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 - -mask_287_1: -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_288_1: -.word 0x0 -.word 0x4000 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_289_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_290_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_291_1: -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 7 -.byte 255 -.byte 7 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 3 -.byte 13 -.byte 12 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 3 -.byte 13 -.byte 12 -.byte 2 -.byte 255 -.byte 255 - -mask_292_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4080 -.word 0x0 - -mask_293_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 - -mask_294_1: -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x10 -.word 0x0 -.word 0x0 - -mask_295_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_296_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 - -mask_297_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 - -mask_298_1: -.byte 7 -.byte 255 -.byte 7 -.byte 6 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 6 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 1 -.byte 11 -.byte 10 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 1 - -mask_299_1: -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_300_1: -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_301_1: -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2040 - -mask_302_1: -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_303_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_304_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_305_1: -.byte 11 -.byte 1 -.byte 0 -.byte 10 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 1 -.byte 11 -.byte 10 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 7 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_306_1: -.word 0x0 -.word 0x2000 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_307_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_308_1: -.word 0x408 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x810 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_309_1: -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_310_1: -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_311_1: -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 11 -.byte 10 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 5 -.byte 15 -.byte 14 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 5 -.byte 15 -.byte 14 -.byte 4 -.byte 255 - -mask_312_1: -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x40 - -mask_313_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 - -mask_314_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x810 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1020 -.word 0x0 -.word 0x0 - -mask_315_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_316_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 - -mask_317_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 - -mask_318_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_319_1: -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 5 -.byte 15 -.byte 5 -.byte 4 -.byte 14 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 10 -.byte 0 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 1 -.byte 0 -.byte 10 - -mask_320_1: -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 - -mask_321_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 - -mask_322_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x408 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x408 -.word 0x0 - -mask_323_1: -.word 0x0 -.word 0x0 -.word 0x2040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_324_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 - -mask_325_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 - -mask_326_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_327_1: -.byte 255 -.byte 255 -.byte 15 -.byte 5 -.byte 4 -.byte 14 -.byte 4 -.byte 14 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 14 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 9 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_328_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 - -mask_329_1: -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_330_1: -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_331_1: -.word 0x0 -.word 0x408 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_332_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_333_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_334_1: -.byte 255 -.byte 9 -.byte 255 -.byte 9 -.byte 8 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 8 -.byte 255 -.byte 4 -.byte 14 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 14 -.byte 4 -.byte 14 -.byte 4 -.byte 255 -.byte 255 -.byte 255 - -mask_335_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x8 -.word 0x0 - -mask_336_1: -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x40 -.word 0x0 -.word 0x0 - -mask_337_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_338_1: -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_339_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_340_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_341_1: -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 5 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_342_1: -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_343_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_344_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_345_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 6 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 6 -.byte 5 - -mask_346_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 - -mask_347_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 - -mask_348_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 - -mask_349_1: -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_350_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_351_1: -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_352_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_353_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_354_1: -.byte 3 -.byte 255 -.byte 3 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 3 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_355_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_356_1: -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_357_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_358_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 3 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 - -mask_359_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_360_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_361_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 - -mask_362_1: -.byte 255 -.byte 255 -.byte 2 -.byte 1 -.byte 255 -.byte 1 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_363_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_364_1: -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_365_1: -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_366_1: -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_367_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 1 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_368_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 - -mask_369_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_370_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_371_1: -.byte 255 -.byte 5 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 5 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_372_1: -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_373_1: -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_374_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_375_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 5 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 5 - -mask_376_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_377_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 - -mask_378_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 - -mask_379_1: -.byte 3 -.byte 255 -.byte 3 -.byte 2 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 3 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_380_1: -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_381_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_382_1: -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_383_1: -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_384_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 3 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_385_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_386_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_387_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -.text -.global PQCLEAN_NTRUHPS4096821_AVX2_square_24_821 -.global _PQCLEAN_NTRUHPS4096821_AVX2_square_24_821 -PQCLEAN_NTRUHPS4096821_AVX2_square_24_821: -_PQCLEAN_NTRUHPS4096821_AVX2_square_24_821: -vmovdqa 0(%rsi), %ymm0 -vpshufb mask_0_1(%rip), %ymm0, %ymm6 -vpand mask_1_1(%rip), %ymm6, %ymm1 -vpand mask_2_1(%rip), %ymm6, %ymm2 -vpand mask_3_1(%rip), %ymm6, %ymm3 -vpand mask_4_1(%rip), %ymm6, %ymm4 -vpshufb mask_5_1(%rip), %ymm0, %ymm6 -vpand mask_6_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_7_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm9 -vpshufb mask_8_1(%rip), %ymm9, %ymm6 -vpand mask_9_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_10_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_11_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_12_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_13_1(%rip), %ymm9, %ymm6 -vpand mask_14_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $1, %ymm0, %ymm7 -vpshufb mask_15_1(%rip), %ymm7, %ymm6 -vpand mask_16_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_17_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_18_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_19_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_20_1(%rip), %ymm7, %ymm6 -vpand mask_21_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_22_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_23_1(%rip), %ymm9, %ymm6 -vpand mask_24_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_25_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_26_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_27_1(%rip), %ymm9, %ymm6 -vpand mask_28_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsrlq $62, %ymm0, %ymm6 -vpsllq $2, %ymm0, %ymm5 -vpermq $147, %ymm6, %ymm7 -vpxor %ymm5, %ymm7, %ymm7 -vpshufb mask_29_1(%rip), %ymm7, %ymm6 -vpand mask_30_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_31_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_32_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_33_1(%rip), %ymm7, %ymm6 -vpand mask_34_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_35_1(%rip), %ymm9, %ymm6 -vpand mask_36_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_37_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_38_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_39_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_40_1(%rip), %ymm9, %ymm6 -vpand mask_41_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $1, %ymm7, %ymm8 -vpshufb mask_42_1(%rip), %ymm8, %ymm6 -vpand mask_43_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_44_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_45_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_46_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_47_1(%rip), %ymm8, %ymm6 -vpand mask_48_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_49_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_50_1(%rip), %ymm9, %ymm6 -vpand mask_51_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_52_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_53_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_54_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_55_1(%rip), %ymm9, %ymm6 -vpand mask_56_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_57_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpsrlq $62, %ymm7, %ymm6 -vpsllq $2, %ymm7, %ymm5 -vpermq $147, %ymm6, %ymm8 -vpxor %ymm5, %ymm8, %ymm8 -vpshufb mask_58_1(%rip), %ymm8, %ymm6 -vpand mask_59_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_60_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_61_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_62_1(%rip), %ymm8, %ymm6 -vpand mask_63_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_64_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_65_1(%rip), %ymm9, %ymm6 -vpand mask_66_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_67_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_68_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_69_1(%rip), %ymm9, %ymm6 -vpand mask_70_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpsllq $1, %ymm8, %ymm7 -vpshufb mask_71_1(%rip), %ymm7, %ymm6 -vpand mask_72_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_73_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_74_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_75_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_76_1(%rip), %ymm7, %ymm6 -vpand mask_77_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_78_1(%rip), %ymm9, %ymm6 -vpand mask_79_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_80_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_81_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_82_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_83_1(%rip), %ymm9, %ymm6 -vpand mask_84_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_85_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsrlq $62, %ymm8, %ymm6 -vpsllq $2, %ymm8, %ymm5 -vpermq $147, %ymm6, %ymm7 -vpxor %ymm5, %ymm7, %ymm7 -vpshufb mask_86_1(%rip), %ymm7, %ymm6 -vpand mask_87_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_88_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_89_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_90_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_91_1(%rip), %ymm7, %ymm6 -vpand mask_92_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_93_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_94_1(%rip), %ymm9, %ymm6 -vpand mask_95_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_96_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_97_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_98_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_99_1(%rip), %ymm9, %ymm6 -vpand mask_100_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpsrlq $63, %ymm7, %ymm6 -vpsllq $1, %ymm7, %ymm5 -vpermq $147, %ymm6, %ymm8 -vpxor %ymm5, %ymm8, %ymm8 -vpshufb mask_101_1(%rip), %ymm8, %ymm6 -vpand mask_102_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_103_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_104_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_105_1(%rip), %ymm8, %ymm6 -vpand mask_106_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_107_1(%rip), %ymm9, %ymm6 -vpand mask_108_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_109_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_110_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_111_1(%rip), %ymm9, %ymm6 -vpand mask_112_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vmovdqa 32(%rsi), %ymm0 -vpshufb mask_113_1(%rip), %ymm0, %ymm6 -vpand mask_114_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_115_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_116_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_117_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm0, %ymm9 -vpshufb mask_118_1(%rip), %ymm9, %ymm6 -vpand mask_119_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_120_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_121_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_122_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_123_1(%rip), %ymm9, %ymm6 -vpand mask_124_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_125_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_126_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsllq $1, %ymm0, %ymm7 -vpshufb mask_127_1(%rip), %ymm7, %ymm6 -vpand mask_128_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_129_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_130_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_131_1(%rip), %ymm7, %ymm6 -vpand mask_132_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_133_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_134_1(%rip), %ymm9, %ymm6 -vpand mask_135_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_136_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_137_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_138_1(%rip), %ymm9, %ymm6 -vpand mask_139_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpsllq $2, %ymm0, %ymm7 -vpshufb mask_140_1(%rip), %ymm7, %ymm6 -vpand mask_141_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_142_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_143_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_144_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_145_1(%rip), %ymm7, %ymm6 -vpand mask_146_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_147_1(%rip), %ymm9, %ymm6 -vpand mask_148_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_149_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_150_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_151_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_152_1(%rip), %ymm9, %ymm6 -vpand mask_153_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpsllq $3, %ymm0, %ymm7 -vpshufb mask_154_1(%rip), %ymm7, %ymm6 -vpand mask_155_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_156_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_157_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_158_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_159_1(%rip), %ymm7, %ymm6 -vpand mask_160_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_161_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_162_1(%rip), %ymm9, %ymm6 -vpand mask_163_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_164_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_165_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_166_1(%rip), %ymm9, %ymm6 -vpand mask_167_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_168_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsrlq $60, %ymm0, %ymm6 -vpsllq $4, %ymm0, %ymm5 -vpermq $147, %ymm6, %ymm7 -vpxor %ymm5, %ymm7, %ymm7 -vpshufb mask_169_1(%rip), %ymm7, %ymm6 -vpand mask_170_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_171_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_172_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_173_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_174_1(%rip), %ymm7, %ymm6 -vpand mask_175_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_176_1(%rip), %ymm9, %ymm6 -vpand mask_177_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_178_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_179_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_180_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_181_1(%rip), %ymm9, %ymm6 -vpand mask_182_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsrlq $63, %ymm7, %ymm6 -vpsllq $1, %ymm7, %ymm5 -vpermq $147, %ymm6, %ymm8 -vpxor %ymm5, %ymm8, %ymm8 -vpshufb mask_183_1(%rip), %ymm8, %ymm6 -vpand mask_184_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_185_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_186_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_187_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_188_1(%rip), %ymm8, %ymm6 -vpand mask_189_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_190_1(%rip), %ymm9, %ymm6 -vpand mask_191_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_192_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_193_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_194_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_195_1(%rip), %ymm9, %ymm6 -vpand mask_196_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $1, %ymm8, %ymm7 -vpshufb mask_197_1(%rip), %ymm7, %ymm6 -vpand mask_198_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_199_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_200_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_201_1(%rip), %ymm7, %ymm6 -vpand mask_202_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_203_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_204_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_205_1(%rip), %ymm9, %ymm6 -vpand mask_206_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_207_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_208_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_209_1(%rip), %ymm9, %ymm6 -vpand mask_210_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_211_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsrlq $62, %ymm8, %ymm6 -vpsllq $2, %ymm8, %ymm5 -vpermq $147, %ymm6, %ymm7 -vpxor %ymm5, %ymm7, %ymm7 -vpshufb mask_212_1(%rip), %ymm7, %ymm6 -vpand mask_213_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_214_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_215_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_216_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_217_1(%rip), %ymm7, %ymm6 -vpand mask_218_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_219_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_220_1(%rip), %ymm9, %ymm6 -vpand mask_221_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_222_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_223_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_224_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_225_1(%rip), %ymm9, %ymm6 -vpand mask_226_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vmovdqa 64(%rsi), %ymm0 -vpshufb mask_227_1(%rip), %ymm0, %ymm6 -vpand mask_228_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_229_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_230_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_231_1(%rip), %ymm0, %ymm6 -vpand mask_232_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_233_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm9 -vpshufb mask_234_1(%rip), %ymm9, %ymm6 -vpand mask_235_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_236_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_237_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_238_1(%rip), %ymm9, %ymm6 -vpand mask_239_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsrlq $63, %ymm0, %ymm6 -vpsllq $1, %ymm0, %ymm5 -vpermq $147, %ymm6, %ymm7 -vpxor %ymm5, %ymm7, %ymm7 -vpshufb mask_240_1(%rip), %ymm7, %ymm6 -vpand mask_241_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_242_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_243_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_244_1(%rip), %ymm7, %ymm6 -vpand mask_245_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_246_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_247_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_248_1(%rip), %ymm9, %ymm6 -vpand mask_249_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_250_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_251_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_252_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_253_1(%rip), %ymm9, %ymm6 -vpand mask_254_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsrlq $63, %ymm7, %ymm6 -vpsllq $1, %ymm7, %ymm5 -vpermq $147, %ymm6, %ymm8 -vpxor %ymm5, %ymm8, %ymm8 -vpshufb mask_255_1(%rip), %ymm8, %ymm6 -vpand mask_256_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_257_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_258_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_259_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_260_1(%rip), %ymm8, %ymm6 -vpand mask_261_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_262_1(%rip), %ymm9, %ymm6 -vpand mask_263_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_264_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_265_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_266_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_267_1(%rip), %ymm9, %ymm6 -vpand mask_268_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_269_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsllq $1, %ymm8, %ymm7 -vpshufb mask_270_1(%rip), %ymm7, %ymm6 -vpand mask_271_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_272_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_273_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_274_1(%rip), %ymm7, %ymm6 -vpand mask_275_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_276_1(%rip), %ymm9, %ymm6 -vpand mask_277_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_278_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_279_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_280_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_281_1(%rip), %ymm9, %ymm6 -vpand mask_282_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_283_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpsllq $2, %ymm8, %ymm7 -vpshufb mask_284_1(%rip), %ymm7, %ymm6 -vpand mask_285_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_286_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_287_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_288_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_289_1(%rip), %ymm7, %ymm6 -vpand mask_290_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_291_1(%rip), %ymm9, %ymm6 -vpand mask_292_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_293_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_294_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_295_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_296_1(%rip), %ymm9, %ymm6 -vpand mask_297_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpsllq $3, %ymm8, %ymm7 -vpshufb mask_298_1(%rip), %ymm7, %ymm6 -vpand mask_299_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_300_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_301_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_302_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_303_1(%rip), %ymm7, %ymm6 -vpand mask_304_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_305_1(%rip), %ymm9, %ymm6 -vpand mask_306_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_307_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_308_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_309_1(%rip), %ymm9, %ymm6 -vpand mask_310_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpsllq $4, %ymm8, %ymm7 -vpshufb mask_311_1(%rip), %ymm7, %ymm6 -vpand mask_312_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_313_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_314_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_315_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_316_1(%rip), %ymm7, %ymm6 -vpand mask_317_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_318_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_319_1(%rip), %ymm9, %ymm6 -vpand mask_320_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_321_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_322_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_323_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_324_1(%rip), %ymm9, %ymm6 -vpand mask_325_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_326_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsrlq $59, %ymm8, %ymm6 -vpsllq $5, %ymm8, %ymm5 -vpermq $147, %ymm6, %ymm7 -vpxor %ymm5, %ymm7, %ymm7 -vpshufb mask_327_1(%rip), %ymm7, %ymm6 -vpand mask_328_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_329_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_330_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_331_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_332_1(%rip), %ymm7, %ymm6 -vpand mask_333_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_334_1(%rip), %ymm9, %ymm6 -vpand mask_335_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_336_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_337_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_338_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_339_1(%rip), %ymm9, %ymm6 -vpand mask_340_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vmovdqa 96(%rsi), %ymm0 -vpshufb mask_341_1(%rip), %ymm0, %ymm6 -vpand mask_342_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_343_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_344_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm9 -vpshufb mask_345_1(%rip), %ymm9, %ymm6 -vpand mask_346_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_347_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_348_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $1, %ymm0, %ymm7 -vpshufb mask_349_1(%rip), %ymm7, %ymm6 -vpand mask_350_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_351_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_352_1(%rip), %ymm9, %ymm6 -vpand mask_353_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $2, %ymm0, %ymm7 -vpshufb mask_354_1(%rip), %ymm7, %ymm6 -vpand mask_355_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_356_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_357_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_358_1(%rip), %ymm9, %ymm6 -vpand mask_359_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_360_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_361_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $3, %ymm0, %ymm7 -vpermq $78, %ymm7, %ymm9 -vpsllq $4, %ymm0, %ymm7 -vpshufb mask_362_1(%rip), %ymm7, %ymm6 -vpand mask_363_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_364_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_365_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_366_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_367_1(%rip), %ymm9, %ymm6 -vpand mask_368_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_369_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_370_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $5, %ymm0, %ymm7 -vpshufb mask_371_1(%rip), %ymm7, %ymm6 -vpand mask_372_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_373_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_374_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_375_1(%rip), %ymm9, %ymm6 -vpand mask_376_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_377_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_378_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $6, %ymm0, %ymm7 -vpermq $78, %ymm7, %ymm9 -vpsllq $7, %ymm0, %ymm7 -vpshufb mask_379_1(%rip), %ymm7, %ymm6 -vpand mask_380_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_381_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_382_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_383_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_384_1(%rip), %ymm9, %ymm6 -vpand mask_385_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_386_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_387_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vmovdqa %ymm1, 0(%rdi) -vmovdqa %ymm2, 32(%rdi) -vmovdqa %ymm3, 64(%rdi) -vmovdqa %ymm4, 96(%rdi) -ret diff --git a/src/kem/ntru/ntruhps4096821/avx2/square_3_821_patience.s b/src/kem/ntru/ntruhps4096821/avx2/square_3_821_patience.s deleted file mode 100644 index 9e34eed2..00000000 --- a/src/kem/ntru/ntruhps4096821/avx2/square_3_821_patience.s +++ /dev/null @@ -1,524 +0,0 @@ -.data -.p2align 5 -.text -.global PQCLEAN_NTRUHPS4096821_AVX2_square_3_821 -.global _PQCLEAN_NTRUHPS4096821_AVX2_square_3_821 -PQCLEAN_NTRUHPS4096821_AVX2_square_3_821: -_PQCLEAN_NTRUHPS4096821_AVX2_square_3_821: -push %r15 -push %r14 -push %r13 -push %r12 -push %rbx -push %rbp -mov 0(%rsi), %r11 -mov %r11, %r10 -and $0xff, %r10 -mov $0x101010101010101, %rbp -pdep %rbp, %r10, %r10 -mov %r10, 0(%rdi) -mov $0xff00, %rbx -pext %rbx, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 8(%rdi) -mov $0xff0000, %r12 -pext %r12, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 16(%rdi) -mov $0xff000000, %r13 -pext %r13, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 24(%rdi) -mov $0xff00000000, %r14 -pext %r14, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 32(%rdi) -mov $0xff0000000000, %r15 -pext %r15, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 40(%rdi) -mov $0xff000000000000, %r9 -pext %r9, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 48(%rdi) -mov $0xff00000000000000, %r8 -pext %r8, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 56(%rdi) -mov 8(%rsi), %r11 -mov $0x7f8000000000, %rdx -pext %rdx, %r11, %r10 -mov $0x808080808080808, %rcx -pdep %rcx, %r10, %r10 -xor %r10, 0(%rdi) -mov $0x7f800000000000, %rax -pext %rax, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 8(%rdi) -mov $0x7f80000000000000, %rbx -pext %rbx, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 16(%rdi) -mov %r11, %r10 -rol $4, %r10 -and $0x8, %r10 -xor %r10, 24(%rdi) -mov %r11, %r10 -and $0xff, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 64(%rdi) -mov $0xff00, %r12 -pext %r12, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 72(%rdi) -mov $0xff0000, %r13 -pext %r13, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 80(%rdi) -mov $0xff000000, %r14 -pext %r14, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 88(%rdi) -mov $0x7f00000000, %r15 -pext %r15, %r11, %r10 -mov $0x1010101010101, %r9 -pdep %r9, %r10, %r10 -mov %r10, 96(%rdi) -mov 16(%rsi), %r11 -mov %r11, %r10 -and $0x7f, %r10 -mov $0x808080808080800, %r8 -pdep %r8, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x7f80, %rdx -pext %rdx, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x7f8000, %rax -pext %rax, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 40(%rdi) -mov $0x7f800000, %rbx -pext %rbx, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x7f80000000, %r12 -pext %r12, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 56(%rdi) -mov $0x7f8000000000, %r13 -pext %r13, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x7f800000000000, %r14 -pext %r14, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x7f80000000000000, %rbp -pext %rbp, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 80(%rdi) -mov %r11, %r10 -rol $4, %r10 -and $0x8, %r10 -xor %r10, 88(%rdi) -mov 24(%rsi), %r11 -mov $0x3fc000, %r15 -pext %r15, %r11, %r10 -mov $0x4040404040404040, %r9 -pdep %r9, %r10, %r10 -xor %r10, 0(%rdi) -mov $0x3fc00000, %r8 -pext %r8, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 8(%rdi) -mov $0x3fc0000000, %rdx -pext %rdx, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x3fc000000000, %rax -pext %rax, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x3fc00000000000, %rbx -pext %rbx, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x3fc0000000000000, %r12 -pext %r12, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 40(%rdi) -mov $0xc000000000000000, %r13 -pext %r13, %r11, %r10 -mov $0x4040, %r14 -pdep %r14, %r10, %r10 -xor %r10, 48(%rdi) -mov %r11, %r10 -and $0x7f, %r10 -mov $0x808080808080800, %rbp -pdep %rbp, %r10, %r10 -xor %r10, 88(%rdi) -mov $0x3f80, %rcx -pext %rcx, %r11, %r10 -mov $0x8080808080808, %r15 -pdep %r15, %r10, %r10 -xor %r10, 96(%rdi) -mov 32(%rsi), %r11 -mov $0xff0000000000000, %r8 -pext %r8, %r11, %r10 -mov $0x202020202020202, %rdx -pdep %rdx, %r10, %r10 -xor %r10, 0(%rdi) -mov $0xf000000000000000, %rax -pext %rax, %r11, %r10 -mov $0x2020202, %rbx -pdep %rbx, %r10, %r10 -xor %r10, 8(%rdi) -mov %r11, %r10 -and $0x3f, %r10 -mov $0x4040404040400000, %r12 -pdep %r12, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x3fc0, %r9 -pext %r9, %r11, %r10 -mov $0x4040404040404040, %r13 -pdep %r13, %r10, %r10 -xor %r10, 56(%rdi) -mov $0x3fc000, %r14 -pext %r14, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x3fc00000, %rbp -pext %rbp, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x3fc0000000, %rcx -pext %rcx, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 80(%rdi) -mov $0x3fc000000000, %r15 -pext %r15, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 88(%rdi) -mov $0xfc00000000000, %r8 -pext %r8, %r11, %r10 -mov $0x404040404040, %rdx -pdep %rdx, %r10, %r10 -xor %r10, 96(%rdi) -mov 40(%rsi), %r11 -mov %r11, %r10 -and $0xf, %r10 -mov $0x202020200000000, %rax -pdep %rax, %r10, %r10 -xor %r10, 8(%rdi) -mov $0xff0, %rbx -pext %rbx, %r11, %r10 -mov $0x202020202020202, %r12 -pdep %r12, %r10, %r10 -xor %r10, 16(%rdi) -mov $0xff000, %r9 -pext %r9, %r11, %r10 -pdep %r12, %r10, %r10 -xor %r10, 24(%rdi) -mov $0xff00000, %r14 -pext %r14, %r11, %r10 -pdep %r12, %r10, %r10 -xor %r10, 32(%rdi) -mov $0xff0000000, %rbp -pext %rbp, %r11, %r10 -pdep %r12, %r10, %r10 -xor %r10, 40(%rdi) -mov $0xff000000000, %rcx -pext %rcx, %r11, %r10 -pdep %r12, %r10, %r10 -xor %r10, 48(%rdi) -mov $0xff00000000000, %r15 -pext %r15, %r11, %r10 -pdep %r12, %r10, %r10 -xor %r10, 56(%rdi) -mov $0xff0000000000000, %r13 -pext %r13, %r11, %r10 -pdep %r12, %r10, %r10 -xor %r10, 64(%rdi) -mov $0xf000000000000000, %r8 -pext %r8, %r11, %r10 -mov $0x2020202, %rdx -pdep %rdx, %r10, %r10 -xor %r10, 72(%rdi) -mov 48(%rsi), %r11 -mov $0x7f8000000, %rax -pext %rax, %r11, %r10 -mov $0x1010101010101010, %rbx -pdep %rbx, %r10, %r10 -xor %r10, 0(%rdi) -mov $0x7f800000000, %r9 -pext %r9, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 8(%rdi) -mov $0x7f80000000000, %r14 -pext %r14, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x7f8000000000000, %rbp -pext %rbp, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 24(%rdi) -mov $0xf800000000000000, %rcx -pext %rcx, %r11, %r10 -mov $0x1010101010, %r15 -pdep %r15, %r10, %r10 -xor %r10, 32(%rdi) -mov %r11, %r10 -and $0xf, %r10 -mov $0x202020200000000, %r13 -pdep %r13, %r10, %r10 -xor %r10, 72(%rdi) -mov $0xff0, %r12 -pext %r12, %r11, %r10 -mov $0x202020202020202, %r8 -pdep %r8, %r10, %r10 -xor %r10, 80(%rdi) -mov $0xff000, %rdx -pext %rdx, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 88(%rdi) -mov $0x7f00000, %rax -pext %rax, %r11, %r10 -mov $0x2020202020202, %r9 -pdep %r9, %r10, %r10 -xor %r10, 96(%rdi) -mov 56(%rsi), %r11 -mov %r11, %r10 -and $0x7, %r10 -mov $0x1010100000000000, %r14 -pdep %r14, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x7f8, %rbp -pext %rbp, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 40(%rdi) -mov $0x7f800, %rcx -pext %rcx, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x7f80000, %r15 -pext %r15, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 56(%rdi) -mov $0x7f8000000, %r13 -pext %r13, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x7f800000000, %r12 -pext %r12, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x7f80000000000, %rdx -pext %rdx, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 80(%rdi) -mov $0x7f8000000000000, %r8 -pext %r8, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 88(%rdi) -mov $0xf800000000000000, %rax -pext %rax, %r11, %r10 -mov $0x1010101010, %r9 -pdep %r9, %r10, %r10 -xor %r10, 96(%rdi) -mov 64(%rsi), %r11 -mov $0x3fc, %r14 -pext %r14, %r11, %r10 -mov $0x8080808080808080, %rbp -pdep %rbp, %r10, %r10 -xor %r10, 0(%rdi) -mov $0x3fc00, %rcx -pext %rcx, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 8(%rdi) -mov $0x3fc0000, %r15 -pext %r15, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x3fc000000, %r13 -pext %r13, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x3fc00000000, %r12 -pext %r12, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x3fc0000000000, %rdx -pext %rdx, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 40(%rdi) -mov $0x3fc000000000000, %r8 -pext %r8, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 48(%rdi) -mov $0xfc00000000000000, %rbx -pext %rbx, %r11, %r10 -mov $0x808080808080, %rax -pdep %rax, %r10, %r10 -xor %r10, 56(%rdi) -mov %r11, %r10 -and $0x3, %r10 -mov $0x10100000000000, %r9 -pdep %r9, %r10, %r10 -xor %r10, 96(%rdi) -mov 72(%rsi), %r11 -mov $0xff0000000000, %r14 -pext %r14, %r11, %r10 -mov $0x404040404040404, %rcx -pdep %rcx, %r10, %r10 -xor %r10, 0(%rdi) -mov $0xff000000000000, %r15 -pext %r15, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 8(%rdi) -mov $0xff00000000000000, %r13 -pext %r13, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 16(%rdi) -mov %r11, %r10 -and $0x3, %r10 -mov $0x8080000000000000, %r12 -pdep %r12, %r10, %r10 -xor %r10, 56(%rdi) -mov $0x3fc, %rdx -pext %rdx, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x3fc00, %r8 -pext %r8, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x3fc0000, %rbx -pext %rbx, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 80(%rdi) -mov $0x3fc000000, %rax -pext %rax, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 88(%rdi) -mov $0xfc00000000, %r9 -pext %r9, %r11, %r10 -mov $0x808080808080, %r14 -pdep %r14, %r10, %r10 -xor %r10, 96(%rdi) -mov 80(%rsi), %r11 -mov %r11, %r10 -and $0xff, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 24(%rdi) -mov $0xff00, %r15 -pext %r15, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 32(%rdi) -mov $0xff0000, %r13 -pext %r13, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 40(%rdi) -mov $0xff000000, %r12 -pext %r12, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 48(%rdi) -mov $0xff00000000, %rdx -pext %rdx, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 56(%rdi) -mov $0xff0000000000, %r8 -pext %r8, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 64(%rdi) -mov $0xff000000000000, %rbx -pext %rbx, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 72(%rdi) -mov $0xff00000000000000, %rax -pext %rax, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 80(%rdi) -mov 88(%rsi), %r11 -mov $0x7f8000, %rbp -pext %rbp, %r11, %r10 -mov $0x2020202020202020, %r9 -pdep %r9, %r10, %r10 -xor %r10, 0(%rdi) -mov $0x7f800000, %r14 -pext %r14, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 8(%rdi) -mov $0x7f80000000, %r15 -pext %r15, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x7f8000000000, %r13 -pext %r13, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x7f800000000000, %r12 -pext %r12, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x7f80000000000000, %rdx -pext %rdx, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 40(%rdi) -mov %r11, %r10 -rol $6, %r10 -and $0x20, %r10 -xor %r10, 48(%rdi) -mov %r11, %r10 -and $0xff, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 88(%rdi) -mov $0x7f00, %r8 -pext %r8, %r11, %r10 -mov $0x4040404040404, %rbx -pdep %rbx, %r10, %r10 -xor %r10, 96(%rdi) -mov 96(%rsi), %r11 -mov %r11, %r10 -and $0x7f, %r10 -mov $0x2020202020202000, %rax -pdep %rax, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x7f80, %rbp -pext %rbp, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 56(%rdi) -mov $0x7f8000, %r14 -pext %r14, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x7f800000, %r15 -pext %r15, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x7f80000000, %r13 -pext %r13, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 80(%rdi) -mov $0x7f8000000000, %r12 -pext %r12, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 88(%rdi) -mov $0x1f800000000000, %rdx -pext %rdx, %r11, %r10 -mov $0x202020202020, %rcx -pdep %rcx, %r10, %r10 -xor %r10, 96(%rdi) -mov 104(%rsi), %r11 -mov 112(%rsi), %r11 -mov 120(%rsi), %r11 -movq $0x0, 104(%rdi) -movq $0x0, 112(%rdi) -movq $0x0, 120(%rdi) -pop %rbp -pop %rbx -pop %r12 -pop %r13 -pop %r14 -pop %r15 -ret diff --git a/src/kem/ntru/ntruhps4096821/avx2/square_408_821_shufbytes.s b/src/kem/ntru/ntruhps4096821/avx2/square_408_821_shufbytes.s deleted file mode 100644 index cd9776b7..00000000 --- a/src/kem/ntru/ntruhps4096821/avx2/square_408_821_shufbytes.s +++ /dev/null @@ -1,6605 +0,0 @@ -.data -.p2align 5 -mask_0_1: -.byte 0 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 - -mask_1_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x202 -.word 0x202 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_2_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x808 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 - -mask_3_1: -.word 0x0 -.word 0x1000 -.word 0x1010 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_4_1: -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_5_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x202 -.word 0x202 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_6_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x404 -.word 0x404 -.word 0x404 -.word 0x404 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_7_1: -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x808 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_8_1: -.word 0x1010 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_9_1: -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 0 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 - -mask_10_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x4040 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_11_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_12_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x101 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 - -mask_13_1: -.word 0x0 -.word 0x200 -.word 0x2 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_14_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_15_1: -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_16_1: -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_17_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x4040 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_18_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x8080 -.word 0x80 -.word 0x8080 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_19_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x101 -.word 0x101 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_20_1: -.word 0x202 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_21_1: -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 - -mask_22_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x808 -.word 0x808 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_23_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_24_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x2020 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4040 - -mask_25_1: -.word 0x0 -.word 0x4040 -.word 0x4040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_26_1: -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_27_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x808 -.word 0x808 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_28_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x1010 -.word 0x10 -.word 0x1010 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_29_1: -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x2020 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_30_1: -.word 0x4040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_31_1: -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 - -mask_32_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x101 -.word 0x101 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_33_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x404 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 - -mask_34_1: -.word 0x0 -.word 0x800 -.word 0x808 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_35_1: -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_36_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x101 -.word 0x101 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_37_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x202 -.word 0x202 -.word 0x202 -.word 0x202 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_38_1: -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x404 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_39_1: -.word 0x808 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_40_1: -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 - -mask_41_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2020 -.word 0x2020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_42_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_43_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x8080 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 - -mask_44_1: -.word 0x0 -.word 0x100 -.word 0x101 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_45_1: -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_46_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2020 -.word 0x2020 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_47_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x4040 -.word 0x40 -.word 0x4040 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_48_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x8080 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_49_1: -.word 0x101 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_50_1: -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 0 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 - -mask_51_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x404 -.word 0x404 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_52_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_53_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x10 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 - -mask_54_1: -.word 0x0 -.word 0x2000 -.word 0x2020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_55_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_56_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_57_1: -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 12 -.byte 8 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_58_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x404 -.word 0x404 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_59_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x808 -.word 0x808 -.word 0x808 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_60_1: -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x1010 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_61_1: -.word 0x2020 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_62_1: -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 0 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 - -mask_63_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x8080 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_64_1: -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x202 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 - -mask_65_1: -.word 0x0 -.word 0x400 -.word 0x4 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_66_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_67_1: -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_68_1: -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_69_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x8080 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_70_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x101 -.word 0x101 -.word 0x101 -.word 0x101 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_71_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x202 -.word 0x202 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_72_1: -.word 0x404 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_73_1: -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 - -mask_74_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1010 -.word 0x1010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_75_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_76_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x4040 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8080 - -mask_77_1: -.word 0x0 -.word 0x8080 -.word 0x8080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_78_1: -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_79_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1010 -.word 0x1010 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_80_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x2020 -.word 0x20 -.word 0x2020 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_81_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x4040 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_82_1: -.word 0x8080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_83_1: -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 - -mask_84_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x202 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_85_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x404 -.word 0x404 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x808 - -mask_86_1: -.word 0x800 -.word 0x808 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x1010 -.word 0x10 -.word 0x0 -.word 0x0 - -mask_87_1: -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 - -mask_88_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x202 -.word 0x202 -.word 0x0 -.word 0x202 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_89_1: -.word 0x0 -.word 0x0 -.word 0x404 -.word 0x404 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_90_1: -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x1010 -.word 0x10 - -mask_91_1: -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 - -mask_92_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x4040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_93_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x8080 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x101 - -mask_94_1: -.word 0x0 -.word 0x101 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x202 -.word 0x2 -.word 0x0 -.word 0x0 - -mask_95_1: -.byte 4 -.byte 0 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 0 -.byte 2 -.byte 255 - -mask_96_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x4040 -.word 0x40 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_97_1: -.word 0x0 -.word 0x8000 -.word 0x8080 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 - -mask_98_1: -.word 0x101 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x2 -.word 0x2 - -mask_99_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 - -mask_100_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 - -mask_101_1: -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 - -mask_102_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x808 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_103_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x1010 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x2020 - -mask_104_1: -.word 0x2000 -.word 0x2020 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4040 -.word 0x4040 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_105_1: -.byte 1 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 - -mask_106_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x808 -.word 0x808 -.word 0x0 -.word 0x808 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_107_1: -.word 0x0 -.word 0x1000 -.word 0x1010 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_108_1: -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4040 -.word 0x4040 -.word 0x0 - -mask_109_1: -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 - -mask_110_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x101 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_111_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x202 -.word 0x202 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x404 - -mask_112_1: -.word 0x400 -.word 0x404 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x808 -.word 0x8 -.word 0x0 -.word 0x0 - -mask_113_1: -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 - -mask_114_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x101 -.word 0x101 -.word 0x0 -.word 0x101 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_115_1: -.word 0x0 -.word 0x0 -.word 0x202 -.word 0x202 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_116_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x808 -.word 0x8 - -mask_117_1: -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 - -mask_118_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_119_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x4040 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x8080 - -mask_120_1: -.word 0x8000 -.word 0x8080 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x101 -.word 0x1 -.word 0x0 -.word 0x0 - -mask_121_1: -.byte 0 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 - -mask_122_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2020 -.word 0x2020 -.word 0x0 -.word 0x2020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_123_1: -.word 0x0 -.word 0x4000 -.word 0x4040 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_124_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x101 -.word 0x1 - -mask_125_1: -.byte 255 -.byte 14 -.byte 10 -.byte 0 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 - -mask_126_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x404 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_127_1: -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x808 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x1010 - -mask_128_1: -.word 0x1000 -.word 0x10 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x2020 -.word 0x20 -.word 0x0 -.word 0x0 - -mask_129_1: -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_130_1: -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_131_1: -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 - -mask_132_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x404 -.word 0x404 -.word 0x0 -.word 0x404 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_133_1: -.word 0x0 -.word 0x0 -.word 0x808 -.word 0x808 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_134_1: -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x2020 -.word 0x20 - -mask_135_1: -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 - -mask_136_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x8080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_137_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x101 -.word 0x101 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x202 - -mask_138_1: -.word 0x0 -.word 0x202 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x404 -.word 0x4 -.word 0x0 -.word 0x0 - -mask_139_1: -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 0 -.byte 2 -.byte 255 - -mask_140_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x8080 -.word 0x80 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_141_1: -.word 0x0 -.word 0x0 -.word 0x101 -.word 0x101 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 - -mask_142_1: -.word 0x202 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x4 -.word 0x4 - -mask_143_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 - -mask_144_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 - -mask_145_1: -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 - -mask_146_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_147_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x2020 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x4040 - -mask_148_1: -.word 0x4000 -.word 0x4040 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8080 -.word 0x8080 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_149_1: -.byte 1 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 - -mask_150_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1010 -.word 0x1010 -.word 0x0 -.word 0x1010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_151_1: -.word 0x0 -.word 0x2000 -.word 0x2020 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_152_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8080 -.word 0x8080 -.word 0x0 - -mask_153_1: -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 - -mask_154_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x202 -.word 0x202 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x404 -.word 0x404 - -mask_155_1: -.word 0x404 -.word 0x404 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x808 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_156_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1010 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_157_1: -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 - -mask_158_1: -.word 0x0 -.word 0x202 -.word 0x202 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_159_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x808 -.word 0x8 -.word 0x0 - -mask_160_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x1000 -.word 0x1010 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_161_1: -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 - -mask_162_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x4040 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x8080 -.word 0x80 - -mask_163_1: -.word 0x8080 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x101 -.word 0x101 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_164_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x202 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_165_1: -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 0 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 255 -.byte 255 -.byte 13 - -mask_166_1: -.word 0x4000 -.word 0x4040 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 - -mask_167_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x101 -.word 0x1 -.word 0x0 - -mask_168_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x200 -.word 0x2 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_169_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_170_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_171_1: -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 - -mask_172_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x808 -.word 0x808 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x1010 -.word 0x10 - -mask_173_1: -.word 0x1010 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x2020 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_174_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_175_1: -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 15 - -mask_176_1: -.word 0x0 -.word 0x808 -.word 0x808 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 - -mask_177_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x2020 -.word 0x20 -.word 0x0 - -mask_178_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4040 -.word 0x0 -.word 0x4040 -.word 0x4040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_179_1: -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 - -mask_180_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x101 -.word 0x101 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x202 -.word 0x202 - -mask_181_1: -.word 0x202 -.word 0x202 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x404 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_182_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x808 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_183_1: -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 - -mask_184_1: -.word 0x0 -.word 0x101 -.word 0x101 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_185_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x404 -.word 0x4 -.word 0x0 - -mask_186_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x800 -.word 0x808 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_187_1: -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 - -mask_188_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2020 -.word 0x2020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x4040 -.word 0x40 - -mask_189_1: -.word 0x4040 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x8080 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_190_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x101 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_191_1: -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 14 - -mask_192_1: -.word 0x0 -.word 0x2020 -.word 0x2020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 - -mask_193_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x8080 -.word 0x80 -.word 0x0 - -mask_194_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x100 -.word 0x101 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_195_1: -.byte 12 -.byte 8 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 - -mask_196_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x404 -.word 0x404 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x808 -.word 0x808 - -mask_197_1: -.word 0x808 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x1010 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_198_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2020 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_199_1: -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 0 -.byte 2 -.byte 255 -.byte 255 -.byte 255 - -mask_200_1: -.word 0x0 -.word 0x404 -.word 0x404 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 - -mask_201_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x10 -.word 0x10 -.word 0x0 - -mask_202_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x2000 -.word 0x2020 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_203_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_204_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 - -mask_205_1: -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 2 - -mask_206_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x8080 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x101 -.word 0x101 - -mask_207_1: -.word 0x101 -.word 0x101 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x202 -.word 0x202 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_208_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x404 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_209_1: -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 0 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 255 -.byte 255 -.byte 255 - -mask_210_1: -.word 0x8000 -.word 0x8080 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_211_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x202 -.word 0x2 -.word 0x0 - -mask_212_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x400 -.word 0x4 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_213_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_214_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_215_1: -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 - -mask_216_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1010 -.word 0x1010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x2020 -.word 0x20 - -mask_217_1: -.word 0x2020 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x4040 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_218_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_219_1: -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 255 -.byte 255 -.byte 15 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 15 - -mask_220_1: -.word 0x0 -.word 0x1010 -.word 0x1010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 - -mask_221_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x4040 -.word 0x40 -.word 0x0 - -mask_222_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8080 -.word 0x0 -.word 0x8080 -.word 0x8080 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_223_1: -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_224_1: -.word 0x202 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_225_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_226_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_227_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x404 -.word 0x0 -.word 0x0 - -mask_228_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_229_1: -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_230_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_231_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_232_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_233_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x80 -.word 0x0 -.word 0x0 - -mask_234_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_235_1: -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_236_1: -.word 0x808 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_237_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_238_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_239_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 - -mask_240_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_241_1: -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_242_1: -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_243_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_244_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_245_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x202 -.word 0x0 -.word 0x0 - -mask_246_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_247_1: -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_248_1: -.word 0x2020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_249_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_250_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_251_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x40 -.word 0x0 -.word 0x0 - -mask_252_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_253_1: -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_254_1: -.word 0x404 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_255_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_256_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_257_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 - -mask_258_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_259_1: -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_260_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_261_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_262_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_263_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x101 -.word 0x0 -.word 0x0 - -mask_264_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_265_1: -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_266_1: -.word 0x1010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_267_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_268_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_269_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 - -mask_270_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -.text -.global PQCLEAN_NTRUHPS4096821_AVX2_square_408_821 -.global _PQCLEAN_NTRUHPS4096821_AVX2_square_408_821 -PQCLEAN_NTRUHPS4096821_AVX2_square_408_821: -_PQCLEAN_NTRUHPS4096821_AVX2_square_408_821: -vmovdqa 0(%rsi), %ymm0 -vpshufb mask_0_1(%rip), %ymm0, %ymm6 -vpand mask_1_1(%rip), %ymm6, %ymm1 -vpand mask_2_1(%rip), %ymm6, %ymm3 -vpand mask_3_1(%rip), %ymm6, %ymm4 -vpermq $78, %ymm0, %ymm9 -vpshufb mask_4_1(%rip), %ymm9, %ymm6 -vpand mask_5_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_6_1(%rip), %ymm6, %ymm2 -vpand mask_7_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_8_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsrlq $63, %ymm0, %ymm6 -vpsllq $1, %ymm0, %ymm5 -vpermq $147, %ymm6, %ymm7 -vpxor %ymm5, %ymm7, %ymm7 -vpshufb mask_9_1(%rip), %ymm7, %ymm6 -vpand mask_10_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_11_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_12_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_13_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_14_1(%rip), %ymm7, %ymm6 -vpand mask_15_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_16_1(%rip), %ymm9, %ymm6 -vpand mask_17_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_18_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_19_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_20_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsllq $1, %ymm7, %ymm8 -vpshufb mask_21_1(%rip), %ymm8, %ymm6 -vpand mask_22_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_23_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_24_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_25_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_26_1(%rip), %ymm9, %ymm6 -vpand mask_27_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_28_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_29_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_30_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsllq $2, %ymm7, %ymm8 -vpshufb mask_31_1(%rip), %ymm8, %ymm6 -vpand mask_32_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_33_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_34_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_35_1(%rip), %ymm9, %ymm6 -vpand mask_36_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_37_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_38_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_39_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsllq $3, %ymm7, %ymm8 -vpshufb mask_40_1(%rip), %ymm8, %ymm6 -vpand mask_41_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_42_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_43_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_44_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_45_1(%rip), %ymm9, %ymm6 -vpand mask_46_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_47_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_48_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_49_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsrlq $60, %ymm7, %ymm6 -vpsllq $4, %ymm7, %ymm5 -vpermq $147, %ymm6, %ymm8 -vpxor %ymm5, %ymm8, %ymm8 -vpshufb mask_50_1(%rip), %ymm8, %ymm6 -vpand mask_51_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_52_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_53_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_54_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_55_1(%rip), %ymm8, %ymm6 -vpand mask_56_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_57_1(%rip), %ymm9, %ymm6 -vpand mask_58_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_59_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_60_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_61_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsllq $1, %ymm8, %ymm7 -vpshufb mask_62_1(%rip), %ymm7, %ymm6 -vpand mask_63_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_64_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_65_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_66_1(%rip), %ymm7, %ymm6 -vpand mask_67_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_68_1(%rip), %ymm9, %ymm6 -vpand mask_69_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_70_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_71_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_72_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsllq $2, %ymm8, %ymm7 -vpshufb mask_73_1(%rip), %ymm7, %ymm6 -vpand mask_74_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_75_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_76_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_77_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_78_1(%rip), %ymm9, %ymm6 -vpand mask_79_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_80_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_81_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_82_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vmovdqa 32(%rsi), %ymm0 -vpshufb mask_83_1(%rip), %ymm0, %ymm6 -vpand mask_84_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_85_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_86_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm9 -vpshufb mask_87_1(%rip), %ymm9, %ymm6 -vpand mask_88_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_89_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_90_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsrlq $63, %ymm0, %ymm6 -vpsllq $1, %ymm0, %ymm5 -vpermq $147, %ymm6, %ymm7 -vpxor %ymm5, %ymm7, %ymm7 -vpshufb mask_91_1(%rip), %ymm7, %ymm6 -vpand mask_92_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_93_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_94_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_95_1(%rip), %ymm9, %ymm6 -vpand mask_96_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_97_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_98_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_99_1(%rip), %ymm9, %ymm6 -vpand mask_100_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $1, %ymm7, %ymm8 -vpshufb mask_101_1(%rip), %ymm8, %ymm6 -vpand mask_102_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_103_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_104_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_105_1(%rip), %ymm9, %ymm6 -vpand mask_106_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_107_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_108_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $2, %ymm7, %ymm8 -vpshufb mask_109_1(%rip), %ymm8, %ymm6 -vpand mask_110_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_111_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_112_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_113_1(%rip), %ymm9, %ymm6 -vpand mask_114_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_115_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_116_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $3, %ymm7, %ymm8 -vpshufb mask_117_1(%rip), %ymm8, %ymm6 -vpand mask_118_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_119_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_120_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_121_1(%rip), %ymm9, %ymm6 -vpand mask_122_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_123_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_124_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsrlq $60, %ymm7, %ymm6 -vpsllq $4, %ymm7, %ymm5 -vpermq $147, %ymm6, %ymm8 -vpxor %ymm5, %ymm8, %ymm8 -vpshufb mask_125_1(%rip), %ymm8, %ymm6 -vpand mask_126_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_127_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_128_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_129_1(%rip), %ymm8, %ymm6 -vpand mask_130_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_131_1(%rip), %ymm9, %ymm6 -vpand mask_132_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_133_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_134_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $1, %ymm8, %ymm7 -vpshufb mask_135_1(%rip), %ymm7, %ymm6 -vpand mask_136_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_137_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_138_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_139_1(%rip), %ymm9, %ymm6 -vpand mask_140_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_141_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_142_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_143_1(%rip), %ymm9, %ymm6 -vpand mask_144_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $2, %ymm8, %ymm7 -vpshufb mask_145_1(%rip), %ymm7, %ymm6 -vpand mask_146_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_147_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_148_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_149_1(%rip), %ymm9, %ymm6 -vpand mask_150_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_151_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_152_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vmovdqa 64(%rsi), %ymm0 -vpshufb mask_153_1(%rip), %ymm0, %ymm6 -vpand mask_154_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_155_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_156_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm9 -vpshufb mask_157_1(%rip), %ymm9, %ymm6 -vpand mask_158_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_159_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_160_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsrlq $63, %ymm0, %ymm6 -vpsllq $1, %ymm0, %ymm5 -vpermq $147, %ymm6, %ymm7 -vpxor %ymm5, %ymm7, %ymm7 -vpshufb mask_161_1(%rip), %ymm7, %ymm6 -vpand mask_162_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_163_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_164_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_165_1(%rip), %ymm9, %ymm6 -vpand mask_166_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_167_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_168_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_169_1(%rip), %ymm9, %ymm6 -vpand mask_170_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $1, %ymm7, %ymm8 -vpshufb mask_171_1(%rip), %ymm8, %ymm6 -vpand mask_172_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_173_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_174_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_175_1(%rip), %ymm9, %ymm6 -vpand mask_176_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_177_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_178_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $2, %ymm7, %ymm8 -vpshufb mask_179_1(%rip), %ymm8, %ymm6 -vpand mask_180_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_181_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_182_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_183_1(%rip), %ymm9, %ymm6 -vpand mask_184_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_185_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_186_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $3, %ymm7, %ymm8 -vpshufb mask_187_1(%rip), %ymm8, %ymm6 -vpand mask_188_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_189_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_190_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_191_1(%rip), %ymm9, %ymm6 -vpand mask_192_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_193_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_194_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsrlq $60, %ymm7, %ymm6 -vpsllq $4, %ymm7, %ymm5 -vpermq $147, %ymm6, %ymm8 -vpxor %ymm5, %ymm8, %ymm8 -vpshufb mask_195_1(%rip), %ymm8, %ymm6 -vpand mask_196_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_197_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_198_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_199_1(%rip), %ymm9, %ymm6 -vpand mask_200_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_201_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_202_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_203_1(%rip), %ymm9, %ymm6 -vpand mask_204_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpsllq $1, %ymm8, %ymm7 -vpshufb mask_205_1(%rip), %ymm7, %ymm6 -vpand mask_206_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_207_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_208_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_209_1(%rip), %ymm9, %ymm6 -vpand mask_210_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_211_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_212_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_213_1(%rip), %ymm9, %ymm6 -vpand mask_214_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $2, %ymm8, %ymm7 -vpshufb mask_215_1(%rip), %ymm7, %ymm6 -vpand mask_216_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_217_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_218_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_219_1(%rip), %ymm9, %ymm6 -vpand mask_220_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_221_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_222_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vmovdqa 96(%rsi), %ymm0 -vpshufb mask_223_1(%rip), %ymm0, %ymm6 -vpand mask_224_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_225_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm9 -vpshufb mask_226_1(%rip), %ymm9, %ymm6 -vpand mask_227_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_228_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpsllq $1, %ymm0, %ymm7 -vpshufb mask_229_1(%rip), %ymm7, %ymm6 -vpand mask_230_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_231_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_232_1(%rip), %ymm9, %ymm6 -vpand mask_233_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_234_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpsllq $2, %ymm0, %ymm7 -vpshufb mask_235_1(%rip), %ymm7, %ymm6 -vpand mask_236_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_237_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_238_1(%rip), %ymm9, %ymm6 -vpand mask_239_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_240_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpsllq $3, %ymm0, %ymm7 -vpshufb mask_241_1(%rip), %ymm7, %ymm6 -vpand mask_242_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_243_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_244_1(%rip), %ymm9, %ymm6 -vpand mask_245_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_246_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpsllq $4, %ymm0, %ymm7 -vpshufb mask_247_1(%rip), %ymm7, %ymm6 -vpand mask_248_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_249_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_250_1(%rip), %ymm9, %ymm6 -vpand mask_251_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_252_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpsllq $5, %ymm0, %ymm7 -vpshufb mask_253_1(%rip), %ymm7, %ymm6 -vpand mask_254_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_255_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_256_1(%rip), %ymm9, %ymm6 -vpand mask_257_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_258_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpsllq $6, %ymm0, %ymm7 -vpshufb mask_259_1(%rip), %ymm7, %ymm6 -vpand mask_260_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_261_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_262_1(%rip), %ymm9, %ymm6 -vpand mask_263_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_264_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpsllq $7, %ymm0, %ymm7 -vpshufb mask_265_1(%rip), %ymm7, %ymm6 -vpand mask_266_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_267_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_268_1(%rip), %ymm9, %ymm6 -vpand mask_269_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_270_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vmovdqa %ymm1, 0(%rdi) -vmovdqa %ymm2, 32(%rdi) -vmovdqa %ymm3, 64(%rdi) -vmovdqa %ymm4, 96(%rdi) -ret diff --git a/src/kem/ntru/ntruhps4096821/avx2/square_51_821_shufbytes.s b/src/kem/ntru/ntruhps4096821/avx2/square_51_821_shufbytes.s deleted file mode 100644 index 8673dbba..00000000 --- a/src/kem/ntru/ntruhps4096821/avx2/square_51_821_shufbytes.s +++ /dev/null @@ -1,9993 +0,0 @@ -.data -.p2align 5 -mask_0_1: -.byte 0 -.byte 255 -.byte 9 -.byte 0 -.byte 255 -.byte 14 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 10 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 13 -.byte 4 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 1 -.byte 14 -.byte 10 -.byte 6 - -mask_1_1: -.word 0x1 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x0 - -mask_2_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x8 - -mask_3_1: -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 - -mask_4_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_5_1: -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_6_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_7_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_8_1: -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 11 -.byte 7 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 15 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 12 -.byte 8 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 - -mask_9_1: -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_10_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 - -mask_11_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 - -mask_12_1: -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_13_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_14_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 - -mask_15_1: -.byte 12 -.byte 8 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 0 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 13 -.byte 4 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 - -mask_16_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_17_1: -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_18_1: -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x0 - -mask_19_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_20_1: -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_21_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_22_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_23_1: -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_24_1: -.byte 255 -.byte 9 -.byte 5 -.byte 1 -.byte 14 -.byte 10 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 11 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 10 -.byte 6 -.byte 2 -.byte 15 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 - -mask_25_1: -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 - -mask_26_1: -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_27_1: -.word 0x0 -.word 0x400 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_28_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_29_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_30_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_31_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 3 -.byte 255 -.byte 12 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 11 -.byte 7 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 - -mask_32_1: -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 - -mask_33_1: -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_34_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_35_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_36_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_37_1: -.byte 13 -.byte 4 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 9 -.byte 5 -.byte 1 -.byte 14 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 0 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 10 -.byte 6 -.byte 2 -.byte 15 -.byte 11 - -mask_38_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x4000 -.word 0x0 -.word 0x0 - -mask_39_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 - -mask_40_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x8 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x800 - -mask_41_1: -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_42_1: -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_43_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_44_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_45_1: -.byte 1 -.byte 255 -.byte 15 -.byte 6 -.byte 2 -.byte 15 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 3 -.byte 255 -.byte 12 -.byte 8 -.byte 5 -.byte 1 -.byte 14 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 11 -.byte 7 -.byte 255 -.byte 255 -.byte 12 - -mask_46_1: -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x800 -.word 0x0 -.word 0x0 - -mask_47_1: -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x8 -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 - -mask_48_1: -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x400 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 - -mask_49_1: -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_50_1: -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 - -mask_51_1: -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_52_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 - -mask_53_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 0 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 - -mask_54_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_55_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x4 - -mask_56_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_57_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_58_1: -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_59_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 - -mask_60_1: -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 5 -.byte 1 -.byte 255 -.byte 15 -.byte 6 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 9 -.byte 5 -.byte 1 -.byte 14 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_61_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_62_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_63_1: -.word 0x100 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x8 -.word 0x0 -.word 0x0 - -mask_64_1: -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_65_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_66_1: -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_67_1: -.byte 2 -.byte 15 -.byte 11 -.byte 7 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 3 -.byte 255 -.byte 12 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 0 - -mask_68_1: -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 - -mask_69_1: -.word 0x4 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x400 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_70_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 - -mask_71_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_72_1: -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 - -mask_73_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 - -mask_74_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_75_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_76_1: -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 13 -.byte 9 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 9 -.byte 5 -.byte 1 - -mask_77_1: -.word 0x0 -.word 0x4 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x4000 -.word 0x0 - -mask_78_1: -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 - -mask_79_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 - -mask_80_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_81_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_82_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_83_1: -.byte 14 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 2 -.byte 15 -.byte 11 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 6 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 3 -.byte 255 -.byte 12 -.byte 8 -.byte 255 -.byte 255 - -mask_84_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_85_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x8 -.word 0x0 - -mask_86_1: -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 - -mask_87_1: -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_88_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_89_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_90_1: -.byte 7 -.byte 3 -.byte 255 -.byte 12 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 13 -.byte 9 -.byte 255 -.byte 255 -.byte 14 -.byte 11 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 - -mask_91_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_92_1: -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 - -mask_93_1: -.word 0x400 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_94_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_95_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 - -mask_96_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_97_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 - -mask_98_1: -.byte 255 -.byte 4 -.byte 0 -.byte 255 -.byte 14 -.byte 5 -.byte 1 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 2 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 5 -.byte 1 -.byte 255 -.byte 15 -.byte 6 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_99_1: -.word 0x8000 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_100_1: -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_101_1: -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x0 - -mask_102_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_103_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_104_1: -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_105_1: -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 2 -.byte 15 -.byte 11 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_106_1: -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_107_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_108_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_109_1: -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_110_1: -.byte 8 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 0 -.byte 255 -.byte 14 -.byte 5 -.byte 255 -.byte 14 -.byte 255 -.byte 4 -.byte 255 -.byte 13 -.byte 9 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 5 -.byte 1 -.byte 255 -.byte 15 -.byte 6 - -mask_111_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x1 - -mask_112_1: -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 - -mask_113_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x1000 - -mask_114_1: -.byte 3 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 - -mask_115_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 - -mask_116_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_117_1: -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_118_1: -.byte 3 -.byte 255 -.byte 12 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 0 -.byte 13 -.byte 9 -.byte 5 -.byte 255 -.byte 14 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 4 -.byte 255 -.byte 13 -.byte 9 -.byte 255 -.byte 255 -.byte 255 - -mask_119_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_120_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x400 -.word 0x0 -.word 0x0 - -mask_121_1: -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x4 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 - -mask_122_1: -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_123_1: -.byte 255 -.byte 5 -.byte 255 -.byte 14 -.byte 10 -.byte 1 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 2 -.byte 15 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 15 -.byte 11 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 - -mask_124_1: -.word 0x200 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 - -mask_125_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_126_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_127_1: -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_128_1: -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_129_1: -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_130_1: -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_131_1: -.byte 15 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 12 -.byte 3 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 2 -.byte 15 -.byte 11 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 - -mask_132_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x4000 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 - -mask_133_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_134_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_135_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_136_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_137_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_138_1: -.byte 4 -.byte 255 -.byte 13 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 14 -.byte 10 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 0 -.byte 13 -.byte 9 -.byte 5 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 15 -.byte 11 -.byte 255 - -mask_139_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x400 -.word 0x0 - -mask_140_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 - -mask_141_1: -.word 0x2 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_142_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_143_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 6 -.byte 255 - -mask_144_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 - -mask_145_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 - -mask_146_1: -.byte 255 -.byte 10 -.byte 6 -.byte 255 -.byte 15 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 12 -.byte 3 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 2 -.byte 15 -.byte 11 -.byte 7 -.byte 255 - -mask_147_1: -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x100 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x80 -.word 0x0 - -mask_148_1: -.word 0x0 -.word 0x2 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x0 - -mask_149_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 - -mask_150_1: -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_151_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_152_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_153_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_154_1: -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 0 -.byte 13 -.byte 9 -.byte 5 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 - -mask_155_1: -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_156_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_157_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x4 -.word 0x0 - -mask_158_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_159_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_160_1: -.byte 9 -.byte 5 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 10 -.byte 6 -.byte 255 -.byte 15 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 14 -.byte 10 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_161_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_162_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_163_1: -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 - -mask_164_1: -.word 0x200 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_165_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_166_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_167_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_168_1: -.byte 255 -.byte 11 -.byte 2 -.byte 15 -.byte 11 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 12 -.byte 3 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 13 - -mask_169_1: -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2000 - -mask_170_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_171_1: -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_172_1: -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_173_1: -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_174_1: -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_175_1: -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 4 -.byte 255 -.byte 13 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 10 -.byte 255 -.byte 3 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 14 - -mask_176_1: -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x800 -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x400 - -mask_177_1: -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_178_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_179_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 - -mask_180_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 - -mask_181_1: -.byte 10 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 11 -.byte 2 -.byte 15 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 15 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 12 -.byte 3 -.byte 255 -.byte 12 -.byte 255 - -mask_182_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x100 -.word 0x0 -.word 0x0 - -mask_183_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_184_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 - -mask_185_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_186_1: -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_187_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 - -mask_188_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_189_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_190_1: -.byte 255 -.byte 255 -.byte 12 -.byte 3 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 4 -.byte 255 -.byte 13 -.byte 9 -.byte 255 -.byte 2 -.byte 15 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 255 -.byte 13 -.byte 255 - -mask_191_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x0 - -mask_192_1: -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 - -mask_193_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x4 - -mask_194_1: -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_195_1: -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_196_1: -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_197_1: -.byte 255 -.byte 0 -.byte 255 -.byte 9 -.byte 5 -.byte 255 -.byte 14 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 10 -.byte 6 -.byte 255 -.byte 15 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 - -mask_198_1: -.word 0x400 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 - -mask_199_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_200_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 - -mask_201_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_202_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_203_1: -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_204_1: -.byte 15 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 11 -.byte 2 -.byte 15 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 - -mask_205_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 - -mask_206_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_207_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_208_1: -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_209_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_210_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_211_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_212_1: -.byte 255 -.byte 12 -.byte 8 -.byte 4 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 9 -.byte 5 -.byte 255 -.byte 14 -.byte 10 -.byte 255 -.byte 255 -.byte 8 -.byte 4 -.byte 255 -.byte 13 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 10 -.byte 6 -.byte 255 - -mask_213_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x800 -.word 0x0 - -mask_214_1: -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 - -mask_215_1: -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_216_1: -.word 0x0 -.word 0x200 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_217_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 - -mask_218_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 - -mask_219_1: -.byte 255 -.byte 5 -.byte 1 -.byte 14 -.byte 10 -.byte 6 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 5 -.byte 255 -.byte 14 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 11 -.byte 2 -.byte 15 - -mask_220_1: -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x100 -.word 0x0 - -mask_221_1: -.word 0x0 -.word 0x4 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 - -mask_222_1: -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 - -mask_223_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 - -mask_224_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 - -mask_225_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_226_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_227_1: -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 3 -.byte 255 -.byte 12 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 4 -.byte 255 -.byte 13 -.byte 9 -.byte 255 -.byte 255 -.byte 255 - -mask_228_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_229_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 - -mask_230_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 - -mask_231_1: -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_232_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_233_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_234_1: -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 3 -.byte 255 -.byte 12 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 11 -.byte 7 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 - -mask_235_1: -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 - -mask_236_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_237_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_238_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_239_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_240_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_241_1: -.byte 12 -.byte 8 -.byte 4 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 9 -.byte 5 -.byte 1 -.byte 14 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 0 -.byte 13 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 10 -.byte 6 -.byte 2 -.byte 15 - -mask_242_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x0 - -mask_243_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x1000 - -mask_244_1: -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 - -mask_245_1: -.word 0x0 -.word 0x8 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_246_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_247_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_248_1: -.byte 5 -.byte 1 -.byte 14 -.byte 10 -.byte 6 -.byte 2 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 3 -.byte 255 -.byte 12 -.byte 9 -.byte 5 -.byte 1 -.byte 14 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 11 -.byte 7 -.byte 255 -.byte 11 - -mask_249_1: -.word 0x40 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x4 -.word 0x0 - -mask_250_1: -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x400 -.word 0x800 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 - -mask_251_1: -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 - -mask_252_1: -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_253_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 - -mask_254_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 - -mask_255_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 12 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 0 -.byte 13 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_256_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_257_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 - -mask_258_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 - -mask_259_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_260_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_261_1: -.byte 0 -.byte 13 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 5 -.byte 1 -.byte 14 -.byte 10 -.byte 6 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 9 -.byte 5 -.byte 1 -.byte 14 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_262_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_263_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x10 -.word 0x0 -.word 0x0 - -mask_264_1: -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x800 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x400 -.word 0x0 -.word 0x0 - -mask_265_1: -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_266_1: -.byte 6 -.byte 2 -.byte 15 -.byte 11 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 12 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 3 -.byte 255 -.byte 12 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 - -mask_267_1: -.word 0x8 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 - -mask_268_1: -.word 0x200 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_269_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_270_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 - -mask_271_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 - -mask_272_1: -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_273_1: -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 13 -.byte 9 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 12 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 9 -.byte 5 - -mask_274_1: -.word 0x0 -.word 0x200 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 - -mask_275_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 - -mask_276_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_277_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_278_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_279_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_280_1: -.byte 1 -.byte 14 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 2 -.byte 15 -.byte 11 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 6 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 3 -.byte 255 -.byte 12 -.byte 8 -.byte 255 - -mask_281_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 - -mask_282_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x400 -.word 0x0 - -mask_283_1: -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 - -mask_284_1: -.word 0x2 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_285_1: -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 12 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 13 -.byte 9 -.byte 255 -.byte 13 -.byte 15 -.byte 11 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 12 -.byte 8 -.byte 255 -.byte 255 - -mask_286_1: -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x4 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 - -mask_287_1: -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 - -mask_288_1: -.word 0x0 -.word 0x2 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 - -mask_289_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_290_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_291_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 - -mask_292_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_293_1: -.byte 255 -.byte 255 -.byte 4 -.byte 0 -.byte 13 -.byte 9 -.byte 5 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 5 -.byte 1 -.byte 14 -.byte 10 -.byte 6 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_294_1: -.word 0x0 -.word 0x40 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_295_1: -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_296_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x800 -.word 0x1000 -.word 0x0 -.word 0x0 - -mask_297_1: -.byte 6 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 2 -.byte 15 -.byte 11 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_298_1: -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_299_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_300_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_301_1: -.word 0x8 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_302_1: -.byte 12 -.byte 8 -.byte 255 -.byte 12 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 0 -.byte 13 -.byte 9 -.byte 5 -.byte 255 -.byte 14 -.byte 255 -.byte 4 -.byte 255 -.byte 13 -.byte 9 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 5 -.byte 1 -.byte 14 -.byte 10 - -mask_303_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x80 - -mask_304_1: -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2000 - -mask_305_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 - -mask_306_1: -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_307_1: -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_308_1: -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_309_1: -.byte 0 -.byte 255 -.byte 0 -.byte 10 -.byte 1 -.byte 14 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 11 -.byte 7 -.byte 4 -.byte 0 -.byte 13 -.byte 9 -.byte 5 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 2 -.byte 15 -.byte 11 - -mask_310_1: -.word 0x80 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x40 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x10 - -mask_311_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x400 - -mask_312_1: -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_313_1: -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_314_1: -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_315_1: -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_316_1: -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 12 -.byte 8 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 13 -.byte 9 -.byte 255 -.byte 13 -.byte 255 -.byte 255 - -mask_317_1: -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x4 -.word 0x0 -.word 0x0 - -mask_318_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 - -mask_319_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 - -mask_320_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_321_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_322_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 - -mask_323_1: -.byte 255 -.byte 13 -.byte 9 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 10 -.byte 1 -.byte 14 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 0 -.byte 13 -.byte 9 -.byte 5 -.byte 255 -.byte 14 -.byte 255 -.byte 255 - -mask_324_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_325_1: -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x0 - -mask_326_1: -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x1000 -.word 0x0 - -mask_327_1: -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_328_1: -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_329_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_330_1: -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_331_1: -.byte 1 -.byte 255 -.byte 10 -.byte 6 -.byte 2 -.byte 15 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 12 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 11 -.byte 7 -.byte 3 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 - -mask_332_1: -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x4 -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 - -mask_333_1: -.word 0x0 -.word 0x800 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_334_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_335_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_336_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_337_1: -.byte 1 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_338_1: -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_339_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_340_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_341_1: -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_342_1: -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_343_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_344_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_345_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_346_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 - -mask_347_1: -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_348_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_349_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_350_1: -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_351_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_352_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_353_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 0 - -mask_354_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 - -mask_355_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 - -mask_356_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_357_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_358_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_359_1: -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_360_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 - -mask_361_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_362_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_363_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 - -mask_364_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_365_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_366_1: -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_367_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_368_1: -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_369_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_370_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_371_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_372_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_373_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_374_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_375_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_376_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_377_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_378_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 6 - -mask_379_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 - -mask_380_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 - -mask_381_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 - -mask_382_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 - -mask_383_1: -.byte 255 -.byte 255 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_384_1: -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_385_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_386_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_387_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_388_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_389_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_390_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 - -mask_391_1: -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_392_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_393_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_394_1: -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_395_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_396_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_397_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_398_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_399_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_400_1: -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_401_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_402_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 - -mask_403_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 - -mask_404_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_405_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_406_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 - -mask_407_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 - -.text -.global PQCLEAN_NTRUHPS4096821_AVX2_square_51_821 -.global _PQCLEAN_NTRUHPS4096821_AVX2_square_51_821 -PQCLEAN_NTRUHPS4096821_AVX2_square_51_821: -_PQCLEAN_NTRUHPS4096821_AVX2_square_51_821: -vmovdqa 0(%rsi), %ymm0 -vpshufb mask_0_1(%rip), %ymm0, %ymm6 -vpand mask_1_1(%rip), %ymm6, %ymm1 -vpand mask_2_1(%rip), %ymm6, %ymm2 -vpand mask_3_1(%rip), %ymm6, %ymm3 -vpand mask_4_1(%rip), %ymm6, %ymm4 -vpshufb mask_5_1(%rip), %ymm0, %ymm6 -vpand mask_6_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_7_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm9 -vpshufb mask_8_1(%rip), %ymm9, %ymm6 -vpand mask_9_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_10_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_11_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_12_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_13_1(%rip), %ymm9, %ymm6 -vpand mask_14_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $1, %ymm0, %ymm7 -vpshufb mask_15_1(%rip), %ymm7, %ymm6 -vpand mask_16_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_17_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_18_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_19_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_20_1(%rip), %ymm7, %ymm6 -vpand mask_21_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_22_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_23_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_24_1(%rip), %ymm9, %ymm6 -vpand mask_25_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_26_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_27_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_28_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_29_1(%rip), %ymm9, %ymm6 -vpand mask_30_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsrlq $62, %ymm0, %ymm6 -vpsllq $2, %ymm0, %ymm5 -vpermq $147, %ymm6, %ymm7 -vpxor %ymm5, %ymm7, %ymm7 -vpshufb mask_31_1(%rip), %ymm7, %ymm6 -vpand mask_32_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_33_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_34_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_35_1(%rip), %ymm7, %ymm6 -vpand mask_36_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_37_1(%rip), %ymm9, %ymm6 -vpand mask_38_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_39_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_40_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_41_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_42_1(%rip), %ymm9, %ymm6 -vpand mask_43_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_44_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $1, %ymm7, %ymm8 -vpshufb mask_45_1(%rip), %ymm8, %ymm6 -vpand mask_46_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_47_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_48_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_49_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_50_1(%rip), %ymm8, %ymm6 -vpand mask_51_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_52_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_53_1(%rip), %ymm9, %ymm6 -vpand mask_54_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_55_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_56_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_57_1(%rip), %ymm9, %ymm6 -vpand mask_58_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_59_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsrlq $62, %ymm7, %ymm6 -vpsllq $2, %ymm7, %ymm5 -vpermq $147, %ymm6, %ymm8 -vpxor %ymm5, %ymm8, %ymm8 -vpshufb mask_60_1(%rip), %ymm8, %ymm6 -vpand mask_61_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_62_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_63_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_64_1(%rip), %ymm8, %ymm6 -vpand mask_65_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_66_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_67_1(%rip), %ymm9, %ymm6 -vpand mask_68_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_69_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_70_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_71_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_72_1(%rip), %ymm9, %ymm6 -vpand mask_73_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_74_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_75_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsllq $1, %ymm8, %ymm7 -vpshufb mask_76_1(%rip), %ymm7, %ymm6 -vpand mask_77_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_78_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_79_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_80_1(%rip), %ymm7, %ymm6 -vpand mask_81_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_82_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_83_1(%rip), %ymm9, %ymm6 -vpand mask_84_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_85_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_86_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_87_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_88_1(%rip), %ymm9, %ymm6 -vpand mask_89_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpsrlq $62, %ymm8, %ymm6 -vpsllq $2, %ymm8, %ymm5 -vpermq $147, %ymm6, %ymm7 -vpxor %ymm5, %ymm7, %ymm7 -vpshufb mask_90_1(%rip), %ymm7, %ymm6 -vpand mask_91_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_92_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_93_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_94_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_95_1(%rip), %ymm7, %ymm6 -vpand mask_96_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_97_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_98_1(%rip), %ymm9, %ymm6 -vpand mask_99_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_100_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_101_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_102_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_103_1(%rip), %ymm9, %ymm6 -vpand mask_104_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpsllq $1, %ymm7, %ymm8 -vpshufb mask_105_1(%rip), %ymm8, %ymm6 -vpand mask_106_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_107_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_108_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_109_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_110_1(%rip), %ymm9, %ymm6 -vpand mask_111_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_112_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_113_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_114_1(%rip), %ymm9, %ymm6 -vpand mask_115_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_116_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_117_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vmovdqa 32(%rsi), %ymm0 -vpshufb mask_118_1(%rip), %ymm0, %ymm6 -vpand mask_119_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_120_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_121_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_122_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm0, %ymm9 -vpshufb mask_123_1(%rip), %ymm9, %ymm6 -vpand mask_124_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_125_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_126_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_127_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_128_1(%rip), %ymm9, %ymm6 -vpand mask_129_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_130_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $1, %ymm0, %ymm7 -vpshufb mask_131_1(%rip), %ymm7, %ymm6 -vpand mask_132_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_133_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_134_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_135_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_136_1(%rip), %ymm7, %ymm6 -vpand mask_137_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_138_1(%rip), %ymm9, %ymm6 -vpand mask_139_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_140_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_141_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_142_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_143_1(%rip), %ymm9, %ymm6 -vpand mask_144_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_145_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $2, %ymm0, %ymm7 -vpshufb mask_146_1(%rip), %ymm7, %ymm6 -vpand mask_147_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_148_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_149_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_150_1(%rip), %ymm7, %ymm6 -vpand mask_151_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_152_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_153_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_154_1(%rip), %ymm9, %ymm6 -vpand mask_155_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_156_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_157_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_158_1(%rip), %ymm9, %ymm6 -vpand mask_159_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpsllq $3, %ymm0, %ymm7 -vpshufb mask_160_1(%rip), %ymm7, %ymm6 -vpand mask_161_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_162_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_163_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_164_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_165_1(%rip), %ymm7, %ymm6 -vpand mask_166_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_167_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_168_1(%rip), %ymm9, %ymm6 -vpand mask_169_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_170_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_171_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_172_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_173_1(%rip), %ymm9, %ymm6 -vpand mask_174_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpsrlq $60, %ymm0, %ymm6 -vpsllq $4, %ymm0, %ymm5 -vpermq $147, %ymm6, %ymm7 -vpxor %ymm5, %ymm7, %ymm7 -vpshufb mask_175_1(%rip), %ymm7, %ymm6 -vpand mask_176_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_177_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_178_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_179_1(%rip), %ymm7, %ymm6 -vpand mask_180_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_181_1(%rip), %ymm9, %ymm6 -vpand mask_182_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_183_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_184_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_185_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_186_1(%rip), %ymm9, %ymm6 -vpand mask_187_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_188_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_189_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsllq $1, %ymm7, %ymm8 -vpshufb mask_190_1(%rip), %ymm8, %ymm6 -vpand mask_191_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_192_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_193_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_194_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_195_1(%rip), %ymm8, %ymm6 -vpand mask_196_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_197_1(%rip), %ymm9, %ymm6 -vpand mask_198_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_199_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_200_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_201_1(%rip), %ymm9, %ymm6 -vpand mask_202_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_203_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $2, %ymm7, %ymm8 -vpshufb mask_204_1(%rip), %ymm8, %ymm6 -vpand mask_205_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_206_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_207_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_208_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_209_1(%rip), %ymm8, %ymm6 -vpand mask_210_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_211_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_212_1(%rip), %ymm9, %ymm6 -vpand mask_213_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_214_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_215_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_216_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_217_1(%rip), %ymm9, %ymm6 -vpand mask_218_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsrlq $61, %ymm7, %ymm6 -vpsllq $3, %ymm7, %ymm5 -vpermq $147, %ymm6, %ymm8 -vpxor %ymm5, %ymm8, %ymm8 -vpshufb mask_219_1(%rip), %ymm8, %ymm6 -vpand mask_220_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_221_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_222_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_223_1(%rip), %ymm8, %ymm6 -vpand mask_224_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_225_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_226_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_227_1(%rip), %ymm9, %ymm6 -vpand mask_228_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_229_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_230_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_231_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_232_1(%rip), %ymm9, %ymm6 -vpand mask_233_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vmovdqa 64(%rsi), %ymm0 -vpshufb mask_234_1(%rip), %ymm0, %ymm6 -vpand mask_235_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_236_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_237_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_238_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_239_1(%rip), %ymm0, %ymm6 -vpand mask_240_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm9 -vpshufb mask_241_1(%rip), %ymm9, %ymm6 -vpand mask_242_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_243_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_244_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_245_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_246_1(%rip), %ymm9, %ymm6 -vpand mask_247_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpsrlq $63, %ymm0, %ymm6 -vpsllq $1, %ymm0, %ymm5 -vpermq $147, %ymm6, %ymm7 -vpxor %ymm5, %ymm7, %ymm7 -vpshufb mask_248_1(%rip), %ymm7, %ymm6 -vpand mask_249_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_250_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_251_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_252_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_253_1(%rip), %ymm7, %ymm6 -vpand mask_254_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_255_1(%rip), %ymm9, %ymm6 -vpand mask_256_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_257_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_258_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_259_1(%rip), %ymm9, %ymm6 -vpand mask_260_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpsrlq $63, %ymm7, %ymm6 -vpsllq $1, %ymm7, %ymm5 -vpermq $147, %ymm6, %ymm8 -vpxor %ymm5, %ymm8, %ymm8 -vpshufb mask_261_1(%rip), %ymm8, %ymm6 -vpand mask_262_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_263_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_264_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_265_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_266_1(%rip), %ymm9, %ymm6 -vpand mask_267_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_268_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_269_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_270_1(%rip), %ymm9, %ymm6 -vpand mask_271_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_272_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsrlq $63, %ymm8, %ymm6 -vpsllq $1, %ymm8, %ymm5 -vpermq $147, %ymm6, %ymm7 -vpxor %ymm5, %ymm7, %ymm7 -vpshufb mask_273_1(%rip), %ymm7, %ymm6 -vpand mask_274_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_275_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_276_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_277_1(%rip), %ymm7, %ymm6 -vpand mask_278_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_279_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_280_1(%rip), %ymm9, %ymm6 -vpand mask_281_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_282_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_283_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_284_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpsrlq $63, %ymm7, %ymm6 -vpsllq $1, %ymm7, %ymm5 -vpermq $147, %ymm6, %ymm8 -vpxor %ymm5, %ymm8, %ymm8 -vpshufb mask_285_1(%rip), %ymm8, %ymm6 -vpand mask_286_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_287_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_288_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_289_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_290_1(%rip), %ymm8, %ymm6 -vpand mask_291_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_292_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_293_1(%rip), %ymm9, %ymm6 -vpand mask_294_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_295_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_296_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsrlq $63, %ymm8, %ymm6 -vpsllq $1, %ymm8, %ymm5 -vpermq $147, %ymm6, %ymm7 -vpxor %ymm5, %ymm7, %ymm7 -vpshufb mask_297_1(%rip), %ymm7, %ymm6 -vpand mask_298_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_299_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_300_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_301_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_302_1(%rip), %ymm9, %ymm6 -vpand mask_303_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_304_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_305_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_306_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_307_1(%rip), %ymm9, %ymm6 -vpand mask_308_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsrlq $63, %ymm7, %ymm6 -vpsllq $1, %ymm7, %ymm5 -vpermq $147, %ymm6, %ymm8 -vpxor %ymm5, %ymm8, %ymm8 -vpshufb mask_309_1(%rip), %ymm8, %ymm6 -vpand mask_310_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_311_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_312_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_313_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_314_1(%rip), %ymm8, %ymm6 -vpand mask_315_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpermq $78, %ymm8, %ymm9 -vpshufb mask_316_1(%rip), %ymm9, %ymm6 -vpand mask_317_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_318_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_319_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_320_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_321_1(%rip), %ymm9, %ymm6 -vpand mask_322_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsrlq $63, %ymm8, %ymm6 -vpsllq $1, %ymm8, %ymm5 -vpermq $147, %ymm6, %ymm7 -vpxor %ymm5, %ymm7, %ymm7 -vpshufb mask_323_1(%rip), %ymm7, %ymm6 -vpand mask_324_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_325_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_326_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpand mask_327_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_328_1(%rip), %ymm7, %ymm6 -vpand mask_329_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_330_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_331_1(%rip), %ymm9, %ymm6 -vpand mask_332_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_333_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_334_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_335_1(%rip), %ymm9, %ymm6 -vpand mask_336_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vmovdqa 96(%rsi), %ymm0 -vpshufb mask_337_1(%rip), %ymm0, %ymm6 -vpand mask_338_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_339_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_340_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_341_1(%rip), %ymm0, %ymm6 -vpand mask_342_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm9 -vpshufb mask_343_1(%rip), %ymm9, %ymm6 -vpand mask_344_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_345_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_346_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $1, %ymm0, %ymm7 -vpshufb mask_347_1(%rip), %ymm7, %ymm6 -vpand mask_348_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_349_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_350_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpshufb mask_351_1(%rip), %ymm7, %ymm6 -vpand mask_352_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_353_1(%rip), %ymm9, %ymm6 -vpand mask_354_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_355_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_356_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $2, %ymm0, %ymm7 -vpshufb mask_357_1(%rip), %ymm7, %ymm6 -vpand mask_358_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_359_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_360_1(%rip), %ymm9, %ymm6 -vpand mask_361_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_362_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_363_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_364_1(%rip), %ymm9, %ymm6 -vpand mask_365_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $3, %ymm0, %ymm7 -vpshufb mask_366_1(%rip), %ymm7, %ymm6 -vpand mask_367_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_368_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm4, %ymm4 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_369_1(%rip), %ymm9, %ymm6 -vpand mask_370_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_371_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_372_1(%rip), %ymm9, %ymm6 -vpand mask_373_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $4, %ymm0, %ymm7 -vpshufb mask_374_1(%rip), %ymm7, %ymm6 -vpand mask_375_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpshufb mask_376_1(%rip), %ymm7, %ymm6 -vpand mask_377_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_378_1(%rip), %ymm9, %ymm6 -vpand mask_379_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_380_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpshufb mask_381_1(%rip), %ymm9, %ymm6 -vpand mask_382_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpsllq $5, %ymm0, %ymm7 -vpshufb mask_383_1(%rip), %ymm7, %ymm6 -vpand mask_384_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_385_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_386_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_387_1(%rip), %ymm7, %ymm6 -vpand mask_388_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_389_1(%rip), %ymm9, %ymm6 -vpand mask_390_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpsllq $6, %ymm0, %ymm7 -vpshufb mask_391_1(%rip), %ymm7, %ymm6 -vpand mask_392_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_393_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_394_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_395_1(%rip), %ymm9, %ymm6 -vpand mask_396_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpshufb mask_397_1(%rip), %ymm9, %ymm6 -vpand mask_398_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpsllq $7, %ymm0, %ymm7 -vpshufb mask_399_1(%rip), %ymm7, %ymm6 -vpand mask_400_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_401_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm9 -vpshufb mask_402_1(%rip), %ymm9, %ymm6 -vpand mask_403_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask_404_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vpand mask_405_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm3, %ymm3 -vpshufb mask_406_1(%rip), %ymm9, %ymm6 -vpand mask_407_1(%rip), %ymm6, %ymm5 -vpxor %ymm5, %ymm2, %ymm2 -vmovdqa %ymm1, 0(%rdi) -vmovdqa %ymm2, 32(%rdi) -vmovdqa %ymm3, 64(%rdi) -vmovdqa %ymm4, 96(%rdi) -ret diff --git a/src/kem/ntru/ntruhps4096821/avx2/square_6_821_patience.s b/src/kem/ntru/ntruhps4096821/avx2/square_6_821_patience.s deleted file mode 100644 index 4c9936ea..00000000 --- a/src/kem/ntru/ntruhps4096821/avx2/square_6_821_patience.s +++ /dev/null @@ -1,841 +0,0 @@ -.data -.p2align 5 -.text -.global PQCLEAN_NTRUHPS4096821_AVX2_square_6_821 -.global _PQCLEAN_NTRUHPS4096821_AVX2_square_6_821 -PQCLEAN_NTRUHPS4096821_AVX2_square_6_821: -_PQCLEAN_NTRUHPS4096821_AVX2_square_6_821: -push %r15 -push %r14 -push %r13 -push %r12 -push %rbx -push %rbp -mov 0(%rsi), %r11 -mov $0x10008004002001, %rbp -pext %rbp, %r11, %r10 -mov $0x100200400801, %rbx -pdep %rbx, %r10, %r10 -mov %r10, 0(%rdi) -mov $0x20010008004002, %r12 -pext %r12, %r11, %r10 -pdep %rbx, %r10, %r10 -mov %r10, 8(%rdi) -mov $0x40020010008004, %r13 -pext %r13, %r11, %r10 -pdep %rbx, %r10, %r10 -mov %r10, 16(%rdi) -mov $0x80040020010008, %r14 -pext %r14, %r11, %r10 -pdep %rbx, %r10, %r10 -mov %r10, 24(%rdi) -mov $0x100080040020010, %r15 -pext %r15, %r11, %r10 -pdep %rbx, %r10, %r10 -mov %r10, 32(%rdi) -mov $0x200100080040020, %r9 -pext %r9, %r11, %r10 -pdep %rbx, %r10, %r10 -mov %r10, 40(%rdi) -mov $0x400200100080040, %r8 -pext %r8, %r11, %r10 -pdep %rbx, %r10, %r10 -mov %r10, 48(%rdi) -mov $0x800400200100080, %rdx -pext %rdx, %r11, %r10 -pdep %rbx, %r10, %r10 -mov %r10, 56(%rdi) -mov $0x1000800400200100, %rcx -pext %rcx, %r11, %r10 -pdep %rbx, %r10, %r10 -mov %r10, 64(%rdi) -mov $0x2001000800400200, %rax -pext %rax, %r11, %r10 -pdep %rbx, %r10, %r10 -mov %r10, 72(%rdi) -mov $0x4002001000800400, %rbp -pext %rbp, %r11, %r10 -pdep %rbx, %r10, %r10 -mov %r10, 80(%rdi) -mov $0x8004002001000800, %r12 -pext %r12, %r11, %r10 -pdep %rbx, %r10, %r10 -mov %r10, 88(%rdi) -mov $0x8004002001000, %r13 -pext %r13, %r11, %r10 -mov $0x200400801, %r14 -pdep %r14, %r10, %r10 -mov %r10, 96(%rdi) -mov 8(%rsi), %r11 -mov $0x10008004002002, %r15 -pext %r15, %r11, %r10 -mov $0x8010020040080000, %r9 -pdep %r9, %r10, %r10 -rol $36, %r10 -xor %r10, 0(%rdi) -mov $0x20010008004004, %r8 -pext %r8, %r11, %r10 -pdep %r9, %r10, %r10 -rol $36, %r10 -xor %r10, 8(%rdi) -mov $0x40020010008008, %rdx -pext %rdx, %r11, %r10 -pdep %r9, %r10, %r10 -rol $36, %r10 -xor %r10, 16(%rdi) -mov $0x80040020010010, %rcx -pext %rcx, %r11, %r10 -pdep %r9, %r10, %r10 -rol $36, %r10 -xor %r10, 24(%rdi) -mov $0x100080040020020, %rax -pext %rax, %r11, %r10 -pdep %r9, %r10, %r10 -rol $36, %r10 -xor %r10, 32(%rdi) -mov $0x200100080040040, %rbp -pext %rbp, %r11, %r10 -pdep %r9, %r10, %r10 -rol $36, %r10 -xor %r10, 40(%rdi) -mov $0x400200100080080, %r12 -pext %r12, %r11, %r10 -pdep %r9, %r10, %r10 -rol $36, %r10 -xor %r10, 48(%rdi) -mov $0x800400200100100, %rbx -pext %rbx, %r11, %r10 -pdep %r9, %r10, %r10 -rol $36, %r10 -xor %r10, 56(%rdi) -mov $0x1000800400200200, %r13 -pext %r13, %r11, %r10 -pdep %r9, %r10, %r10 -rol $36, %r10 -xor %r10, 64(%rdi) -mov $0x2001000800400400, %r14 -pext %r14, %r11, %r10 -pdep %r9, %r10, %r10 -rol $36, %r10 -xor %r10, 72(%rdi) -mov $0x4002001000800800, %r15 -pext %r15, %r11, %r10 -pdep %r9, %r10, %r10 -rol $36, %r10 -xor %r10, 80(%rdi) -mov $0x8004002001001000, %r8 -pext %r8, %r11, %r10 -pdep %r9, %r10, %r10 -rol $36, %r10 -xor %r10, 88(%rdi) -mov $0x8004002000001, %rdx -pext %rdx, %r11, %r10 -mov $0x8010020000080000, %rcx -pdep %rcx, %r10, %r10 -rol $25, %r10 -xor %r10, 96(%rdi) -mov 16(%rsi), %r11 -mov $0x10008004004002, %rax -pext %rax, %r11, %r10 -pdep %r9, %r10, %r10 -rol $27, %r10 -xor %r10, 0(%rdi) -mov $0x20010008008004, %rbp -pext %rbp, %r11, %r10 -pdep %r9, %r10, %r10 -rol $27, %r10 -xor %r10, 8(%rdi) -mov $0x40020010010008, %r12 -pext %r12, %r11, %r10 -pdep %r9, %r10, %r10 -rol $27, %r10 -xor %r10, 16(%rdi) -mov $0x80040020020010, %rbx -pext %rbx, %r11, %r10 -pdep %r9, %r10, %r10 -rol $27, %r10 -xor %r10, 24(%rdi) -mov $0x100080040040020, %r13 -pext %r13, %r11, %r10 -pdep %r9, %r10, %r10 -rol $27, %r10 -xor %r10, 32(%rdi) -mov $0x200100080080040, %r14 -pext %r14, %r11, %r10 -pdep %r9, %r10, %r10 -rol $27, %r10 -xor %r10, 40(%rdi) -mov $0x400200100100080, %r15 -pext %r15, %r11, %r10 -pdep %r9, %r10, %r10 -rol $27, %r10 -xor %r10, 48(%rdi) -mov $0x800400200200100, %r8 -pext %r8, %r11, %r10 -pdep %r9, %r10, %r10 -rol $27, %r10 -xor %r10, 56(%rdi) -mov $0x1000800400400200, %rdx -pext %rdx, %r11, %r10 -pdep %r9, %r10, %r10 -rol $27, %r10 -xor %r10, 64(%rdi) -mov $0x2001000800800400, %rcx -pext %rcx, %r11, %r10 -pdep %r9, %r10, %r10 -rol $27, %r10 -xor %r10, 72(%rdi) -mov $0x4002001001000800, %rax -pext %rax, %r11, %r10 -pdep %r9, %r10, %r10 -rol $27, %r10 -xor %r10, 80(%rdi) -mov $0x8004002002001000, %rbp -pext %rbp, %r11, %r10 -pdep %r9, %r10, %r10 -rol $27, %r10 -xor %r10, 88(%rdi) -mov $0x8004000002001, %r12 -pext %r12, %r11, %r10 -mov $0x8010000040080000, %rbx -pdep %rbx, %r10, %r10 -rol $16, %r10 -xor %r10, 96(%rdi) -mov 24(%rsi), %r11 -mov $0x10008008004002, %r13 -pext %r13, %r11, %r10 -pdep %r9, %r10, %r10 -rol $18, %r10 -xor %r10, 0(%rdi) -mov $0x20010010008004, %r14 -pext %r14, %r11, %r10 -pdep %r9, %r10, %r10 -rol $18, %r10 -xor %r10, 8(%rdi) -mov $0x40020020010008, %r15 -pext %r15, %r11, %r10 -pdep %r9, %r10, %r10 -rol $18, %r10 -xor %r10, 16(%rdi) -mov $0x80040040020010, %r8 -pext %r8, %r11, %r10 -pdep %r9, %r10, %r10 -rol $18, %r10 -xor %r10, 24(%rdi) -mov $0x100080080040020, %rdx -pext %rdx, %r11, %r10 -pdep %r9, %r10, %r10 -rol $18, %r10 -xor %r10, 32(%rdi) -mov $0x200100100080040, %rcx -pext %rcx, %r11, %r10 -pdep %r9, %r10, %r10 -rol $18, %r10 -xor %r10, 40(%rdi) -mov $0x400200200100080, %rax -pext %rax, %r11, %r10 -pdep %r9, %r10, %r10 -rol $18, %r10 -xor %r10, 48(%rdi) -mov $0x800400400200100, %rbp -pext %rbp, %r11, %r10 -pdep %r9, %r10, %r10 -rol $18, %r10 -xor %r10, 56(%rdi) -mov $0x1000800800400200, %r12 -pext %r12, %r11, %r10 -pdep %r9, %r10, %r10 -rol $18, %r10 -xor %r10, 64(%rdi) -mov $0x2001001000800400, %rbx -pext %rbx, %r11, %r10 -pdep %r9, %r10, %r10 -rol $18, %r10 -xor %r10, 72(%rdi) -mov $0x4002002001000800, %r13 -pext %r13, %r11, %r10 -pdep %r9, %r10, %r10 -rol $18, %r10 -xor %r10, 80(%rdi) -mov $0x8004004002001000, %r14 -pext %r14, %r11, %r10 -pdep %r9, %r10, %r10 -rol $18, %r10 -xor %r10, 88(%rdi) -mov $0x8000004002001, %r15 -pext %r15, %r11, %r10 -mov $0x8000020040080000, %r8 -pdep %r8, %r10, %r10 -rol $7, %r10 -xor %r10, 96(%rdi) -mov 32(%rsi), %r11 -mov $0x10010008004002, %rdx -pext %rdx, %r11, %r10 -pdep %r9, %r10, %r10 -rol $9, %r10 -xor %r10, 0(%rdi) -mov $0x20020010008004, %rcx -pext %rcx, %r11, %r10 -pdep %r9, %r10, %r10 -rol $9, %r10 -xor %r10, 8(%rdi) -mov $0x40040020010008, %rax -pext %rax, %r11, %r10 -pdep %r9, %r10, %r10 -rol $9, %r10 -xor %r10, 16(%rdi) -mov $0x80080040020010, %rbp -pext %rbp, %r11, %r10 -pdep %r9, %r10, %r10 -rol $9, %r10 -xor %r10, 24(%rdi) -mov $0x100100080040020, %r12 -pext %r12, %r11, %r10 -pdep %r9, %r10, %r10 -rol $9, %r10 -xor %r10, 32(%rdi) -mov $0x200200100080040, %rbx -pext %rbx, %r11, %r10 -pdep %r9, %r10, %r10 -rol $9, %r10 -xor %r10, 40(%rdi) -mov $0x400400200100080, %r13 -pext %r13, %r11, %r10 -pdep %r9, %r10, %r10 -rol $9, %r10 -xor %r10, 48(%rdi) -mov $0x800800400200100, %r14 -pext %r14, %r11, %r10 -pdep %r9, %r10, %r10 -rol $9, %r10 -xor %r10, 56(%rdi) -mov $0x1001000800400200, %r15 -pext %r15, %r11, %r10 -pdep %r9, %r10, %r10 -rol $9, %r10 -xor %r10, 64(%rdi) -mov $0x2002001000800400, %r8 -pext %r8, %r11, %r10 -pdep %r9, %r10, %r10 -rol $9, %r10 -xor %r10, 72(%rdi) -mov $0x4004002001000800, %rdx -pext %rdx, %r11, %r10 -pdep %r9, %r10, %r10 -rol $9, %r10 -xor %r10, 80(%rdi) -mov $0x8008004002001000, %rcx -pext %rcx, %r11, %r10 -pdep %r9, %r10, %r10 -rol $9, %r10 -xor %r10, 88(%rdi) -mov $0x8004002001, %rax -pext %rax, %r11, %r10 -mov $0x4008010020000, %rbp -pdep %rbp, %r10, %r10 -xor %r10, 96(%rdi) -mov 40(%rsi), %r11 -mov $0x20010008004002, %r12 -pext %r12, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 0(%rdi) -mov $0x40020010008004, %rbx -pext %rbx, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 8(%rdi) -mov $0x80040020010008, %r13 -pext %r13, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x100080040020010, %r14 -pext %r14, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x200100080040020, %r15 -pext %r15, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x400200100080040, %r8 -pext %r8, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 40(%rdi) -mov $0x800400200100080, %rdx -pext %rdx, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x1000800400200100, %rcx -pext %rcx, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 56(%rdi) -mov $0x2001000800400200, %rax -pext %rax, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x4002001000800400, %rbp -pext %rbp, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x8004002001000800, %r12 -pext %r12, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 80(%rdi) -mov $0x8004002001000, %rbx -pext %rbx, %r11, %r10 -mov $0x10020040080000, %r13 -pdep %r13, %r10, %r10 -xor %r10, 88(%rdi) -mov $0x10008004002001, %r14 -pext %r14, %r11, %r10 -mov $0x10020040080100, %r15 -pdep %r15, %r10, %r10 -xor %r10, 96(%rdi) -mov 48(%rsi), %r11 -mov $0x20010008004002, %r8 -pext %r8, %r11, %r10 -mov $0x40080100200400, %rdx -pdep %rdx, %r10, %r10 -xor %r10, 0(%rdi) -mov $0x40020010008004, %rcx -pext %rcx, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 8(%rdi) -mov $0x80040020010008, %rax -pext %rax, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x100080040020010, %rbp -pext %rbp, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x200100080040020, %r12 -pext %r12, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x400200100080040, %r9 -pext %r9, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 40(%rdi) -mov $0x800400200100080, %rbx -pext %rbx, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x1000800400200100, %r13 -pext %r13, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 56(%rdi) -mov $0x2001000800400200, %r14 -pext %r14, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x4002001000800400, %r15 -pext %r15, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x8004002001000800, %r8 -pext %r8, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 80(%rdi) -mov $0x8004002001001, %rcx -pext %rcx, %r11, %r10 -mov $0x8010020040080000, %rax -pdep %rax, %r10, %r10 -rol $44, %r10 -xor %r10, 88(%rdi) -mov $0x10008004002000, %rbp -pext %rbp, %r11, %r10 -mov $0x80100200400, %r12 -pdep %r12, %r10, %r10 -xor %r10, 96(%rdi) -mov 56(%rsi), %r11 -mov $0x20010008004002, %r9 -pext %r9, %r11, %r10 -mov $0x200400801002, %rbx -pdep %rbx, %r10, %r10 -xor %r10, 0(%rdi) -mov $0x40020010008004, %r13 -pext %r13, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 8(%rdi) -mov $0x80040020010008, %r14 -pext %r14, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x100080040020010, %r15 -pext %r15, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x200100080040020, %r8 -pext %r8, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x400200100080040, %rdx -pext %rdx, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 40(%rdi) -mov $0x800400200100080, %rcx -pext %rcx, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x1000800400200100, %rax -pext %rax, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 56(%rdi) -mov $0x2001000800400200, %rbp -pext %rbp, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x4002001000800400, %r12 -pext %r12, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x8004002001000800, %r9 -pext %r9, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 80(%rdi) -mov $0x8004002001001, %r13 -pext %r13, %r11, %r10 -mov $0x8010020040080000, %r14 -pdep %r14, %r10, %r10 -rol $35, %r10 -xor %r10, 88(%rdi) -mov $0x10008004002000, %r15 -pext %r15, %r11, %r10 -mov $0x400801002, %r8 -pdep %r8, %r10, %r10 -xor %r10, 96(%rdi) -mov 64(%rsi), %r11 -mov $0x20010008004004, %rdx -pext %rdx, %r11, %r10 -pdep %r14, %r10, %r10 -rol $37, %r10 -xor %r10, 0(%rdi) -mov $0x40020010008008, %rcx -pext %rcx, %r11, %r10 -pdep %r14, %r10, %r10 -rol $37, %r10 -xor %r10, 8(%rdi) -mov $0x80040020010010, %rax -pext %rax, %r11, %r10 -pdep %r14, %r10, %r10 -rol $37, %r10 -xor %r10, 16(%rdi) -mov $0x100080040020020, %rbp -pext %rbp, %r11, %r10 -pdep %r14, %r10, %r10 -rol $37, %r10 -xor %r10, 24(%rdi) -mov $0x200100080040040, %r12 -pext %r12, %r11, %r10 -pdep %r14, %r10, %r10 -rol $37, %r10 -xor %r10, 32(%rdi) -mov $0x400200100080080, %r9 -pext %r9, %r11, %r10 -pdep %r14, %r10, %r10 -rol $37, %r10 -xor %r10, 40(%rdi) -mov $0x800400200100100, %rbx -pext %rbx, %r11, %r10 -pdep %r14, %r10, %r10 -rol $37, %r10 -xor %r10, 48(%rdi) -mov $0x1000800400200200, %r13 -pext %r13, %r11, %r10 -pdep %r14, %r10, %r10 -rol $37, %r10 -xor %r10, 56(%rdi) -mov $0x2001000800400400, %r15 -pext %r15, %r11, %r10 -pdep %r14, %r10, %r10 -rol $37, %r10 -xor %r10, 64(%rdi) -mov $0x4002001000800800, %r8 -pext %r8, %r11, %r10 -pdep %r14, %r10, %r10 -rol $37, %r10 -xor %r10, 72(%rdi) -mov $0x8004002001001000, %rdx -pext %rdx, %r11, %r10 -pdep %r14, %r10, %r10 -rol $37, %r10 -xor %r10, 80(%rdi) -mov $0x8004002002001, %rcx -pext %rcx, %r11, %r10 -pdep %r14, %r10, %r10 -rol $26, %r10 -xor %r10, 88(%rdi) -mov $0x10008004000002, %rax -pext %rax, %r11, %r10 -mov $0x8010020000080000, %rbp -pdep %rbp, %r10, %r10 -rol $26, %r10 -xor %r10, 96(%rdi) -mov 72(%rsi), %r11 -mov $0x20010008008004, %r12 -pext %r12, %r11, %r10 -pdep %r14, %r10, %r10 -rol $28, %r10 -xor %r10, 0(%rdi) -mov $0x40020010010008, %r9 -pext %r9, %r11, %r10 -pdep %r14, %r10, %r10 -rol $28, %r10 -xor %r10, 8(%rdi) -mov $0x80040020020010, %rbx -pext %rbx, %r11, %r10 -pdep %r14, %r10, %r10 -rol $28, %r10 -xor %r10, 16(%rdi) -mov $0x100080040040020, %r13 -pext %r13, %r11, %r10 -pdep %r14, %r10, %r10 -rol $28, %r10 -xor %r10, 24(%rdi) -mov $0x200100080080040, %r15 -pext %r15, %r11, %r10 -pdep %r14, %r10, %r10 -rol $28, %r10 -xor %r10, 32(%rdi) -mov $0x400200100100080, %r8 -pext %r8, %r11, %r10 -pdep %r14, %r10, %r10 -rol $28, %r10 -xor %r10, 40(%rdi) -mov $0x800400200200100, %rdx -pext %rdx, %r11, %r10 -pdep %r14, %r10, %r10 -rol $28, %r10 -xor %r10, 48(%rdi) -mov $0x1000800400400200, %rcx -pext %rcx, %r11, %r10 -pdep %r14, %r10, %r10 -rol $28, %r10 -xor %r10, 56(%rdi) -mov $0x2001000800800400, %rax -pext %rax, %r11, %r10 -pdep %r14, %r10, %r10 -rol $28, %r10 -xor %r10, 64(%rdi) -mov $0x4002001001000800, %rbp -pext %rbp, %r11, %r10 -pdep %r14, %r10, %r10 -rol $28, %r10 -xor %r10, 72(%rdi) -mov $0x8004002002001000, %r12 -pext %r12, %r11, %r10 -pdep %r14, %r10, %r10 -rol $28, %r10 -xor %r10, 80(%rdi) -mov $0x8004004002001, %r9 -pext %r9, %r11, %r10 -pdep %r14, %r10, %r10 -rol $17, %r10 -xor %r10, 88(%rdi) -mov $0x10008000004002, %rbx -pext %rbx, %r11, %r10 -mov $0x8010000040080000, %r13 -pdep %r13, %r10, %r10 -rol $17, %r10 -xor %r10, 96(%rdi) -mov 80(%rsi), %r11 -mov $0x20010010008004, %r15 -pext %r15, %r11, %r10 -pdep %r14, %r10, %r10 -rol $19, %r10 -xor %r10, 0(%rdi) -mov $0x40020020010008, %r8 -pext %r8, %r11, %r10 -pdep %r14, %r10, %r10 -rol $19, %r10 -xor %r10, 8(%rdi) -mov $0x80040040020010, %rdx -pext %rdx, %r11, %r10 -pdep %r14, %r10, %r10 -rol $19, %r10 -xor %r10, 16(%rdi) -mov $0x100080080040020, %rcx -pext %rcx, %r11, %r10 -pdep %r14, %r10, %r10 -rol $19, %r10 -xor %r10, 24(%rdi) -mov $0x200100100080040, %rax -pext %rax, %r11, %r10 -pdep %r14, %r10, %r10 -rol $19, %r10 -xor %r10, 32(%rdi) -mov $0x400200200100080, %rbp -pext %rbp, %r11, %r10 -pdep %r14, %r10, %r10 -rol $19, %r10 -xor %r10, 40(%rdi) -mov $0x800400400200100, %r12 -pext %r12, %r11, %r10 -pdep %r14, %r10, %r10 -rol $19, %r10 -xor %r10, 48(%rdi) -mov $0x1000800800400200, %r9 -pext %r9, %r11, %r10 -pdep %r14, %r10, %r10 -rol $19, %r10 -xor %r10, 56(%rdi) -mov $0x2001001000800400, %rbx -pext %rbx, %r11, %r10 -pdep %r14, %r10, %r10 -rol $19, %r10 -xor %r10, 64(%rdi) -mov $0x4002002001000800, %r13 -pext %r13, %r11, %r10 -pdep %r14, %r10, %r10 -rol $19, %r10 -xor %r10, 72(%rdi) -mov $0x8004004002001000, %r15 -pext %r15, %r11, %r10 -pdep %r14, %r10, %r10 -rol $19, %r10 -xor %r10, 80(%rdi) -mov $0x8008004002001, %r8 -pext %r8, %r11, %r10 -pdep %r14, %r10, %r10 -rol $8, %r10 -xor %r10, 88(%rdi) -mov $0x10000008004002, %rdx -pext %rdx, %r11, %r10 -mov $0x8000020040080000, %rcx -pdep %rcx, %r10, %r10 -rol $8, %r10 -xor %r10, 96(%rdi) -mov 88(%rsi), %r11 -mov $0x20020010008004, %rax -pext %rax, %r11, %r10 -pdep %r14, %r10, %r10 -rol $10, %r10 -xor %r10, 0(%rdi) -mov $0x40040020010008, %rbp -pext %rbp, %r11, %r10 -pdep %r14, %r10, %r10 -rol $10, %r10 -xor %r10, 8(%rdi) -mov $0x80080040020010, %r12 -pext %r12, %r11, %r10 -pdep %r14, %r10, %r10 -rol $10, %r10 -xor %r10, 16(%rdi) -mov $0x100100080040020, %r9 -pext %r9, %r11, %r10 -pdep %r14, %r10, %r10 -rol $10, %r10 -xor %r10, 24(%rdi) -mov $0x200200100080040, %rbx -pext %rbx, %r11, %r10 -pdep %r14, %r10, %r10 -rol $10, %r10 -xor %r10, 32(%rdi) -mov $0x400400200100080, %r13 -pext %r13, %r11, %r10 -pdep %r14, %r10, %r10 -rol $10, %r10 -xor %r10, 40(%rdi) -mov $0x800800400200100, %r15 -pext %r15, %r11, %r10 -pdep %r14, %r10, %r10 -rol $10, %r10 -xor %r10, 48(%rdi) -mov $0x1001000800400200, %r8 -pext %r8, %r11, %r10 -pdep %r14, %r10, %r10 -rol $10, %r10 -xor %r10, 56(%rdi) -mov $0x2002001000800400, %rdx -pext %rdx, %r11, %r10 -pdep %r14, %r10, %r10 -rol $10, %r10 -xor %r10, 64(%rdi) -mov $0x4004002001000800, %rcx -pext %rcx, %r11, %r10 -pdep %r14, %r10, %r10 -rol $10, %r10 -xor %r10, 72(%rdi) -mov $0x8008004002001000, %rax -pext %rax, %r11, %r10 -pdep %r14, %r10, %r10 -rol $10, %r10 -xor %r10, 80(%rdi) -mov $0x10008004002001, %rbp -pext %rbp, %r11, %r10 -mov $0x4008010020040000, %r12 -pdep %r12, %r10, %r10 -xor %r10, 88(%rdi) -mov $0x10008004002, %r9 -pext %r9, %r11, %r10 -mov $0x8010020040000, %rbx -pdep %rbx, %r10, %r10 -xor %r10, 96(%rdi) -mov 96(%rsi), %r11 -mov $0x20010008004, %r13 -pext %r13, %r11, %r10 -mov $0x20040080100000, %r15 -pdep %r15, %r10, %r10 -xor %r10, 0(%rdi) -mov $0x40020010008, %r8 -pext %r8, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 8(%rdi) -mov $0x80040020010, %rdx -pext %rdx, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x100080040020, %rcx -pext %rcx, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x200100080040, %rax -pext %rax, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x400200100080, %r14 -pext %r14, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 40(%rdi) -mov $0x800400200100, %rbp -pext %rbp, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x1000800400200, %r12 -pext %r12, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 56(%rdi) -mov $0x2001000800400, %r9 -pext %r9, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x4002001000800, %rbx -pext %rbx, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x8004002001000, %r13 -pext %r13, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 80(%rdi) -mov $0x10008004002001, %r8 -pext %r8, %r11, %r10 -mov $0x20040080100200, %rdx -pdep %rdx, %r10, %r10 -xor %r10, 88(%rdi) -mov $0x10008004002, %rcx -pext %rcx, %r11, %r10 -mov $0x40080100200, %rax -pdep %rax, %r10, %r10 -xor %r10, 96(%rdi) -mov 104(%rsi), %r11 -mov 112(%rsi), %r11 -mov 120(%rsi), %r11 -movq $0x0, 104(%rdi) -movq $0x0, 112(%rdi) -movq $0x0, 120(%rdi) -pop %rbp -pop %rbx -pop %r12 -pop %r13 -pop %r14 -pop %r15 -ret diff --git a/src/kem/ntru/ntruhps4096821/avx2/vec32_sample_iid.s b/src/kem/ntru/ntruhps4096821/avx2/vec32_sample_iid.s deleted file mode 100644 index caf487aa..00000000 --- a/src/kem/ntru/ntruhps4096821/avx2/vec32_sample_iid.s +++ /dev/null @@ -1,1222 +0,0 @@ -.data -.p2align 5 -cast8_to_16: -.byte 255 -.byte 0 -.byte 255 -.byte 1 -.byte 255 -.byte 2 -.byte 255 -.byte 3 -.byte 255 -.byte 4 -.byte 255 -.byte 5 -.byte 255 -.byte 6 -.byte 255 -.byte 7 -.byte 255 -.byte 0 -.byte 255 -.byte 1 -.byte 255 -.byte 2 -.byte 255 -.byte 3 -.byte 255 -.byte 4 -.byte 255 -.byte 5 -.byte 255 -.byte 6 -.byte 255 -.byte 7 -mask_ff: -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -mask_f: -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -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 -.text -.global PQCLEAN_NTRUHPS4096821_AVX2_vec32_sample_iid -.global _PQCLEAN_NTRUHPS4096821_AVX2_vec32_sample_iid -PQCLEAN_NTRUHPS4096821_AVX2_vec32_sample_iid: -_PQCLEAN_NTRUHPS4096821_AVX2_vec32_sample_iid: -vmovdqa 0(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 32(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 64(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 96(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 128(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 160(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 192(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 224(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 256(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 288(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 320(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 352(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 384(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 416(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 448(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 480(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 512(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 544(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 576(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 608(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 640(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 672(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 704(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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, 1408(%rdi) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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, 1440(%rdi) -vmovdqa 736(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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, 1472(%rdi) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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, 1504(%rdi) -vmovdqa 768(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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, 1536(%rdi) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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, 1568(%rdi) -vmovdqa 800(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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, 1600(%rdi) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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, 1632(%rdi) -movw $0, 1640(%rdi) -movw $0, 1642(%rdi) -movw $0, 1644(%rdi) -movw $0, 1646(%rdi) -movw $0, 1648(%rdi) -movw $0, 1650(%rdi) -movw $0, 1652(%rdi) -movw $0, 1654(%rdi) -movw $0, 1656(%rdi) -movw $0, 1658(%rdi) -movw $0, 1660(%rdi) -movw $0, 1662(%rdi) -ret diff --git a/src/kem/ntru/ntruhps4096821/clean/CMakeLists.txt b/src/kem/ntru/ntruhps4096821/clean/CMakeLists.txt deleted file mode 100644 index 2f503cf4..00000000 --- a/src/kem/ntru/ntruhps4096821/clean/CMakeLists.txt +++ /dev/null @@ -1,20 +0,0 @@ -set( - SRC_CLEAN_NTRUHPS4096821 - cmov.c - crypto_sort_int32.c - kem.c - owcpa.c - pack3.c - packq.c - poly.c - poly_lift.c - poly_mod.c - poly_r2_inv.c - poly_rq_mul.c - poly_s3_inv.c - sample.c - sample_iid.c -) - -define_kem_alg(ntruhps4096821_clean - PQCLEAN_NTRUHPS4096821_CLEAN "${SRC_CLEAN_NTRUHPS4096821}" "${CMAKE_CURRENT_SOURCE_DIR}") diff --git a/src/kem/ntru/ntruhps4096821/clean/api.h b/src/kem/ntru/ntruhps4096821/clean/api.h deleted file mode 100644 index aac12277..00000000 --- a/src/kem/ntru/ntruhps4096821/clean/api.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef PQCLEAN_NTRUHPS4096821_CLEAN_API_H -#define PQCLEAN_NTRUHPS4096821_CLEAN_API_H - -#include - -#define PQCLEAN_NTRUHPS4096821_CLEAN_CRYPTO_SECRETKEYBYTES 1590 -#define PQCLEAN_NTRUHPS4096821_CLEAN_CRYPTO_PUBLICKEYBYTES 1230 -#define PQCLEAN_NTRUHPS4096821_CLEAN_CRYPTO_CIPHERTEXTBYTES 1230 -#define PQCLEAN_NTRUHPS4096821_CLEAN_CRYPTO_BYTES 32 - -#define PQCLEAN_NTRUHPS4096821_CLEAN_CRYPTO_ALGNAME "ntruhps4096821" - -int PQCLEAN_NTRUHPS4096821_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk); - -int PQCLEAN_NTRUHPS4096821_CLEAN_crypto_kem_enc(uint8_t *c, uint8_t *k, const uint8_t *pk); - -int PQCLEAN_NTRUHPS4096821_CLEAN_crypto_kem_dec(uint8_t *k, const uint8_t *c, const uint8_t *sk); - -#endif diff --git a/src/kem/ntru/ntruhps4096821/clean/cmov.c b/src/kem/ntru/ntruhps4096821/clean/cmov.c deleted file mode 100644 index edc764fe..00000000 --- a/src/kem/ntru/ntruhps4096821/clean/cmov.c +++ /dev/null @@ -1,11 +0,0 @@ -#include "cmov.h" - -/* b = 1 means mov, b = 0 means don't mov*/ -void PQCLEAN_NTRUHPS4096821_CLEAN_cmov(unsigned char *r, const unsigned char *x, size_t len, unsigned char b) { - size_t i; - - b = (~b + 1); - for (i = 0; i < len; i++) { - r[i] ^= b & (x[i] ^ r[i]); - } -} diff --git a/src/kem/ntru/ntruhps4096821/clean/cmov.h b/src/kem/ntru/ntruhps4096821/clean/cmov.h deleted file mode 100644 index c2a5c600..00000000 --- a/src/kem/ntru/ntruhps4096821/clean/cmov.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef VERIFY_H -#define VERIFY_H - -#include "params.h" - -#include - -void PQCLEAN_NTRUHPS4096821_CLEAN_cmov(unsigned char *r, const unsigned char *x, size_t len, unsigned char b); - -#endif diff --git a/src/kem/ntru/ntruhps4096821/clean/crypto_sort_int32.c b/src/kem/ntru/ntruhps4096821/clean/crypto_sort_int32.c deleted file mode 100644 index b6b7af21..00000000 --- a/src/kem/ntru/ntruhps4096821/clean/crypto_sort_int32.c +++ /dev/null @@ -1,86 +0,0 @@ -// Based on supercop-20190110/crypto_sort/int32/x86 - -#include "crypto_sort_int32.h" - -#include -#define int32 int32_t - -#define int32_MINMAX(a,b) \ - do { \ - int32_t ab = (b) ^ (a); \ - int32_t c = (int32_t)((int64_t)(b) - (int64_t)(a)); \ - c ^= ab & (c ^ (b)); \ - c >>= 31; \ - c &= ab; \ - (a) ^= c; \ - (b) ^= c; \ - } while(0) - -/* assume 2 <= n <= 0x40000000 */ -void PQCLEAN_NTRUHPS4096821_CLEAN_crypto_sort_int32(int32 *array, size_t n) { - size_t top, p, q, r, i, j; - int32 *x = array; - - top = 1; - while (top < n - top) { - top += top; - } - - for (p = top; p >= 1; p >>= 1) { - i = 0; - while (i + 2 * p <= n) { - for (j = i; j < i + p; ++j) { - int32_MINMAX(x[j], x[j + p]); - } - i += 2 * p; - } - for (j = i; j < n - p; ++j) { - int32_MINMAX(x[j], x[j + p]); - } - - i = 0; - j = 0; - for (q = top; q > p; q >>= 1) { - if (j != i) { - for (;;) { - if (j == n - q) { - goto done; - } - int32 a = x[j + p]; - for (r = q; r > p; r >>= 1) { - int32_MINMAX(a, x[j + r]); - } - x[j + p] = a; - ++j; - if (j == i + p) { - i += 2 * p; - break; - } - } - } - while (i + p <= n - q) { - for (j = i; j < i + p; ++j) { - int32 a = x[j + p]; - for (r = q; r > p; r >>= 1) { - int32_MINMAX(a, x[j + r]); - } - x[j + p] = a; - } - i += 2 * p; - } - /* now i + p > n - q */ - j = i; - while (j < n - q) { - int32 a = x[j + p]; - for (r = q; r > p; r >>= 1) { - int32_MINMAX(a, x[j + r]); - } - x[j + p] = a; - ++j; - } - -done: - ; - } - } -} diff --git a/src/kem/ntru/ntruhps4096821/clean/crypto_sort_int32.h b/src/kem/ntru/ntruhps4096821/clean/crypto_sort_int32.h deleted file mode 100644 index 44b4e984..00000000 --- a/src/kem/ntru/ntruhps4096821/clean/crypto_sort_int32.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef CRYPTO_SORT -#define CRYPTO_SORT - -#include "params.h" - -#include -#include - -void PQCLEAN_NTRUHPS4096821_CLEAN_crypto_sort_int32(int32_t *array, size_t n); - -#endif diff --git a/src/kem/ntru/ntruhps4096821/clean/kem.c b/src/kem/ntru/ntruhps4096821/clean/kem.c deleted file mode 100644 index 40a96575..00000000 --- a/src/kem/ntru/ntruhps4096821/clean/kem.c +++ /dev/null @@ -1,63 +0,0 @@ -#include "api.h" -#include "cmov.h" -#include "fips202.h" -#include "owcpa.h" -#include "params.h" -#include "randombytes.h" -#include "sample.h" - -// API FUNCTIONS -int PQCLEAN_NTRUHPS4096821_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk) { - uint8_t seed[NTRU_SAMPLE_FG_BYTES]; - - randombytes(seed, NTRU_SAMPLE_FG_BYTES); - PQCLEAN_NTRUHPS4096821_CLEAN_owcpa_keypair(pk, sk, seed); - - randombytes(sk + NTRU_OWCPA_SECRETKEYBYTES, NTRU_PRFKEYBYTES); - - return 0; -} - -int PQCLEAN_NTRUHPS4096821_CLEAN_crypto_kem_enc(uint8_t *c, uint8_t *k, const uint8_t *pk) { - poly r, m; - uint8_t rm[NTRU_OWCPA_MSGBYTES]; - uint8_t rm_seed[NTRU_SAMPLE_RM_BYTES]; - - randombytes(rm_seed, NTRU_SAMPLE_RM_BYTES); - - PQCLEAN_NTRUHPS4096821_CLEAN_sample_rm(&r, &m, rm_seed); - - PQCLEAN_NTRUHPS4096821_CLEAN_poly_S3_tobytes(rm, &r); - PQCLEAN_NTRUHPS4096821_CLEAN_poly_S3_tobytes(rm + NTRU_PACK_TRINARY_BYTES, &m); - sha3_256(k, rm, NTRU_OWCPA_MSGBYTES); - - PQCLEAN_NTRUHPS4096821_CLEAN_poly_Z3_to_Zq(&r); - PQCLEAN_NTRUHPS4096821_CLEAN_owcpa_enc(c, &r, &m, pk); - - return 0; -} - -int PQCLEAN_NTRUHPS4096821_CLEAN_crypto_kem_dec(uint8_t *k, const uint8_t *c, const uint8_t *sk) { - int i, fail; - uint8_t rm[NTRU_OWCPA_MSGBYTES]; - uint8_t buf[NTRU_PRFKEYBYTES + NTRU_CIPHERTEXTBYTES]; - - fail = PQCLEAN_NTRUHPS4096821_CLEAN_owcpa_dec(rm, c, sk); - /* If fail = 0 then c = Enc(h, rm). There is no need to re-encapsulate. */ - /* See comment in PQCLEAN_NTRUHPS4096821_CLEAN_owcpa_dec for details. */ - - sha3_256(k, rm, NTRU_OWCPA_MSGBYTES); - - /* shake(secret PRF key || input ciphertext) */ - for (i = 0; i < NTRU_PRFKEYBYTES; i++) { - buf[i] = sk[i + NTRU_OWCPA_SECRETKEYBYTES]; - } - for (i = 0; i < NTRU_CIPHERTEXTBYTES; i++) { - buf[NTRU_PRFKEYBYTES + i] = c[i]; - } - sha3_256(rm, buf, NTRU_PRFKEYBYTES + NTRU_CIPHERTEXTBYTES); - - PQCLEAN_NTRUHPS4096821_CLEAN_cmov(k, rm, NTRU_SHAREDKEYBYTES, (unsigned char) fail); - - return 0; -} diff --git a/src/kem/ntru/ntruhps4096821/clean/owcpa.c b/src/kem/ntru/ntruhps4096821/clean/owcpa.c deleted file mode 100644 index 9e7964fe..00000000 --- a/src/kem/ntru/ntruhps4096821/clean/owcpa.c +++ /dev/null @@ -1,183 +0,0 @@ -#include "owcpa.h" -#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) { - /* 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; - uint32_t t = 0; - uint16_t c; - 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 |= 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, 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; - uint32_t t = 0; - uint16_t ps = 0; - uint16_t ms = 0; - for (i = 0; i < NTRU_N; i++) { - ps += m->coeffs[i] & 1; - ms += m->coeffs[i] & 2; - } - 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, - unsigned char *sk, - const unsigned char seed[NTRU_SAMPLE_FG_BYTES]) { - int i; - - poly x1, x2, x3, x4, x5; - - poly *f = &x1, *g = &x2, *invf_mod3 = &x3; - poly *gf = &x3, *invgf = &x4, *tmp = &x5; - poly *invh = &x3, *h = &x3; - - PQCLEAN_NTRUHPS4096821_CLEAN_sample_fg(f, g, seed); - - PQCLEAN_NTRUHPS4096821_CLEAN_poly_S3_inv(invf_mod3, f); - PQCLEAN_NTRUHPS4096821_CLEAN_poly_S3_tobytes(sk, f); - PQCLEAN_NTRUHPS4096821_CLEAN_poly_S3_tobytes(sk + NTRU_PACK_TRINARY_BYTES, invf_mod3); - - /* Lift coeffs of f and g from Z_p to Z_q */ - PQCLEAN_NTRUHPS4096821_CLEAN_poly_Z3_to_Zq(f); - PQCLEAN_NTRUHPS4096821_CLEAN_poly_Z3_to_Zq(g); - - - /* g = 3*g */ - for (i = 0; i < NTRU_N; i++) { - g->coeffs[i] = 3 * g->coeffs[i]; - } - - PQCLEAN_NTRUHPS4096821_CLEAN_poly_Rq_mul(gf, g, f); - - PQCLEAN_NTRUHPS4096821_CLEAN_poly_Rq_inv(invgf, gf); - - PQCLEAN_NTRUHPS4096821_CLEAN_poly_Rq_mul(tmp, invgf, f); - PQCLEAN_NTRUHPS4096821_CLEAN_poly_Sq_mul(invh, tmp, f); - PQCLEAN_NTRUHPS4096821_CLEAN_poly_Sq_tobytes(sk + 2 * NTRU_PACK_TRINARY_BYTES, invh); - - PQCLEAN_NTRUHPS4096821_CLEAN_poly_Rq_mul(tmp, invgf, g); - PQCLEAN_NTRUHPS4096821_CLEAN_poly_Rq_mul(h, tmp, g); - PQCLEAN_NTRUHPS4096821_CLEAN_poly_Rq_sum_zero_tobytes(pk, h); -} - - -void PQCLEAN_NTRUHPS4096821_CLEAN_owcpa_enc(unsigned char *c, - const poly *r, - const poly *m, - const unsigned char *pk) { - int i; - poly x1, x2; - poly *h = &x1, *liftm = &x1; - poly *ct = &x2; - - PQCLEAN_NTRUHPS4096821_CLEAN_poly_Rq_sum_zero_frombytes(h, pk); - - PQCLEAN_NTRUHPS4096821_CLEAN_poly_Rq_mul(ct, r, h); - - PQCLEAN_NTRUHPS4096821_CLEAN_poly_lift(liftm, m); - for (i = 0; i < NTRU_N; i++) { - ct->coeffs[i] = ct->coeffs[i] + liftm->coeffs[i]; - } - - PQCLEAN_NTRUHPS4096821_CLEAN_poly_Rq_sum_zero_tobytes(c, ct); -} - -int PQCLEAN_NTRUHPS4096821_CLEAN_owcpa_dec(unsigned char *rm, - const unsigned char *ciphertext, - const unsigned char *secretkey) { - int i; - int fail; - poly x1, x2, x3, x4; - - poly *c = &x1, *f = &x2, *cf = &x3; - poly *mf = &x2, *finv3 = &x3, *m = &x4; - poly *liftm = &x2, *invh = &x3, *r = &x4; - poly *b = &x1; - - PQCLEAN_NTRUHPS4096821_CLEAN_poly_Rq_sum_zero_frombytes(c, ciphertext); - PQCLEAN_NTRUHPS4096821_CLEAN_poly_S3_frombytes(f, secretkey); - PQCLEAN_NTRUHPS4096821_CLEAN_poly_Z3_to_Zq(f); - - PQCLEAN_NTRUHPS4096821_CLEAN_poly_Rq_mul(cf, c, f); - PQCLEAN_NTRUHPS4096821_CLEAN_poly_Rq_to_S3(mf, cf); - - PQCLEAN_NTRUHPS4096821_CLEAN_poly_S3_frombytes(finv3, secretkey + NTRU_PACK_TRINARY_BYTES); - PQCLEAN_NTRUHPS4096821_CLEAN_poly_S3_mul(m, mf, finv3); - PQCLEAN_NTRUHPS4096821_CLEAN_poly_S3_tobytes(rm + NTRU_PACK_TRINARY_BYTES, m); - - fail = 0; - - /* 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 */ - /* r (defined as b/h mod (q, Phi_n)) and m are in the message space. */ - /* (m can take any value in S3 in NTRU_HRSS) */ - fail |= owcpa_check_m(m); - - /* b = c - Lift(m) mod (q, x^n - 1) */ - PQCLEAN_NTRUHPS4096821_CLEAN_poly_lift(liftm, m); - for (i = 0; i < NTRU_N; i++) { - b->coeffs[i] = c->coeffs[i] - liftm->coeffs[i]; - } - - /* r = b / h mod (q, Phi_n) */ - PQCLEAN_NTRUHPS4096821_CLEAN_poly_Sq_frombytes(invh, secretkey + 2 * NTRU_PACK_TRINARY_BYTES); - PQCLEAN_NTRUHPS4096821_CLEAN_poly_Sq_mul(r, b, invh); - - /* NOTE: Our definition of r as b/h mod (q, Phi_n) follows Figure 4 of */ - /* [Sch18] https://eprint.iacr.org/2018/1174/20181203:032458. */ - /* This differs from Figure 10 of Saito--Xagawa--Yamakawa */ - /* [SXY17] https://eprint.iacr.org/2017/1005/20180516:055500 */ - /* where r gets a final reduction modulo p. */ - /* We need this change to use Proposition 1 of [Sch18]. */ - - /* Proposition 1 of [Sch18] shows that re-encryption with (r,m) yields c. */ - /* if and only if fail==0 after the following call to owcpa_check_r */ - /* The procedure given in Fig. 8 of [Sch18] can be skipped because we have */ - /* c(1) = 0 due to the use of poly_Rq_sum_zero_{to,from}bytes. */ - fail |= owcpa_check_r(r); - - PQCLEAN_NTRUHPS4096821_CLEAN_poly_trinary_Zq_to_Z3(r); - PQCLEAN_NTRUHPS4096821_CLEAN_poly_S3_tobytes(rm, r); - - return fail; -} diff --git a/src/kem/ntru/ntruhps4096821/clean/owcpa.h b/src/kem/ntru/ntruhps4096821/clean/owcpa.h deleted file mode 100644 index 61940a13..00000000 --- a/src/kem/ntru/ntruhps4096821/clean/owcpa.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef OWCPA_H -#define OWCPA_H - -#include "params.h" -#include "poly.h" - -void PQCLEAN_NTRUHPS4096821_CLEAN_owcpa_keypair(unsigned char *pk, - unsigned char *sk, - const unsigned char seed[NTRU_SAMPLE_FG_BYTES]); - -void PQCLEAN_NTRUHPS4096821_CLEAN_owcpa_enc(unsigned char *c, - const poly *r, - const poly *m, - const unsigned char *pk); - -int PQCLEAN_NTRUHPS4096821_CLEAN_owcpa_dec(unsigned char *rm, - const unsigned char *ciphertext, - const unsigned char *secretkey); -#endif diff --git a/src/kem/ntru/ntruhps4096821/clean/pack3.c b/src/kem/ntru/ntruhps4096821/clean/pack3.c deleted file mode 100644 index 5af5cde4..00000000 --- a/src/kem/ntru/ntruhps4096821/clean/pack3.c +++ /dev/null @@ -1,32 +0,0 @@ -#include "poly.h" - -void PQCLEAN_NTRUHPS4096821_CLEAN_poly_S3_tobytes(unsigned char msg[NTRU_OWCPA_MSGBYTES], const poly *a) { - int i; - unsigned char c; - - for (i = 0; i < NTRU_PACK_DEG / 5; i++) { - c = a->coeffs[5 * i + 4] & 255; - c = (3 * c + a->coeffs[5 * i + 3]) & 255; - c = (3 * c + a->coeffs[5 * i + 2]) & 255; - c = (3 * c + a->coeffs[5 * i + 1]) & 255; - c = (3 * c + a->coeffs[5 * i + 0]) & 255; - msg[i] = c; - } -} - -void PQCLEAN_NTRUHPS4096821_CLEAN_poly_S3_frombytes(poly *r, const unsigned char msg[NTRU_OWCPA_MSGBYTES]) { - int i; - unsigned char c; - - for (i = 0; i < NTRU_PACK_DEG / 5; i++) { - c = msg[i]; - r->coeffs[5 * i + 0] = c; - r->coeffs[5 * i + 1] = c * 171 >> 9; // this is division by 3 - r->coeffs[5 * i + 2] = c * 57 >> 9; // division by 3^2 - r->coeffs[5 * i + 3] = c * 19 >> 9; // division by 3^3 - r->coeffs[5 * i + 4] = c * 203 >> 14; // etc. - } - r->coeffs[NTRU_N - 1] = 0; - PQCLEAN_NTRUHPS4096821_CLEAN_poly_mod_3_Phi_n(r); -} - diff --git a/src/kem/ntru/ntruhps4096821/clean/packq.c b/src/kem/ntru/ntruhps4096821/clean/packq.c deleted file mode 100644 index ce966192..00000000 --- a/src/kem/ntru/ntruhps4096821/clean/packq.c +++ /dev/null @@ -1,36 +0,0 @@ -#include "poly.h" - - -void PQCLEAN_NTRUHPS4096821_CLEAN_poly_Sq_tobytes(unsigned char *r, const poly *a) { - int i; - - for (i = 0; i < NTRU_PACK_DEG / 2; i++) { - r[3 * i + 0] = (unsigned char) ( MODQ(a->coeffs[2 * i + 0]) & 0xff); - r[3 * i + 1] = (unsigned char) ((MODQ(a->coeffs[2 * i + 0]) >> 8) | ((MODQ(a->coeffs[2 * i + 1]) & 0x0f) << 4)); - r[3 * i + 2] = (unsigned char) ((MODQ(a->coeffs[2 * i + 1]) >> 4)); - } -} - -void PQCLEAN_NTRUHPS4096821_CLEAN_poly_Sq_frombytes(poly *r, const unsigned char *a) { - int i; - for (i = 0; i < NTRU_PACK_DEG / 2; i++) { - r->coeffs[2 * i + 0] = (a[3 * i + 0] >> 0) | (((uint16_t)a[3 * i + 1] & 0x0f) << 8); - r->coeffs[2 * i + 1] = (a[3 * i + 1] >> 4) | (((uint16_t)a[3 * i + 2] & 0xff) << 4); - } - r->coeffs[NTRU_N - 1] = 0; -} - -void PQCLEAN_NTRUHPS4096821_CLEAN_poly_Rq_sum_zero_tobytes(unsigned char *r, const poly *a) { - PQCLEAN_NTRUHPS4096821_CLEAN_poly_Sq_tobytes(r, a); -} - -void PQCLEAN_NTRUHPS4096821_CLEAN_poly_Rq_sum_zero_frombytes(poly *r, const unsigned char *a) { - int i; - PQCLEAN_NTRUHPS4096821_CLEAN_poly_Sq_frombytes(r, a); - - /* Set r[n-1] so that the sum of coefficients is zero mod q */ - r->coeffs[NTRU_N - 1] = 0; - for (i = 0; i < NTRU_PACK_DEG; i++) { - r->coeffs[NTRU_N - 1] -= r->coeffs[i]; - } -} diff --git a/src/kem/ntru/ntruhps4096821/clean/params.h b/src/kem/ntru/ntruhps4096821/clean/params.h deleted file mode 100644 index f09b48fa..00000000 --- a/src/kem/ntru/ntruhps4096821/clean/params.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef PARAMS_H -#define PARAMS_H - -#define NTRU_HPS -#define NTRU_N 821 -#define NTRU_LOGQ 12 - - -/* Do not modify below this line */ - -#define PAD32(X) ((((X) + 31)/32)*32) - -#define NTRU_Q (1 << NTRU_LOGQ) -#define NTRU_WEIGHT (NTRU_Q/8 - 2) - -#define NTRU_SEEDBYTES 32 -#define NTRU_PRFKEYBYTES 32 -#define NTRU_SHAREDKEYBYTES 32 - -#define NTRU_SAMPLE_IID_BYTES (NTRU_N-1) -#define NTRU_SAMPLE_FT_BYTES ((30*(NTRU_N-1)+7)/8) -#define NTRU_SAMPLE_FG_BYTES (NTRU_SAMPLE_IID_BYTES+NTRU_SAMPLE_FT_BYTES) -#define NTRU_SAMPLE_RM_BYTES (NTRU_SAMPLE_IID_BYTES+NTRU_SAMPLE_FT_BYTES) - -#define NTRU_PACK_DEG (NTRU_N-1) -#define NTRU_PACK_TRINARY_BYTES ((NTRU_PACK_DEG+4)/5) - -#define NTRU_OWCPA_MSGBYTES (2*NTRU_PACK_TRINARY_BYTES) -#define NTRU_OWCPA_PUBLICKEYBYTES ((NTRU_LOGQ*NTRU_PACK_DEG+7)/8) -#define NTRU_OWCPA_SECRETKEYBYTES (2*NTRU_PACK_TRINARY_BYTES + NTRU_OWCPA_PUBLICKEYBYTES) -#define NTRU_OWCPA_BYTES ((NTRU_LOGQ*NTRU_PACK_DEG+7)/8) - -#define NTRU_PUBLICKEYBYTES (NTRU_OWCPA_PUBLICKEYBYTES) -#define NTRU_SECRETKEYBYTES (NTRU_OWCPA_SECRETKEYBYTES + NTRU_PRFKEYBYTES) -#define NTRU_CIPHERTEXTBYTES (NTRU_OWCPA_BYTES) - -#endif diff --git a/src/kem/ntru/ntruhps4096821/clean/poly.c b/src/kem/ntru/ntruhps4096821/clean/poly.c deleted file mode 100644 index ca48e161..00000000 --- a/src/kem/ntru/ntruhps4096821/clean/poly.c +++ /dev/null @@ -1,75 +0,0 @@ -#include "poly.h" - -/* Map {0, 1, 2} -> {0,1,q-1} in place */ -void PQCLEAN_NTRUHPS4096821_CLEAN_poly_Z3_to_Zq(poly *r) { - int i; - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = r->coeffs[i] | ((-(r->coeffs[i] >> 1)) & (NTRU_Q - 1)); - } -} - -/* Map {0, 1, q-1} -> {0,1,2} in place */ -void PQCLEAN_NTRUHPS4096821_CLEAN_poly_trinary_Zq_to_Z3(poly *r) { - int i; - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = MODQ(r->coeffs[i]); - r->coeffs[i] = 3 & (r->coeffs[i] ^ (r->coeffs[i] >> (NTRU_LOGQ - 1))); - } -} - -void PQCLEAN_NTRUHPS4096821_CLEAN_poly_Sq_mul(poly *r, const poly *a, const poly *b) { - PQCLEAN_NTRUHPS4096821_CLEAN_poly_Rq_mul(r, a, b); - PQCLEAN_NTRUHPS4096821_CLEAN_poly_mod_q_Phi_n(r); -} - -void PQCLEAN_NTRUHPS4096821_CLEAN_poly_S3_mul(poly *r, const poly *a, const poly *b) { - int i; - - /* Our S3 multiplications do not overflow mod q, */ - /* so we can re-purpose PQCLEAN_NTRUHPS4096821_CLEAN_poly_Rq_mul, as long as we */ - /* follow with an explicit reduction mod q. */ - PQCLEAN_NTRUHPS4096821_CLEAN_poly_Rq_mul(r, a, b); - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = MODQ(r->coeffs[i]); - } - PQCLEAN_NTRUHPS4096821_CLEAN_poly_mod_3_Phi_n(r); -} - -static void PQCLEAN_NTRUHPS4096821_CLEAN_poly_R2_inv_to_Rq_inv(poly *r, const poly *ai, const poly *a) { - - int i; - poly b, c; - poly s; - - // for 0..4 - // ai = ai * (2 - a*ai) mod q - for (i = 0; i < NTRU_N; i++) { - b.coeffs[i] = -(a->coeffs[i]); - } - - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = ai->coeffs[i]; - } - - PQCLEAN_NTRUHPS4096821_CLEAN_poly_Rq_mul(&c, r, &b); - c.coeffs[0] += 2; // c = 2 - a*ai - PQCLEAN_NTRUHPS4096821_CLEAN_poly_Rq_mul(&s, &c, r); // s = ai*c - - PQCLEAN_NTRUHPS4096821_CLEAN_poly_Rq_mul(&c, &s, &b); - c.coeffs[0] += 2; // c = 2 - a*s - PQCLEAN_NTRUHPS4096821_CLEAN_poly_Rq_mul(r, &c, &s); // r = s*c - - PQCLEAN_NTRUHPS4096821_CLEAN_poly_Rq_mul(&c, r, &b); - c.coeffs[0] += 2; // c = 2 - a*r - PQCLEAN_NTRUHPS4096821_CLEAN_poly_Rq_mul(&s, &c, r); // s = r*c - - PQCLEAN_NTRUHPS4096821_CLEAN_poly_Rq_mul(&c, &s, &b); - c.coeffs[0] += 2; // c = 2 - a*s - PQCLEAN_NTRUHPS4096821_CLEAN_poly_Rq_mul(r, &c, &s); // r = s*c -} - -void PQCLEAN_NTRUHPS4096821_CLEAN_poly_Rq_inv(poly *r, const poly *a) { - poly ai2; - PQCLEAN_NTRUHPS4096821_CLEAN_poly_R2_inv(&ai2, a); - PQCLEAN_NTRUHPS4096821_CLEAN_poly_R2_inv_to_Rq_inv(r, &ai2, a); -} diff --git a/src/kem/ntru/ntruhps4096821/clean/poly.h b/src/kem/ntru/ntruhps4096821/clean/poly.h deleted file mode 100644 index 953adce2..00000000 --- a/src/kem/ntru/ntruhps4096821/clean/poly.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef POLY_H -#define POLY_H - -#include "params.h" - -#include -#include - -#define MODQ(X) ((X) & (NTRU_Q-1)) - -typedef struct { - uint16_t coeffs[NTRU_N]; -} poly; - -void PQCLEAN_NTRUHPS4096821_CLEAN_poly_mod_3_Phi_n(poly *r); -void PQCLEAN_NTRUHPS4096821_CLEAN_poly_mod_q_Phi_n(poly *r); - -void PQCLEAN_NTRUHPS4096821_CLEAN_poly_Sq_tobytes(unsigned char *r, const poly *a); -void PQCLEAN_NTRUHPS4096821_CLEAN_poly_Sq_frombytes(poly *r, const unsigned char *a); - -void PQCLEAN_NTRUHPS4096821_CLEAN_poly_Rq_sum_zero_tobytes(unsigned char *r, const poly *a); -void PQCLEAN_NTRUHPS4096821_CLEAN_poly_Rq_sum_zero_frombytes(poly *r, const unsigned char *a); - -void PQCLEAN_NTRUHPS4096821_CLEAN_poly_S3_tobytes(unsigned char msg[NTRU_PACK_TRINARY_BYTES], const poly *a); -void PQCLEAN_NTRUHPS4096821_CLEAN_poly_S3_frombytes(poly *r, const unsigned char msg[NTRU_PACK_TRINARY_BYTES]); - -void PQCLEAN_NTRUHPS4096821_CLEAN_poly_Sq_mul(poly *r, const poly *a, const poly *b); -void PQCLEAN_NTRUHPS4096821_CLEAN_poly_Rq_mul(poly *r, const poly *a, const poly *b); -void PQCLEAN_NTRUHPS4096821_CLEAN_poly_S3_mul(poly *r, const poly *a, const poly *b); -void PQCLEAN_NTRUHPS4096821_CLEAN_poly_lift(poly *r, const poly *a); -void PQCLEAN_NTRUHPS4096821_CLEAN_poly_Rq_to_S3(poly *r, const poly *a); - -void PQCLEAN_NTRUHPS4096821_CLEAN_poly_R2_inv(poly *r, const poly *a); -void PQCLEAN_NTRUHPS4096821_CLEAN_poly_Rq_inv(poly *r, const poly *a); -void PQCLEAN_NTRUHPS4096821_CLEAN_poly_S3_inv(poly *r, const poly *a); - -void PQCLEAN_NTRUHPS4096821_CLEAN_poly_Z3_to_Zq(poly *r); -void PQCLEAN_NTRUHPS4096821_CLEAN_poly_trinary_Zq_to_Z3(poly *r); -#endif diff --git a/src/kem/ntru/ntruhps4096821/clean/poly_lift.c b/src/kem/ntru/ntruhps4096821/clean/poly_lift.c deleted file mode 100644 index 542e01a1..00000000 --- a/src/kem/ntru/ntruhps4096821/clean/poly_lift.c +++ /dev/null @@ -1,11 +0,0 @@ -#include "poly.h" - -void PQCLEAN_NTRUHPS4096821_CLEAN_poly_lift(poly *r, const poly *a) { - int i; - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = a->coeffs[i]; - } - PQCLEAN_NTRUHPS4096821_CLEAN_poly_Z3_to_Zq(r); -} - - diff --git a/src/kem/ntru/ntruhps4096821/clean/poly_mod.c b/src/kem/ntru/ntruhps4096821/clean/poly_mod.c deleted file mode 100644 index ec83027f..00000000 --- a/src/kem/ntru/ntruhps4096821/clean/poly_mod.c +++ /dev/null @@ -1,53 +0,0 @@ -#include "poly.h" - -static uint16_t mod3(uint16_t a) { - uint16_t r; - int16_t t, c; - - r = (a >> 8) + (a & 0xff); // r mod 255 == a mod 255 - r = (r >> 4) + (r & 0xf); // r' mod 15 == r mod 15 - r = (r >> 2) + (r & 0x3); // r' mod 3 == r mod 3 - r = (r >> 2) + (r & 0x3); // r' mod 3 == r mod 3 - - t = r - 3; - c = t >> 15; - - return (c & r) ^ (~c & t); -} - -void PQCLEAN_NTRUHPS4096821_CLEAN_poly_mod_3_Phi_n(poly *r) { - int i; - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = mod3(r->coeffs[i] + 2 * r->coeffs[NTRU_N - 1]); - } -} - -void PQCLEAN_NTRUHPS4096821_CLEAN_poly_mod_q_Phi_n(poly *r) { - int i; - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = r->coeffs[i] - r->coeffs[NTRU_N - 1]; - } -} - -void PQCLEAN_NTRUHPS4096821_CLEAN_poly_Rq_to_S3(poly *r, const poly *a) { - int i; - uint16_t flag; - - /* 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++) { - /* 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/src/kem/ntru/ntruhps4096821/clean/poly_r2_inv.c b/src/kem/ntru/ntruhps4096821/clean/poly_r2_inv.c deleted file mode 100644 index 9da75ae0..00000000 --- a/src/kem/ntru/ntruhps4096821/clean/poly_r2_inv.c +++ /dev/null @@ -1,69 +0,0 @@ -/* Based on supercop-20200702/crypto_core/invhrss701/simpler/core.c */ - -#include "poly.h" - -/* return -1 if x<0 and y<0; otherwise return 0 */ -static inline int16_t both_negative_mask(int16_t x, int16_t y) { - return (x & y) >> 15; -} - -void PQCLEAN_NTRUHPS4096821_CLEAN_poly_R2_inv(poly *r, const poly *a) { - poly f, g, v, w; - size_t i, loop; - int16_t delta, sign, swap, t; - - for (i = 0; i < NTRU_N; ++i) { - v.coeffs[i] = 0; - } - for (i = 0; i < NTRU_N; ++i) { - w.coeffs[i] = 0; - } - w.coeffs[0] = 1; - - for (i = 0; i < NTRU_N; ++i) { - f.coeffs[i] = 1; - } - for (i = 0; i < NTRU_N - 1; ++i) { - g.coeffs[NTRU_N - 2 - i] = (a->coeffs[i] ^ a->coeffs[NTRU_N - 1]) & 1; - } - g.coeffs[NTRU_N - 1] = 0; - - delta = 1; - - for (loop = 0; loop < 2 * (NTRU_N - 1) - 1; ++loop) { - for (i = NTRU_N - 1; i > 0; --i) { - v.coeffs[i] = v.coeffs[i - 1]; - } - v.coeffs[0] = 0; - - sign = g.coeffs[0] & f.coeffs[0]; - swap = both_negative_mask(-delta, -(int16_t) g.coeffs[0]); - delta ^= swap & (delta ^ -delta); - delta += 1; - - for (i = 0; i < NTRU_N; ++i) { - t = swap & (f.coeffs[i] ^ g.coeffs[i]); - f.coeffs[i] ^= t; - g.coeffs[i] ^= t; - t = swap & (v.coeffs[i] ^ w.coeffs[i]); - v.coeffs[i] ^= t; - w.coeffs[i] ^= t; - } - - for (i = 0; i < NTRU_N; ++i) { - g.coeffs[i] = g.coeffs[i] ^ (sign & f.coeffs[i]); - } - for (i = 0; i < NTRU_N; ++i) { - w.coeffs[i] = w.coeffs[i] ^ (sign & v.coeffs[i]); - } - for (i = 0; i < NTRU_N - 1; ++i) { - g.coeffs[i] = g.coeffs[i + 1]; - } - g.coeffs[NTRU_N - 1] = 0; - } - - for (i = 0; i < NTRU_N - 1; ++i) { - r->coeffs[i] = v.coeffs[NTRU_N - 2 - i]; - } - r->coeffs[NTRU_N - 1] = 0; -} diff --git a/src/kem/ntru/ntruhps4096821/clean/poly_rq_mul.c b/src/kem/ntru/ntruhps4096821/clean/poly_rq_mul.c deleted file mode 100644 index 9684b3ed..00000000 --- a/src/kem/ntru/ntruhps4096821/clean/poly_rq_mul.c +++ /dev/null @@ -1,284 +0,0 @@ -#include "poly.h" - -/* Polynomial multiplication using */ -/* Toom-4 and two layers of Karatsuba. */ - -#define L PAD32(NTRU_N) -#define M (L/4) -#define K (L/16) - -static void toom4_k2x2_mul(uint16_t ab[2 * L], const uint16_t a[L], const uint16_t b[L]); - -static void toom4_k2x2_eval_0(uint16_t r[9 * K], const uint16_t a[M]); -static void toom4_k2x2_eval_p1(uint16_t r[9 * K], const uint16_t a[M]); -static void toom4_k2x2_eval_m1(uint16_t r[9 * K], const uint16_t a[M]); -static void toom4_k2x2_eval_p2(uint16_t r[9 * K], const uint16_t a[M]); -static void toom4_k2x2_eval_m2(uint16_t r[9 * K], const uint16_t a[M]); -static void toom4_k2x2_eval_p3(uint16_t r[9 * K], const uint16_t a[M]); -static void toom4_k2x2_eval_inf(uint16_t r[9 * K], const uint16_t a[M]); -static inline void k2x2_eval(uint16_t r[9 * K]); - -static void toom4_k2x2_basemul(uint16_t r[18 * K], const uint16_t a[9 * K], const uint16_t b[9 * K]); -static inline void schoolbook_KxK(uint16_t r[2 * K], const uint16_t a[K], const uint16_t b[K]); - -static void toom4_k2x2_interpolate(uint16_t r[2 * M], const uint16_t a[63 * 2 * K]); -static inline void k2x2_interpolate(uint16_t r[M], const uint16_t a[9 * K]); - -void PQCLEAN_NTRUHPS4096821_CLEAN_poly_Rq_mul(poly *r, const poly *a, const poly *b) { - size_t i; - uint16_t ab[2 * L]; - - for (i = 0; i < NTRU_N; i++) { - ab[i] = a->coeffs[i]; - ab[L + i] = b->coeffs[i]; - } - for (i = NTRU_N; i < L; i++) { - ab[i] = 0; - ab[L + i] = 0; - } - - toom4_k2x2_mul(ab, ab, ab + L); - - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = ab[i] + ab[NTRU_N + i]; - } -} - -static void toom4_k2x2_mul(uint16_t ab[2 * L], const uint16_t a[L], const uint16_t b[L]) { - uint16_t tmpA[9 * K]; - uint16_t tmpB[9 * K]; - uint16_t eC[63 * 2 * K]; - - toom4_k2x2_eval_0(tmpA, a); - toom4_k2x2_eval_0(tmpB, b); - toom4_k2x2_basemul(eC + 0 * 9 * 2 * K, tmpA, tmpB); - - toom4_k2x2_eval_p1(tmpA, a); - toom4_k2x2_eval_p1(tmpB, b); - toom4_k2x2_basemul(eC + 1 * 9 * 2 * K, tmpA, tmpB); - - toom4_k2x2_eval_m1(tmpA, a); - toom4_k2x2_eval_m1(tmpB, b); - toom4_k2x2_basemul(eC + 2 * 9 * 2 * K, tmpA, tmpB); - - toom4_k2x2_eval_p2(tmpA, a); - toom4_k2x2_eval_p2(tmpB, b); - toom4_k2x2_basemul(eC + 3 * 9 * 2 * K, tmpA, tmpB); - - toom4_k2x2_eval_m2(tmpA, a); - toom4_k2x2_eval_m2(tmpB, b); - toom4_k2x2_basemul(eC + 4 * 9 * 2 * K, tmpA, tmpB); - - toom4_k2x2_eval_p3(tmpA, a); - toom4_k2x2_eval_p3(tmpB, b); - toom4_k2x2_basemul(eC + 5 * 9 * 2 * K, tmpA, tmpB); - - toom4_k2x2_eval_inf(tmpA, a); - toom4_k2x2_eval_inf(tmpB, b); - toom4_k2x2_basemul(eC + 6 * 9 * 2 * K, tmpA, tmpB); - - toom4_k2x2_interpolate(ab, eC); -} - - -static void toom4_k2x2_eval_0(uint16_t r[9 * K], const uint16_t a[M]) { - for (size_t i = 0; i < M; i++) { - r[i] = a[i]; - } - k2x2_eval(r); -} - -static void toom4_k2x2_eval_p1(uint16_t r[9 * K], const uint16_t a[M]) { - for (size_t i = 0; i < M; i++) { - r[i] = a[0 * M + i]; - r[i] += a[1 * M + i]; - r[i] += a[2 * M + i]; - r[i] += a[3 * M + i]; - } - k2x2_eval(r); -} - -static void toom4_k2x2_eval_m1(uint16_t r[9 * K], const uint16_t a[M]) { - for (size_t i = 0; i < M; i++) { - r[i] = a[0 * M + i]; - r[i] -= a[1 * M + i]; - r[i] += a[2 * M + i]; - r[i] -= a[3 * M + i]; - } - k2x2_eval(r); -} - -static void toom4_k2x2_eval_p2(uint16_t r[9 * K], const uint16_t a[M]) { - for (size_t i = 0; i < M; i++) { - r[i] = a[0 * M + i]; - r[i] += 2 * a[1 * M + i]; - r[i] += 4 * a[2 * M + i]; - r[i] += 8 * a[3 * M + i]; - } - k2x2_eval(r); -} - -static void toom4_k2x2_eval_m2(uint16_t r[9 * K], const uint16_t a[M]) { - for (size_t i = 0; i < M; i++) { - r[i] = a[0 * M + i]; - r[i] -= 2 * a[1 * M + i]; - r[i] += 4 * a[2 * M + i]; - r[i] -= 8 * a[3 * M + i]; - } - k2x2_eval(r); -} - -static void toom4_k2x2_eval_p3(uint16_t r[9 * K], const uint16_t a[M]) { - for (size_t i = 0; i < M; i++) { - r[i] = a[0 * M + i]; - r[i] += 3 * a[1 * M + i]; - r[i] += 9 * a[2 * M + i]; - r[i] += 27 * a[3 * M + i]; - } - k2x2_eval(r); -} - -static void toom4_k2x2_eval_inf(uint16_t r[9 * K], const uint16_t a[M]) { - for (size_t i = 0; i < M; i++) { - r[i] = a[3 * M + i]; - } - k2x2_eval(r); -} - -static inline void k2x2_eval(uint16_t r[9 * K]) { - /* Input: e + f.Y + g.Y^2 + h.Y^3 */ - /* Output: [ e | f | g | h | e+f | f+h | g+e | h+g | e+f+g+h ] */ - - size_t i; - for (i = 0; i < 4 * K; i++) { - r[4 * K + i] = r[i]; - } - for (i = 0; i < K; i++) { - r[4 * K + i] += r[1 * K + i]; - r[5 * K + i] += r[3 * K + i]; - r[6 * K + i] += r[0 * K + i]; - r[7 * K + i] += r[2 * K + i]; - r[8 * K + i] = r[5 * K + i]; - r[8 * K + i] += r[6 * K + i]; - } -} - -static void toom4_k2x2_basemul(uint16_t r[18 * K], const uint16_t a[9 * K], const uint16_t b[9 * K]) { - schoolbook_KxK(r + 0 * 2 * K, a + 0 * K, b + 0 * K); - schoolbook_KxK(r + 1 * 2 * K, a + 1 * K, b + 1 * K); - schoolbook_KxK(r + 2 * 2 * K, a + 2 * K, b + 2 * K); - schoolbook_KxK(r + 3 * 2 * K, a + 3 * K, b + 3 * K); - schoolbook_KxK(r + 4 * 2 * K, a + 4 * K, b + 4 * K); - schoolbook_KxK(r + 5 * 2 * K, a + 5 * K, b + 5 * K); - schoolbook_KxK(r + 6 * 2 * K, a + 6 * K, b + 6 * K); - schoolbook_KxK(r + 7 * 2 * K, a + 7 * K, b + 7 * K); - schoolbook_KxK(r + 8 * 2 * K, a + 8 * K, b + 8 * K); -} - -static inline void schoolbook_KxK(uint16_t r[2 * K], const uint16_t a[K], const uint16_t b[K]) { - size_t i, j; - for (j = 0; j < K; j++) { - r[j] = a[0] * (uint32_t)b[j]; - } - for (i = 1; i < K; i++) { - for (j = 0; j < K - 1; j++) { - r[i + j] += a[i] * (uint32_t)b[j]; - } - r[i + K - 1] = a[i] * (uint32_t)b[K - 1]; - } - r[2 * K - 1] = 0; -} - -static void toom4_k2x2_interpolate(uint16_t r[2 * M], const uint16_t a[7 * 18 * K]) { - size_t i; - - uint16_t P1[2 * M]; - uint16_t Pm1[2 * M]; - uint16_t P2[2 * M]; - uint16_t Pm2[2 * M]; - - uint16_t *C0 = r; - uint16_t *C2 = r + 2 * M; - uint16_t *C4 = r + 4 * M; - uint16_t *C6 = r + 6 * M; - - uint16_t V0, V1, V2; - - k2x2_interpolate(C0, a + 0 * 9 * 2 * K); - k2x2_interpolate(P1, a + 1 * 9 * 2 * K); - k2x2_interpolate(Pm1, a + 2 * 9 * 2 * K); - k2x2_interpolate(P2, a + 3 * 9 * 2 * K); - k2x2_interpolate(Pm2, a + 4 * 9 * 2 * K); - k2x2_interpolate(C6, a + 6 * 9 * 2 * K); - - for (i = 0; i < 2 * M; i++) { - V0 = ((uint32_t)(P1[i] + Pm1[i])) >> 1; - V0 = V0 - C0[i] - C6[i]; - V1 = ((uint32_t)(P2[i] + Pm2[i] - 2 * C0[i] - 128 * C6[i])) >> 3; - C4[i] = 43691 * (uint32_t)(V1 - V0); - C2[i] = V0 - C4[i]; - P1[i] = ((uint32_t)(P1[i] - Pm1[i])) >> 1; - } - - /* reuse Pm1 for P3 */ -#define P3 Pm1 - k2x2_interpolate(P3, a + 5 * 9 * 2 * K); - - for (i = 0; i < 2 * M; i++) { - V0 = P1[i]; - V1 = 43691 * (((uint32_t)(P2[i] - Pm2[i]) >> 2) - V0); - V2 = 43691 * (uint32_t)(P3[i] - C0[i] - 9 * (C2[i] + 9 * (C4[i] + 9 * C6[i]))); - V2 = ((uint32_t)(V2 - V0)) >> 3; - V2 -= V1; - P3[i] = 52429 * (uint32_t)V2; - P2[i] = V1 - V2; - P1[i] = V0 - P2[i] - P3[i]; - } - - for (i = 0; i < 2 * M; i++) { - r[1 * M + i] += P1[i]; - r[3 * M + i] += P2[i]; - r[5 * M + i] += P3[i]; - } -} - -static inline void k2x2_interpolate(uint16_t r[M], const uint16_t a[9 * K]) { - size_t i; - uint16_t tmp[4 * K]; - - for (i = 0; i < 2 * K; i++) { - r[0 * K + i] = a[0 * K + i]; - r[2 * K + i] = a[2 * K + i]; - } - - for (i = 0; i < 2 * K; i++) { - r[1 * K + i] += a[8 * K + i] - a[0 * K + i] - a[2 * K + i]; - } - - for (i = 0; i < 2 * K; i++) { - r[4 * K + i] = a[4 * K + i]; - r[6 * K + i] = a[6 * K + i]; - } - - for (i = 0; i < 2 * K; i++) { - r[5 * K + i] += a[14 * K + i] - a[4 * K + i] - a[6 * K + i]; - } - - for (i = 0; i < 2 * K; i++) { - tmp[0 * K + i] = a[12 * K + i]; - tmp[2 * K + i] = a[10 * K + i]; - } - - for (i = 0; i < 2 * K; i++) { - tmp[K + i] += a[16 * K + i] - a[12 * K + i] - a[10 * K + i]; - } - - for (i = 0; i < 4 * K; i++) { - tmp[0 * K + i] = tmp[0 * K + i] - r[0 * K + i] - r[4 * K + i]; - } - - for (i = 0; i < 4 * K; i++) { - r[2 * K + i] += tmp[0 * K + i]; - } -} - diff --git a/src/kem/ntru/ntruhps4096821/clean/poly_s3_inv.c b/src/kem/ntru/ntruhps4096821/clean/poly_s3_inv.c deleted file mode 100644 index ac54d4f8..00000000 --- a/src/kem/ntru/ntruhps4096821/clean/poly_s3_inv.c +++ /dev/null @@ -1,78 +0,0 @@ -/* Based on supercop-20200702/crypto_core/invhrss701/simpler/core.c */ - -#include "poly.h" - -static inline uint8_t mod3(uint8_t a) { /* a between 0 and 9 */ - int16_t t, c; - a = (a >> 2) + (a & 3); /* between 0 and 4 */ - t = a - 3; - c = t >> 5; - return (uint8_t) (t ^ (c & (a ^ t))); -} - -/* return -1 if x<0 and y<0; otherwise return 0 */ -static inline int16_t both_negative_mask(int16_t x, int16_t y) { - return (x & y) >> 15; -} - -void PQCLEAN_NTRUHPS4096821_CLEAN_poly_S3_inv(poly *r, const poly *a) { - poly f, g, v, w; - size_t i, loop; - int16_t delta, sign, swap, t; - - for (i = 0; i < NTRU_N; ++i) { - v.coeffs[i] = 0; - } - for (i = 0; i < NTRU_N; ++i) { - w.coeffs[i] = 0; - } - w.coeffs[0] = 1; - - for (i = 0; i < NTRU_N; ++i) { - f.coeffs[i] = 1; - } - for (i = 0; i < NTRU_N - 1; ++i) { - g.coeffs[NTRU_N - 2 - i] = mod3((a->coeffs[i] & 3) + 2 * (a->coeffs[NTRU_N - 1] & 3)); - } - g.coeffs[NTRU_N - 1] = 0; - - delta = 1; - - for (loop = 0; loop < 2 * (NTRU_N - 1) - 1; ++loop) { - for (i = NTRU_N - 1; i > 0; --i) { - v.coeffs[i] = v.coeffs[i - 1]; - } - v.coeffs[0] = 0; - - sign = mod3((uint8_t) (2 * g.coeffs[0] * f.coeffs[0])); - swap = both_negative_mask(-delta, -(int16_t) g.coeffs[0]); - delta ^= swap & (delta ^ -delta); - delta += 1; - - for (i = 0; i < NTRU_N; ++i) { - t = swap & (f.coeffs[i] ^ g.coeffs[i]); - f.coeffs[i] ^= t; - g.coeffs[i] ^= t; - t = swap & (v.coeffs[i] ^ w.coeffs[i]); - v.coeffs[i] ^= t; - w.coeffs[i] ^= t; - } - - for (i = 0; i < NTRU_N; ++i) { - g.coeffs[i] = mod3((uint8_t) (g.coeffs[i] + sign * f.coeffs[i])); - } - for (i = 0; i < NTRU_N; ++i) { - w.coeffs[i] = mod3((uint8_t) (w.coeffs[i] + sign * v.coeffs[i])); - } - for (i = 0; i < NTRU_N - 1; ++i) { - g.coeffs[i] = g.coeffs[i + 1]; - } - g.coeffs[NTRU_N - 1] = 0; - } - - sign = f.coeffs[0]; - for (i = 0; i < NTRU_N - 1; ++i) { - r->coeffs[i] = mod3((uint8_t) (sign * v.coeffs[NTRU_N - 2 - i])); - } - r->coeffs[NTRU_N - 1] = 0; -} diff --git a/src/kem/ntru/ntruhps4096821/clean/sample.c b/src/kem/ntru/ntruhps4096821/clean/sample.c deleted file mode 100644 index 6cb9287e..00000000 --- a/src/kem/ntru/ntruhps4096821/clean/sample.c +++ /dev/null @@ -1,45 +0,0 @@ -#include "sample.h" - -void PQCLEAN_NTRUHPS4096821_CLEAN_sample_fg(poly *f, poly *g, const unsigned char uniformbytes[NTRU_SAMPLE_FG_BYTES]) { - - PQCLEAN_NTRUHPS4096821_CLEAN_sample_iid(f, uniformbytes); - PQCLEAN_NTRUHPS4096821_CLEAN_sample_fixed_type(g, uniformbytes + NTRU_SAMPLE_IID_BYTES); -} - -void PQCLEAN_NTRUHPS4096821_CLEAN_sample_rm(poly *r, poly *m, const unsigned char uniformbytes[NTRU_SAMPLE_RM_BYTES]) { - - PQCLEAN_NTRUHPS4096821_CLEAN_sample_iid(r, uniformbytes); - PQCLEAN_NTRUHPS4096821_CLEAN_sample_fixed_type(m, uniformbytes + NTRU_SAMPLE_IID_BYTES); -} - - -void PQCLEAN_NTRUHPS4096821_CLEAN_sample_fixed_type(poly *r, const unsigned char u[NTRU_SAMPLE_FT_BYTES]) { - // Assumes NTRU_SAMPLE_FT_BYTES = ceil(30*(n-1)/8) - - int32_t s[NTRU_N - 1]; - int i; - - // Use 30 bits of u per word - for (i = 0; i < (NTRU_N - 1) / 4; i++) { - s[4 * i + 0] = (u[15 * i + 0] << 2) + (u[15 * i + 1] << 10) + (u[15 * i + 2] << 18) + ((uint32_t) u[15 * i + 3] << 26); - s[4 * i + 1] = ((u[15 * i + 3] & 0xc0) >> 4) + (u[15 * i + 4] << 4) + (u[15 * i + 5] << 12) + (u[15 * i + 6] << 20) + ((uint32_t) u[15 * i + 7] << 28); - s[4 * i + 2] = ((u[15 * i + 7] & 0xf0) >> 2) + (u[15 * i + 8] << 6) + (u[15 * i + 9] << 14) + (u[15 * i + 10] << 22) + ((uint32_t) u[15 * i + 11] << 30); - s[4 * i + 3] = (u[15 * i + 11] & 0xfc) + (u[15 * i + 12] << 8) + (u[15 * i + 13] << 16) + ((uint32_t) u[15 * i + 14] << 24); - } - - for (i = 0; i < NTRU_WEIGHT / 2; i++) { - s[i] |= 1; - } - - for (i = NTRU_WEIGHT / 2; i < NTRU_WEIGHT; i++) { - s[i] |= 2; - } - - PQCLEAN_NTRUHPS4096821_CLEAN_crypto_sort_int32(s, NTRU_N - 1); - - for (i = 0; i < NTRU_N - 1; i++) { - r->coeffs[i] = ((uint16_t) (s[i] & 3)); - } - - r->coeffs[NTRU_N - 1] = 0; -} diff --git a/src/kem/ntru/ntruhps4096821/clean/sample.h b/src/kem/ntru/ntruhps4096821/clean/sample.h deleted file mode 100644 index c2dbdd86..00000000 --- a/src/kem/ntru/ntruhps4096821/clean/sample.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef SAMPLE_H -#define SAMPLE_H - -#include "params.h" -#include "poly.h" - -#include "crypto_sort_int32.h" - -void PQCLEAN_NTRUHPS4096821_CLEAN_sample_fg(poly *f, poly *g, const unsigned char uniformbytes[NTRU_SAMPLE_FG_BYTES]); -void PQCLEAN_NTRUHPS4096821_CLEAN_sample_rm(poly *r, poly *m, const unsigned char uniformbytes[NTRU_SAMPLE_RM_BYTES]); - -void PQCLEAN_NTRUHPS4096821_CLEAN_sample_iid(poly *r, const unsigned char uniformbytes[NTRU_SAMPLE_IID_BYTES]); - -void PQCLEAN_NTRUHPS4096821_CLEAN_sample_fixed_type(poly *r, const unsigned char uniformbytes[NTRU_SAMPLE_FT_BYTES]); - - -#endif diff --git a/src/kem/ntru/ntruhps4096821/clean/sample_iid.c b/src/kem/ntru/ntruhps4096821/clean/sample_iid.c deleted file mode 100644 index de0827a2..00000000 --- a/src/kem/ntru/ntruhps4096821/clean/sample_iid.c +++ /dev/null @@ -1,26 +0,0 @@ -#include "sample.h" - -static uint16_t mod3(uint16_t a) { - uint16_t r; - int16_t t, c; - - r = (a >> 8) + (a & 0xff); // r mod 255 == a mod 255 - r = (r >> 4) + (r & 0xf); // r' mod 15 == r mod 15 - r = (r >> 2) + (r & 0x3); // r' mod 3 == r mod 3 - r = (r >> 2) + (r & 0x3); // r' mod 3 == r mod 3 - - t = r - 3; - c = t >> 15; - - return (c & r) ^ (~c & t); -} - -void PQCLEAN_NTRUHPS4096821_CLEAN_sample_iid(poly *r, const unsigned char uniformbytes[NTRU_SAMPLE_IID_BYTES]) { - int i; - /* {0,1,...,255} -> {0,1,2}; Pr[0] = 86/256, Pr[1] = Pr[-1] = 85/256 */ - for (i = 0; i < NTRU_N - 1; i++) { - r->coeffs[i] = mod3(uniformbytes[i]); - } - - r->coeffs[NTRU_N - 1] = 0; -} diff --git a/src/kem/ntru/ntruhrss701/avx2/CMakeLists.txt b/src/kem/ntru/ntruhrss701/avx2/CMakeLists.txt deleted file mode 100644 index 7592c74d..00000000 --- a/src/kem/ntru/ntruhrss701/avx2/CMakeLists.txt +++ /dev/null @@ -1,33 +0,0 @@ -set( - SRC_AVX2_NTRUHRSS701 - cmov.c - kem.c - owcpa.c - pack3.c - packq.c - poly.c - poly_lift.s - poly_mod_3_Phi_n.s - poly_mod_q_Phi_n.s - poly_r2_inv.c - poly_r2_mul.s - poly_rq_mul.s - poly_rq_to_s3.s - poly_s3_inv.c - sample.c - sample_iid.c - square_12_701_shufbytes.s - square_15_701_shufbytes.s - square_168_701_shufbytes.s - square_1_701_patience.s - square_27_701_shufbytes.s - square_336_701_shufbytes.s - square_3_701_patience.s - square_42_701_shufbytes.s - square_6_701_patience.s - square_84_701_shufbytes.s - vec32_sample_iid.s -) - -define_kem_alg(ntruhrss701_avx2 - PQCLEAN_NTRUHRSS701_AVX2 "${SRC_AVX2_NTRUHRSS701}" "${CMAKE_CURRENT_SOURCE_DIR}") diff --git a/src/kem/ntru/ntruhrss701/avx2/api.h b/src/kem/ntru/ntruhrss701/avx2/api.h deleted file mode 100644 index d4ce311b..00000000 --- a/src/kem/ntru/ntruhrss701/avx2/api.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef PQCLEAN_NTRUHRSS701_AVX2_API_H -#define PQCLEAN_NTRUHRSS701_AVX2_API_H - -#include - -#define PQCLEAN_NTRUHRSS701_AVX2_CRYPTO_SECRETKEYBYTES 1450 -#define PQCLEAN_NTRUHRSS701_AVX2_CRYPTO_PUBLICKEYBYTES 1138 -#define PQCLEAN_NTRUHRSS701_AVX2_CRYPTO_CIPHERTEXTBYTES 1138 -#define PQCLEAN_NTRUHRSS701_AVX2_CRYPTO_BYTES 32 - -#define PQCLEAN_NTRUHRSS701_AVX2_CRYPTO_ALGNAME "ntruhrss701" - -int PQCLEAN_NTRUHRSS701_AVX2_crypto_kem_keypair(uint8_t *pk, uint8_t *sk); - -int PQCLEAN_NTRUHRSS701_AVX2_crypto_kem_enc(uint8_t *c, uint8_t *k, const uint8_t *pk); - -int PQCLEAN_NTRUHRSS701_AVX2_crypto_kem_dec(uint8_t *k, const uint8_t *c, const uint8_t *sk); - -#endif diff --git a/src/kem/ntru/ntruhrss701/avx2/cmov.c b/src/kem/ntru/ntruhrss701/avx2/cmov.c deleted file mode 100644 index 0623bdfe..00000000 --- a/src/kem/ntru/ntruhrss701/avx2/cmov.c +++ /dev/null @@ -1,11 +0,0 @@ -#include "cmov.h" - -/* b = 1 means mov, b = 0 means don't mov*/ -void PQCLEAN_NTRUHRSS701_AVX2_cmov(unsigned char *r, const unsigned char *x, size_t len, unsigned char b) { - size_t i; - - b = (~b + 1); - for (i = 0; i < len; i++) { - r[i] ^= b & (x[i] ^ r[i]); - } -} diff --git a/src/kem/ntru/ntruhrss701/avx2/cmov.h b/src/kem/ntru/ntruhrss701/avx2/cmov.h deleted file mode 100644 index 2b90cf9c..00000000 --- a/src/kem/ntru/ntruhrss701/avx2/cmov.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef VERIFY_H -#define VERIFY_H - -#include "params.h" - -#include - -void PQCLEAN_NTRUHRSS701_AVX2_cmov(unsigned char *r, const unsigned char *x, size_t len, unsigned char b); - -#endif diff --git a/src/kem/ntru/ntruhrss701/avx2/kem.c b/src/kem/ntru/ntruhrss701/avx2/kem.c deleted file mode 100644 index 2085aa8d..00000000 --- a/src/kem/ntru/ntruhrss701/avx2/kem.c +++ /dev/null @@ -1,63 +0,0 @@ -#include "api.h" -#include "cmov.h" -#include "fips202.h" -#include "owcpa.h" -#include "params.h" -#include "randombytes.h" -#include "sample.h" - -// API FUNCTIONS -int PQCLEAN_NTRUHRSS701_AVX2_crypto_kem_keypair(uint8_t *pk, uint8_t *sk) { - uint8_t seed[NTRU_SAMPLE_FG_BYTES]; - - randombytes(seed, NTRU_SAMPLE_FG_BYTES); - PQCLEAN_NTRUHRSS701_AVX2_owcpa_keypair(pk, sk, seed); - - randombytes(sk + NTRU_OWCPA_SECRETKEYBYTES, NTRU_PRFKEYBYTES); - - return 0; -} - -int PQCLEAN_NTRUHRSS701_AVX2_crypto_kem_enc(uint8_t *c, uint8_t *k, const uint8_t *pk) { - poly r, m; - uint8_t rm[NTRU_OWCPA_MSGBYTES]; - uint8_t rm_seed[NTRU_SAMPLE_RM_BYTES]; - - randombytes(rm_seed, NTRU_SAMPLE_RM_BYTES); - - PQCLEAN_NTRUHRSS701_AVX2_sample_rm(&r, &m, rm_seed); - - PQCLEAN_NTRUHRSS701_AVX2_poly_S3_tobytes(rm, &r); - PQCLEAN_NTRUHRSS701_AVX2_poly_S3_tobytes(rm + NTRU_PACK_TRINARY_BYTES, &m); - sha3_256(k, rm, NTRU_OWCPA_MSGBYTES); - - PQCLEAN_NTRUHRSS701_AVX2_poly_Z3_to_Zq(&r); - PQCLEAN_NTRUHRSS701_AVX2_owcpa_enc(c, &r, &m, pk); - - return 0; -} - -int PQCLEAN_NTRUHRSS701_AVX2_crypto_kem_dec(uint8_t *k, const uint8_t *c, const uint8_t *sk) { - int i, fail; - uint8_t rm[NTRU_OWCPA_MSGBYTES]; - uint8_t buf[NTRU_PRFKEYBYTES + NTRU_CIPHERTEXTBYTES]; - - fail = PQCLEAN_NTRUHRSS701_AVX2_owcpa_dec(rm, c, sk); - /* If fail = 0 then c = Enc(h, rm). There is no need to re-encapsulate. */ - /* See comment in PQCLEAN_NTRUHRSS701_AVX2_owcpa_dec for details. */ - - sha3_256(k, rm, NTRU_OWCPA_MSGBYTES); - - /* shake(secret PRF key || input ciphertext) */ - for (i = 0; i < NTRU_PRFKEYBYTES; i++) { - buf[i] = sk[i + NTRU_OWCPA_SECRETKEYBYTES]; - } - for (i = 0; i < NTRU_CIPHERTEXTBYTES; i++) { - buf[NTRU_PRFKEYBYTES + i] = c[i]; - } - sha3_256(rm, buf, NTRU_PRFKEYBYTES + NTRU_CIPHERTEXTBYTES); - - PQCLEAN_NTRUHRSS701_AVX2_cmov(k, rm, NTRU_SHAREDKEYBYTES, (unsigned char) fail); - - return 0; -} diff --git a/src/kem/ntru/ntruhrss701/avx2/owcpa.c b/src/kem/ntru/ntruhrss701/avx2/owcpa.c deleted file mode 100644 index a6de2231..00000000 --- a/src/kem/ntru/ntruhrss701/avx2/owcpa.c +++ /dev/null @@ -1,162 +0,0 @@ -#include "owcpa.h" -#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) { - /* 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; - uint32_t t = 0; - uint16_t c; - 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 |= 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)); -} - - -void PQCLEAN_NTRUHRSS701_AVX2_owcpa_keypair(unsigned char *pk, - unsigned char *sk, - const unsigned char seed[NTRU_SAMPLE_FG_BYTES]) { - int i; - - poly x1, x2, x3, x4, x5; - - poly *f = &x1, *g = &x2, *invf_mod3 = &x3; - poly *gf = &x3, *invgf = &x4, *tmp = &x5; - poly *invh = &x3, *h = &x3; - - PQCLEAN_NTRUHRSS701_AVX2_sample_fg(f, g, seed); - - PQCLEAN_NTRUHRSS701_AVX2_poly_S3_inv(invf_mod3, f); - PQCLEAN_NTRUHRSS701_AVX2_poly_S3_tobytes(sk, f); - PQCLEAN_NTRUHRSS701_AVX2_poly_S3_tobytes(sk + NTRU_PACK_TRINARY_BYTES, invf_mod3); - - /* Lift coeffs of f and g from Z_p to Z_q */ - PQCLEAN_NTRUHRSS701_AVX2_poly_Z3_to_Zq(f); - PQCLEAN_NTRUHRSS701_AVX2_poly_Z3_to_Zq(g); - - /* g = 3*(x-1)*g */ - for (i = NTRU_N - 1; i > 0; i--) { - g->coeffs[i] = 3 * (g->coeffs[i - 1] - g->coeffs[i]); - } - g->coeffs[0] = -(3 * g->coeffs[0]); - - - PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_mul(gf, g, f); - - PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_inv(invgf, gf); - - PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_mul(tmp, invgf, f); - PQCLEAN_NTRUHRSS701_AVX2_poly_Sq_mul(invh, tmp, f); - PQCLEAN_NTRUHRSS701_AVX2_poly_Sq_tobytes(sk + 2 * NTRU_PACK_TRINARY_BYTES, invh); - - PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_mul(tmp, invgf, g); - PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_mul(h, tmp, g); - PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_sum_zero_tobytes(pk, h); -} - - -void PQCLEAN_NTRUHRSS701_AVX2_owcpa_enc(unsigned char *c, - const poly *r, - const poly *m, - const unsigned char *pk) { - int i; - poly x1, x2; - poly *h = &x1, *liftm = &x1; - poly *ct = &x2; - - PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_sum_zero_frombytes(h, pk); - - PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_mul(ct, r, h); - - PQCLEAN_NTRUHRSS701_AVX2_poly_lift(liftm, m); - for (i = 0; i < NTRU_N; i++) { - ct->coeffs[i] = ct->coeffs[i] + liftm->coeffs[i]; - } - - PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_sum_zero_tobytes(c, ct); -} - -int PQCLEAN_NTRUHRSS701_AVX2_owcpa_dec(unsigned char *rm, - const unsigned char *ciphertext, - const unsigned char *secretkey) { - int i; - int fail; - poly x1, x2, x3, x4; - - poly *c = &x1, *f = &x2, *cf = &x3; - poly *mf = &x2, *finv3 = &x3, *m = &x4; - poly *liftm = &x2, *invh = &x3, *r = &x4; - poly *b = &x1; - - PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_sum_zero_frombytes(c, ciphertext); - PQCLEAN_NTRUHRSS701_AVX2_poly_S3_frombytes(f, secretkey); - PQCLEAN_NTRUHRSS701_AVX2_poly_Z3_to_Zq(f); - - PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_mul(cf, c, f); - PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_to_S3(mf, cf); - - PQCLEAN_NTRUHRSS701_AVX2_poly_S3_frombytes(finv3, secretkey + NTRU_PACK_TRINARY_BYTES); - PQCLEAN_NTRUHRSS701_AVX2_poly_S3_mul(m, mf, finv3); - PQCLEAN_NTRUHRSS701_AVX2_poly_S3_tobytes(rm + NTRU_PACK_TRINARY_BYTES, m); - - fail = 0; - - /* 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 */ - /* r (defined as b/h mod (q, Phi_n)) and m are in the message space. */ - /* (m can take any value in S3 in NTRU_HRSS) */ - - /* b = c - Lift(m) mod (q, x^n - 1) */ - PQCLEAN_NTRUHRSS701_AVX2_poly_lift(liftm, m); - for (i = 0; i < NTRU_N; i++) { - b->coeffs[i] = c->coeffs[i] - liftm->coeffs[i]; - } - - /* r = b / h mod (q, Phi_n) */ - PQCLEAN_NTRUHRSS701_AVX2_poly_Sq_frombytes(invh, secretkey + 2 * NTRU_PACK_TRINARY_BYTES); - PQCLEAN_NTRUHRSS701_AVX2_poly_Sq_mul(r, b, invh); - - /* NOTE: Our definition of r as b/h mod (q, Phi_n) follows Figure 4 of */ - /* [Sch18] https://eprint.iacr.org/2018/1174/20181203:032458. */ - /* This differs from Figure 10 of Saito--Xagawa--Yamakawa */ - /* [SXY17] https://eprint.iacr.org/2017/1005/20180516:055500 */ - /* where r gets a final reduction modulo p. */ - /* We need this change to use Proposition 1 of [Sch18]. */ - - /* Proposition 1 of [Sch18] shows that re-encryption with (r,m) yields c. */ - /* if and only if fail==0 after the following call to owcpa_check_r */ - /* The procedure given in Fig. 8 of [Sch18] can be skipped because we have */ - /* c(1) = 0 due to the use of poly_Rq_sum_zero_{to,from}bytes. */ - fail |= owcpa_check_r(r); - - PQCLEAN_NTRUHRSS701_AVX2_poly_trinary_Zq_to_Z3(r); - PQCLEAN_NTRUHRSS701_AVX2_poly_S3_tobytes(rm, r); - - return fail; -} diff --git a/src/kem/ntru/ntruhrss701/avx2/owcpa.h b/src/kem/ntru/ntruhrss701/avx2/owcpa.h deleted file mode 100644 index 49549146..00000000 --- a/src/kem/ntru/ntruhrss701/avx2/owcpa.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef OWCPA_H -#define OWCPA_H - -#include "params.h" -#include "poly.h" - -void PQCLEAN_NTRUHRSS701_AVX2_owcpa_keypair(unsigned char *pk, - unsigned char *sk, - const unsigned char seed[NTRU_SAMPLE_FG_BYTES]); - -void PQCLEAN_NTRUHRSS701_AVX2_owcpa_enc(unsigned char *c, - const poly *r, - const poly *m, - const unsigned char *pk); - -int PQCLEAN_NTRUHRSS701_AVX2_owcpa_dec(unsigned char *rm, - const unsigned char *ciphertext, - const unsigned char *secretkey); -#endif diff --git a/src/kem/ntru/ntruhrss701/avx2/pack3.c b/src/kem/ntru/ntruhrss701/avx2/pack3.c deleted file mode 100644 index 08869a53..00000000 --- a/src/kem/ntru/ntruhrss701/avx2/pack3.c +++ /dev/null @@ -1,32 +0,0 @@ -#include "poly.h" - -void PQCLEAN_NTRUHRSS701_AVX2_poly_S3_tobytes(unsigned char msg[NTRU_OWCPA_MSGBYTES], const poly *a) { - int i; - unsigned char c; - - for (i = 0; i < NTRU_PACK_DEG / 5; i++) { - c = a->coeffs[5 * i + 4] & 255; - c = (3 * c + a->coeffs[5 * i + 3]) & 255; - c = (3 * c + a->coeffs[5 * i + 2]) & 255; - c = (3 * c + a->coeffs[5 * i + 1]) & 255; - c = (3 * c + a->coeffs[5 * i + 0]) & 255; - msg[i] = c; - } -} - -void PQCLEAN_NTRUHRSS701_AVX2_poly_S3_frombytes(poly *r, const unsigned char msg[NTRU_OWCPA_MSGBYTES]) { - int i; - unsigned char c; - - for (i = 0; i < NTRU_PACK_DEG / 5; i++) { - c = msg[i]; - r->coeffs[5 * i + 0] = c; - r->coeffs[5 * i + 1] = c * 171 >> 9; // this is division by 3 - r->coeffs[5 * i + 2] = c * 57 >> 9; // division by 3^2 - r->coeffs[5 * i + 3] = c * 19 >> 9; // division by 3^3 - r->coeffs[5 * i + 4] = c * 203 >> 14; // etc. - } - r->coeffs[NTRU_N - 1] = 0; - PQCLEAN_NTRUHRSS701_AVX2_poly_mod_3_Phi_n(r); -} - diff --git a/src/kem/ntru/ntruhrss701/avx2/packq.c b/src/kem/ntru/ntruhrss701/avx2/packq.c deleted file mode 100644 index 7d6a0eb1..00000000 --- a/src/kem/ntru/ntruhrss701/avx2/packq.c +++ /dev/null @@ -1,98 +0,0 @@ -#include "poly.h" - - -void PQCLEAN_NTRUHRSS701_AVX2_poly_Sq_tobytes(unsigned char *r, const poly *a) { - int i, j; - uint16_t t[8]; - - for (i = 0; i < NTRU_PACK_DEG / 8; i++) { - for (j = 0; j < 8; j++) { - t[j] = MODQ(a->coeffs[8 * i + j]); - } - - r[13 * i + 0] = (unsigned char) ( t[0] & 0xff); - r[13 * i + 1] = (unsigned char) ((t[0] >> 8) | ((t[1] & 0x07) << 5)); - r[13 * i + 2] = (unsigned char) ((t[1] >> 3) & 0xff); - r[13 * i + 3] = (unsigned char) ((t[1] >> 11) | ((t[2] & 0x3f) << 2)); - r[13 * i + 4] = (unsigned char) ((t[2] >> 6) | ((t[3] & 0x01) << 7)); - r[13 * i + 5] = (unsigned char) ((t[3] >> 1) & 0xff); - r[13 * i + 6] = (unsigned char) ((t[3] >> 9) | ((t[4] & 0x0f) << 4)); - r[13 * i + 7] = (unsigned char) ((t[4] >> 4) & 0xff); - r[13 * i + 8] = (unsigned char) ((t[4] >> 12) | ((t[5] & 0x7f) << 1)); - r[13 * i + 9] = (unsigned char) ((t[5] >> 7) | ((t[6] & 0x03) << 6)); - r[13 * i + 10] = (unsigned char) ((t[6] >> 2) & 0xff); - r[13 * i + 11] = (unsigned char) ((t[6] >> 10) | ((t[7] & 0x1f) << 3)); - r[13 * i + 12] = (unsigned char) ((t[7] >> 5)); - } - - for (j = 0; j < NTRU_PACK_DEG - 8 * i; j++) { - t[j] = MODQ(a->coeffs[8 * i + j]); - } - for (; j < 8; j++) { - t[j] = 0; - } - - switch (NTRU_PACK_DEG - 8 * (NTRU_PACK_DEG / 8)) { - // cases 0 and 6 are impossible since 2 generates (Z/n)* and - // p mod 8 in {1, 7} implies that 2 is a quadratic residue. - case 4: - r[13 * i + 0] = (unsigned char) ( t[0] & 0xff); - r[13 * i + 1] = (unsigned char) (t[0] >> 8) | ((t[1] & 0x07) << 5); - r[13 * i + 2] = (unsigned char) (t[1] >> 3) & 0xff; - r[13 * i + 3] = (unsigned char) (t[1] >> 11) | ((t[2] & 0x3f) << 2); - r[13 * i + 4] = (unsigned char) (t[2] >> 6) | ((t[3] & 0x01) << 7); - r[13 * i + 5] = (unsigned char) (t[3] >> 1) & 0xff; - r[13 * i + 6] = (unsigned char) (t[3] >> 9) | ((t[4] & 0x0f) << 4); - break; - case 2: - r[13 * i + 0] = (unsigned char) ( t[0] & 0xff); - r[13 * i + 1] = (unsigned char) (t[0] >> 8) | ((t[1] & 0x07) << 5); - r[13 * i + 2] = (unsigned char) (t[1] >> 3) & 0xff; - r[13 * i + 3] = (unsigned char) (t[1] >> 11) | ((t[2] & 0x3f) << 2); - break; - } -} - -void PQCLEAN_NTRUHRSS701_AVX2_poly_Sq_frombytes(poly *r, const unsigned char *a) { - int i; - for (i = 0; i < NTRU_PACK_DEG / 8; i++) { - r->coeffs[8 * i + 0] = a[13 * i + 0] | (((uint16_t)a[13 * i + 1] & 0x1f) << 8); - r->coeffs[8 * i + 1] = (a[13 * i + 1] >> 5) | (((uint16_t)a[13 * i + 2] ) << 3) | (((uint16_t)a[13 * i + 3] & 0x03) << 11); - r->coeffs[8 * i + 2] = (a[13 * i + 3] >> 2) | (((uint16_t)a[13 * i + 4] & 0x7f) << 6); - r->coeffs[8 * i + 3] = (a[13 * i + 4] >> 7) | (((uint16_t)a[13 * i + 5] ) << 1) | (((uint16_t)a[13 * i + 6] & 0x0f) << 9); - r->coeffs[8 * i + 4] = (a[13 * i + 6] >> 4) | (((uint16_t)a[13 * i + 7] ) << 4) | (((uint16_t)a[13 * i + 8] & 0x01) << 12); - r->coeffs[8 * i + 5] = (a[13 * i + 8] >> 1) | (((uint16_t)a[13 * i + 9] & 0x3f) << 7); - r->coeffs[8 * i + 6] = (a[13 * i + 9] >> 6) | (((uint16_t)a[13 * i + 10] ) << 2) | (((uint16_t)a[13 * i + 11] & 0x07) << 10); - r->coeffs[8 * i + 7] = (a[13 * i + 11] >> 3) | (((uint16_t)a[13 * i + 12] ) << 5); - } - switch (NTRU_PACK_DEG & 0x07) { - // cases 0 and 6 are impossible since 2 generates (Z/n)* and - // p mod 8 in {1, 7} implies that 2 is a quadratic residue. - case 4: - r->coeffs[8 * i + 0] = a[13 * i + 0] | (((uint16_t)a[13 * i + 1] & 0x1f) << 8); - r->coeffs[8 * i + 1] = (a[13 * i + 1] >> 5) | (((uint16_t)a[13 * i + 2] ) << 3) | (((uint16_t)a[13 * i + 3] & 0x03) << 11); - r->coeffs[8 * i + 2] = (a[13 * i + 3] >> 2) | (((uint16_t)a[13 * i + 4] & 0x7f) << 6); - r->coeffs[8 * i + 3] = (a[13 * i + 4] >> 7) | (((uint16_t)a[13 * i + 5] ) << 1) | (((uint16_t)a[13 * i + 6] & 0x0f) << 9); - break; - case 2: - r->coeffs[8 * i + 0] = a[13 * i + 0] | (((uint16_t)a[13 * i + 1] & 0x1f) << 8); - r->coeffs[8 * i + 1] = (a[13 * i + 1] >> 5) | (((uint16_t)a[13 * i + 2] ) << 3) | (((uint16_t)a[13 * i + 3] & 0x03) << 11); - break; - } - r->coeffs[NTRU_N - 1] = 0; -} - -void PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_sum_zero_tobytes(unsigned char *r, const poly *a) { - PQCLEAN_NTRUHRSS701_AVX2_poly_Sq_tobytes(r, a); -} - -void PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_sum_zero_frombytes(poly *r, const unsigned char *a) { - int i; - PQCLEAN_NTRUHRSS701_AVX2_poly_Sq_frombytes(r, a); - - /* Set r[n-1] so that the sum of coefficients is zero mod q */ - r->coeffs[NTRU_N - 1] = 0; - for (i = 0; i < NTRU_PACK_DEG; i++) { - r->coeffs[NTRU_N - 1] -= r->coeffs[i]; - } -} diff --git a/src/kem/ntru/ntruhrss701/avx2/params.h b/src/kem/ntru/ntruhrss701/avx2/params.h deleted file mode 100644 index a9dbddd5..00000000 --- a/src/kem/ntru/ntruhrss701/avx2/params.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef PARAMS_H -#define PARAMS_H - -#define NTRU_HRSS -#define NTRU_N 701 -#define NTRU_LOGQ 13 - - -/* Do not modify below this line */ - -#define PAD32(X) ((((X) + 31)/32)*32) - -#define NTRU_Q (1 << NTRU_LOGQ) - -#define NTRU_SEEDBYTES 32 -#define NTRU_PRFKEYBYTES 32 -#define NTRU_SHAREDKEYBYTES 32 - -#define NTRU_SAMPLE_IID_BYTES (NTRU_N-1) -#define NTRU_SAMPLE_FG_BYTES (2*NTRU_SAMPLE_IID_BYTES) -#define NTRU_SAMPLE_RM_BYTES (2*NTRU_SAMPLE_IID_BYTES) - -#define NTRU_PACK_DEG (NTRU_N-1) -#define NTRU_PACK_TRINARY_BYTES ((NTRU_PACK_DEG+4)/5) - -#define NTRU_OWCPA_MSGBYTES (2*NTRU_PACK_TRINARY_BYTES) -#define NTRU_OWCPA_PUBLICKEYBYTES ((NTRU_LOGQ*NTRU_PACK_DEG+7)/8) -#define NTRU_OWCPA_SECRETKEYBYTES (2*NTRU_PACK_TRINARY_BYTES + NTRU_OWCPA_PUBLICKEYBYTES) -#define NTRU_OWCPA_BYTES ((NTRU_LOGQ*NTRU_PACK_DEG+7)/8) - -#define NTRU_PUBLICKEYBYTES (NTRU_OWCPA_PUBLICKEYBYTES) -#define NTRU_SECRETKEYBYTES (NTRU_OWCPA_SECRETKEYBYTES + NTRU_PRFKEYBYTES) -#define NTRU_CIPHERTEXTBYTES (NTRU_OWCPA_BYTES) - -#endif diff --git a/src/kem/ntru/ntruhrss701/avx2/poly.c b/src/kem/ntru/ntruhrss701/avx2/poly.c deleted file mode 100644 index 8248815a..00000000 --- a/src/kem/ntru/ntruhrss701/avx2/poly.c +++ /dev/null @@ -1,75 +0,0 @@ -#include "poly.h" - -/* Map {0, 1, 2} -> {0,1,q-1} in place */ -void PQCLEAN_NTRUHRSS701_AVX2_poly_Z3_to_Zq(poly *r) { - int i; - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = r->coeffs[i] | ((-(r->coeffs[i] >> 1)) & (NTRU_Q - 1)); - } -} - -/* Map {0, 1, q-1} -> {0,1,2} in place */ -void PQCLEAN_NTRUHRSS701_AVX2_poly_trinary_Zq_to_Z3(poly *r) { - int i; - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = MODQ(r->coeffs[i]); - r->coeffs[i] = 3 & (r->coeffs[i] ^ (r->coeffs[i] >> (NTRU_LOGQ - 1))); - } -} - -void PQCLEAN_NTRUHRSS701_AVX2_poly_Sq_mul(poly *r, const poly *a, const poly *b) { - PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_mul(r, a, b); - PQCLEAN_NTRUHRSS701_AVX2_poly_mod_q_Phi_n(r); -} - -void PQCLEAN_NTRUHRSS701_AVX2_poly_S3_mul(poly *r, const poly *a, const poly *b) { - int i; - - /* Our S3 multiplications do not overflow mod q, */ - /* so we can re-purpose PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_mul, as long as we */ - /* follow with an explicit reduction mod q. */ - PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_mul(r, a, b); - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = MODQ(r->coeffs[i]); - } - PQCLEAN_NTRUHRSS701_AVX2_poly_mod_3_Phi_n(r); -} - -static void PQCLEAN_NTRUHRSS701_AVX2_poly_R2_inv_to_Rq_inv(poly *r, const poly *ai, const poly *a) { - - int i; - poly b, c; - poly s; - - // for 0..4 - // ai = ai * (2 - a*ai) mod q - for (i = 0; i < NTRU_N; i++) { - b.coeffs[i] = -(a->coeffs[i]); - } - - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = ai->coeffs[i]; - } - - PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_mul(&c, r, &b); - c.coeffs[0] += 2; // c = 2 - a*ai - PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_mul(&s, &c, r); // s = ai*c - - PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_mul(&c, &s, &b); - c.coeffs[0] += 2; // c = 2 - a*s - PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_mul(r, &c, &s); // r = s*c - - PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_mul(&c, r, &b); - c.coeffs[0] += 2; // c = 2 - a*r - PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_mul(&s, &c, r); // s = r*c - - PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_mul(&c, &s, &b); - c.coeffs[0] += 2; // c = 2 - a*s - PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_mul(r, &c, &s); // r = s*c -} - -void PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_inv(poly *r, const poly *a) { - poly ai2; - PQCLEAN_NTRUHRSS701_AVX2_poly_R2_inv(&ai2, a); - PQCLEAN_NTRUHRSS701_AVX2_poly_R2_inv_to_Rq_inv(r, &ai2, a); -} diff --git a/src/kem/ntru/ntruhrss701/avx2/poly.h b/src/kem/ntru/ntruhrss701/avx2/poly.h deleted file mode 100644 index da42122e..00000000 --- a/src/kem/ntru/ntruhrss701/avx2/poly.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef POLY_H -#define POLY_H - -#include -#include - -#include "params.h" - -#define MODQ(X) ((X) & (NTRU_Q-1)) - -typedef union { /* align to 32 byte boundary for vmovdqa */ - uint16_t coeffs[PAD32(NTRU_N)]; - __m256i coeffs_x16[PAD32(NTRU_N) / 16]; -} poly; - -void PQCLEAN_NTRUHRSS701_AVX2_poly_mod_3_Phi_n(poly *r); -void PQCLEAN_NTRUHRSS701_AVX2_poly_mod_q_Phi_n(poly *r); - -void PQCLEAN_NTRUHRSS701_AVX2_poly_Sq_tobytes(unsigned char *r, const poly *a); -void PQCLEAN_NTRUHRSS701_AVX2_poly_Sq_frombytes(poly *r, const unsigned char *a); - -void PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_sum_zero_tobytes(unsigned char *r, const poly *a); -void PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_sum_zero_frombytes(poly *r, const unsigned char *a); - -void PQCLEAN_NTRUHRSS701_AVX2_poly_S3_tobytes(unsigned char msg[NTRU_PACK_TRINARY_BYTES], const poly *a); -void PQCLEAN_NTRUHRSS701_AVX2_poly_S3_frombytes(poly *r, const unsigned char msg[NTRU_PACK_TRINARY_BYTES]); - -void PQCLEAN_NTRUHRSS701_AVX2_poly_Sq_mul(poly *r, const poly *a, const poly *b); -void PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_mul(poly *r, const poly *a, const poly *b); -void PQCLEAN_NTRUHRSS701_AVX2_poly_S3_mul(poly *r, const poly *a, const poly *b); -void PQCLEAN_NTRUHRSS701_AVX2_poly_lift(poly *r, const poly *a); -void PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_to_S3(poly *r, const poly *a); - -void PQCLEAN_NTRUHRSS701_AVX2_poly_R2_inv(poly *r, const poly *a); -void PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_inv(poly *r, const poly *a); -void PQCLEAN_NTRUHRSS701_AVX2_poly_S3_inv(poly *r, const poly *a); - -void PQCLEAN_NTRUHRSS701_AVX2_poly_Z3_to_Zq(poly *r); -void PQCLEAN_NTRUHRSS701_AVX2_poly_trinary_Zq_to_Z3(poly *r); - -#endif diff --git a/src/kem/ntru/ntruhrss701/avx2/poly_lift.s b/src/kem/ntru/ntruhrss701/avx2/poly_lift.s deleted file mode 100644 index 59549903..00000000 --- a/src/kem/ntru/ntruhrss701/avx2/poly_lift.s +++ /dev/null @@ -1,3247 +0,0 @@ -.data -.p2align 5 -mask_ff: -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -mask_f: -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -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 -coeff_0: -.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 -coeff_1: -.word 0 -.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 -coeff_2: -.word 0 -.word 0 -.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 -mask100: -.word 0xFFFF -.word 0 -.word 0 -.word 0xFFFF -.word 0 -.word 0 -.word 0xFFFF -.word 0 -.word 0 -.word 0xFFFF -.word 0 -.word 0 -.word 0xFFFF -.word 0 -.word 0 -.word 0xFFFF -mask010: -.word 0 -.word 0xFFFF -.word 0 -.word 0 -.word 0xFFFF -.word 0 -.word 0 -.word 0xFFFF -.word 0 -.word 0 -.word 0xFFFF -.word 0 -.word 0 -.word 0xFFFF -.word 0 -.word 0 -mask001: -.word 0 -.word 0 -.word 0xFFFF -.word 0 -.word 0 -.word 0xFFFF -.word 0 -.word 0 -.word 0xFFFF -.word 0 -.word 0 -.word 0xFFFF -.word 0 -.word 0 -.word 0xFFFF -.word 0 -mask100_701: -.word 0xFFFF -.word 0 -.word 0 -.word 0xFFFF -.word 0 -.word 0 -.word 0xFFFF -.word 0 -.word 0 -.word 0xFFFF -.word 0 -.word 0 -.word 0xFFFF -.word 0 -.word 0 -.word 0 -mask010_701: -.word 0 -.word 0xFFFF -.word 0 -.word 0 -.word 0xFFFF -.word 0 -.word 0 -.word 0xFFFF -.word 0 -.word 0 -.word 0xFFFF -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -mask001_701: -.word 0 -.word 0 -.word 0xFFFF -.word 0 -.word 0 -.word 0xFFFF -.word 0 -.word 0 -.word 0xFFFF -.word 0 -.word 0 -.word 0xFFFF -.word 0 -.word 0 -.word 0 -.word 0 -shuf_128_to_64: -.byte 8 -.byte 9 -.byte 10 -.byte 11 -.byte 12 -.byte 13 -.byte 14 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -const_modq: -.word 8191 -.word 8191 -.word 8191 -.word 8191 -.word 8191 -.word 8191 -.word 8191 -.word 8191 -.word 8191 -.word 8191 -.word 8191 -.word 8191 -.word 8191 -.word 8191 -.word 8191 -.word 8191 -mask_n: -.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 0 -.word 0 -.word 0 -mask_omit_lowest: -.word 0 -.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 -shuf_5_to_0_zerorest: -.byte 10 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.text -.global PQCLEAN_NTRUHRSS701_AVX2_poly_lift -.global _PQCLEAN_NTRUHRSS701_AVX2_poly_lift -PQCLEAN_NTRUHRSS701_AVX2_poly_lift: -_PQCLEAN_NTRUHRSS701_AVX2_poly_lift: -mov %rsp, %r8 -andq $-32, %rsp -subq $1408, %rsp -vmovdqa 0(%rsi), %ymm1 -vpxor %ymm0, %ymm0, %ymm0 -vpand coeff_0(%rip), %ymm1, %ymm5 -vpsubw %ymm5, %ymm0, %ymm2 -vpsubw %ymm5, %ymm0, %ymm3 -vpsubw %ymm5, %ymm0, %ymm4 -vpand coeff_1(%rip), %ymm1, %ymm5 -vpsubw %ymm5, %ymm3, %ymm3 -vpsubw %ymm5, %ymm4, %ymm4 -vpand coeff_2(%rip), %ymm1, %ymm5 -vpsubw %ymm5, %ymm4, %ymm4 -vmovdqa 0(%rsi), %ymm1 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 32(%rsi), %ymm1 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 64(%rsi), %ymm1 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 96(%rsi), %ymm1 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 128(%rsi), %ymm1 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 160(%rsi), %ymm1 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 192(%rsi), %ymm1 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 224(%rsi), %ymm1 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 256(%rsi), %ymm1 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 288(%rsi), %ymm1 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 320(%rsi), %ymm1 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 352(%rsi), %ymm1 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 384(%rsi), %ymm1 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 416(%rsi), %ymm1 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 448(%rsi), %ymm1 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 480(%rsi), %ymm1 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 512(%rsi), %ymm1 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 544(%rsi), %ymm1 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 576(%rsi), %ymm1 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 608(%rsi), %ymm1 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 640(%rsi), %ymm1 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 672(%rsi), %ymm1 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 704(%rsi), %ymm1 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 736(%rsi), %ymm1 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 768(%rsi), %ymm1 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 800(%rsi), %ymm1 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 832(%rsi), %ymm1 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 864(%rsi), %ymm1 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 896(%rsi), %ymm1 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 928(%rsi), %ymm1 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 960(%rsi), %ymm1 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 992(%rsi), %ymm1 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 1024(%rsi), %ymm1 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 1056(%rsi), %ymm1 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 1088(%rsi), %ymm1 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 1120(%rsi), %ymm1 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 1152(%rsi), %ymm1 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 1184(%rsi), %ymm1 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 1216(%rsi), %ymm1 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 1248(%rsi), %ymm1 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 1280(%rsi), %ymm1 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 1312(%rsi), %ymm1 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 1344(%rsi), %ymm1 -vpand mask001(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask100(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask100(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask010(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask010(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask001(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa 1376(%rsi), %ymm1 -vpand mask010_701(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask001_701(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand mask001_701(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask100_701(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand mask100_701(%rip), %ymm1, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand mask010_701(%rip), %ymm1, %ymm5 -vpsllw $1, %ymm5, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vextracti128 $1, %ymm2, %xmm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpshufb shuf_128_to_64(%rip), %ymm2, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpsrlq $32, %ymm2, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpsrlq $16, %ymm2, %ymm5 -vpaddw %ymm5, %ymm2, %ymm2 -vpand coeff_0(%rip), %ymm2, %ymm2 -vextracti128 $1, %ymm3, %xmm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpshufb shuf_128_to_64(%rip), %ymm3, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpsrlq $32, %ymm3, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpsllq $16, %ymm3, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vpand coeff_1(%rip), %ymm3, %ymm3 -vextracti128 $1, %ymm4, %xmm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpshufb shuf_128_to_64(%rip), %ymm4, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpsllq $32, %ymm4, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpsrlq $16, %ymm4, %ymm5 -vpaddw %ymm5, %ymm4, %ymm4 -vpand coeff_2(%rip), %ymm4, %ymm4 -vpor %ymm2, %ymm3, %ymm5 -vpor %ymm5, %ymm4, %ymm5 -vmovdqa %ymm5, 0(%rsp) -vmovdqu 6(%rsi), %ymm1 -vmovdqu 4(%rsi), %ymm4 -vmovdqu 2(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 6(%rsp) -vmovdqu 38(%rsi), %ymm1 -vmovdqu 36(%rsi), %ymm4 -vmovdqu 34(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 38(%rsp) -vmovdqu 70(%rsi), %ymm1 -vmovdqu 68(%rsi), %ymm4 -vmovdqu 66(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 70(%rsp) -vmovdqu 102(%rsi), %ymm1 -vmovdqu 100(%rsi), %ymm4 -vmovdqu 98(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 102(%rsp) -vmovdqu 134(%rsi), %ymm1 -vmovdqu 132(%rsi), %ymm4 -vmovdqu 130(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 134(%rsp) -vmovdqu 166(%rsi), %ymm1 -vmovdqu 164(%rsi), %ymm4 -vmovdqu 162(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 166(%rsp) -vmovdqu 198(%rsi), %ymm1 -vmovdqu 196(%rsi), %ymm4 -vmovdqu 194(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 198(%rsp) -vmovdqu 230(%rsi), %ymm1 -vmovdqu 228(%rsi), %ymm4 -vmovdqu 226(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 230(%rsp) -vmovdqu 262(%rsi), %ymm1 -vmovdqu 260(%rsi), %ymm4 -vmovdqu 258(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 262(%rsp) -vmovdqu 294(%rsi), %ymm1 -vmovdqu 292(%rsi), %ymm4 -vmovdqu 290(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 294(%rsp) -vmovdqu 326(%rsi), %ymm1 -vmovdqu 324(%rsi), %ymm4 -vmovdqu 322(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 326(%rsp) -vmovdqu 358(%rsi), %ymm1 -vmovdqu 356(%rsi), %ymm4 -vmovdqu 354(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 358(%rsp) -vmovdqu 390(%rsi), %ymm1 -vmovdqu 388(%rsi), %ymm4 -vmovdqu 386(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 390(%rsp) -vmovdqu 422(%rsi), %ymm1 -vmovdqu 420(%rsi), %ymm4 -vmovdqu 418(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 422(%rsp) -vmovdqu 454(%rsi), %ymm1 -vmovdqu 452(%rsi), %ymm4 -vmovdqu 450(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 454(%rsp) -vmovdqu 486(%rsi), %ymm1 -vmovdqu 484(%rsi), %ymm4 -vmovdqu 482(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 486(%rsp) -vmovdqu 518(%rsi), %ymm1 -vmovdqu 516(%rsi), %ymm4 -vmovdqu 514(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 518(%rsp) -vmovdqu 550(%rsi), %ymm1 -vmovdqu 548(%rsi), %ymm4 -vmovdqu 546(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 550(%rsp) -vmovdqu 582(%rsi), %ymm1 -vmovdqu 580(%rsi), %ymm4 -vmovdqu 578(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 582(%rsp) -vmovdqu 614(%rsi), %ymm1 -vmovdqu 612(%rsi), %ymm4 -vmovdqu 610(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 614(%rsp) -vmovdqu 646(%rsi), %ymm1 -vmovdqu 644(%rsi), %ymm4 -vmovdqu 642(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 646(%rsp) -vmovdqu 678(%rsi), %ymm1 -vmovdqu 676(%rsi), %ymm4 -vmovdqu 674(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 678(%rsp) -vmovdqu 710(%rsi), %ymm1 -vmovdqu 708(%rsi), %ymm4 -vmovdqu 706(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 710(%rsp) -vmovdqu 742(%rsi), %ymm1 -vmovdqu 740(%rsi), %ymm4 -vmovdqu 738(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 742(%rsp) -vmovdqu 774(%rsi), %ymm1 -vmovdqu 772(%rsi), %ymm4 -vmovdqu 770(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 774(%rsp) -vmovdqu 806(%rsi), %ymm1 -vmovdqu 804(%rsi), %ymm4 -vmovdqu 802(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 806(%rsp) -vmovdqu 838(%rsi), %ymm1 -vmovdqu 836(%rsi), %ymm4 -vmovdqu 834(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 838(%rsp) -vmovdqu 870(%rsi), %ymm1 -vmovdqu 868(%rsi), %ymm4 -vmovdqu 866(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 870(%rsp) -vmovdqu 902(%rsi), %ymm1 -vmovdqu 900(%rsi), %ymm4 -vmovdqu 898(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 902(%rsp) -vmovdqu 934(%rsi), %ymm1 -vmovdqu 932(%rsi), %ymm4 -vmovdqu 930(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 934(%rsp) -vmovdqu 966(%rsi), %ymm1 -vmovdqu 964(%rsi), %ymm4 -vmovdqu 962(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 966(%rsp) -vmovdqu 998(%rsi), %ymm1 -vmovdqu 996(%rsi), %ymm4 -vmovdqu 994(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 998(%rsp) -vmovdqu 1030(%rsi), %ymm1 -vmovdqu 1028(%rsi), %ymm4 -vmovdqu 1026(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 1030(%rsp) -vmovdqu 1062(%rsi), %ymm1 -vmovdqu 1060(%rsi), %ymm4 -vmovdqu 1058(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 1062(%rsp) -vmovdqu 1094(%rsi), %ymm1 -vmovdqu 1092(%rsi), %ymm4 -vmovdqu 1090(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 1094(%rsp) -vmovdqu 1126(%rsi), %ymm1 -vmovdqu 1124(%rsi), %ymm4 -vmovdqu 1122(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 1126(%rsp) -vmovdqu 1158(%rsi), %ymm1 -vmovdqu 1156(%rsi), %ymm4 -vmovdqu 1154(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 1158(%rsp) -vmovdqu 1190(%rsi), %ymm1 -vmovdqu 1188(%rsi), %ymm4 -vmovdqu 1186(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 1190(%rsp) -vmovdqu 1222(%rsi), %ymm1 -vmovdqu 1220(%rsi), %ymm4 -vmovdqu 1218(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 1222(%rsp) -vmovdqu 1254(%rsi), %ymm1 -vmovdqu 1252(%rsi), %ymm4 -vmovdqu 1250(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 1254(%rsp) -vmovdqu 1286(%rsi), %ymm1 -vmovdqu 1284(%rsi), %ymm4 -vmovdqu 1282(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 1286(%rsp) -vmovdqu 1318(%rsi), %ymm1 -vmovdqu 1316(%rsi), %ymm4 -vmovdqu 1314(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 1318(%rsp) -vmovdqu 1350(%rsi), %ymm1 -vmovdqu 1348(%rsi), %ymm4 -vmovdqu 1346(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqu %ymm2, 1350(%rsp) -vmovdqa 1376(%rsi), %ymm1 -vpand mask_n(%rip), %ymm1, %ymm1 -vmovdqu 1374(%rsi), %ymm4 -vmovdqu 1372(%rsi), %ymm5 -vpaddw %ymm4, %ymm1, %ymm1 -vpaddw %ymm5, %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm2 -vmovdqa %ymm2, 1376(%rsp) -movq 0(%rsp), %r9 -movq 6(%rsp), %r10 -add %r9, %r10 -movq 12(%rsp), %r11 -movq %r10, 6(%rsp) -add %r10, %r11 -movq 18(%rsp), %r9 -movq %r11, 12(%rsp) -add %r11, %r9 -movq 24(%rsp), %r10 -movq %r9, 18(%rsp) -add %r9, %r10 -movq 30(%rsp), %r11 -movq %r10, 24(%rsp) -add %r10, %r11 -movq 36(%rsp), %r9 -movq %r11, 30(%rsp) -add %r11, %r9 -movq 42(%rsp), %r10 -movq %r9, 36(%rsp) -add %r9, %r10 -movq 48(%rsp), %r11 -movq %r10, 42(%rsp) -add %r10, %r11 -movq 54(%rsp), %r9 -movq %r11, 48(%rsp) -add %r11, %r9 -movq 60(%rsp), %r10 -movq %r9, 54(%rsp) -add %r9, %r10 -movq 66(%rsp), %r11 -movq %r10, 60(%rsp) -add %r10, %r11 -movq 72(%rsp), %r9 -movq %r11, 66(%rsp) -add %r11, %r9 -movq 78(%rsp), %r10 -movq %r9, 72(%rsp) -add %r9, %r10 -movq 84(%rsp), %r11 -movq %r10, 78(%rsp) -add %r10, %r11 -movq 90(%rsp), %r9 -movq %r11, 84(%rsp) -add %r11, %r9 -movq 96(%rsp), %r10 -movq %r9, 90(%rsp) -add %r9, %r10 -movq 102(%rsp), %r11 -movq %r10, 96(%rsp) -add %r10, %r11 -movq 108(%rsp), %r9 -movq %r11, 102(%rsp) -add %r11, %r9 -movq 114(%rsp), %r10 -movq %r9, 108(%rsp) -add %r9, %r10 -movq 120(%rsp), %r11 -movq %r10, 114(%rsp) -add %r10, %r11 -movq 126(%rsp), %r9 -movq %r11, 120(%rsp) -add %r11, %r9 -movq 132(%rsp), %r10 -movq %r9, 126(%rsp) -add %r9, %r10 -movq 138(%rsp), %r11 -movq %r10, 132(%rsp) -add %r10, %r11 -movq 144(%rsp), %r9 -movq %r11, 138(%rsp) -add %r11, %r9 -movq 150(%rsp), %r10 -movq %r9, 144(%rsp) -add %r9, %r10 -movq 156(%rsp), %r11 -movq %r10, 150(%rsp) -add %r10, %r11 -movq 162(%rsp), %r9 -movq %r11, 156(%rsp) -add %r11, %r9 -movq 168(%rsp), %r10 -movq %r9, 162(%rsp) -add %r9, %r10 -movq 174(%rsp), %r11 -movq %r10, 168(%rsp) -add %r10, %r11 -movq 180(%rsp), %r9 -movq %r11, 174(%rsp) -add %r11, %r9 -movq 186(%rsp), %r10 -movq %r9, 180(%rsp) -add %r9, %r10 -movq 192(%rsp), %r11 -movq %r10, 186(%rsp) -add %r10, %r11 -movq 198(%rsp), %r9 -movq %r11, 192(%rsp) -add %r11, %r9 -movq 204(%rsp), %r10 -movq %r9, 198(%rsp) -add %r9, %r10 -movq 210(%rsp), %r11 -movq %r10, 204(%rsp) -add %r10, %r11 -movq 216(%rsp), %r9 -movq %r11, 210(%rsp) -add %r11, %r9 -movq 222(%rsp), %r10 -movq %r9, 216(%rsp) -add %r9, %r10 -movq 228(%rsp), %r11 -movq %r10, 222(%rsp) -add %r10, %r11 -movq 234(%rsp), %r9 -movq %r11, 228(%rsp) -add %r11, %r9 -movq 240(%rsp), %r10 -movq %r9, 234(%rsp) -add %r9, %r10 -movq 246(%rsp), %r11 -movq %r10, 240(%rsp) -add %r10, %r11 -movq 252(%rsp), %r9 -movq %r11, 246(%rsp) -add %r11, %r9 -movq 258(%rsp), %r10 -movq %r9, 252(%rsp) -add %r9, %r10 -movq 264(%rsp), %r11 -movq %r10, 258(%rsp) -add %r10, %r11 -movq 270(%rsp), %r9 -movq %r11, 264(%rsp) -add %r11, %r9 -movq 276(%rsp), %r10 -movq %r9, 270(%rsp) -add %r9, %r10 -movq 282(%rsp), %r11 -movq %r10, 276(%rsp) -add %r10, %r11 -movq 288(%rsp), %r9 -movq %r11, 282(%rsp) -add %r11, %r9 -movq 294(%rsp), %r10 -movq %r9, 288(%rsp) -add %r9, %r10 -movq 300(%rsp), %r11 -movq %r10, 294(%rsp) -add %r10, %r11 -movq 306(%rsp), %r9 -movq %r11, 300(%rsp) -add %r11, %r9 -movq 312(%rsp), %r10 -movq %r9, 306(%rsp) -add %r9, %r10 -movq 318(%rsp), %r11 -movq %r10, 312(%rsp) -add %r10, %r11 -movq 324(%rsp), %r9 -movq %r11, 318(%rsp) -add %r11, %r9 -movq 330(%rsp), %r10 -movq %r9, 324(%rsp) -add %r9, %r10 -movq 336(%rsp), %r11 -movq %r10, 330(%rsp) -add %r10, %r11 -movq 342(%rsp), %r9 -movq %r11, 336(%rsp) -add %r11, %r9 -movq 348(%rsp), %r10 -movq %r9, 342(%rsp) -add %r9, %r10 -movq 354(%rsp), %r11 -movq %r10, 348(%rsp) -add %r10, %r11 -movq 360(%rsp), %r9 -movq %r11, 354(%rsp) -add %r11, %r9 -movq 366(%rsp), %r10 -movq %r9, 360(%rsp) -add %r9, %r10 -movq 372(%rsp), %r11 -movq %r10, 366(%rsp) -add %r10, %r11 -movq 378(%rsp), %r9 -movq %r11, 372(%rsp) -add %r11, %r9 -movq 384(%rsp), %r10 -movq %r9, 378(%rsp) -add %r9, %r10 -movq 390(%rsp), %r11 -movq %r10, 384(%rsp) -add %r10, %r11 -movq 396(%rsp), %r9 -movq %r11, 390(%rsp) -add %r11, %r9 -movq 402(%rsp), %r10 -movq %r9, 396(%rsp) -add %r9, %r10 -movq 408(%rsp), %r11 -movq %r10, 402(%rsp) -add %r10, %r11 -movq 414(%rsp), %r9 -movq %r11, 408(%rsp) -add %r11, %r9 -movq 420(%rsp), %r10 -movq %r9, 414(%rsp) -add %r9, %r10 -movq 426(%rsp), %r11 -movq %r10, 420(%rsp) -add %r10, %r11 -movq 432(%rsp), %r9 -movq %r11, 426(%rsp) -add %r11, %r9 -movq 438(%rsp), %r10 -movq %r9, 432(%rsp) -add %r9, %r10 -movq 444(%rsp), %r11 -movq %r10, 438(%rsp) -add %r10, %r11 -movq 450(%rsp), %r9 -movq %r11, 444(%rsp) -add %r11, %r9 -movq 456(%rsp), %r10 -movq %r9, 450(%rsp) -add %r9, %r10 -movq 462(%rsp), %r11 -movq %r10, 456(%rsp) -add %r10, %r11 -movq 468(%rsp), %r9 -movq %r11, 462(%rsp) -add %r11, %r9 -movq 474(%rsp), %r10 -movq %r9, 468(%rsp) -add %r9, %r10 -movq 480(%rsp), %r11 -movq %r10, 474(%rsp) -add %r10, %r11 -movq 486(%rsp), %r9 -movq %r11, 480(%rsp) -add %r11, %r9 -movq 492(%rsp), %r10 -movq %r9, 486(%rsp) -add %r9, %r10 -movq 498(%rsp), %r11 -movq %r10, 492(%rsp) -add %r10, %r11 -movq 504(%rsp), %r9 -movq %r11, 498(%rsp) -add %r11, %r9 -movq 510(%rsp), %r10 -movq %r9, 504(%rsp) -add %r9, %r10 -movq 516(%rsp), %r11 -movq %r10, 510(%rsp) -add %r10, %r11 -movq 522(%rsp), %r9 -movq %r11, 516(%rsp) -add %r11, %r9 -movq 528(%rsp), %r10 -movq %r9, 522(%rsp) -add %r9, %r10 -movq 534(%rsp), %r11 -movq %r10, 528(%rsp) -add %r10, %r11 -movq 540(%rsp), %r9 -movq %r11, 534(%rsp) -add %r11, %r9 -movq 546(%rsp), %r10 -movq %r9, 540(%rsp) -add %r9, %r10 -movq 552(%rsp), %r11 -movq %r10, 546(%rsp) -add %r10, %r11 -movq 558(%rsp), %r9 -movq %r11, 552(%rsp) -add %r11, %r9 -movq 564(%rsp), %r10 -movq %r9, 558(%rsp) -add %r9, %r10 -movq 570(%rsp), %r11 -movq %r10, 564(%rsp) -add %r10, %r11 -movq 576(%rsp), %r9 -movq %r11, 570(%rsp) -add %r11, %r9 -movq 582(%rsp), %r10 -movq %r9, 576(%rsp) -add %r9, %r10 -movq 588(%rsp), %r11 -movq %r10, 582(%rsp) -add %r10, %r11 -movq 594(%rsp), %r9 -movq %r11, 588(%rsp) -add %r11, %r9 -movq 600(%rsp), %r10 -movq %r9, 594(%rsp) -add %r9, %r10 -movq 606(%rsp), %r11 -movq %r10, 600(%rsp) -add %r10, %r11 -movq 612(%rsp), %r9 -movq %r11, 606(%rsp) -add %r11, %r9 -movq 618(%rsp), %r10 -movq %r9, 612(%rsp) -add %r9, %r10 -movq 624(%rsp), %r11 -movq %r10, 618(%rsp) -add %r10, %r11 -movq 630(%rsp), %r9 -movq %r11, 624(%rsp) -add %r11, %r9 -movq 636(%rsp), %r10 -movq %r9, 630(%rsp) -add %r9, %r10 -movq 642(%rsp), %r11 -movq %r10, 636(%rsp) -add %r10, %r11 -movq 648(%rsp), %r9 -movq %r11, 642(%rsp) -add %r11, %r9 -movq 654(%rsp), %r10 -movq %r9, 648(%rsp) -add %r9, %r10 -movq 660(%rsp), %r11 -movq %r10, 654(%rsp) -add %r10, %r11 -movq 666(%rsp), %r9 -movq %r11, 660(%rsp) -add %r11, %r9 -movq 672(%rsp), %r10 -movq %r9, 666(%rsp) -add %r9, %r10 -movq 678(%rsp), %r11 -movq %r10, 672(%rsp) -add %r10, %r11 -movq 684(%rsp), %r9 -movq %r11, 678(%rsp) -add %r11, %r9 -movq 690(%rsp), %r10 -movq %r9, 684(%rsp) -add %r9, %r10 -movq 696(%rsp), %r11 -movq %r10, 690(%rsp) -add %r10, %r11 -movq 702(%rsp), %r9 -movq %r11, 696(%rsp) -add %r11, %r9 -movq 708(%rsp), %r10 -movq %r9, 702(%rsp) -add %r9, %r10 -movq 714(%rsp), %r11 -movq %r10, 708(%rsp) -add %r10, %r11 -movq 720(%rsp), %r9 -movq %r11, 714(%rsp) -add %r11, %r9 -movq 726(%rsp), %r10 -movq %r9, 720(%rsp) -add %r9, %r10 -movq 732(%rsp), %r11 -movq %r10, 726(%rsp) -add %r10, %r11 -movq 738(%rsp), %r9 -movq %r11, 732(%rsp) -add %r11, %r9 -movq 744(%rsp), %r10 -movq %r9, 738(%rsp) -add %r9, %r10 -movq 750(%rsp), %r11 -movq %r10, 744(%rsp) -add %r10, %r11 -movq 756(%rsp), %r9 -movq %r11, 750(%rsp) -add %r11, %r9 -movq 762(%rsp), %r10 -movq %r9, 756(%rsp) -add %r9, %r10 -movq 768(%rsp), %r11 -movq %r10, 762(%rsp) -add %r10, %r11 -movq 774(%rsp), %r9 -movq %r11, 768(%rsp) -add %r11, %r9 -movq 780(%rsp), %r10 -movq %r9, 774(%rsp) -add %r9, %r10 -movq 786(%rsp), %r11 -movq %r10, 780(%rsp) -add %r10, %r11 -movq 792(%rsp), %r9 -movq %r11, 786(%rsp) -add %r11, %r9 -movq 798(%rsp), %r10 -movq %r9, 792(%rsp) -add %r9, %r10 -movq 804(%rsp), %r11 -movq %r10, 798(%rsp) -add %r10, %r11 -movq 810(%rsp), %r9 -movq %r11, 804(%rsp) -add %r11, %r9 -movq 816(%rsp), %r10 -movq %r9, 810(%rsp) -add %r9, %r10 -movq 822(%rsp), %r11 -movq %r10, 816(%rsp) -add %r10, %r11 -movq 828(%rsp), %r9 -movq %r11, 822(%rsp) -add %r11, %r9 -movq 834(%rsp), %r10 -movq %r9, 828(%rsp) -add %r9, %r10 -movq 840(%rsp), %r11 -movq %r10, 834(%rsp) -add %r10, %r11 -movq 846(%rsp), %r9 -movq %r11, 840(%rsp) -add %r11, %r9 -movq 852(%rsp), %r10 -movq %r9, 846(%rsp) -add %r9, %r10 -movq 858(%rsp), %r11 -movq %r10, 852(%rsp) -add %r10, %r11 -movq 864(%rsp), %r9 -movq %r11, 858(%rsp) -add %r11, %r9 -movq 870(%rsp), %r10 -movq %r9, 864(%rsp) -add %r9, %r10 -movq 876(%rsp), %r11 -movq %r10, 870(%rsp) -add %r10, %r11 -movq 882(%rsp), %r9 -movq %r11, 876(%rsp) -add %r11, %r9 -movq 888(%rsp), %r10 -movq %r9, 882(%rsp) -add %r9, %r10 -movq 894(%rsp), %r11 -movq %r10, 888(%rsp) -add %r10, %r11 -movq 900(%rsp), %r9 -movq %r11, 894(%rsp) -add %r11, %r9 -movq 906(%rsp), %r10 -movq %r9, 900(%rsp) -add %r9, %r10 -movq 912(%rsp), %r11 -movq %r10, 906(%rsp) -add %r10, %r11 -movq 918(%rsp), %r9 -movq %r11, 912(%rsp) -add %r11, %r9 -movq 924(%rsp), %r10 -movq %r9, 918(%rsp) -add %r9, %r10 -movq 930(%rsp), %r11 -movq %r10, 924(%rsp) -add %r10, %r11 -movq 936(%rsp), %r9 -movq %r11, 930(%rsp) -add %r11, %r9 -movq 942(%rsp), %r10 -movq %r9, 936(%rsp) -add %r9, %r10 -movq 948(%rsp), %r11 -movq %r10, 942(%rsp) -add %r10, %r11 -movq 954(%rsp), %r9 -movq %r11, 948(%rsp) -add %r11, %r9 -movq 960(%rsp), %r10 -movq %r9, 954(%rsp) -add %r9, %r10 -movq 966(%rsp), %r11 -movq %r10, 960(%rsp) -add %r10, %r11 -movq 972(%rsp), %r9 -movq %r11, 966(%rsp) -add %r11, %r9 -movq 978(%rsp), %r10 -movq %r9, 972(%rsp) -add %r9, %r10 -movq 984(%rsp), %r11 -movq %r10, 978(%rsp) -add %r10, %r11 -movq 990(%rsp), %r9 -movq %r11, 984(%rsp) -add %r11, %r9 -movq 996(%rsp), %r10 -movq %r9, 990(%rsp) -add %r9, %r10 -movq 1002(%rsp), %r11 -movq %r10, 996(%rsp) -add %r10, %r11 -movq 1008(%rsp), %r9 -movq %r11, 1002(%rsp) -add %r11, %r9 -movq 1014(%rsp), %r10 -movq %r9, 1008(%rsp) -add %r9, %r10 -movq 1020(%rsp), %r11 -movq %r10, 1014(%rsp) -add %r10, %r11 -movq 1026(%rsp), %r9 -movq %r11, 1020(%rsp) -add %r11, %r9 -movq 1032(%rsp), %r10 -movq %r9, 1026(%rsp) -add %r9, %r10 -movq 1038(%rsp), %r11 -movq %r10, 1032(%rsp) -add %r10, %r11 -movq 1044(%rsp), %r9 -movq %r11, 1038(%rsp) -add %r11, %r9 -movq 1050(%rsp), %r10 -movq %r9, 1044(%rsp) -add %r9, %r10 -movq 1056(%rsp), %r11 -movq %r10, 1050(%rsp) -add %r10, %r11 -movq 1062(%rsp), %r9 -movq %r11, 1056(%rsp) -add %r11, %r9 -movq 1068(%rsp), %r10 -movq %r9, 1062(%rsp) -add %r9, %r10 -movq 1074(%rsp), %r11 -movq %r10, 1068(%rsp) -add %r10, %r11 -movq 1080(%rsp), %r9 -movq %r11, 1074(%rsp) -add %r11, %r9 -movq 1086(%rsp), %r10 -movq %r9, 1080(%rsp) -add %r9, %r10 -movq 1092(%rsp), %r11 -movq %r10, 1086(%rsp) -add %r10, %r11 -movq 1098(%rsp), %r9 -movq %r11, 1092(%rsp) -add %r11, %r9 -movq 1104(%rsp), %r10 -movq %r9, 1098(%rsp) -add %r9, %r10 -movq 1110(%rsp), %r11 -movq %r10, 1104(%rsp) -add %r10, %r11 -movq 1116(%rsp), %r9 -movq %r11, 1110(%rsp) -add %r11, %r9 -movq 1122(%rsp), %r10 -movq %r9, 1116(%rsp) -add %r9, %r10 -movq 1128(%rsp), %r11 -movq %r10, 1122(%rsp) -add %r10, %r11 -movq 1134(%rsp), %r9 -movq %r11, 1128(%rsp) -add %r11, %r9 -movq 1140(%rsp), %r10 -movq %r9, 1134(%rsp) -add %r9, %r10 -movq 1146(%rsp), %r11 -movq %r10, 1140(%rsp) -add %r10, %r11 -movq 1152(%rsp), %r9 -movq %r11, 1146(%rsp) -add %r11, %r9 -movq 1158(%rsp), %r10 -movq %r9, 1152(%rsp) -add %r9, %r10 -movq 1164(%rsp), %r11 -movq %r10, 1158(%rsp) -add %r10, %r11 -movq 1170(%rsp), %r9 -movq %r11, 1164(%rsp) -add %r11, %r9 -movq 1176(%rsp), %r10 -movq %r9, 1170(%rsp) -add %r9, %r10 -movq 1182(%rsp), %r11 -movq %r10, 1176(%rsp) -add %r10, %r11 -movq 1188(%rsp), %r9 -movq %r11, 1182(%rsp) -add %r11, %r9 -movq 1194(%rsp), %r10 -movq %r9, 1188(%rsp) -add %r9, %r10 -movq 1200(%rsp), %r11 -movq %r10, 1194(%rsp) -add %r10, %r11 -movq 1206(%rsp), %r9 -movq %r11, 1200(%rsp) -add %r11, %r9 -movq 1212(%rsp), %r10 -movq %r9, 1206(%rsp) -add %r9, %r10 -movq 1218(%rsp), %r11 -movq %r10, 1212(%rsp) -add %r10, %r11 -movq 1224(%rsp), %r9 -movq %r11, 1218(%rsp) -add %r11, %r9 -movq 1230(%rsp), %r10 -movq %r9, 1224(%rsp) -add %r9, %r10 -movq 1236(%rsp), %r11 -movq %r10, 1230(%rsp) -add %r10, %r11 -movq 1242(%rsp), %r9 -movq %r11, 1236(%rsp) -add %r11, %r9 -movq 1248(%rsp), %r10 -movq %r9, 1242(%rsp) -add %r9, %r10 -movq 1254(%rsp), %r11 -movq %r10, 1248(%rsp) -add %r10, %r11 -movq 1260(%rsp), %r9 -movq %r11, 1254(%rsp) -add %r11, %r9 -movq 1266(%rsp), %r10 -movq %r9, 1260(%rsp) -add %r9, %r10 -movq 1272(%rsp), %r11 -movq %r10, 1266(%rsp) -add %r10, %r11 -movq 1278(%rsp), %r9 -movq %r11, 1272(%rsp) -add %r11, %r9 -movq 1284(%rsp), %r10 -movq %r9, 1278(%rsp) -add %r9, %r10 -movq 1290(%rsp), %r11 -movq %r10, 1284(%rsp) -add %r10, %r11 -movq 1296(%rsp), %r9 -movq %r11, 1290(%rsp) -add %r11, %r9 -movq 1302(%rsp), %r10 -movq %r9, 1296(%rsp) -add %r9, %r10 -movq 1308(%rsp), %r11 -movq %r10, 1302(%rsp) -add %r10, %r11 -movq 1314(%rsp), %r9 -movq %r11, 1308(%rsp) -add %r11, %r9 -movq 1320(%rsp), %r10 -movq %r9, 1314(%rsp) -add %r9, %r10 -movq 1326(%rsp), %r11 -movq %r10, 1320(%rsp) -add %r10, %r11 -movq 1332(%rsp), %r9 -movq %r11, 1326(%rsp) -add %r11, %r9 -movq 1338(%rsp), %r10 -movq %r9, 1332(%rsp) -add %r9, %r10 -movq 1344(%rsp), %r11 -movq %r10, 1338(%rsp) -add %r10, %r11 -movq 1350(%rsp), %r9 -movq %r11, 1344(%rsp) -add %r11, %r9 -movq 1356(%rsp), %r10 -movq %r9, 1350(%rsp) -add %r9, %r10 -movq 1362(%rsp), %r11 -movq %r10, 1356(%rsp) -add %r10, %r11 -movq 1368(%rsp), %r9 -movq %r11, 1362(%rsp) -add %r11, %r9 -movq 1374(%rsp), %r10 -movq %r9, 1368(%rsp) -add %r9, %r10 -movq 1380(%rsp), %r11 -movq %r10, 1374(%rsp) -add %r10, %r11 -movq 1386(%rsp), %r9 -movq %r11, 1380(%rsp) -add %r11, %r9 -movq 1392(%rsp), %r10 -movq %r9, 1386(%rsp) -add %r9, %r10 -movq 1398(%rsp), %r11 -movq %r10, 1392(%rsp) -add %r10, %r11 -movq %r11, 1398(%rsp) -vmovdqa 1376(%rsp), %ymm1 -vpermq $3, %ymm1, %ymm1 -vpslld $17, %ymm1, %ymm1 -vpsrld $16, %ymm1, %ymm2 -vpor %ymm1, %ymm2, %ymm1 -vbroadcastss %xmm1, %ymm1 -vpaddw 0(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 0(%rsp) -vpaddw 32(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 32(%rsp) -vpaddw 64(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 64(%rsp) -vpaddw 96(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 96(%rsp) -vpaddw 128(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 128(%rsp) -vpaddw 160(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 160(%rsp) -vpaddw 192(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 192(%rsp) -vpaddw 224(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 224(%rsp) -vpaddw 256(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 256(%rsp) -vpaddw 288(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 288(%rsp) -vpaddw 320(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 320(%rsp) -vpaddw 352(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 352(%rsp) -vpaddw 384(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 384(%rsp) -vpaddw 416(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 416(%rsp) -vpaddw 448(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 448(%rsp) -vpaddw 480(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 480(%rsp) -vpaddw 512(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 512(%rsp) -vpaddw 544(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 544(%rsp) -vpaddw 576(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 576(%rsp) -vpaddw 608(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 608(%rsp) -vpaddw 640(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 640(%rsp) -vpaddw 672(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 672(%rsp) -vpaddw 704(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 704(%rsp) -vpaddw 736(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 736(%rsp) -vpaddw 768(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 768(%rsp) -vpaddw 800(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 800(%rsp) -vpaddw 832(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 832(%rsp) -vpaddw 864(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 864(%rsp) -vpaddw 896(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 896(%rsp) -vpaddw 928(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 928(%rsp) -vpaddw 960(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 960(%rsp) -vpaddw 992(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 992(%rsp) -vpaddw 1024(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 1024(%rsp) -vpaddw 1056(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 1056(%rsp) -vpaddw 1088(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 1088(%rsp) -vpaddw 1120(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 1120(%rsp) -vpaddw 1152(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 1152(%rsp) -vpaddw 1184(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 1184(%rsp) -vpaddw 1216(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 1216(%rsp) -vpaddw 1248(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 1248(%rsp) -vpaddw 1280(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 1280(%rsp) -vpaddw 1312(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 1312(%rsp) -vpaddw 1344(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 1344(%rsp) -vpaddw 1376(%rsp), %ymm1, %ymm2 -vpsrlw $8, %ymm2, %ymm3 -vpand mask_ff(%rip), %ymm2, %ymm2 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_f(%rip), %ymm3, %ymm2 -vpsrlw $4, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpand mask_3(%rip), %ymm3, %ymm2 -vpsrlw $2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm2, %ymm3 -vpsubw mask_3(%rip), %ymm3, %ymm14 -vpsraw $15, %ymm14, %ymm15 -vpandn %ymm14, %ymm15, %ymm2 -vpand %ymm15, %ymm3, %ymm14 -vpxor %ymm14, %ymm2, %ymm3 -vpsrlq $1, %ymm3, %ymm2 -vpsubw %ymm2, %ymm0, %ymm2 -vpand const_modq(%rip), %ymm2, %ymm2 -vpor %ymm3, %ymm2, %ymm3 -vmovdqa %ymm3, 1376(%rsp) -vmovdqu 1374(%rsp), %ymm0 -vpsubw 1376(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 1376(%rdi) -vextracti128 $1, %ymm0, %xmm4 -vpshufb shuf_5_to_0_zerorest(%rip), %ymm4, %ymm4 -vpsubw 0(%rsp), %ymm4, %ymm4 -vpand coeff_0(%rip), %ymm4, %ymm4 -vmovdqu 1342(%rsp), %ymm0 -vpsubw 1344(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 1344(%rdi) -vmovdqu 1310(%rsp), %ymm0 -vpsubw 1312(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 1312(%rdi) -vmovdqu 1278(%rsp), %ymm0 -vpsubw 1280(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 1280(%rdi) -vmovdqu 1246(%rsp), %ymm0 -vpsubw 1248(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 1248(%rdi) -vmovdqu 1214(%rsp), %ymm0 -vpsubw 1216(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 1216(%rdi) -vmovdqu 1182(%rsp), %ymm0 -vpsubw 1184(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 1184(%rdi) -vmovdqu 1150(%rsp), %ymm0 -vpsubw 1152(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 1152(%rdi) -vmovdqu 1118(%rsp), %ymm0 -vpsubw 1120(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 1120(%rdi) -vmovdqu 1086(%rsp), %ymm0 -vpsubw 1088(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 1088(%rdi) -vmovdqu 1054(%rsp), %ymm0 -vpsubw 1056(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 1056(%rdi) -vmovdqu 1022(%rsp), %ymm0 -vpsubw 1024(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 1024(%rdi) -vmovdqu 990(%rsp), %ymm0 -vpsubw 992(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 992(%rdi) -vmovdqu 958(%rsp), %ymm0 -vpsubw 960(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 960(%rdi) -vmovdqu 926(%rsp), %ymm0 -vpsubw 928(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 928(%rdi) -vmovdqu 894(%rsp), %ymm0 -vpsubw 896(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 896(%rdi) -vmovdqu 862(%rsp), %ymm0 -vpsubw 864(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 864(%rdi) -vmovdqu 830(%rsp), %ymm0 -vpsubw 832(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 832(%rdi) -vmovdqu 798(%rsp), %ymm0 -vpsubw 800(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 800(%rdi) -vmovdqu 766(%rsp), %ymm0 -vpsubw 768(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 768(%rdi) -vmovdqu 734(%rsp), %ymm0 -vpsubw 736(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 736(%rdi) -vmovdqu 702(%rsp), %ymm0 -vpsubw 704(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 704(%rdi) -vmovdqu 670(%rsp), %ymm0 -vpsubw 672(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 672(%rdi) -vmovdqu 638(%rsp), %ymm0 -vpsubw 640(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 640(%rdi) -vmovdqu 606(%rsp), %ymm0 -vpsubw 608(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 608(%rdi) -vmovdqu 574(%rsp), %ymm0 -vpsubw 576(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 576(%rdi) -vmovdqu 542(%rsp), %ymm0 -vpsubw 544(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 544(%rdi) -vmovdqu 510(%rsp), %ymm0 -vpsubw 512(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 512(%rdi) -vmovdqu 478(%rsp), %ymm0 -vpsubw 480(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 480(%rdi) -vmovdqu 446(%rsp), %ymm0 -vpsubw 448(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 448(%rdi) -vmovdqu 414(%rsp), %ymm0 -vpsubw 416(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 416(%rdi) -vmovdqu 382(%rsp), %ymm0 -vpsubw 384(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 384(%rdi) -vmovdqu 350(%rsp), %ymm0 -vpsubw 352(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 352(%rdi) -vmovdqu 318(%rsp), %ymm0 -vpsubw 320(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 320(%rdi) -vmovdqu 286(%rsp), %ymm0 -vpsubw 288(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 288(%rdi) -vmovdqu 254(%rsp), %ymm0 -vpsubw 256(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 256(%rdi) -vmovdqu 222(%rsp), %ymm0 -vpsubw 224(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 224(%rdi) -vmovdqu 190(%rsp), %ymm0 -vpsubw 192(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 192(%rdi) -vmovdqu 158(%rsp), %ymm0 -vpsubw 160(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 160(%rdi) -vmovdqu 126(%rsp), %ymm0 -vpsubw 128(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 128(%rdi) -vmovdqu 94(%rsp), %ymm0 -vpsubw 96(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 96(%rdi) -vmovdqu 62(%rsp), %ymm0 -vpsubw 64(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 64(%rdi) -vmovdqu 30(%rsp), %ymm0 -vpsubw 32(%rsp), %ymm0, %ymm1 -vmovdqa %ymm1, 32(%rdi) -vmovdqa 0(%rsp), %ymm3 -vpsrlq $48, %ymm3, %ymm0 -vpermq $147, %ymm0, %ymm0 -vpsllq $16, %ymm3, %ymm2 -vpxor %ymm0, %ymm2, %ymm2 -vpsubw %ymm3, %ymm2, %ymm3 -vpand mask_omit_lowest(%rip), %ymm3, %ymm3 -vpxor %ymm3, %ymm4, %ymm3 -vmovdqa %ymm3, 0(%rdi) -mov %r8, %rsp -ret diff --git a/src/kem/ntru/ntruhrss701/avx2/poly_mod_3_Phi_n.s b/src/kem/ntru/ntruhrss701/avx2/poly_mod_3_Phi_n.s deleted file mode 100644 index e60c3dee..00000000 --- a/src/kem/ntru/ntruhrss701/avx2/poly_mod_3_Phi_n.s +++ /dev/null @@ -1,901 +0,0 @@ -.data -.p2align 5 -mask_ff: -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -mask_f: -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -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 -.text -.global PQCLEAN_NTRUHRSS701_AVX2_poly_mod_3_Phi_n -.global _PQCLEAN_NTRUHRSS701_AVX2_poly_mod_3_Phi_n -PQCLEAN_NTRUHRSS701_AVX2_poly_mod_3_Phi_n: -_PQCLEAN_NTRUHRSS701_AVX2_poly_mod_3_Phi_n: -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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -ret diff --git a/src/kem/ntru/ntruhrss701/avx2/poly_mod_q_Phi_n.s b/src/kem/ntru/ntruhrss701/avx2/poly_mod_q_Phi_n.s deleted file mode 100644 index 63a8960e..00000000 --- a/src/kem/ntru/ntruhrss701/avx2/poly_mod_q_Phi_n.s +++ /dev/null @@ -1,104 +0,0 @@ -.data -.p2align 5 -.text -.global PQCLEAN_NTRUHRSS701_AVX2_poly_mod_q_Phi_n -.global _PQCLEAN_NTRUHRSS701_AVX2_poly_mod_q_Phi_n -PQCLEAN_NTRUHRSS701_AVX2_poly_mod_q_Phi_n: -_PQCLEAN_NTRUHRSS701_AVX2_poly_mod_q_Phi_n: -vmovdqa 1376(%rdi), %ymm0 -vpermq $3, %ymm0, %ymm0 -vpslld $16, %ymm0, %ymm0 -vpsrld $16, %ymm0, %ymm1 -vpor %ymm0, %ymm1, %ymm0 -vbroadcastss %xmm0, %ymm0 -vxorpd %ymm1, %ymm1, %ymm1 -vpsubw %ymm0, %ymm1, %ymm0 -vpaddw 0(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 0(%rdi) -vpaddw 32(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 32(%rdi) -vpaddw 64(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 64(%rdi) -vpaddw 96(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 96(%rdi) -vpaddw 128(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 128(%rdi) -vpaddw 160(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 160(%rdi) -vpaddw 192(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 192(%rdi) -vpaddw 224(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 224(%rdi) -vpaddw 256(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 256(%rdi) -vpaddw 288(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 288(%rdi) -vpaddw 320(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 320(%rdi) -vpaddw 352(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 352(%rdi) -vpaddw 384(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 384(%rdi) -vpaddw 416(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 416(%rdi) -vpaddw 448(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 448(%rdi) -vpaddw 480(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 480(%rdi) -vpaddw 512(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 512(%rdi) -vpaddw 544(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 544(%rdi) -vpaddw 576(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 576(%rdi) -vpaddw 608(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 608(%rdi) -vpaddw 640(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 640(%rdi) -vpaddw 672(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 672(%rdi) -vpaddw 704(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 704(%rdi) -vpaddw 736(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 736(%rdi) -vpaddw 768(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 768(%rdi) -vpaddw 800(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 800(%rdi) -vpaddw 832(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 832(%rdi) -vpaddw 864(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 864(%rdi) -vpaddw 896(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 896(%rdi) -vpaddw 928(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 928(%rdi) -vpaddw 960(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 960(%rdi) -vpaddw 992(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 992(%rdi) -vpaddw 1024(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1024(%rdi) -vpaddw 1056(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1056(%rdi) -vpaddw 1088(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1088(%rdi) -vpaddw 1120(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1120(%rdi) -vpaddw 1152(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1152(%rdi) -vpaddw 1184(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1184(%rdi) -vpaddw 1216(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1216(%rdi) -vpaddw 1248(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1248(%rdi) -vpaddw 1280(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1280(%rdi) -vpaddw 1312(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1312(%rdi) -vpaddw 1344(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1344(%rdi) -vpaddw 1376(%rdi), %ymm0, %ymm1 -vmovdqa %ymm1, 1376(%rdi) -ret diff --git a/src/kem/ntru/ntruhrss701/avx2/poly_r2_inv.c b/src/kem/ntru/ntruhrss701/avx2/poly_r2_inv.c deleted file mode 100644 index ecca974e..00000000 --- a/src/kem/ntru/ntruhrss701/avx2/poly_r2_inv.c +++ /dev/null @@ -1,73 +0,0 @@ -#include "poly_r2_inv.h" -#include "poly.h" - -// TODO this costs 1764 cycles.. (implementing as S3_to_bytes results in 2108) -// This can be implemented nicely in assembly using pdep / pext functions -void PQCLEAN_NTRUHRSS701_AVX2_poly_R2_tobytes(unsigned char *out, const poly *a) { - int i, j, k; - for (i = 0; i < 12; i++) { - for (k = 0; k < 8; k++) { - out[i * 8 + k] = 0; - for (j = 0; j < 8; j++) { - if ((i * 8 + k) * 8 + j < NTRU_N) { - out[i * 8 + k] |= (a->coeffs[(i * 8 + k) * 8 + j] & 1) << j; - } - } - } - } -} - -void PQCLEAN_NTRUHRSS701_AVX2_poly_R2_frombytes(poly *a, const unsigned char *in) { - int i, j, k; - for (i = 0; i < 12; i++) { - for (k = 0; k < 8; k++) { - for (j = 0; j < 8; j++) { - if ((i * 8 + k) * 8 + j < NTRU_N) { - a->coeffs[(i * 8 + k) * 8 + j] = (in[i * 8 + k] >> j) & 1; - } - } - } - } -} - -void PQCLEAN_NTRUHRSS701_AVX2_poly_R2_inv(poly *r, const poly *a) { - union { - unsigned char s[96]; - __m256i s_x32[3]; - } squares[13]; -#define s(x) squares[(x)].s - - // This relies on the following addition chain: - // 1, 2, 3, 6, 12, 15, 27, 42, 84, 168, 336, 672, 699 - - PQCLEAN_NTRUHRSS701_AVX2_poly_R2_tobytes(s(0), a); // TODO alignment - - PQCLEAN_NTRUHRSS701_AVX2_square_1_701(s(1), s(0)); - PQCLEAN_NTRUHRSS701_AVX2_poly_R2_mul(s(1), s(1), s(0)); - PQCLEAN_NTRUHRSS701_AVX2_square_1_701(s(2), s(1)); - PQCLEAN_NTRUHRSS701_AVX2_poly_R2_mul(s(2), s(2), s(0)); - PQCLEAN_NTRUHRSS701_AVX2_square_3_701(s(3), s(2)); - PQCLEAN_NTRUHRSS701_AVX2_poly_R2_mul(s(3), s(3), s(2)); - PQCLEAN_NTRUHRSS701_AVX2_square_6_701(s(4), s(3)); - PQCLEAN_NTRUHRSS701_AVX2_poly_R2_mul(s(4), s(4), s(3)); - PQCLEAN_NTRUHRSS701_AVX2_square_3_701(s(5), s(4)); - PQCLEAN_NTRUHRSS701_AVX2_poly_R2_mul(s(5), s(5), s(2)); - PQCLEAN_NTRUHRSS701_AVX2_square_12_701(s(6), s(5)); - PQCLEAN_NTRUHRSS701_AVX2_poly_R2_mul(s(6), s(6), s(4)); - PQCLEAN_NTRUHRSS701_AVX2_square_15_701(s(7), s(6)); - PQCLEAN_NTRUHRSS701_AVX2_poly_R2_mul(s(7), s(7), s(5)); - PQCLEAN_NTRUHRSS701_AVX2_square_42_701(s(8), s(7)); - PQCLEAN_NTRUHRSS701_AVX2_poly_R2_mul(s(8), s(8), s(7)); - PQCLEAN_NTRUHRSS701_AVX2_square_84_701(s(9), s(8)); - PQCLEAN_NTRUHRSS701_AVX2_poly_R2_mul(s(9), s(9), s(8)); - PQCLEAN_NTRUHRSS701_AVX2_square_168_701(s(10), s(9)); - PQCLEAN_NTRUHRSS701_AVX2_poly_R2_mul(s(10), s(10), s(9)); - PQCLEAN_NTRUHRSS701_AVX2_square_336_701(s(11), s(10)); - PQCLEAN_NTRUHRSS701_AVX2_poly_R2_mul(s(11), s(11), s(10)); - PQCLEAN_NTRUHRSS701_AVX2_square_27_701(s(12), s(11)); - PQCLEAN_NTRUHRSS701_AVX2_poly_R2_mul(s(12), s(12), s(6)); - PQCLEAN_NTRUHRSS701_AVX2_square_1_701(s(0), s(12)); - - PQCLEAN_NTRUHRSS701_AVX2_poly_R2_frombytes(r, s(0)); -#undef s -} diff --git a/src/kem/ntru/ntruhrss701/avx2/poly_r2_inv.h b/src/kem/ntru/ntruhrss701/avx2/poly_r2_inv.h deleted file mode 100644 index 540d7a09..00000000 --- a/src/kem/ntru/ntruhrss701/avx2/poly_r2_inv.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef POLY_R2_INV_H -#define POLY_R2_INV_H - -#include "poly.h" - -void PQCLEAN_NTRUHRSS701_AVX2_poly_R2_tobytes(unsigned char *out, const poly *a); -void PQCLEAN_NTRUHRSS701_AVX2_poly_R2_frombytes(poly *a, const unsigned char *in); - -extern void PQCLEAN_NTRUHRSS701_AVX2_square_1_701(unsigned char *out, const unsigned char *a); -extern void PQCLEAN_NTRUHRSS701_AVX2_square_3_701(unsigned char *out, const unsigned char *a); -extern void PQCLEAN_NTRUHRSS701_AVX2_square_6_701(unsigned char *out, const unsigned char *a); -extern void PQCLEAN_NTRUHRSS701_AVX2_square_12_701(unsigned char *out, const unsigned char *a); -extern void PQCLEAN_NTRUHRSS701_AVX2_square_15_701(unsigned char *out, const unsigned char *a); -extern void PQCLEAN_NTRUHRSS701_AVX2_square_27_701(unsigned char *out, const unsigned char *a); -extern void PQCLEAN_NTRUHRSS701_AVX2_square_42_701(unsigned char *out, const unsigned char *a); -extern void PQCLEAN_NTRUHRSS701_AVX2_square_84_701(unsigned char *out, const unsigned char *a); -extern void PQCLEAN_NTRUHRSS701_AVX2_square_168_701(unsigned char *out, const unsigned char *a); -extern void PQCLEAN_NTRUHRSS701_AVX2_square_336_701(unsigned char *out, const unsigned char *a); - -extern void PQCLEAN_NTRUHRSS701_AVX2_poly_R2_mul(unsigned char *out, const unsigned char *a, - const unsigned char *b); -#endif diff --git a/src/kem/ntru/ntruhrss701/avx2/poly_r2_mul.s b/src/kem/ntru/ntruhrss701/avx2/poly_r2_mul.s deleted file mode 100644 index 70a55ea5..00000000 --- a/src/kem/ntru/ntruhrss701/avx2/poly_r2_mul.s +++ /dev/null @@ -1,466 +0,0 @@ -.data -.p2align 5 -mask1100: -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -mask0110: -.word 0 -.word 0 -.word 0 -.word 0 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 0 -.word 0 -.word 0 -.word 0 -mask0011: -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -mask1000: -.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 65535 -.word 65535 -.word 65535 -.word 65535 -mask0111: -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 0 -.word 0 -.word 0 -.word 0 -low189: -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 8191 -.word 0 -.word 0 -.word 0 -.word 0 -.text -.global PQCLEAN_NTRUHRSS701_AVX2_poly_R2_mul -.global _PQCLEAN_NTRUHRSS701_AVX2_poly_R2_mul -PQCLEAN_NTRUHRSS701_AVX2_poly_R2_mul: -_PQCLEAN_NTRUHRSS701_AVX2_poly_R2_mul: -vmovdqa 0(%rsi), %ymm0 -vmovdqa 32(%rsi), %ymm1 -vmovdqa 0(%rdx), %ymm3 -vmovdqa 32(%rdx), %ymm4 -vpxor %ymm0, %ymm1, %ymm6 -vpxor %ymm3, %ymm4, %ymm7 -vextracti128 $1, %ymm0, %xmm11 -vextracti128 $1, %ymm3, %xmm12 -vpclmulqdq $1, %xmm11, %xmm12, %xmm5 -vpclmulqdq $16, %xmm11, %xmm12, %xmm14 -vpclmulqdq $17, %xmm11, %xmm12, %xmm15 -vpxor %xmm5, %xmm14, %xmm14 -vpclmulqdq $0, %xmm11, %xmm12, %xmm5 -vpermq $16, %ymm14, %ymm14 -vinserti128 $1, %xmm15, %ymm15, %ymm15 -vpand mask0011(%rip), %ymm5, %ymm5 -vpand mask0110(%rip), %ymm14, %ymm14 -vpand mask1100(%rip), %ymm15, %ymm15 -vpxor %ymm5, %ymm14, %ymm14 -vpxor %ymm14, %ymm15, %ymm5 -vpxor %xmm0, %xmm11, %xmm11 -vpxor %xmm3, %xmm12, %xmm12 -vpclmulqdq $1, %xmm11, %xmm12, %xmm13 -vpclmulqdq $16, %xmm11, %xmm12, %xmm14 -vpclmulqdq $17, %xmm11, %xmm12, %xmm15 -vpxor %xmm13, %xmm14, %xmm14 -vpclmulqdq $0, %xmm11, %xmm12, %xmm13 -vpermq $16, %ymm14, %ymm14 -vinserti128 $1, %xmm15, %ymm15, %ymm15 -vpand mask0011(%rip), %ymm13, %ymm13 -vpand mask0110(%rip), %ymm14, %ymm14 -vpand mask1100(%rip), %ymm15, %ymm15 -vpxor %ymm13, %ymm14, %ymm14 -vpxor %ymm14, %ymm15, %ymm13 -vpclmulqdq $1, %xmm0, %xmm3, %xmm2 -vpclmulqdq $16, %xmm0, %xmm3, %xmm14 -vpclmulqdq $17, %xmm0, %xmm3, %xmm15 -vpxor %xmm2, %xmm14, %xmm14 -vpclmulqdq $0, %xmm0, %xmm3, %xmm2 -vpermq $16, %ymm14, %ymm14 -vinserti128 $1, %xmm15, %ymm15, %ymm15 -vpand mask0011(%rip), %ymm2, %ymm2 -vpand mask0110(%rip), %ymm14, %ymm14 -vpand mask1100(%rip), %ymm15, %ymm15 -vpxor %ymm2, %ymm14, %ymm14 -vpxor %ymm14, %ymm15, %ymm2 -vpxor %ymm13, %ymm5, %ymm13 -vpxor %ymm13, %ymm2, %ymm13 -vpxor %ymm11, %ymm11, %ymm11 -vextracti128 $1, %ymm13, %xmm11 -vpxor %ymm5, %ymm11, %ymm5 -vpxor %ymm11, %ymm11, %ymm11 -vinserti128 $1, %xmm13, %ymm11, %ymm11 -vpxor %ymm11, %ymm2, %ymm2 -vextracti128 $1, %ymm6, %xmm11 -vextracti128 $1, %ymm7, %xmm12 -vpclmulqdq $1, %xmm11, %xmm12, %xmm9 -vpclmulqdq $16, %xmm11, %xmm12, %xmm14 -vpclmulqdq $17, %xmm11, %xmm12, %xmm15 -vpxor %xmm9, %xmm14, %xmm14 -vpclmulqdq $0, %xmm11, %xmm12, %xmm9 -vpermq $16, %ymm14, %ymm14 -vinserti128 $1, %xmm15, %ymm15, %ymm15 -vpand mask0011(%rip), %ymm9, %ymm9 -vpand mask0110(%rip), %ymm14, %ymm14 -vpand mask1100(%rip), %ymm15, %ymm15 -vpxor %ymm9, %ymm14, %ymm14 -vpxor %ymm14, %ymm15, %ymm9 -vpxor %xmm6, %xmm11, %xmm11 -vpxor %xmm7, %xmm12, %xmm12 -vpclmulqdq $1, %xmm11, %xmm12, %xmm13 -vpclmulqdq $16, %xmm11, %xmm12, %xmm14 -vpclmulqdq $17, %xmm11, %xmm12, %xmm15 -vpxor %xmm13, %xmm14, %xmm14 -vpclmulqdq $0, %xmm11, %xmm12, %xmm13 -vpermq $16, %ymm14, %ymm14 -vinserti128 $1, %xmm15, %ymm15, %ymm15 -vpand mask0011(%rip), %ymm13, %ymm13 -vpand mask0110(%rip), %ymm14, %ymm14 -vpand mask1100(%rip), %ymm15, %ymm15 -vpxor %ymm13, %ymm14, %ymm14 -vpxor %ymm14, %ymm15, %ymm13 -vpclmulqdq $1, %xmm6, %xmm7, %xmm8 -vpclmulqdq $16, %xmm6, %xmm7, %xmm14 -vpclmulqdq $17, %xmm6, %xmm7, %xmm15 -vpxor %xmm8, %xmm14, %xmm14 -vpclmulqdq $0, %xmm6, %xmm7, %xmm8 -vpermq $16, %ymm14, %ymm14 -vinserti128 $1, %xmm15, %ymm15, %ymm15 -vpand mask0011(%rip), %ymm8, %ymm8 -vpand mask0110(%rip), %ymm14, %ymm14 -vpand mask1100(%rip), %ymm15, %ymm15 -vpxor %ymm8, %ymm14, %ymm14 -vpxor %ymm14, %ymm15, %ymm8 -vpxor %ymm13, %ymm9, %ymm13 -vpxor %ymm13, %ymm8, %ymm13 -vpxor %ymm11, %ymm11, %ymm11 -vextracti128 $1, %ymm13, %xmm11 -vpxor %ymm9, %ymm11, %ymm9 -vpxor %ymm11, %ymm11, %ymm11 -vinserti128 $1, %xmm13, %ymm11, %ymm11 -vpxor %ymm11, %ymm8, %ymm8 -vpxor %ymm8, %ymm2, %ymm0 -vpxor %ymm9, %ymm5, %ymm3 -vpxor %ymm5, %ymm0, %ymm0 -vpxor %ymm3, %ymm8, %ymm8 -vmovdqa 64(%rsi), %ymm10 -vmovdqa 64(%rdx), %ymm15 -vpxor %ymm6, %ymm10, %ymm6 -vpxor %ymm7, %ymm15, %ymm7 -vextracti128 $1, %ymm6, %xmm11 -vextracti128 $1, %ymm7, %xmm12 -vpclmulqdq $1, %xmm11, %xmm12, %xmm5 -vpclmulqdq $16, %xmm11, %xmm12, %xmm13 -vpclmulqdq $17, %xmm11, %xmm12, %xmm14 -vpxor %xmm5, %xmm13, %xmm13 -vpclmulqdq $0, %xmm11, %xmm12, %xmm5 -vpermq $16, %ymm13, %ymm13 -vinserti128 $1, %xmm14, %ymm14, %ymm14 -vpand mask0011(%rip), %ymm5, %ymm5 -vpand mask0110(%rip), %ymm13, %ymm13 -vpand mask1100(%rip), %ymm14, %ymm14 -vpxor %ymm5, %ymm13, %ymm13 -vpxor %ymm13, %ymm14, %ymm5 -vpclmulqdq $1, %xmm6, %xmm7, %xmm3 -vpclmulqdq $16, %xmm6, %xmm7, %xmm13 -vpclmulqdq $17, %xmm6, %xmm7, %xmm14 -vpxor %xmm3, %xmm13, %xmm13 -vpclmulqdq $0, %xmm6, %xmm7, %xmm3 -vpermq $16, %ymm13, %ymm13 -vinserti128 $1, %xmm14, %ymm14, %ymm14 -vpand mask0011(%rip), %ymm3, %ymm3 -vpand mask0110(%rip), %ymm13, %ymm13 -vpand mask1100(%rip), %ymm14, %ymm14 -vpxor %ymm3, %ymm13, %ymm13 -vpxor %ymm13, %ymm14, %ymm3 -vpxor %xmm6, %xmm11, %xmm11 -vpxor %xmm7, %xmm12, %xmm12 -vpclmulqdq $1, %xmm11, %xmm12, %xmm13 -vpclmulqdq $16, %xmm11, %xmm12, %xmm6 -vpclmulqdq $17, %xmm11, %xmm12, %xmm7 -vpxor %xmm13, %xmm6, %xmm6 -vpclmulqdq $0, %xmm11, %xmm12, %xmm13 -vpermq $16, %ymm6, %ymm6 -vinserti128 $1, %xmm7, %ymm7, %ymm7 -vpand mask0011(%rip), %ymm13, %ymm13 -vpand mask0110(%rip), %ymm6, %ymm6 -vpand mask1100(%rip), %ymm7, %ymm7 -vpxor %ymm13, %ymm6, %ymm6 -vpxor %ymm6, %ymm7, %ymm13 -vpxor %ymm13, %ymm5, %ymm13 -vpxor %ymm13, %ymm3, %ymm13 -vpxor %ymm11, %ymm11, %ymm11 -vextracti128 $1, %ymm13, %xmm11 -vpxor %ymm5, %ymm11, %ymm5 -vpxor %ymm11, %ymm11, %ymm11 -vinserti128 $1, %xmm13, %ymm11, %ymm11 -vpxor %ymm11, %ymm3, %ymm3 -vpxor %ymm3, %ymm8, %ymm8 -vpxor %ymm5, %ymm9, %ymm9 -vpxor %ymm1, %ymm10, %ymm6 -vpxor %ymm4, %ymm15, %ymm7 -vextracti128 $1, %ymm6, %xmm11 -vextracti128 $1, %ymm7, %xmm12 -vpclmulqdq $1, %xmm11, %xmm12, %xmm5 -vpclmulqdq $16, %xmm11, %xmm12, %xmm13 -vpclmulqdq $17, %xmm11, %xmm12, %xmm14 -vpxor %xmm5, %xmm13, %xmm13 -vpclmulqdq $0, %xmm11, %xmm12, %xmm5 -vpermq $16, %ymm13, %ymm13 -vinserti128 $1, %xmm14, %ymm14, %ymm14 -vpand mask0011(%rip), %ymm5, %ymm5 -vpand mask0110(%rip), %ymm13, %ymm13 -vpand mask1100(%rip), %ymm14, %ymm14 -vpxor %ymm5, %ymm13, %ymm13 -vpxor %ymm13, %ymm14, %ymm5 -vpclmulqdq $1, %xmm6, %xmm7, %xmm3 -vpclmulqdq $16, %xmm6, %xmm7, %xmm13 -vpclmulqdq $17, %xmm6, %xmm7, %xmm14 -vpxor %xmm3, %xmm13, %xmm13 -vpclmulqdq $0, %xmm6, %xmm7, %xmm3 -vpermq $16, %ymm13, %ymm13 -vinserti128 $1, %xmm14, %ymm14, %ymm14 -vpand mask0011(%rip), %ymm3, %ymm3 -vpand mask0110(%rip), %ymm13, %ymm13 -vpand mask1100(%rip), %ymm14, %ymm14 -vpxor %ymm3, %ymm13, %ymm13 -vpxor %ymm13, %ymm14, %ymm3 -vpxor %xmm6, %xmm11, %xmm11 -vpxor %xmm7, %xmm12, %xmm12 -vpclmulqdq $1, %xmm11, %xmm12, %xmm13 -vpclmulqdq $16, %xmm11, %xmm12, %xmm6 -vpclmulqdq $17, %xmm11, %xmm12, %xmm7 -vpxor %xmm13, %xmm6, %xmm6 -vpclmulqdq $0, %xmm11, %xmm12, %xmm13 -vpermq $16, %ymm6, %ymm6 -vinserti128 $1, %xmm7, %ymm7, %ymm7 -vpand mask0011(%rip), %ymm13, %ymm13 -vpand mask0110(%rip), %ymm6, %ymm6 -vpand mask1100(%rip), %ymm7, %ymm7 -vpxor %ymm13, %ymm6, %ymm6 -vpxor %ymm6, %ymm7, %ymm13 -vpxor %ymm13, %ymm5, %ymm13 -vpxor %ymm13, %ymm3, %ymm13 -vpxor %ymm11, %ymm11, %ymm11 -vextracti128 $1, %ymm13, %xmm11 -vpxor %ymm5, %ymm11, %ymm5 -vpxor %ymm11, %ymm11, %ymm11 -vinserti128 $1, %xmm13, %ymm11, %ymm11 -vpxor %ymm11, %ymm3, %ymm3 -vpxor %ymm3, %ymm8, %ymm8 -vpxor %ymm5, %ymm9, %ymm9 -vextracti128 $1, %ymm1, %xmm11 -vextracti128 $1, %ymm4, %xmm12 -vpclmulqdq $1, %xmm11, %xmm12, %xmm7 -vpclmulqdq $16, %xmm11, %xmm12, %xmm13 -vpclmulqdq $17, %xmm11, %xmm12, %xmm14 -vpxor %xmm7, %xmm13, %xmm13 -vpclmulqdq $0, %xmm11, %xmm12, %xmm7 -vpermq $16, %ymm13, %ymm13 -vinserti128 $1, %xmm14, %ymm14, %ymm14 -vpand mask0011(%rip), %ymm7, %ymm7 -vpand mask0110(%rip), %ymm13, %ymm13 -vpand mask1100(%rip), %ymm14, %ymm14 -vpxor %ymm7, %ymm13, %ymm13 -vpxor %ymm13, %ymm14, %ymm7 -vpclmulqdq $1, %xmm1, %xmm4, %xmm6 -vpclmulqdq $16, %xmm1, %xmm4, %xmm13 -vpclmulqdq $17, %xmm1, %xmm4, %xmm14 -vpxor %xmm6, %xmm13, %xmm13 -vpclmulqdq $0, %xmm1, %xmm4, %xmm6 -vpermq $16, %ymm13, %ymm13 -vinserti128 $1, %xmm14, %ymm14, %ymm14 -vpand mask0011(%rip), %ymm6, %ymm6 -vpand mask0110(%rip), %ymm13, %ymm13 -vpand mask1100(%rip), %ymm14, %ymm14 -vpxor %ymm6, %ymm13, %ymm13 -vpxor %ymm13, %ymm14, %ymm6 -vpxor %xmm1, %xmm11, %xmm11 -vpxor %xmm4, %xmm12, %xmm12 -vpclmulqdq $1, %xmm11, %xmm12, %xmm13 -vpclmulqdq $16, %xmm11, %xmm12, %xmm1 -vpclmulqdq $17, %xmm11, %xmm12, %xmm4 -vpxor %xmm13, %xmm1, %xmm1 -vpclmulqdq $0, %xmm11, %xmm12, %xmm13 -vpermq $16, %ymm1, %ymm1 -vinserti128 $1, %xmm4, %ymm4, %ymm4 -vpand mask0011(%rip), %ymm13, %ymm13 -vpand mask0110(%rip), %ymm1, %ymm1 -vpand mask1100(%rip), %ymm4, %ymm4 -vpxor %ymm13, %ymm1, %ymm1 -vpxor %ymm1, %ymm4, %ymm13 -vpxor %ymm13, %ymm7, %ymm13 -vpxor %ymm13, %ymm6, %ymm13 -vpxor %ymm11, %ymm11, %ymm11 -vextracti128 $1, %ymm13, %xmm11 -vpxor %ymm7, %ymm11, %ymm7 -vpxor %ymm11, %ymm11, %ymm11 -vinserti128 $1, %xmm13, %ymm11, %ymm11 -vpxor %ymm11, %ymm6, %ymm6 -vpxor %ymm6, %ymm0, %ymm0 -vpxor %ymm7, %ymm8, %ymm8 -vpxor %ymm6, %ymm3, %ymm3 -vpxor %ymm7, %ymm5, %ymm5 -vextracti128 $1, %ymm10, %xmm11 -vextracti128 $1, %ymm15, %xmm12 -vpclmulqdq $1, %xmm11, %xmm12, %xmm4 -vpclmulqdq $16, %xmm11, %xmm12, %xmm13 -vpclmulqdq $17, %xmm11, %xmm12, %xmm14 -vpxor %xmm4, %xmm13, %xmm13 -vpclmulqdq $0, %xmm11, %xmm12, %xmm4 -vpermq $16, %ymm13, %ymm13 -vinserti128 $1, %xmm14, %ymm14, %ymm14 -vpand mask0011(%rip), %ymm4, %ymm4 -vpand mask0110(%rip), %ymm13, %ymm13 -vpand mask1100(%rip), %ymm14, %ymm14 -vpxor %ymm4, %ymm13, %ymm13 -vpxor %ymm13, %ymm14, %ymm4 -vpclmulqdq $1, %xmm10, %xmm15, %xmm1 -vpclmulqdq $16, %xmm10, %xmm15, %xmm13 -vpclmulqdq $17, %xmm10, %xmm15, %xmm14 -vpxor %xmm1, %xmm13, %xmm13 -vpclmulqdq $0, %xmm10, %xmm15, %xmm1 -vpermq $16, %ymm13, %ymm13 -vinserti128 $1, %xmm14, %ymm14, %ymm14 -vpand mask0011(%rip), %ymm1, %ymm1 -vpand mask0110(%rip), %ymm13, %ymm13 -vpand mask1100(%rip), %ymm14, %ymm14 -vpxor %ymm1, %ymm13, %ymm13 -vpxor %ymm13, %ymm14, %ymm1 -vpxor %xmm10, %xmm11, %xmm11 -vpxor %xmm15, %xmm12, %xmm12 -vpclmulqdq $1, %xmm11, %xmm12, %xmm13 -vpclmulqdq $16, %xmm11, %xmm12, %xmm10 -vpclmulqdq $17, %xmm11, %xmm12, %xmm15 -vpxor %xmm13, %xmm10, %xmm10 -vpclmulqdq $0, %xmm11, %xmm12, %xmm13 -vpermq $16, %ymm10, %ymm10 -vinserti128 $1, %xmm15, %ymm15, %ymm15 -vpand mask0011(%rip), %ymm13, %ymm13 -vpand mask0110(%rip), %ymm10, %ymm10 -vpand mask1100(%rip), %ymm15, %ymm15 -vpxor %ymm13, %ymm10, %ymm10 -vpxor %ymm10, %ymm15, %ymm13 -vpxor %ymm13, %ymm4, %ymm13 -vpxor %ymm13, %ymm1, %ymm13 -vpxor %ymm11, %ymm11, %ymm11 -vextracti128 $1, %ymm13, %xmm11 -vpxor %ymm4, %ymm11, %ymm4 -vpxor %ymm11, %ymm11, %ymm11 -vinserti128 $1, %xmm13, %ymm11, %ymm11 -vpxor %ymm11, %ymm1, %ymm1 -vpxor %ymm1, %ymm3, %ymm3 -vpxor %ymm4, %ymm5, %ymm5 -vpxor %ymm9, %ymm3, %ymm3 -vpxor %ymm5, %ymm1, %ymm1 -vpand mask1100(%rip), %ymm8, %ymm13 -vpand mask0011(%rip), %ymm3, %ymm12 -vpxor %ymm12, %ymm13, %ymm12 -vpsrlq $61, %ymm12, %ymm12 -vpermq $78, %ymm12, %ymm12 -vpxor %ymm12, %ymm2, %ymm2 -vpand mask1000(%rip), %ymm8, %ymm12 -vpand mask0111(%rip), %ymm3, %ymm13 -vpxor %ymm12, %ymm13, %ymm12 -vpsllq $3, %ymm12, %ymm12 -vpermq $147, %ymm12, %ymm12 -vpxor %ymm12, %ymm2, %ymm2 -vpand mask1100(%rip), %ymm3, %ymm13 -vpand mask0011(%rip), %ymm1, %ymm12 -vpxor %ymm12, %ymm13, %ymm12 -vpsrlq $61, %ymm12, %ymm12 -vpermq $78, %ymm12, %ymm12 -vpxor %ymm12, %ymm0, %ymm0 -vpand mask1000(%rip), %ymm3, %ymm12 -vpand mask0111(%rip), %ymm1, %ymm13 -vpxor %ymm12, %ymm13, %ymm12 -vpsllq $3, %ymm12, %ymm12 -vpermq $147, %ymm12, %ymm12 -vpxor %ymm12, %ymm0, %ymm0 -vpand mask1100(%rip), %ymm1, %ymm13 -vpand mask0011(%rip), %ymm4, %ymm12 -vpxor %ymm12, %ymm13, %ymm12 -vpsrlq $61, %ymm12, %ymm12 -vpermq $78, %ymm12, %ymm12 -vpxor %ymm12, %ymm8, %ymm8 -vpand mask1000(%rip), %ymm1, %ymm12 -vpand mask0111(%rip), %ymm4, %ymm13 -vpxor %ymm12, %ymm13, %ymm12 -vpsllq $3, %ymm12, %ymm12 -vpermq $147, %ymm12, %ymm12 -vpxor %ymm12, %ymm8, %ymm8 -vpand low189(%rip), %ymm8, %ymm8 -vmovdqa %ymm2, 0(%rdi) -vmovdqa %ymm0, 32(%rdi) -vmovdqa %ymm8, 64(%rdi) -ret diff --git a/src/kem/ntru/ntruhrss701/avx2/poly_rq_mul.s b/src/kem/ntru/ntruhrss701/avx2/poly_rq_mul.s deleted file mode 100644 index 46c801a1..00000000 --- a/src/kem/ntru/ntruhrss701/avx2/poly_rq_mul.s +++ /dev/null @@ -1,8320 +0,0 @@ -.data -.p2align 5 -mask_low9words: -.word 0xffff -.word 0xffff -.word 0xffff -.word 0xffff -.word 0xffff -.word 0xffff -.word 0xffff -.word 0xffff -.word 0xffff -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -const3: -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -.word 3 -const9: -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -.word 9 -const0: -.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 0 -const729: -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -.word 729 -const3_inv: -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -.word 43691 -const5_inv: -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -.word 52429 -shuf48_16: -.byte 10 -.byte 11 -.byte 12 -.byte 13 -.byte 14 -.byte 15 -.byte 0 -.byte 1 -.byte 2 -.byte 3 -.byte 4 -.byte 5 -.byte 6 -.byte 7 -.byte 8 -.byte 9 -.byte 10 -.byte 11 -.byte 12 -.byte 13 -.byte 14 -.byte 15 -.byte 0 -.byte 1 -.byte 2 -.byte 3 -.byte 4 -.byte 5 -.byte 6 -.byte 7 -.byte 8 -.byte 9 -shuf48_12: -.byte 10 -.byte 11 -.byte 12 -.byte 13 -.byte 14 -.byte 15 -.byte 0 -.byte 1 -.byte 2 -.byte 3 -.byte 4 -.byte 5 -.byte 6 -.byte 7 -.byte 8 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 3 -.byte 4 -.byte 5 -.byte 6 -.byte 7 -.byte 0 -.byte 1 -shufmin1_mask3: -.byte 2 -.byte 3 -.byte 4 -.byte 5 -.byte 6 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -mask32_to_16: -.word 0xffff -.word 0x0 -.word 0xffff -.word 0x0 -.word 0xffff -.word 0x0 -.word 0xffff -.word 0x0 -.word 0xffff -.word 0x0 -.word 0xffff -.word 0x0 -.word 0xffff -.word 0x0 -.word 0xffff -.word 0x0 -mask5_3_5_3: -.word 0 -.word 0 -.word 0 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 0 -.word 0 -.word 0 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -mask3_5_3_5: -.word 65535 -.word 65535 -.word 65535 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 65535 -.word 65535 -.word 65535 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -mask3_5_4_3_1: -.word 65535 -.word 65535 -.word 65535 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 65535 -.word 65535 -.word 65535 -.word 0 -mask_keephigh: -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 0 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.word 65535 -.text -.global PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_mul -.global _PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_mul -PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_mul: -_PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_mul: -push %r12 -mov %rsp, %r8 -andq $-32, %rsp -subq $6144, %rsp -mov %rsp, %rax -subq $6144, %rsp -mov %rsp, %r11 -subq $12288, %rsp -mov %rsp, %r12 -subq $512, %rsp -vmovdqa const3(%rip), %ymm3 -vmovdqu 0(%rsi), %ymm0 -vmovdqu 88(%rsi), %ymm1 -vmovdqu 176(%rsi), %ymm2 -vmovdqu 264(%rsi), %ymm12 -vmovdqu 1056(%rsi), %ymm4 -vmovdqu 1144(%rsi), %ymm5 -vmovdqu 1232(%rsi), %ymm6 -vmovdqu 1320(%rsi), %ymm7 -vmovdqu 352(%rsi), %ymm8 -vmovdqu 440(%rsi), %ymm9 -vmovdqu 528(%rsi), %ymm10 -vmovdqu 616(%rsi), %ymm11 -vmovdqa %ymm0, 0(%rax) -vmovdqa %ymm1, 96(%rax) -vpaddw %ymm0, %ymm1, %ymm14 -vmovdqa %ymm14, 192(%rax) -vmovdqa %ymm2, 288(%rax) -vmovdqa %ymm12, 384(%rax) -vpaddw %ymm2, %ymm12, %ymm14 -vmovdqa %ymm14, 480(%rax) -vpaddw %ymm0, %ymm2, %ymm14 -vmovdqa %ymm14, 576(%rax) -vpaddw %ymm1, %ymm12, %ymm15 -vmovdqa %ymm15, 672(%rax) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 768(%rax) -vmovdqa %ymm4, 5184(%rax) -vmovdqa %ymm5, 5280(%rax) -vpaddw %ymm4, %ymm5, %ymm14 -vmovdqa %ymm14, 5376(%rax) -vmovdqa %ymm6, 5472(%rax) -vmovdqa %ymm7, 5568(%rax) -vpaddw %ymm6, %ymm7, %ymm14 -vmovdqa %ymm14, 5664(%rax) -vpaddw %ymm4, %ymm6, %ymm14 -vmovdqa %ymm14, 5760(%rax) -vpaddw %ymm5, %ymm7, %ymm15 -vmovdqa %ymm15, 5856(%rax) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 5952(%rax) -vmovdqa %ymm0, 0(%rsp) -vmovdqa %ymm1, 32(%rsp) -vmovdqa %ymm2, 64(%rsp) -vmovdqa %ymm12, 96(%rsp) -vmovdqa %ymm8, 128(%rsp) -vmovdqa %ymm9, 160(%rsp) -vmovdqa %ymm10, 192(%rsp) -vmovdqa %ymm11, 224(%rsp) -vmovdqu 704(%rsi), %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm1 -vpaddw 128(%rsp), %ymm4, %ymm2 -vpaddw %ymm2, %ymm1, %ymm8 -vpsubw %ymm2, %ymm1, %ymm12 -vmovdqa %ymm0, 256(%rsp) -vmovdqu 792(%rsi), %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm1 -vpaddw 160(%rsp), %ymm5, %ymm2 -vpaddw %ymm2, %ymm1, %ymm9 -vpsubw %ymm2, %ymm1, %ymm13 -vmovdqa %ymm0, 288(%rsp) -vmovdqu 880(%rsi), %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm1 -vpaddw 192(%rsp), %ymm6, %ymm2 -vpaddw %ymm2, %ymm1, %ymm10 -vpsubw %ymm2, %ymm1, %ymm14 -vmovdqa %ymm0, 320(%rsp) -vmovdqu 968(%rsi), %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm1 -vpaddw 224(%rsp), %ymm7, %ymm2 -vpaddw %ymm2, %ymm1, %ymm11 -vpsubw %ymm2, %ymm1, %ymm15 -vmovdqa %ymm0, 352(%rsp) -vmovdqa %ymm8, 864(%rax) -vmovdqa %ymm9, 960(%rax) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 1056(%rax) -vmovdqa %ymm10, 1152(%rax) -vmovdqa %ymm11, 1248(%rax) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 1344(%rax) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 1440(%rax) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 1536(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 1632(%rax) -vmovdqa %ymm12, 1728(%rax) -vmovdqa %ymm13, 1824(%rax) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 1920(%rax) -vmovdqa %ymm14, 2016(%rax) -vmovdqa %ymm15, 2112(%rax) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 2208(%rax) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 2304(%rax) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 2400(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 2496(%rax) -vmovdqa 256(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm4, %ymm1 -vpaddw 128(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm8 -vpsubw %ymm1, %ymm0, %ymm12 -vmovdqa 288(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm5, %ymm1 -vpaddw 160(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm9 -vpsubw %ymm1, %ymm0, %ymm13 -vmovdqa 320(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm6, %ymm1 -vpaddw 192(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm10 -vpsubw %ymm1, %ymm0, %ymm14 -vmovdqa 352(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm7, %ymm1 -vpaddw 224(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm11 -vpsubw %ymm1, %ymm0, %ymm15 -vmovdqa %ymm8, 2592(%rax) -vmovdqa %ymm9, 2688(%rax) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 2784(%rax) -vmovdqa %ymm10, 2880(%rax) -vmovdqa %ymm11, 2976(%rax) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 3072(%rax) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 3168(%rax) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 3264(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 3360(%rax) -vmovdqa %ymm12, 3456(%rax) -vmovdqa %ymm13, 3552(%rax) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 3648(%rax) -vmovdqa %ymm14, 3744(%rax) -vmovdqa %ymm15, 3840(%rax) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 3936(%rax) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 4032(%rax) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 4128(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 4224(%rax) -vpmullw %ymm3, %ymm4, %ymm0 -vpaddw 256(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 128(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm12 -vpmullw %ymm3, %ymm5, %ymm0 -vpaddw 288(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 160(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm13 -vpmullw %ymm3, %ymm6, %ymm0 -vpaddw 320(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 192(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm14 -vpmullw %ymm3, %ymm7, %ymm0 -vpaddw 352(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 224(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm15 -vmovdqa %ymm12, 4320(%rax) -vmovdqa %ymm13, 4416(%rax) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 4512(%rax) -vmovdqa %ymm14, 4608(%rax) -vmovdqa %ymm15, 4704(%rax) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 4800(%rax) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 4896(%rax) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 4992(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 5088(%rax) -vmovdqu 32(%rsi), %ymm0 -vmovdqu 120(%rsi), %ymm1 -vmovdqu 208(%rsi), %ymm2 -vmovdqu 296(%rsi), %ymm12 -vmovdqu 1088(%rsi), %ymm4 -vmovdqu 1176(%rsi), %ymm5 -vmovdqu 1264(%rsi), %ymm6 -vmovdqu 1352(%rsi), %ymm7 -vmovdqu 384(%rsi), %ymm8 -vmovdqu 472(%rsi), %ymm9 -vmovdqu 560(%rsi), %ymm10 -vmovdqu 648(%rsi), %ymm11 -vmovdqa %ymm0, 32(%rax) -vmovdqa %ymm1, 128(%rax) -vpaddw %ymm0, %ymm1, %ymm14 -vmovdqa %ymm14, 224(%rax) -vmovdqa %ymm2, 320(%rax) -vmovdqa %ymm12, 416(%rax) -vpaddw %ymm2, %ymm12, %ymm14 -vmovdqa %ymm14, 512(%rax) -vpaddw %ymm0, %ymm2, %ymm14 -vmovdqa %ymm14, 608(%rax) -vpaddw %ymm1, %ymm12, %ymm15 -vmovdqa %ymm15, 704(%rax) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 800(%rax) -vmovdqa %ymm4, 5216(%rax) -vmovdqa %ymm5, 5312(%rax) -vpaddw %ymm4, %ymm5, %ymm14 -vmovdqa %ymm14, 5408(%rax) -vmovdqa %ymm6, 5504(%rax) -vmovdqa %ymm7, 5600(%rax) -vpaddw %ymm6, %ymm7, %ymm14 -vmovdqa %ymm14, 5696(%rax) -vpaddw %ymm4, %ymm6, %ymm14 -vmovdqa %ymm14, 5792(%rax) -vpaddw %ymm5, %ymm7, %ymm15 -vmovdqa %ymm15, 5888(%rax) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 5984(%rax) -vmovdqa %ymm0, 0(%rsp) -vmovdqa %ymm1, 32(%rsp) -vmovdqa %ymm2, 64(%rsp) -vmovdqa %ymm12, 96(%rsp) -vmovdqa %ymm8, 128(%rsp) -vmovdqa %ymm9, 160(%rsp) -vmovdqa %ymm10, 192(%rsp) -vmovdqa %ymm11, 224(%rsp) -vmovdqu 736(%rsi), %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm1 -vpaddw 128(%rsp), %ymm4, %ymm2 -vpaddw %ymm2, %ymm1, %ymm8 -vpsubw %ymm2, %ymm1, %ymm12 -vmovdqa %ymm0, 256(%rsp) -vmovdqu 824(%rsi), %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm1 -vpaddw 160(%rsp), %ymm5, %ymm2 -vpaddw %ymm2, %ymm1, %ymm9 -vpsubw %ymm2, %ymm1, %ymm13 -vmovdqa %ymm0, 288(%rsp) -vmovdqu 912(%rsi), %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm1 -vpaddw 192(%rsp), %ymm6, %ymm2 -vpaddw %ymm2, %ymm1, %ymm10 -vpsubw %ymm2, %ymm1, %ymm14 -vmovdqa %ymm0, 320(%rsp) -vmovdqu 1000(%rsi), %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm1 -vpaddw 224(%rsp), %ymm7, %ymm2 -vpaddw %ymm2, %ymm1, %ymm11 -vpsubw %ymm2, %ymm1, %ymm15 -vmovdqa %ymm0, 352(%rsp) -vmovdqa %ymm8, 896(%rax) -vmovdqa %ymm9, 992(%rax) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 1088(%rax) -vmovdqa %ymm10, 1184(%rax) -vmovdqa %ymm11, 1280(%rax) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 1376(%rax) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 1472(%rax) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 1568(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 1664(%rax) -vmovdqa %ymm12, 1760(%rax) -vmovdqa %ymm13, 1856(%rax) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 1952(%rax) -vmovdqa %ymm14, 2048(%rax) -vmovdqa %ymm15, 2144(%rax) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 2240(%rax) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 2336(%rax) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 2432(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 2528(%rax) -vmovdqa 256(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm4, %ymm1 -vpaddw 128(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm8 -vpsubw %ymm1, %ymm0, %ymm12 -vmovdqa 288(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm5, %ymm1 -vpaddw 160(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm9 -vpsubw %ymm1, %ymm0, %ymm13 -vmovdqa 320(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm6, %ymm1 -vpaddw 192(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm10 -vpsubw %ymm1, %ymm0, %ymm14 -vmovdqa 352(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm7, %ymm1 -vpaddw 224(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm11 -vpsubw %ymm1, %ymm0, %ymm15 -vmovdqa %ymm8, 2624(%rax) -vmovdqa %ymm9, 2720(%rax) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 2816(%rax) -vmovdqa %ymm10, 2912(%rax) -vmovdqa %ymm11, 3008(%rax) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 3104(%rax) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 3200(%rax) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 3296(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 3392(%rax) -vmovdqa %ymm12, 3488(%rax) -vmovdqa %ymm13, 3584(%rax) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 3680(%rax) -vmovdqa %ymm14, 3776(%rax) -vmovdqa %ymm15, 3872(%rax) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 3968(%rax) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 4064(%rax) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 4160(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 4256(%rax) -vpmullw %ymm3, %ymm4, %ymm0 -vpaddw 256(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 128(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm12 -vpmullw %ymm3, %ymm5, %ymm0 -vpaddw 288(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 160(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm13 -vpmullw %ymm3, %ymm6, %ymm0 -vpaddw 320(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 192(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm14 -vpmullw %ymm3, %ymm7, %ymm0 -vpaddw 352(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 224(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm15 -vmovdqa %ymm12, 4352(%rax) -vmovdqa %ymm13, 4448(%rax) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 4544(%rax) -vmovdqa %ymm14, 4640(%rax) -vmovdqa %ymm15, 4736(%rax) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 4832(%rax) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 4928(%rax) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 5024(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 5120(%rax) -vmovdqu 64(%rsi), %ymm0 -vmovdqu 152(%rsi), %ymm1 -vmovdqu 240(%rsi), %ymm2 -vmovdqu 328(%rsi), %ymm12 -vmovdqu 1120(%rsi), %ymm4 -vmovdqu 1208(%rsi), %ymm5 -vmovdqu 1296(%rsi), %ymm6 -vmovdqu 1384(%rsi), %ymm7 -vpand mask_low9words(%rip), %ymm7, %ymm7 -vmovdqu 416(%rsi), %ymm8 -vmovdqu 504(%rsi), %ymm9 -vmovdqu 592(%rsi), %ymm10 -vmovdqu 680(%rsi), %ymm11 -vmovdqa %ymm0, 64(%rax) -vmovdqa %ymm1, 160(%rax) -vpaddw %ymm0, %ymm1, %ymm14 -vmovdqa %ymm14, 256(%rax) -vmovdqa %ymm2, 352(%rax) -vmovdqa %ymm12, 448(%rax) -vpaddw %ymm2, %ymm12, %ymm14 -vmovdqa %ymm14, 544(%rax) -vpaddw %ymm0, %ymm2, %ymm14 -vmovdqa %ymm14, 640(%rax) -vpaddw %ymm1, %ymm12, %ymm15 -vmovdqa %ymm15, 736(%rax) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 832(%rax) -vmovdqa %ymm4, 5248(%rax) -vmovdqa %ymm5, 5344(%rax) -vpaddw %ymm4, %ymm5, %ymm14 -vmovdqa %ymm14, 5440(%rax) -vmovdqa %ymm6, 5536(%rax) -vmovdqa %ymm7, 5632(%rax) -vpaddw %ymm6, %ymm7, %ymm14 -vmovdqa %ymm14, 5728(%rax) -vpaddw %ymm4, %ymm6, %ymm14 -vmovdqa %ymm14, 5824(%rax) -vpaddw %ymm5, %ymm7, %ymm15 -vmovdqa %ymm15, 5920(%rax) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 6016(%rax) -vmovdqa %ymm0, 0(%rsp) -vmovdqa %ymm1, 32(%rsp) -vmovdqa %ymm2, 64(%rsp) -vmovdqa %ymm12, 96(%rsp) -vmovdqa %ymm8, 128(%rsp) -vmovdqa %ymm9, 160(%rsp) -vmovdqa %ymm10, 192(%rsp) -vmovdqa %ymm11, 224(%rsp) -vmovdqu 768(%rsi), %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm1 -vpaddw 128(%rsp), %ymm4, %ymm2 -vpaddw %ymm2, %ymm1, %ymm8 -vpsubw %ymm2, %ymm1, %ymm12 -vmovdqa %ymm0, 256(%rsp) -vmovdqu 856(%rsi), %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm1 -vpaddw 160(%rsp), %ymm5, %ymm2 -vpaddw %ymm2, %ymm1, %ymm9 -vpsubw %ymm2, %ymm1, %ymm13 -vmovdqa %ymm0, 288(%rsp) -vmovdqu 944(%rsi), %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm1 -vpaddw 192(%rsp), %ymm6, %ymm2 -vpaddw %ymm2, %ymm1, %ymm10 -vpsubw %ymm2, %ymm1, %ymm14 -vmovdqa %ymm0, 320(%rsp) -vmovdqu 1032(%rsi), %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm1 -vpaddw 224(%rsp), %ymm7, %ymm2 -vpaddw %ymm2, %ymm1, %ymm11 -vpsubw %ymm2, %ymm1, %ymm15 -vmovdqa %ymm0, 352(%rsp) -vmovdqa %ymm8, 928(%rax) -vmovdqa %ymm9, 1024(%rax) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 1120(%rax) -vmovdqa %ymm10, 1216(%rax) -vmovdqa %ymm11, 1312(%rax) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 1408(%rax) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 1504(%rax) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 1600(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 1696(%rax) -vmovdqa %ymm12, 1792(%rax) -vmovdqa %ymm13, 1888(%rax) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 1984(%rax) -vmovdqa %ymm14, 2080(%rax) -vmovdqa %ymm15, 2176(%rax) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 2272(%rax) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 2368(%rax) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 2464(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 2560(%rax) -vmovdqa 256(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm4, %ymm1 -vpaddw 128(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm8 -vpsubw %ymm1, %ymm0, %ymm12 -vmovdqa 288(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm5, %ymm1 -vpaddw 160(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm9 -vpsubw %ymm1, %ymm0, %ymm13 -vmovdqa 320(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm6, %ymm1 -vpaddw 192(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm10 -vpsubw %ymm1, %ymm0, %ymm14 -vmovdqa 352(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm7, %ymm1 -vpaddw 224(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm11 -vpsubw %ymm1, %ymm0, %ymm15 -vmovdqa %ymm8, 2656(%rax) -vmovdqa %ymm9, 2752(%rax) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 2848(%rax) -vmovdqa %ymm10, 2944(%rax) -vmovdqa %ymm11, 3040(%rax) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 3136(%rax) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 3232(%rax) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 3328(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 3424(%rax) -vmovdqa %ymm12, 3520(%rax) -vmovdqa %ymm13, 3616(%rax) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 3712(%rax) -vmovdqa %ymm14, 3808(%rax) -vmovdqa %ymm15, 3904(%rax) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 4000(%rax) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 4096(%rax) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 4192(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 4288(%rax) -vpmullw %ymm3, %ymm4, %ymm0 -vpaddw 256(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 128(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm12 -vpmullw %ymm3, %ymm5, %ymm0 -vpaddw 288(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 160(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm13 -vpmullw %ymm3, %ymm6, %ymm0 -vpaddw 320(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 192(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm14 -vpmullw %ymm3, %ymm7, %ymm0 -vpaddw 352(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 224(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm15 -vmovdqa %ymm12, 4384(%rax) -vmovdqa %ymm13, 4480(%rax) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 4576(%rax) -vmovdqa %ymm14, 4672(%rax) -vmovdqa %ymm15, 4768(%rax) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 4864(%rax) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 4960(%rax) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 5056(%rax) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 5152(%rax) -vmovdqu 0(%rdx), %ymm0 -vmovdqu 88(%rdx), %ymm1 -vmovdqu 176(%rdx), %ymm2 -vmovdqu 264(%rdx), %ymm12 -vmovdqu 1056(%rdx), %ymm4 -vmovdqu 1144(%rdx), %ymm5 -vmovdqu 1232(%rdx), %ymm6 -vmovdqu 1320(%rdx), %ymm7 -vmovdqu 352(%rdx), %ymm8 -vmovdqu 440(%rdx), %ymm9 -vmovdqu 528(%rdx), %ymm10 -vmovdqu 616(%rdx), %ymm11 -vmovdqa %ymm0, 0(%r11) -vmovdqa %ymm1, 96(%r11) -vpaddw %ymm0, %ymm1, %ymm14 -vmovdqa %ymm14, 192(%r11) -vmovdqa %ymm2, 288(%r11) -vmovdqa %ymm12, 384(%r11) -vpaddw %ymm2, %ymm12, %ymm14 -vmovdqa %ymm14, 480(%r11) -vpaddw %ymm0, %ymm2, %ymm14 -vmovdqa %ymm14, 576(%r11) -vpaddw %ymm1, %ymm12, %ymm15 -vmovdqa %ymm15, 672(%r11) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 768(%r11) -vmovdqa %ymm4, 5184(%r11) -vmovdqa %ymm5, 5280(%r11) -vpaddw %ymm4, %ymm5, %ymm14 -vmovdqa %ymm14, 5376(%r11) -vmovdqa %ymm6, 5472(%r11) -vmovdqa %ymm7, 5568(%r11) -vpaddw %ymm6, %ymm7, %ymm14 -vmovdqa %ymm14, 5664(%r11) -vpaddw %ymm4, %ymm6, %ymm14 -vmovdqa %ymm14, 5760(%r11) -vpaddw %ymm5, %ymm7, %ymm15 -vmovdqa %ymm15, 5856(%r11) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 5952(%r11) -vmovdqa %ymm0, 0(%rsp) -vmovdqa %ymm1, 32(%rsp) -vmovdqa %ymm2, 64(%rsp) -vmovdqa %ymm12, 96(%rsp) -vmovdqa %ymm8, 128(%rsp) -vmovdqa %ymm9, 160(%rsp) -vmovdqa %ymm10, 192(%rsp) -vmovdqa %ymm11, 224(%rsp) -vmovdqu 704(%rdx), %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm1 -vpaddw 128(%rsp), %ymm4, %ymm2 -vpaddw %ymm2, %ymm1, %ymm8 -vpsubw %ymm2, %ymm1, %ymm12 -vmovdqa %ymm0, 256(%rsp) -vmovdqu 792(%rdx), %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm1 -vpaddw 160(%rsp), %ymm5, %ymm2 -vpaddw %ymm2, %ymm1, %ymm9 -vpsubw %ymm2, %ymm1, %ymm13 -vmovdqa %ymm0, 288(%rsp) -vmovdqu 880(%rdx), %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm1 -vpaddw 192(%rsp), %ymm6, %ymm2 -vpaddw %ymm2, %ymm1, %ymm10 -vpsubw %ymm2, %ymm1, %ymm14 -vmovdqa %ymm0, 320(%rsp) -vmovdqu 968(%rdx), %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm1 -vpaddw 224(%rsp), %ymm7, %ymm2 -vpaddw %ymm2, %ymm1, %ymm11 -vpsubw %ymm2, %ymm1, %ymm15 -vmovdqa %ymm0, 352(%rsp) -vmovdqa %ymm8, 864(%r11) -vmovdqa %ymm9, 960(%r11) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 1056(%r11) -vmovdqa %ymm10, 1152(%r11) -vmovdqa %ymm11, 1248(%r11) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 1344(%r11) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 1440(%r11) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 1536(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 1632(%r11) -vmovdqa %ymm12, 1728(%r11) -vmovdqa %ymm13, 1824(%r11) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 1920(%r11) -vmovdqa %ymm14, 2016(%r11) -vmovdqa %ymm15, 2112(%r11) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 2208(%r11) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 2304(%r11) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 2400(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 2496(%r11) -vmovdqa 256(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm4, %ymm1 -vpaddw 128(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm8 -vpsubw %ymm1, %ymm0, %ymm12 -vmovdqa 288(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm5, %ymm1 -vpaddw 160(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm9 -vpsubw %ymm1, %ymm0, %ymm13 -vmovdqa 320(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm6, %ymm1 -vpaddw 192(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm10 -vpsubw %ymm1, %ymm0, %ymm14 -vmovdqa 352(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm7, %ymm1 -vpaddw 224(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm11 -vpsubw %ymm1, %ymm0, %ymm15 -vmovdqa %ymm8, 2592(%r11) -vmovdqa %ymm9, 2688(%r11) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 2784(%r11) -vmovdqa %ymm10, 2880(%r11) -vmovdqa %ymm11, 2976(%r11) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 3072(%r11) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 3168(%r11) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 3264(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 3360(%r11) -vmovdqa %ymm12, 3456(%r11) -vmovdqa %ymm13, 3552(%r11) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 3648(%r11) -vmovdqa %ymm14, 3744(%r11) -vmovdqa %ymm15, 3840(%r11) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 3936(%r11) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 4032(%r11) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 4128(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 4224(%r11) -vpmullw %ymm3, %ymm4, %ymm0 -vpaddw 256(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 128(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm12 -vpmullw %ymm3, %ymm5, %ymm0 -vpaddw 288(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 160(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm13 -vpmullw %ymm3, %ymm6, %ymm0 -vpaddw 320(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 192(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm14 -vpmullw %ymm3, %ymm7, %ymm0 -vpaddw 352(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 224(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm15 -vmovdqa %ymm12, 4320(%r11) -vmovdqa %ymm13, 4416(%r11) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 4512(%r11) -vmovdqa %ymm14, 4608(%r11) -vmovdqa %ymm15, 4704(%r11) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 4800(%r11) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 4896(%r11) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 4992(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 5088(%r11) -vmovdqu 32(%rdx), %ymm0 -vmovdqu 120(%rdx), %ymm1 -vmovdqu 208(%rdx), %ymm2 -vmovdqu 296(%rdx), %ymm12 -vmovdqu 1088(%rdx), %ymm4 -vmovdqu 1176(%rdx), %ymm5 -vmovdqu 1264(%rdx), %ymm6 -vmovdqu 1352(%rdx), %ymm7 -vmovdqu 384(%rdx), %ymm8 -vmovdqu 472(%rdx), %ymm9 -vmovdqu 560(%rdx), %ymm10 -vmovdqu 648(%rdx), %ymm11 -vmovdqa %ymm0, 32(%r11) -vmovdqa %ymm1, 128(%r11) -vpaddw %ymm0, %ymm1, %ymm14 -vmovdqa %ymm14, 224(%r11) -vmovdqa %ymm2, 320(%r11) -vmovdqa %ymm12, 416(%r11) -vpaddw %ymm2, %ymm12, %ymm14 -vmovdqa %ymm14, 512(%r11) -vpaddw %ymm0, %ymm2, %ymm14 -vmovdqa %ymm14, 608(%r11) -vpaddw %ymm1, %ymm12, %ymm15 -vmovdqa %ymm15, 704(%r11) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 800(%r11) -vmovdqa %ymm4, 5216(%r11) -vmovdqa %ymm5, 5312(%r11) -vpaddw %ymm4, %ymm5, %ymm14 -vmovdqa %ymm14, 5408(%r11) -vmovdqa %ymm6, 5504(%r11) -vmovdqa %ymm7, 5600(%r11) -vpaddw %ymm6, %ymm7, %ymm14 -vmovdqa %ymm14, 5696(%r11) -vpaddw %ymm4, %ymm6, %ymm14 -vmovdqa %ymm14, 5792(%r11) -vpaddw %ymm5, %ymm7, %ymm15 -vmovdqa %ymm15, 5888(%r11) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 5984(%r11) -vmovdqa %ymm0, 0(%rsp) -vmovdqa %ymm1, 32(%rsp) -vmovdqa %ymm2, 64(%rsp) -vmovdqa %ymm12, 96(%rsp) -vmovdqa %ymm8, 128(%rsp) -vmovdqa %ymm9, 160(%rsp) -vmovdqa %ymm10, 192(%rsp) -vmovdqa %ymm11, 224(%rsp) -vmovdqu 736(%rdx), %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm1 -vpaddw 128(%rsp), %ymm4, %ymm2 -vpaddw %ymm2, %ymm1, %ymm8 -vpsubw %ymm2, %ymm1, %ymm12 -vmovdqa %ymm0, 256(%rsp) -vmovdqu 824(%rdx), %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm1 -vpaddw 160(%rsp), %ymm5, %ymm2 -vpaddw %ymm2, %ymm1, %ymm9 -vpsubw %ymm2, %ymm1, %ymm13 -vmovdqa %ymm0, 288(%rsp) -vmovdqu 912(%rdx), %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm1 -vpaddw 192(%rsp), %ymm6, %ymm2 -vpaddw %ymm2, %ymm1, %ymm10 -vpsubw %ymm2, %ymm1, %ymm14 -vmovdqa %ymm0, 320(%rsp) -vmovdqu 1000(%rdx), %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm1 -vpaddw 224(%rsp), %ymm7, %ymm2 -vpaddw %ymm2, %ymm1, %ymm11 -vpsubw %ymm2, %ymm1, %ymm15 -vmovdqa %ymm0, 352(%rsp) -vmovdqa %ymm8, 896(%r11) -vmovdqa %ymm9, 992(%r11) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 1088(%r11) -vmovdqa %ymm10, 1184(%r11) -vmovdqa %ymm11, 1280(%r11) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 1376(%r11) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 1472(%r11) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 1568(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 1664(%r11) -vmovdqa %ymm12, 1760(%r11) -vmovdqa %ymm13, 1856(%r11) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 1952(%r11) -vmovdqa %ymm14, 2048(%r11) -vmovdqa %ymm15, 2144(%r11) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 2240(%r11) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 2336(%r11) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 2432(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 2528(%r11) -vmovdqa 256(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm4, %ymm1 -vpaddw 128(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm8 -vpsubw %ymm1, %ymm0, %ymm12 -vmovdqa 288(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm5, %ymm1 -vpaddw 160(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm9 -vpsubw %ymm1, %ymm0, %ymm13 -vmovdqa 320(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm6, %ymm1 -vpaddw 192(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm10 -vpsubw %ymm1, %ymm0, %ymm14 -vmovdqa 352(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm7, %ymm1 -vpaddw 224(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm11 -vpsubw %ymm1, %ymm0, %ymm15 -vmovdqa %ymm8, 2624(%r11) -vmovdqa %ymm9, 2720(%r11) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 2816(%r11) -vmovdqa %ymm10, 2912(%r11) -vmovdqa %ymm11, 3008(%r11) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 3104(%r11) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 3200(%r11) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 3296(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 3392(%r11) -vmovdqa %ymm12, 3488(%r11) -vmovdqa %ymm13, 3584(%r11) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 3680(%r11) -vmovdqa %ymm14, 3776(%r11) -vmovdqa %ymm15, 3872(%r11) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 3968(%r11) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 4064(%r11) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 4160(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 4256(%r11) -vpmullw %ymm3, %ymm4, %ymm0 -vpaddw 256(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 128(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm12 -vpmullw %ymm3, %ymm5, %ymm0 -vpaddw 288(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 160(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm13 -vpmullw %ymm3, %ymm6, %ymm0 -vpaddw 320(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 192(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm14 -vpmullw %ymm3, %ymm7, %ymm0 -vpaddw 352(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 224(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm15 -vmovdqa %ymm12, 4352(%r11) -vmovdqa %ymm13, 4448(%r11) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 4544(%r11) -vmovdqa %ymm14, 4640(%r11) -vmovdqa %ymm15, 4736(%r11) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 4832(%r11) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 4928(%r11) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 5024(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 5120(%r11) -vmovdqu 64(%rdx), %ymm0 -vmovdqu 152(%rdx), %ymm1 -vmovdqu 240(%rdx), %ymm2 -vmovdqu 328(%rdx), %ymm12 -vmovdqu 1120(%rdx), %ymm4 -vmovdqu 1208(%rdx), %ymm5 -vmovdqu 1296(%rdx), %ymm6 -vmovdqu 1384(%rdx), %ymm7 -vpand mask_low9words(%rip), %ymm7, %ymm7 -vmovdqu 416(%rdx), %ymm8 -vmovdqu 504(%rdx), %ymm9 -vmovdqu 592(%rdx), %ymm10 -vmovdqu 680(%rdx), %ymm11 -vmovdqa %ymm0, 64(%r11) -vmovdqa %ymm1, 160(%r11) -vpaddw %ymm0, %ymm1, %ymm14 -vmovdqa %ymm14, 256(%r11) -vmovdqa %ymm2, 352(%r11) -vmovdqa %ymm12, 448(%r11) -vpaddw %ymm2, %ymm12, %ymm14 -vmovdqa %ymm14, 544(%r11) -vpaddw %ymm0, %ymm2, %ymm14 -vmovdqa %ymm14, 640(%r11) -vpaddw %ymm1, %ymm12, %ymm15 -vmovdqa %ymm15, 736(%r11) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 832(%r11) -vmovdqa %ymm4, 5248(%r11) -vmovdqa %ymm5, 5344(%r11) -vpaddw %ymm4, %ymm5, %ymm14 -vmovdqa %ymm14, 5440(%r11) -vmovdqa %ymm6, 5536(%r11) -vmovdqa %ymm7, 5632(%r11) -vpaddw %ymm6, %ymm7, %ymm14 -vmovdqa %ymm14, 5728(%r11) -vpaddw %ymm4, %ymm6, %ymm14 -vmovdqa %ymm14, 5824(%r11) -vpaddw %ymm5, %ymm7, %ymm15 -vmovdqa %ymm15, 5920(%r11) -vpaddw %ymm14, %ymm15, %ymm14 -vmovdqa %ymm14, 6016(%r11) -vmovdqa %ymm0, 0(%rsp) -vmovdqa %ymm1, 32(%rsp) -vmovdqa %ymm2, 64(%rsp) -vmovdqa %ymm12, 96(%rsp) -vmovdqa %ymm8, 128(%rsp) -vmovdqa %ymm9, 160(%rsp) -vmovdqa %ymm10, 192(%rsp) -vmovdqa %ymm11, 224(%rsp) -vmovdqu 768(%rdx), %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm1 -vpaddw 128(%rsp), %ymm4, %ymm2 -vpaddw %ymm2, %ymm1, %ymm8 -vpsubw %ymm2, %ymm1, %ymm12 -vmovdqa %ymm0, 256(%rsp) -vmovdqu 856(%rdx), %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm1 -vpaddw 160(%rsp), %ymm5, %ymm2 -vpaddw %ymm2, %ymm1, %ymm9 -vpsubw %ymm2, %ymm1, %ymm13 -vmovdqa %ymm0, 288(%rsp) -vmovdqu 944(%rdx), %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm1 -vpaddw 192(%rsp), %ymm6, %ymm2 -vpaddw %ymm2, %ymm1, %ymm10 -vpsubw %ymm2, %ymm1, %ymm14 -vmovdqa %ymm0, 320(%rsp) -vmovdqu 1032(%rdx), %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm1 -vpaddw 224(%rsp), %ymm7, %ymm2 -vpaddw %ymm2, %ymm1, %ymm11 -vpsubw %ymm2, %ymm1, %ymm15 -vmovdqa %ymm0, 352(%rsp) -vmovdqa %ymm8, 928(%r11) -vmovdqa %ymm9, 1024(%r11) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 1120(%r11) -vmovdqa %ymm10, 1216(%r11) -vmovdqa %ymm11, 1312(%r11) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 1408(%r11) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 1504(%r11) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 1600(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 1696(%r11) -vmovdqa %ymm12, 1792(%r11) -vmovdqa %ymm13, 1888(%r11) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 1984(%r11) -vmovdqa %ymm14, 2080(%r11) -vmovdqa %ymm15, 2176(%r11) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 2272(%r11) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 2368(%r11) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 2464(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 2560(%r11) -vmovdqa 256(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm4, %ymm1 -vpaddw 128(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm8 -vpsubw %ymm1, %ymm0, %ymm12 -vmovdqa 288(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm5, %ymm1 -vpaddw 160(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm9 -vpsubw %ymm1, %ymm0, %ymm13 -vmovdqa 320(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm6, %ymm1 -vpaddw 192(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm10 -vpsubw %ymm1, %ymm0, %ymm14 -vmovdqa 352(%rsp), %ymm0 -vpsllw $2, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm0 -vpsllw $2, %ymm7, %ymm1 -vpaddw 224(%rsp), %ymm1, %ymm1 -vpsllw $1, %ymm1, %ymm1 -vpaddw %ymm1, %ymm0, %ymm11 -vpsubw %ymm1, %ymm0, %ymm15 -vmovdqa %ymm8, 2656(%r11) -vmovdqa %ymm9, 2752(%r11) -vpaddw %ymm8, %ymm9, %ymm0 -vmovdqa %ymm0, 2848(%r11) -vmovdqa %ymm10, 2944(%r11) -vmovdqa %ymm11, 3040(%r11) -vpaddw %ymm10, %ymm11, %ymm0 -vmovdqa %ymm0, 3136(%r11) -vpaddw %ymm8, %ymm10, %ymm0 -vmovdqa %ymm0, 3232(%r11) -vpaddw %ymm9, %ymm11, %ymm1 -vmovdqa %ymm1, 3328(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 3424(%r11) -vmovdqa %ymm12, 3520(%r11) -vmovdqa %ymm13, 3616(%r11) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 3712(%r11) -vmovdqa %ymm14, 3808(%r11) -vmovdqa %ymm15, 3904(%r11) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 4000(%r11) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 4096(%r11) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 4192(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 4288(%r11) -vpmullw %ymm3, %ymm4, %ymm0 -vpaddw 256(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 128(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 0(%rsp), %ymm0, %ymm12 -vpmullw %ymm3, %ymm5, %ymm0 -vpaddw 288(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 160(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 32(%rsp), %ymm0, %ymm13 -vpmullw %ymm3, %ymm6, %ymm0 -vpaddw 320(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 192(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 64(%rsp), %ymm0, %ymm14 -vpmullw %ymm3, %ymm7, %ymm0 -vpaddw 352(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 224(%rsp), %ymm0, %ymm0 -vpmullw %ymm3, %ymm0, %ymm0 -vpaddw 96(%rsp), %ymm0, %ymm15 -vmovdqa %ymm12, 4384(%r11) -vmovdqa %ymm13, 4480(%r11) -vpaddw %ymm12, %ymm13, %ymm0 -vmovdqa %ymm0, 4576(%r11) -vmovdqa %ymm14, 4672(%r11) -vmovdqa %ymm15, 4768(%r11) -vpaddw %ymm14, %ymm15, %ymm0 -vmovdqa %ymm0, 4864(%r11) -vpaddw %ymm12, %ymm14, %ymm0 -vmovdqa %ymm0, 4960(%r11) -vpaddw %ymm13, %ymm15, %ymm1 -vmovdqa %ymm1, 5056(%r11) -vpaddw %ymm0, %ymm1, %ymm0 -vmovdqa %ymm0, 5152(%r11) -subq $9408, %rsp -mov $4, %ecx -karatsuba_loop_1: -mov %rsp, %r9 -mov %rsp, %r10 -subq $32, %rsp -vmovdqa 0(%rax), %ymm0 -vmovdqa 192(%rax), %ymm1 -vmovdqa 384(%rax), %ymm2 -vmovdqa 576(%rax), %ymm3 -vpunpcklwd 96(%rax), %ymm0, %ymm4 -vpunpckhwd 96(%rax), %ymm0, %ymm5 -vpunpcklwd 288(%rax), %ymm1, %ymm6 -vpunpckhwd 288(%rax), %ymm1, %ymm7 -vpunpcklwd 480(%rax), %ymm2, %ymm8 -vpunpckhwd 480(%rax), %ymm2, %ymm9 -vpunpcklwd 672(%rax), %ymm3, %ymm10 -vpunpckhwd 672(%rax), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 768(%rax), %ymm0 -vmovdqa 960(%rax), %ymm1 -vmovdqa 1152(%rax), %ymm2 -vmovdqa 1344(%rax), %ymm3 -vpunpcklwd 864(%rax), %ymm0, %ymm12 -vpunpckhwd 864(%rax), %ymm0, %ymm13 -vpunpcklwd 1056(%rax), %ymm1, %ymm14 -vpunpckhwd 1056(%rax), %ymm1, %ymm15 -vpunpcklwd 1248(%rax), %ymm2, %ymm0 -vpunpckhwd 1248(%rax), %ymm2, %ymm1 -vpunpcklwd 1440(%rax), %ymm3, %ymm2 -vpunpckhwd 1440(%rax), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 0(%r9) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 32(%r9) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 64(%r9) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 96(%r9) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 128(%r9) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 160(%r9) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 192(%r9) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 256(%r9) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 288(%r9) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 320(%r9) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 352(%r9) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 384(%r9) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 416(%r9) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 448(%r9) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 224(%r9) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 480(%r9) -vmovdqa 32(%rax), %ymm0 -vmovdqa 224(%rax), %ymm1 -vmovdqa 416(%rax), %ymm2 -vmovdqa 608(%rax), %ymm3 -vpunpcklwd 128(%rax), %ymm0, %ymm4 -vpunpckhwd 128(%rax), %ymm0, %ymm5 -vpunpcklwd 320(%rax), %ymm1, %ymm6 -vpunpckhwd 320(%rax), %ymm1, %ymm7 -vpunpcklwd 512(%rax), %ymm2, %ymm8 -vpunpckhwd 512(%rax), %ymm2, %ymm9 -vpunpcklwd 704(%rax), %ymm3, %ymm10 -vpunpckhwd 704(%rax), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 800(%rax), %ymm0 -vmovdqa 992(%rax), %ymm1 -vmovdqa 1184(%rax), %ymm2 -vmovdqa 1376(%rax), %ymm3 -vpunpcklwd 896(%rax), %ymm0, %ymm12 -vpunpckhwd 896(%rax), %ymm0, %ymm13 -vpunpcklwd 1088(%rax), %ymm1, %ymm14 -vpunpckhwd 1088(%rax), %ymm1, %ymm15 -vpunpcklwd 1280(%rax), %ymm2, %ymm0 -vpunpckhwd 1280(%rax), %ymm2, %ymm1 -vpunpcklwd 1472(%rax), %ymm3, %ymm2 -vpunpckhwd 1472(%rax), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 512(%r9) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 544(%r9) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 576(%r9) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 608(%r9) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 640(%r9) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 672(%r9) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 704(%r9) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 768(%r9) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 800(%r9) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 832(%r9) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 864(%r9) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 896(%r9) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 928(%r9) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 960(%r9) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 736(%r9) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 992(%r9) -vmovdqa 64(%rax), %ymm0 -vmovdqa 256(%rax), %ymm1 -vmovdqa 448(%rax), %ymm2 -vmovdqa 640(%rax), %ymm3 -vpunpcklwd 160(%rax), %ymm0, %ymm4 -vpunpckhwd 160(%rax), %ymm0, %ymm5 -vpunpcklwd 352(%rax), %ymm1, %ymm6 -vpunpckhwd 352(%rax), %ymm1, %ymm7 -vpunpcklwd 544(%rax), %ymm2, %ymm8 -vpunpckhwd 544(%rax), %ymm2, %ymm9 -vpunpcklwd 736(%rax), %ymm3, %ymm10 -vpunpckhwd 736(%rax), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 832(%rax), %ymm0 -vmovdqa 1024(%rax), %ymm1 -vmovdqa 1216(%rax), %ymm2 -vmovdqa 1408(%rax), %ymm3 -vpunpcklwd 928(%rax), %ymm0, %ymm12 -vpunpckhwd 928(%rax), %ymm0, %ymm13 -vpunpcklwd 1120(%rax), %ymm1, %ymm14 -vpunpckhwd 1120(%rax), %ymm1, %ymm15 -vpunpcklwd 1312(%rax), %ymm2, %ymm0 -vpunpckhwd 1312(%rax), %ymm2, %ymm1 -vpunpcklwd 1504(%rax), %ymm3, %ymm2 -vpunpckhwd 1504(%rax), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 1024(%r9) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 1056(%r9) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 1088(%r9) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 1120(%r9) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 1152(%r9) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 1184(%r9) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 1216(%r9) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 1280(%r9) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 1312(%r9) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 1344(%r9) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 1376(%r9) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 1248(%r9) -addq $32, %rsp -subq $32, %rsp -vmovdqa 0(%r11), %ymm0 -vmovdqa 192(%r11), %ymm1 -vmovdqa 384(%r11), %ymm2 -vmovdqa 576(%r11), %ymm3 -vpunpcklwd 96(%r11), %ymm0, %ymm4 -vpunpckhwd 96(%r11), %ymm0, %ymm5 -vpunpcklwd 288(%r11), %ymm1, %ymm6 -vpunpckhwd 288(%r11), %ymm1, %ymm7 -vpunpcklwd 480(%r11), %ymm2, %ymm8 -vpunpckhwd 480(%r11), %ymm2, %ymm9 -vpunpcklwd 672(%r11), %ymm3, %ymm10 -vpunpckhwd 672(%r11), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 768(%r11), %ymm0 -vmovdqa 960(%r11), %ymm1 -vmovdqa 1152(%r11), %ymm2 -vmovdqa 1344(%r11), %ymm3 -vpunpcklwd 864(%r11), %ymm0, %ymm12 -vpunpckhwd 864(%r11), %ymm0, %ymm13 -vpunpcklwd 1056(%r11), %ymm1, %ymm14 -vpunpckhwd 1056(%r11), %ymm1, %ymm15 -vpunpcklwd 1248(%r11), %ymm2, %ymm0 -vpunpckhwd 1248(%r11), %ymm2, %ymm1 -vpunpcklwd 1440(%r11), %ymm3, %ymm2 -vpunpckhwd 1440(%r11), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 1408(%r9) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 1440(%r9) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 1472(%r9) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 1504(%r9) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 1536(%r9) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 1568(%r9) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 1600(%r9) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 1664(%r9) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 1696(%r9) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 1728(%r9) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 1760(%r9) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 1792(%r9) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 1824(%r9) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 1856(%r9) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 1632(%r9) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 1888(%r9) -vmovdqa 32(%r11), %ymm0 -vmovdqa 224(%r11), %ymm1 -vmovdqa 416(%r11), %ymm2 -vmovdqa 608(%r11), %ymm3 -vpunpcklwd 128(%r11), %ymm0, %ymm4 -vpunpckhwd 128(%r11), %ymm0, %ymm5 -vpunpcklwd 320(%r11), %ymm1, %ymm6 -vpunpckhwd 320(%r11), %ymm1, %ymm7 -vpunpcklwd 512(%r11), %ymm2, %ymm8 -vpunpckhwd 512(%r11), %ymm2, %ymm9 -vpunpcklwd 704(%r11), %ymm3, %ymm10 -vpunpckhwd 704(%r11), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 800(%r11), %ymm0 -vmovdqa 992(%r11), %ymm1 -vmovdqa 1184(%r11), %ymm2 -vmovdqa 1376(%r11), %ymm3 -vpunpcklwd 896(%r11), %ymm0, %ymm12 -vpunpckhwd 896(%r11), %ymm0, %ymm13 -vpunpcklwd 1088(%r11), %ymm1, %ymm14 -vpunpckhwd 1088(%r11), %ymm1, %ymm15 -vpunpcklwd 1280(%r11), %ymm2, %ymm0 -vpunpckhwd 1280(%r11), %ymm2, %ymm1 -vpunpcklwd 1472(%r11), %ymm3, %ymm2 -vpunpckhwd 1472(%r11), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 1920(%r9) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 1952(%r9) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 1984(%r9) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 2016(%r9) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 2048(%r9) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 2080(%r9) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 2112(%r9) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 2176(%r9) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 2208(%r9) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 2240(%r9) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 2272(%r9) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 2304(%r9) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 2336(%r9) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 2368(%r9) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 2144(%r9) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 2400(%r9) -vmovdqa 64(%r11), %ymm0 -vmovdqa 256(%r11), %ymm1 -vmovdqa 448(%r11), %ymm2 -vmovdqa 640(%r11), %ymm3 -vpunpcklwd 160(%r11), %ymm0, %ymm4 -vpunpckhwd 160(%r11), %ymm0, %ymm5 -vpunpcklwd 352(%r11), %ymm1, %ymm6 -vpunpckhwd 352(%r11), %ymm1, %ymm7 -vpunpcklwd 544(%r11), %ymm2, %ymm8 -vpunpckhwd 544(%r11), %ymm2, %ymm9 -vpunpcklwd 736(%r11), %ymm3, %ymm10 -vpunpckhwd 736(%r11), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 832(%r11), %ymm0 -vmovdqa 1024(%r11), %ymm1 -vmovdqa 1216(%r11), %ymm2 -vmovdqa 1408(%r11), %ymm3 -vpunpcklwd 928(%r11), %ymm0, %ymm12 -vpunpckhwd 928(%r11), %ymm0, %ymm13 -vpunpcklwd 1120(%r11), %ymm1, %ymm14 -vpunpckhwd 1120(%r11), %ymm1, %ymm15 -vpunpcklwd 1312(%r11), %ymm2, %ymm0 -vpunpckhwd 1312(%r11), %ymm2, %ymm1 -vpunpcklwd 1504(%r11), %ymm3, %ymm2 -vpunpckhwd 1504(%r11), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 2432(%r9) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 2464(%r9) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 2496(%r9) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 2528(%r9) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 2560(%r9) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 2592(%r9) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 2624(%r9) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 2688(%r9) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 2720(%r9) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 2752(%r9) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 2784(%r9) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 2656(%r9) -addq $32, %rsp -innerloop_1: -vmovdqa 0(%r9), %ymm0 -vmovdqa 1408(%r9), %ymm6 -vmovdqa 32(%r9), %ymm1 -vmovdqa 1440(%r9), %ymm7 -vmovdqa 64(%r9), %ymm2 -vmovdqa 1472(%r9), %ymm8 -vmovdqa 96(%r9), %ymm3 -vmovdqa 1504(%r9), %ymm9 -vmovdqa 128(%r9), %ymm4 -vmovdqa 1536(%r9), %ymm10 -vmovdqa 160(%r9), %ymm5 -vmovdqa 1568(%r9), %ymm11 -vpmullw %ymm0, %ymm6, %ymm12 -vmovdqa %ymm12, 2816(%r10) -vpmullw %ymm0, %ymm7, %ymm13 -vpmullw %ymm1, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 2848(%r10) -vpmullw %ymm0, %ymm8, %ymm12 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 2880(%r10) -vpmullw %ymm0, %ymm9, %ymm13 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 2912(%r10) -vpmullw %ymm0, %ymm10, %ymm12 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 2944(%r10) -vpmullw %ymm0, %ymm11, %ymm13 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm5, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 2976(%r10) -vpmullw %ymm1, %ymm11, %ymm12 -vpmullw %ymm2, %ymm10, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm5, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 3008(%r10) -vpmullw %ymm2, %ymm11, %ymm13 -vpmullw %ymm3, %ymm10, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm5, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 3040(%r10) -vpmullw %ymm3, %ymm11, %ymm12 -vpmullw %ymm4, %ymm10, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm5, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 3072(%r10) -vpmullw %ymm4, %ymm11, %ymm13 -vpmullw %ymm5, %ymm10, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 3104(%r10) -vpmullw %ymm5, %ymm11, %ymm12 -vmovdqa %ymm12, 3136(%r10) -vmovdqa 192(%r9), %ymm0 -vmovdqa 1600(%r9), %ymm6 -vmovdqa 224(%r9), %ymm1 -vmovdqa 1632(%r9), %ymm7 -vmovdqa 256(%r9), %ymm2 -vmovdqa 1664(%r9), %ymm8 -vmovdqa 288(%r9), %ymm3 -vmovdqa 1696(%r9), %ymm9 -vmovdqa 320(%r9), %ymm4 -vmovdqa 1728(%r9), %ymm10 -vpmullw %ymm0, %ymm6, %ymm12 -vmovdqa %ymm12, 3200(%r10) -vpmullw %ymm0, %ymm7, %ymm13 -vpmullw %ymm1, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 3232(%r10) -vpmullw %ymm0, %ymm8, %ymm12 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 3264(%r10) -vpmullw %ymm0, %ymm9, %ymm13 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 3296(%r10) -vpmullw %ymm0, %ymm10, %ymm12 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 3328(%r10) -vpmullw %ymm1, %ymm10, %ymm13 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 3360(%r10) -vpmullw %ymm2, %ymm10, %ymm12 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 3392(%r10) -vpmullw %ymm3, %ymm10, %ymm13 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 3424(%r10) -vpmullw %ymm4, %ymm10, %ymm12 -vmovdqa %ymm12, 3456(%r10) -vpaddw 0(%r9), %ymm0, %ymm0 -vpaddw 1408(%r9), %ymm6, %ymm6 -vpaddw 32(%r9), %ymm1, %ymm1 -vpaddw 1440(%r9), %ymm7, %ymm7 -vpaddw 64(%r9), %ymm2, %ymm2 -vpaddw 1472(%r9), %ymm8, %ymm8 -vpaddw 96(%r9), %ymm3, %ymm3 -vpaddw 1504(%r9), %ymm9, %ymm9 -vpaddw 128(%r9), %ymm4, %ymm4 -vpaddw 1536(%r9), %ymm10, %ymm10 -vpmullw %ymm0, %ymm11, %ymm12 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm5, %ymm6, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpsubw 2976(%r10), %ymm12, %ymm12 -vpsubw 3360(%r10), %ymm12, %ymm12 -vmovdqa %ymm12, 3168(%r10) -vpmullw %ymm5, %ymm7, %ymm12 -vpmullw %ymm5, %ymm8, %ymm13 -vpmullw %ymm5, %ymm9, %ymm14 -vpmullw %ymm5, %ymm10, %ymm15 -vpmullw %ymm1, %ymm11, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm2, %ymm10, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm3, %ymm9, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm4, %ymm8, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm2, %ymm11, %ymm5 -vpaddw %ymm5, %ymm13, %ymm13 -vpmullw %ymm3, %ymm10, %ymm5 -vpaddw %ymm5, %ymm13, %ymm13 -vpmullw %ymm4, %ymm9, %ymm5 -vpaddw %ymm5, %ymm13, %ymm13 -vpmullw %ymm3, %ymm11, %ymm5 -vpaddw %ymm5, %ymm14, %ymm14 -vpmullw %ymm4, %ymm10, %ymm5 -vpaddw %ymm5, %ymm14, %ymm14 -vpmullw %ymm4, %ymm11, %ymm5 -vpaddw %ymm5, %ymm15, %ymm15 -vpmullw %ymm0, %ymm10, %ymm11 -vpmullw %ymm1, %ymm9, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm2, %ymm8, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm3, %ymm7, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm4, %ymm6, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm0, %ymm9, %ymm10 -vpmullw %ymm1, %ymm8, %ymm5 -vpaddw %ymm5, %ymm10, %ymm10 -vpmullw %ymm2, %ymm7, %ymm5 -vpaddw %ymm5, %ymm10, %ymm10 -vpmullw %ymm3, %ymm6, %ymm5 -vpaddw %ymm5, %ymm10, %ymm10 -vpmullw %ymm0, %ymm8, %ymm9 -vpmullw %ymm1, %ymm7, %ymm5 -vpaddw %ymm5, %ymm9, %ymm9 -vpmullw %ymm2, %ymm6, %ymm5 -vpaddw %ymm5, %ymm9, %ymm9 -vpmullw %ymm0, %ymm7, %ymm8 -vpmullw %ymm1, %ymm6, %ymm5 -vpaddw %ymm5, %ymm8, %ymm8 -vpmullw %ymm0, %ymm6, %ymm7 -vmovdqa 3008(%r10), %ymm0 -vpsubw 3200(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm12, %ymm6 -vpsubw 3392(%r10), %ymm6, %ymm6 -vmovdqa %ymm6, 3200(%r10) -vpaddw %ymm7, %ymm0, %ymm0 -vpsubw 2816(%r10), %ymm0, %ymm0 -vmovdqa %ymm0, 3008(%r10) -vmovdqa 3040(%r10), %ymm1 -vpsubw 3232(%r10), %ymm1, %ymm1 -vpsubw %ymm1, %ymm13, %ymm7 -vpsubw 3424(%r10), %ymm7, %ymm7 -vmovdqa %ymm7, 3232(%r10) -vpaddw %ymm8, %ymm1, %ymm1 -vpsubw 2848(%r10), %ymm1, %ymm1 -vmovdqa %ymm1, 3040(%r10) -vmovdqa 3072(%r10), %ymm2 -vpsubw 3264(%r10), %ymm2, %ymm2 -vpsubw %ymm2, %ymm14, %ymm8 -vpsubw 3456(%r10), %ymm8, %ymm8 -vmovdqa %ymm8, 3264(%r10) -vpaddw %ymm9, %ymm2, %ymm2 -vpsubw 2880(%r10), %ymm2, %ymm2 -vmovdqa %ymm2, 3072(%r10) -vmovdqa 3104(%r10), %ymm3 -vpsubw 3296(%r10), %ymm3, %ymm3 -vpsubw %ymm3, %ymm15, %ymm9 -vmovdqa %ymm9, 3296(%r10) -vpaddw %ymm10, %ymm3, %ymm3 -vpsubw 2912(%r10), %ymm3, %ymm3 -vmovdqa %ymm3, 3104(%r10) -vmovdqa 3136(%r10), %ymm4 -vpsubw 3328(%r10), %ymm4, %ymm4 -vpaddw %ymm11, %ymm4, %ymm4 -vpsubw 2944(%r10), %ymm4, %ymm4 -vmovdqa %ymm4, 3136(%r10) -vmovdqa 352(%r9), %ymm0 -vmovdqa 1760(%r9), %ymm6 -vmovdqa 384(%r9), %ymm1 -vmovdqa 1792(%r9), %ymm7 -vmovdqa 416(%r9), %ymm2 -vmovdqa 1824(%r9), %ymm8 -vmovdqa 448(%r9), %ymm3 -vmovdqa 1856(%r9), %ymm9 -vmovdqa 480(%r9), %ymm4 -vmovdqa 1888(%r9), %ymm10 -vmovdqa 512(%r9), %ymm5 -vmovdqa 1920(%r9), %ymm11 -vpmullw %ymm0, %ymm6, %ymm12 -vmovdqa %ymm12, 3520(%r10) -vpmullw %ymm0, %ymm7, %ymm13 -vpmullw %ymm1, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 3552(%r10) -vpmullw %ymm0, %ymm8, %ymm12 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 3584(%r10) -vpmullw %ymm0, %ymm9, %ymm13 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 3616(%r10) -vpmullw %ymm0, %ymm10, %ymm12 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 3648(%r10) -vpmullw %ymm0, %ymm11, %ymm13 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm5, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 3680(%r10) -vpmullw %ymm1, %ymm11, %ymm12 -vpmullw %ymm2, %ymm10, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm5, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 3712(%r10) -vpmullw %ymm2, %ymm11, %ymm13 -vpmullw %ymm3, %ymm10, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm5, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 3744(%r10) -vpmullw %ymm3, %ymm11, %ymm12 -vpmullw %ymm4, %ymm10, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm5, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 3776(%r10) -vpmullw %ymm4, %ymm11, %ymm13 -vpmullw %ymm5, %ymm10, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 3808(%r10) -vpmullw %ymm5, %ymm11, %ymm12 -vmovdqa %ymm12, 3840(%r10) -vmovdqa 544(%r9), %ymm0 -vmovdqa 1952(%r9), %ymm6 -vmovdqa 576(%r9), %ymm1 -vmovdqa 1984(%r9), %ymm7 -vmovdqa 608(%r9), %ymm2 -vmovdqa 2016(%r9), %ymm8 -vmovdqa 640(%r9), %ymm3 -vmovdqa 2048(%r9), %ymm9 -vmovdqa 672(%r9), %ymm4 -vmovdqa 2080(%r9), %ymm10 -vpmullw %ymm0, %ymm6, %ymm12 -vmovdqa %ymm12, 3904(%r10) -vpmullw %ymm0, %ymm7, %ymm13 -vpmullw %ymm1, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 3936(%r10) -vpmullw %ymm0, %ymm8, %ymm12 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 3968(%r10) -vpmullw %ymm0, %ymm9, %ymm13 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 4000(%r10) -vpmullw %ymm0, %ymm10, %ymm12 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 4032(%r10) -vpmullw %ymm1, %ymm10, %ymm13 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 4064(%r10) -vpmullw %ymm2, %ymm10, %ymm12 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 4096(%r10) -vpmullw %ymm3, %ymm10, %ymm13 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 4128(%r10) -vpmullw %ymm4, %ymm10, %ymm12 -vmovdqa %ymm12, 4160(%r10) -vpaddw 352(%r9), %ymm0, %ymm0 -vpaddw 1760(%r9), %ymm6, %ymm6 -vpaddw 384(%r9), %ymm1, %ymm1 -vpaddw 1792(%r9), %ymm7, %ymm7 -vpaddw 416(%r9), %ymm2, %ymm2 -vpaddw 1824(%r9), %ymm8, %ymm8 -vpaddw 448(%r9), %ymm3, %ymm3 -vpaddw 1856(%r9), %ymm9, %ymm9 -vpaddw 480(%r9), %ymm4, %ymm4 -vpaddw 1888(%r9), %ymm10, %ymm10 -vpmullw %ymm0, %ymm11, %ymm12 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm5, %ymm6, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpsubw 3680(%r10), %ymm12, %ymm12 -vpsubw 4064(%r10), %ymm12, %ymm12 -vmovdqa %ymm12, 3872(%r10) -vpmullw %ymm5, %ymm7, %ymm12 -vpmullw %ymm5, %ymm8, %ymm13 -vpmullw %ymm5, %ymm9, %ymm14 -vpmullw %ymm5, %ymm10, %ymm15 -vpmullw %ymm1, %ymm11, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm2, %ymm10, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm3, %ymm9, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm4, %ymm8, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm2, %ymm11, %ymm5 -vpaddw %ymm5, %ymm13, %ymm13 -vpmullw %ymm3, %ymm10, %ymm5 -vpaddw %ymm5, %ymm13, %ymm13 -vpmullw %ymm4, %ymm9, %ymm5 -vpaddw %ymm5, %ymm13, %ymm13 -vpmullw %ymm3, %ymm11, %ymm5 -vpaddw %ymm5, %ymm14, %ymm14 -vpmullw %ymm4, %ymm10, %ymm5 -vpaddw %ymm5, %ymm14, %ymm14 -vpmullw %ymm4, %ymm11, %ymm5 -vpaddw %ymm5, %ymm15, %ymm15 -vpmullw %ymm0, %ymm10, %ymm11 -vpmullw %ymm1, %ymm9, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm2, %ymm8, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm3, %ymm7, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm4, %ymm6, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm0, %ymm9, %ymm10 -vpmullw %ymm1, %ymm8, %ymm5 -vpaddw %ymm5, %ymm10, %ymm10 -vpmullw %ymm2, %ymm7, %ymm5 -vpaddw %ymm5, %ymm10, %ymm10 -vpmullw %ymm3, %ymm6, %ymm5 -vpaddw %ymm5, %ymm10, %ymm10 -vpmullw %ymm0, %ymm8, %ymm9 -vpmullw %ymm1, %ymm7, %ymm5 -vpaddw %ymm5, %ymm9, %ymm9 -vpmullw %ymm2, %ymm6, %ymm5 -vpaddw %ymm5, %ymm9, %ymm9 -vpmullw %ymm0, %ymm7, %ymm8 -vpmullw %ymm1, %ymm6, %ymm5 -vpaddw %ymm5, %ymm8, %ymm8 -vpmullw %ymm0, %ymm6, %ymm7 -vmovdqa 3712(%r10), %ymm0 -vpsubw 3904(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm12, %ymm6 -vpsubw 4096(%r10), %ymm6, %ymm6 -vmovdqa %ymm6, 3904(%r10) -vpaddw %ymm7, %ymm0, %ymm0 -vpsubw 3520(%r10), %ymm0, %ymm0 -vmovdqa %ymm0, 3712(%r10) -vmovdqa 3744(%r10), %ymm1 -vpsubw 3936(%r10), %ymm1, %ymm1 -vpsubw %ymm1, %ymm13, %ymm7 -vpsubw 4128(%r10), %ymm7, %ymm7 -vmovdqa %ymm7, 3936(%r10) -vpaddw %ymm8, %ymm1, %ymm1 -vpsubw 3552(%r10), %ymm1, %ymm1 -vmovdqa %ymm1, 3744(%r10) -vmovdqa 3776(%r10), %ymm2 -vpsubw 3968(%r10), %ymm2, %ymm2 -vpsubw %ymm2, %ymm14, %ymm8 -vpsubw 4160(%r10), %ymm8, %ymm8 -vmovdqa %ymm8, 3968(%r10) -vpaddw %ymm9, %ymm2, %ymm2 -vpsubw 3584(%r10), %ymm2, %ymm2 -vmovdqa %ymm2, 3776(%r10) -vmovdqa 3808(%r10), %ymm3 -vpsubw 4000(%r10), %ymm3, %ymm3 -vpsubw %ymm3, %ymm15, %ymm9 -vmovdqa %ymm9, 4000(%r10) -vpaddw %ymm10, %ymm3, %ymm3 -vpsubw 3616(%r10), %ymm3, %ymm3 -vmovdqa %ymm3, 3808(%r10) -vmovdqa 3840(%r10), %ymm4 -vpsubw 4032(%r10), %ymm4, %ymm4 -vpaddw %ymm11, %ymm4, %ymm4 -vpsubw 3648(%r10), %ymm4, %ymm4 -vmovdqa %ymm4, 3840(%r10) -vmovdqa 0(%r9), %ymm0 -vmovdqa 1408(%r9), %ymm6 -vpaddw 352(%r9), %ymm0, %ymm0 -vpaddw 1760(%r9), %ymm6, %ymm6 -vmovdqa 32(%r9), %ymm1 -vmovdqa 1440(%r9), %ymm7 -vpaddw 384(%r9), %ymm1, %ymm1 -vpaddw 1792(%r9), %ymm7, %ymm7 -vmovdqa 64(%r9), %ymm2 -vmovdqa 1472(%r9), %ymm8 -vpaddw 416(%r9), %ymm2, %ymm2 -vpaddw 1824(%r9), %ymm8, %ymm8 -vmovdqa 96(%r9), %ymm3 -vmovdqa 1504(%r9), %ymm9 -vpaddw 448(%r9), %ymm3, %ymm3 -vpaddw 1856(%r9), %ymm9, %ymm9 -vmovdqa 128(%r9), %ymm4 -vmovdqa 1536(%r9), %ymm10 -vpaddw 480(%r9), %ymm4, %ymm4 -vpaddw 1888(%r9), %ymm10, %ymm10 -vmovdqa 160(%r9), %ymm5 -vmovdqa 1568(%r9), %ymm11 -vpaddw 512(%r9), %ymm5, %ymm5 -vpaddw 1920(%r9), %ymm11, %ymm11 -vpmullw %ymm0, %ymm6, %ymm12 -vmovdqa %ymm12, 5888(%rsp) -vpmullw %ymm0, %ymm7, %ymm13 -vpmullw %ymm1, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 5920(%rsp) -vpmullw %ymm0, %ymm8, %ymm12 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 5952(%rsp) -vpmullw %ymm0, %ymm9, %ymm13 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 5984(%rsp) -vpmullw %ymm0, %ymm10, %ymm12 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 6016(%rsp) -vpmullw %ymm0, %ymm11, %ymm13 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm5, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 6048(%rsp) -vpmullw %ymm1, %ymm11, %ymm12 -vpmullw %ymm2, %ymm10, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm5, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 6080(%rsp) -vpmullw %ymm2, %ymm11, %ymm13 -vpmullw %ymm3, %ymm10, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm5, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 6112(%rsp) -vpmullw %ymm3, %ymm11, %ymm12 -vpmullw %ymm4, %ymm10, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm5, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 6144(%rsp) -vpmullw %ymm4, %ymm11, %ymm13 -vpmullw %ymm5, %ymm10, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 6176(%rsp) -vpmullw %ymm5, %ymm11, %ymm12 -vmovdqa %ymm12, 6208(%rsp) -vmovdqa 192(%r9), %ymm0 -vmovdqa 1600(%r9), %ymm6 -vpaddw 544(%r9), %ymm0, %ymm0 -vpaddw 1952(%r9), %ymm6, %ymm6 -vmovdqa 224(%r9), %ymm1 -vmovdqa 1632(%r9), %ymm7 -vpaddw 576(%r9), %ymm1, %ymm1 -vpaddw 1984(%r9), %ymm7, %ymm7 -vmovdqa 256(%r9), %ymm2 -vmovdqa 1664(%r9), %ymm8 -vpaddw 608(%r9), %ymm2, %ymm2 -vpaddw 2016(%r9), %ymm8, %ymm8 -vmovdqa 288(%r9), %ymm3 -vmovdqa 1696(%r9), %ymm9 -vpaddw 640(%r9), %ymm3, %ymm3 -vpaddw 2048(%r9), %ymm9, %ymm9 -vmovdqa 320(%r9), %ymm4 -vmovdqa 1728(%r9), %ymm10 -vpaddw 672(%r9), %ymm4, %ymm4 -vpaddw 2080(%r9), %ymm10, %ymm10 -vpmullw %ymm0, %ymm6, %ymm12 -vmovdqa %ymm12, 6272(%rsp) -vpmullw %ymm0, %ymm7, %ymm13 -vpmullw %ymm1, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 6304(%rsp) -vpmullw %ymm0, %ymm8, %ymm12 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 6336(%rsp) -vpmullw %ymm0, %ymm9, %ymm13 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 6368(%rsp) -vpmullw %ymm0, %ymm10, %ymm12 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 6400(%rsp) -vpmullw %ymm1, %ymm10, %ymm13 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 6432(%rsp) -vpmullw %ymm2, %ymm10, %ymm12 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 6464(%rsp) -vpmullw %ymm3, %ymm10, %ymm13 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 6496(%rsp) -vpmullw %ymm4, %ymm10, %ymm12 -vmovdqa %ymm12, 6528(%rsp) -vpaddw 0(%r9), %ymm0, %ymm0 -vpaddw 1408(%r9), %ymm6, %ymm6 -vpaddw 352(%r9), %ymm0, %ymm0 -vpaddw 1760(%r9), %ymm6, %ymm6 -vpaddw 32(%r9), %ymm1, %ymm1 -vpaddw 1440(%r9), %ymm7, %ymm7 -vpaddw 384(%r9), %ymm1, %ymm1 -vpaddw 1792(%r9), %ymm7, %ymm7 -vpaddw 64(%r9), %ymm2, %ymm2 -vpaddw 1472(%r9), %ymm8, %ymm8 -vpaddw 416(%r9), %ymm2, %ymm2 -vpaddw 1824(%r9), %ymm8, %ymm8 -vpaddw 96(%r9), %ymm3, %ymm3 -vpaddw 1504(%r9), %ymm9, %ymm9 -vpaddw 448(%r9), %ymm3, %ymm3 -vpaddw 1856(%r9), %ymm9, %ymm9 -vpaddw 128(%r9), %ymm4, %ymm4 -vpaddw 1536(%r9), %ymm10, %ymm10 -vpaddw 480(%r9), %ymm4, %ymm4 -vpaddw 1888(%r9), %ymm10, %ymm10 -vpmullw %ymm0, %ymm11, %ymm12 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm5, %ymm6, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpsubw 6048(%rsp), %ymm12, %ymm12 -vpsubw 6432(%rsp), %ymm12, %ymm12 -vmovdqa %ymm12, 6240(%rsp) -vpmullw %ymm5, %ymm7, %ymm12 -vpmullw %ymm5, %ymm8, %ymm13 -vpmullw %ymm5, %ymm9, %ymm14 -vpmullw %ymm5, %ymm10, %ymm15 -vpmullw %ymm1, %ymm11, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm2, %ymm10, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm3, %ymm9, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm4, %ymm8, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm2, %ymm11, %ymm5 -vpaddw %ymm5, %ymm13, %ymm13 -vpmullw %ymm3, %ymm10, %ymm5 -vpaddw %ymm5, %ymm13, %ymm13 -vpmullw %ymm4, %ymm9, %ymm5 -vpaddw %ymm5, %ymm13, %ymm13 -vpmullw %ymm3, %ymm11, %ymm5 -vpaddw %ymm5, %ymm14, %ymm14 -vpmullw %ymm4, %ymm10, %ymm5 -vpaddw %ymm5, %ymm14, %ymm14 -vpmullw %ymm4, %ymm11, %ymm5 -vpaddw %ymm5, %ymm15, %ymm15 -vpmullw %ymm0, %ymm10, %ymm11 -vpmullw %ymm1, %ymm9, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm2, %ymm8, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm3, %ymm7, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm4, %ymm6, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm0, %ymm9, %ymm10 -vpmullw %ymm1, %ymm8, %ymm5 -vpaddw %ymm5, %ymm10, %ymm10 -vpmullw %ymm2, %ymm7, %ymm5 -vpaddw %ymm5, %ymm10, %ymm10 -vpmullw %ymm3, %ymm6, %ymm5 -vpaddw %ymm5, %ymm10, %ymm10 -vpmullw %ymm0, %ymm8, %ymm9 -vpmullw %ymm1, %ymm7, %ymm5 -vpaddw %ymm5, %ymm9, %ymm9 -vpmullw %ymm2, %ymm6, %ymm5 -vpaddw %ymm5, %ymm9, %ymm9 -vpmullw %ymm0, %ymm7, %ymm8 -vpmullw %ymm1, %ymm6, %ymm5 -vpaddw %ymm5, %ymm8, %ymm8 -vpmullw %ymm0, %ymm6, %ymm7 -vmovdqa 6080(%rsp), %ymm0 -vpsubw 6272(%rsp), %ymm0, %ymm0 -vpsubw %ymm0, %ymm12, %ymm6 -vpsubw 6464(%rsp), %ymm6, %ymm6 -vmovdqa %ymm6, 6272(%rsp) -vpaddw %ymm7, %ymm0, %ymm0 -vpsubw 5888(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 6080(%rsp) -vmovdqa 6112(%rsp), %ymm1 -vpsubw 6304(%rsp), %ymm1, %ymm1 -vpsubw %ymm1, %ymm13, %ymm7 -vpsubw 6496(%rsp), %ymm7, %ymm7 -vmovdqa %ymm7, 6304(%rsp) -vpaddw %ymm8, %ymm1, %ymm1 -vpsubw 5920(%rsp), %ymm1, %ymm1 -vmovdqa %ymm1, 6112(%rsp) -vmovdqa 6144(%rsp), %ymm2 -vpsubw 6336(%rsp), %ymm2, %ymm2 -vpsubw %ymm2, %ymm14, %ymm8 -vpsubw 6528(%rsp), %ymm8, %ymm8 -vmovdqa %ymm8, 6336(%rsp) -vpaddw %ymm9, %ymm2, %ymm2 -vpsubw 5952(%rsp), %ymm2, %ymm2 -vmovdqa %ymm2, 6144(%rsp) -vmovdqa 6176(%rsp), %ymm3 -vpsubw 6368(%rsp), %ymm3, %ymm3 -vpsubw %ymm3, %ymm15, %ymm9 -vmovdqa %ymm9, 6368(%rsp) -vpaddw %ymm10, %ymm3, %ymm3 -vpsubw 5984(%rsp), %ymm3, %ymm3 -vmovdqa %ymm3, 6176(%rsp) -vmovdqa 6208(%rsp), %ymm4 -vpsubw 6400(%rsp), %ymm4, %ymm4 -vpaddw %ymm11, %ymm4, %ymm4 -vpsubw 6016(%rsp), %ymm4, %ymm4 -vmovdqa %ymm4, 6208(%rsp) -vmovdqa 6208(%rsp), %ymm0 -vpsubw 3136(%r10), %ymm0, %ymm0 -vpsubw 3840(%r10), %ymm0, %ymm0 -vmovdqa %ymm0, 3488(%r10) -vmovdqa 3168(%r10), %ymm0 -vpsubw 3520(%r10), %ymm0, %ymm0 -vmovdqa 6240(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 3872(%r10), %ymm1, %ymm1 -vpsubw 2816(%r10), %ymm0, %ymm0 -vpaddw 5888(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3168(%r10) -vmovdqa %ymm1, 3520(%r10) -vmovdqa 3200(%r10), %ymm0 -vpsubw 3552(%r10), %ymm0, %ymm0 -vmovdqa 6272(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 3904(%r10), %ymm1, %ymm1 -vpsubw 2848(%r10), %ymm0, %ymm0 -vpaddw 5920(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3200(%r10) -vmovdqa %ymm1, 3552(%r10) -vmovdqa 3232(%r10), %ymm0 -vpsubw 3584(%r10), %ymm0, %ymm0 -vmovdqa 6304(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 3936(%r10), %ymm1, %ymm1 -vpsubw 2880(%r10), %ymm0, %ymm0 -vpaddw 5952(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3232(%r10) -vmovdqa %ymm1, 3584(%r10) -vmovdqa 3264(%r10), %ymm0 -vpsubw 3616(%r10), %ymm0, %ymm0 -vmovdqa 6336(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 3968(%r10), %ymm1, %ymm1 -vpsubw 2912(%r10), %ymm0, %ymm0 -vpaddw 5984(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3264(%r10) -vmovdqa %ymm1, 3616(%r10) -vmovdqa 3296(%r10), %ymm0 -vpsubw 3648(%r10), %ymm0, %ymm0 -vmovdqa 6368(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 4000(%r10), %ymm1, %ymm1 -vpsubw 2944(%r10), %ymm0, %ymm0 -vpaddw 6016(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3296(%r10) -vmovdqa %ymm1, 3648(%r10) -vmovdqa 3328(%r10), %ymm0 -vpsubw 3680(%r10), %ymm0, %ymm0 -vmovdqa 6400(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 4032(%r10), %ymm1, %ymm1 -vpsubw 2976(%r10), %ymm0, %ymm0 -vpaddw 6048(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3328(%r10) -vmovdqa %ymm1, 3680(%r10) -vmovdqa 3360(%r10), %ymm0 -vpsubw 3712(%r10), %ymm0, %ymm0 -vmovdqa 6432(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 4064(%r10), %ymm1, %ymm1 -vpsubw 3008(%r10), %ymm0, %ymm0 -vpaddw 6080(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3360(%r10) -vmovdqa %ymm1, 3712(%r10) -vmovdqa 3392(%r10), %ymm0 -vpsubw 3744(%r10), %ymm0, %ymm0 -vmovdqa 6464(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 4096(%r10), %ymm1, %ymm1 -vpsubw 3040(%r10), %ymm0, %ymm0 -vpaddw 6112(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3392(%r10) -vmovdqa %ymm1, 3744(%r10) -vmovdqa 3424(%r10), %ymm0 -vpsubw 3776(%r10), %ymm0, %ymm0 -vmovdqa 6496(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 4128(%r10), %ymm1, %ymm1 -vpsubw 3072(%r10), %ymm0, %ymm0 -vpaddw 6144(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3424(%r10) -vmovdqa %ymm1, 3776(%r10) -vmovdqa 3456(%r10), %ymm0 -vpsubw 3808(%r10), %ymm0, %ymm0 -vmovdqa 6528(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 4160(%r10), %ymm1, %ymm1 -vpsubw 3104(%r10), %ymm0, %ymm0 -vpaddw 6176(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3456(%r10) -vmovdqa %ymm1, 3808(%r10) -neg %ecx -jns done_1 -add $704, %r9 -add $1408, %r10 -jmp innerloop_1 -done_1: -sub $704, %r9 -sub $1408, %r10 -vmovdqa 0(%r9), %ymm0 -vpaddw 704(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 6592(%rsp) -vmovdqa 1408(%r9), %ymm0 -vpaddw 2112(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7296(%rsp) -vmovdqa 32(%r9), %ymm0 -vpaddw 736(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 6624(%rsp) -vmovdqa 1440(%r9), %ymm0 -vpaddw 2144(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7328(%rsp) -vmovdqa 64(%r9), %ymm0 -vpaddw 768(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 6656(%rsp) -vmovdqa 1472(%r9), %ymm0 -vpaddw 2176(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7360(%rsp) -vmovdqa 96(%r9), %ymm0 -vpaddw 800(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 6688(%rsp) -vmovdqa 1504(%r9), %ymm0 -vpaddw 2208(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7392(%rsp) -vmovdqa 128(%r9), %ymm0 -vpaddw 832(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 6720(%rsp) -vmovdqa 1536(%r9), %ymm0 -vpaddw 2240(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7424(%rsp) -vmovdqa 160(%r9), %ymm0 -vpaddw 864(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 6752(%rsp) -vmovdqa 1568(%r9), %ymm0 -vpaddw 2272(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7456(%rsp) -vmovdqa 192(%r9), %ymm0 -vpaddw 896(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 6784(%rsp) -vmovdqa 1600(%r9), %ymm0 -vpaddw 2304(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7488(%rsp) -vmovdqa 224(%r9), %ymm0 -vpaddw 928(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 6816(%rsp) -vmovdqa 1632(%r9), %ymm0 -vpaddw 2336(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7520(%rsp) -vmovdqa 256(%r9), %ymm0 -vpaddw 960(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 6848(%rsp) -vmovdqa 1664(%r9), %ymm0 -vpaddw 2368(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7552(%rsp) -vmovdqa 288(%r9), %ymm0 -vpaddw 992(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 6880(%rsp) -vmovdqa 1696(%r9), %ymm0 -vpaddw 2400(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7584(%rsp) -vmovdqa 320(%r9), %ymm0 -vpaddw 1024(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 6912(%rsp) -vmovdqa 1728(%r9), %ymm0 -vpaddw 2432(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7616(%rsp) -vmovdqa 352(%r9), %ymm0 -vpaddw 1056(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 6944(%rsp) -vmovdqa 1760(%r9), %ymm0 -vpaddw 2464(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7648(%rsp) -vmovdqa 384(%r9), %ymm0 -vpaddw 1088(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 6976(%rsp) -vmovdqa 1792(%r9), %ymm0 -vpaddw 2496(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7680(%rsp) -vmovdqa 416(%r9), %ymm0 -vpaddw 1120(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7008(%rsp) -vmovdqa 1824(%r9), %ymm0 -vpaddw 2528(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7712(%rsp) -vmovdqa 448(%r9), %ymm0 -vpaddw 1152(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7040(%rsp) -vmovdqa 1856(%r9), %ymm0 -vpaddw 2560(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7744(%rsp) -vmovdqa 480(%r9), %ymm0 -vpaddw 1184(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7072(%rsp) -vmovdqa 1888(%r9), %ymm0 -vpaddw 2592(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7776(%rsp) -vmovdqa 512(%r9), %ymm0 -vpaddw 1216(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7104(%rsp) -vmovdqa 1920(%r9), %ymm0 -vpaddw 2624(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7808(%rsp) -vmovdqa 544(%r9), %ymm0 -vpaddw 1248(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7136(%rsp) -vmovdqa 1952(%r9), %ymm0 -vpaddw 2656(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7840(%rsp) -vmovdqa 576(%r9), %ymm0 -vpaddw 1280(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7168(%rsp) -vmovdqa 1984(%r9), %ymm0 -vpaddw 2688(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7872(%rsp) -vmovdqa 608(%r9), %ymm0 -vpaddw 1312(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7200(%rsp) -vmovdqa 2016(%r9), %ymm0 -vpaddw 2720(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7904(%rsp) -vmovdqa 640(%r9), %ymm0 -vpaddw 1344(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7232(%rsp) -vmovdqa 2048(%r9), %ymm0 -vpaddw 2752(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7936(%rsp) -vmovdqa 672(%r9), %ymm0 -vpaddw 1376(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7264(%rsp) -vmovdqa 2080(%r9), %ymm0 -vpaddw 2784(%r9), %ymm0, %ymm0 -vmovdqa %ymm0, 7968(%rsp) -vmovdqa 6592(%rsp), %ymm0 -vmovdqa 7296(%rsp), %ymm6 -vmovdqa 6624(%rsp), %ymm1 -vmovdqa 7328(%rsp), %ymm7 -vmovdqa 6656(%rsp), %ymm2 -vmovdqa 7360(%rsp), %ymm8 -vmovdqa 6688(%rsp), %ymm3 -vmovdqa 7392(%rsp), %ymm9 -vmovdqa 6720(%rsp), %ymm4 -vmovdqa 7424(%rsp), %ymm10 -vmovdqa 6752(%rsp), %ymm5 -vmovdqa 7456(%rsp), %ymm11 -vpmullw %ymm0, %ymm6, %ymm12 -vmovdqa %ymm12, 8000(%rsp) -vpmullw %ymm0, %ymm7, %ymm13 -vpmullw %ymm1, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 8032(%rsp) -vpmullw %ymm0, %ymm8, %ymm12 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 8064(%rsp) -vpmullw %ymm0, %ymm9, %ymm13 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 8096(%rsp) -vpmullw %ymm0, %ymm10, %ymm12 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 8128(%rsp) -vpmullw %ymm0, %ymm11, %ymm13 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm5, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 8160(%rsp) -vpmullw %ymm1, %ymm11, %ymm12 -vpmullw %ymm2, %ymm10, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm5, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 8192(%rsp) -vpmullw %ymm2, %ymm11, %ymm13 -vpmullw %ymm3, %ymm10, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm5, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 8224(%rsp) -vpmullw %ymm3, %ymm11, %ymm12 -vpmullw %ymm4, %ymm10, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm5, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 8256(%rsp) -vpmullw %ymm4, %ymm11, %ymm13 -vpmullw %ymm5, %ymm10, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 8288(%rsp) -vpmullw %ymm5, %ymm11, %ymm12 -vmovdqa %ymm12, 8320(%rsp) -vmovdqa 6784(%rsp), %ymm0 -vmovdqa 7488(%rsp), %ymm6 -vmovdqa 6816(%rsp), %ymm1 -vmovdqa 7520(%rsp), %ymm7 -vmovdqa 6848(%rsp), %ymm2 -vmovdqa 7552(%rsp), %ymm8 -vmovdqa 6880(%rsp), %ymm3 -vmovdqa 7584(%rsp), %ymm9 -vmovdqa 6912(%rsp), %ymm4 -vmovdqa 7616(%rsp), %ymm10 -vpmullw %ymm0, %ymm6, %ymm12 -vmovdqa %ymm12, 8384(%rsp) -vpmullw %ymm0, %ymm7, %ymm13 -vpmullw %ymm1, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 8416(%rsp) -vpmullw %ymm0, %ymm8, %ymm12 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 8448(%rsp) -vpmullw %ymm0, %ymm9, %ymm13 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 8480(%rsp) -vpmullw %ymm0, %ymm10, %ymm12 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 8512(%rsp) -vpmullw %ymm1, %ymm10, %ymm13 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 8544(%rsp) -vpmullw %ymm2, %ymm10, %ymm12 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 8576(%rsp) -vpmullw %ymm3, %ymm10, %ymm13 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 8608(%rsp) -vpmullw %ymm4, %ymm10, %ymm12 -vmovdqa %ymm12, 8640(%rsp) -vpaddw 6592(%rsp), %ymm0, %ymm0 -vpaddw 7296(%rsp), %ymm6, %ymm6 -vpaddw 6624(%rsp), %ymm1, %ymm1 -vpaddw 7328(%rsp), %ymm7, %ymm7 -vpaddw 6656(%rsp), %ymm2, %ymm2 -vpaddw 7360(%rsp), %ymm8, %ymm8 -vpaddw 6688(%rsp), %ymm3, %ymm3 -vpaddw 7392(%rsp), %ymm9, %ymm9 -vpaddw 6720(%rsp), %ymm4, %ymm4 -vpaddw 7424(%rsp), %ymm10, %ymm10 -vpmullw %ymm0, %ymm11, %ymm12 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm5, %ymm6, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpsubw 8160(%rsp), %ymm12, %ymm12 -vpsubw 8544(%rsp), %ymm12, %ymm12 -vmovdqa %ymm12, 8352(%rsp) -vpmullw %ymm5, %ymm7, %ymm12 -vpmullw %ymm5, %ymm8, %ymm13 -vpmullw %ymm5, %ymm9, %ymm14 -vpmullw %ymm5, %ymm10, %ymm15 -vpmullw %ymm1, %ymm11, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm2, %ymm10, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm3, %ymm9, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm4, %ymm8, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm2, %ymm11, %ymm5 -vpaddw %ymm5, %ymm13, %ymm13 -vpmullw %ymm3, %ymm10, %ymm5 -vpaddw %ymm5, %ymm13, %ymm13 -vpmullw %ymm4, %ymm9, %ymm5 -vpaddw %ymm5, %ymm13, %ymm13 -vpmullw %ymm3, %ymm11, %ymm5 -vpaddw %ymm5, %ymm14, %ymm14 -vpmullw %ymm4, %ymm10, %ymm5 -vpaddw %ymm5, %ymm14, %ymm14 -vpmullw %ymm4, %ymm11, %ymm5 -vpaddw %ymm5, %ymm15, %ymm15 -vpmullw %ymm0, %ymm10, %ymm11 -vpmullw %ymm1, %ymm9, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm2, %ymm8, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm3, %ymm7, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm4, %ymm6, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm0, %ymm9, %ymm10 -vpmullw %ymm1, %ymm8, %ymm5 -vpaddw %ymm5, %ymm10, %ymm10 -vpmullw %ymm2, %ymm7, %ymm5 -vpaddw %ymm5, %ymm10, %ymm10 -vpmullw %ymm3, %ymm6, %ymm5 -vpaddw %ymm5, %ymm10, %ymm10 -vpmullw %ymm0, %ymm8, %ymm9 -vpmullw %ymm1, %ymm7, %ymm5 -vpaddw %ymm5, %ymm9, %ymm9 -vpmullw %ymm2, %ymm6, %ymm5 -vpaddw %ymm5, %ymm9, %ymm9 -vpmullw %ymm0, %ymm7, %ymm8 -vpmullw %ymm1, %ymm6, %ymm5 -vpaddw %ymm5, %ymm8, %ymm8 -vpmullw %ymm0, %ymm6, %ymm7 -vmovdqa 8192(%rsp), %ymm0 -vpsubw 8384(%rsp), %ymm0, %ymm0 -vpsubw %ymm0, %ymm12, %ymm6 -vpsubw 8576(%rsp), %ymm6, %ymm6 -vmovdqa %ymm6, 8384(%rsp) -vpaddw %ymm7, %ymm0, %ymm0 -vpsubw 8000(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 8192(%rsp) -vmovdqa 8224(%rsp), %ymm1 -vpsubw 8416(%rsp), %ymm1, %ymm1 -vpsubw %ymm1, %ymm13, %ymm7 -vpsubw 8608(%rsp), %ymm7, %ymm7 -vmovdqa %ymm7, 8416(%rsp) -vpaddw %ymm8, %ymm1, %ymm1 -vpsubw 8032(%rsp), %ymm1, %ymm1 -vmovdqa %ymm1, 8224(%rsp) -vmovdqa 8256(%rsp), %ymm2 -vpsubw 8448(%rsp), %ymm2, %ymm2 -vpsubw %ymm2, %ymm14, %ymm8 -vpsubw 8640(%rsp), %ymm8, %ymm8 -vmovdqa %ymm8, 8448(%rsp) -vpaddw %ymm9, %ymm2, %ymm2 -vpsubw 8064(%rsp), %ymm2, %ymm2 -vmovdqa %ymm2, 8256(%rsp) -vmovdqa 8288(%rsp), %ymm3 -vpsubw 8480(%rsp), %ymm3, %ymm3 -vpsubw %ymm3, %ymm15, %ymm9 -vmovdqa %ymm9, 8480(%rsp) -vpaddw %ymm10, %ymm3, %ymm3 -vpsubw 8096(%rsp), %ymm3, %ymm3 -vmovdqa %ymm3, 8288(%rsp) -vmovdqa 8320(%rsp), %ymm4 -vpsubw 8512(%rsp), %ymm4, %ymm4 -vpaddw %ymm11, %ymm4, %ymm4 -vpsubw 8128(%rsp), %ymm4, %ymm4 -vmovdqa %ymm4, 8320(%rsp) -vmovdqa 6944(%rsp), %ymm0 -vmovdqa 7648(%rsp), %ymm6 -vmovdqa 6976(%rsp), %ymm1 -vmovdqa 7680(%rsp), %ymm7 -vmovdqa 7008(%rsp), %ymm2 -vmovdqa 7712(%rsp), %ymm8 -vmovdqa 7040(%rsp), %ymm3 -vmovdqa 7744(%rsp), %ymm9 -vmovdqa 7072(%rsp), %ymm4 -vmovdqa 7776(%rsp), %ymm10 -vmovdqa 7104(%rsp), %ymm5 -vmovdqa 7808(%rsp), %ymm11 -vpmullw %ymm0, %ymm6, %ymm12 -vmovdqa %ymm12, 8704(%rsp) -vpmullw %ymm0, %ymm7, %ymm13 -vpmullw %ymm1, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 8736(%rsp) -vpmullw %ymm0, %ymm8, %ymm12 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 8768(%rsp) -vpmullw %ymm0, %ymm9, %ymm13 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 8800(%rsp) -vpmullw %ymm0, %ymm10, %ymm12 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 8832(%rsp) -vpmullw %ymm0, %ymm11, %ymm13 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm5, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 8864(%rsp) -vpmullw %ymm1, %ymm11, %ymm12 -vpmullw %ymm2, %ymm10, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm5, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 8896(%rsp) -vpmullw %ymm2, %ymm11, %ymm13 -vpmullw %ymm3, %ymm10, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm5, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 8928(%rsp) -vpmullw %ymm3, %ymm11, %ymm12 -vpmullw %ymm4, %ymm10, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm5, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 8960(%rsp) -vpmullw %ymm4, %ymm11, %ymm13 -vpmullw %ymm5, %ymm10, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 8992(%rsp) -vpmullw %ymm5, %ymm11, %ymm12 -vmovdqa %ymm12, 9024(%rsp) -vmovdqa 7136(%rsp), %ymm0 -vmovdqa 7840(%rsp), %ymm6 -vmovdqa 7168(%rsp), %ymm1 -vmovdqa 7872(%rsp), %ymm7 -vmovdqa 7200(%rsp), %ymm2 -vmovdqa 7904(%rsp), %ymm8 -vmovdqa 7232(%rsp), %ymm3 -vmovdqa 7936(%rsp), %ymm9 -vmovdqa 7264(%rsp), %ymm4 -vmovdqa 7968(%rsp), %ymm10 -vpmullw %ymm0, %ymm6, %ymm12 -vmovdqa %ymm12, 9088(%rsp) -vpmullw %ymm0, %ymm7, %ymm13 -vpmullw %ymm1, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 9120(%rsp) -vpmullw %ymm0, %ymm8, %ymm12 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 9152(%rsp) -vpmullw %ymm0, %ymm9, %ymm13 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 9184(%rsp) -vpmullw %ymm0, %ymm10, %ymm12 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 9216(%rsp) -vpmullw %ymm1, %ymm10, %ymm13 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 9248(%rsp) -vpmullw %ymm2, %ymm10, %ymm12 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 9280(%rsp) -vpmullw %ymm3, %ymm10, %ymm13 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 9312(%rsp) -vpmullw %ymm4, %ymm10, %ymm12 -vmovdqa %ymm12, 9344(%rsp) -vpaddw 6944(%rsp), %ymm0, %ymm0 -vpaddw 7648(%rsp), %ymm6, %ymm6 -vpaddw 6976(%rsp), %ymm1, %ymm1 -vpaddw 7680(%rsp), %ymm7, %ymm7 -vpaddw 7008(%rsp), %ymm2, %ymm2 -vpaddw 7712(%rsp), %ymm8, %ymm8 -vpaddw 7040(%rsp), %ymm3, %ymm3 -vpaddw 7744(%rsp), %ymm9, %ymm9 -vpaddw 7072(%rsp), %ymm4, %ymm4 -vpaddw 7776(%rsp), %ymm10, %ymm10 -vpmullw %ymm0, %ymm11, %ymm12 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm5, %ymm6, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpsubw 8864(%rsp), %ymm12, %ymm12 -vpsubw 9248(%rsp), %ymm12, %ymm12 -vmovdqa %ymm12, 9056(%rsp) -vpmullw %ymm5, %ymm7, %ymm12 -vpmullw %ymm5, %ymm8, %ymm13 -vpmullw %ymm5, %ymm9, %ymm14 -vpmullw %ymm5, %ymm10, %ymm15 -vpmullw %ymm1, %ymm11, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm2, %ymm10, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm3, %ymm9, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm4, %ymm8, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm2, %ymm11, %ymm5 -vpaddw %ymm5, %ymm13, %ymm13 -vpmullw %ymm3, %ymm10, %ymm5 -vpaddw %ymm5, %ymm13, %ymm13 -vpmullw %ymm4, %ymm9, %ymm5 -vpaddw %ymm5, %ymm13, %ymm13 -vpmullw %ymm3, %ymm11, %ymm5 -vpaddw %ymm5, %ymm14, %ymm14 -vpmullw %ymm4, %ymm10, %ymm5 -vpaddw %ymm5, %ymm14, %ymm14 -vpmullw %ymm4, %ymm11, %ymm5 -vpaddw %ymm5, %ymm15, %ymm15 -vpmullw %ymm0, %ymm10, %ymm11 -vpmullw %ymm1, %ymm9, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm2, %ymm8, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm3, %ymm7, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm4, %ymm6, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm0, %ymm9, %ymm10 -vpmullw %ymm1, %ymm8, %ymm5 -vpaddw %ymm5, %ymm10, %ymm10 -vpmullw %ymm2, %ymm7, %ymm5 -vpaddw %ymm5, %ymm10, %ymm10 -vpmullw %ymm3, %ymm6, %ymm5 -vpaddw %ymm5, %ymm10, %ymm10 -vpmullw %ymm0, %ymm8, %ymm9 -vpmullw %ymm1, %ymm7, %ymm5 -vpaddw %ymm5, %ymm9, %ymm9 -vpmullw %ymm2, %ymm6, %ymm5 -vpaddw %ymm5, %ymm9, %ymm9 -vpmullw %ymm0, %ymm7, %ymm8 -vpmullw %ymm1, %ymm6, %ymm5 -vpaddw %ymm5, %ymm8, %ymm8 -vpmullw %ymm0, %ymm6, %ymm7 -vmovdqa 8896(%rsp), %ymm0 -vpsubw 9088(%rsp), %ymm0, %ymm0 -vpsubw %ymm0, %ymm12, %ymm6 -vpsubw 9280(%rsp), %ymm6, %ymm6 -vmovdqa %ymm6, 9088(%rsp) -vpaddw %ymm7, %ymm0, %ymm0 -vpsubw 8704(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 8896(%rsp) -vmovdqa 8928(%rsp), %ymm1 -vpsubw 9120(%rsp), %ymm1, %ymm1 -vpsubw %ymm1, %ymm13, %ymm7 -vpsubw 9312(%rsp), %ymm7, %ymm7 -vmovdqa %ymm7, 9120(%rsp) -vpaddw %ymm8, %ymm1, %ymm1 -vpsubw 8736(%rsp), %ymm1, %ymm1 -vmovdqa %ymm1, 8928(%rsp) -vmovdqa 8960(%rsp), %ymm2 -vpsubw 9152(%rsp), %ymm2, %ymm2 -vpsubw %ymm2, %ymm14, %ymm8 -vpsubw 9344(%rsp), %ymm8, %ymm8 -vmovdqa %ymm8, 9152(%rsp) -vpaddw %ymm9, %ymm2, %ymm2 -vpsubw 8768(%rsp), %ymm2, %ymm2 -vmovdqa %ymm2, 8960(%rsp) -vmovdqa 8992(%rsp), %ymm3 -vpsubw 9184(%rsp), %ymm3, %ymm3 -vpsubw %ymm3, %ymm15, %ymm9 -vmovdqa %ymm9, 9184(%rsp) -vpaddw %ymm10, %ymm3, %ymm3 -vpsubw 8800(%rsp), %ymm3, %ymm3 -vmovdqa %ymm3, 8992(%rsp) -vmovdqa 9024(%rsp), %ymm4 -vpsubw 9216(%rsp), %ymm4, %ymm4 -vpaddw %ymm11, %ymm4, %ymm4 -vpsubw 8832(%rsp), %ymm4, %ymm4 -vmovdqa %ymm4, 9024(%rsp) -vmovdqa 6592(%rsp), %ymm0 -vmovdqa 7296(%rsp), %ymm6 -vpaddw 6944(%rsp), %ymm0, %ymm0 -vpaddw 7648(%rsp), %ymm6, %ymm6 -vmovdqa 6624(%rsp), %ymm1 -vmovdqa 7328(%rsp), %ymm7 -vpaddw 6976(%rsp), %ymm1, %ymm1 -vpaddw 7680(%rsp), %ymm7, %ymm7 -vmovdqa 6656(%rsp), %ymm2 -vmovdqa 7360(%rsp), %ymm8 -vpaddw 7008(%rsp), %ymm2, %ymm2 -vpaddw 7712(%rsp), %ymm8, %ymm8 -vmovdqa 6688(%rsp), %ymm3 -vmovdqa 7392(%rsp), %ymm9 -vpaddw 7040(%rsp), %ymm3, %ymm3 -vpaddw 7744(%rsp), %ymm9, %ymm9 -vmovdqa 6720(%rsp), %ymm4 -vmovdqa 7424(%rsp), %ymm10 -vpaddw 7072(%rsp), %ymm4, %ymm4 -vpaddw 7776(%rsp), %ymm10, %ymm10 -vmovdqa 6752(%rsp), %ymm5 -vmovdqa 7456(%rsp), %ymm11 -vpaddw 7104(%rsp), %ymm5, %ymm5 -vpaddw 7808(%rsp), %ymm11, %ymm11 -vpmullw %ymm0, %ymm6, %ymm12 -vmovdqa %ymm12, 5888(%rsp) -vpmullw %ymm0, %ymm7, %ymm13 -vpmullw %ymm1, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 5920(%rsp) -vpmullw %ymm0, %ymm8, %ymm12 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 5952(%rsp) -vpmullw %ymm0, %ymm9, %ymm13 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 5984(%rsp) -vpmullw %ymm0, %ymm10, %ymm12 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 6016(%rsp) -vpmullw %ymm0, %ymm11, %ymm13 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm5, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 6048(%rsp) -vpmullw %ymm1, %ymm11, %ymm12 -vpmullw %ymm2, %ymm10, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm5, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 6080(%rsp) -vpmullw %ymm2, %ymm11, %ymm13 -vpmullw %ymm3, %ymm10, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm5, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 6112(%rsp) -vpmullw %ymm3, %ymm11, %ymm12 -vpmullw %ymm4, %ymm10, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm5, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 6144(%rsp) -vpmullw %ymm4, %ymm11, %ymm13 -vpmullw %ymm5, %ymm10, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 6176(%rsp) -vpmullw %ymm5, %ymm11, %ymm12 -vmovdqa %ymm12, 6208(%rsp) -vmovdqa 6784(%rsp), %ymm0 -vmovdqa 7488(%rsp), %ymm6 -vpaddw 7136(%rsp), %ymm0, %ymm0 -vpaddw 7840(%rsp), %ymm6, %ymm6 -vmovdqa 6816(%rsp), %ymm1 -vmovdqa 7520(%rsp), %ymm7 -vpaddw 7168(%rsp), %ymm1, %ymm1 -vpaddw 7872(%rsp), %ymm7, %ymm7 -vmovdqa 6848(%rsp), %ymm2 -vmovdqa 7552(%rsp), %ymm8 -vpaddw 7200(%rsp), %ymm2, %ymm2 -vpaddw 7904(%rsp), %ymm8, %ymm8 -vmovdqa 6880(%rsp), %ymm3 -vmovdqa 7584(%rsp), %ymm9 -vpaddw 7232(%rsp), %ymm3, %ymm3 -vpaddw 7936(%rsp), %ymm9, %ymm9 -vmovdqa 6912(%rsp), %ymm4 -vmovdqa 7616(%rsp), %ymm10 -vpaddw 7264(%rsp), %ymm4, %ymm4 -vpaddw 7968(%rsp), %ymm10, %ymm10 -vpmullw %ymm0, %ymm6, %ymm12 -vmovdqa %ymm12, 6272(%rsp) -vpmullw %ymm0, %ymm7, %ymm13 -vpmullw %ymm1, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 6304(%rsp) -vpmullw %ymm0, %ymm8, %ymm12 -vpmullw %ymm1, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 6336(%rsp) -vpmullw %ymm0, %ymm9, %ymm13 -vpmullw %ymm1, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm2, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm6, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 6368(%rsp) -vpmullw %ymm0, %ymm10, %ymm12 -vpmullw %ymm1, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm2, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm3, %ymm7, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm6, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 6400(%rsp) -vpmullw %ymm1, %ymm10, %ymm13 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 6432(%rsp) -vpmullw %ymm2, %ymm10, %ymm12 -vpmullw %ymm3, %ymm9, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vpmullw %ymm4, %ymm8, %ymm15 -vpaddw %ymm12, %ymm15, %ymm12 -vmovdqa %ymm12, 6464(%rsp) -vpmullw %ymm3, %ymm10, %ymm13 -vpmullw %ymm4, %ymm9, %ymm15 -vpaddw %ymm13, %ymm15, %ymm13 -vmovdqa %ymm13, 6496(%rsp) -vpmullw %ymm4, %ymm10, %ymm12 -vmovdqa %ymm12, 6528(%rsp) -vpaddw 6592(%rsp), %ymm0, %ymm0 -vpaddw 7296(%rsp), %ymm6, %ymm6 -vpaddw 6944(%rsp), %ymm0, %ymm0 -vpaddw 7648(%rsp), %ymm6, %ymm6 -vpaddw 6624(%rsp), %ymm1, %ymm1 -vpaddw 7328(%rsp), %ymm7, %ymm7 -vpaddw 6976(%rsp), %ymm1, %ymm1 -vpaddw 7680(%rsp), %ymm7, %ymm7 -vpaddw 6656(%rsp), %ymm2, %ymm2 -vpaddw 7360(%rsp), %ymm8, %ymm8 -vpaddw 7008(%rsp), %ymm2, %ymm2 -vpaddw 7712(%rsp), %ymm8, %ymm8 -vpaddw 6688(%rsp), %ymm3, %ymm3 -vpaddw 7392(%rsp), %ymm9, %ymm9 -vpaddw 7040(%rsp), %ymm3, %ymm3 -vpaddw 7744(%rsp), %ymm9, %ymm9 -vpaddw 6720(%rsp), %ymm4, %ymm4 -vpaddw 7424(%rsp), %ymm10, %ymm10 -vpaddw 7072(%rsp), %ymm4, %ymm4 -vpaddw 7776(%rsp), %ymm10, %ymm10 -vpmullw %ymm0, %ymm11, %ymm12 -vpmullw %ymm1, %ymm10, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm2, %ymm9, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm3, %ymm8, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm4, %ymm7, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpmullw %ymm5, %ymm6, %ymm15 -vpaddw %ymm15, %ymm12, %ymm12 -vpsubw 6048(%rsp), %ymm12, %ymm12 -vpsubw 6432(%rsp), %ymm12, %ymm12 -vmovdqa %ymm12, 6240(%rsp) -vpmullw %ymm5, %ymm7, %ymm12 -vpmullw %ymm5, %ymm8, %ymm13 -vpmullw %ymm5, %ymm9, %ymm14 -vpmullw %ymm5, %ymm10, %ymm15 -vpmullw %ymm1, %ymm11, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm2, %ymm10, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm3, %ymm9, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm4, %ymm8, %ymm5 -vpaddw %ymm5, %ymm12, %ymm12 -vpmullw %ymm2, %ymm11, %ymm5 -vpaddw %ymm5, %ymm13, %ymm13 -vpmullw %ymm3, %ymm10, %ymm5 -vpaddw %ymm5, %ymm13, %ymm13 -vpmullw %ymm4, %ymm9, %ymm5 -vpaddw %ymm5, %ymm13, %ymm13 -vpmullw %ymm3, %ymm11, %ymm5 -vpaddw %ymm5, %ymm14, %ymm14 -vpmullw %ymm4, %ymm10, %ymm5 -vpaddw %ymm5, %ymm14, %ymm14 -vpmullw %ymm4, %ymm11, %ymm5 -vpaddw %ymm5, %ymm15, %ymm15 -vpmullw %ymm0, %ymm10, %ymm11 -vpmullw %ymm1, %ymm9, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm2, %ymm8, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm3, %ymm7, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm4, %ymm6, %ymm5 -vpaddw %ymm5, %ymm11, %ymm11 -vpmullw %ymm0, %ymm9, %ymm10 -vpmullw %ymm1, %ymm8, %ymm5 -vpaddw %ymm5, %ymm10, %ymm10 -vpmullw %ymm2, %ymm7, %ymm5 -vpaddw %ymm5, %ymm10, %ymm10 -vpmullw %ymm3, %ymm6, %ymm5 -vpaddw %ymm5, %ymm10, %ymm10 -vpmullw %ymm0, %ymm8, %ymm9 -vpmullw %ymm1, %ymm7, %ymm5 -vpaddw %ymm5, %ymm9, %ymm9 -vpmullw %ymm2, %ymm6, %ymm5 -vpaddw %ymm5, %ymm9, %ymm9 -vpmullw %ymm0, %ymm7, %ymm8 -vpmullw %ymm1, %ymm6, %ymm5 -vpaddw %ymm5, %ymm8, %ymm8 -vpmullw %ymm0, %ymm6, %ymm7 -vmovdqa 6080(%rsp), %ymm0 -vpsubw 6272(%rsp), %ymm0, %ymm0 -vpsubw %ymm0, %ymm12, %ymm6 -vpsubw 6464(%rsp), %ymm6, %ymm6 -vmovdqa %ymm6, 6272(%rsp) -vpaddw %ymm7, %ymm0, %ymm0 -vpsubw 5888(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 6080(%rsp) -vmovdqa 6112(%rsp), %ymm1 -vpsubw 6304(%rsp), %ymm1, %ymm1 -vpsubw %ymm1, %ymm13, %ymm7 -vpsubw 6496(%rsp), %ymm7, %ymm7 -vmovdqa %ymm7, 6304(%rsp) -vpaddw %ymm8, %ymm1, %ymm1 -vpsubw 5920(%rsp), %ymm1, %ymm1 -vmovdqa %ymm1, 6112(%rsp) -vmovdqa 6144(%rsp), %ymm2 -vpsubw 6336(%rsp), %ymm2, %ymm2 -vpsubw %ymm2, %ymm14, %ymm8 -vpsubw 6528(%rsp), %ymm8, %ymm8 -vmovdqa %ymm8, 6336(%rsp) -vpaddw %ymm9, %ymm2, %ymm2 -vpsubw 5952(%rsp), %ymm2, %ymm2 -vmovdqa %ymm2, 6144(%rsp) -vmovdqa 6176(%rsp), %ymm3 -vpsubw 6368(%rsp), %ymm3, %ymm3 -vpsubw %ymm3, %ymm15, %ymm9 -vmovdqa %ymm9, 6368(%rsp) -vpaddw %ymm10, %ymm3, %ymm3 -vpsubw 5984(%rsp), %ymm3, %ymm3 -vmovdqa %ymm3, 6176(%rsp) -vmovdqa 6208(%rsp), %ymm4 -vpsubw 6400(%rsp), %ymm4, %ymm4 -vpaddw %ymm11, %ymm4, %ymm4 -vpsubw 6016(%rsp), %ymm4, %ymm4 -vmovdqa %ymm4, 6208(%rsp) -vmovdqa 8352(%rsp), %ymm0 -vpsubw 8704(%rsp), %ymm0, %ymm0 -vmovdqa 6240(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 9056(%rsp), %ymm1, %ymm6 -vpsubw 8000(%rsp), %ymm0, %ymm0 -vpaddw 5888(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 8352(%rsp) -vmovdqa 8384(%rsp), %ymm0 -vpsubw 8736(%rsp), %ymm0, %ymm0 -vmovdqa 6272(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 9088(%rsp), %ymm1, %ymm7 -vpsubw 8032(%rsp), %ymm0, %ymm0 -vpaddw 5920(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 8384(%rsp) -vmovdqa 8416(%rsp), %ymm0 -vpsubw 8768(%rsp), %ymm0, %ymm0 -vmovdqa 6304(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 9120(%rsp), %ymm1, %ymm8 -vpsubw 8064(%rsp), %ymm0, %ymm0 -vpaddw 5952(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 8416(%rsp) -vmovdqa 8448(%rsp), %ymm0 -vpsubw 8800(%rsp), %ymm0, %ymm0 -vmovdqa 6336(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 9152(%rsp), %ymm1, %ymm9 -vpsubw 8096(%rsp), %ymm0, %ymm0 -vpaddw 5984(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 8448(%rsp) -vmovdqa 8480(%rsp), %ymm0 -vpsubw 8832(%rsp), %ymm0, %ymm0 -vmovdqa 6368(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 9184(%rsp), %ymm1, %ymm10 -vpsubw 8128(%rsp), %ymm0, %ymm0 -vpaddw 6016(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 8480(%rsp) -vmovdqa 8512(%rsp), %ymm0 -vpsubw 8864(%rsp), %ymm0, %ymm0 -vmovdqa 6400(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 9216(%rsp), %ymm1, %ymm11 -vpsubw 8160(%rsp), %ymm0, %ymm0 -vpaddw 6048(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 8512(%rsp) -vmovdqa 8544(%rsp), %ymm0 -vpsubw 8896(%rsp), %ymm0, %ymm0 -vmovdqa 6432(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 9248(%rsp), %ymm1, %ymm12 -vpsubw 8192(%rsp), %ymm0, %ymm0 -vpaddw 6080(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 8544(%rsp) -vmovdqa 8576(%rsp), %ymm0 -vpsubw 8928(%rsp), %ymm0, %ymm0 -vmovdqa 6464(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 9280(%rsp), %ymm1, %ymm13 -vpsubw 8224(%rsp), %ymm0, %ymm0 -vpaddw 6112(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 8576(%rsp) -vmovdqa 8608(%rsp), %ymm0 -vpsubw 8960(%rsp), %ymm0, %ymm0 -vmovdqa 6496(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 9312(%rsp), %ymm1, %ymm14 -vpsubw 8256(%rsp), %ymm0, %ymm0 -vpaddw 6144(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 8608(%rsp) -vmovdqa 8640(%rsp), %ymm0 -vpsubw 8992(%rsp), %ymm0, %ymm0 -vmovdqa 6528(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 9344(%rsp), %ymm1, %ymm15 -vpsubw 8288(%rsp), %ymm0, %ymm0 -vpaddw 6176(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 8640(%rsp) -vmovdqa 6208(%rsp), %ymm0 -vpsubw 8320(%rsp), %ymm0, %ymm0 -vpsubw 9024(%rsp), %ymm0, %ymm0 -vpsubw 3488(%r10), %ymm0, %ymm0 -vpsubw 4896(%r10), %ymm0, %ymm0 -vmovdqa %ymm0, 4192(%r10) -vmovdqa 3520(%r10), %ymm0 -vpsubw 4224(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm6, %ymm6 -vpsubw 4928(%r10), %ymm6, %ymm6 -vpsubw 2816(%r10), %ymm0, %ymm0 -vpaddw 8000(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3520(%r10) -vmovdqa %ymm6, 4224(%r10) -vmovdqa 3552(%r10), %ymm0 -vpsubw 4256(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm7, %ymm7 -vpsubw 4960(%r10), %ymm7, %ymm7 -vpsubw 2848(%r10), %ymm0, %ymm0 -vpaddw 8032(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3552(%r10) -vmovdqa %ymm7, 4256(%r10) -vmovdqa 3584(%r10), %ymm0 -vpsubw 4288(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm8, %ymm8 -vpsubw 4992(%r10), %ymm8, %ymm8 -vpsubw 2880(%r10), %ymm0, %ymm0 -vpaddw 8064(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3584(%r10) -vmovdqa %ymm8, 4288(%r10) -vmovdqa 3616(%r10), %ymm0 -vpsubw 4320(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm9, %ymm9 -vpsubw 5024(%r10), %ymm9, %ymm9 -vpsubw 2912(%r10), %ymm0, %ymm0 -vpaddw 8096(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3616(%r10) -vmovdqa %ymm9, 4320(%r10) -vmovdqa 3648(%r10), %ymm0 -vpsubw 4352(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm10, %ymm10 -vpsubw 5056(%r10), %ymm10, %ymm10 -vpsubw 2944(%r10), %ymm0, %ymm0 -vpaddw 8128(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3648(%r10) -vmovdqa %ymm10, 4352(%r10) -vmovdqa 3680(%r10), %ymm0 -vpsubw 4384(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm11, %ymm11 -vpsubw 5088(%r10), %ymm11, %ymm11 -vpsubw 2976(%r10), %ymm0, %ymm0 -vpaddw 8160(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3680(%r10) -vmovdqa %ymm11, 4384(%r10) -vmovdqa 3712(%r10), %ymm0 -vpsubw 4416(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm12, %ymm12 -vpsubw 5120(%r10), %ymm12, %ymm12 -vpsubw 3008(%r10), %ymm0, %ymm0 -vpaddw 8192(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3712(%r10) -vmovdqa %ymm12, 4416(%r10) -vmovdqa 3744(%r10), %ymm0 -vpsubw 4448(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm13, %ymm13 -vpsubw 5152(%r10), %ymm13, %ymm13 -vpsubw 3040(%r10), %ymm0, %ymm0 -vpaddw 8224(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3744(%r10) -vmovdqa %ymm13, 4448(%r10) -vmovdqa 3776(%r10), %ymm0 -vpsubw 4480(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm14, %ymm14 -vpsubw 5184(%r10), %ymm14, %ymm14 -vpsubw 3072(%r10), %ymm0, %ymm0 -vpaddw 8256(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3776(%r10) -vmovdqa %ymm14, 4480(%r10) -vmovdqa 3808(%r10), %ymm0 -vpsubw 4512(%r10), %ymm0, %ymm0 -vpsubw %ymm0, %ymm15, %ymm15 -vpsubw 5216(%r10), %ymm15, %ymm15 -vpsubw 3104(%r10), %ymm0, %ymm0 -vpaddw 8288(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3808(%r10) -vmovdqa %ymm15, 4512(%r10) -vmovdqa 3840(%r10), %ymm0 -vpsubw 4544(%r10), %ymm0, %ymm0 -vmovdqa 9024(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 5248(%r10), %ymm1, %ymm1 -vpsubw 3136(%r10), %ymm0, %ymm0 -vpaddw 8320(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3840(%r10) -vmovdqa %ymm1, 4544(%r10) -vmovdqa 3872(%r10), %ymm0 -vpsubw 4576(%r10), %ymm0, %ymm0 -vmovdqa 9056(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 5280(%r10), %ymm1, %ymm1 -vpsubw 3168(%r10), %ymm0, %ymm0 -vpaddw 8352(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3872(%r10) -vmovdqa %ymm1, 4576(%r10) -vmovdqa 3904(%r10), %ymm0 -vpsubw 4608(%r10), %ymm0, %ymm0 -vmovdqa 9088(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 5312(%r10), %ymm1, %ymm1 -vpsubw 3200(%r10), %ymm0, %ymm0 -vpaddw 8384(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3904(%r10) -vmovdqa %ymm1, 4608(%r10) -vmovdqa 3936(%r10), %ymm0 -vpsubw 4640(%r10), %ymm0, %ymm0 -vmovdqa 9120(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 5344(%r10), %ymm1, %ymm1 -vpsubw 3232(%r10), %ymm0, %ymm0 -vpaddw 8416(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3936(%r10) -vmovdqa %ymm1, 4640(%r10) -vmovdqa 3968(%r10), %ymm0 -vpsubw 4672(%r10), %ymm0, %ymm0 -vmovdqa 9152(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 5376(%r10), %ymm1, %ymm1 -vpsubw 3264(%r10), %ymm0, %ymm0 -vpaddw 8448(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 3968(%r10) -vmovdqa %ymm1, 4672(%r10) -vmovdqa 4000(%r10), %ymm0 -vpsubw 4704(%r10), %ymm0, %ymm0 -vmovdqa 9184(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 5408(%r10), %ymm1, %ymm1 -vpsubw 3296(%r10), %ymm0, %ymm0 -vpaddw 8480(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4000(%r10) -vmovdqa %ymm1, 4704(%r10) -vmovdqa 4032(%r10), %ymm0 -vpsubw 4736(%r10), %ymm0, %ymm0 -vmovdqa 9216(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 5440(%r10), %ymm1, %ymm1 -vpsubw 3328(%r10), %ymm0, %ymm0 -vpaddw 8512(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4032(%r10) -vmovdqa %ymm1, 4736(%r10) -vmovdqa 4064(%r10), %ymm0 -vpsubw 4768(%r10), %ymm0, %ymm0 -vmovdqa 9248(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 5472(%r10), %ymm1, %ymm1 -vpsubw 3360(%r10), %ymm0, %ymm0 -vpaddw 8544(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4064(%r10) -vmovdqa %ymm1, 4768(%r10) -vmovdqa 4096(%r10), %ymm0 -vpsubw 4800(%r10), %ymm0, %ymm0 -vmovdqa 9280(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 5504(%r10), %ymm1, %ymm1 -vpsubw 3392(%r10), %ymm0, %ymm0 -vpaddw 8576(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4096(%r10) -vmovdqa %ymm1, 4800(%r10) -vmovdqa 4128(%r10), %ymm0 -vpsubw 4832(%r10), %ymm0, %ymm0 -vmovdqa 9312(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 5536(%r10), %ymm1, %ymm1 -vpsubw 3424(%r10), %ymm0, %ymm0 -vpaddw 8608(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4128(%r10) -vmovdqa %ymm1, 4832(%r10) -vmovdqa 4160(%r10), %ymm0 -vpsubw 4864(%r10), %ymm0, %ymm0 -vmovdqa 9344(%rsp), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 5568(%r10), %ymm1, %ymm1 -vpsubw 3456(%r10), %ymm0, %ymm0 -vpaddw 8640(%rsp), %ymm0, %ymm0 -vmovdqa %ymm0, 4160(%r10) -vmovdqa %ymm1, 4864(%r10) -vpxor %ymm1, %ymm1, %ymm1 -vmovdqa %ymm1, 5600(%r10) -subq $32, %rsp -vmovdqa 2816(%r10), %ymm0 -vmovdqa 2880(%r10), %ymm1 -vmovdqa 2944(%r10), %ymm2 -vmovdqa 3008(%r10), %ymm3 -vpunpcklwd 2848(%r10), %ymm0, %ymm4 -vpunpckhwd 2848(%r10), %ymm0, %ymm5 -vpunpcklwd 2912(%r10), %ymm1, %ymm6 -vpunpckhwd 2912(%r10), %ymm1, %ymm7 -vpunpcklwd 2976(%r10), %ymm2, %ymm8 -vpunpckhwd 2976(%r10), %ymm2, %ymm9 -vpunpcklwd 3040(%r10), %ymm3, %ymm10 -vpunpckhwd 3040(%r10), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 3072(%r10), %ymm0 -vmovdqa 3136(%r10), %ymm1 -vmovdqa 3200(%r10), %ymm2 -vmovdqa 3264(%r10), %ymm3 -vpunpcklwd 3104(%r10), %ymm0, %ymm12 -vpunpckhwd 3104(%r10), %ymm0, %ymm13 -vpunpcklwd 3168(%r10), %ymm1, %ymm14 -vpunpckhwd 3168(%r10), %ymm1, %ymm15 -vpunpcklwd 3232(%r10), %ymm2, %ymm0 -vpunpckhwd 3232(%r10), %ymm2, %ymm1 -vpunpcklwd 3296(%r10), %ymm3, %ymm2 -vpunpckhwd 3296(%r10), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 0(%r12) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 192(%r12) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 384(%r12) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 576(%r12) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 768(%r12) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 960(%r12) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 1152(%r12) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 1536(%r12) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 1728(%r12) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 1920(%r12) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 2112(%r12) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 2304(%r12) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 2496(%r12) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 2688(%r12) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 1344(%r12) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 2880(%r12) -vmovdqa 3328(%r10), %ymm0 -vmovdqa 3392(%r10), %ymm1 -vmovdqa 3456(%r10), %ymm2 -vmovdqa 3520(%r10), %ymm3 -vpunpcklwd 3360(%r10), %ymm0, %ymm4 -vpunpckhwd 3360(%r10), %ymm0, %ymm5 -vpunpcklwd 3424(%r10), %ymm1, %ymm6 -vpunpckhwd 3424(%r10), %ymm1, %ymm7 -vpunpcklwd 3488(%r10), %ymm2, %ymm8 -vpunpckhwd 3488(%r10), %ymm2, %ymm9 -vpunpcklwd 3552(%r10), %ymm3, %ymm10 -vpunpckhwd 3552(%r10), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 3584(%r10), %ymm0 -vmovdqa 3648(%r10), %ymm1 -vmovdqa 3712(%r10), %ymm2 -vmovdqa 3776(%r10), %ymm3 -vpunpcklwd 3616(%r10), %ymm0, %ymm12 -vpunpckhwd 3616(%r10), %ymm0, %ymm13 -vpunpcklwd 3680(%r10), %ymm1, %ymm14 -vpunpckhwd 3680(%r10), %ymm1, %ymm15 -vpunpcklwd 3744(%r10), %ymm2, %ymm0 -vpunpckhwd 3744(%r10), %ymm2, %ymm1 -vpunpcklwd 3808(%r10), %ymm3, %ymm2 -vpunpckhwd 3808(%r10), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 32(%r12) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 224(%r12) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 416(%r12) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 608(%r12) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 800(%r12) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 992(%r12) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 1184(%r12) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 1568(%r12) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 1760(%r12) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 1952(%r12) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 2144(%r12) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 2336(%r12) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 2528(%r12) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 2720(%r12) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 1376(%r12) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 2912(%r12) -vmovdqa 3840(%r10), %ymm0 -vmovdqa 3904(%r10), %ymm1 -vmovdqa 3968(%r10), %ymm2 -vmovdqa 4032(%r10), %ymm3 -vpunpcklwd 3872(%r10), %ymm0, %ymm4 -vpunpckhwd 3872(%r10), %ymm0, %ymm5 -vpunpcklwd 3936(%r10), %ymm1, %ymm6 -vpunpckhwd 3936(%r10), %ymm1, %ymm7 -vpunpcklwd 4000(%r10), %ymm2, %ymm8 -vpunpckhwd 4000(%r10), %ymm2, %ymm9 -vpunpcklwd 4064(%r10), %ymm3, %ymm10 -vpunpckhwd 4064(%r10), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 4096(%r10), %ymm0 -vmovdqa 4160(%r10), %ymm1 -vmovdqa 4224(%r10), %ymm2 -vmovdqa 4288(%r10), %ymm3 -vpunpcklwd 4128(%r10), %ymm0, %ymm12 -vpunpckhwd 4128(%r10), %ymm0, %ymm13 -vpunpcklwd 4192(%r10), %ymm1, %ymm14 -vpunpckhwd 4192(%r10), %ymm1, %ymm15 -vpunpcklwd 4256(%r10), %ymm2, %ymm0 -vpunpckhwd 4256(%r10), %ymm2, %ymm1 -vpunpcklwd 4320(%r10), %ymm3, %ymm2 -vpunpckhwd 4320(%r10), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 64(%r12) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 256(%r12) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 448(%r12) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 640(%r12) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 832(%r12) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 1024(%r12) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 1216(%r12) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 1600(%r12) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 1792(%r12) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 1984(%r12) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 2176(%r12) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 2368(%r12) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 2560(%r12) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 2752(%r12) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 1408(%r12) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 2944(%r12) -vmovdqa 4224(%r10), %ymm0 -vmovdqa 4288(%r10), %ymm1 -vmovdqa 4352(%r10), %ymm2 -vmovdqa 4416(%r10), %ymm3 -vpunpcklwd 4256(%r10), %ymm0, %ymm4 -vpunpckhwd 4256(%r10), %ymm0, %ymm5 -vpunpcklwd 4320(%r10), %ymm1, %ymm6 -vpunpckhwd 4320(%r10), %ymm1, %ymm7 -vpunpcklwd 4384(%r10), %ymm2, %ymm8 -vpunpckhwd 4384(%r10), %ymm2, %ymm9 -vpunpcklwd 4448(%r10), %ymm3, %ymm10 -vpunpckhwd 4448(%r10), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 4480(%r10), %ymm0 -vmovdqa 4544(%r10), %ymm1 -vmovdqa 4608(%r10), %ymm2 -vmovdqa 4672(%r10), %ymm3 -vpunpcklwd 4512(%r10), %ymm0, %ymm12 -vpunpckhwd 4512(%r10), %ymm0, %ymm13 -vpunpcklwd 4576(%r10), %ymm1, %ymm14 -vpunpckhwd 4576(%r10), %ymm1, %ymm15 -vpunpcklwd 4640(%r10), %ymm2, %ymm0 -vpunpckhwd 4640(%r10), %ymm2, %ymm1 -vpunpcklwd 4704(%r10), %ymm3, %ymm2 -vpunpckhwd 4704(%r10), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 96(%r12) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 288(%r12) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 480(%r12) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 672(%r12) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 864(%r12) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 1056(%r12) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 1248(%r12) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 1632(%r12) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 1824(%r12) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 2016(%r12) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 2208(%r12) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 2400(%r12) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 2592(%r12) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 2784(%r12) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 1440(%r12) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 2976(%r12) -vmovdqa 4736(%r10), %ymm0 -vmovdqa 4800(%r10), %ymm1 -vmovdqa 4864(%r10), %ymm2 -vmovdqa 4928(%r10), %ymm3 -vpunpcklwd 4768(%r10), %ymm0, %ymm4 -vpunpckhwd 4768(%r10), %ymm0, %ymm5 -vpunpcklwd 4832(%r10), %ymm1, %ymm6 -vpunpckhwd 4832(%r10), %ymm1, %ymm7 -vpunpcklwd 4896(%r10), %ymm2, %ymm8 -vpunpckhwd 4896(%r10), %ymm2, %ymm9 -vpunpcklwd 4960(%r10), %ymm3, %ymm10 -vpunpckhwd 4960(%r10), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 4992(%r10), %ymm0 -vmovdqa 5056(%r10), %ymm1 -vmovdqa 5120(%r10), %ymm2 -vmovdqa 5184(%r10), %ymm3 -vpunpcklwd 5024(%r10), %ymm0, %ymm12 -vpunpckhwd 5024(%r10), %ymm0, %ymm13 -vpunpcklwd 5088(%r10), %ymm1, %ymm14 -vpunpckhwd 5088(%r10), %ymm1, %ymm15 -vpunpcklwd 5152(%r10), %ymm2, %ymm0 -vpunpckhwd 5152(%r10), %ymm2, %ymm1 -vpunpcklwd 5216(%r10), %ymm3, %ymm2 -vpunpckhwd 5216(%r10), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 128(%r12) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 320(%r12) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 512(%r12) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 704(%r12) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 896(%r12) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 1088(%r12) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 1280(%r12) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 1664(%r12) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 1856(%r12) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 2048(%r12) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 2240(%r12) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 2432(%r12) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 2624(%r12) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 2816(%r12) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 1472(%r12) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 3008(%r12) -vmovdqa 5248(%r10), %ymm0 -vmovdqa 5312(%r10), %ymm1 -vmovdqa 5376(%r10), %ymm2 -vmovdqa 5440(%r10), %ymm3 -vpunpcklwd 5280(%r10), %ymm0, %ymm4 -vpunpckhwd 5280(%r10), %ymm0, %ymm5 -vpunpcklwd 5344(%r10), %ymm1, %ymm6 -vpunpckhwd 5344(%r10), %ymm1, %ymm7 -vpunpcklwd 5408(%r10), %ymm2, %ymm8 -vpunpckhwd 5408(%r10), %ymm2, %ymm9 -vpunpcklwd 5472(%r10), %ymm3, %ymm10 -vpunpckhwd 5472(%r10), %ymm3, %ymm11 -vpunpckldq %ymm6, %ymm4, %ymm0 -vpunpckhdq %ymm6, %ymm4, %ymm1 -vpunpckldq %ymm7, %ymm5, %ymm2 -vpunpckhdq %ymm7, %ymm5, %ymm3 -vpunpckldq %ymm10, %ymm8, %ymm12 -vpunpckhdq %ymm10, %ymm8, %ymm13 -vpunpckldq %ymm11, %ymm9, %ymm14 -vpunpckhdq %ymm11, %ymm9, %ymm15 -vpunpcklqdq %ymm12, %ymm0, %ymm4 -vpunpckhqdq %ymm12, %ymm0, %ymm5 -vpunpcklqdq %ymm13, %ymm1, %ymm6 -vpunpckhqdq %ymm13, %ymm1, %ymm7 -vpunpcklqdq %ymm14, %ymm2, %ymm8 -vpunpckhqdq %ymm14, %ymm2, %ymm9 -vpunpcklqdq %ymm15, %ymm3, %ymm10 -vpunpckhqdq %ymm15, %ymm3, %ymm11 -vmovdqa 5504(%r10), %ymm0 -vmovdqa 5568(%r10), %ymm1 -vmovdqa 5632(%r10), %ymm2 -vmovdqa 5696(%r10), %ymm3 -vpunpcklwd 5536(%r10), %ymm0, %ymm12 -vpunpckhwd 5536(%r10), %ymm0, %ymm13 -vpunpcklwd 5600(%r10), %ymm1, %ymm14 -vpunpckhwd 5600(%r10), %ymm1, %ymm15 -vpunpcklwd 5664(%r10), %ymm2, %ymm0 -vpunpckhwd 5664(%r10), %ymm2, %ymm1 -vpunpcklwd 5728(%r10), %ymm3, %ymm2 -vpunpckhwd 5728(%r10), %ymm3, %ymm3 -vmovdqa %ymm11, 0(%rsp) -vpunpckldq %ymm14, %ymm12, %ymm11 -vpunpckhdq %ymm14, %ymm12, %ymm12 -vpunpckldq %ymm15, %ymm13, %ymm14 -vpunpckhdq %ymm15, %ymm13, %ymm15 -vpunpckldq %ymm2, %ymm0, %ymm13 -vpunpckhdq %ymm2, %ymm0, %ymm0 -vpunpckldq %ymm3, %ymm1, %ymm2 -vpunpckhdq %ymm3, %ymm1, %ymm1 -vpunpcklqdq %ymm13, %ymm11, %ymm3 -vpunpckhqdq %ymm13, %ymm11, %ymm13 -vpunpcklqdq %ymm0, %ymm12, %ymm11 -vpunpckhqdq %ymm0, %ymm12, %ymm0 -vpunpcklqdq %ymm2, %ymm14, %ymm12 -vpunpckhqdq %ymm2, %ymm14, %ymm2 -vpunpcklqdq %ymm1, %ymm15, %ymm14 -vpunpckhqdq %ymm1, %ymm15, %ymm1 -vinserti128 $1, %xmm3, %ymm4, %ymm15 -vmovdqa %ymm15, 160(%r12) -vinserti128 $1, %xmm13, %ymm5, %ymm15 -vmovdqa %ymm15, 352(%r12) -vinserti128 $1, %xmm11, %ymm6, %ymm15 -vmovdqa %ymm15, 544(%r12) -vinserti128 $1, %xmm0, %ymm7, %ymm15 -vmovdqa %ymm15, 736(%r12) -vinserti128 $1, %xmm12, %ymm8, %ymm15 -vmovdqa %ymm15, 928(%r12) -vinserti128 $1, %xmm2, %ymm9, %ymm15 -vmovdqa %ymm15, 1120(%r12) -vinserti128 $1, %xmm14, %ymm10, %ymm15 -vmovdqa %ymm15, 1312(%r12) -vpermq $78, %ymm4, %ymm4 -vpermq $78, %ymm5, %ymm5 -vpermq $78, %ymm6, %ymm6 -vpermq $78, %ymm7, %ymm7 -vpermq $78, %ymm8, %ymm8 -vpermq $78, %ymm9, %ymm9 -vpermq $78, %ymm10, %ymm10 -vinserti128 $0, %xmm4, %ymm3, %ymm15 -vmovdqa %ymm15, 1696(%r12) -vinserti128 $0, %xmm5, %ymm13, %ymm15 -vmovdqa %ymm15, 1888(%r12) -vinserti128 $0, %xmm6, %ymm11, %ymm15 -vmovdqa %ymm15, 2080(%r12) -vinserti128 $0, %xmm7, %ymm0, %ymm15 -vmovdqa %ymm15, 2272(%r12) -vinserti128 $0, %xmm8, %ymm12, %ymm15 -vmovdqa %ymm15, 2464(%r12) -vinserti128 $0, %xmm9, %ymm2, %ymm15 -vmovdqa %ymm15, 2656(%r12) -vinserti128 $0, %xmm10, %ymm14, %ymm15 -vmovdqa %ymm15, 2848(%r12) -vmovdqa 0(%rsp), %ymm11 -vinserti128 $1, %xmm1, %ymm11, %ymm14 -vmovdqa %ymm14, 1504(%r12) -vpermq $78, %ymm11, %ymm11 -vinserti128 $0, %xmm11, %ymm1, %ymm1 -vmovdqa %ymm1, 3040(%r12) -addq $32, %rsp -add $1536, %rax -add $1536, %r11 -add $3072, %r12 -dec %ecx -jnz karatsuba_loop_1 -sub $12288, %r12 -add $9408, %rsp -subq $2400, %rsp -vpxor %ymm0, %ymm0, %ymm0 -vmovdqa %ymm0, 1792(%rsp) -vmovdqa %ymm0, 1824(%rsp) -vmovdqa %ymm0, 1856(%rsp) -vmovdqa %ymm0, 1888(%rsp) -vmovdqa %ymm0, 1920(%rsp) -vmovdqa %ymm0, 1952(%rsp) -vmovdqa %ymm0, 1984(%rsp) -vmovdqa %ymm0, 2016(%rsp) -vmovdqa %ymm0, 2048(%rsp) -vmovdqa %ymm0, 2080(%rsp) -vmovdqa %ymm0, 2112(%rsp) -vmovdqa %ymm0, 2144(%rsp) -vmovdqa %ymm0, 2176(%rsp) -vmovdqa %ymm0, 2208(%rsp) -vmovdqa %ymm0, 2240(%rsp) -vmovdqa %ymm0, 2272(%rsp) -vmovdqa %ymm0, 2304(%rsp) -vmovdqa %ymm0, 2336(%rsp) -vmovdqa %ymm0, 2368(%rsp) -vmovdqa %ymm0, 2400(%rsp) -vmovdqa %ymm0, 2432(%rsp) -vmovdqa %ymm0, 2464(%rsp) -vmovdqa %ymm0, 2496(%rsp) -vmovdqa %ymm0, 2528(%rsp) -vmovdqa %ymm0, 2560(%rsp) -vmovdqa %ymm0, 2592(%rsp) -vmovdqa %ymm0, 2624(%rsp) -vmovdqa %ymm0, 2656(%rsp) -vmovdqa %ymm0, 2688(%rsp) -vmovdqa %ymm0, 2720(%rsp) -vmovdqa %ymm0, 2752(%rsp) -vmovdqa %ymm0, 2784(%rsp) -vmovdqa const729(%rip), %ymm15 -vmovdqa const3_inv(%rip), %ymm14 -vmovdqa const5_inv(%rip), %ymm13 -vmovdqa const9(%rip), %ymm12 -vmovdqa 96(%r12), %ymm0 -vpsubw 192(%r12), %ymm0, %ymm0 -vmovdqa 480(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 288(%r12), %ymm1, %ymm1 -vpsubw 0(%r12), %ymm0, %ymm0 -vpaddw 384(%r12), %ymm0, %ymm0 -vmovdqa 672(%r12), %ymm2 -vpsubw 768(%r12), %ymm2, %ymm2 -vmovdqa 1056(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 864(%r12), %ymm3, %ymm3 -vpsubw 576(%r12), %ymm2, %ymm2 -vpaddw 960(%r12), %ymm2, %ymm2 -vmovdqa 1248(%r12), %ymm4 -vpsubw 1344(%r12), %ymm4, %ymm4 -vmovdqa 1632(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 1440(%r12), %ymm5, %ymm5 -vpsubw 1152(%r12), %ymm4, %ymm4 -vpaddw 1536(%r12), %ymm4, %ymm4 -vpsubw 576(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 0(%r12), %ymm1, %ymm1 -vpaddw 1152(%r12), %ymm1, %ymm1 -vmovdqa 288(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 1440(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 864(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 0(%r12), %ymm8 -vmovdqa 864(%r12), %ymm9 -vmovdqa %ymm8, 0(%rsp) -vmovdqa %ymm0, 32(%rsp) -vmovdqa %ymm1, 64(%rsp) -vmovdqa %ymm7, 96(%rsp) -vmovdqa %ymm5, 128(%rsp) -vmovdqa %ymm2, 160(%rsp) -vmovdqa %ymm3, 192(%rsp) -vmovdqa %ymm9, 224(%rsp) -vmovdqa 1824(%r12), %ymm0 -vpsubw 1920(%r12), %ymm0, %ymm0 -vmovdqa 2208(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 2016(%r12), %ymm1, %ymm1 -vpsubw 1728(%r12), %ymm0, %ymm0 -vpaddw 2112(%r12), %ymm0, %ymm0 -vmovdqa 2400(%r12), %ymm2 -vpsubw 2496(%r12), %ymm2, %ymm2 -vmovdqa 2784(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 2592(%r12), %ymm3, %ymm3 -vpsubw 2304(%r12), %ymm2, %ymm2 -vpaddw 2688(%r12), %ymm2, %ymm2 -vmovdqa 2976(%r12), %ymm4 -vpsubw 3072(%r12), %ymm4, %ymm4 -vmovdqa 3360(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 3168(%r12), %ymm5, %ymm5 -vpsubw 2880(%r12), %ymm4, %ymm4 -vpaddw 3264(%r12), %ymm4, %ymm4 -vpsubw 2304(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 1728(%r12), %ymm1, %ymm1 -vpaddw 2880(%r12), %ymm1, %ymm1 -vmovdqa 2016(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 3168(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 2592(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 1728(%r12), %ymm8 -vmovdqa 2592(%r12), %ymm9 -vmovdqa %ymm8, 256(%rsp) -vmovdqa %ymm0, 288(%rsp) -vmovdqa %ymm1, 320(%rsp) -vmovdqa %ymm7, 352(%rsp) -vmovdqa %ymm5, 384(%rsp) -vmovdqa %ymm2, 416(%rsp) -vmovdqa %ymm3, 448(%rsp) -vmovdqa %ymm9, 480(%rsp) -vmovdqa 3552(%r12), %ymm0 -vpsubw 3648(%r12), %ymm0, %ymm0 -vmovdqa 3936(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 3744(%r12), %ymm1, %ymm1 -vpsubw 3456(%r12), %ymm0, %ymm0 -vpaddw 3840(%r12), %ymm0, %ymm0 -vmovdqa 4128(%r12), %ymm2 -vpsubw 4224(%r12), %ymm2, %ymm2 -vmovdqa 4512(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 4320(%r12), %ymm3, %ymm3 -vpsubw 4032(%r12), %ymm2, %ymm2 -vpaddw 4416(%r12), %ymm2, %ymm2 -vmovdqa 4704(%r12), %ymm4 -vpsubw 4800(%r12), %ymm4, %ymm4 -vmovdqa 5088(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 4896(%r12), %ymm5, %ymm5 -vpsubw 4608(%r12), %ymm4, %ymm4 -vpaddw 4992(%r12), %ymm4, %ymm4 -vpsubw 4032(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 3456(%r12), %ymm1, %ymm1 -vpaddw 4608(%r12), %ymm1, %ymm1 -vmovdqa 3744(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 4896(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 4320(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 3456(%r12), %ymm8 -vmovdqa 4320(%r12), %ymm9 -vmovdqa %ymm8, 512(%rsp) -vmovdqa %ymm0, 544(%rsp) -vmovdqa %ymm1, 576(%rsp) -vmovdqa %ymm7, 608(%rsp) -vmovdqa %ymm5, 640(%rsp) -vmovdqa %ymm2, 672(%rsp) -vmovdqa %ymm3, 704(%rsp) -vmovdqa %ymm9, 736(%rsp) -vmovdqa 5280(%r12), %ymm0 -vpsubw 5376(%r12), %ymm0, %ymm0 -vmovdqa 5664(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 5472(%r12), %ymm1, %ymm1 -vpsubw 5184(%r12), %ymm0, %ymm0 -vpaddw 5568(%r12), %ymm0, %ymm0 -vmovdqa 5856(%r12), %ymm2 -vpsubw 5952(%r12), %ymm2, %ymm2 -vmovdqa 6240(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 6048(%r12), %ymm3, %ymm3 -vpsubw 5760(%r12), %ymm2, %ymm2 -vpaddw 6144(%r12), %ymm2, %ymm2 -vmovdqa 6432(%r12), %ymm4 -vpsubw 6528(%r12), %ymm4, %ymm4 -vmovdqa 6816(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 6624(%r12), %ymm5, %ymm5 -vpsubw 6336(%r12), %ymm4, %ymm4 -vpaddw 6720(%r12), %ymm4, %ymm4 -vpsubw 5760(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 5184(%r12), %ymm1, %ymm1 -vpaddw 6336(%r12), %ymm1, %ymm1 -vmovdqa 5472(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 6624(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 6048(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 5184(%r12), %ymm8 -vmovdqa 6048(%r12), %ymm9 -vmovdqa %ymm8, 768(%rsp) -vmovdqa %ymm0, 800(%rsp) -vmovdqa %ymm1, 832(%rsp) -vmovdqa %ymm7, 864(%rsp) -vmovdqa %ymm5, 896(%rsp) -vmovdqa %ymm2, 928(%rsp) -vmovdqa %ymm3, 960(%rsp) -vmovdqa %ymm9, 992(%rsp) -vmovdqa 7008(%r12), %ymm0 -vpsubw 7104(%r12), %ymm0, %ymm0 -vmovdqa 7392(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 7200(%r12), %ymm1, %ymm1 -vpsubw 6912(%r12), %ymm0, %ymm0 -vpaddw 7296(%r12), %ymm0, %ymm0 -vmovdqa 7584(%r12), %ymm2 -vpsubw 7680(%r12), %ymm2, %ymm2 -vmovdqa 7968(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 7776(%r12), %ymm3, %ymm3 -vpsubw 7488(%r12), %ymm2, %ymm2 -vpaddw 7872(%r12), %ymm2, %ymm2 -vmovdqa 8160(%r12), %ymm4 -vpsubw 8256(%r12), %ymm4, %ymm4 -vmovdqa 8544(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 8352(%r12), %ymm5, %ymm5 -vpsubw 8064(%r12), %ymm4, %ymm4 -vpaddw 8448(%r12), %ymm4, %ymm4 -vpsubw 7488(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 6912(%r12), %ymm1, %ymm1 -vpaddw 8064(%r12), %ymm1, %ymm1 -vmovdqa 7200(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 8352(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 7776(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 6912(%r12), %ymm8 -vmovdqa 7776(%r12), %ymm9 -vmovdqa %ymm8, 1024(%rsp) -vmovdqa %ymm0, 1056(%rsp) -vmovdqa %ymm1, 1088(%rsp) -vmovdqa %ymm7, 1120(%rsp) -vmovdqa %ymm5, 1152(%rsp) -vmovdqa %ymm2, 1184(%rsp) -vmovdqa %ymm3, 1216(%rsp) -vmovdqa %ymm9, 1248(%rsp) -vmovdqa 8736(%r12), %ymm0 -vpsubw 8832(%r12), %ymm0, %ymm0 -vmovdqa 9120(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 8928(%r12), %ymm1, %ymm1 -vpsubw 8640(%r12), %ymm0, %ymm0 -vpaddw 9024(%r12), %ymm0, %ymm0 -vmovdqa 9312(%r12), %ymm2 -vpsubw 9408(%r12), %ymm2, %ymm2 -vmovdqa 9696(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 9504(%r12), %ymm3, %ymm3 -vpsubw 9216(%r12), %ymm2, %ymm2 -vpaddw 9600(%r12), %ymm2, %ymm2 -vmovdqa 9888(%r12), %ymm4 -vpsubw 9984(%r12), %ymm4, %ymm4 -vmovdqa 10272(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 10080(%r12), %ymm5, %ymm5 -vpsubw 9792(%r12), %ymm4, %ymm4 -vpaddw 10176(%r12), %ymm4, %ymm4 -vpsubw 9216(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 8640(%r12), %ymm1, %ymm1 -vpaddw 9792(%r12), %ymm1, %ymm1 -vmovdqa 8928(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 10080(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 9504(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 8640(%r12), %ymm8 -vmovdqa 9504(%r12), %ymm9 -vmovdqa %ymm8, 1280(%rsp) -vmovdqa %ymm0, 1312(%rsp) -vmovdqa %ymm1, 1344(%rsp) -vmovdqa %ymm7, 1376(%rsp) -vmovdqa %ymm5, 1408(%rsp) -vmovdqa %ymm2, 1440(%rsp) -vmovdqa %ymm3, 1472(%rsp) -vmovdqa %ymm9, 1504(%rsp) -vmovdqa 10464(%r12), %ymm0 -vpsubw 10560(%r12), %ymm0, %ymm0 -vmovdqa 10848(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 10656(%r12), %ymm1, %ymm1 -vpsubw 10368(%r12), %ymm0, %ymm0 -vpaddw 10752(%r12), %ymm0, %ymm0 -vmovdqa 11040(%r12), %ymm2 -vpsubw 11136(%r12), %ymm2, %ymm2 -vmovdqa 11424(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 11232(%r12), %ymm3, %ymm3 -vpsubw 10944(%r12), %ymm2, %ymm2 -vpaddw 11328(%r12), %ymm2, %ymm2 -vmovdqa 11616(%r12), %ymm4 -vpsubw 11712(%r12), %ymm4, %ymm4 -vmovdqa 12000(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 11808(%r12), %ymm5, %ymm5 -vpsubw 11520(%r12), %ymm4, %ymm4 -vpaddw 11904(%r12), %ymm4, %ymm4 -vpsubw 10944(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 10368(%r12), %ymm1, %ymm1 -vpaddw 11520(%r12), %ymm1, %ymm1 -vmovdqa 10656(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 11808(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 11232(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 10368(%r12), %ymm8 -vmovdqa 11232(%r12), %ymm9 -vmovdqa %ymm8, 1536(%rsp) -vmovdqa %ymm0, 1568(%rsp) -vmovdqa %ymm1, 1600(%rsp) -vmovdqa %ymm7, 1632(%rsp) -vmovdqa %ymm5, 1664(%rsp) -vmovdqa %ymm2, 1696(%rsp) -vmovdqa %ymm3, 1728(%rsp) -vmovdqa %ymm9, 1760(%rsp) -vmovdqa 0(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm10 -vpunpckhwd const0(%rip), %ymm11, %ymm9 -vpslld $1, %ymm10, %ymm10 -vpslld $1, %ymm9, %ymm9 -vmovdqa 256(%rsp), %ymm8 -vpunpcklwd const0(%rip), %ymm8, %ymm7 -vpunpckhwd const0(%rip), %ymm8, %ymm8 -vmovdqa 512(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm7, %ymm4 -vpaddd %ymm6, %ymm8, %ymm3 -vpsubd %ymm10, %ymm4, %ymm4 -vpsubd %ymm9, %ymm3, %ymm3 -vpsubd %ymm5, %ymm7, %ymm5 -vpsubd %ymm6, %ymm8, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1536(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm8 -vpunpckhwd const0(%rip), %ymm5, %ymm7 -vpslld $1, %ymm8, %ymm8 -vpslld $1, %ymm7, %ymm7 -vpsubd %ymm8, %ymm4, %ymm4 -vpsubd %ymm7, %ymm3, %ymm3 -vpsrld $1, %ymm4, %ymm4 -vpsrld $1, %ymm3, %ymm3 -vpand mask32_to_16(%rip), %ymm4, %ymm4 -vpand mask32_to_16(%rip), %ymm3, %ymm3 -vpackusdw %ymm3, %ymm4, %ymm3 -vmovdqa 768(%rsp), %ymm4 -vpaddw 1024(%rsp), %ymm4, %ymm7 -vpsubw 1024(%rsp), %ymm4, %ymm4 -vpsrlw $2, %ymm4, %ymm4 -vpsubw %ymm6, %ymm4, %ymm4 -vpmullw %ymm14, %ymm4, %ymm4 -vpsllw $1, %ymm11, %ymm8 -vpsubw %ymm8, %ymm7, %ymm8 -vpsllw $7, %ymm5, %ymm7 -vpsubw %ymm7, %ymm8, %ymm7 -vpsrlw $3, %ymm7, %ymm7 -vpsubw %ymm3, %ymm7, %ymm7 -vmovdqa 1280(%rsp), %ymm8 -vpsubw %ymm11, %ymm8, %ymm8 -vpmullw %ymm15, %ymm5, %ymm9 -vpsubw %ymm9, %ymm8, %ymm9 -vpmullw %ymm14, %ymm7, %ymm7 -vpsubw %ymm7, %ymm3, %ymm3 -vpmullw %ymm12, %ymm7, %ymm8 -vpaddw %ymm8, %ymm3, %ymm8 -vpmullw %ymm12, %ymm8, %ymm8 -vpsubw %ymm8, %ymm9, %ymm8 -vpmullw %ymm14, %ymm8, %ymm8 -vpsubw %ymm6, %ymm8, %ymm8 -vpsrlw $3, %ymm8, %ymm8 -vpsubw %ymm4, %ymm8, %ymm8 -vpsubw %ymm8, %ymm4, %ymm4 -vpsubw %ymm4, %ymm6, %ymm6 -vpmullw %ymm13, %ymm8, %ymm8 -vpsubw %ymm8, %ymm6, %ymm6 -vpshufb shuf48_16(%rip), %ymm7, %ymm7 -vpand mask3_5_3_5(%rip), %ymm7, %ymm9 -vpand mask5_3_5_3(%rip), %ymm7, %ymm7 -vpermq $206, %ymm9, %ymm9 -vpand mask_keephigh(%rip), %ymm9, %ymm10 -vpor %ymm10, %ymm7, %ymm7 -vpaddw %ymm7, %ymm11, %ymm11 -vmovdqa %xmm9, 2048(%rsp) -vpshufb shuf48_16(%rip), %ymm8, %ymm8 -vpand mask3_5_3_5(%rip), %ymm8, %ymm9 -vpand mask5_3_5_3(%rip), %ymm8, %ymm8 -vpermq $206, %ymm9, %ymm9 -vpand mask_keephigh(%rip), %ymm9, %ymm10 -vpor %ymm10, %ymm8, %ymm8 -vpaddw %ymm8, %ymm6, %ymm6 -vmovdqa %xmm9, 2304(%rsp) -vpshufb shuf48_16(%rip), %ymm5, %ymm5 -vpand mask3_5_3_5(%rip), %ymm5, %ymm9 -vpand mask5_3_5_3(%rip), %ymm5, %ymm5 -vpermq $206, %ymm9, %ymm9 -vpand mask_keephigh(%rip), %ymm9, %ymm10 -vpor %ymm10, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vmovdqa %xmm9, 2560(%rsp) -vmovdqu %ymm11, 0(%rdi) -vmovdqu %ymm6, 352(%rdi) -vmovdqu %ymm3, 704(%rdi) -vmovdqu %ymm4, 1056(%rdi) -vmovdqa 32(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm8 -vpunpckhwd const0(%rip), %ymm5, %ymm7 -vpslld $1, %ymm8, %ymm8 -vpslld $1, %ymm7, %ymm7 -vmovdqa 288(%rsp), %ymm4 -vpunpcklwd const0(%rip), %ymm4, %ymm3 -vpunpckhwd const0(%rip), %ymm4, %ymm4 -vmovdqa 544(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm3, %ymm9 -vpaddd %ymm6, %ymm4, %ymm10 -vpsubd %ymm8, %ymm9, %ymm9 -vpsubd %ymm7, %ymm10, %ymm10 -vpsubd %ymm11, %ymm3, %ymm11 -vpsubd %ymm6, %ymm4, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1568(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm4 -vpunpckhwd const0(%rip), %ymm11, %ymm3 -vpslld $1, %ymm4, %ymm4 -vpslld $1, %ymm3, %ymm3 -vpsubd %ymm4, %ymm9, %ymm9 -vpsubd %ymm3, %ymm10, %ymm10 -vpsrld $1, %ymm9, %ymm9 -vpsrld $1, %ymm10, %ymm10 -vpand mask32_to_16(%rip), %ymm9, %ymm9 -vpand mask32_to_16(%rip), %ymm10, %ymm10 -vpackusdw %ymm10, %ymm9, %ymm10 -vmovdqa 800(%rsp), %ymm9 -vpaddw 1056(%rsp), %ymm9, %ymm3 -vpsubw 1056(%rsp), %ymm9, %ymm9 -vpsrlw $2, %ymm9, %ymm9 -vpsubw %ymm6, %ymm9, %ymm9 -vpmullw %ymm14, %ymm9, %ymm9 -vpsllw $1, %ymm5, %ymm4 -vpsubw %ymm4, %ymm3, %ymm4 -vpsllw $7, %ymm11, %ymm3 -vpsubw %ymm3, %ymm4, %ymm3 -vpsrlw $3, %ymm3, %ymm3 -vpsubw %ymm10, %ymm3, %ymm3 -vmovdqa 1312(%rsp), %ymm4 -vpsubw %ymm5, %ymm4, %ymm4 -vpmullw %ymm15, %ymm11, %ymm7 -vpsubw %ymm7, %ymm4, %ymm7 -vpmullw %ymm14, %ymm3, %ymm3 -vpsubw %ymm3, %ymm10, %ymm10 -vpmullw %ymm12, %ymm3, %ymm4 -vpaddw %ymm4, %ymm10, %ymm4 -vpmullw %ymm12, %ymm4, %ymm4 -vpsubw %ymm4, %ymm7, %ymm4 -vpmullw %ymm14, %ymm4, %ymm4 -vpsubw %ymm6, %ymm4, %ymm4 -vpsrlw $3, %ymm4, %ymm4 -vpsubw %ymm9, %ymm4, %ymm4 -vpsubw %ymm4, %ymm9, %ymm9 -vpsubw %ymm9, %ymm6, %ymm6 -vpmullw %ymm13, %ymm4, %ymm4 -vpsubw %ymm4, %ymm6, %ymm6 -vpshufb shuf48_16(%rip), %ymm3, %ymm3 -vpand mask3_5_3_5(%rip), %ymm3, %ymm7 -vpand mask5_3_5_3(%rip), %ymm3, %ymm3 -vpermq $206, %ymm7, %ymm7 -vpand mask_keephigh(%rip), %ymm7, %ymm8 -vpor %ymm8, %ymm3, %ymm3 -vpaddw %ymm3, %ymm5, %ymm5 -vmovdqa %xmm7, 2080(%rsp) -vpshufb shuf48_16(%rip), %ymm4, %ymm4 -vpand mask3_5_3_5(%rip), %ymm4, %ymm7 -vpand mask5_3_5_3(%rip), %ymm4, %ymm4 -vpermq $206, %ymm7, %ymm7 -vpand mask_keephigh(%rip), %ymm7, %ymm8 -vpor %ymm8, %ymm4, %ymm4 -vpaddw %ymm4, %ymm6, %ymm6 -vmovdqa %xmm7, 2336(%rsp) -vpshufb shuf48_16(%rip), %ymm11, %ymm11 -vpand mask3_5_3_5(%rip), %ymm11, %ymm7 -vpand mask5_3_5_3(%rip), %ymm11, %ymm11 -vpermq $206, %ymm7, %ymm7 -vpand mask_keephigh(%rip), %ymm7, %ymm8 -vpor %ymm8, %ymm11, %ymm11 -vpaddw %ymm11, %ymm10, %ymm10 -vmovdqa %xmm7, 2592(%rsp) -vmovdqu %ymm5, 88(%rdi) -vmovdqu %ymm6, 440(%rdi) -vmovdqu %ymm10, 792(%rdi) -vmovdqu %ymm9, 1144(%rdi) -vmovdqa 64(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm4 -vpunpckhwd const0(%rip), %ymm11, %ymm3 -vpslld $1, %ymm4, %ymm4 -vpslld $1, %ymm3, %ymm3 -vmovdqa 320(%rsp), %ymm9 -vpunpcklwd const0(%rip), %ymm9, %ymm10 -vpunpckhwd const0(%rip), %ymm9, %ymm9 -vmovdqa 576(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm10, %ymm7 -vpaddd %ymm6, %ymm9, %ymm8 -vpsubd %ymm4, %ymm7, %ymm7 -vpsubd %ymm3, %ymm8, %ymm8 -vpsubd %ymm5, %ymm10, %ymm5 -vpsubd %ymm6, %ymm9, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1600(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm9 -vpunpckhwd const0(%rip), %ymm5, %ymm10 -vpslld $1, %ymm9, %ymm9 -vpslld $1, %ymm10, %ymm10 -vpsubd %ymm9, %ymm7, %ymm7 -vpsubd %ymm10, %ymm8, %ymm8 -vpsrld $1, %ymm7, %ymm7 -vpsrld $1, %ymm8, %ymm8 -vpand mask32_to_16(%rip), %ymm7, %ymm7 -vpand mask32_to_16(%rip), %ymm8, %ymm8 -vpackusdw %ymm8, %ymm7, %ymm8 -vmovdqa 832(%rsp), %ymm7 -vpaddw 1088(%rsp), %ymm7, %ymm10 -vpsubw 1088(%rsp), %ymm7, %ymm7 -vpsrlw $2, %ymm7, %ymm7 -vpsubw %ymm6, %ymm7, %ymm7 -vpmullw %ymm14, %ymm7, %ymm7 -vpsllw $1, %ymm11, %ymm9 -vpsubw %ymm9, %ymm10, %ymm9 -vpsllw $7, %ymm5, %ymm10 -vpsubw %ymm10, %ymm9, %ymm10 -vpsrlw $3, %ymm10, %ymm10 -vpsubw %ymm8, %ymm10, %ymm10 -vmovdqa 1344(%rsp), %ymm9 -vpsubw %ymm11, %ymm9, %ymm9 -vpmullw %ymm15, %ymm5, %ymm3 -vpsubw %ymm3, %ymm9, %ymm3 -vpmullw %ymm14, %ymm10, %ymm10 -vpsubw %ymm10, %ymm8, %ymm8 -vpmullw %ymm12, %ymm10, %ymm9 -vpaddw %ymm9, %ymm8, %ymm9 -vpmullw %ymm12, %ymm9, %ymm9 -vpsubw %ymm9, %ymm3, %ymm9 -vpmullw %ymm14, %ymm9, %ymm9 -vpsubw %ymm6, %ymm9, %ymm9 -vpsrlw $3, %ymm9, %ymm9 -vpsubw %ymm7, %ymm9, %ymm9 -vpsubw %ymm9, %ymm7, %ymm7 -vpsubw %ymm7, %ymm6, %ymm6 -vpmullw %ymm13, %ymm9, %ymm9 -vpsubw %ymm9, %ymm6, %ymm6 -vpshufb shuf48_16(%rip), %ymm10, %ymm10 -vpand mask3_5_3_5(%rip), %ymm10, %ymm3 -vpand mask5_3_5_3(%rip), %ymm10, %ymm10 -vpermq $206, %ymm3, %ymm3 -vpand mask_keephigh(%rip), %ymm3, %ymm4 -vpor %ymm4, %ymm10, %ymm10 -vpaddw %ymm10, %ymm11, %ymm11 -vmovdqa %xmm3, 2112(%rsp) -vpshufb shuf48_16(%rip), %ymm9, %ymm9 -vpand mask3_5_3_5(%rip), %ymm9, %ymm3 -vpand mask5_3_5_3(%rip), %ymm9, %ymm9 -vpermq $206, %ymm3, %ymm3 -vpand mask_keephigh(%rip), %ymm3, %ymm4 -vpor %ymm4, %ymm9, %ymm9 -vpaddw %ymm9, %ymm6, %ymm6 -vmovdqa %xmm3, 2368(%rsp) -vpshufb shuf48_16(%rip), %ymm5, %ymm5 -vpand mask3_5_3_5(%rip), %ymm5, %ymm3 -vpand mask5_3_5_3(%rip), %ymm5, %ymm5 -vpermq $206, %ymm3, %ymm3 -vpand mask_keephigh(%rip), %ymm3, %ymm4 -vpor %ymm4, %ymm5, %ymm5 -vpaddw %ymm5, %ymm8, %ymm8 -vmovdqa %xmm3, 2624(%rsp) -vmovdqu %ymm11, 176(%rdi) -vmovdqu %ymm6, 528(%rdi) -vmovdqu %ymm8, 880(%rdi) -vmovdqu %ymm7, 1232(%rdi) -vmovdqa 96(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm9 -vpunpckhwd const0(%rip), %ymm5, %ymm10 -vpslld $1, %ymm9, %ymm9 -vpslld $1, %ymm10, %ymm10 -vmovdqa 352(%rsp), %ymm7 -vpunpcklwd const0(%rip), %ymm7, %ymm8 -vpunpckhwd const0(%rip), %ymm7, %ymm7 -vmovdqa 608(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm8, %ymm3 -vpaddd %ymm6, %ymm7, %ymm4 -vpsubd %ymm9, %ymm3, %ymm3 -vpsubd %ymm10, %ymm4, %ymm4 -vpsubd %ymm11, %ymm8, %ymm11 -vpsubd %ymm6, %ymm7, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1632(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm7 -vpunpckhwd const0(%rip), %ymm11, %ymm8 -vpslld $1, %ymm7, %ymm7 -vpslld $1, %ymm8, %ymm8 -vpsubd %ymm7, %ymm3, %ymm3 -vpsubd %ymm8, %ymm4, %ymm4 -vpsrld $1, %ymm3, %ymm3 -vpsrld $1, %ymm4, %ymm4 -vpand mask32_to_16(%rip), %ymm3, %ymm3 -vpand mask32_to_16(%rip), %ymm4, %ymm4 -vpackusdw %ymm4, %ymm3, %ymm4 -vmovdqa 864(%rsp), %ymm3 -vpaddw 1120(%rsp), %ymm3, %ymm8 -vpsubw 1120(%rsp), %ymm3, %ymm3 -vpsrlw $2, %ymm3, %ymm3 -vpsubw %ymm6, %ymm3, %ymm3 -vpmullw %ymm14, %ymm3, %ymm3 -vpsllw $1, %ymm5, %ymm7 -vpsubw %ymm7, %ymm8, %ymm7 -vpsllw $7, %ymm11, %ymm8 -vpsubw %ymm8, %ymm7, %ymm8 -vpsrlw $3, %ymm8, %ymm8 -vpsubw %ymm4, %ymm8, %ymm8 -vmovdqa 1376(%rsp), %ymm7 -vpsubw %ymm5, %ymm7, %ymm7 -vpmullw %ymm15, %ymm11, %ymm10 -vpsubw %ymm10, %ymm7, %ymm10 -vpmullw %ymm14, %ymm8, %ymm8 -vpsubw %ymm8, %ymm4, %ymm4 -vpmullw %ymm12, %ymm8, %ymm7 -vpaddw %ymm7, %ymm4, %ymm7 -vpmullw %ymm12, %ymm7, %ymm7 -vpsubw %ymm7, %ymm10, %ymm7 -vpmullw %ymm14, %ymm7, %ymm7 -vpsubw %ymm6, %ymm7, %ymm7 -vpsrlw $3, %ymm7, %ymm7 -vpsubw %ymm3, %ymm7, %ymm7 -vpsubw %ymm7, %ymm3, %ymm3 -vpsubw %ymm3, %ymm6, %ymm6 -vpmullw %ymm13, %ymm7, %ymm7 -vpsubw %ymm7, %ymm6, %ymm6 -vpshufb shuf48_16(%rip), %ymm8, %ymm8 -vpand mask3_5_3_5(%rip), %ymm8, %ymm10 -vpand mask5_3_5_3(%rip), %ymm8, %ymm8 -vpermq $206, %ymm10, %ymm10 -vpand mask_keephigh(%rip), %ymm10, %ymm9 -vpor %ymm9, %ymm8, %ymm8 -vpaddw %ymm8, %ymm5, %ymm5 -vmovdqa %xmm10, 2144(%rsp) -vpshufb shuf48_16(%rip), %ymm7, %ymm7 -vpand mask3_5_3_5(%rip), %ymm7, %ymm10 -vpand mask5_3_5_3(%rip), %ymm7, %ymm7 -vpermq $206, %ymm10, %ymm10 -vpand mask_keephigh(%rip), %ymm10, %ymm9 -vpor %ymm9, %ymm7, %ymm7 -vpaddw %ymm7, %ymm6, %ymm6 -vmovdqa %xmm10, 2400(%rsp) -vpshufb shuf48_16(%rip), %ymm11, %ymm11 -vpand mask3_5_3_5(%rip), %ymm11, %ymm10 -vpand mask5_3_5_3(%rip), %ymm11, %ymm11 -vpermq $206, %ymm10, %ymm10 -vpand mask_keephigh(%rip), %ymm10, %ymm9 -vpor %ymm9, %ymm11, %ymm11 -vpaddw %ymm11, %ymm4, %ymm4 -vmovdqa %xmm10, 2656(%rsp) -vmovdqu %ymm5, 264(%rdi) -vmovdqu %ymm6, 616(%rdi) -vmovdqu %ymm4, 968(%rdi) -vmovdqu %ymm3, 1320(%rdi) -vmovdqa 128(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm7 -vpunpckhwd const0(%rip), %ymm11, %ymm8 -vpslld $1, %ymm7, %ymm7 -vpslld $1, %ymm8, %ymm8 -vmovdqa 384(%rsp), %ymm3 -vpunpcklwd const0(%rip), %ymm3, %ymm4 -vpunpckhwd const0(%rip), %ymm3, %ymm3 -vmovdqa 640(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm4, %ymm10 -vpaddd %ymm6, %ymm3, %ymm9 -vpsubd %ymm7, %ymm10, %ymm10 -vpsubd %ymm8, %ymm9, %ymm9 -vpsubd %ymm5, %ymm4, %ymm5 -vpsubd %ymm6, %ymm3, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1664(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm3 -vpunpckhwd const0(%rip), %ymm5, %ymm4 -vpslld $1, %ymm3, %ymm3 -vpslld $1, %ymm4, %ymm4 -vpsubd %ymm3, %ymm10, %ymm10 -vpsubd %ymm4, %ymm9, %ymm9 -vpsrld $1, %ymm10, %ymm10 -vpsrld $1, %ymm9, %ymm9 -vpand mask32_to_16(%rip), %ymm10, %ymm10 -vpand mask32_to_16(%rip), %ymm9, %ymm9 -vpackusdw %ymm9, %ymm10, %ymm9 -vmovdqa 896(%rsp), %ymm10 -vpaddw 1152(%rsp), %ymm10, %ymm4 -vpsubw 1152(%rsp), %ymm10, %ymm10 -vpsrlw $2, %ymm10, %ymm10 -vpsubw %ymm6, %ymm10, %ymm10 -vpmullw %ymm14, %ymm10, %ymm10 -vpsllw $1, %ymm11, %ymm3 -vpsubw %ymm3, %ymm4, %ymm3 -vpsllw $7, %ymm5, %ymm4 -vpsubw %ymm4, %ymm3, %ymm4 -vpsrlw $3, %ymm4, %ymm4 -vpsubw %ymm9, %ymm4, %ymm4 -vmovdqa 1408(%rsp), %ymm3 -vpsubw %ymm11, %ymm3, %ymm3 -vpmullw %ymm15, %ymm5, %ymm8 -vpsubw %ymm8, %ymm3, %ymm8 -vpmullw %ymm14, %ymm4, %ymm4 -vpsubw %ymm4, %ymm9, %ymm9 -vpmullw %ymm12, %ymm4, %ymm3 -vpaddw %ymm3, %ymm9, %ymm3 -vpmullw %ymm12, %ymm3, %ymm3 -vpsubw %ymm3, %ymm8, %ymm3 -vpmullw %ymm14, %ymm3, %ymm3 -vpsubw %ymm6, %ymm3, %ymm3 -vpsrlw $3, %ymm3, %ymm3 -vpsubw %ymm10, %ymm3, %ymm3 -vpsubw %ymm3, %ymm10, %ymm10 -vpsubw %ymm10, %ymm6, %ymm6 -vpmullw %ymm13, %ymm3, %ymm3 -vpsubw %ymm3, %ymm6, %ymm6 -vmovdqu 352(%rdi), %ymm8 -vmovdqu 704(%rdi), %ymm7 -vmovdqu 1056(%rdi), %ymm2 -vpaddw %ymm11, %ymm8, %ymm11 -vpaddw %ymm6, %ymm7, %ymm6 -vpaddw %ymm9, %ymm2, %ymm9 -vpshufb shuf48_16(%rip), %ymm10, %ymm10 -vpand mask3_5_3_5(%rip), %ymm10, %ymm2 -vpand mask5_3_5_3(%rip), %ymm10, %ymm10 -vpermq $206, %ymm2, %ymm2 -vpand mask_keephigh(%rip), %ymm2, %ymm7 -vpor %ymm7, %ymm10, %ymm10 -vmovdqu 0(%rdi), %ymm7 -vpaddw %ymm10, %ymm7, %ymm7 -vmovdqu %ymm7, 0(%rdi) -vmovdqa %xmm2, 1920(%rsp) -vpshufb shuf48_16(%rip), %ymm4, %ymm4 -vpand mask3_5_3_5(%rip), %ymm4, %ymm2 -vpand mask5_3_5_3(%rip), %ymm4, %ymm4 -vpermq $206, %ymm2, %ymm2 -vpand mask_keephigh(%rip), %ymm2, %ymm7 -vpor %ymm7, %ymm4, %ymm4 -vpaddw %ymm4, %ymm11, %ymm11 -vmovdqa %xmm2, 2176(%rsp) -vpshufb shuf48_16(%rip), %ymm3, %ymm3 -vpand mask3_5_3_5(%rip), %ymm3, %ymm2 -vpand mask5_3_5_3(%rip), %ymm3, %ymm3 -vpermq $206, %ymm2, %ymm2 -vpand mask_keephigh(%rip), %ymm2, %ymm7 -vpor %ymm7, %ymm3, %ymm3 -vpaddw %ymm3, %ymm6, %ymm6 -vmovdqa %xmm2, 2432(%rsp) -vpshufb shuf48_16(%rip), %ymm5, %ymm5 -vpand mask3_5_3_5(%rip), %ymm5, %ymm2 -vpand mask5_3_5_3(%rip), %ymm5, %ymm5 -vpermq $206, %ymm2, %ymm2 -vpand mask_keephigh(%rip), %ymm2, %ymm7 -vpor %ymm7, %ymm5, %ymm5 -vpaddw %ymm5, %ymm9, %ymm9 -vmovdqa %xmm2, 2688(%rsp) -vmovdqu %ymm11, 352(%rdi) -vmovdqu %ymm6, 704(%rdi) -vmovdqu %ymm9, 1056(%rdi) -vmovdqa 160(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm3 -vpunpckhwd const0(%rip), %ymm5, %ymm4 -vpslld $1, %ymm3, %ymm3 -vpslld $1, %ymm4, %ymm4 -vmovdqa 416(%rsp), %ymm10 -vpunpcklwd const0(%rip), %ymm10, %ymm9 -vpunpckhwd const0(%rip), %ymm10, %ymm10 -vmovdqa 672(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm9, %ymm2 -vpaddd %ymm6, %ymm10, %ymm7 -vpsubd %ymm3, %ymm2, %ymm2 -vpsubd %ymm4, %ymm7, %ymm7 -vpsubd %ymm11, %ymm9, %ymm11 -vpsubd %ymm6, %ymm10, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1696(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm10 -vpunpckhwd const0(%rip), %ymm11, %ymm9 -vpslld $1, %ymm10, %ymm10 -vpslld $1, %ymm9, %ymm9 -vpsubd %ymm10, %ymm2, %ymm2 -vpsubd %ymm9, %ymm7, %ymm7 -vpsrld $1, %ymm2, %ymm2 -vpsrld $1, %ymm7, %ymm7 -vpand mask32_to_16(%rip), %ymm2, %ymm2 -vpand mask32_to_16(%rip), %ymm7, %ymm7 -vpackusdw %ymm7, %ymm2, %ymm7 -vmovdqa 928(%rsp), %ymm2 -vpaddw 1184(%rsp), %ymm2, %ymm9 -vpsubw 1184(%rsp), %ymm2, %ymm2 -vpsrlw $2, %ymm2, %ymm2 -vpsubw %ymm6, %ymm2, %ymm2 -vpmullw %ymm14, %ymm2, %ymm2 -vpsllw $1, %ymm5, %ymm10 -vpsubw %ymm10, %ymm9, %ymm10 -vpsllw $7, %ymm11, %ymm9 -vpsubw %ymm9, %ymm10, %ymm9 -vpsrlw $3, %ymm9, %ymm9 -vpsubw %ymm7, %ymm9, %ymm9 -vmovdqa 1440(%rsp), %ymm10 -vpsubw %ymm5, %ymm10, %ymm10 -vpmullw %ymm15, %ymm11, %ymm4 -vpsubw %ymm4, %ymm10, %ymm4 -vpmullw %ymm14, %ymm9, %ymm9 -vpsubw %ymm9, %ymm7, %ymm7 -vpmullw %ymm12, %ymm9, %ymm10 -vpaddw %ymm10, %ymm7, %ymm10 -vpmullw %ymm12, %ymm10, %ymm10 -vpsubw %ymm10, %ymm4, %ymm10 -vpmullw %ymm14, %ymm10, %ymm10 -vpsubw %ymm6, %ymm10, %ymm10 -vpsrlw $3, %ymm10, %ymm10 -vpsubw %ymm2, %ymm10, %ymm10 -vpsubw %ymm10, %ymm2, %ymm2 -vpsubw %ymm2, %ymm6, %ymm6 -vpmullw %ymm13, %ymm10, %ymm10 -vpsubw %ymm10, %ymm6, %ymm6 -vmovdqu 440(%rdi), %ymm4 -vmovdqu 792(%rdi), %ymm3 -vmovdqu 1144(%rdi), %ymm8 -vpaddw %ymm5, %ymm4, %ymm5 -vpaddw %ymm6, %ymm3, %ymm6 -vpaddw %ymm7, %ymm8, %ymm7 -vpshufb shuf48_16(%rip), %ymm2, %ymm2 -vpand mask3_5_3_5(%rip), %ymm2, %ymm8 -vpand mask5_3_5_3(%rip), %ymm2, %ymm2 -vpermq $206, %ymm8, %ymm8 -vpand mask_keephigh(%rip), %ymm8, %ymm3 -vpor %ymm3, %ymm2, %ymm2 -vmovdqu 88(%rdi), %ymm3 -vpaddw %ymm2, %ymm3, %ymm3 -vmovdqu %ymm3, 88(%rdi) -vmovdqa %xmm8, 1952(%rsp) -vpshufb shuf48_16(%rip), %ymm9, %ymm9 -vpand mask3_5_3_5(%rip), %ymm9, %ymm8 -vpand mask5_3_5_3(%rip), %ymm9, %ymm9 -vpermq $206, %ymm8, %ymm8 -vpand mask_keephigh(%rip), %ymm8, %ymm3 -vpor %ymm3, %ymm9, %ymm9 -vpaddw %ymm9, %ymm5, %ymm5 -vmovdqa %xmm8, 2208(%rsp) -vpshufb shuf48_16(%rip), %ymm10, %ymm10 -vpand mask3_5_3_5(%rip), %ymm10, %ymm8 -vpand mask5_3_5_3(%rip), %ymm10, %ymm10 -vpermq $206, %ymm8, %ymm8 -vpand mask_keephigh(%rip), %ymm8, %ymm3 -vpor %ymm3, %ymm10, %ymm10 -vpaddw %ymm10, %ymm6, %ymm6 -vmovdqa %xmm8, 2464(%rsp) -vpshufb shuf48_16(%rip), %ymm11, %ymm11 -vpand mask3_5_3_5(%rip), %ymm11, %ymm8 -vpand mask5_3_5_3(%rip), %ymm11, %ymm11 -vpermq $206, %ymm8, %ymm8 -vpand mask_keephigh(%rip), %ymm8, %ymm3 -vpor %ymm3, %ymm11, %ymm11 -vpaddw %ymm11, %ymm7, %ymm7 -vmovdqa %xmm8, 2720(%rsp) -vmovdqu %ymm5, 440(%rdi) -vmovdqu %ymm6, 792(%rdi) -vmovdqu %ymm7, 1144(%rdi) -vmovdqa 192(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm10 -vpunpckhwd const0(%rip), %ymm11, %ymm9 -vpslld $1, %ymm10, %ymm10 -vpslld $1, %ymm9, %ymm9 -vmovdqa 448(%rsp), %ymm2 -vpunpcklwd const0(%rip), %ymm2, %ymm7 -vpunpckhwd const0(%rip), %ymm2, %ymm2 -vmovdqa 704(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm7, %ymm8 -vpaddd %ymm6, %ymm2, %ymm3 -vpsubd %ymm10, %ymm8, %ymm8 -vpsubd %ymm9, %ymm3, %ymm3 -vpsubd %ymm5, %ymm7, %ymm5 -vpsubd %ymm6, %ymm2, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1728(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm2 -vpunpckhwd const0(%rip), %ymm5, %ymm7 -vpslld $1, %ymm2, %ymm2 -vpslld $1, %ymm7, %ymm7 -vpsubd %ymm2, %ymm8, %ymm8 -vpsubd %ymm7, %ymm3, %ymm3 -vpsrld $1, %ymm8, %ymm8 -vpsrld $1, %ymm3, %ymm3 -vpand mask32_to_16(%rip), %ymm8, %ymm8 -vpand mask32_to_16(%rip), %ymm3, %ymm3 -vpackusdw %ymm3, %ymm8, %ymm3 -vmovdqa 960(%rsp), %ymm8 -vpaddw 1216(%rsp), %ymm8, %ymm7 -vpsubw 1216(%rsp), %ymm8, %ymm8 -vpsrlw $2, %ymm8, %ymm8 -vpsubw %ymm6, %ymm8, %ymm8 -vpmullw %ymm14, %ymm8, %ymm8 -vpsllw $1, %ymm11, %ymm2 -vpsubw %ymm2, %ymm7, %ymm2 -vpsllw $7, %ymm5, %ymm7 -vpsubw %ymm7, %ymm2, %ymm7 -vpsrlw $3, %ymm7, %ymm7 -vpsubw %ymm3, %ymm7, %ymm7 -vmovdqa 1472(%rsp), %ymm2 -vpsubw %ymm11, %ymm2, %ymm2 -vpmullw %ymm15, %ymm5, %ymm9 -vpsubw %ymm9, %ymm2, %ymm9 -vpmullw %ymm14, %ymm7, %ymm7 -vpsubw %ymm7, %ymm3, %ymm3 -vpmullw %ymm12, %ymm7, %ymm2 -vpaddw %ymm2, %ymm3, %ymm2 -vpmullw %ymm12, %ymm2, %ymm2 -vpsubw %ymm2, %ymm9, %ymm2 -vpmullw %ymm14, %ymm2, %ymm2 -vpsubw %ymm6, %ymm2, %ymm2 -vpsrlw $3, %ymm2, %ymm2 -vpsubw %ymm8, %ymm2, %ymm2 -vpsubw %ymm2, %ymm8, %ymm8 -vpsubw %ymm8, %ymm6, %ymm6 -vpmullw %ymm13, %ymm2, %ymm2 -vpsubw %ymm2, %ymm6, %ymm6 -vmovdqu 528(%rdi), %ymm9 -vmovdqu 880(%rdi), %ymm10 -vmovdqu 1232(%rdi), %ymm4 -vpaddw %ymm11, %ymm9, %ymm11 -vpaddw %ymm6, %ymm10, %ymm6 -vpaddw %ymm3, %ymm4, %ymm3 -vpshufb shuf48_16(%rip), %ymm8, %ymm8 -vpand mask3_5_3_5(%rip), %ymm8, %ymm4 -vpand mask5_3_5_3(%rip), %ymm8, %ymm8 -vpermq $206, %ymm4, %ymm4 -vpand mask_keephigh(%rip), %ymm4, %ymm10 -vpor %ymm10, %ymm8, %ymm8 -vmovdqu 176(%rdi), %ymm10 -vpaddw %ymm8, %ymm10, %ymm10 -vmovdqu %ymm10, 176(%rdi) -vmovdqa %xmm4, 1984(%rsp) -vpshufb shuf48_16(%rip), %ymm7, %ymm7 -vpand mask3_5_3_5(%rip), %ymm7, %ymm4 -vpand mask5_3_5_3(%rip), %ymm7, %ymm7 -vpermq $206, %ymm4, %ymm4 -vpand mask_keephigh(%rip), %ymm4, %ymm10 -vpor %ymm10, %ymm7, %ymm7 -vpaddw %ymm7, %ymm11, %ymm11 -vmovdqa %xmm4, 2240(%rsp) -vpshufb shuf48_16(%rip), %ymm2, %ymm2 -vpand mask3_5_3_5(%rip), %ymm2, %ymm4 -vpand mask5_3_5_3(%rip), %ymm2, %ymm2 -vpermq $206, %ymm4, %ymm4 -vpand mask_keephigh(%rip), %ymm4, %ymm10 -vpor %ymm10, %ymm2, %ymm2 -vpaddw %ymm2, %ymm6, %ymm6 -vmovdqa %xmm4, 2496(%rsp) -vpshufb shuf48_16(%rip), %ymm5, %ymm5 -vpand mask3_5_3_5(%rip), %ymm5, %ymm4 -vpand mask5_3_5_3(%rip), %ymm5, %ymm5 -vpermq $206, %ymm4, %ymm4 -vpand mask_keephigh(%rip), %ymm4, %ymm10 -vpor %ymm10, %ymm5, %ymm5 -vpaddw %ymm5, %ymm3, %ymm3 -vmovdqa %xmm4, 2752(%rsp) -vmovdqu %ymm11, 528(%rdi) -vmovdqu %ymm6, 880(%rdi) -vmovdqu %ymm3, 1232(%rdi) -vmovdqa 224(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm2 -vpunpckhwd const0(%rip), %ymm5, %ymm7 -vpslld $1, %ymm2, %ymm2 -vpslld $1, %ymm7, %ymm7 -vmovdqa 480(%rsp), %ymm8 -vpunpcklwd const0(%rip), %ymm8, %ymm3 -vpunpckhwd const0(%rip), %ymm8, %ymm8 -vmovdqa 736(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm3, %ymm4 -vpaddd %ymm6, %ymm8, %ymm10 -vpsubd %ymm2, %ymm4, %ymm4 -vpsubd %ymm7, %ymm10, %ymm10 -vpsubd %ymm11, %ymm3, %ymm11 -vpsubd %ymm6, %ymm8, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1760(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm8 -vpunpckhwd const0(%rip), %ymm11, %ymm3 -vpslld $1, %ymm8, %ymm8 -vpslld $1, %ymm3, %ymm3 -vpsubd %ymm8, %ymm4, %ymm4 -vpsubd %ymm3, %ymm10, %ymm10 -vpsrld $1, %ymm4, %ymm4 -vpsrld $1, %ymm10, %ymm10 -vpand mask32_to_16(%rip), %ymm4, %ymm4 -vpand mask32_to_16(%rip), %ymm10, %ymm10 -vpackusdw %ymm10, %ymm4, %ymm10 -vmovdqa 992(%rsp), %ymm4 -vpaddw 1248(%rsp), %ymm4, %ymm3 -vpsubw 1248(%rsp), %ymm4, %ymm4 -vpsrlw $2, %ymm4, %ymm4 -vpsubw %ymm6, %ymm4, %ymm4 -vpmullw %ymm14, %ymm4, %ymm4 -vpsllw $1, %ymm5, %ymm8 -vpsubw %ymm8, %ymm3, %ymm8 -vpsllw $7, %ymm11, %ymm3 -vpsubw %ymm3, %ymm8, %ymm3 -vpsrlw $3, %ymm3, %ymm3 -vpsubw %ymm10, %ymm3, %ymm3 -vmovdqa 1504(%rsp), %ymm8 -vpsubw %ymm5, %ymm8, %ymm8 -vpmullw %ymm15, %ymm11, %ymm7 -vpsubw %ymm7, %ymm8, %ymm7 -vpmullw %ymm14, %ymm3, %ymm3 -vpsubw %ymm3, %ymm10, %ymm10 -vpmullw %ymm12, %ymm3, %ymm8 -vpaddw %ymm8, %ymm10, %ymm8 -vpmullw %ymm12, %ymm8, %ymm8 -vpsubw %ymm8, %ymm7, %ymm8 -vpmullw %ymm14, %ymm8, %ymm8 -vpsubw %ymm6, %ymm8, %ymm8 -vpsrlw $3, %ymm8, %ymm8 -vpsubw %ymm4, %ymm8, %ymm8 -vpsubw %ymm8, %ymm4, %ymm4 -vpsubw %ymm4, %ymm6, %ymm6 -vpmullw %ymm13, %ymm8, %ymm8 -vpsubw %ymm8, %ymm6, %ymm6 -vmovdqu 616(%rdi), %ymm7 -vmovdqu 968(%rdi), %ymm2 -vmovdqu 1320(%rdi), %ymm9 -vpaddw %ymm5, %ymm7, %ymm5 -vpaddw %ymm6, %ymm2, %ymm6 -vpaddw %ymm10, %ymm9, %ymm10 -vpshufb shuf48_16(%rip), %ymm4, %ymm4 -vpand mask3_5_3_5(%rip), %ymm4, %ymm9 -vpand mask5_3_5_3(%rip), %ymm4, %ymm4 -vpermq $206, %ymm9, %ymm9 -vpand mask_keephigh(%rip), %ymm9, %ymm2 -vpor %ymm2, %ymm4, %ymm4 -vmovdqu 264(%rdi), %ymm2 -vpaddw %ymm4, %ymm2, %ymm2 -vmovdqu %ymm2, 264(%rdi) -vmovdqa %xmm9, 2016(%rsp) -vpshufb shuf48_16(%rip), %ymm3, %ymm3 -vpand mask3_5_3_5(%rip), %ymm3, %ymm9 -vpand mask5_3_5_3(%rip), %ymm3, %ymm3 -vpermq $206, %ymm9, %ymm9 -vpand mask_keephigh(%rip), %ymm9, %ymm2 -vpor %ymm2, %ymm3, %ymm3 -vpaddw %ymm3, %ymm5, %ymm5 -vmovdqa %xmm9, 2272(%rsp) -vpshufb shuf48_16(%rip), %ymm8, %ymm8 -vpand mask3_5_3_5(%rip), %ymm8, %ymm9 -vpand mask5_3_5_3(%rip), %ymm8, %ymm8 -vpermq $206, %ymm9, %ymm9 -vpand mask_keephigh(%rip), %ymm9, %ymm2 -vpor %ymm2, %ymm8, %ymm8 -vpaddw %ymm8, %ymm6, %ymm6 -vmovdqa %xmm9, 2528(%rsp) -vpshufb shuf48_16(%rip), %ymm11, %ymm11 -vpand mask3_5_3_5(%rip), %ymm11, %ymm9 -vpand mask5_3_5_3(%rip), %ymm11, %ymm11 -vpermq $206, %ymm9, %ymm9 -vpand mask_keephigh(%rip), %ymm9, %ymm2 -vpor %ymm2, %ymm11, %ymm11 -vpaddw %ymm11, %ymm10, %ymm10 -vmovdqa %xmm9, 2784(%rsp) -vmovdqu %ymm5, 616(%rdi) -vmovdqu %ymm6, 968(%rdi) -vmovdqu %ymm10, 1320(%rdi) -vmovdqa 128(%r12), %ymm0 -vpsubw 224(%r12), %ymm0, %ymm0 -vmovdqa 512(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 320(%r12), %ymm1, %ymm1 -vpsubw 32(%r12), %ymm0, %ymm0 -vpaddw 416(%r12), %ymm0, %ymm0 -vmovdqa 704(%r12), %ymm2 -vpsubw 800(%r12), %ymm2, %ymm2 -vmovdqa 1088(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 896(%r12), %ymm3, %ymm3 -vpsubw 608(%r12), %ymm2, %ymm2 -vpaddw 992(%r12), %ymm2, %ymm2 -vmovdqa 1280(%r12), %ymm4 -vpsubw 1376(%r12), %ymm4, %ymm4 -vmovdqa 1664(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 1472(%r12), %ymm5, %ymm5 -vpsubw 1184(%r12), %ymm4, %ymm4 -vpaddw 1568(%r12), %ymm4, %ymm4 -vpsubw 608(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 32(%r12), %ymm1, %ymm1 -vpaddw 1184(%r12), %ymm1, %ymm1 -vmovdqa 320(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 1472(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 896(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 32(%r12), %ymm8 -vmovdqa 896(%r12), %ymm9 -vmovdqa %ymm8, 0(%rsp) -vmovdqa %ymm0, 32(%rsp) -vmovdqa %ymm1, 64(%rsp) -vmovdqa %ymm7, 96(%rsp) -vmovdqa %ymm5, 128(%rsp) -vmovdqa %ymm2, 160(%rsp) -vmovdqa %ymm3, 192(%rsp) -vmovdqa %ymm9, 224(%rsp) -vmovdqa 1856(%r12), %ymm0 -vpsubw 1952(%r12), %ymm0, %ymm0 -vmovdqa 2240(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 2048(%r12), %ymm1, %ymm1 -vpsubw 1760(%r12), %ymm0, %ymm0 -vpaddw 2144(%r12), %ymm0, %ymm0 -vmovdqa 2432(%r12), %ymm2 -vpsubw 2528(%r12), %ymm2, %ymm2 -vmovdqa 2816(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 2624(%r12), %ymm3, %ymm3 -vpsubw 2336(%r12), %ymm2, %ymm2 -vpaddw 2720(%r12), %ymm2, %ymm2 -vmovdqa 3008(%r12), %ymm4 -vpsubw 3104(%r12), %ymm4, %ymm4 -vmovdqa 3392(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 3200(%r12), %ymm5, %ymm5 -vpsubw 2912(%r12), %ymm4, %ymm4 -vpaddw 3296(%r12), %ymm4, %ymm4 -vpsubw 2336(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 1760(%r12), %ymm1, %ymm1 -vpaddw 2912(%r12), %ymm1, %ymm1 -vmovdqa 2048(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 3200(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 2624(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 1760(%r12), %ymm8 -vmovdqa 2624(%r12), %ymm9 -vmovdqa %ymm8, 256(%rsp) -vmovdqa %ymm0, 288(%rsp) -vmovdqa %ymm1, 320(%rsp) -vmovdqa %ymm7, 352(%rsp) -vmovdqa %ymm5, 384(%rsp) -vmovdqa %ymm2, 416(%rsp) -vmovdqa %ymm3, 448(%rsp) -vmovdqa %ymm9, 480(%rsp) -vmovdqa 3584(%r12), %ymm0 -vpsubw 3680(%r12), %ymm0, %ymm0 -vmovdqa 3968(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 3776(%r12), %ymm1, %ymm1 -vpsubw 3488(%r12), %ymm0, %ymm0 -vpaddw 3872(%r12), %ymm0, %ymm0 -vmovdqa 4160(%r12), %ymm2 -vpsubw 4256(%r12), %ymm2, %ymm2 -vmovdqa 4544(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 4352(%r12), %ymm3, %ymm3 -vpsubw 4064(%r12), %ymm2, %ymm2 -vpaddw 4448(%r12), %ymm2, %ymm2 -vmovdqa 4736(%r12), %ymm4 -vpsubw 4832(%r12), %ymm4, %ymm4 -vmovdqa 5120(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 4928(%r12), %ymm5, %ymm5 -vpsubw 4640(%r12), %ymm4, %ymm4 -vpaddw 5024(%r12), %ymm4, %ymm4 -vpsubw 4064(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 3488(%r12), %ymm1, %ymm1 -vpaddw 4640(%r12), %ymm1, %ymm1 -vmovdqa 3776(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 4928(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 4352(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 3488(%r12), %ymm8 -vmovdqa 4352(%r12), %ymm9 -vmovdqa %ymm8, 512(%rsp) -vmovdqa %ymm0, 544(%rsp) -vmovdqa %ymm1, 576(%rsp) -vmovdqa %ymm7, 608(%rsp) -vmovdqa %ymm5, 640(%rsp) -vmovdqa %ymm2, 672(%rsp) -vmovdqa %ymm3, 704(%rsp) -vmovdqa %ymm9, 736(%rsp) -vmovdqa 5312(%r12), %ymm0 -vpsubw 5408(%r12), %ymm0, %ymm0 -vmovdqa 5696(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 5504(%r12), %ymm1, %ymm1 -vpsubw 5216(%r12), %ymm0, %ymm0 -vpaddw 5600(%r12), %ymm0, %ymm0 -vmovdqa 5888(%r12), %ymm2 -vpsubw 5984(%r12), %ymm2, %ymm2 -vmovdqa 6272(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 6080(%r12), %ymm3, %ymm3 -vpsubw 5792(%r12), %ymm2, %ymm2 -vpaddw 6176(%r12), %ymm2, %ymm2 -vmovdqa 6464(%r12), %ymm4 -vpsubw 6560(%r12), %ymm4, %ymm4 -vmovdqa 6848(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 6656(%r12), %ymm5, %ymm5 -vpsubw 6368(%r12), %ymm4, %ymm4 -vpaddw 6752(%r12), %ymm4, %ymm4 -vpsubw 5792(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 5216(%r12), %ymm1, %ymm1 -vpaddw 6368(%r12), %ymm1, %ymm1 -vmovdqa 5504(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 6656(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 6080(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 5216(%r12), %ymm8 -vmovdqa 6080(%r12), %ymm9 -vmovdqa %ymm8, 768(%rsp) -vmovdqa %ymm0, 800(%rsp) -vmovdqa %ymm1, 832(%rsp) -vmovdqa %ymm7, 864(%rsp) -vmovdqa %ymm5, 896(%rsp) -vmovdqa %ymm2, 928(%rsp) -vmovdqa %ymm3, 960(%rsp) -vmovdqa %ymm9, 992(%rsp) -vmovdqa 7040(%r12), %ymm0 -vpsubw 7136(%r12), %ymm0, %ymm0 -vmovdqa 7424(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 7232(%r12), %ymm1, %ymm1 -vpsubw 6944(%r12), %ymm0, %ymm0 -vpaddw 7328(%r12), %ymm0, %ymm0 -vmovdqa 7616(%r12), %ymm2 -vpsubw 7712(%r12), %ymm2, %ymm2 -vmovdqa 8000(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 7808(%r12), %ymm3, %ymm3 -vpsubw 7520(%r12), %ymm2, %ymm2 -vpaddw 7904(%r12), %ymm2, %ymm2 -vmovdqa 8192(%r12), %ymm4 -vpsubw 8288(%r12), %ymm4, %ymm4 -vmovdqa 8576(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 8384(%r12), %ymm5, %ymm5 -vpsubw 8096(%r12), %ymm4, %ymm4 -vpaddw 8480(%r12), %ymm4, %ymm4 -vpsubw 7520(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 6944(%r12), %ymm1, %ymm1 -vpaddw 8096(%r12), %ymm1, %ymm1 -vmovdqa 7232(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 8384(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 7808(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 6944(%r12), %ymm8 -vmovdqa 7808(%r12), %ymm9 -vmovdqa %ymm8, 1024(%rsp) -vmovdqa %ymm0, 1056(%rsp) -vmovdqa %ymm1, 1088(%rsp) -vmovdqa %ymm7, 1120(%rsp) -vmovdqa %ymm5, 1152(%rsp) -vmovdqa %ymm2, 1184(%rsp) -vmovdqa %ymm3, 1216(%rsp) -vmovdqa %ymm9, 1248(%rsp) -vmovdqa 8768(%r12), %ymm0 -vpsubw 8864(%r12), %ymm0, %ymm0 -vmovdqa 9152(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 8960(%r12), %ymm1, %ymm1 -vpsubw 8672(%r12), %ymm0, %ymm0 -vpaddw 9056(%r12), %ymm0, %ymm0 -vmovdqa 9344(%r12), %ymm2 -vpsubw 9440(%r12), %ymm2, %ymm2 -vmovdqa 9728(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 9536(%r12), %ymm3, %ymm3 -vpsubw 9248(%r12), %ymm2, %ymm2 -vpaddw 9632(%r12), %ymm2, %ymm2 -vmovdqa 9920(%r12), %ymm4 -vpsubw 10016(%r12), %ymm4, %ymm4 -vmovdqa 10304(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 10112(%r12), %ymm5, %ymm5 -vpsubw 9824(%r12), %ymm4, %ymm4 -vpaddw 10208(%r12), %ymm4, %ymm4 -vpsubw 9248(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 8672(%r12), %ymm1, %ymm1 -vpaddw 9824(%r12), %ymm1, %ymm1 -vmovdqa 8960(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 10112(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 9536(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 8672(%r12), %ymm8 -vmovdqa 9536(%r12), %ymm9 -vmovdqa %ymm8, 1280(%rsp) -vmovdqa %ymm0, 1312(%rsp) -vmovdqa %ymm1, 1344(%rsp) -vmovdqa %ymm7, 1376(%rsp) -vmovdqa %ymm5, 1408(%rsp) -vmovdqa %ymm2, 1440(%rsp) -vmovdqa %ymm3, 1472(%rsp) -vmovdqa %ymm9, 1504(%rsp) -vmovdqa 10496(%r12), %ymm0 -vpsubw 10592(%r12), %ymm0, %ymm0 -vmovdqa 10880(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 10688(%r12), %ymm1, %ymm1 -vpsubw 10400(%r12), %ymm0, %ymm0 -vpaddw 10784(%r12), %ymm0, %ymm0 -vmovdqa 11072(%r12), %ymm2 -vpsubw 11168(%r12), %ymm2, %ymm2 -vmovdqa 11456(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 11264(%r12), %ymm3, %ymm3 -vpsubw 10976(%r12), %ymm2, %ymm2 -vpaddw 11360(%r12), %ymm2, %ymm2 -vmovdqa 11648(%r12), %ymm4 -vpsubw 11744(%r12), %ymm4, %ymm4 -vmovdqa 12032(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 11840(%r12), %ymm5, %ymm5 -vpsubw 11552(%r12), %ymm4, %ymm4 -vpaddw 11936(%r12), %ymm4, %ymm4 -vpsubw 10976(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 10400(%r12), %ymm1, %ymm1 -vpaddw 11552(%r12), %ymm1, %ymm1 -vmovdqa 10688(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 11840(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 11264(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 10400(%r12), %ymm8 -vmovdqa 11264(%r12), %ymm9 -vmovdqa %ymm8, 1536(%rsp) -vmovdqa %ymm0, 1568(%rsp) -vmovdqa %ymm1, 1600(%rsp) -vmovdqa %ymm7, 1632(%rsp) -vmovdqa %ymm5, 1664(%rsp) -vmovdqa %ymm2, 1696(%rsp) -vmovdqa %ymm3, 1728(%rsp) -vmovdqa %ymm9, 1760(%rsp) -vmovdqa 0(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm8 -vpunpckhwd const0(%rip), %ymm11, %ymm3 -vpslld $1, %ymm8, %ymm8 -vpslld $1, %ymm3, %ymm3 -vmovdqa 256(%rsp), %ymm4 -vpunpcklwd const0(%rip), %ymm4, %ymm10 -vpunpckhwd const0(%rip), %ymm4, %ymm4 -vmovdqa 512(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm10, %ymm9 -vpaddd %ymm6, %ymm4, %ymm2 -vpsubd %ymm8, %ymm9, %ymm9 -vpsubd %ymm3, %ymm2, %ymm2 -vpsubd %ymm5, %ymm10, %ymm5 -vpsubd %ymm6, %ymm4, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1536(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm4 -vpunpckhwd const0(%rip), %ymm5, %ymm10 -vpslld $1, %ymm4, %ymm4 -vpslld $1, %ymm10, %ymm10 -vpsubd %ymm4, %ymm9, %ymm9 -vpsubd %ymm10, %ymm2, %ymm2 -vpsrld $1, %ymm9, %ymm9 -vpsrld $1, %ymm2, %ymm2 -vpand mask32_to_16(%rip), %ymm9, %ymm9 -vpand mask32_to_16(%rip), %ymm2, %ymm2 -vpackusdw %ymm2, %ymm9, %ymm2 -vmovdqa 768(%rsp), %ymm9 -vpaddw 1024(%rsp), %ymm9, %ymm10 -vpsubw 1024(%rsp), %ymm9, %ymm9 -vpsrlw $2, %ymm9, %ymm9 -vpsubw %ymm6, %ymm9, %ymm9 -vpmullw %ymm14, %ymm9, %ymm9 -vpsllw $1, %ymm11, %ymm4 -vpsubw %ymm4, %ymm10, %ymm4 -vpsllw $7, %ymm5, %ymm10 -vpsubw %ymm10, %ymm4, %ymm10 -vpsrlw $3, %ymm10, %ymm10 -vpsubw %ymm2, %ymm10, %ymm10 -vmovdqa 1280(%rsp), %ymm4 -vpsubw %ymm11, %ymm4, %ymm4 -vpmullw %ymm15, %ymm5, %ymm3 -vpsubw %ymm3, %ymm4, %ymm3 -vpmullw %ymm14, %ymm10, %ymm10 -vpsubw %ymm10, %ymm2, %ymm2 -vpmullw %ymm12, %ymm10, %ymm4 -vpaddw %ymm4, %ymm2, %ymm4 -vpmullw %ymm12, %ymm4, %ymm4 -vpsubw %ymm4, %ymm3, %ymm4 -vpmullw %ymm14, %ymm4, %ymm4 -vpsubw %ymm6, %ymm4, %ymm4 -vpsrlw $3, %ymm4, %ymm4 -vpsubw %ymm9, %ymm4, %ymm4 -vpsubw %ymm4, %ymm9, %ymm9 -vpsubw %ymm9, %ymm6, %ymm6 -vpmullw %ymm13, %ymm4, %ymm4 -vpsubw %ymm4, %ymm6, %ymm6 -vpshufb shuf48_16(%rip), %ymm10, %ymm10 -vpand mask3_5_3_5(%rip), %ymm10, %ymm3 -vpand mask5_3_5_3(%rip), %ymm10, %ymm10 -vpermq $206, %ymm3, %ymm3 -vpand mask_keephigh(%rip), %ymm3, %ymm8 -vpor %ymm8, %ymm10, %ymm10 -vpaddw 2048(%rsp), %ymm11, %ymm11 -vpaddw %ymm10, %ymm11, %ymm11 -vmovdqa %xmm3, 2048(%rsp) -vpshufb shuf48_16(%rip), %ymm4, %ymm4 -vpand mask3_5_3_5(%rip), %ymm4, %ymm3 -vpand mask5_3_5_3(%rip), %ymm4, %ymm4 -vpermq $206, %ymm3, %ymm3 -vpand mask_keephigh(%rip), %ymm3, %ymm8 -vpor %ymm8, %ymm4, %ymm4 -vpaddw 2304(%rsp), %ymm6, %ymm6 -vpaddw %ymm4, %ymm6, %ymm6 -vmovdqa %xmm3, 2304(%rsp) -vpshufb shuf48_16(%rip), %ymm5, %ymm5 -vpand mask3_5_3_5(%rip), %ymm5, %ymm3 -vpand mask5_3_5_3(%rip), %ymm5, %ymm5 -vpermq $206, %ymm3, %ymm3 -vpand mask_keephigh(%rip), %ymm3, %ymm8 -vpor %ymm8, %ymm5, %ymm5 -vpaddw 2560(%rsp), %ymm2, %ymm2 -vpaddw %ymm5, %ymm2, %ymm2 -vmovdqa %xmm3, 2560(%rsp) -vmovdqu %ymm11, 32(%rdi) -vmovdqu %ymm6, 384(%rdi) -vmovdqu %ymm2, 736(%rdi) -vmovdqu %ymm9, 1088(%rdi) -vmovdqa 32(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm4 -vpunpckhwd const0(%rip), %ymm5, %ymm10 -vpslld $1, %ymm4, %ymm4 -vpslld $1, %ymm10, %ymm10 -vmovdqa 288(%rsp), %ymm9 -vpunpcklwd const0(%rip), %ymm9, %ymm2 -vpunpckhwd const0(%rip), %ymm9, %ymm9 -vmovdqa 544(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm2, %ymm3 -vpaddd %ymm6, %ymm9, %ymm8 -vpsubd %ymm4, %ymm3, %ymm3 -vpsubd %ymm10, %ymm8, %ymm8 -vpsubd %ymm11, %ymm2, %ymm11 -vpsubd %ymm6, %ymm9, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1568(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm9 -vpunpckhwd const0(%rip), %ymm11, %ymm2 -vpslld $1, %ymm9, %ymm9 -vpslld $1, %ymm2, %ymm2 -vpsubd %ymm9, %ymm3, %ymm3 -vpsubd %ymm2, %ymm8, %ymm8 -vpsrld $1, %ymm3, %ymm3 -vpsrld $1, %ymm8, %ymm8 -vpand mask32_to_16(%rip), %ymm3, %ymm3 -vpand mask32_to_16(%rip), %ymm8, %ymm8 -vpackusdw %ymm8, %ymm3, %ymm8 -vmovdqa 800(%rsp), %ymm3 -vpaddw 1056(%rsp), %ymm3, %ymm2 -vpsubw 1056(%rsp), %ymm3, %ymm3 -vpsrlw $2, %ymm3, %ymm3 -vpsubw %ymm6, %ymm3, %ymm3 -vpmullw %ymm14, %ymm3, %ymm3 -vpsllw $1, %ymm5, %ymm9 -vpsubw %ymm9, %ymm2, %ymm9 -vpsllw $7, %ymm11, %ymm2 -vpsubw %ymm2, %ymm9, %ymm2 -vpsrlw $3, %ymm2, %ymm2 -vpsubw %ymm8, %ymm2, %ymm2 -vmovdqa 1312(%rsp), %ymm9 -vpsubw %ymm5, %ymm9, %ymm9 -vpmullw %ymm15, %ymm11, %ymm10 -vpsubw %ymm10, %ymm9, %ymm10 -vpmullw %ymm14, %ymm2, %ymm2 -vpsubw %ymm2, %ymm8, %ymm8 -vpmullw %ymm12, %ymm2, %ymm9 -vpaddw %ymm9, %ymm8, %ymm9 -vpmullw %ymm12, %ymm9, %ymm9 -vpsubw %ymm9, %ymm10, %ymm9 -vpmullw %ymm14, %ymm9, %ymm9 -vpsubw %ymm6, %ymm9, %ymm9 -vpsrlw $3, %ymm9, %ymm9 -vpsubw %ymm3, %ymm9, %ymm9 -vpsubw %ymm9, %ymm3, %ymm3 -vpsubw %ymm3, %ymm6, %ymm6 -vpmullw %ymm13, %ymm9, %ymm9 -vpsubw %ymm9, %ymm6, %ymm6 -vpshufb shuf48_16(%rip), %ymm2, %ymm2 -vpand mask3_5_3_5(%rip), %ymm2, %ymm10 -vpand mask5_3_5_3(%rip), %ymm2, %ymm2 -vpermq $206, %ymm10, %ymm10 -vpand mask_keephigh(%rip), %ymm10, %ymm4 -vpor %ymm4, %ymm2, %ymm2 -vpaddw 2080(%rsp), %ymm5, %ymm5 -vpaddw %ymm2, %ymm5, %ymm5 -vmovdqa %xmm10, 2080(%rsp) -vpshufb shuf48_16(%rip), %ymm9, %ymm9 -vpand mask3_5_3_5(%rip), %ymm9, %ymm10 -vpand mask5_3_5_3(%rip), %ymm9, %ymm9 -vpermq $206, %ymm10, %ymm10 -vpand mask_keephigh(%rip), %ymm10, %ymm4 -vpor %ymm4, %ymm9, %ymm9 -vpaddw 2336(%rsp), %ymm6, %ymm6 -vpaddw %ymm9, %ymm6, %ymm6 -vmovdqa %xmm10, 2336(%rsp) -vpshufb shuf48_16(%rip), %ymm11, %ymm11 -vpand mask3_5_3_5(%rip), %ymm11, %ymm10 -vpand mask5_3_5_3(%rip), %ymm11, %ymm11 -vpermq $206, %ymm10, %ymm10 -vpand mask_keephigh(%rip), %ymm10, %ymm4 -vpor %ymm4, %ymm11, %ymm11 -vpaddw 2592(%rsp), %ymm8, %ymm8 -vpaddw %ymm11, %ymm8, %ymm8 -vmovdqa %xmm10, 2592(%rsp) -vmovdqu %ymm5, 120(%rdi) -vmovdqu %ymm6, 472(%rdi) -vmovdqu %ymm8, 824(%rdi) -vmovdqu %ymm3, 1176(%rdi) -vmovdqa 64(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm9 -vpunpckhwd const0(%rip), %ymm11, %ymm2 -vpslld $1, %ymm9, %ymm9 -vpslld $1, %ymm2, %ymm2 -vmovdqa 320(%rsp), %ymm3 -vpunpcklwd const0(%rip), %ymm3, %ymm8 -vpunpckhwd const0(%rip), %ymm3, %ymm3 -vmovdqa 576(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm8, %ymm10 -vpaddd %ymm6, %ymm3, %ymm4 -vpsubd %ymm9, %ymm10, %ymm10 -vpsubd %ymm2, %ymm4, %ymm4 -vpsubd %ymm5, %ymm8, %ymm5 -vpsubd %ymm6, %ymm3, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1600(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm3 -vpunpckhwd const0(%rip), %ymm5, %ymm8 -vpslld $1, %ymm3, %ymm3 -vpslld $1, %ymm8, %ymm8 -vpsubd %ymm3, %ymm10, %ymm10 -vpsubd %ymm8, %ymm4, %ymm4 -vpsrld $1, %ymm10, %ymm10 -vpsrld $1, %ymm4, %ymm4 -vpand mask32_to_16(%rip), %ymm10, %ymm10 -vpand mask32_to_16(%rip), %ymm4, %ymm4 -vpackusdw %ymm4, %ymm10, %ymm4 -vmovdqa 832(%rsp), %ymm10 -vpaddw 1088(%rsp), %ymm10, %ymm8 -vpsubw 1088(%rsp), %ymm10, %ymm10 -vpsrlw $2, %ymm10, %ymm10 -vpsubw %ymm6, %ymm10, %ymm10 -vpmullw %ymm14, %ymm10, %ymm10 -vpsllw $1, %ymm11, %ymm3 -vpsubw %ymm3, %ymm8, %ymm3 -vpsllw $7, %ymm5, %ymm8 -vpsubw %ymm8, %ymm3, %ymm8 -vpsrlw $3, %ymm8, %ymm8 -vpsubw %ymm4, %ymm8, %ymm8 -vmovdqa 1344(%rsp), %ymm3 -vpsubw %ymm11, %ymm3, %ymm3 -vpmullw %ymm15, %ymm5, %ymm2 -vpsubw %ymm2, %ymm3, %ymm2 -vpmullw %ymm14, %ymm8, %ymm8 -vpsubw %ymm8, %ymm4, %ymm4 -vpmullw %ymm12, %ymm8, %ymm3 -vpaddw %ymm3, %ymm4, %ymm3 -vpmullw %ymm12, %ymm3, %ymm3 -vpsubw %ymm3, %ymm2, %ymm3 -vpmullw %ymm14, %ymm3, %ymm3 -vpsubw %ymm6, %ymm3, %ymm3 -vpsrlw $3, %ymm3, %ymm3 -vpsubw %ymm10, %ymm3, %ymm3 -vpsubw %ymm3, %ymm10, %ymm10 -vpsubw %ymm10, %ymm6, %ymm6 -vpmullw %ymm13, %ymm3, %ymm3 -vpsubw %ymm3, %ymm6, %ymm6 -vpshufb shuf48_16(%rip), %ymm8, %ymm8 -vpand mask3_5_3_5(%rip), %ymm8, %ymm2 -vpand mask5_3_5_3(%rip), %ymm8, %ymm8 -vpermq $206, %ymm2, %ymm2 -vpand mask_keephigh(%rip), %ymm2, %ymm9 -vpor %ymm9, %ymm8, %ymm8 -vpaddw 2112(%rsp), %ymm11, %ymm11 -vpaddw %ymm8, %ymm11, %ymm11 -vmovdqa %xmm2, 2112(%rsp) -vpshufb shuf48_16(%rip), %ymm3, %ymm3 -vpand mask3_5_3_5(%rip), %ymm3, %ymm2 -vpand mask5_3_5_3(%rip), %ymm3, %ymm3 -vpermq $206, %ymm2, %ymm2 -vpand mask_keephigh(%rip), %ymm2, %ymm9 -vpor %ymm9, %ymm3, %ymm3 -vpaddw 2368(%rsp), %ymm6, %ymm6 -vpaddw %ymm3, %ymm6, %ymm6 -vmovdqa %xmm2, 2368(%rsp) -vpshufb shuf48_16(%rip), %ymm5, %ymm5 -vpand mask3_5_3_5(%rip), %ymm5, %ymm2 -vpand mask5_3_5_3(%rip), %ymm5, %ymm5 -vpermq $206, %ymm2, %ymm2 -vpand mask_keephigh(%rip), %ymm2, %ymm9 -vpor %ymm9, %ymm5, %ymm5 -vpaddw 2624(%rsp), %ymm4, %ymm4 -vpaddw %ymm5, %ymm4, %ymm4 -vmovdqa %xmm2, 2624(%rsp) -vmovdqu %ymm11, 208(%rdi) -vmovdqu %ymm6, 560(%rdi) -vmovdqu %ymm4, 912(%rdi) -vmovdqu %ymm10, 1264(%rdi) -vmovdqa 96(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm3 -vpunpckhwd const0(%rip), %ymm5, %ymm8 -vpslld $1, %ymm3, %ymm3 -vpslld $1, %ymm8, %ymm8 -vmovdqa 352(%rsp), %ymm10 -vpunpcklwd const0(%rip), %ymm10, %ymm4 -vpunpckhwd const0(%rip), %ymm10, %ymm10 -vmovdqa 608(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm4, %ymm2 -vpaddd %ymm6, %ymm10, %ymm9 -vpsubd %ymm3, %ymm2, %ymm2 -vpsubd %ymm8, %ymm9, %ymm9 -vpsubd %ymm11, %ymm4, %ymm11 -vpsubd %ymm6, %ymm10, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1632(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm10 -vpunpckhwd const0(%rip), %ymm11, %ymm4 -vpslld $1, %ymm10, %ymm10 -vpslld $1, %ymm4, %ymm4 -vpsubd %ymm10, %ymm2, %ymm2 -vpsubd %ymm4, %ymm9, %ymm9 -vpsrld $1, %ymm2, %ymm2 -vpsrld $1, %ymm9, %ymm9 -vpand mask32_to_16(%rip), %ymm2, %ymm2 -vpand mask32_to_16(%rip), %ymm9, %ymm9 -vpackusdw %ymm9, %ymm2, %ymm9 -vmovdqa 864(%rsp), %ymm2 -vpaddw 1120(%rsp), %ymm2, %ymm4 -vpsubw 1120(%rsp), %ymm2, %ymm2 -vpsrlw $2, %ymm2, %ymm2 -vpsubw %ymm6, %ymm2, %ymm2 -vpmullw %ymm14, %ymm2, %ymm2 -vpsllw $1, %ymm5, %ymm10 -vpsubw %ymm10, %ymm4, %ymm10 -vpsllw $7, %ymm11, %ymm4 -vpsubw %ymm4, %ymm10, %ymm4 -vpsrlw $3, %ymm4, %ymm4 -vpsubw %ymm9, %ymm4, %ymm4 -vmovdqa 1376(%rsp), %ymm10 -vpsubw %ymm5, %ymm10, %ymm10 -vpmullw %ymm15, %ymm11, %ymm8 -vpsubw %ymm8, %ymm10, %ymm8 -vpmullw %ymm14, %ymm4, %ymm4 -vpsubw %ymm4, %ymm9, %ymm9 -vpmullw %ymm12, %ymm4, %ymm10 -vpaddw %ymm10, %ymm9, %ymm10 -vpmullw %ymm12, %ymm10, %ymm10 -vpsubw %ymm10, %ymm8, %ymm10 -vpmullw %ymm14, %ymm10, %ymm10 -vpsubw %ymm6, %ymm10, %ymm10 -vpsrlw $3, %ymm10, %ymm10 -vpsubw %ymm2, %ymm10, %ymm10 -vpsubw %ymm10, %ymm2, %ymm2 -vpsubw %ymm2, %ymm6, %ymm6 -vpmullw %ymm13, %ymm10, %ymm10 -vpsubw %ymm10, %ymm6, %ymm6 -vpshufb shuf48_16(%rip), %ymm4, %ymm4 -vpand mask3_5_3_5(%rip), %ymm4, %ymm8 -vpand mask5_3_5_3(%rip), %ymm4, %ymm4 -vpermq $206, %ymm8, %ymm8 -vpand mask_keephigh(%rip), %ymm8, %ymm3 -vpor %ymm3, %ymm4, %ymm4 -vpaddw 2144(%rsp), %ymm5, %ymm5 -vpaddw %ymm4, %ymm5, %ymm5 -vmovdqa %xmm8, 2144(%rsp) -vpshufb shuf48_16(%rip), %ymm10, %ymm10 -vpand mask3_5_3_5(%rip), %ymm10, %ymm8 -vpand mask5_3_5_3(%rip), %ymm10, %ymm10 -vpermq $206, %ymm8, %ymm8 -vpand mask_keephigh(%rip), %ymm8, %ymm3 -vpor %ymm3, %ymm10, %ymm10 -vpaddw 2400(%rsp), %ymm6, %ymm6 -vpaddw %ymm10, %ymm6, %ymm6 -vmovdqa %xmm8, 2400(%rsp) -vpshufb shuf48_16(%rip), %ymm11, %ymm11 -vpand mask3_5_3_5(%rip), %ymm11, %ymm8 -vpand mask5_3_5_3(%rip), %ymm11, %ymm11 -vpermq $206, %ymm8, %ymm8 -vpand mask_keephigh(%rip), %ymm8, %ymm3 -vpor %ymm3, %ymm11, %ymm11 -vpaddw 2656(%rsp), %ymm9, %ymm9 -vpaddw %ymm11, %ymm9, %ymm9 -vmovdqa %xmm8, 2656(%rsp) -vmovdqu %ymm5, 296(%rdi) -vmovdqu %ymm6, 648(%rdi) -vmovdqu %ymm9, 1000(%rdi) -vmovdqu %ymm2, 1352(%rdi) -vmovdqa 128(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm10 -vpunpckhwd const0(%rip), %ymm11, %ymm4 -vpslld $1, %ymm10, %ymm10 -vpslld $1, %ymm4, %ymm4 -vmovdqa 384(%rsp), %ymm2 -vpunpcklwd const0(%rip), %ymm2, %ymm9 -vpunpckhwd const0(%rip), %ymm2, %ymm2 -vmovdqa 640(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm9, %ymm8 -vpaddd %ymm6, %ymm2, %ymm3 -vpsubd %ymm10, %ymm8, %ymm8 -vpsubd %ymm4, %ymm3, %ymm3 -vpsubd %ymm5, %ymm9, %ymm5 -vpsubd %ymm6, %ymm2, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1664(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm2 -vpunpckhwd const0(%rip), %ymm5, %ymm9 -vpslld $1, %ymm2, %ymm2 -vpslld $1, %ymm9, %ymm9 -vpsubd %ymm2, %ymm8, %ymm8 -vpsubd %ymm9, %ymm3, %ymm3 -vpsrld $1, %ymm8, %ymm8 -vpsrld $1, %ymm3, %ymm3 -vpand mask32_to_16(%rip), %ymm8, %ymm8 -vpand mask32_to_16(%rip), %ymm3, %ymm3 -vpackusdw %ymm3, %ymm8, %ymm3 -vmovdqa 896(%rsp), %ymm8 -vpaddw 1152(%rsp), %ymm8, %ymm9 -vpsubw 1152(%rsp), %ymm8, %ymm8 -vpsrlw $2, %ymm8, %ymm8 -vpsubw %ymm6, %ymm8, %ymm8 -vpmullw %ymm14, %ymm8, %ymm8 -vpsllw $1, %ymm11, %ymm2 -vpsubw %ymm2, %ymm9, %ymm2 -vpsllw $7, %ymm5, %ymm9 -vpsubw %ymm9, %ymm2, %ymm9 -vpsrlw $3, %ymm9, %ymm9 -vpsubw %ymm3, %ymm9, %ymm9 -vmovdqa 1408(%rsp), %ymm2 -vpsubw %ymm11, %ymm2, %ymm2 -vpmullw %ymm15, %ymm5, %ymm4 -vpsubw %ymm4, %ymm2, %ymm4 -vpmullw %ymm14, %ymm9, %ymm9 -vpsubw %ymm9, %ymm3, %ymm3 -vpmullw %ymm12, %ymm9, %ymm2 -vpaddw %ymm2, %ymm3, %ymm2 -vpmullw %ymm12, %ymm2, %ymm2 -vpsubw %ymm2, %ymm4, %ymm2 -vpmullw %ymm14, %ymm2, %ymm2 -vpsubw %ymm6, %ymm2, %ymm2 -vpsrlw $3, %ymm2, %ymm2 -vpsubw %ymm8, %ymm2, %ymm2 -vpsubw %ymm2, %ymm8, %ymm8 -vpsubw %ymm8, %ymm6, %ymm6 -vpmullw %ymm13, %ymm2, %ymm2 -vpsubw %ymm2, %ymm6, %ymm6 -vmovdqu 384(%rdi), %ymm4 -vmovdqu 736(%rdi), %ymm10 -vmovdqu 1088(%rdi), %ymm7 -vpaddw %ymm11, %ymm4, %ymm11 -vpaddw %ymm6, %ymm10, %ymm6 -vpaddw %ymm3, %ymm7, %ymm3 -vpshufb shuf48_16(%rip), %ymm8, %ymm8 -vpand mask3_5_3_5(%rip), %ymm8, %ymm7 -vpand mask5_3_5_3(%rip), %ymm8, %ymm8 -vpermq $206, %ymm7, %ymm7 -vpand mask_keephigh(%rip), %ymm7, %ymm10 -vpor %ymm10, %ymm8, %ymm8 -vmovdqu 32(%rdi), %ymm10 -vpaddw 1920(%rsp), %ymm10, %ymm10 -vpaddw %ymm8, %ymm10, %ymm10 -vmovdqu %ymm10, 32(%rdi) -vmovdqa %xmm7, 1920(%rsp) -vpshufb shuf48_16(%rip), %ymm9, %ymm9 -vpand mask3_5_3_5(%rip), %ymm9, %ymm7 -vpand mask5_3_5_3(%rip), %ymm9, %ymm9 -vpermq $206, %ymm7, %ymm7 -vpand mask_keephigh(%rip), %ymm7, %ymm10 -vpor %ymm10, %ymm9, %ymm9 -vpaddw 2176(%rsp), %ymm11, %ymm11 -vpaddw %ymm9, %ymm11, %ymm11 -vmovdqa %xmm7, 2176(%rsp) -vpshufb shuf48_16(%rip), %ymm2, %ymm2 -vpand mask3_5_3_5(%rip), %ymm2, %ymm7 -vpand mask5_3_5_3(%rip), %ymm2, %ymm2 -vpermq $206, %ymm7, %ymm7 -vpand mask_keephigh(%rip), %ymm7, %ymm10 -vpor %ymm10, %ymm2, %ymm2 -vpaddw 2432(%rsp), %ymm6, %ymm6 -vpaddw %ymm2, %ymm6, %ymm6 -vmovdqa %xmm7, 2432(%rsp) -vpshufb shuf48_16(%rip), %ymm5, %ymm5 -vpand mask3_5_3_5(%rip), %ymm5, %ymm7 -vpand mask5_3_5_3(%rip), %ymm5, %ymm5 -vpermq $206, %ymm7, %ymm7 -vpand mask_keephigh(%rip), %ymm7, %ymm10 -vpor %ymm10, %ymm5, %ymm5 -vpaddw 2688(%rsp), %ymm3, %ymm3 -vpaddw %ymm5, %ymm3, %ymm3 -vmovdqa %xmm7, 2688(%rsp) -vmovdqu %ymm11, 384(%rdi) -vmovdqu %ymm6, 736(%rdi) -vmovdqu %ymm3, 1088(%rdi) -vmovdqa 160(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm2 -vpunpckhwd const0(%rip), %ymm5, %ymm9 -vpslld $1, %ymm2, %ymm2 -vpslld $1, %ymm9, %ymm9 -vmovdqa 416(%rsp), %ymm8 -vpunpcklwd const0(%rip), %ymm8, %ymm3 -vpunpckhwd const0(%rip), %ymm8, %ymm8 -vmovdqa 672(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm3, %ymm7 -vpaddd %ymm6, %ymm8, %ymm10 -vpsubd %ymm2, %ymm7, %ymm7 -vpsubd %ymm9, %ymm10, %ymm10 -vpsubd %ymm11, %ymm3, %ymm11 -vpsubd %ymm6, %ymm8, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1696(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm8 -vpunpckhwd const0(%rip), %ymm11, %ymm3 -vpslld $1, %ymm8, %ymm8 -vpslld $1, %ymm3, %ymm3 -vpsubd %ymm8, %ymm7, %ymm7 -vpsubd %ymm3, %ymm10, %ymm10 -vpsrld $1, %ymm7, %ymm7 -vpsrld $1, %ymm10, %ymm10 -vpand mask32_to_16(%rip), %ymm7, %ymm7 -vpand mask32_to_16(%rip), %ymm10, %ymm10 -vpackusdw %ymm10, %ymm7, %ymm10 -vmovdqa 928(%rsp), %ymm7 -vpaddw 1184(%rsp), %ymm7, %ymm3 -vpsubw 1184(%rsp), %ymm7, %ymm7 -vpsrlw $2, %ymm7, %ymm7 -vpsubw %ymm6, %ymm7, %ymm7 -vpmullw %ymm14, %ymm7, %ymm7 -vpsllw $1, %ymm5, %ymm8 -vpsubw %ymm8, %ymm3, %ymm8 -vpsllw $7, %ymm11, %ymm3 -vpsubw %ymm3, %ymm8, %ymm3 -vpsrlw $3, %ymm3, %ymm3 -vpsubw %ymm10, %ymm3, %ymm3 -vmovdqa 1440(%rsp), %ymm8 -vpsubw %ymm5, %ymm8, %ymm8 -vpmullw %ymm15, %ymm11, %ymm9 -vpsubw %ymm9, %ymm8, %ymm9 -vpmullw %ymm14, %ymm3, %ymm3 -vpsubw %ymm3, %ymm10, %ymm10 -vpmullw %ymm12, %ymm3, %ymm8 -vpaddw %ymm8, %ymm10, %ymm8 -vpmullw %ymm12, %ymm8, %ymm8 -vpsubw %ymm8, %ymm9, %ymm8 -vpmullw %ymm14, %ymm8, %ymm8 -vpsubw %ymm6, %ymm8, %ymm8 -vpsrlw $3, %ymm8, %ymm8 -vpsubw %ymm7, %ymm8, %ymm8 -vpsubw %ymm8, %ymm7, %ymm7 -vpsubw %ymm7, %ymm6, %ymm6 -vpmullw %ymm13, %ymm8, %ymm8 -vpsubw %ymm8, %ymm6, %ymm6 -vmovdqu 472(%rdi), %ymm9 -vmovdqu 824(%rdi), %ymm2 -vmovdqu 1176(%rdi), %ymm4 -vpaddw %ymm5, %ymm9, %ymm5 -vpaddw %ymm6, %ymm2, %ymm6 -vpaddw %ymm10, %ymm4, %ymm10 -vpshufb shuf48_16(%rip), %ymm7, %ymm7 -vpand mask3_5_3_5(%rip), %ymm7, %ymm4 -vpand mask5_3_5_3(%rip), %ymm7, %ymm7 -vpermq $206, %ymm4, %ymm4 -vpand mask_keephigh(%rip), %ymm4, %ymm2 -vpor %ymm2, %ymm7, %ymm7 -vmovdqu 120(%rdi), %ymm2 -vpaddw 1952(%rsp), %ymm2, %ymm2 -vpaddw %ymm7, %ymm2, %ymm2 -vmovdqu %ymm2, 120(%rdi) -vmovdqa %xmm4, 1952(%rsp) -vpshufb shuf48_16(%rip), %ymm3, %ymm3 -vpand mask3_5_3_5(%rip), %ymm3, %ymm4 -vpand mask5_3_5_3(%rip), %ymm3, %ymm3 -vpermq $206, %ymm4, %ymm4 -vpand mask_keephigh(%rip), %ymm4, %ymm2 -vpor %ymm2, %ymm3, %ymm3 -vpaddw 2208(%rsp), %ymm5, %ymm5 -vpaddw %ymm3, %ymm5, %ymm5 -vmovdqa %xmm4, 2208(%rsp) -vpshufb shuf48_16(%rip), %ymm8, %ymm8 -vpand mask3_5_3_5(%rip), %ymm8, %ymm4 -vpand mask5_3_5_3(%rip), %ymm8, %ymm8 -vpermq $206, %ymm4, %ymm4 -vpand mask_keephigh(%rip), %ymm4, %ymm2 -vpor %ymm2, %ymm8, %ymm8 -vpaddw 2464(%rsp), %ymm6, %ymm6 -vpaddw %ymm8, %ymm6, %ymm6 -vmovdqa %xmm4, 2464(%rsp) -vpshufb shuf48_16(%rip), %ymm11, %ymm11 -vpand mask3_5_3_5(%rip), %ymm11, %ymm4 -vpand mask5_3_5_3(%rip), %ymm11, %ymm11 -vpermq $206, %ymm4, %ymm4 -vpand mask_keephigh(%rip), %ymm4, %ymm2 -vpor %ymm2, %ymm11, %ymm11 -vpaddw 2720(%rsp), %ymm10, %ymm10 -vpaddw %ymm11, %ymm10, %ymm10 -vmovdqa %xmm4, 2720(%rsp) -vmovdqu %ymm5, 472(%rdi) -vmovdqu %ymm6, 824(%rdi) -vmovdqu %ymm10, 1176(%rdi) -vmovdqa 192(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm8 -vpunpckhwd const0(%rip), %ymm11, %ymm3 -vpslld $1, %ymm8, %ymm8 -vpslld $1, %ymm3, %ymm3 -vmovdqa 448(%rsp), %ymm7 -vpunpcklwd const0(%rip), %ymm7, %ymm10 -vpunpckhwd const0(%rip), %ymm7, %ymm7 -vmovdqa 704(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm10, %ymm4 -vpaddd %ymm6, %ymm7, %ymm2 -vpsubd %ymm8, %ymm4, %ymm4 -vpsubd %ymm3, %ymm2, %ymm2 -vpsubd %ymm5, %ymm10, %ymm5 -vpsubd %ymm6, %ymm7, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1728(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm7 -vpunpckhwd const0(%rip), %ymm5, %ymm10 -vpslld $1, %ymm7, %ymm7 -vpslld $1, %ymm10, %ymm10 -vpsubd %ymm7, %ymm4, %ymm4 -vpsubd %ymm10, %ymm2, %ymm2 -vpsrld $1, %ymm4, %ymm4 -vpsrld $1, %ymm2, %ymm2 -vpand mask32_to_16(%rip), %ymm4, %ymm4 -vpand mask32_to_16(%rip), %ymm2, %ymm2 -vpackusdw %ymm2, %ymm4, %ymm2 -vmovdqa 960(%rsp), %ymm4 -vpaddw 1216(%rsp), %ymm4, %ymm10 -vpsubw 1216(%rsp), %ymm4, %ymm4 -vpsrlw $2, %ymm4, %ymm4 -vpsubw %ymm6, %ymm4, %ymm4 -vpmullw %ymm14, %ymm4, %ymm4 -vpsllw $1, %ymm11, %ymm7 -vpsubw %ymm7, %ymm10, %ymm7 -vpsllw $7, %ymm5, %ymm10 -vpsubw %ymm10, %ymm7, %ymm10 -vpsrlw $3, %ymm10, %ymm10 -vpsubw %ymm2, %ymm10, %ymm10 -vmovdqa 1472(%rsp), %ymm7 -vpsubw %ymm11, %ymm7, %ymm7 -vpmullw %ymm15, %ymm5, %ymm3 -vpsubw %ymm3, %ymm7, %ymm3 -vpmullw %ymm14, %ymm10, %ymm10 -vpsubw %ymm10, %ymm2, %ymm2 -vpmullw %ymm12, %ymm10, %ymm7 -vpaddw %ymm7, %ymm2, %ymm7 -vpmullw %ymm12, %ymm7, %ymm7 -vpsubw %ymm7, %ymm3, %ymm7 -vpmullw %ymm14, %ymm7, %ymm7 -vpsubw %ymm6, %ymm7, %ymm7 -vpsrlw $3, %ymm7, %ymm7 -vpsubw %ymm4, %ymm7, %ymm7 -vpsubw %ymm7, %ymm4, %ymm4 -vpsubw %ymm4, %ymm6, %ymm6 -vpmullw %ymm13, %ymm7, %ymm7 -vpsubw %ymm7, %ymm6, %ymm6 -vmovdqu 560(%rdi), %ymm3 -vmovdqu 912(%rdi), %ymm8 -vmovdqu 1264(%rdi), %ymm9 -vpaddw %ymm11, %ymm3, %ymm11 -vpaddw %ymm6, %ymm8, %ymm6 -vpaddw %ymm2, %ymm9, %ymm2 -vpshufb shuf48_16(%rip), %ymm4, %ymm4 -vpand mask3_5_3_5(%rip), %ymm4, %ymm9 -vpand mask5_3_5_3(%rip), %ymm4, %ymm4 -vpermq $206, %ymm9, %ymm9 -vpand mask_keephigh(%rip), %ymm9, %ymm8 -vpor %ymm8, %ymm4, %ymm4 -vmovdqu 208(%rdi), %ymm8 -vpaddw 1984(%rsp), %ymm8, %ymm8 -vpaddw %ymm4, %ymm8, %ymm8 -vmovdqu %ymm8, 208(%rdi) -vmovdqa %xmm9, 1984(%rsp) -vpshufb shuf48_16(%rip), %ymm10, %ymm10 -vpand mask3_5_3_5(%rip), %ymm10, %ymm9 -vpand mask5_3_5_3(%rip), %ymm10, %ymm10 -vpermq $206, %ymm9, %ymm9 -vpand mask_keephigh(%rip), %ymm9, %ymm8 -vpor %ymm8, %ymm10, %ymm10 -vpaddw 2240(%rsp), %ymm11, %ymm11 -vpaddw %ymm10, %ymm11, %ymm11 -vmovdqa %xmm9, 2240(%rsp) -vpshufb shuf48_16(%rip), %ymm7, %ymm7 -vpand mask3_5_3_5(%rip), %ymm7, %ymm9 -vpand mask5_3_5_3(%rip), %ymm7, %ymm7 -vpermq $206, %ymm9, %ymm9 -vpand mask_keephigh(%rip), %ymm9, %ymm8 -vpor %ymm8, %ymm7, %ymm7 -vpaddw 2496(%rsp), %ymm6, %ymm6 -vpaddw %ymm7, %ymm6, %ymm6 -vmovdqa %xmm9, 2496(%rsp) -vpshufb shuf48_16(%rip), %ymm5, %ymm5 -vpand mask3_5_3_5(%rip), %ymm5, %ymm9 -vpand mask5_3_5_3(%rip), %ymm5, %ymm5 -vpermq $206, %ymm9, %ymm9 -vpand mask_keephigh(%rip), %ymm9, %ymm8 -vpor %ymm8, %ymm5, %ymm5 -vpaddw 2752(%rsp), %ymm2, %ymm2 -vpaddw %ymm5, %ymm2, %ymm2 -vmovdqa %xmm9, 2752(%rsp) -vmovdqu %ymm11, 560(%rdi) -vmovdqu %ymm6, 912(%rdi) -vmovdqu %ymm2, 1264(%rdi) -vmovdqa 224(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm7 -vpunpckhwd const0(%rip), %ymm5, %ymm10 -vpslld $1, %ymm7, %ymm7 -vpslld $1, %ymm10, %ymm10 -vmovdqa 480(%rsp), %ymm4 -vpunpcklwd const0(%rip), %ymm4, %ymm2 -vpunpckhwd const0(%rip), %ymm4, %ymm4 -vmovdqa 736(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm2, %ymm9 -vpaddd %ymm6, %ymm4, %ymm8 -vpsubd %ymm7, %ymm9, %ymm9 -vpsubd %ymm10, %ymm8, %ymm8 -vpsubd %ymm11, %ymm2, %ymm11 -vpsubd %ymm6, %ymm4, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1760(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm4 -vpunpckhwd const0(%rip), %ymm11, %ymm2 -vpslld $1, %ymm4, %ymm4 -vpslld $1, %ymm2, %ymm2 -vpsubd %ymm4, %ymm9, %ymm9 -vpsubd %ymm2, %ymm8, %ymm8 -vpsrld $1, %ymm9, %ymm9 -vpsrld $1, %ymm8, %ymm8 -vpand mask32_to_16(%rip), %ymm9, %ymm9 -vpand mask32_to_16(%rip), %ymm8, %ymm8 -vpackusdw %ymm8, %ymm9, %ymm8 -vmovdqa 992(%rsp), %ymm9 -vpaddw 1248(%rsp), %ymm9, %ymm2 -vpsubw 1248(%rsp), %ymm9, %ymm9 -vpsrlw $2, %ymm9, %ymm9 -vpsubw %ymm6, %ymm9, %ymm9 -vpmullw %ymm14, %ymm9, %ymm9 -vpsllw $1, %ymm5, %ymm4 -vpsubw %ymm4, %ymm2, %ymm4 -vpsllw $7, %ymm11, %ymm2 -vpsubw %ymm2, %ymm4, %ymm2 -vpsrlw $3, %ymm2, %ymm2 -vpsubw %ymm8, %ymm2, %ymm2 -vmovdqa 1504(%rsp), %ymm4 -vpsubw %ymm5, %ymm4, %ymm4 -vpmullw %ymm15, %ymm11, %ymm10 -vpsubw %ymm10, %ymm4, %ymm10 -vpmullw %ymm14, %ymm2, %ymm2 -vpsubw %ymm2, %ymm8, %ymm8 -vpmullw %ymm12, %ymm2, %ymm4 -vpaddw %ymm4, %ymm8, %ymm4 -vpmullw %ymm12, %ymm4, %ymm4 -vpsubw %ymm4, %ymm10, %ymm4 -vpmullw %ymm14, %ymm4, %ymm4 -vpsubw %ymm6, %ymm4, %ymm4 -vpsrlw $3, %ymm4, %ymm4 -vpsubw %ymm9, %ymm4, %ymm4 -vpsubw %ymm4, %ymm9, %ymm9 -vpsubw %ymm9, %ymm6, %ymm6 -vpmullw %ymm13, %ymm4, %ymm4 -vpsubw %ymm4, %ymm6, %ymm6 -vmovdqu 648(%rdi), %ymm10 -vmovdqu 1000(%rdi), %ymm7 -vmovdqu 1352(%rdi), %ymm3 -vpaddw %ymm5, %ymm10, %ymm5 -vpaddw %ymm6, %ymm7, %ymm6 -vpaddw %ymm8, %ymm3, %ymm8 -vpshufb shuf48_16(%rip), %ymm9, %ymm9 -vpand mask3_5_3_5(%rip), %ymm9, %ymm3 -vpand mask5_3_5_3(%rip), %ymm9, %ymm9 -vpermq $206, %ymm3, %ymm3 -vpand mask_keephigh(%rip), %ymm3, %ymm7 -vpor %ymm7, %ymm9, %ymm9 -vmovdqu 296(%rdi), %ymm7 -vpaddw 2016(%rsp), %ymm7, %ymm7 -vpaddw %ymm9, %ymm7, %ymm7 -vmovdqu %ymm7, 296(%rdi) -vmovdqa %xmm3, 2016(%rsp) -vpshufb shuf48_16(%rip), %ymm2, %ymm2 -vpand mask3_5_3_5(%rip), %ymm2, %ymm3 -vpand mask5_3_5_3(%rip), %ymm2, %ymm2 -vpermq $206, %ymm3, %ymm3 -vpand mask_keephigh(%rip), %ymm3, %ymm7 -vpor %ymm7, %ymm2, %ymm2 -vpaddw 2272(%rsp), %ymm5, %ymm5 -vpaddw %ymm2, %ymm5, %ymm5 -vmovdqa %xmm3, 2272(%rsp) -vpshufb shuf48_16(%rip), %ymm4, %ymm4 -vpand mask3_5_3_5(%rip), %ymm4, %ymm3 -vpand mask5_3_5_3(%rip), %ymm4, %ymm4 -vpermq $206, %ymm3, %ymm3 -vpand mask_keephigh(%rip), %ymm3, %ymm7 -vpor %ymm7, %ymm4, %ymm4 -vpaddw 2528(%rsp), %ymm6, %ymm6 -vpaddw %ymm4, %ymm6, %ymm6 -vmovdqa %xmm3, 2528(%rsp) -vpshufb shuf48_16(%rip), %ymm11, %ymm11 -vpand mask3_5_3_5(%rip), %ymm11, %ymm3 -vpand mask5_3_5_3(%rip), %ymm11, %ymm11 -vpermq $206, %ymm3, %ymm3 -vpand mask_keephigh(%rip), %ymm3, %ymm7 -vpor %ymm7, %ymm11, %ymm11 -vpaddw 2784(%rsp), %ymm8, %ymm8 -vpaddw %ymm11, %ymm8, %ymm8 -vmovdqa %xmm3, 2784(%rsp) -vmovdqu %ymm5, 648(%rdi) -vmovdqu %ymm6, 1000(%rdi) -vmovdqu %ymm8, 1352(%rdi) -vmovdqa 160(%r12), %ymm0 -vpsubw 256(%r12), %ymm0, %ymm0 -vmovdqa 544(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 352(%r12), %ymm1, %ymm1 -vpsubw 64(%r12), %ymm0, %ymm0 -vpaddw 448(%r12), %ymm0, %ymm0 -vmovdqa 736(%r12), %ymm2 -vpsubw 832(%r12), %ymm2, %ymm2 -vmovdqa 1120(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 928(%r12), %ymm3, %ymm3 -vpsubw 640(%r12), %ymm2, %ymm2 -vpaddw 1024(%r12), %ymm2, %ymm2 -vmovdqa 1312(%r12), %ymm4 -vpsubw 1408(%r12), %ymm4, %ymm4 -vmovdqa 1696(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 1504(%r12), %ymm5, %ymm5 -vpsubw 1216(%r12), %ymm4, %ymm4 -vpaddw 1600(%r12), %ymm4, %ymm4 -vpsubw 640(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 64(%r12), %ymm1, %ymm1 -vpaddw 1216(%r12), %ymm1, %ymm1 -vmovdqa 352(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 1504(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 928(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 64(%r12), %ymm8 -vmovdqa 928(%r12), %ymm9 -vmovdqa %ymm8, 0(%rsp) -vmovdqa %ymm0, 32(%rsp) -vmovdqa %ymm1, 64(%rsp) -vmovdqa %ymm7, 96(%rsp) -vmovdqa %ymm5, 128(%rsp) -vmovdqa %ymm2, 160(%rsp) -vmovdqa %ymm3, 192(%rsp) -vmovdqa %ymm9, 224(%rsp) -vmovdqa 1888(%r12), %ymm0 -vpsubw 1984(%r12), %ymm0, %ymm0 -vmovdqa 2272(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 2080(%r12), %ymm1, %ymm1 -vpsubw 1792(%r12), %ymm0, %ymm0 -vpaddw 2176(%r12), %ymm0, %ymm0 -vmovdqa 2464(%r12), %ymm2 -vpsubw 2560(%r12), %ymm2, %ymm2 -vmovdqa 2848(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 2656(%r12), %ymm3, %ymm3 -vpsubw 2368(%r12), %ymm2, %ymm2 -vpaddw 2752(%r12), %ymm2, %ymm2 -vmovdqa 3040(%r12), %ymm4 -vpsubw 3136(%r12), %ymm4, %ymm4 -vmovdqa 3424(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 3232(%r12), %ymm5, %ymm5 -vpsubw 2944(%r12), %ymm4, %ymm4 -vpaddw 3328(%r12), %ymm4, %ymm4 -vpsubw 2368(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 1792(%r12), %ymm1, %ymm1 -vpaddw 2944(%r12), %ymm1, %ymm1 -vmovdqa 2080(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 3232(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 2656(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 1792(%r12), %ymm8 -vmovdqa 2656(%r12), %ymm9 -vmovdqa %ymm8, 256(%rsp) -vmovdqa %ymm0, 288(%rsp) -vmovdqa %ymm1, 320(%rsp) -vmovdqa %ymm7, 352(%rsp) -vmovdqa %ymm5, 384(%rsp) -vmovdqa %ymm2, 416(%rsp) -vmovdqa %ymm3, 448(%rsp) -vmovdqa %ymm9, 480(%rsp) -vmovdqa 3616(%r12), %ymm0 -vpsubw 3712(%r12), %ymm0, %ymm0 -vmovdqa 4000(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 3808(%r12), %ymm1, %ymm1 -vpsubw 3520(%r12), %ymm0, %ymm0 -vpaddw 3904(%r12), %ymm0, %ymm0 -vmovdqa 4192(%r12), %ymm2 -vpsubw 4288(%r12), %ymm2, %ymm2 -vmovdqa 4576(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 4384(%r12), %ymm3, %ymm3 -vpsubw 4096(%r12), %ymm2, %ymm2 -vpaddw 4480(%r12), %ymm2, %ymm2 -vmovdqa 4768(%r12), %ymm4 -vpsubw 4864(%r12), %ymm4, %ymm4 -vmovdqa 5152(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 4960(%r12), %ymm5, %ymm5 -vpsubw 4672(%r12), %ymm4, %ymm4 -vpaddw 5056(%r12), %ymm4, %ymm4 -vpsubw 4096(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 3520(%r12), %ymm1, %ymm1 -vpaddw 4672(%r12), %ymm1, %ymm1 -vmovdqa 3808(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 4960(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 4384(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 3520(%r12), %ymm8 -vmovdqa 4384(%r12), %ymm9 -vmovdqa %ymm8, 512(%rsp) -vmovdqa %ymm0, 544(%rsp) -vmovdqa %ymm1, 576(%rsp) -vmovdqa %ymm7, 608(%rsp) -vmovdqa %ymm5, 640(%rsp) -vmovdqa %ymm2, 672(%rsp) -vmovdqa %ymm3, 704(%rsp) -vmovdqa %ymm9, 736(%rsp) -vmovdqa 5344(%r12), %ymm0 -vpsubw 5440(%r12), %ymm0, %ymm0 -vmovdqa 5728(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 5536(%r12), %ymm1, %ymm1 -vpsubw 5248(%r12), %ymm0, %ymm0 -vpaddw 5632(%r12), %ymm0, %ymm0 -vmovdqa 5920(%r12), %ymm2 -vpsubw 6016(%r12), %ymm2, %ymm2 -vmovdqa 6304(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 6112(%r12), %ymm3, %ymm3 -vpsubw 5824(%r12), %ymm2, %ymm2 -vpaddw 6208(%r12), %ymm2, %ymm2 -vmovdqa 6496(%r12), %ymm4 -vpsubw 6592(%r12), %ymm4, %ymm4 -vmovdqa 6880(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 6688(%r12), %ymm5, %ymm5 -vpsubw 6400(%r12), %ymm4, %ymm4 -vpaddw 6784(%r12), %ymm4, %ymm4 -vpsubw 5824(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 5248(%r12), %ymm1, %ymm1 -vpaddw 6400(%r12), %ymm1, %ymm1 -vmovdqa 5536(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 6688(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 6112(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 5248(%r12), %ymm8 -vmovdqa 6112(%r12), %ymm9 -vmovdqa %ymm8, 768(%rsp) -vmovdqa %ymm0, 800(%rsp) -vmovdqa %ymm1, 832(%rsp) -vmovdqa %ymm7, 864(%rsp) -vmovdqa %ymm5, 896(%rsp) -vmovdqa %ymm2, 928(%rsp) -vmovdqa %ymm3, 960(%rsp) -vmovdqa %ymm9, 992(%rsp) -vmovdqa 7072(%r12), %ymm0 -vpsubw 7168(%r12), %ymm0, %ymm0 -vmovdqa 7456(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 7264(%r12), %ymm1, %ymm1 -vpsubw 6976(%r12), %ymm0, %ymm0 -vpaddw 7360(%r12), %ymm0, %ymm0 -vmovdqa 7648(%r12), %ymm2 -vpsubw 7744(%r12), %ymm2, %ymm2 -vmovdqa 8032(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 7840(%r12), %ymm3, %ymm3 -vpsubw 7552(%r12), %ymm2, %ymm2 -vpaddw 7936(%r12), %ymm2, %ymm2 -vmovdqa 8224(%r12), %ymm4 -vpsubw 8320(%r12), %ymm4, %ymm4 -vmovdqa 8608(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 8416(%r12), %ymm5, %ymm5 -vpsubw 8128(%r12), %ymm4, %ymm4 -vpaddw 8512(%r12), %ymm4, %ymm4 -vpsubw 7552(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 6976(%r12), %ymm1, %ymm1 -vpaddw 8128(%r12), %ymm1, %ymm1 -vmovdqa 7264(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 8416(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 7840(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 6976(%r12), %ymm8 -vmovdqa 7840(%r12), %ymm9 -vmovdqa %ymm8, 1024(%rsp) -vmovdqa %ymm0, 1056(%rsp) -vmovdqa %ymm1, 1088(%rsp) -vmovdqa %ymm7, 1120(%rsp) -vmovdqa %ymm5, 1152(%rsp) -vmovdqa %ymm2, 1184(%rsp) -vmovdqa %ymm3, 1216(%rsp) -vmovdqa %ymm9, 1248(%rsp) -vmovdqa 8800(%r12), %ymm0 -vpsubw 8896(%r12), %ymm0, %ymm0 -vmovdqa 9184(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 8992(%r12), %ymm1, %ymm1 -vpsubw 8704(%r12), %ymm0, %ymm0 -vpaddw 9088(%r12), %ymm0, %ymm0 -vmovdqa 9376(%r12), %ymm2 -vpsubw 9472(%r12), %ymm2, %ymm2 -vmovdqa 9760(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 9568(%r12), %ymm3, %ymm3 -vpsubw 9280(%r12), %ymm2, %ymm2 -vpaddw 9664(%r12), %ymm2, %ymm2 -vmovdqa 9952(%r12), %ymm4 -vpsubw 10048(%r12), %ymm4, %ymm4 -vmovdqa 10336(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 10144(%r12), %ymm5, %ymm5 -vpsubw 9856(%r12), %ymm4, %ymm4 -vpaddw 10240(%r12), %ymm4, %ymm4 -vpsubw 9280(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 8704(%r12), %ymm1, %ymm1 -vpaddw 9856(%r12), %ymm1, %ymm1 -vmovdqa 8992(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 10144(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 9568(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 8704(%r12), %ymm8 -vmovdqa 9568(%r12), %ymm9 -vmovdqa %ymm8, 1280(%rsp) -vmovdqa %ymm0, 1312(%rsp) -vmovdqa %ymm1, 1344(%rsp) -vmovdqa %ymm7, 1376(%rsp) -vmovdqa %ymm5, 1408(%rsp) -vmovdqa %ymm2, 1440(%rsp) -vmovdqa %ymm3, 1472(%rsp) -vmovdqa %ymm9, 1504(%rsp) -vmovdqa 10528(%r12), %ymm0 -vpsubw 10624(%r12), %ymm0, %ymm0 -vmovdqa 10912(%r12), %ymm1 -vpsubw %ymm0, %ymm1, %ymm1 -vpsubw 10720(%r12), %ymm1, %ymm1 -vpsubw 10432(%r12), %ymm0, %ymm0 -vpaddw 10816(%r12), %ymm0, %ymm0 -vmovdqa 11104(%r12), %ymm2 -vpsubw 11200(%r12), %ymm2, %ymm2 -vmovdqa 11488(%r12), %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw 11296(%r12), %ymm3, %ymm3 -vpsubw 11008(%r12), %ymm2, %ymm2 -vpaddw 11392(%r12), %ymm2, %ymm2 -vmovdqa 11680(%r12), %ymm4 -vpsubw 11776(%r12), %ymm4, %ymm4 -vmovdqa 12064(%r12), %ymm5 -vpsubw %ymm4, %ymm5, %ymm5 -vpsubw 11872(%r12), %ymm5, %ymm5 -vpsubw 11584(%r12), %ymm4, %ymm4 -vpaddw 11968(%r12), %ymm4, %ymm4 -vpsubw 11008(%r12), %ymm1, %ymm1 -vpsubw %ymm1, %ymm5, %ymm5 -vpsubw %ymm3, %ymm5, %ymm5 -vpsubw 10432(%r12), %ymm1, %ymm1 -vpaddw 11584(%r12), %ymm1, %ymm1 -vmovdqa 10720(%r12), %ymm6 -vpsubw %ymm2, %ymm6, %ymm7 -vmovdqa 11872(%r12), %ymm2 -vpsubw %ymm7, %ymm2, %ymm2 -vpsubw 11296(%r12), %ymm2, %ymm2 -vpsubw %ymm0, %ymm7, %ymm7 -vpaddw %ymm4, %ymm7, %ymm7 -vmovdqa 10432(%r12), %ymm8 -vmovdqa 11296(%r12), %ymm9 -vmovdqa %ymm8, 1536(%rsp) -vmovdqa %ymm0, 1568(%rsp) -vmovdqa %ymm1, 1600(%rsp) -vmovdqa %ymm7, 1632(%rsp) -vmovdqa %ymm5, 1664(%rsp) -vmovdqa %ymm2, 1696(%rsp) -vmovdqa %ymm3, 1728(%rsp) -vmovdqa %ymm9, 1760(%rsp) -vmovdqa 0(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm4 -vpunpckhwd const0(%rip), %ymm11, %ymm2 -vpslld $1, %ymm4, %ymm4 -vpslld $1, %ymm2, %ymm2 -vmovdqa 256(%rsp), %ymm9 -vpunpcklwd const0(%rip), %ymm9, %ymm8 -vpunpckhwd const0(%rip), %ymm9, %ymm9 -vmovdqa 512(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm8, %ymm3 -vpaddd %ymm6, %ymm9, %ymm7 -vpsubd %ymm4, %ymm3, %ymm3 -vpsubd %ymm2, %ymm7, %ymm7 -vpsubd %ymm5, %ymm8, %ymm5 -vpsubd %ymm6, %ymm9, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1536(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm9 -vpunpckhwd const0(%rip), %ymm5, %ymm8 -vpslld $1, %ymm9, %ymm9 -vpslld $1, %ymm8, %ymm8 -vpsubd %ymm9, %ymm3, %ymm3 -vpsubd %ymm8, %ymm7, %ymm7 -vpsrld $1, %ymm3, %ymm3 -vpsrld $1, %ymm7, %ymm7 -vpand mask32_to_16(%rip), %ymm3, %ymm3 -vpand mask32_to_16(%rip), %ymm7, %ymm7 -vpackusdw %ymm7, %ymm3, %ymm7 -vmovdqa 768(%rsp), %ymm3 -vpaddw 1024(%rsp), %ymm3, %ymm8 -vpsubw 1024(%rsp), %ymm3, %ymm3 -vpsrlw $2, %ymm3, %ymm3 -vpsubw %ymm6, %ymm3, %ymm3 -vpmullw %ymm14, %ymm3, %ymm3 -vpsllw $1, %ymm11, %ymm9 -vpsubw %ymm9, %ymm8, %ymm9 -vpsllw $7, %ymm5, %ymm8 -vpsubw %ymm8, %ymm9, %ymm8 -vpsrlw $3, %ymm8, %ymm8 -vpsubw %ymm7, %ymm8, %ymm8 -vmovdqa 1280(%rsp), %ymm9 -vpsubw %ymm11, %ymm9, %ymm9 -vpmullw %ymm15, %ymm5, %ymm2 -vpsubw %ymm2, %ymm9, %ymm2 -vpmullw %ymm14, %ymm8, %ymm8 -vpsubw %ymm8, %ymm7, %ymm7 -vpmullw %ymm12, %ymm8, %ymm9 -vpaddw %ymm9, %ymm7, %ymm9 -vpmullw %ymm12, %ymm9, %ymm9 -vpsubw %ymm9, %ymm2, %ymm9 -vpmullw %ymm14, %ymm9, %ymm9 -vpsubw %ymm6, %ymm9, %ymm9 -vpsrlw $3, %ymm9, %ymm9 -vpsubw %ymm3, %ymm9, %ymm9 -vpsubw %ymm9, %ymm3, %ymm3 -vpsubw %ymm3, %ymm6, %ymm6 -vpmullw %ymm13, %ymm9, %ymm9 -vpsubw %ymm9, %ymm6, %ymm6 -vpshufb shuf48_16(%rip), %ymm8, %ymm8 -vpand mask3_5_4_3_1(%rip), %ymm8, %ymm2 -vpand mask5_3_5_3(%rip), %ymm8, %ymm8 -vpermq $139, %ymm2, %ymm2 -vpand mask_keephigh(%rip), %ymm2, %ymm4 -vpor %ymm4, %ymm8, %ymm8 -vpaddw 2048(%rsp), %ymm11, %ymm11 -vpaddw %ymm8, %ymm11, %ymm11 -vmovdqa %xmm2, 2048(%rsp) -vpshufb shuf48_16(%rip), %ymm9, %ymm9 -vpand mask3_5_4_3_1(%rip), %ymm9, %ymm2 -vpand mask5_3_5_3(%rip), %ymm9, %ymm9 -vpermq $139, %ymm2, %ymm2 -vpand mask_keephigh(%rip), %ymm2, %ymm4 -vpor %ymm4, %ymm9, %ymm9 -vpaddw 2304(%rsp), %ymm6, %ymm6 -vpaddw %ymm9, %ymm6, %ymm6 -vmovdqa %xmm2, 2304(%rsp) -vpshufb shuf48_16(%rip), %ymm5, %ymm5 -vpand mask3_5_4_3_1(%rip), %ymm5, %ymm2 -vpand mask5_3_5_3(%rip), %ymm5, %ymm5 -vpermq $139, %ymm2, %ymm2 -vpand mask_keephigh(%rip), %ymm2, %ymm4 -vpor %ymm4, %ymm5, %ymm5 -vpaddw 2560(%rsp), %ymm7, %ymm7 -vpaddw %ymm5, %ymm7, %ymm7 -vmovdqa %xmm2, 2560(%rsp) -vmovdqu %xmm11, 64(%rdi) -vextracti128 $1, %ymm11, %xmm11 -vmovq %xmm11, 80(%rdi) -vmovdqu %xmm6, 416(%rdi) -vextracti128 $1, %ymm6, %xmm6 -vmovq %xmm6, 432(%rdi) -vmovdqu %xmm7, 768(%rdi) -vextracti128 $1, %ymm7, %xmm7 -vmovq %xmm7, 784(%rdi) -vmovdqu %xmm3, 1120(%rdi) -vextracti128 $1, %ymm3, %xmm3 -vmovq %xmm3, 1136(%rdi) -vmovdqa 32(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm9 -vpunpckhwd const0(%rip), %ymm5, %ymm8 -vpslld $1, %ymm9, %ymm9 -vpslld $1, %ymm8, %ymm8 -vmovdqa 288(%rsp), %ymm3 -vpunpcklwd const0(%rip), %ymm3, %ymm7 -vpunpckhwd const0(%rip), %ymm3, %ymm3 -vmovdqa 544(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm7, %ymm2 -vpaddd %ymm6, %ymm3, %ymm4 -vpsubd %ymm9, %ymm2, %ymm2 -vpsubd %ymm8, %ymm4, %ymm4 -vpsubd %ymm11, %ymm7, %ymm11 -vpsubd %ymm6, %ymm3, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1568(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm3 -vpunpckhwd const0(%rip), %ymm11, %ymm7 -vpslld $1, %ymm3, %ymm3 -vpslld $1, %ymm7, %ymm7 -vpsubd %ymm3, %ymm2, %ymm2 -vpsubd %ymm7, %ymm4, %ymm4 -vpsrld $1, %ymm2, %ymm2 -vpsrld $1, %ymm4, %ymm4 -vpand mask32_to_16(%rip), %ymm2, %ymm2 -vpand mask32_to_16(%rip), %ymm4, %ymm4 -vpackusdw %ymm4, %ymm2, %ymm4 -vmovdqa 800(%rsp), %ymm2 -vpaddw 1056(%rsp), %ymm2, %ymm7 -vpsubw 1056(%rsp), %ymm2, %ymm2 -vpsrlw $2, %ymm2, %ymm2 -vpsubw %ymm6, %ymm2, %ymm2 -vpmullw %ymm14, %ymm2, %ymm2 -vpsllw $1, %ymm5, %ymm3 -vpsubw %ymm3, %ymm7, %ymm3 -vpsllw $7, %ymm11, %ymm7 -vpsubw %ymm7, %ymm3, %ymm7 -vpsrlw $3, %ymm7, %ymm7 -vpsubw %ymm4, %ymm7, %ymm7 -vmovdqa 1312(%rsp), %ymm3 -vpsubw %ymm5, %ymm3, %ymm3 -vpmullw %ymm15, %ymm11, %ymm8 -vpsubw %ymm8, %ymm3, %ymm8 -vpmullw %ymm14, %ymm7, %ymm7 -vpsubw %ymm7, %ymm4, %ymm4 -vpmullw %ymm12, %ymm7, %ymm3 -vpaddw %ymm3, %ymm4, %ymm3 -vpmullw %ymm12, %ymm3, %ymm3 -vpsubw %ymm3, %ymm8, %ymm3 -vpmullw %ymm14, %ymm3, %ymm3 -vpsubw %ymm6, %ymm3, %ymm3 -vpsrlw $3, %ymm3, %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vpsubw %ymm3, %ymm2, %ymm2 -vpsubw %ymm2, %ymm6, %ymm6 -vpmullw %ymm13, %ymm3, %ymm3 -vpsubw %ymm3, %ymm6, %ymm6 -vpshufb shuf48_16(%rip), %ymm7, %ymm7 -vpand mask3_5_4_3_1(%rip), %ymm7, %ymm8 -vpand mask5_3_5_3(%rip), %ymm7, %ymm7 -vpermq $139, %ymm8, %ymm8 -vpand mask_keephigh(%rip), %ymm8, %ymm9 -vpor %ymm9, %ymm7, %ymm7 -vpaddw 2080(%rsp), %ymm5, %ymm5 -vpaddw %ymm7, %ymm5, %ymm5 -vmovdqa %xmm8, 2080(%rsp) -vpshufb shuf48_16(%rip), %ymm3, %ymm3 -vpand mask3_5_4_3_1(%rip), %ymm3, %ymm8 -vpand mask5_3_5_3(%rip), %ymm3, %ymm3 -vpermq $139, %ymm8, %ymm8 -vpand mask_keephigh(%rip), %ymm8, %ymm9 -vpor %ymm9, %ymm3, %ymm3 -vpaddw 2336(%rsp), %ymm6, %ymm6 -vpaddw %ymm3, %ymm6, %ymm6 -vmovdqa %xmm8, 2336(%rsp) -vpshufb shuf48_16(%rip), %ymm11, %ymm11 -vpand mask3_5_4_3_1(%rip), %ymm11, %ymm8 -vpand mask5_3_5_3(%rip), %ymm11, %ymm11 -vpermq $139, %ymm8, %ymm8 -vpand mask_keephigh(%rip), %ymm8, %ymm9 -vpor %ymm9, %ymm11, %ymm11 -vpaddw 2592(%rsp), %ymm4, %ymm4 -vpaddw %ymm11, %ymm4, %ymm4 -vmovdqa %xmm8, 2592(%rsp) -vmovdqu %xmm5, 152(%rdi) -vextracti128 $1, %ymm5, %xmm5 -vmovq %xmm5, 168(%rdi) -vmovdqu %xmm6, 504(%rdi) -vextracti128 $1, %ymm6, %xmm6 -vmovq %xmm6, 520(%rdi) -vmovdqu %xmm4, 856(%rdi) -vextracti128 $1, %ymm4, %xmm4 -vmovq %xmm4, 872(%rdi) -vmovdqu %xmm2, 1208(%rdi) -vextracti128 $1, %ymm2, %xmm2 -vmovq %xmm2, 1224(%rdi) -vmovdqa 64(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm3 -vpunpckhwd const0(%rip), %ymm11, %ymm7 -vpslld $1, %ymm3, %ymm3 -vpslld $1, %ymm7, %ymm7 -vmovdqa 320(%rsp), %ymm2 -vpunpcklwd const0(%rip), %ymm2, %ymm4 -vpunpckhwd const0(%rip), %ymm2, %ymm2 -vmovdqa 576(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm4, %ymm8 -vpaddd %ymm6, %ymm2, %ymm9 -vpsubd %ymm3, %ymm8, %ymm8 -vpsubd %ymm7, %ymm9, %ymm9 -vpsubd %ymm5, %ymm4, %ymm5 -vpsubd %ymm6, %ymm2, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1600(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm2 -vpunpckhwd const0(%rip), %ymm5, %ymm4 -vpslld $1, %ymm2, %ymm2 -vpslld $1, %ymm4, %ymm4 -vpsubd %ymm2, %ymm8, %ymm8 -vpsubd %ymm4, %ymm9, %ymm9 -vpsrld $1, %ymm8, %ymm8 -vpsrld $1, %ymm9, %ymm9 -vpand mask32_to_16(%rip), %ymm8, %ymm8 -vpand mask32_to_16(%rip), %ymm9, %ymm9 -vpackusdw %ymm9, %ymm8, %ymm9 -vmovdqa 832(%rsp), %ymm8 -vpaddw 1088(%rsp), %ymm8, %ymm4 -vpsubw 1088(%rsp), %ymm8, %ymm8 -vpsrlw $2, %ymm8, %ymm8 -vpsubw %ymm6, %ymm8, %ymm8 -vpmullw %ymm14, %ymm8, %ymm8 -vpsllw $1, %ymm11, %ymm2 -vpsubw %ymm2, %ymm4, %ymm2 -vpsllw $7, %ymm5, %ymm4 -vpsubw %ymm4, %ymm2, %ymm4 -vpsrlw $3, %ymm4, %ymm4 -vpsubw %ymm9, %ymm4, %ymm4 -vmovdqa 1344(%rsp), %ymm2 -vpsubw %ymm11, %ymm2, %ymm2 -vpmullw %ymm15, %ymm5, %ymm7 -vpsubw %ymm7, %ymm2, %ymm7 -vpmullw %ymm14, %ymm4, %ymm4 -vpsubw %ymm4, %ymm9, %ymm9 -vpmullw %ymm12, %ymm4, %ymm2 -vpaddw %ymm2, %ymm9, %ymm2 -vpmullw %ymm12, %ymm2, %ymm2 -vpsubw %ymm2, %ymm7, %ymm2 -vpmullw %ymm14, %ymm2, %ymm2 -vpsubw %ymm6, %ymm2, %ymm2 -vpsrlw $3, %ymm2, %ymm2 -vpsubw %ymm8, %ymm2, %ymm2 -vpsubw %ymm2, %ymm8, %ymm8 -vpsubw %ymm8, %ymm6, %ymm6 -vpmullw %ymm13, %ymm2, %ymm2 -vpsubw %ymm2, %ymm6, %ymm6 -vpshufb shuf48_16(%rip), %ymm4, %ymm4 -vpand mask3_5_4_3_1(%rip), %ymm4, %ymm7 -vpand mask5_3_5_3(%rip), %ymm4, %ymm4 -vpermq $139, %ymm7, %ymm7 -vpand mask_keephigh(%rip), %ymm7, %ymm3 -vpor %ymm3, %ymm4, %ymm4 -vpaddw 2112(%rsp), %ymm11, %ymm11 -vpaddw %ymm4, %ymm11, %ymm11 -vmovdqa %xmm7, 2112(%rsp) -vpshufb shuf48_16(%rip), %ymm2, %ymm2 -vpand mask3_5_4_3_1(%rip), %ymm2, %ymm7 -vpand mask5_3_5_3(%rip), %ymm2, %ymm2 -vpermq $139, %ymm7, %ymm7 -vpand mask_keephigh(%rip), %ymm7, %ymm3 -vpor %ymm3, %ymm2, %ymm2 -vpaddw 2368(%rsp), %ymm6, %ymm6 -vpaddw %ymm2, %ymm6, %ymm6 -vmovdqa %xmm7, 2368(%rsp) -vpshufb shuf48_16(%rip), %ymm5, %ymm5 -vpand mask3_5_4_3_1(%rip), %ymm5, %ymm7 -vpand mask5_3_5_3(%rip), %ymm5, %ymm5 -vpermq $139, %ymm7, %ymm7 -vpand mask_keephigh(%rip), %ymm7, %ymm3 -vpor %ymm3, %ymm5, %ymm5 -vpaddw 2624(%rsp), %ymm9, %ymm9 -vpaddw %ymm5, %ymm9, %ymm9 -vmovdqa %xmm7, 2624(%rsp) -vmovdqu %xmm11, 240(%rdi) -vextracti128 $1, %ymm11, %xmm11 -vmovq %xmm11, 256(%rdi) -vmovdqu %xmm6, 592(%rdi) -vextracti128 $1, %ymm6, %xmm6 -vmovq %xmm6, 608(%rdi) -vmovdqu %xmm9, 944(%rdi) -vextracti128 $1, %ymm9, %xmm9 -vmovq %xmm9, 960(%rdi) -vmovdqu %xmm8, 1296(%rdi) -vextracti128 $1, %ymm8, %xmm8 -vmovq %xmm8, 1312(%rdi) -vmovdqa 96(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm2 -vpunpckhwd const0(%rip), %ymm5, %ymm4 -vpslld $1, %ymm2, %ymm2 -vpslld $1, %ymm4, %ymm4 -vmovdqa 352(%rsp), %ymm8 -vpunpcklwd const0(%rip), %ymm8, %ymm9 -vpunpckhwd const0(%rip), %ymm8, %ymm8 -vmovdqa 608(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm9, %ymm7 -vpaddd %ymm6, %ymm8, %ymm3 -vpsubd %ymm2, %ymm7, %ymm7 -vpsubd %ymm4, %ymm3, %ymm3 -vpsubd %ymm11, %ymm9, %ymm11 -vpsubd %ymm6, %ymm8, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1632(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm8 -vpunpckhwd const0(%rip), %ymm11, %ymm9 -vpslld $1, %ymm8, %ymm8 -vpslld $1, %ymm9, %ymm9 -vpsubd %ymm8, %ymm7, %ymm7 -vpsubd %ymm9, %ymm3, %ymm3 -vpsrld $1, %ymm7, %ymm7 -vpsrld $1, %ymm3, %ymm3 -vpand mask32_to_16(%rip), %ymm7, %ymm7 -vpand mask32_to_16(%rip), %ymm3, %ymm3 -vpackusdw %ymm3, %ymm7, %ymm3 -vmovdqa 864(%rsp), %ymm7 -vpaddw 1120(%rsp), %ymm7, %ymm9 -vpsubw 1120(%rsp), %ymm7, %ymm7 -vpsrlw $2, %ymm7, %ymm7 -vpsubw %ymm6, %ymm7, %ymm7 -vpmullw %ymm14, %ymm7, %ymm7 -vpsllw $1, %ymm5, %ymm8 -vpsubw %ymm8, %ymm9, %ymm8 -vpsllw $7, %ymm11, %ymm9 -vpsubw %ymm9, %ymm8, %ymm9 -vpsrlw $3, %ymm9, %ymm9 -vpsubw %ymm3, %ymm9, %ymm9 -vmovdqa 1376(%rsp), %ymm8 -vpsubw %ymm5, %ymm8, %ymm8 -vpmullw %ymm15, %ymm11, %ymm4 -vpsubw %ymm4, %ymm8, %ymm4 -vpmullw %ymm14, %ymm9, %ymm9 -vpsubw %ymm9, %ymm3, %ymm3 -vpmullw %ymm12, %ymm9, %ymm8 -vpaddw %ymm8, %ymm3, %ymm8 -vpmullw %ymm12, %ymm8, %ymm8 -vpsubw %ymm8, %ymm4, %ymm8 -vpmullw %ymm14, %ymm8, %ymm8 -vpsubw %ymm6, %ymm8, %ymm8 -vpsrlw $3, %ymm8, %ymm8 -vpsubw %ymm7, %ymm8, %ymm8 -vpsubw %ymm8, %ymm7, %ymm7 -vpsubw %ymm7, %ymm6, %ymm6 -vpmullw %ymm13, %ymm8, %ymm8 -vpsubw %ymm8, %ymm6, %ymm6 -vpshufb shuf48_16(%rip), %ymm9, %ymm9 -vpand mask3_5_4_3_1(%rip), %ymm9, %ymm4 -vpand mask5_3_5_3(%rip), %ymm9, %ymm9 -vpermq $139, %ymm4, %ymm4 -vpand mask_keephigh(%rip), %ymm4, %ymm2 -vpor %ymm2, %ymm9, %ymm9 -vpaddw 2144(%rsp), %ymm5, %ymm5 -vpaddw %ymm9, %ymm5, %ymm5 -vmovdqa %xmm4, 2144(%rsp) -vpshufb shuf48_16(%rip), %ymm8, %ymm8 -vpand mask3_5_4_3_1(%rip), %ymm8, %ymm4 -vpand mask5_3_5_3(%rip), %ymm8, %ymm8 -vpermq $139, %ymm4, %ymm4 -vpand mask_keephigh(%rip), %ymm4, %ymm2 -vpor %ymm2, %ymm8, %ymm8 -vpaddw 2400(%rsp), %ymm6, %ymm6 -vpaddw %ymm8, %ymm6, %ymm6 -vmovdqa %xmm4, 2400(%rsp) -vpshufb shuf48_16(%rip), %ymm11, %ymm11 -vpand mask3_5_4_3_1(%rip), %ymm11, %ymm4 -vpand mask5_3_5_3(%rip), %ymm11, %ymm11 -vpermq $139, %ymm4, %ymm4 -vpand mask_keephigh(%rip), %ymm4, %ymm2 -vpor %ymm2, %ymm11, %ymm11 -vpaddw 2656(%rsp), %ymm3, %ymm3 -vpaddw %ymm11, %ymm3, %ymm3 -vmovdqa %xmm4, 2656(%rsp) -vmovdqu %xmm5, 328(%rdi) -vextracti128 $1, %ymm5, %xmm5 -vmovq %xmm5, 344(%rdi) -vpshufb shufmin1_mask3(%rip), %ymm5, %ymm5 -vmovdqa %xmm5, 1792(%rsp) -vmovdqu %xmm6, 680(%rdi) -vextracti128 $1, %ymm6, %xmm6 -vmovq %xmm6, 696(%rdi) -vpshufb shufmin1_mask3(%rip), %ymm6, %ymm6 -vmovdqa %xmm6, 1824(%rsp) -vmovdqu %xmm3, 1032(%rdi) -vextracti128 $1, %ymm3, %xmm3 -vmovq %xmm3, 1048(%rdi) -vpshufb shufmin1_mask3(%rip), %ymm3, %ymm3 -vmovdqa %xmm3, 1856(%rsp) -vmovdqu %xmm7, 1384(%rdi) -vextracti128 $1, %ymm7, %xmm7 -vmovq %xmm7, 1400(%rdi) -vpshufb shufmin1_mask3(%rip), %ymm7, %ymm7 -vmovdqa %xmm7, 1888(%rsp) -vmovdqa 128(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm8 -vpunpckhwd const0(%rip), %ymm11, %ymm9 -vpslld $1, %ymm8, %ymm8 -vpslld $1, %ymm9, %ymm9 -vmovdqa 384(%rsp), %ymm7 -vpunpcklwd const0(%rip), %ymm7, %ymm3 -vpunpckhwd const0(%rip), %ymm7, %ymm7 -vmovdqa 640(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm3, %ymm4 -vpaddd %ymm6, %ymm7, %ymm2 -vpsubd %ymm8, %ymm4, %ymm4 -vpsubd %ymm9, %ymm2, %ymm2 -vpsubd %ymm5, %ymm3, %ymm5 -vpsubd %ymm6, %ymm7, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1664(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm7 -vpunpckhwd const0(%rip), %ymm5, %ymm3 -vpslld $1, %ymm7, %ymm7 -vpslld $1, %ymm3, %ymm3 -vpsubd %ymm7, %ymm4, %ymm4 -vpsubd %ymm3, %ymm2, %ymm2 -vpsrld $1, %ymm4, %ymm4 -vpsrld $1, %ymm2, %ymm2 -vpand mask32_to_16(%rip), %ymm4, %ymm4 -vpand mask32_to_16(%rip), %ymm2, %ymm2 -vpackusdw %ymm2, %ymm4, %ymm2 -vmovdqa 896(%rsp), %ymm4 -vpaddw 1152(%rsp), %ymm4, %ymm3 -vpsubw 1152(%rsp), %ymm4, %ymm4 -vpsrlw $2, %ymm4, %ymm4 -vpsubw %ymm6, %ymm4, %ymm4 -vpmullw %ymm14, %ymm4, %ymm4 -vpsllw $1, %ymm11, %ymm7 -vpsubw %ymm7, %ymm3, %ymm7 -vpsllw $7, %ymm5, %ymm3 -vpsubw %ymm3, %ymm7, %ymm3 -vpsrlw $3, %ymm3, %ymm3 -vpsubw %ymm2, %ymm3, %ymm3 -vmovdqa 1408(%rsp), %ymm7 -vpsubw %ymm11, %ymm7, %ymm7 -vpmullw %ymm15, %ymm5, %ymm9 -vpsubw %ymm9, %ymm7, %ymm9 -vpmullw %ymm14, %ymm3, %ymm3 -vpsubw %ymm3, %ymm2, %ymm2 -vpmullw %ymm12, %ymm3, %ymm7 -vpaddw %ymm7, %ymm2, %ymm7 -vpmullw %ymm12, %ymm7, %ymm7 -vpsubw %ymm7, %ymm9, %ymm7 -vpmullw %ymm14, %ymm7, %ymm7 -vpsubw %ymm6, %ymm7, %ymm7 -vpsrlw $3, %ymm7, %ymm7 -vpsubw %ymm4, %ymm7, %ymm7 -vpsubw %ymm7, %ymm4, %ymm4 -vpsubw %ymm4, %ymm6, %ymm6 -vpmullw %ymm13, %ymm7, %ymm7 -vpsubw %ymm7, %ymm6, %ymm6 -vmovdqu 416(%rdi), %ymm9 -vmovdqu 768(%rdi), %ymm8 -vmovdqu 1120(%rdi), %ymm10 -vpaddw %ymm11, %ymm9, %ymm11 -vpaddw %ymm6, %ymm8, %ymm6 -vpaddw %ymm2, %ymm10, %ymm2 -vpshufb shuf48_16(%rip), %ymm4, %ymm4 -vpand mask3_5_4_3_1(%rip), %ymm4, %ymm10 -vpand mask5_3_5_3(%rip), %ymm4, %ymm4 -vpermq $139, %ymm10, %ymm10 -vpand mask_keephigh(%rip), %ymm10, %ymm8 -vpor %ymm8, %ymm4, %ymm4 -vmovdqu 64(%rdi), %ymm8 -vpaddw 1920(%rsp), %ymm8, %ymm8 -vpaddw %ymm4, %ymm8, %ymm8 -vmovdqu %xmm8, 64(%rdi) -vextracti128 $1, %ymm8, %xmm8 -vmovq %xmm8, 80(%rdi) -vmovdqa %xmm10, 1920(%rsp) -vpshufb shuf48_16(%rip), %ymm3, %ymm3 -vpand mask3_5_4_3_1(%rip), %ymm3, %ymm10 -vpand mask5_3_5_3(%rip), %ymm3, %ymm3 -vpermq $139, %ymm10, %ymm10 -vpand mask_keephigh(%rip), %ymm10, %ymm8 -vpor %ymm8, %ymm3, %ymm3 -vpaddw 2176(%rsp), %ymm11, %ymm11 -vpaddw %ymm3, %ymm11, %ymm11 -vmovdqa %xmm10, 2176(%rsp) -vpshufb shuf48_16(%rip), %ymm7, %ymm7 -vpand mask3_5_4_3_1(%rip), %ymm7, %ymm10 -vpand mask5_3_5_3(%rip), %ymm7, %ymm7 -vpermq $139, %ymm10, %ymm10 -vpand mask_keephigh(%rip), %ymm10, %ymm8 -vpor %ymm8, %ymm7, %ymm7 -vpaddw 2432(%rsp), %ymm6, %ymm6 -vpaddw %ymm7, %ymm6, %ymm6 -vmovdqa %xmm10, 2432(%rsp) -vpshufb shuf48_16(%rip), %ymm5, %ymm5 -vpand mask3_5_4_3_1(%rip), %ymm5, %ymm10 -vpand mask5_3_5_3(%rip), %ymm5, %ymm5 -vpermq $139, %ymm10, %ymm10 -vpand mask_keephigh(%rip), %ymm10, %ymm8 -vpor %ymm8, %ymm5, %ymm5 -vpaddw 2688(%rsp), %ymm2, %ymm2 -vpaddw %ymm5, %ymm2, %ymm2 -vmovdqa %xmm10, 2688(%rsp) -vmovdqu %xmm11, 416(%rdi) -vextracti128 $1, %ymm11, %xmm11 -vmovq %xmm11, 432(%rdi) -vmovdqu %xmm6, 768(%rdi) -vextracti128 $1, %ymm6, %xmm6 -vmovq %xmm6, 784(%rdi) -vmovdqu %xmm2, 1120(%rdi) -vextracti128 $1, %ymm2, %xmm2 -vmovq %xmm2, 1136(%rdi) -vmovdqa 160(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm7 -vpunpckhwd const0(%rip), %ymm5, %ymm3 -vpslld $1, %ymm7, %ymm7 -vpslld $1, %ymm3, %ymm3 -vmovdqa 416(%rsp), %ymm4 -vpunpcklwd const0(%rip), %ymm4, %ymm2 -vpunpckhwd const0(%rip), %ymm4, %ymm4 -vmovdqa 672(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm2, %ymm10 -vpaddd %ymm6, %ymm4, %ymm8 -vpsubd %ymm7, %ymm10, %ymm10 -vpsubd %ymm3, %ymm8, %ymm8 -vpsubd %ymm11, %ymm2, %ymm11 -vpsubd %ymm6, %ymm4, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1696(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm4 -vpunpckhwd const0(%rip), %ymm11, %ymm2 -vpslld $1, %ymm4, %ymm4 -vpslld $1, %ymm2, %ymm2 -vpsubd %ymm4, %ymm10, %ymm10 -vpsubd %ymm2, %ymm8, %ymm8 -vpsrld $1, %ymm10, %ymm10 -vpsrld $1, %ymm8, %ymm8 -vpand mask32_to_16(%rip), %ymm10, %ymm10 -vpand mask32_to_16(%rip), %ymm8, %ymm8 -vpackusdw %ymm8, %ymm10, %ymm8 -vmovdqa 928(%rsp), %ymm10 -vpaddw 1184(%rsp), %ymm10, %ymm2 -vpsubw 1184(%rsp), %ymm10, %ymm10 -vpsrlw $2, %ymm10, %ymm10 -vpsubw %ymm6, %ymm10, %ymm10 -vpmullw %ymm14, %ymm10, %ymm10 -vpsllw $1, %ymm5, %ymm4 -vpsubw %ymm4, %ymm2, %ymm4 -vpsllw $7, %ymm11, %ymm2 -vpsubw %ymm2, %ymm4, %ymm2 -vpsrlw $3, %ymm2, %ymm2 -vpsubw %ymm8, %ymm2, %ymm2 -vmovdqa 1440(%rsp), %ymm4 -vpsubw %ymm5, %ymm4, %ymm4 -vpmullw %ymm15, %ymm11, %ymm3 -vpsubw %ymm3, %ymm4, %ymm3 -vpmullw %ymm14, %ymm2, %ymm2 -vpsubw %ymm2, %ymm8, %ymm8 -vpmullw %ymm12, %ymm2, %ymm4 -vpaddw %ymm4, %ymm8, %ymm4 -vpmullw %ymm12, %ymm4, %ymm4 -vpsubw %ymm4, %ymm3, %ymm4 -vpmullw %ymm14, %ymm4, %ymm4 -vpsubw %ymm6, %ymm4, %ymm4 -vpsrlw $3, %ymm4, %ymm4 -vpsubw %ymm10, %ymm4, %ymm4 -vpsubw %ymm4, %ymm10, %ymm10 -vpsubw %ymm10, %ymm6, %ymm6 -vpmullw %ymm13, %ymm4, %ymm4 -vpsubw %ymm4, %ymm6, %ymm6 -vmovdqu 504(%rdi), %ymm3 -vmovdqu 856(%rdi), %ymm7 -vmovdqu 1208(%rdi), %ymm9 -vpaddw %ymm5, %ymm3, %ymm5 -vpaddw %ymm6, %ymm7, %ymm6 -vpaddw %ymm8, %ymm9, %ymm8 -vpshufb shuf48_16(%rip), %ymm10, %ymm10 -vpand mask3_5_4_3_1(%rip), %ymm10, %ymm9 -vpand mask5_3_5_3(%rip), %ymm10, %ymm10 -vpermq $139, %ymm9, %ymm9 -vpand mask_keephigh(%rip), %ymm9, %ymm7 -vpor %ymm7, %ymm10, %ymm10 -vmovdqu 152(%rdi), %ymm7 -vpaddw 1952(%rsp), %ymm7, %ymm7 -vpaddw %ymm10, %ymm7, %ymm7 -vmovdqu %xmm7, 152(%rdi) -vextracti128 $1, %ymm7, %xmm7 -vmovq %xmm7, 168(%rdi) -vmovdqa %xmm9, 1952(%rsp) -vpshufb shuf48_16(%rip), %ymm2, %ymm2 -vpand mask3_5_4_3_1(%rip), %ymm2, %ymm9 -vpand mask5_3_5_3(%rip), %ymm2, %ymm2 -vpermq $139, %ymm9, %ymm9 -vpand mask_keephigh(%rip), %ymm9, %ymm7 -vpor %ymm7, %ymm2, %ymm2 -vpaddw 2208(%rsp), %ymm5, %ymm5 -vpaddw %ymm2, %ymm5, %ymm5 -vmovdqa %xmm9, 2208(%rsp) -vpshufb shuf48_16(%rip), %ymm4, %ymm4 -vpand mask3_5_4_3_1(%rip), %ymm4, %ymm9 -vpand mask5_3_5_3(%rip), %ymm4, %ymm4 -vpermq $139, %ymm9, %ymm9 -vpand mask_keephigh(%rip), %ymm9, %ymm7 -vpor %ymm7, %ymm4, %ymm4 -vpaddw 2464(%rsp), %ymm6, %ymm6 -vpaddw %ymm4, %ymm6, %ymm6 -vmovdqa %xmm9, 2464(%rsp) -vpshufb shuf48_16(%rip), %ymm11, %ymm11 -vpand mask3_5_4_3_1(%rip), %ymm11, %ymm9 -vpand mask5_3_5_3(%rip), %ymm11, %ymm11 -vpermq $139, %ymm9, %ymm9 -vpand mask_keephigh(%rip), %ymm9, %ymm7 -vpor %ymm7, %ymm11, %ymm11 -vpaddw 2720(%rsp), %ymm8, %ymm8 -vpaddw %ymm11, %ymm8, %ymm8 -vmovdqa %xmm9, 2720(%rsp) -vmovdqu %xmm5, 504(%rdi) -vextracti128 $1, %ymm5, %xmm5 -vmovq %xmm5, 520(%rdi) -vmovdqu %xmm6, 856(%rdi) -vextracti128 $1, %ymm6, %xmm6 -vmovq %xmm6, 872(%rdi) -vmovdqu %xmm8, 1208(%rdi) -vextracti128 $1, %ymm8, %xmm8 -vmovq %xmm8, 1224(%rdi) -vmovdqa 192(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm4 -vpunpckhwd const0(%rip), %ymm11, %ymm2 -vpslld $1, %ymm4, %ymm4 -vpslld $1, %ymm2, %ymm2 -vmovdqa 448(%rsp), %ymm10 -vpunpcklwd const0(%rip), %ymm10, %ymm8 -vpunpckhwd const0(%rip), %ymm10, %ymm10 -vmovdqa 704(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm5 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm5, %ymm8, %ymm9 -vpaddd %ymm6, %ymm10, %ymm7 -vpsubd %ymm4, %ymm9, %ymm9 -vpsubd %ymm2, %ymm7, %ymm7 -vpsubd %ymm5, %ymm8, %ymm5 -vpsubd %ymm6, %ymm10, %ymm6 -vpsrld $1, %ymm5, %ymm5 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm5, %ymm5 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm5, %ymm6 -vmovdqa 1728(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm10 -vpunpckhwd const0(%rip), %ymm5, %ymm8 -vpslld $1, %ymm10, %ymm10 -vpslld $1, %ymm8, %ymm8 -vpsubd %ymm10, %ymm9, %ymm9 -vpsubd %ymm8, %ymm7, %ymm7 -vpsrld $1, %ymm9, %ymm9 -vpsrld $1, %ymm7, %ymm7 -vpand mask32_to_16(%rip), %ymm9, %ymm9 -vpand mask32_to_16(%rip), %ymm7, %ymm7 -vpackusdw %ymm7, %ymm9, %ymm7 -vmovdqa 960(%rsp), %ymm9 -vpaddw 1216(%rsp), %ymm9, %ymm8 -vpsubw 1216(%rsp), %ymm9, %ymm9 -vpsrlw $2, %ymm9, %ymm9 -vpsubw %ymm6, %ymm9, %ymm9 -vpmullw %ymm14, %ymm9, %ymm9 -vpsllw $1, %ymm11, %ymm10 -vpsubw %ymm10, %ymm8, %ymm10 -vpsllw $7, %ymm5, %ymm8 -vpsubw %ymm8, %ymm10, %ymm8 -vpsrlw $3, %ymm8, %ymm8 -vpsubw %ymm7, %ymm8, %ymm8 -vmovdqa 1472(%rsp), %ymm10 -vpsubw %ymm11, %ymm10, %ymm10 -vpmullw %ymm15, %ymm5, %ymm2 -vpsubw %ymm2, %ymm10, %ymm2 -vpmullw %ymm14, %ymm8, %ymm8 -vpsubw %ymm8, %ymm7, %ymm7 -vpmullw %ymm12, %ymm8, %ymm10 -vpaddw %ymm10, %ymm7, %ymm10 -vpmullw %ymm12, %ymm10, %ymm10 -vpsubw %ymm10, %ymm2, %ymm10 -vpmullw %ymm14, %ymm10, %ymm10 -vpsubw %ymm6, %ymm10, %ymm10 -vpsrlw $3, %ymm10, %ymm10 -vpsubw %ymm9, %ymm10, %ymm10 -vpsubw %ymm10, %ymm9, %ymm9 -vpsubw %ymm9, %ymm6, %ymm6 -vpmullw %ymm13, %ymm10, %ymm10 -vpsubw %ymm10, %ymm6, %ymm6 -vmovdqu 592(%rdi), %ymm2 -vmovdqu 944(%rdi), %ymm4 -vmovdqu 1296(%rdi), %ymm3 -vpaddw %ymm11, %ymm2, %ymm11 -vpaddw %ymm6, %ymm4, %ymm6 -vpaddw %ymm7, %ymm3, %ymm7 -vpshufb shuf48_16(%rip), %ymm9, %ymm9 -vpand mask3_5_4_3_1(%rip), %ymm9, %ymm3 -vpand mask5_3_5_3(%rip), %ymm9, %ymm9 -vpermq $139, %ymm3, %ymm3 -vpand mask_keephigh(%rip), %ymm3, %ymm4 -vpor %ymm4, %ymm9, %ymm9 -vmovdqu 240(%rdi), %ymm4 -vpaddw 1984(%rsp), %ymm4, %ymm4 -vpaddw %ymm9, %ymm4, %ymm4 -vmovdqu %xmm4, 240(%rdi) -vextracti128 $1, %ymm4, %xmm4 -vmovq %xmm4, 256(%rdi) -vmovdqa %xmm3, 1984(%rsp) -vpshufb shuf48_16(%rip), %ymm8, %ymm8 -vpand mask3_5_4_3_1(%rip), %ymm8, %ymm3 -vpand mask5_3_5_3(%rip), %ymm8, %ymm8 -vpermq $139, %ymm3, %ymm3 -vpand mask_keephigh(%rip), %ymm3, %ymm4 -vpor %ymm4, %ymm8, %ymm8 -vpaddw 2240(%rsp), %ymm11, %ymm11 -vpaddw %ymm8, %ymm11, %ymm11 -vmovdqa %xmm3, 2240(%rsp) -vpshufb shuf48_16(%rip), %ymm10, %ymm10 -vpand mask3_5_4_3_1(%rip), %ymm10, %ymm3 -vpand mask5_3_5_3(%rip), %ymm10, %ymm10 -vpermq $139, %ymm3, %ymm3 -vpand mask_keephigh(%rip), %ymm3, %ymm4 -vpor %ymm4, %ymm10, %ymm10 -vpaddw 2496(%rsp), %ymm6, %ymm6 -vpaddw %ymm10, %ymm6, %ymm6 -vmovdqa %xmm3, 2496(%rsp) -vpshufb shuf48_16(%rip), %ymm5, %ymm5 -vpand mask3_5_4_3_1(%rip), %ymm5, %ymm3 -vpand mask5_3_5_3(%rip), %ymm5, %ymm5 -vpermq $139, %ymm3, %ymm3 -vpand mask_keephigh(%rip), %ymm3, %ymm4 -vpor %ymm4, %ymm5, %ymm5 -vpaddw 2752(%rsp), %ymm7, %ymm7 -vpaddw %ymm5, %ymm7, %ymm7 -vmovdqa %xmm3, 2752(%rsp) -vmovdqu %xmm11, 592(%rdi) -vextracti128 $1, %ymm11, %xmm11 -vmovq %xmm11, 608(%rdi) -vmovdqu %xmm6, 944(%rdi) -vextracti128 $1, %ymm6, %xmm6 -vmovq %xmm6, 960(%rdi) -vmovdqu %xmm7, 1296(%rdi) -vextracti128 $1, %ymm7, %xmm7 -vmovq %xmm7, 1312(%rdi) -vmovdqa 224(%rsp), %ymm5 -vpunpcklwd const0(%rip), %ymm5, %ymm10 -vpunpckhwd const0(%rip), %ymm5, %ymm8 -vpslld $1, %ymm10, %ymm10 -vpslld $1, %ymm8, %ymm8 -vmovdqa 480(%rsp), %ymm9 -vpunpcklwd const0(%rip), %ymm9, %ymm7 -vpunpckhwd const0(%rip), %ymm9, %ymm9 -vmovdqa 736(%rsp), %ymm6 -vpunpcklwd const0(%rip), %ymm6, %ymm11 -vpunpckhwd const0(%rip), %ymm6, %ymm6 -vpaddd %ymm11, %ymm7, %ymm3 -vpaddd %ymm6, %ymm9, %ymm4 -vpsubd %ymm10, %ymm3, %ymm3 -vpsubd %ymm8, %ymm4, %ymm4 -vpsubd %ymm11, %ymm7, %ymm11 -vpsubd %ymm6, %ymm9, %ymm6 -vpsrld $1, %ymm11, %ymm11 -vpsrld $1, %ymm6, %ymm6 -vpand mask32_to_16(%rip), %ymm11, %ymm11 -vpand mask32_to_16(%rip), %ymm6, %ymm6 -vpackusdw %ymm6, %ymm11, %ymm6 -vmovdqa 1760(%rsp), %ymm11 -vpunpcklwd const0(%rip), %ymm11, %ymm9 -vpunpckhwd const0(%rip), %ymm11, %ymm7 -vpslld $1, %ymm9, %ymm9 -vpslld $1, %ymm7, %ymm7 -vpsubd %ymm9, %ymm3, %ymm3 -vpsubd %ymm7, %ymm4, %ymm4 -vpsrld $1, %ymm3, %ymm3 -vpsrld $1, %ymm4, %ymm4 -vpand mask32_to_16(%rip), %ymm3, %ymm3 -vpand mask32_to_16(%rip), %ymm4, %ymm4 -vpackusdw %ymm4, %ymm3, %ymm4 -vmovdqa 992(%rsp), %ymm3 -vpaddw 1248(%rsp), %ymm3, %ymm7 -vpsubw 1248(%rsp), %ymm3, %ymm3 -vpsrlw $2, %ymm3, %ymm3 -vpsubw %ymm6, %ymm3, %ymm3 -vpmullw %ymm14, %ymm3, %ymm3 -vpsllw $1, %ymm5, %ymm9 -vpsubw %ymm9, %ymm7, %ymm9 -vpsllw $7, %ymm11, %ymm7 -vpsubw %ymm7, %ymm9, %ymm7 -vpsrlw $3, %ymm7, %ymm7 -vpsubw %ymm4, %ymm7, %ymm7 -vmovdqa 1504(%rsp), %ymm9 -vpsubw %ymm5, %ymm9, %ymm9 -vpmullw %ymm15, %ymm11, %ymm8 -vpsubw %ymm8, %ymm9, %ymm8 -vpmullw %ymm14, %ymm7, %ymm7 -vpsubw %ymm7, %ymm4, %ymm4 -vpmullw %ymm12, %ymm7, %ymm9 -vpaddw %ymm9, %ymm4, %ymm9 -vpmullw %ymm12, %ymm9, %ymm9 -vpsubw %ymm9, %ymm8, %ymm9 -vpmullw %ymm14, %ymm9, %ymm9 -vpsubw %ymm6, %ymm9, %ymm9 -vpsrlw $3, %ymm9, %ymm9 -vpsubw %ymm3, %ymm9, %ymm9 -vpsubw %ymm9, %ymm3, %ymm3 -vpsubw %ymm3, %ymm6, %ymm6 -vpmullw %ymm13, %ymm9, %ymm9 -vpsubw %ymm9, %ymm6, %ymm6 -vextracti128 $1, %ymm4, %xmm8 -vpshufb shufmin1_mask3(%rip), %ymm8, %ymm8 -vmovdqa %ymm8, 2816(%rsp) -vextracti128 $1, %ymm3, %xmm8 -vpshufb shufmin1_mask3(%rip), %ymm8, %ymm8 -vmovdqa %ymm8, 2848(%rsp) -vextracti128 $1, %ymm7, %xmm8 -vpshufb shufmin1_mask3(%rip), %ymm8, %ymm8 -vmovdqa %ymm8, 2880(%rsp) -vmovdqu 680(%rdi), %ymm8 -vmovdqu 1032(%rdi), %ymm10 -vmovdqu 1384(%rdi), %ymm2 -vpaddw %ymm5, %ymm8, %ymm5 -vpaddw %ymm6, %ymm10, %ymm6 -vpaddw %ymm4, %ymm2, %ymm4 -vpshufb shuf48_16(%rip), %ymm3, %ymm3 -vpand mask3_5_4_3_1(%rip), %ymm3, %ymm2 -vpand mask5_3_5_3(%rip), %ymm3, %ymm3 -vpermq $139, %ymm2, %ymm2 -vpand mask_keephigh(%rip), %ymm2, %ymm10 -vpor %ymm10, %ymm3, %ymm3 -vmovdqu 328(%rdi), %ymm10 -vpaddw 2016(%rsp), %ymm10, %ymm10 -vpaddw %ymm3, %ymm10, %ymm10 -vmovdqu %xmm10, 328(%rdi) -vextracti128 $1, %ymm10, %xmm10 -vmovq %xmm10, 344(%rdi) -vpshufb shufmin1_mask3(%rip), %ymm10, %ymm10 -vmovdqa %xmm10, 1792(%rsp) -vmovdqa %xmm2, 2016(%rsp) -vpshufb shuf48_16(%rip), %ymm7, %ymm7 -vpand mask3_5_4_3_1(%rip), %ymm7, %ymm2 -vpand mask5_3_5_3(%rip), %ymm7, %ymm7 -vpermq $139, %ymm2, %ymm2 -vpand mask_keephigh(%rip), %ymm2, %ymm10 -vpor %ymm10, %ymm7, %ymm7 -vpaddw 2272(%rsp), %ymm5, %ymm5 -vpaddw %ymm7, %ymm5, %ymm5 -vmovdqa %xmm2, 2272(%rsp) -vpshufb shuf48_16(%rip), %ymm9, %ymm9 -vpand mask3_5_4_3_1(%rip), %ymm9, %ymm2 -vpand mask5_3_5_3(%rip), %ymm9, %ymm9 -vpermq $139, %ymm2, %ymm2 -vpand mask_keephigh(%rip), %ymm2, %ymm10 -vpor %ymm10, %ymm9, %ymm9 -vpaddw 2528(%rsp), %ymm6, %ymm6 -vpaddw %ymm9, %ymm6, %ymm6 -vmovdqa %xmm2, 2528(%rsp) -vpshufb shuf48_16(%rip), %ymm11, %ymm11 -vpand mask3_5_4_3_1(%rip), %ymm11, %ymm2 -vpand mask5_3_5_3(%rip), %ymm11, %ymm11 -vpermq $139, %ymm2, %ymm2 -vpand mask_keephigh(%rip), %ymm2, %ymm10 -vpor %ymm10, %ymm11, %ymm11 -vpaddw 2784(%rsp), %ymm4, %ymm4 -vpaddw %ymm11, %ymm4, %ymm4 -vmovdqa %xmm2, 2784(%rsp) -vmovdqu %xmm5, 680(%rdi) -vextracti128 $1, %ymm5, %xmm5 -vmovq %xmm5, 696(%rdi) -vmovdqu %xmm6, 1032(%rdi) -vextracti128 $1, %ymm6, %xmm6 -vmovq %xmm6, 1048(%rdi) -vmovdqu %xmm4, 1384(%rdi) -vextracti128 $1, %ymm4, %xmm4 -vmovq %xmm4, 1400(%rdi) -vmovdqu 0(%rdi), %ymm11 -vpaddw 1888(%rsp), %ymm11, %ymm11 -vpaddw 2816(%rsp), %ymm11, %ymm11 -vmovdqu %ymm11, 0(%rdi) -vmovdqu 352(%rdi), %ymm11 -vpaddw 2528(%rsp), %ymm11, %ymm11 -vpaddw 2848(%rsp), %ymm11, %ymm11 -vmovdqu %ymm11, 352(%rdi) -vmovdqu 704(%rdi), %ymm11 -vpaddw 2784(%rsp), %ymm11, %ymm11 -vpaddw 2880(%rsp), %ymm11, %ymm11 -vmovdqu %ymm11, 704(%rdi) -vmovdqu 88(%rdi), %ymm11 -vpaddw 2048(%rsp), %ymm11, %ymm11 -vpaddw 1920(%rsp), %ymm11, %ymm11 -vmovdqu %ymm11, 88(%rdi) -vmovdqu 440(%rdi), %ymm11 -vpaddw 2304(%rsp), %ymm11, %ymm11 -vmovdqu %ymm11, 440(%rdi) -vmovdqu 792(%rdi), %ymm11 -vpaddw 2560(%rsp), %ymm11, %ymm11 -vmovdqu %ymm11, 792(%rdi) -vmovdqu 176(%rdi), %ymm11 -vpaddw 2080(%rsp), %ymm11, %ymm11 -vpaddw 1952(%rsp), %ymm11, %ymm11 -vmovdqu %ymm11, 176(%rdi) -vmovdqu 528(%rdi), %ymm11 -vpaddw 2336(%rsp), %ymm11, %ymm11 -vmovdqu %ymm11, 528(%rdi) -vmovdqu 880(%rdi), %ymm11 -vpaddw 2592(%rsp), %ymm11, %ymm11 -vmovdqu %ymm11, 880(%rdi) -vmovdqu 264(%rdi), %ymm11 -vpaddw 2112(%rsp), %ymm11, %ymm11 -vpaddw 1984(%rsp), %ymm11, %ymm11 -vmovdqu %ymm11, 264(%rdi) -vmovdqu 616(%rdi), %ymm11 -vpaddw 2368(%rsp), %ymm11, %ymm11 -vmovdqu %ymm11, 616(%rdi) -vmovdqu 968(%rdi), %ymm11 -vpaddw 2624(%rsp), %ymm11, %ymm11 -vmovdqu %ymm11, 968(%rdi) -vmovdqu 352(%rdi), %ymm11 -vpaddw 2144(%rsp), %ymm11, %ymm11 -vmovdqu %ymm11, 352(%rdi) -vmovdqu 704(%rdi), %ymm11 -vpaddw 2400(%rsp), %ymm11, %ymm11 -vmovdqu %ymm11, 704(%rdi) -vmovdqu 1056(%rdi), %ymm11 -vpaddw 2656(%rsp), %ymm11, %ymm11 -vmovdqu %ymm11, 1056(%rdi) -vmovdqu 440(%rdi), %ymm11 -vpaddw 2176(%rsp), %ymm11, %ymm11 -vmovdqu %ymm11, 440(%rdi) -vmovdqu 792(%rdi), %ymm11 -vpaddw 2432(%rsp), %ymm11, %ymm11 -vmovdqu %ymm11, 792(%rdi) -vmovdqu 1144(%rdi), %ymm11 -vpaddw 2688(%rsp), %ymm11, %ymm11 -vmovdqu %ymm11, 1144(%rdi) -vmovdqu 528(%rdi), %ymm11 -vpaddw 2208(%rsp), %ymm11, %ymm11 -vmovdqu %ymm11, 528(%rdi) -vmovdqu 880(%rdi), %ymm11 -vpaddw 2464(%rsp), %ymm11, %ymm11 -vmovdqu %ymm11, 880(%rdi) -vmovdqu 1232(%rdi), %ymm11 -vpaddw 2720(%rsp), %ymm11, %ymm11 -vmovdqu %ymm11, 1232(%rdi) -vmovdqu 616(%rdi), %ymm11 -vpaddw 2240(%rsp), %ymm11, %ymm11 -vmovdqu %ymm11, 616(%rdi) -vmovdqu 968(%rdi), %ymm11 -vpaddw 2496(%rsp), %ymm11, %ymm11 -vmovdqu %ymm11, 968(%rdi) -vmovdqu 1320(%rdi), %ymm11 -vpaddw 2752(%rsp), %ymm11, %ymm11 -vmovdqu %ymm11, 1320(%rdi) -mov %r8, %rsp -pop %r12 -ret diff --git a/src/kem/ntru/ntruhrss701/avx2/poly_rq_to_s3.s b/src/kem/ntru/ntruhrss701/avx2/poly_rq_to_s3.s deleted file mode 100644 index 6f5ca974..00000000 --- a/src/kem/ntru/ntruhrss701/avx2/poly_rq_to_s3.s +++ /dev/null @@ -1,1116 +0,0 @@ -.data -.p2align 5 -mask_modq: -.word 8191 -.word 8191 -.word 8191 -.word 8191 -.word 8191 -.word 8191 -.word 8191 -.word 8191 -.word 8191 -.word 8191 -.word 8191 -.word 8191 -.word 8191 -.word 8191 -.word 8191 -.word 8191 -mask_ff: -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -mask_f: -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -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 -.text -.global PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_to_S3 -.global _PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_to_S3 -PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_to_S3: -_PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_to_S3: -vmovdqa mask_modq(%rip), %ymm6 -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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %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 %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, %ymm1, %ymm14 -vpxor %ymm14, %ymm0, %ymm1 -vmovdqa %ymm1, 1376(%rdi) -ret diff --git a/src/kem/ntru/ntruhrss701/avx2/poly_s3_inv.c b/src/kem/ntru/ntruhrss701/avx2/poly_s3_inv.c deleted file mode 100644 index 4acd5a89..00000000 --- a/src/kem/ntru/ntruhrss701/avx2/poly_s3_inv.c +++ /dev/null @@ -1,569 +0,0 @@ -#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/src/kem/ntru/ntruhrss701/avx2/sample.c b/src/kem/ntru/ntruhrss701/avx2/sample.c deleted file mode 100644 index bc15a9ad..00000000 --- a/src/kem/ntru/ntruhrss701/avx2/sample.c +++ /dev/null @@ -1,46 +0,0 @@ -#include "sample.h" - -void PQCLEAN_NTRUHRSS701_AVX2_sample_fg(poly *f, poly *g, const unsigned char uniformbytes[NTRU_SAMPLE_FG_BYTES]) { - PQCLEAN_NTRUHRSS701_AVX2_sample_iid_plus(f, uniformbytes); - PQCLEAN_NTRUHRSS701_AVX2_sample_iid_plus(g, uniformbytes + NTRU_SAMPLE_IID_BYTES); - -} - -void PQCLEAN_NTRUHRSS701_AVX2_sample_rm(poly *r, poly *m, const unsigned char uniformbytes[NTRU_SAMPLE_RM_BYTES]) { - PQCLEAN_NTRUHRSS701_AVX2_sample_iid(r, uniformbytes); - PQCLEAN_NTRUHRSS701_AVX2_sample_iid(m, uniformbytes + NTRU_SAMPLE_IID_BYTES); - -} - -void PQCLEAN_NTRUHRSS701_AVX2_sample_iid_plus(poly *r, const unsigned char uniformbytes[NTRU_SAMPLE_IID_BYTES]) { - /* Sample r using PQCLEAN_NTRUHRSS701_AVX2_sample_iid then conditionally flip */ - /* signs of even index coefficients so that >= 0. */ - - int i; - uint16_t s = 0; - - PQCLEAN_NTRUHRSS701_AVX2_sample_iid(r, uniformbytes); - - /* Map {0,1,2} -> {0, 1, 2^16 - 1} */ - for (i = 0; i < NTRU_N - 1; i++) { - r->coeffs[i] = r->coeffs[i] | (-(r->coeffs[i] >> 1)); - } - - /* s = . (r[n-1] = 0) */ - for (i = 0; i < NTRU_N - 1; i++) { - s += (uint16_t)((uint32_t)r->coeffs[i + 1] * (uint32_t)r->coeffs[i]); - } - - /* Extract sign of s (sign(0) = 1) */ - s = 1 | (-(s >> 15)); - - for (i = 0; i < NTRU_N; i += 2) { - r->coeffs[i] = (uint16_t)((uint32_t)s * (uint32_t)r->coeffs[i]); - } - - /* Map {0,1,2^16-1} -> {0, 1, 2} */ - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = 3 & (r->coeffs[i] ^ (r->coeffs[i] >> 15)); - } -} - diff --git a/src/kem/ntru/ntruhrss701/avx2/sample.h b/src/kem/ntru/ntruhrss701/avx2/sample.h deleted file mode 100644 index 753cd18d..00000000 --- a/src/kem/ntru/ntruhrss701/avx2/sample.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef SAMPLE_H -#define SAMPLE_H - -#include "params.h" -#include "poly.h" - - -void PQCLEAN_NTRUHRSS701_AVX2_sample_fg(poly *f, poly *g, const unsigned char uniformbytes[NTRU_SAMPLE_FG_BYTES]); -void PQCLEAN_NTRUHRSS701_AVX2_sample_rm(poly *r, poly *m, const unsigned char uniformbytes[NTRU_SAMPLE_RM_BYTES]); - -void PQCLEAN_NTRUHRSS701_AVX2_sample_iid(poly *r, const unsigned char uniformbytes[NTRU_SAMPLE_IID_BYTES]); - - -void PQCLEAN_NTRUHRSS701_AVX2_sample_iid_plus(poly *r, const unsigned char uniformbytes[NTRU_SAMPLE_IID_BYTES]); - -#endif diff --git a/src/kem/ntru/ntruhrss701/avx2/sample_iid.c b/src/kem/ntru/ntruhrss701/avx2/sample_iid.c deleted file mode 100644 index ecb00835..00000000 --- a/src/kem/ntru/ntruhrss701/avx2/sample_iid.c +++ /dev/null @@ -1,21 +0,0 @@ -#include - -#include "sample.h" - -extern void PQCLEAN_NTRUHRSS701_AVX2_vec32_sample_iid(poly *r, const unsigned char uniformbytes[PAD32(NTRU_SAMPLE_IID_BYTES)]); - -void PQCLEAN_NTRUHRSS701_AVX2_sample_iid(poly *r, const unsigned char uniformbytes[NTRU_SAMPLE_IID_BYTES]) { - int i; - union { /* align to 32 byte boundary for vmovdqa */ - unsigned char b[PAD32(NTRU_SAMPLE_IID_BYTES)]; - __m256i b_x32[PAD32(NTRU_SAMPLE_IID_BYTES) / 32]; - } buffer; - - for (i = 0; i < NTRU_SAMPLE_IID_BYTES; i++) { - buffer.b[i] = uniformbytes[i]; - } - for (i = NTRU_SAMPLE_IID_BYTES; i < PAD32(NTRU_SAMPLE_IID_BYTES); i++) { - buffer.b[i] = 0; - } - PQCLEAN_NTRUHRSS701_AVX2_vec32_sample_iid(r, buffer.b); -} diff --git a/src/kem/ntru/ntruhrss701/avx2/square_12_701_shufbytes.s b/src/kem/ntru/ntruhrss701/avx2/square_12_701_shufbytes.s deleted file mode 100644 index e92268d9..00000000 --- a/src/kem/ntru/ntruhrss701/avx2/square_12_701_shufbytes.s +++ /dev/null @@ -1,7204 +0,0 @@ -.data -.p2align 5 -mask_0_1: -.byte 0 -.byte 15 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 0 -.byte 15 -.byte 14 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 1 -.byte 255 - -mask_1_1: -.word 0x201 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x4 - -mask_2_1: -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x1008 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 - -mask_3_1: -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_4_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_5_1: -.byte 255 -.byte 12 -.byte 14 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 1 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 - -mask_6_1: -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 - -mask_7_1: -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 - -mask_8_1: -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_9_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_10_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_11_1: -.byte 0 -.byte 15 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 6 -.byte 8 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 2 -.byte 1 -.byte 15 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 9 -.byte 11 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 1 -.byte 255 - -mask_12_1: -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x800 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 - -mask_13_1: -.word 0x4020 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x80 - -mask_14_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_15_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_16_1: -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_17_1: -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 5 -.byte 7 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 2 -.byte 255 -.byte 255 - -mask_18_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 - -mask_19_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x4000 -.word 0x0 - -mask_20_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_21_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_22_1: -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_23_1: -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 10 -.byte 12 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 0 -.byte 15 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 3 - -mask_24_1: -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x201 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x8000 - -mask_25_1: -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 - -mask_26_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_27_1: -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_28_1: -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_29_1: -.byte 255 -.byte 255 -.byte 1 -.byte 15 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 9 -.byte 11 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 3 -.byte 255 -.byte 0 -.byte 14 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 4 -.byte 255 - -mask_30_1: -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x40 - -mask_31_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 - -mask_32_1: -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_33_1: -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_34_1: -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_35_1: -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 4 -.byte 255 -.byte 0 -.byte 15 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 8 -.byte 255 - -mask_36_1: -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x1 - -mask_37_1: -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x4020 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 - -mask_38_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_39_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_40_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_41_1: -.byte 5 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 0 -.byte 15 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 6 -.byte 3 -.byte 5 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 5 - -mask_42_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x804 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 - -mask_43_1: -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x800 - -mask_44_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_45_1: -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_46_1: -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_47_1: -.byte 7 -.byte 255 -.byte 3 -.byte 5 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 0 -.byte 14 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 7 -.byte 9 -.byte 8 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 8 -.byte 255 - -mask_48_1: -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x4 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 - -mask_49_1: -.word 0x8 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x20 - -mask_50_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_51_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_52_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_53_1: -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 6 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 0 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 9 -.byte 255 -.byte 255 - -mask_54_1: -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 - -mask_55_1: -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x1000 -.word 0x0 - -mask_56_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_57_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_58_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_59_1: -.byte 255 -.byte 9 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 11 -.byte 13 -.byte 255 -.byte 9 -.byte 8 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 10 - -mask_60_1: -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x2000 - -mask_61_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x4000 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 - -mask_62_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_63_1: -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_64_1: -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_65_1: -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 0 -.byte 13 -.byte 255 -.byte 255 -.byte 11 -.byte 255 - -mask_66_1: -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x4 -.word 0x0 -.word 0x10 - -mask_67_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 - -mask_68_1: -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_69_1: -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_70_1: -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 0 -.byte 2 -.byte 255 -.byte 0 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 3 -.byte 5 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 - -mask_71_1: -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x10 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 - -mask_72_1: -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_73_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_74_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_75_1: -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_76_1: -.byte 12 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 5 -.byte 7 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 1 -.byte 15 -.byte 255 -.byte 255 -.byte 13 -.byte 11 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 4 -.byte 6 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 12 - -mask_77_1: -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 - -mask_78_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x200 - -mask_79_1: -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_80_1: -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_81_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_82_1: -.byte 14 -.byte 255 -.byte 10 -.byte 12 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 15 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 0 -.byte 15 -.byte 255 - -mask_83_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x1 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 - -mask_84_1: -.word 0x2 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x8 - -mask_85_1: -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_86_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_87_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_88_1: -.byte 255 -.byte 13 -.byte 255 -.byte 9 -.byte 11 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 12 -.byte 255 -.byte 8 -.byte 10 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 - -mask_89_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_90_1: -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 - -mask_91_1: -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_92_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_93_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_94_1: -.byte 15 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 0 -.byte 2 -.byte 255 -.byte 15 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 1 -.byte 255 -.byte 255 - -mask_95_1: -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 - -mask_96_1: -.word 0x10 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x2000 -.word 0x0 - -mask_97_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_98_1: -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_99_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_100_1: -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 0 - -mask_101_1: -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x800 - -mask_102_1: -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 - -mask_103_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_104_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_105_1: -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 4 -.byte 6 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 3 -.byte 255 - -mask_106_1: -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x20 - -mask_107_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 - -mask_108_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_109_1: -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_110_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_111_1: -.byte 255 -.byte 1 -.byte 15 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 9 -.byte 11 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 1 -.byte 255 -.byte 0 -.byte 15 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 - -mask_112_1: -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x2000 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x1000 -.word 0x0 - -mask_113_1: -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 - -mask_114_1: -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_115_1: -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_116_1: -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_117_1: -.byte 255 -.byte 3 -.byte 255 -.byte 0 -.byte 14 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 4 -.byte 3 -.byte 255 -.byte 255 -.byte 0 -.byte 15 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 4 - -mask_118_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x4000 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 - -mask_119_1: -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x10 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x400 - -mask_120_1: -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_121_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_122_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x800 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_123_1: -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 0 -.byte 15 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 12 -.byte 14 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 5 -.byte 255 - -mask_124_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x2 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 - -mask_125_1: -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x2 - -mask_126_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_127_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_128_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_129_1: -.byte 255 -.byte 3 -.byte 5 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 - -mask_130_1: -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 - -mask_131_1: -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x800 -.word 0x0 - -mask_132_1: -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_133_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_134_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_135_1: -.byte 6 -.byte 255 -.byte 2 -.byte 4 -.byte 255 -.byte 0 -.byte 15 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 6 -.byte 8 -.byte 5 -.byte 255 -.byte 1 -.byte 3 -.byte 255 -.byte 0 -.byte 14 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 7 - -mask_136_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x200 - -mask_137_1: -.word 0x4 -.word 0x0 -.word 0x2000 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 - -mask_138_1: -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x80 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_139_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_140_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_141_1: -.byte 9 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 0 -.byte 255 -.byte 15 -.byte 255 -.byte 11 -.byte 13 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 10 -.byte 255 - -mask_142_1: -.word 0x2 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 - -mask_143_1: -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 - -mask_144_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_145_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_146_1: -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_147_1: -.byte 6 -.byte 8 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 10 -.byte 12 -.byte 255 -.byte 8 -.byte 255 -.byte 7 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 1 -.byte 15 -.byte 255 -.byte 0 -.byte 13 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 7 - -mask_148_1: -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x100 -.word 0x0 -.word 0x400 -.word 0x0 - -mask_149_1: -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x4000 - -mask_150_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_151_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_152_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_153_1: -.byte 9 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 0 -.byte 2 -.byte 255 -.byte 0 -.byte 13 -.byte 255 -.byte 255 -.byte 11 -.byte 10 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 3 -.byte 5 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 11 - -mask_154_1: -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x400 -.word 0x0 -.word 0x1000 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 - -mask_155_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x100 - -mask_156_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_157_1: -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_158_1: -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_159_1: -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 11 -.byte 255 -.byte 255 - -mask_160_1: -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 - -mask_161_1: -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 - -mask_162_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_163_1: -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_164_1: -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 4 -.byte 6 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 7 -.byte 9 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 0 -.byte 15 -.byte 255 -.byte 255 - -mask_165_1: -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_166_1: -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x201 -.word 0x0 - -mask_167_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_168_1: -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_169_1: -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_170_1: -.byte 13 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 3 -.byte 5 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 12 -.byte 255 -.byte 8 -.byte 10 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 - -mask_171_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x80 - -mask_172_1: -.word 0x1 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 - -mask_173_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_174_1: -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_175_1: -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_176_1: -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 8 -.byte 10 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 13 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 - -mask_177_1: -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 - -mask_178_1: -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 - -mask_179_1: -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_180_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_181_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_182_1: -.byte 13 -.byte 15 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 0 -.byte 15 -.byte 12 -.byte 14 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 14 - -mask_183_1: -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 - -mask_184_1: -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x804 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x1000 - -mask_185_1: -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_186_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_187_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_188_1: -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 4 -.byte 6 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 - -mask_189_1: -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 - -mask_190_1: -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 - -mask_191_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_192_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_193_1: -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_194_1: -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 3 -.byte 5 -.byte 255 -.byte 1 -.byte 255 -.byte 0 -.byte 15 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 0 -.byte 15 - -mask_195_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x1008 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 - -mask_196_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x8040 - -mask_197_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_198_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_199_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_200_1: -.byte 255 -.byte 255 -.byte 0 -.byte 15 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 8 -.byte 10 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 4 -.byte 255 - -mask_201_1: -.word 0x0 -.word 0x4020 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 - -mask_202_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 - -mask_203_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_204_1: -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_205_1: -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_206_1: -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 12 -.byte 14 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 2 - -mask_207_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x4000 - -mask_208_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 - -mask_209_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_210_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_211_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_212_1: -.byte 4 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 12 -.byte 14 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 5 -.byte 4 -.byte 255 -.byte 0 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 - -mask_213_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 - -mask_214_1: -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_215_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_216_1: -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_217_1: -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_218_1: -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 3 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 6 -.byte 255 -.byte 255 - -mask_219_1: -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x8000 -.word 0x0 - -mask_220_1: -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 - -mask_221_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_222_1: -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_223_1: -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_224_1: -.byte 255 -.byte 5 -.byte 255 -.byte 1 -.byte 3 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 5 -.byte 4 -.byte 6 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 - -mask_225_1: -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_226_1: -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 - -mask_227_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_228_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_229_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_230_1: -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 1 -.byte 15 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 7 -.byte 255 - -mask_231_1: -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 - -mask_232_1: -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x10 - -mask_233_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_234_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_235_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_236_1: -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 1 -.byte 15 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 9 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_237_1: -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_238_1: -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_239_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_240_1: -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_241_1: -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_242_1: -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 9 - -mask_243_1: -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x1000 - -mask_244_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 - -mask_245_1: -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_246_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_247_1: -.byte 11 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_248_1: -.word 0x10 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_249_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_250_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_251_1: -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_252_1: -.word 0x2 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_253_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 3 -.byte 5 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 2 -.byte 4 -.byte 255 -.byte 0 -.byte 15 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 - -mask_254_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 - -mask_255_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x2000 -.word 0x40 -.word 0x0 -.word 0x0 - -mask_256_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_257_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_258_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_259_1: -.byte 255 -.byte 12 -.byte 255 -.byte 8 -.byte 10 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_260_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 - -mask_261_1: -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_262_1: -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_263_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_264_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_265_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 6 -.byte 8 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 - -mask_266_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 - -mask_267_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 - -mask_268_1: -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_269_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_270_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_271_1: -.byte 255 -.byte 12 -.byte 14 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 0 - -mask_272_1: -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x400 - -mask_273_1: -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 - -mask_274_1: -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_275_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_276_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_277_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 0 -.byte 2 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 1 -.byte 255 - -mask_278_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x2 - -mask_279_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 - -mask_280_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_281_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_282_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -.text -.global PQCLEAN_NTRUHRSS701_AVX2_square_12_701 -.global _PQCLEAN_NTRUHRSS701_AVX2_square_12_701 -PQCLEAN_NTRUHRSS701_AVX2_square_12_701: -_PQCLEAN_NTRUHRSS701_AVX2_square_12_701: -vmovdqa 0(%rsi), %ymm0 -vpshufb mask_0_1(%rip), %ymm0, %ymm5 -vpand mask_1_1(%rip), %ymm5, %ymm1 -vpand mask_2_1(%rip), %ymm5, %ymm2 -vpshufb mask_3_1(%rip), %ymm0, %ymm5 -vpand mask_4_1(%rip), %ymm5, %ymm3 -vpermq $78, %ymm0, %ymm8 -vpshufb mask_5_1(%rip), %ymm8, %ymm5 -vpand mask_6_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_7_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_8_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_9_1(%rip), %ymm8, %ymm5 -vpand mask_10_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm0, %ymm5 -vpsllq $1, %ymm0, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_11_1(%rip), %ymm6, %ymm5 -vpand mask_12_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_13_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_14_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_15_1(%rip), %ymm6, %ymm5 -vpand mask_16_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_17_1(%rip), %ymm8, %ymm5 -vpand mask_18_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_19_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_20_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_21_1(%rip), %ymm8, %ymm5 -vpand mask_22_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm6, %ymm5 -vpsllq $1, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_23_1(%rip), %ymm7, %ymm5 -vpand mask_24_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_25_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_26_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_27_1(%rip), %ymm7, %ymm5 -vpand mask_28_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_29_1(%rip), %ymm8, %ymm5 -vpand mask_30_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_31_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_32_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_33_1(%rip), %ymm8, %ymm5 -vpand mask_34_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm7, %ymm5 -vpsllq $1, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_35_1(%rip), %ymm6, %ymm5 -vpand mask_36_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_37_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_38_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_39_1(%rip), %ymm6, %ymm5 -vpand mask_40_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_41_1(%rip), %ymm8, %ymm5 -vpand mask_42_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_43_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_44_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_45_1(%rip), %ymm8, %ymm5 -vpand mask_46_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm6, %ymm5 -vpsllq $1, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_47_1(%rip), %ymm7, %ymm5 -vpand mask_48_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_49_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_50_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_51_1(%rip), %ymm7, %ymm5 -vpand mask_52_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_53_1(%rip), %ymm8, %ymm5 -vpand mask_54_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_55_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_56_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_57_1(%rip), %ymm8, %ymm5 -vpand mask_58_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm7, %ymm5 -vpsllq $1, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_59_1(%rip), %ymm6, %ymm5 -vpand mask_60_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_61_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_62_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_63_1(%rip), %ymm6, %ymm5 -vpand mask_64_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_65_1(%rip), %ymm8, %ymm5 -vpand mask_66_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_67_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_68_1(%rip), %ymm8, %ymm5 -vpand mask_69_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm6, %ymm5 -vpsllq $1, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_70_1(%rip), %ymm7, %ymm5 -vpand mask_71_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_72_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_73_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_74_1(%rip), %ymm7, %ymm5 -vpand mask_75_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_76_1(%rip), %ymm8, %ymm5 -vpand mask_77_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_78_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_79_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_80_1(%rip), %ymm8, %ymm5 -vpand mask_81_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm7, %ymm5 -vpsllq $1, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_82_1(%rip), %ymm6, %ymm5 -vpand mask_83_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_84_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_85_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_86_1(%rip), %ymm6, %ymm5 -vpand mask_87_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_88_1(%rip), %ymm8, %ymm5 -vpand mask_89_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_90_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_91_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_92_1(%rip), %ymm8, %ymm5 -vpand mask_93_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vmovdqa 32(%rsi), %ymm0 -vpshufb mask_94_1(%rip), %ymm0, %ymm5 -vpand mask_95_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_96_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_97_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_98_1(%rip), %ymm0, %ymm5 -vpand mask_99_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm8 -vpshufb mask_100_1(%rip), %ymm8, %ymm5 -vpand mask_101_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_102_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_103_1(%rip), %ymm8, %ymm5 -vpand mask_104_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm0, %ymm6 -vpshufb mask_105_1(%rip), %ymm6, %ymm5 -vpand mask_106_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_107_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_108_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_109_1(%rip), %ymm6, %ymm5 -vpand mask_110_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_111_1(%rip), %ymm8, %ymm5 -vpand mask_112_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_113_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_114_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_115_1(%rip), %ymm8, %ymm5 -vpand mask_116_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $62, %ymm0, %ymm5 -vpsllq $2, %ymm0, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_117_1(%rip), %ymm6, %ymm5 -vpand mask_118_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_119_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_120_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_121_1(%rip), %ymm6, %ymm5 -vpand mask_122_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_123_1(%rip), %ymm8, %ymm5 -vpand mask_124_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_125_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_126_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_127_1(%rip), %ymm8, %ymm5 -vpand mask_128_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm6, %ymm5 -vpsllq $1, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_129_1(%rip), %ymm7, %ymm5 -vpand mask_130_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_131_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_132_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_133_1(%rip), %ymm7, %ymm5 -vpand mask_134_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_135_1(%rip), %ymm8, %ymm5 -vpand mask_136_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_137_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_138_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_139_1(%rip), %ymm8, %ymm5 -vpand mask_140_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm7, %ymm5 -vpsllq $1, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_141_1(%rip), %ymm6, %ymm5 -vpand mask_142_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_143_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_144_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_145_1(%rip), %ymm6, %ymm5 -vpand mask_146_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_147_1(%rip), %ymm8, %ymm5 -vpand mask_148_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_149_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_150_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_151_1(%rip), %ymm8, %ymm5 -vpand mask_152_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm6, %ymm5 -vpsllq $1, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_153_1(%rip), %ymm7, %ymm5 -vpand mask_154_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_155_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_156_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_157_1(%rip), %ymm7, %ymm5 -vpand mask_158_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_159_1(%rip), %ymm8, %ymm5 -vpand mask_160_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_161_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_162_1(%rip), %ymm8, %ymm5 -vpand mask_163_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm7, %ymm5 -vpsllq $1, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_164_1(%rip), %ymm6, %ymm5 -vpand mask_165_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_166_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_167_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_168_1(%rip), %ymm6, %ymm5 -vpand mask_169_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_170_1(%rip), %ymm8, %ymm5 -vpand mask_171_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_172_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_173_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_174_1(%rip), %ymm8, %ymm5 -vpand mask_175_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm6, %ymm5 -vpsllq $1, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_176_1(%rip), %ymm7, %ymm5 -vpand mask_177_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_178_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_179_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_180_1(%rip), %ymm7, %ymm5 -vpand mask_181_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_182_1(%rip), %ymm8, %ymm5 -vpand mask_183_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_184_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_185_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_186_1(%rip), %ymm8, %ymm5 -vpand mask_187_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vmovdqa 64(%rsi), %ymm0 -vpshufb mask_188_1(%rip), %ymm0, %ymm5 -vpand mask_189_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_190_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_191_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_192_1(%rip), %ymm0, %ymm5 -vpand mask_193_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm8 -vpshufb mask_194_1(%rip), %ymm8, %ymm5 -vpand mask_195_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_196_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_197_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_198_1(%rip), %ymm8, %ymm5 -vpand mask_199_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm0, %ymm6 -vpshufb mask_200_1(%rip), %ymm6, %ymm5 -vpand mask_201_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_202_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_203_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_204_1(%rip), %ymm6, %ymm5 -vpand mask_205_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_206_1(%rip), %ymm8, %ymm5 -vpand mask_207_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_208_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_209_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_210_1(%rip), %ymm8, %ymm5 -vpand mask_211_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $2, %ymm0, %ymm6 -vpshufb mask_212_1(%rip), %ymm6, %ymm5 -vpand mask_213_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_214_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_215_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_216_1(%rip), %ymm6, %ymm5 -vpand mask_217_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_218_1(%rip), %ymm8, %ymm5 -vpand mask_219_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_220_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_221_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_222_1(%rip), %ymm8, %ymm5 -vpand mask_223_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $3, %ymm0, %ymm6 -vpshufb mask_224_1(%rip), %ymm6, %ymm5 -vpand mask_225_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_226_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_227_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_228_1(%rip), %ymm6, %ymm5 -vpand mask_229_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_230_1(%rip), %ymm8, %ymm5 -vpand mask_231_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_232_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_233_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_234_1(%rip), %ymm8, %ymm5 -vpand mask_235_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $4, %ymm0, %ymm6 -vpshufb mask_236_1(%rip), %ymm6, %ymm5 -vpand mask_237_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_238_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_239_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_240_1(%rip), %ymm6, %ymm5 -vpand mask_241_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_242_1(%rip), %ymm8, %ymm5 -vpand mask_243_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_244_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_245_1(%rip), %ymm8, %ymm5 -vpand mask_246_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $59, %ymm0, %ymm5 -vpsllq $5, %ymm0, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_247_1(%rip), %ymm6, %ymm5 -vpand mask_248_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_249_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_250_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_251_1(%rip), %ymm6, %ymm5 -vpand mask_252_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_253_1(%rip), %ymm8, %ymm5 -vpand mask_254_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_255_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_256_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_257_1(%rip), %ymm8, %ymm5 -vpand mask_258_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm6, %ymm5 -vpsllq $1, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_259_1(%rip), %ymm7, %ymm5 -vpand mask_260_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_261_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_262_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_263_1(%rip), %ymm7, %ymm5 -vpand mask_264_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_265_1(%rip), %ymm8, %ymm5 -vpand mask_266_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_267_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_268_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_269_1(%rip), %ymm8, %ymm5 -vpand mask_270_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm7, %ymm5 -vpsllq $1, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_271_1(%rip), %ymm6, %ymm5 -vpand mask_272_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_273_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_274_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_275_1(%rip), %ymm6, %ymm5 -vpand mask_276_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_277_1(%rip), %ymm8, %ymm5 -vpand mask_278_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_279_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_280_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_281_1(%rip), %ymm8, %ymm5 -vpand mask_282_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vmovdqa %ymm1, 0(%rdi) -vmovdqa %ymm2, 32(%rdi) -vmovdqa %ymm3, 64(%rdi) -ret diff --git a/src/kem/ntru/ntruhrss701/avx2/square_15_701_shufbytes.s b/src/kem/ntru/ntruhrss701/avx2/square_15_701_shufbytes.s deleted file mode 100644 index 27a16f04..00000000 --- a/src/kem/ntru/ntruhrss701/avx2/square_15_701_shufbytes.s +++ /dev/null @@ -1,12747 +0,0 @@ -.data -.p2align 5 -mask_0_1: -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 5 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 5 -.byte 255 -.byte 255 - -mask_1_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 - -mask_2_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 - -mask_3_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_4_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 11 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 11 -.byte 255 -.byte 255 - -mask_5_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 - -mask_6_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 - -mask_7_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_8_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_9_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_10_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 - -mask_11_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_12_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 1 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 3 -.byte 255 -.byte 255 - -mask_13_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 - -mask_14_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 - -mask_15_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_16_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 7 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 9 -.byte 255 -.byte 255 - -mask_17_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 - -mask_18_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 - -mask_19_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_20_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 15 -.byte 255 -.byte 255 - -mask_21_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 - -mask_22_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 - -mask_23_1: -.byte 255 -.byte 0 -.byte 255 -.byte 2 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 5 -.byte 0 -.byte 13 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_24_1: -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_25_1: -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_26_1: -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_27_1: -.byte 255 -.byte 6 -.byte 255 -.byte 8 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_28_1: -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_29_1: -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_30_1: -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_31_1: -.byte 255 -.byte 12 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_32_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_33_1: -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_34_1: -.byte 1 -.byte 255 -.byte 9 -.byte 4 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 2 -.byte 255 -.byte 4 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_35_1: -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_36_1: -.word 0x0 -.word 0x180 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_37_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_38_1: -.byte 7 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 8 -.byte 255 -.byte 10 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_39_1: -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_40_1: -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_41_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_42_1: -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_43_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_44_1: -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_45_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 6 -.byte 1 -.byte 14 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 4 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_46_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x280 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_47_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x180 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_48_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_49_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 10 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_50_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_51_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_52_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_53_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_54_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_55_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_56_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 2 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 2 -.byte 255 -.byte 10 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_57_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x1 -.word 0x0 -.word 0x0 - -mask_58_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_59_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_60_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 8 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_61_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_62_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_63_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_64_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_65_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_66_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_67_1: -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 5 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 3 -.byte 255 -.byte 5 - -mask_68_1: -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 - -mask_69_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x280 -.word 0x0 - -mask_70_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_71_1: -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 11 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 11 - -mask_72_1: -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 - -mask_73_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 - -mask_74_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_75_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_76_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_77_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_78_1: -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 5 -.byte 255 -.byte 1 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 3 - -mask_79_1: -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 - -mask_80_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 - -mask_81_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_82_1: -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 9 - -mask_83_1: -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 - -mask_84_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 - -mask_85_1: -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 15 - -mask_86_1: -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 - -mask_87_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 - -mask_88_1: -.byte 255 -.byte 255 -.byte 11 -.byte 6 -.byte 255 -.byte 2 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 5 -.byte 255 -.byte 7 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_89_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_90_1: -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_91_1: -.word 0x0 -.word 0x180 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_92_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 11 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_93_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_94_1: -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_95_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_96_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_97_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_98_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_99_1: -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 3 -.byte 255 -.byte 11 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 2 -.byte 15 -.byte 4 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_100_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x280 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_101_1: -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_102_1: -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_103_1: -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_104_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_105_1: -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_106_1: -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_107_1: -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_108_1: -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_109_1: -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_110_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 0 -.byte 255 -.byte 0 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 4 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_111_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x108 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 - -mask_112_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_113_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_114_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 6 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 10 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_115_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 - -mask_116_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_117_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_118_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_119_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 - -mask_120_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_121_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_122_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 2 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 0 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_123_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 - -mask_124_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_125_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_126_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 8 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 2 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_127_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 - -mask_128_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_129_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_130_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_131_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_132_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_133_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_134_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_135_1: -.byte 255 -.byte 3 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 3 -.byte 255 -.byte 1 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 3 - -mask_136_1: -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_137_1: -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x180 - -mask_138_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_139_1: -.byte 255 -.byte 9 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 7 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 - -mask_140_1: -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_141_1: -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 - -mask_142_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_143_1: -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_144_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_145_1: -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_146_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_147_1: -.byte 255 -.byte 5 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 12 -.byte 5 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 - -mask_148_1: -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_149_1: -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 - -mask_150_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_151_1: -.byte 255 -.byte 11 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 - -mask_152_1: -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_153_1: -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 - -mask_154_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_155_1: -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 - -mask_156_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_157_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 - -mask_158_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 13 -.byte 2 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 5 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_159_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_160_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x280 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_161_1: -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_162_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 11 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_163_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_164_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_165_1: -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_166_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_167_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_168_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_169_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 3 -.byte 255 -.byte 5 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 9 -.byte 4 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_170_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x180 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_171_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_172_1: -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_173_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 9 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_174_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_175_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_176_1: -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_177_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_178_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_179_1: -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_180_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 8 -.byte 3 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 - -mask_181_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 - -mask_182_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 - -mask_183_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_184_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 - -mask_185_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 - -mask_186_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 - -mask_187_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_188_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 - -mask_189_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 - -mask_190_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 - -mask_191_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_192_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 4 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 12 -.byte 1 -.byte 255 -.byte 255 - -mask_193_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x280 -.word 0x0 - -mask_194_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 - -mask_195_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_196_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 10 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 - -mask_197_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 - -mask_198_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 - -mask_199_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_200_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_201_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_202_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_203_1: -.byte 3 -.byte 255 -.byte 5 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 3 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_204_1: -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_205_1: -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_206_1: -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_207_1: -.byte 9 -.byte 255 -.byte 11 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 9 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_208_1: -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_209_1: -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_210_1: -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_211_1: -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_212_1: -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_213_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_214_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_215_1: -.byte 5 -.byte 255 -.byte 1 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 1 -.byte 255 -.byte 1 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_216_1: -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_217_1: -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_218_1: -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x280 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_219_1: -.byte 11 -.byte 255 -.byte 7 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 7 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_220_1: -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_221_1: -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_222_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_223_1: -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_224_1: -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_225_1: -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_226_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 2 -.byte 255 -.byte 4 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 1 -.byte 255 -.byte 9 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_227_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x180 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_228_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_229_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_230_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 10 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 7 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_231_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_232_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_233_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_234_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_235_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_236_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_237_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 5 -.byte 0 -.byte 13 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 4 -.byte 255 -.byte 0 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_238_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_239_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_240_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x180 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_241_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_242_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_243_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_244_1: -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_245_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_246_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_247_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_248_1: -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_249_1: -.byte 14 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 0 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 2 -.byte 255 - -mask_250_1: -.word 0x280 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 - -mask_251_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 - -mask_252_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_253_1: -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 8 -.byte 255 - -mask_254_1: -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 - -mask_255_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 - -mask_256_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_257_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 14 -.byte 255 - -mask_258_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 - -mask_259_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 - -mask_260_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_261_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_262_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_263_1: -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 4 -.byte 255 -.byte 0 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 6 -.byte 1 - -mask_264_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x180 - -mask_265_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 - -mask_266_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_267_1: -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 10 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 12 -.byte 255 - -mask_268_1: -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 - -mask_269_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 - -mask_270_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_271_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_272_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_273_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_274_1: -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 5 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 1 -.byte 14 -.byte 3 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_275_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_276_1: -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x280 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_277_1: -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x180 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_278_1: -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 11 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_279_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_280_1: -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_281_1: -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_282_1: -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_283_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_284_1: -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_285_1: -.byte 255 -.byte 10 -.byte 5 -.byte 255 -.byte 1 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 1 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_286_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_287_1: -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_288_1: -.word 0x8000 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_289_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 7 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_290_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_291_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_292_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_293_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_294_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_295_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_296_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 2 -.byte 15 -.byte 4 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 1 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_297_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 - -mask_298_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_299_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_300_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 7 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_301_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 - -mask_302_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_303_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_304_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_305_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 - -mask_306_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_307_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 5 -.byte 255 -.byte 7 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 11 -.byte 6 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_308_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 - -mask_309_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x180 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_310_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_311_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 11 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_312_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 - -mask_313_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_314_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_315_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_316_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 - -mask_317_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_318_1: -.byte 0 -.byte 255 -.byte 0 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 0 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 - -mask_319_1: -.word 0x0 -.word 0x108 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_320_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 - -mask_321_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_322_1: -.byte 6 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 2 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 - -mask_323_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_324_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 - -mask_325_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_326_1: -.byte 12 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 - -mask_327_1: -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_328_1: -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 - -mask_329_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_330_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_331_1: -.byte 2 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 4 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 - -mask_332_1: -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_333_1: -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 - -mask_334_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_335_1: -.byte 8 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 10 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 - -mask_336_1: -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_337_1: -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 - -mask_338_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_339_1: -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_340_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_341_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_342_1: -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 3 -.byte 255 -.byte 5 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 8 -.byte 3 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_343_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_344_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x180 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_345_1: -.word 0x0 -.word 0x2000 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_346_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 11 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_347_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_348_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_349_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_350_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_351_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_352_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_353_1: -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 12 -.byte 1 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 1 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_354_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_355_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_356_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_357_1: -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 7 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_358_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_359_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_360_1: -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_361_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_362_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_363_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_364_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 4 -.byte 255 -.byte 0 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 - -mask_365_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 - -mask_366_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_367_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x280 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_368_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 6 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 - -mask_369_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 - -mask_370_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_371_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_372_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_373_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_374_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_375_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 - -mask_376_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 - -mask_377_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 - -mask_378_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_379_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 - -mask_380_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 - -mask_381_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 - -mask_382_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_383_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 - -mask_384_1: -.byte 255 -.byte 8 -.byte 3 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 0 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 - -mask_385_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_386_1: -.word 0x8000 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 - -mask_387_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_388_1: -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_389_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_390_1: -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_391_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_392_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_393_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_394_1: -.byte 255 -.byte 4 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 4 -.byte 255 -.byte 12 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 - -mask_395_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x280 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_396_1: -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 - -mask_397_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_398_1: -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 - -mask_399_1: -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_400_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 - -mask_401_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 - -mask_402_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 - -mask_403_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 1 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 5 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_404_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_405_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_406_1: -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_407_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 7 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_408_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_409_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_410_1: -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_411_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_412_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_413_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_414_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 3 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 3 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_415_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_416_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_417_1: -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_418_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 9 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_419_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_420_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_421_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_422_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_423_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_424_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_425_1: -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 4 -.byte 255 -.byte 6 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 5 -.byte 0 -.byte 255 - -mask_426_1: -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x1 - -mask_427_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 - -mask_428_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x180 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_429_1: -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_430_1: -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_431_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_432_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_433_1: -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_434_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_435_1: -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 2 -.byte 255 -.byte 4 -.byte 255 - -mask_436_1: -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 - -mask_437_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x2 -.word 0x0 - -mask_438_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_439_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 10 -.byte 255 - -mask_440_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 - -mask_441_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 - -mask_442_1: -.byte 255 -.byte 0 -.byte 255 -.byte 2 -.byte 255 -.byte 10 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 0 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_443_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_444_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_445_1: -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_446_1: -.byte 255 -.byte 6 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_447_1: -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_448_1: -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_449_1: -.byte 255 -.byte 12 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_450_1: -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_451_1: -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_452_1: -.byte 255 -.byte 2 -.byte 255 -.byte 4 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 4 -.byte 255 -.byte 6 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_453_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x180 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_454_1: -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_455_1: -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_456_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 10 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_457_1: -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_458_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_459_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_460_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_461_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_462_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 1 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_463_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 - -mask_464_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_465_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_466_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 7 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_467_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 - -mask_468_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_469_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_470_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_471_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_472_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_473_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 1 -.byte 255 -.byte 3 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 3 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_474_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 - -mask_475_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_476_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x180 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_477_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 9 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_478_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 - -mask_479_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_480_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_481_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_482_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_483_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_484_1: -.byte 4 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 11 -.byte 6 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 5 - -mask_485_1: -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 - -mask_486_1: -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x180 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 - -mask_487_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_488_1: -.byte 10 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_489_1: -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_490_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_491_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_492_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_493_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_494_1: -.byte 255 -.byte 7 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 2 -.byte 15 - -mask_495_1: -.word 0x8000 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 - -mask_496_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x1 - -mask_497_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_498_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 - -mask_499_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_500_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 - -mask_501_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_502_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_503_1: -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 2 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 0 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_504_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_505_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_506_1: -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_507_1: -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 8 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_508_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_509_1: -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_510_1: -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_511_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_512_1: -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_513_1: -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 4 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 4 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_514_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_515_1: -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_516_1: -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_517_1: -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 10 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_518_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_519_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_520_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_521_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_522_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_523_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -.text -.global PQCLEAN_NTRUHRSS701_AVX2_square_15_701 -.global _PQCLEAN_NTRUHRSS701_AVX2_square_15_701 -PQCLEAN_NTRUHRSS701_AVX2_square_15_701: -_PQCLEAN_NTRUHRSS701_AVX2_square_15_701: -vmovdqa 0(%rsi), %ymm0 -vpshufb mask_0_1(%rip), %ymm0, %ymm5 -vpand mask_1_1(%rip), %ymm5, %ymm1 -vpand mask_2_1(%rip), %ymm5, %ymm2 -vpand mask_3_1(%rip), %ymm5, %ymm3 -vpshufb mask_4_1(%rip), %ymm0, %ymm5 -vpand mask_5_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_6_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_7_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_8_1(%rip), %ymm0, %ymm5 -vpand mask_9_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_10_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_11_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm8 -vpshufb mask_12_1(%rip), %ymm8, %ymm5 -vpand mask_13_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_14_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_15_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_16_1(%rip), %ymm8, %ymm5 -vpand mask_17_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_18_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_19_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_20_1(%rip), %ymm8, %ymm5 -vpand mask_21_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_22_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsrlq $63, %ymm0, %ymm5 -vpsllq $1, %ymm0, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_23_1(%rip), %ymm6, %ymm5 -vpand mask_24_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_25_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_26_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_27_1(%rip), %ymm6, %ymm5 -vpand mask_28_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_29_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_30_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_31_1(%rip), %ymm6, %ymm5 -vpand mask_32_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_33_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_34_1(%rip), %ymm8, %ymm5 -vpand mask_35_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_36_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_37_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_38_1(%rip), %ymm8, %ymm5 -vpand mask_39_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_40_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_41_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_42_1(%rip), %ymm8, %ymm5 -vpand mask_43_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_44_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm6, %ymm7 -vpshufb mask_45_1(%rip), %ymm7, %ymm5 -vpand mask_46_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_47_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_48_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_49_1(%rip), %ymm7, %ymm5 -vpand mask_50_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_51_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_52_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_53_1(%rip), %ymm7, %ymm5 -vpand mask_54_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_55_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_56_1(%rip), %ymm8, %ymm5 -vpand mask_57_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_58_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_59_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_60_1(%rip), %ymm8, %ymm5 -vpand mask_61_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_62_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_63_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_64_1(%rip), %ymm8, %ymm5 -vpand mask_65_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_66_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $2, %ymm6, %ymm7 -vpshufb mask_67_1(%rip), %ymm7, %ymm5 -vpand mask_68_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_69_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_70_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_71_1(%rip), %ymm7, %ymm5 -vpand mask_72_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_73_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_74_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_75_1(%rip), %ymm7, %ymm5 -vpand mask_76_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_77_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_78_1(%rip), %ymm8, %ymm5 -vpand mask_79_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_80_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_81_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_82_1(%rip), %ymm8, %ymm5 -vpand mask_83_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_84_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_85_1(%rip), %ymm8, %ymm5 -vpand mask_86_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_87_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsrlq $61, %ymm6, %ymm5 -vpsllq $3, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_88_1(%rip), %ymm7, %ymm5 -vpand mask_89_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_90_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_91_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_92_1(%rip), %ymm7, %ymm5 -vpand mask_93_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_94_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_95_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_96_1(%rip), %ymm7, %ymm5 -vpand mask_97_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_98_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_99_1(%rip), %ymm8, %ymm5 -vpand mask_100_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_101_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_102_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_103_1(%rip), %ymm8, %ymm5 -vpand mask_104_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_105_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_106_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_107_1(%rip), %ymm8, %ymm5 -vpand mask_108_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_109_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm7, %ymm6 -vpshufb mask_110_1(%rip), %ymm6, %ymm5 -vpand mask_111_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_112_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_113_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_114_1(%rip), %ymm6, %ymm5 -vpand mask_115_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_116_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_117_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_118_1(%rip), %ymm6, %ymm5 -vpand mask_119_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_120_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_121_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_122_1(%rip), %ymm8, %ymm5 -vpand mask_123_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_124_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_125_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_126_1(%rip), %ymm8, %ymm5 -vpand mask_127_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_128_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_129_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_130_1(%rip), %ymm8, %ymm5 -vpand mask_131_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_132_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_133_1(%rip), %ymm8, %ymm5 -vpand mask_134_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsllq $2, %ymm7, %ymm6 -vpshufb mask_135_1(%rip), %ymm6, %ymm5 -vpand mask_136_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_137_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_138_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_139_1(%rip), %ymm6, %ymm5 -vpand mask_140_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_141_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_142_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_143_1(%rip), %ymm6, %ymm5 -vpand mask_144_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_145_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_146_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_147_1(%rip), %ymm8, %ymm5 -vpand mask_148_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_149_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_150_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_151_1(%rip), %ymm8, %ymm5 -vpand mask_152_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_153_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_154_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_155_1(%rip), %ymm8, %ymm5 -vpand mask_156_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_157_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsrlq $61, %ymm7, %ymm5 -vpsllq $3, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_158_1(%rip), %ymm6, %ymm5 -vpand mask_159_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_160_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_161_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_162_1(%rip), %ymm6, %ymm5 -vpand mask_163_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_164_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_165_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_166_1(%rip), %ymm6, %ymm5 -vpand mask_167_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_168_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_169_1(%rip), %ymm8, %ymm5 -vpand mask_170_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_171_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_172_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_173_1(%rip), %ymm8, %ymm5 -vpand mask_174_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_175_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_176_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_177_1(%rip), %ymm8, %ymm5 -vpand mask_178_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_179_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vmovdqa 32(%rsi), %ymm0 -vpshufb mask_180_1(%rip), %ymm0, %ymm5 -vpand mask_181_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_182_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_183_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_184_1(%rip), %ymm0, %ymm5 -vpand mask_185_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_186_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_187_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_188_1(%rip), %ymm0, %ymm5 -vpand mask_189_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_190_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_191_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm8 -vpshufb mask_192_1(%rip), %ymm8, %ymm5 -vpand mask_193_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_194_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_195_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_196_1(%rip), %ymm8, %ymm5 -vpand mask_197_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_198_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_199_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_200_1(%rip), %ymm8, %ymm5 -vpand mask_201_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_202_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm0, %ymm6 -vpshufb mask_203_1(%rip), %ymm6, %ymm5 -vpand mask_204_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_205_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_206_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_207_1(%rip), %ymm6, %ymm5 -vpand mask_208_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_209_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_210_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_211_1(%rip), %ymm6, %ymm5 -vpand mask_212_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_213_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_214_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_215_1(%rip), %ymm8, %ymm5 -vpand mask_216_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_217_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_218_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_219_1(%rip), %ymm8, %ymm5 -vpand mask_220_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_221_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_222_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_223_1(%rip), %ymm8, %ymm5 -vpand mask_224_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_225_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsrlq $62, %ymm0, %ymm5 -vpsllq $2, %ymm0, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_226_1(%rip), %ymm6, %ymm5 -vpand mask_227_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_228_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_229_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_230_1(%rip), %ymm6, %ymm5 -vpand mask_231_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_232_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_233_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_234_1(%rip), %ymm6, %ymm5 -vpand mask_235_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_236_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_237_1(%rip), %ymm8, %ymm5 -vpand mask_238_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_239_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_240_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_241_1(%rip), %ymm8, %ymm5 -vpand mask_242_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_243_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_244_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_245_1(%rip), %ymm8, %ymm5 -vpand mask_246_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_247_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_248_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm6, %ymm7 -vpshufb mask_249_1(%rip), %ymm7, %ymm5 -vpand mask_250_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_251_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_252_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_253_1(%rip), %ymm7, %ymm5 -vpand mask_254_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_255_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_256_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_257_1(%rip), %ymm7, %ymm5 -vpand mask_258_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_259_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_260_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_261_1(%rip), %ymm7, %ymm5 -vpand mask_262_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_263_1(%rip), %ymm8, %ymm5 -vpand mask_264_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_265_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_266_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_267_1(%rip), %ymm8, %ymm5 -vpand mask_268_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_269_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_270_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_271_1(%rip), %ymm8, %ymm5 -vpand mask_272_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_273_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $2, %ymm6, %ymm7 -vpshufb mask_274_1(%rip), %ymm7, %ymm5 -vpand mask_275_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_276_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_277_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_278_1(%rip), %ymm7, %ymm5 -vpand mask_279_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_280_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_281_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_282_1(%rip), %ymm7, %ymm5 -vpand mask_283_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_284_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_285_1(%rip), %ymm8, %ymm5 -vpand mask_286_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_287_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_288_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_289_1(%rip), %ymm8, %ymm5 -vpand mask_290_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_291_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_292_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_293_1(%rip), %ymm8, %ymm5 -vpand mask_294_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_295_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsrlq $61, %ymm6, %ymm5 -vpsllq $3, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_296_1(%rip), %ymm7, %ymm5 -vpand mask_297_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_298_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_299_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_300_1(%rip), %ymm7, %ymm5 -vpand mask_301_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_302_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_303_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_304_1(%rip), %ymm7, %ymm5 -vpand mask_305_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_306_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_307_1(%rip), %ymm8, %ymm5 -vpand mask_308_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_309_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_310_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_311_1(%rip), %ymm8, %ymm5 -vpand mask_312_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_313_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_314_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_315_1(%rip), %ymm8, %ymm5 -vpand mask_316_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_317_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm7, %ymm6 -vpshufb mask_318_1(%rip), %ymm6, %ymm5 -vpand mask_319_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_320_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_321_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_322_1(%rip), %ymm6, %ymm5 -vpand mask_323_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_324_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_325_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_326_1(%rip), %ymm6, %ymm5 -vpand mask_327_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_328_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_329_1(%rip), %ymm6, %ymm5 -vpand mask_330_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_331_1(%rip), %ymm8, %ymm5 -vpand mask_332_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_333_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_334_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_335_1(%rip), %ymm8, %ymm5 -vpand mask_336_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_337_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_338_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_339_1(%rip), %ymm8, %ymm5 -vpand mask_340_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_341_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $2, %ymm7, %ymm6 -vpshufb mask_342_1(%rip), %ymm6, %ymm5 -vpand mask_343_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_344_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_345_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_346_1(%rip), %ymm6, %ymm5 -vpand mask_347_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_348_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_349_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_350_1(%rip), %ymm6, %ymm5 -vpand mask_351_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_352_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_353_1(%rip), %ymm8, %ymm5 -vpand mask_354_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_355_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_356_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_357_1(%rip), %ymm8, %ymm5 -vpand mask_358_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_359_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_360_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_361_1(%rip), %ymm8, %ymm5 -vpand mask_362_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_363_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vmovdqa 64(%rsi), %ymm0 -vpshufb mask_364_1(%rip), %ymm0, %ymm5 -vpand mask_365_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_366_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_367_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_368_1(%rip), %ymm0, %ymm5 -vpand mask_369_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_370_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_371_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_372_1(%rip), %ymm0, %ymm5 -vpand mask_373_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_374_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm0, %ymm8 -vpshufb mask_375_1(%rip), %ymm8, %ymm5 -vpand mask_376_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_377_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_378_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_379_1(%rip), %ymm8, %ymm5 -vpand mask_380_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_381_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_382_1(%rip), %ymm8, %ymm5 -vpand mask_383_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsllq $1, %ymm0, %ymm6 -vpshufb mask_384_1(%rip), %ymm6, %ymm5 -vpand mask_385_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_386_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_387_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_388_1(%rip), %ymm6, %ymm5 -vpand mask_389_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_390_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_391_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_392_1(%rip), %ymm6, %ymm5 -vpand mask_393_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_394_1(%rip), %ymm8, %ymm5 -vpand mask_395_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_396_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_397_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_398_1(%rip), %ymm8, %ymm5 -vpand mask_399_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_400_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_401_1(%rip), %ymm8, %ymm5 -vpand mask_402_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsllq $2, %ymm0, %ymm6 -vpshufb mask_403_1(%rip), %ymm6, %ymm5 -vpand mask_404_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_405_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_406_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_407_1(%rip), %ymm6, %ymm5 -vpand mask_408_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_409_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_410_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_411_1(%rip), %ymm6, %ymm5 -vpand mask_412_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_413_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_414_1(%rip), %ymm8, %ymm5 -vpand mask_415_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_416_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_417_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_418_1(%rip), %ymm8, %ymm5 -vpand mask_419_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_420_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_421_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_422_1(%rip), %ymm8, %ymm5 -vpand mask_423_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_424_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $61, %ymm0, %ymm5 -vpsllq $3, %ymm0, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_425_1(%rip), %ymm6, %ymm5 -vpand mask_426_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_427_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_428_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_429_1(%rip), %ymm6, %ymm5 -vpand mask_430_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_431_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_432_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_433_1(%rip), %ymm6, %ymm5 -vpand mask_434_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_435_1(%rip), %ymm8, %ymm5 -vpand mask_436_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_437_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_438_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_439_1(%rip), %ymm8, %ymm5 -vpand mask_440_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_441_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsllq $1, %ymm6, %ymm7 -vpshufb mask_442_1(%rip), %ymm7, %ymm5 -vpand mask_443_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_444_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_445_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_446_1(%rip), %ymm7, %ymm5 -vpand mask_447_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_448_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_449_1(%rip), %ymm7, %ymm5 -vpand mask_450_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_451_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_452_1(%rip), %ymm8, %ymm5 -vpand mask_453_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_454_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_455_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_456_1(%rip), %ymm8, %ymm5 -vpand mask_457_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_458_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_459_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_460_1(%rip), %ymm8, %ymm5 -vpand mask_461_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $2, %ymm6, %ymm7 -vpshufb mask_462_1(%rip), %ymm7, %ymm5 -vpand mask_463_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_464_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_465_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_466_1(%rip), %ymm7, %ymm5 -vpand mask_467_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_468_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_469_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_470_1(%rip), %ymm7, %ymm5 -vpand mask_471_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_472_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_473_1(%rip), %ymm8, %ymm5 -vpand mask_474_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_475_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_476_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_477_1(%rip), %ymm8, %ymm5 -vpand mask_478_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_479_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_480_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_481_1(%rip), %ymm8, %ymm5 -vpand mask_482_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_483_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $61, %ymm6, %ymm5 -vpsllq $3, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_484_1(%rip), %ymm7, %ymm5 -vpand mask_485_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_486_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_487_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_488_1(%rip), %ymm7, %ymm5 -vpand mask_489_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_490_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_491_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_492_1(%rip), %ymm7, %ymm5 -vpand mask_493_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_494_1(%rip), %ymm8, %ymm5 -vpand mask_495_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_496_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_497_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_498_1(%rip), %ymm8, %ymm5 -vpand mask_499_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_500_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_501_1(%rip), %ymm8, %ymm5 -vpand mask_502_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpsllq $1, %ymm7, %ymm6 -vpshufb mask_503_1(%rip), %ymm6, %ymm5 -vpand mask_504_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_505_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_506_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_507_1(%rip), %ymm6, %ymm5 -vpand mask_508_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_509_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_510_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_511_1(%rip), %ymm6, %ymm5 -vpand mask_512_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_513_1(%rip), %ymm8, %ymm5 -vpand mask_514_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_515_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_516_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_517_1(%rip), %ymm8, %ymm5 -vpand mask_518_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_519_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_520_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_521_1(%rip), %ymm8, %ymm5 -vpand mask_522_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_523_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vmovdqa %ymm1, 0(%rdi) -vmovdqa %ymm2, 32(%rdi) -vmovdqa %ymm3, 64(%rdi) -ret diff --git a/src/kem/ntru/ntruhrss701/avx2/square_168_701_shufbytes.s b/src/kem/ntru/ntruhrss701/avx2/square_168_701_shufbytes.s deleted file mode 100644 index cfaa06d9..00000000 --- a/src/kem/ntru/ntruhrss701/avx2/square_168_701_shufbytes.s +++ /dev/null @@ -1,7918 +0,0 @@ -.data -.p2align 5 -mask_0_1: -.byte 0 -.byte 255 -.byte 5 -.byte 3 -.byte 10 -.byte 8 -.byte 15 -.byte 7 -.byte 14 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 6 -.byte 255 -.byte 11 -.byte 255 -.byte 10 -.byte 255 - -mask_1_1: -.word 0x1 -.word 0x2 -.word 0x4 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x8 -.word 0x10 -.word 0x0 - -mask_2_1: -.word 0x0 -.word 0x4000 -.word 0x8000 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 - -mask_3_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_4_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 - -mask_5_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 - -mask_6_1: -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_7_1: -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 9 -.byte 1 -.byte 14 -.byte 6 -.byte 13 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 0 -.byte 7 -.byte 5 -.byte 12 -.byte 10 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_8_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x40 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x1 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_9_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x4000 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_10_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_11_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_12_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_13_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_14_1: -.byte 11 -.byte 255 -.byte 10 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 9 -.byte 1 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 2 -.byte 9 -.byte 7 -.byte 14 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_15_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x80 -.word 0x100 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_16_1: -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_17_1: -.word 0x0 -.word 0x2 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_18_1: -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_19_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_20_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_21_1: -.byte 255 -.byte 2 -.byte 0 -.byte 7 -.byte 5 -.byte 12 -.byte 10 -.byte 255 -.byte 9 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 6 -.byte 13 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 6 -.byte 255 - -mask_22_1: -.word 0x100 -.word 0x200 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x8 - -mask_23_1: -.word 0x0 -.word 0x20 -.word 0x40 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_24_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_25_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_26_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_27_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_28_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 0 -.byte 7 -.byte 5 -.byte 12 -.byte 10 -.byte 255 -.byte 9 -.byte 255 -.byte 14 -.byte 255 -.byte 3 -.byte 10 -.byte 8 -.byte 15 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 1 -.byte 8 - -mask_29_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x200 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x800 - -mask_30_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x40 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 - -mask_31_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x40 -.word 0x80 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_32_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_33_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_34_1: -.byte 255 -.byte 13 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 6 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 2 -.byte 9 -.byte 7 -.byte 14 -.byte 12 -.byte 255 -.byte 255 -.byte 255 - -mask_35_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x100 -.word 0x200 -.word 0x0 -.word 0x0 - -mask_36_1: -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x40 -.word 0x0 - -mask_37_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_38_1: -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_39_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_40_1: -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_41_1: -.byte 255 -.byte 9 -.byte 1 -.byte 14 -.byte 255 -.byte 13 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 5 -.byte 255 -.byte 4 -.byte 11 -.byte 9 -.byte 255 -.byte 14 -.byte 255 -.byte 255 - -mask_42_1: -.word 0x4000 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x8000 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 - -mask_43_1: -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x4000 -.word 0x0 - -mask_44_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_45_1: -.byte 255 -.byte 3 -.byte 255 -.byte 8 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_46_1: -.word 0x400 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_47_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_48_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 2 -.byte 9 -.byte 7 -.byte 14 -.byte 12 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 11 -.byte 3 -.byte 10 -.byte 8 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 - -mask_49_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x2 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 - -mask_50_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x4000 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_51_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_52_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_53_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_54_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_55_1: -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 2 -.byte 9 -.byte 7 -.byte 14 -.byte 12 -.byte 3 -.byte 255 -.byte 8 -.byte 0 -.byte 13 -.byte 5 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_56_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x2 -.word 0x4 -.word 0x8 -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_57_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x4000 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_58_1: -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_59_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_60_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_61_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_62_1: -.byte 6 -.byte 255 -.byte 11 -.byte 3 -.byte 10 -.byte 255 -.byte 15 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 5 -.byte 255 -.byte 4 -.byte 11 -.byte 9 - -mask_63_1: -.word 0x20 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x8000 -.word 0x0 -.word 0x1 - -mask_64_1: -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2000 - -mask_65_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_66_1: -.byte 0 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_67_1: -.word 0x2 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_68_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_69_1: -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 6 -.byte 255 -.byte 11 -.byte 3 -.byte 10 -.byte 255 -.byte 15 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 0 -.byte 14 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 7 -.byte 255 -.byte 6 -.byte 13 - -mask_70_1: -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x80 -.word 0x100 - -mask_71_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 - -mask_72_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_73_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 - -mask_74_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 - -mask_75_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_76_1: -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 6 -.byte 4 -.byte 11 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 8 -.byte 255 -.byte 13 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_77_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x100 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_78_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 - -mask_79_1: -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_80_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_81_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_82_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_83_1: -.byte 7 -.byte 14 -.byte 6 -.byte 13 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 0 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 5 -.byte 255 -.byte 10 -.byte 255 -.byte 15 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_84_1: -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x100 -.word 0x0 -.word 0x400 -.word 0x800 -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_85_1: -.word 0x80 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 - -mask_86_1: -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_87_1: -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_88_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_89_1: -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_90_1: -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 8 -.byte 0 -.byte 13 -.byte 5 -.byte 12 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 11 -.byte 9 -.byte 255 -.byte 14 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 - -mask_91_1: -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 - -mask_92_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x40 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_93_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x80 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_94_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_95_1: -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_96_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_97_1: -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 8 -.byte 255 -.byte 13 -.byte 5 -.byte 12 -.byte 255 -.byte 11 -.byte 8 -.byte 6 -.byte 13 -.byte 11 -.byte 255 -.byte 10 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 - -mask_98_1: -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 - -mask_99_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x2000 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_100_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_101_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_102_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_103_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_104_1: -.byte 11 -.byte 9 -.byte 255 -.byte 8 -.byte 15 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 10 -.byte 255 -.byte 15 -.byte 255 -.byte 14 - -mask_105_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x1000 -.word 0x2000 -.word 0x0 - -mask_106_1: -.word 0x8000 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 - -mask_107_1: -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_108_1: -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 9 -.byte 255 -.byte 255 - -mask_109_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x200 -.word 0x0 - -mask_110_1: -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_111_1: -.byte 5 -.byte 12 -.byte 10 -.byte 255 -.byte 9 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 1 -.byte 8 -.byte 255 -.byte 13 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_112_1: -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x800 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_113_1: -.word 0x40 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 - -mask_114_1: -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_115_1: -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_116_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_117_1: -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_118_1: -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 6 -.byte 255 -.byte 11 -.byte 3 -.byte 10 -.byte 8 -.byte 15 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 2 -.byte 9 -.byte 7 -.byte 14 -.byte 12 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 - -mask_119_1: -.word 0x0 -.word 0x800 -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 - -mask_120_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_121_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x80 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_122_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_123_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_124_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_125_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 6 -.byte 255 -.byte 11 -.byte 3 -.byte 10 -.byte 8 -.byte 15 -.byte 255 -.byte 4 -.byte 11 -.byte 9 -.byte 255 -.byte 14 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 - -mask_126_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 - -mask_127_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x800 -.word 0x1000 -.word 0x2000 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_128_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_129_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_130_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_131_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_132_1: -.byte 9 -.byte 7 -.byte 14 -.byte 12 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 5 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 1 -.byte 8 -.byte 255 -.byte 13 -.byte 255 -.byte 12 - -mask_133_1: -.word 0x2 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x800 -.word 0x1000 -.word 0x0 - -mask_134_1: -.word 0x4000 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x200 - -mask_135_1: -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_136_1: -.byte 255 -.byte 1 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 - -mask_137_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 - -mask_138_1: -.word 0x400 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_139_1: -.byte 255 -.byte 255 -.byte 4 -.byte 2 -.byte 9 -.byte 7 -.byte 14 -.byte 12 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 5 -.byte 3 -.byte 10 -.byte 255 -.byte 15 -.byte 255 - -mask_140_1: -.word 0x0 -.word 0x1 -.word 0x2 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x4 -.word 0x8 -.word 0x10 - -mask_141_1: -.word 0x0 -.word 0x2000 -.word 0x4000 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 - -mask_142_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_143_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 - -mask_144_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 - -mask_145_1: -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_146_1: -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 8 -.byte 0 -.byte 13 -.byte 5 -.byte 12 -.byte 10 -.byte 255 -.byte 0 -.byte 0 -.byte 5 -.byte 255 -.byte 4 -.byte 11 -.byte 9 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_147_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x4000 -.word 0x8000 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_148_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_149_1: -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x4000 -.word 0x8000 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_150_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_151_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_152_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_153_1: -.byte 10 -.byte 255 -.byte 15 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 8 -.byte 0 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 7 -.byte 255 -.byte 6 -.byte 13 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_154_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x10 -.word 0x0 -.word 0x40 -.word 0x80 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_155_1: -.word 0x8 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_156_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_157_1: -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_158_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_159_1: -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_160_1: -.byte 0 -.byte 255 -.byte 255 -.byte 6 -.byte 4 -.byte 11 -.byte 9 -.byte 255 -.byte 14 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 5 -.byte 12 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 3 - -mask_161_1: -.word 0x80 -.word 0x100 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 - -mask_162_1: -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x40 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 - -mask_163_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_164_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_165_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_166_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_167_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 0 -.byte 255 -.byte 6 -.byte 4 -.byte 11 -.byte 9 -.byte 255 -.byte 14 -.byte 255 -.byte 13 -.byte 255 -.byte 2 -.byte 15 -.byte 7 -.byte 14 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 0 -.byte 7 - -mask_168_1: -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x100 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x400 - -mask_169_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x40 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 - -mask_170_1: -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x40 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_171_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_172_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_173_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_174_1: -.byte 5 -.byte 12 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 5 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 7 -.byte 255 -.byte 6 -.byte 13 -.byte 11 -.byte 255 -.byte 255 -.byte 255 - -mask_175_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x800 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x80 -.word 0x100 -.word 0x0 -.word 0x0 - -mask_176_1: -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x0 - -mask_177_1: -.word 0x80 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_178_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_179_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_180_1: -.byte 255 -.byte 8 -.byte 0 -.byte 13 -.byte 5 -.byte 12 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 9 -.byte 255 -.byte 8 -.byte 15 -.byte 13 -.byte 255 -.byte 255 - -mask_181_1: -.word 0x2000 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x8000 -.word 0x0 -.word 0x1 -.word 0x0 - -mask_182_1: -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x0 - -mask_183_1: -.word 0x0 -.word 0x40 -.word 0x80 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_184_1: -.byte 255 -.byte 2 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_185_1: -.word 0x200 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_186_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 1 -.byte 8 -.byte 6 -.byte 13 -.byte 11 -.byte 255 -.byte 10 -.byte 255 -.byte 15 -.byte 255 -.byte 5 -.byte 255 -.byte 10 -.byte 2 -.byte 15 -.byte 7 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_187_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x1 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_188_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_189_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_190_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_191_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_192_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_193_1: -.byte 15 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 1 -.byte 8 -.byte 6 -.byte 13 -.byte 11 -.byte 2 -.byte 0 -.byte 7 -.byte 255 -.byte 12 -.byte 4 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_194_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x1 -.word 0x2 -.word 0x4 -.word 0x8 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_195_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x4000 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_196_1: -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_197_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_198_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_199_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_200_1: -.byte 5 -.byte 255 -.byte 10 -.byte 2 -.byte 15 -.byte 7 -.byte 14 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 9 -.byte 255 -.byte 8 - -mask_201_1: -.word 0x10 -.word 0x20 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x8000 -.word 0x0 - -mask_202_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x1000 - -mask_203_1: -.word 0x0 -.word 0x4000 -.word 0x8000 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_204_1: -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 - -mask_205_1: -.word 0x0 -.word 0x2 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 - -mask_206_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 10 -.byte 2 -.byte 15 -.byte 7 -.byte 14 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 6 -.byte 255 -.byte 11 -.byte 255 - -mask_207_1: -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x40 -.word 0x80 - -mask_208_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_209_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x8000 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_210_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 5 -.byte 255 - -mask_211_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x8 - -mask_212_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_213_1: -.byte 10 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 3 -.byte 10 -.byte 8 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 0 -.byte 7 -.byte 255 -.byte 12 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_214_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x100 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x8 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_215_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 - -mask_216_1: -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_217_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_218_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_219_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_220_1: -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 5 -.byte 255 -.byte 4 -.byte 11 -.byte 9 -.byte 0 -.byte 255 -.byte 5 -.byte 3 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_221_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x8000 -.word 0x0 -.word 0x1 -.word 0x2 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_222_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_223_1: -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_224_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_225_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_226_1: -.byte 3 -.byte 255 -.byte 2 -.byte 0 -.byte 7 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 7 -.byte 255 -.byte 12 - -mask_227_1: -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x4000 -.word 0x8000 - -mask_228_1: -.word 0x0 -.word 0x1 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_229_1: -.word 0x0 -.word 0x2000 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_230_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 6 - -mask_231_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x800 - -mask_232_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_233_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 8 -.byte 0 -.byte 13 -.byte 5 -.byte 12 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 3 -.byte 255 - -mask_234_1: -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 - -mask_235_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 - -mask_236_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x4000 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_237_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_238_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_239_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 1 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 5 -.byte 3 -.byte 10 -.byte 255 -.byte 15 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 - -mask_240_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x4 -.word 0x8 -.word 0x10 -.word 0x0 -.word 0x0 - -mask_241_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 - -mask_242_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_243_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 - -mask_244_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_245_1: -.byte 4 -.byte 11 -.byte 9 -.byte 255 -.byte 14 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 0 -.byte 7 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_246_1: -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_247_1: -.word 0x20 -.word 0x40 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_248_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_249_1: -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_250_1: -.word 0x0 -.word 0x4 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_251_1: -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 5 -.byte 255 -.byte 4 -.byte 2 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 6 -.byte 13 -.byte 11 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_252_1: -.word 0x0 -.word 0x400 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_253_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_254_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_255_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_256_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_257_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_258_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 10 -.byte 2 -.byte 15 -.byte 7 -.byte 14 -.byte 255 -.byte 3 -.byte 255 -.byte 2 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 - -mask_259_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 - -mask_260_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_261_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x40 -.word 0x0 -.word 0x100 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_262_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_263_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_264_1: -.byte 255 -.byte 6 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 0 -.byte 7 -.byte 5 -.byte 12 -.byte 255 -.byte 11 - -mask_265_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x400 -.word 0x800 -.word 0x0 - -mask_266_1: -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x80 -.word 0x100 - -mask_267_1: -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_268_1: -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_269_1: -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_270_1: -.byte 255 -.byte 2 -.byte 255 -.byte 1 -.byte 8 -.byte 6 -.byte 13 -.byte 11 -.byte 255 -.byte 10 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 2 -.byte 255 -.byte 7 -.byte 255 -.byte 255 - -mask_271_1: -.word 0x8000 -.word 0x0 -.word 0x1 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 - -mask_272_1: -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x8000 -.word 0x0 - -mask_273_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_274_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_275_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_276_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 0 -.byte 7 -.byte 255 -.byte 6 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 9 -.byte 255 -.byte 8 -.byte 15 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_277_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x8000 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_278_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_279_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_280_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_281_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_282_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_283_1: -.byte 15 -.byte 7 -.byte 14 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 0 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 6 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_284_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x8 -.word 0x0 -.word 0x20 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_285_1: -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_286_1: -.word 0x8000 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_287_1: -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_288_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_289_1: -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 3 -.byte 255 -.byte 2 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 4 -.byte 11 -.byte 9 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 2 - -mask_290_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 - -mask_291_1: -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 - -mask_292_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x4000 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_293_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_294_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_295_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 3 -.byte 10 -.byte 8 -.byte 15 -.byte 13 -.byte 255 -.byte 12 -.byte 255 -.byte 1 -.byte 8 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 6 - -mask_296_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x100 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x200 - -mask_297_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x40 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_298_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_299_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_300_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_301_1: -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 6 -.byte 255 -.byte 11 -.byte 255 -.byte 10 -.byte 255 -.byte 15 -.byte 255 - -mask_302_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x40 -.word 0x80 -.word 0x0 -.word 0x0 - -mask_303_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 - -mask_304_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_305_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_306_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 - -mask_307_1: -.byte 255 -.byte 7 -.byte 255 -.byte 12 -.byte 4 -.byte 11 -.byte 9 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 2 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_308_1: -.word 0x1000 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_309_1: -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x800 -.word 0x0 -.word 0x0 - -mask_310_1: -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x80 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_311_1: -.byte 255 -.byte 1 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_312_1: -.word 0x100 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_313_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 6 -.byte 255 -.byte 5 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 2 -.byte 9 -.byte 1 -.byte 14 -.byte 6 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_314_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x800 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_315_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_316_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_317_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_318_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -.text -.global PQCLEAN_NTRUHRSS701_AVX2_square_168_701 -.global _PQCLEAN_NTRUHRSS701_AVX2_square_168_701 -PQCLEAN_NTRUHRSS701_AVX2_square_168_701: -_PQCLEAN_NTRUHRSS701_AVX2_square_168_701: -vmovdqa 0(%rsi), %ymm0 -vpshufb mask_0_1(%rip), %ymm0, %ymm5 -vpand mask_1_1(%rip), %ymm5, %ymm1 -vpand mask_2_1(%rip), %ymm5, %ymm2 -vpand mask_3_1(%rip), %ymm5, %ymm3 -vpshufb mask_4_1(%rip), %ymm0, %ymm5 -vpand mask_5_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_6_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm8 -vpshufb mask_7_1(%rip), %ymm8, %ymm5 -vpand mask_8_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_9_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_10_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_11_1(%rip), %ymm8, %ymm5 -vpand mask_12_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_13_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm0, %ymm5 -vpsllq $1, %ymm0, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_14_1(%rip), %ymm6, %ymm5 -vpand mask_15_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_16_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_17_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_18_1(%rip), %ymm6, %ymm5 -vpand mask_19_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_20_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_21_1(%rip), %ymm8, %ymm5 -vpand mask_22_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_23_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_24_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_25_1(%rip), %ymm8, %ymm5 -vpand mask_26_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_27_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm6, %ymm5 -vpsllq $1, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_28_1(%rip), %ymm7, %ymm5 -vpand mask_29_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_30_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_31_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_32_1(%rip), %ymm7, %ymm5 -vpand mask_33_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_34_1(%rip), %ymm8, %ymm5 -vpand mask_35_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_36_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_37_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_38_1(%rip), %ymm8, %ymm5 -vpand mask_39_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_40_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm7, %ymm6 -vpshufb mask_41_1(%rip), %ymm6, %ymm5 -vpand mask_42_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_43_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_44_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_45_1(%rip), %ymm6, %ymm5 -vpand mask_46_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_47_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_48_1(%rip), %ymm8, %ymm5 -vpand mask_49_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_50_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_51_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_52_1(%rip), %ymm8, %ymm5 -vpand mask_53_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_54_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $62, %ymm7, %ymm5 -vpsllq $2, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_55_1(%rip), %ymm6, %ymm5 -vpand mask_56_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_57_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_58_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_59_1(%rip), %ymm6, %ymm5 -vpand mask_60_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_61_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_62_1(%rip), %ymm8, %ymm5 -vpand mask_63_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_64_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_65_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_66_1(%rip), %ymm8, %ymm5 -vpand mask_67_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_68_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm6, %ymm7 -vpshufb mask_69_1(%rip), %ymm7, %ymm5 -vpand mask_70_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_71_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_72_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_73_1(%rip), %ymm7, %ymm5 -vpand mask_74_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_75_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_76_1(%rip), %ymm8, %ymm5 -vpand mask_77_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_78_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_79_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_80_1(%rip), %ymm8, %ymm5 -vpand mask_81_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_82_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $62, %ymm6, %ymm5 -vpsllq $2, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_83_1(%rip), %ymm7, %ymm5 -vpand mask_84_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_85_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_86_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_87_1(%rip), %ymm7, %ymm5 -vpand mask_88_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_89_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_90_1(%rip), %ymm8, %ymm5 -vpand mask_91_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_92_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_93_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_94_1(%rip), %ymm8, %ymm5 -vpand mask_95_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_96_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm7, %ymm5 -vpsllq $1, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_97_1(%rip), %ymm6, %ymm5 -vpand mask_98_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_99_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_100_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_101_1(%rip), %ymm6, %ymm5 -vpand mask_102_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_103_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_104_1(%rip), %ymm8, %ymm5 -vpand mask_105_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_106_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_107_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_108_1(%rip), %ymm8, %ymm5 -vpand mask_109_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_110_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vmovdqa 32(%rsi), %ymm0 -vpshufb mask_111_1(%rip), %ymm0, %ymm5 -vpand mask_112_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_113_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_114_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_115_1(%rip), %ymm0, %ymm5 -vpand mask_116_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_117_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm8 -vpshufb mask_118_1(%rip), %ymm8, %ymm5 -vpand mask_119_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_120_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_121_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_122_1(%rip), %ymm8, %ymm5 -vpand mask_123_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_124_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm0, %ymm6 -vpshufb mask_125_1(%rip), %ymm6, %ymm5 -vpand mask_126_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_127_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_128_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_129_1(%rip), %ymm6, %ymm5 -vpand mask_130_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_131_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_132_1(%rip), %ymm8, %ymm5 -vpand mask_133_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_134_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_135_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_136_1(%rip), %ymm8, %ymm5 -vpand mask_137_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_138_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $62, %ymm0, %ymm5 -vpsllq $2, %ymm0, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_139_1(%rip), %ymm6, %ymm5 -vpand mask_140_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_141_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_142_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_143_1(%rip), %ymm6, %ymm5 -vpand mask_144_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_145_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_146_1(%rip), %ymm8, %ymm5 -vpand mask_147_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_148_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_149_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_150_1(%rip), %ymm8, %ymm5 -vpand mask_151_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_152_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm6, %ymm5 -vpsllq $1, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_153_1(%rip), %ymm7, %ymm5 -vpand mask_154_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_155_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_156_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_157_1(%rip), %ymm7, %ymm5 -vpand mask_158_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_159_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_160_1(%rip), %ymm8, %ymm5 -vpand mask_161_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_162_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_163_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_164_1(%rip), %ymm8, %ymm5 -vpand mask_165_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_166_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm7, %ymm6 -vpshufb mask_167_1(%rip), %ymm6, %ymm5 -vpand mask_168_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_169_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_170_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_171_1(%rip), %ymm6, %ymm5 -vpand mask_172_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_173_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_174_1(%rip), %ymm8, %ymm5 -vpand mask_175_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_176_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_177_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_178_1(%rip), %ymm8, %ymm5 -vpand mask_179_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsrlq $62, %ymm7, %ymm5 -vpsllq $2, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_180_1(%rip), %ymm6, %ymm5 -vpand mask_181_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_182_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_183_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_184_1(%rip), %ymm6, %ymm5 -vpand mask_185_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_186_1(%rip), %ymm8, %ymm5 -vpand mask_187_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_188_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_189_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_190_1(%rip), %ymm8, %ymm5 -vpand mask_191_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_192_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm6, %ymm5 -vpsllq $1, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_193_1(%rip), %ymm7, %ymm5 -vpand mask_194_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_195_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_196_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_197_1(%rip), %ymm7, %ymm5 -vpand mask_198_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_199_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_200_1(%rip), %ymm8, %ymm5 -vpand mask_201_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_202_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_203_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_204_1(%rip), %ymm8, %ymm5 -vpand mask_205_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsllq $1, %ymm7, %ymm6 -vpshufb mask_206_1(%rip), %ymm6, %ymm5 -vpand mask_207_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_208_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_209_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_210_1(%rip), %ymm6, %ymm5 -vpand mask_211_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_212_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_213_1(%rip), %ymm8, %ymm5 -vpand mask_214_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_215_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_216_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_217_1(%rip), %ymm8, %ymm5 -vpand mask_218_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_219_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vmovdqa 64(%rsi), %ymm0 -vpshufb mask_220_1(%rip), %ymm0, %ymm5 -vpand mask_221_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_222_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_223_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_224_1(%rip), %ymm0, %ymm5 -vpand mask_225_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm8 -vpshufb mask_226_1(%rip), %ymm8, %ymm5 -vpand mask_227_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_228_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_229_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_230_1(%rip), %ymm8, %ymm5 -vpand mask_231_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_232_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm0, %ymm5 -vpsllq $1, %ymm0, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_233_1(%rip), %ymm6, %ymm5 -vpand mask_234_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_235_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_236_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_237_1(%rip), %ymm6, %ymm5 -vpand mask_238_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_239_1(%rip), %ymm8, %ymm5 -vpand mask_240_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_241_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpshufb mask_242_1(%rip), %ymm8, %ymm5 -vpand mask_243_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_244_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm6, %ymm7 -vpshufb mask_245_1(%rip), %ymm7, %ymm5 -vpand mask_246_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_247_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_248_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_249_1(%rip), %ymm7, %ymm5 -vpand mask_250_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_251_1(%rip), %ymm8, %ymm5 -vpand mask_252_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_253_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_254_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_255_1(%rip), %ymm8, %ymm5 -vpand mask_256_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_257_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $62, %ymm6, %ymm5 -vpsllq $2, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_258_1(%rip), %ymm7, %ymm5 -vpand mask_259_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_260_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_261_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_262_1(%rip), %ymm7, %ymm5 -vpand mask_263_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_264_1(%rip), %ymm8, %ymm5 -vpand mask_265_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_266_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_267_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_268_1(%rip), %ymm8, %ymm5 -vpand mask_269_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm7, %ymm5 -vpsllq $1, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_270_1(%rip), %ymm6, %ymm5 -vpand mask_271_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_272_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_273_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_274_1(%rip), %ymm6, %ymm5 -vpand mask_275_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_276_1(%rip), %ymm8, %ymm5 -vpand mask_277_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_278_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_279_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_280_1(%rip), %ymm8, %ymm5 -vpand mask_281_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_282_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm6, %ymm7 -vpshufb mask_283_1(%rip), %ymm7, %ymm5 -vpand mask_284_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_285_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_286_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_287_1(%rip), %ymm7, %ymm5 -vpand mask_288_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_289_1(%rip), %ymm8, %ymm5 -vpand mask_290_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_291_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_292_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_293_1(%rip), %ymm8, %ymm5 -vpand mask_294_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsrlq $62, %ymm6, %ymm5 -vpsllq $2, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_295_1(%rip), %ymm7, %ymm5 -vpand mask_296_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_297_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_298_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_299_1(%rip), %ymm7, %ymm5 -vpand mask_300_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_301_1(%rip), %ymm8, %ymm5 -vpand mask_302_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_303_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_304_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_305_1(%rip), %ymm8, %ymm5 -vpand mask_306_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsrlq $63, %ymm7, %ymm5 -vpsllq $1, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_307_1(%rip), %ymm6, %ymm5 -vpand mask_308_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_309_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_310_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_311_1(%rip), %ymm6, %ymm5 -vpand mask_312_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_313_1(%rip), %ymm8, %ymm5 -vpand mask_314_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_315_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_316_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_317_1(%rip), %ymm8, %ymm5 -vpand mask_318_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vmovdqa %ymm1, 0(%rdi) -vmovdqa %ymm2, 32(%rdi) -vmovdqa %ymm3, 64(%rdi) -ret diff --git a/src/kem/ntru/ntruhrss701/avx2/square_1_701_patience.s b/src/kem/ntru/ntruhrss701/avx2/square_1_701_patience.s deleted file mode 100644 index 3eda0814..00000000 --- a/src/kem/ntru/ntruhrss701/avx2/square_1_701_patience.s +++ /dev/null @@ -1,137 +0,0 @@ -.data -.p2align 5 -.text -.global PQCLEAN_NTRUHRSS701_AVX2_square_1_701 -.global _PQCLEAN_NTRUHRSS701_AVX2_square_1_701 -PQCLEAN_NTRUHRSS701_AVX2_square_1_701: -_PQCLEAN_NTRUHRSS701_AVX2_square_1_701: -push %r15 -push %r14 -push %r13 -push %r12 -push %rbx -push %rbp -mov 0(%rsi), %r11 -mov %r11, %r10 -and $-0x1, %r10 -mov $0x5555555555555555, %rbp -pdep %rbp, %r10, %r10 -mov %r10, 0(%rdi) -mov $0xffffffff00000000, %rbx -pext %rbx, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 8(%rdi) -mov 8(%rsi), %r11 -mov %r11, %r10 -and $-0x1, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 16(%rdi) -pext %rbx, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 24(%rdi) -mov 16(%rsi), %r11 -mov %r11, %r10 -and $-0x1, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 32(%rdi) -pext %rbx, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 40(%rdi) -mov 24(%rsi), %r11 -mov %r11, %r10 -and $-0x1, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 48(%rdi) -pext %rbx, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 56(%rdi) -mov 32(%rsi), %r11 -mov %r11, %r10 -and $-0x1, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 64(%rdi) -pext %rbx, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 72(%rdi) -mov 40(%rsi), %r11 -mov $0x7fffffff80000000, %r12 -pext %r12, %r11, %r10 -mov $0xaaaaaaaaaaaaaaaa, %r13 -pdep %r13, %r10, %r10 -xor %r10, 0(%rdi) -mov %r11, %r10 -rol $2, %r10 -and $0x2, %r10 -xor %r10, 8(%rdi) -mov %r11, %r10 -and $0x7fffffff, %r10 -mov $0x1555555555555555, %r14 -pdep %r14, %r10, %r10 -mov %r10, 80(%rdi) -mov 48(%rsi), %r11 -mov %r11, %r10 -and $0x7fffffff, %r10 -mov $0xaaaaaaaaaaaaaaa8, %r15 -pdep %r15, %r10, %r10 -xor %r10, 8(%rdi) -pext %r12, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 16(%rdi) -mov %r11, %r10 -rol $2, %r10 -and $0x2, %r10 -xor %r10, 24(%rdi) -mov 56(%rsi), %r11 -mov %r11, %r10 -and $0x7fffffff, %r10 -pdep %r15, %r10, %r10 -xor %r10, 24(%rdi) -pext %r12, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 32(%rdi) -mov %r11, %r10 -rol $2, %r10 -and $0x2, %r10 -xor %r10, 40(%rdi) -mov 64(%rsi), %r11 -mov %r11, %r10 -and $0x7fffffff, %r10 -pdep %r15, %r10, %r10 -xor %r10, 40(%rdi) -pext %r12, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 48(%rdi) -mov %r11, %r10 -rol $2, %r10 -and $0x2, %r10 -xor %r10, 56(%rdi) -mov 72(%rsi), %r11 -mov %r11, %r10 -and $0x7fffffff, %r10 -pdep %r15, %r10, %r10 -xor %r10, 56(%rdi) -pext %r12, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 64(%rdi) -mov %r11, %r10 -rol $2, %r10 -and $0x2, %r10 -xor %r10, 72(%rdi) -mov 80(%rsi), %r11 -mov %r11, %r10 -and $0x7fffffff, %r10 -pdep %r15, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x1fffffff80000000, %r9 -pext %r9, %r11, %r10 -mov $0xaaaaaaaaaaaaaaa, %r8 -pdep %r8, %r10, %r10 -xor %r10, 80(%rdi) -movq $0x0, 88(%rdi) -pop %rbp -pop %rbx -pop %r12 -pop %r13 -pop %r14 -pop %r15 -ret diff --git a/src/kem/ntru/ntruhrss701/avx2/square_27_701_shufbytes.s b/src/kem/ntru/ntruhrss701/avx2/square_27_701_shufbytes.s deleted file mode 100644 index d2ca5afb..00000000 --- a/src/kem/ntru/ntruhrss701/avx2/square_27_701_shufbytes.s +++ /dev/null @@ -1,5384 +0,0 @@ -.data -.p2align 5 -mask_0_1: -.byte 0 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 15 -.byte 5 -.byte 14 -.byte 4 -.byte 255 -.byte 255 -.byte 12 -.byte 2 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 0 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 7 -.byte 255 -.byte 14 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_1_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_2_1: -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x804 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4020 -.word 0x0 -.word 0x0 - -mask_3_1: -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_4_1: -.byte 11 -.byte 1 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 8 -.byte 255 -.byte 15 -.byte 5 -.byte 255 -.byte 255 -.byte 13 -.byte 3 -.byte 12 -.byte 2 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 13 -.byte 3 -.byte 255 -.byte 10 -.byte 255 -.byte 1 -.byte 255 - -mask_5_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2010 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x4 -.word 0x0 -.word 0x0 - -mask_6_1: -.word 0x1008 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x1 - -mask_7_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_8_1: -.byte 255 -.byte 12 -.byte 255 -.byte 3 -.byte 255 -.byte 10 -.byte 0 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 15 -.byte 5 -.byte 6 -.byte 15 -.byte 5 -.byte 255 -.byte 255 -.byte 13 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 0 -.byte 255 -.byte 7 -.byte 255 - -mask_9_1: -.word 0x8000 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x2 -.word 0x0 - -mask_10_1: -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x201 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 - -mask_11_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_12_1: -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_13_1: -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_14_1: -.byte 6 -.byte 255 -.byte 255 -.byte 14 -.byte 4 -.byte 255 -.byte 255 -.byte 12 -.byte 2 -.byte 11 -.byte 1 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 2 -.byte 11 -.byte 1 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 13 - -mask_15_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 - -mask_16_1: -.word 0x0 -.word 0x800 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 - -mask_17_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_18_1: -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 6 -.byte 255 -.byte 13 -.byte 3 -.byte 255 -.byte 255 -.byte 11 -.byte 1 -.byte 10 -.byte 0 -.byte 255 -.byte 2 -.byte 255 -.byte 9 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 3 - -mask_19_1: -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1008 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x201 - -mask_20_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_21_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1008 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_22_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_23_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_24_1: -.byte 255 -.byte 10 -.byte 0 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 15 -.byte 5 -.byte 14 -.byte 4 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 15 -.byte 5 -.byte 14 -.byte 4 -.byte 255 -.byte 255 -.byte 12 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_25_1: -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x402 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_26_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2010 -.word 0x0 -.word 0x0 - -mask_27_1: -.word 0x4000 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x402 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_28_1: -.byte 4 -.byte 0 -.byte 255 -.byte 12 -.byte 2 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 14 -.byte 7 -.byte 255 -.byte 14 -.byte 255 -.byte 5 -.byte 255 -.byte 12 -.byte 255 -.byte 11 -.byte 1 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 - -mask_29_1: -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4020 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_30_1: -.word 0x100 -.word 0x400 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 - -mask_31_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_32_1: -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 13 -.byte 3 -.byte 12 -.byte 2 -.byte 255 -.byte 255 -.byte 10 -.byte 0 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 4 -.byte 13 -.byte 3 -.byte 255 -.byte 255 -.byte 11 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 15 -.byte 5 -.byte 255 - -mask_33_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 - -mask_34_1: -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x20 - -mask_35_1: -.word 0x0 -.word 0x0 -.word 0x8040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_36_1: -.byte 255 -.byte 8 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 15 -.byte 5 -.byte 255 -.byte 255 -.byte 13 -.byte 3 -.byte 12 -.byte 2 -.byte 255 -.byte 9 -.byte 255 -.byte 11 -.byte 1 -.byte 10 -.byte 0 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 4 -.byte 255 -.byte 255 -.byte 12 - -mask_37_1: -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x201 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x40 -.word 0x0 - -mask_38_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x804 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 - -mask_39_1: -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x201 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_40_1: -.byte 2 -.byte 11 -.byte 1 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 6 -.byte 15 -.byte 5 -.byte 255 -.byte 255 -.byte 13 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 14 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 1 - -mask_41_1: -.word 0x800 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x100 - -mask_42_1: -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x402 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_43_1: -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_44_1: -.byte 13 -.byte 255 -.byte 4 -.byte 255 -.byte 11 -.byte 1 -.byte 10 -.byte 0 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 15 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 14 -.byte 4 -.byte 13 -.byte 3 -.byte 255 -.byte 255 -.byte 11 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 7 - -mask_45_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x804 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 - -mask_46_1: -.word 0x80 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x201 -.word 0x0 -.word 0x0 - -mask_47_1: -.word 0x0 -.word 0x0 -.word 0x4020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x804 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_48_1: -.byte 255 -.byte 255 -.byte 15 -.byte 5 -.byte 14 -.byte 4 -.byte 255 -.byte 255 -.byte 12 -.byte 2 -.byte 255 -.byte 9 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 12 -.byte 2 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 - -mask_49_1: -.word 0x0 -.word 0x0 -.word 0x1008 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_50_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x402 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 - -mask_51_1: -.word 0x0 -.word 0x1008 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_52_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_53_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_54_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_55_1: -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 14 -.byte 4 -.byte 13 -.byte 3 -.byte 255 -.byte 255 -.byte 11 -.byte 1 -.byte 255 -.byte 11 -.byte 255 -.byte 2 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 14 -.byte 4 -.byte 255 - -mask_56_1: -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 - -mask_57_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x2 - -mask_58_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_59_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_60_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_61_1: -.byte 3 -.byte 255 -.byte 10 -.byte 0 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 15 -.byte 5 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 8 -.byte 255 -.byte 15 -.byte 5 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 12 -.byte 2 -.byte 255 -.byte 255 -.byte 10 - -mask_62_1: -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x1000 -.word 0x20 -.word 0x0 - -mask_63_1: -.word 0x0 -.word 0x8040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 - -mask_64_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_65_1: -.byte 255 -.byte 255 -.byte 0 -.byte 3 -.byte 12 -.byte 2 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 14 -.byte 255 -.byte 5 -.byte 255 -.byte 12 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 - -mask_66_1: -.word 0x0 -.word 0x1 -.word 0x804 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 - -mask_67_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_68_1: -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_69_1: -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_70_1: -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_71_1: -.byte 255 -.byte 7 -.byte 255 -.byte 6 -.byte 255 -.byte 13 -.byte 3 -.byte 255 -.byte 255 -.byte 11 -.byte 1 -.byte 10 -.byte 0 -.byte 255 -.byte 255 -.byte 8 -.byte 14 -.byte 4 -.byte 255 -.byte 255 -.byte 12 -.byte 2 -.byte 11 -.byte 1 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 5 - -mask_72_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x402 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2010 - -mask_73_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x1008 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_74_1: -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x402 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_75_1: -.byte 255 -.byte 12 -.byte 255 -.byte 11 -.byte 255 -.byte 2 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 5 -.byte 14 -.byte 4 -.byte 255 -.byte 255 -.byte 12 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 - -mask_76_1: -.word 0x0 -.word 0x8000 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 - -mask_77_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_78_1: -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_79_1: -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_80_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_81_1: -.byte 6 -.byte 15 -.byte 5 -.byte 255 -.byte 255 -.byte 13 -.byte 3 -.byte 255 -.byte 255 -.byte 11 -.byte 1 -.byte 10 -.byte 0 -.byte 255 -.byte 7 -.byte 255 -.byte 14 -.byte 4 -.byte 255 -.byte 11 -.byte 1 -.byte 10 -.byte 0 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 5 - -mask_82_1: -.word 0x2000 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x402 - -mask_83_1: -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x201 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_84_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_85_1: -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 15 -.byte 255 -.byte 14 -.byte 255 -.byte 5 -.byte 255 -.byte 12 -.byte 2 -.byte 255 -.byte 255 -.byte 10 -.byte 0 -.byte 255 -.byte 10 -.byte 255 -.byte 1 -.byte 255 -.byte 8 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 15 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_86_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_87_1: -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4020 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x804 -.word 0x0 -.word 0x0 - -mask_88_1: -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1008 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_89_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_90_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_91_1: -.byte 12 -.byte 2 -.byte 255 -.byte 9 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 14 -.byte 4 -.byte 13 -.byte 3 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 14 -.byte 255 -.byte 13 -.byte 3 -.byte 255 -.byte 255 -.byte 11 -.byte 1 -.byte 255 -.byte 255 - -mask_92_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x402 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8040 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_93_1: -.word 0x201 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2010 -.word 0x0 - -mask_94_1: -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x402 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_95_1: -.byte 4 -.byte 13 -.byte 3 -.byte 255 -.byte 255 -.byte 11 -.byte 1 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 8 -.byte 255 -.byte 15 -.byte 5 -.byte 255 -.byte 7 -.byte 255 -.byte 6 -.byte 255 -.byte 13 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 0 -.byte 255 -.byte 255 -.byte 8 -.byte 255 - -mask_96_1: -.word 0x1000 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4020 -.word 0x0 -.word 0x0 - -mask_97_1: -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 - -mask_98_1: -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_99_1: -.byte 7 -.byte 255 -.byte 255 -.byte 15 -.byte 5 -.byte 255 -.byte 12 -.byte 2 -.byte 11 -.byte 1 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 3 -.byte 12 -.byte 2 -.byte 255 -.byte 255 -.byte 10 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 14 - -mask_100_1: -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x800 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 - -mask_101_1: -.word 0x0 -.word 0x100 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x1000 - -mask_102_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_103_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_104_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_105_1: -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 14 -.byte 4 -.byte 255 -.byte 255 -.byte 12 -.byte 2 -.byte 11 -.byte 1 -.byte 2 -.byte 255 -.byte 255 -.byte 10 -.byte 0 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 3 -.byte 255 - -mask_106_1: -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x201 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x40 - -mask_107_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x804 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_108_1: -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x201 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_109_1: -.byte 255 -.byte 11 -.byte 1 -.byte 10 -.byte 0 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 15 -.byte 5 -.byte 14 -.byte 4 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 15 -.byte 5 -.byte 255 -.byte 255 -.byte 13 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 9 - -mask_110_1: -.word 0x0 -.word 0x800 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1008 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 - -mask_111_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x402 -.word 0x0 -.word 0x0 - -mask_112_1: -.word 0x800 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_113_1: -.byte 5 -.byte 255 -.byte 12 -.byte 255 -.byte 3 -.byte 255 -.byte 10 -.byte 0 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 15 -.byte 5 -.byte 255 -.byte 255 -.byte 13 -.byte 3 -.byte 12 -.byte 2 -.byte 255 -.byte 255 -.byte 10 -.byte 0 -.byte 255 -.byte 255 - -mask_114_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x804 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_115_1: -.word 0x0 -.word 0x80 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x2010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x201 -.word 0x0 - -mask_116_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x804 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_117_1: -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 14 -.byte 4 -.byte 13 -.byte 3 -.byte 255 -.byte 255 -.byte 11 -.byte 1 -.byte 255 -.byte 8 -.byte 255 -.byte 7 -.byte 5 -.byte 14 -.byte 4 -.byte 255 -.byte 11 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 - -mask_118_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1008 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x100 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 - -mask_119_1: -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x402 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 - -mask_120_1: -.word 0x0 -.word 0x0 -.word 0x1008 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_121_1: -.byte 255 -.byte 9 -.byte 255 -.byte 8 -.byte 255 -.byte 15 -.byte 255 -.byte 6 -.byte 255 -.byte 0 -.byte 3 -.byte 12 -.byte 2 -.byte 255 -.byte 255 -.byte 10 -.byte 11 -.byte 255 -.byte 10 -.byte 255 -.byte 1 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 5 -.byte 255 -.byte 255 -.byte 13 - -mask_122_1: -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x2000 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x8 -.word 0x0 - -mask_123_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 - -mask_124_1: -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_125_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_126_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_127_1: -.byte 3 -.byte 12 -.byte 2 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 14 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 7 -.byte 255 -.byte 14 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 1 -.byte 255 - -mask_128_1: -.word 0x100 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x20 - -mask_129_1: -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_130_1: -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_131_1: -.byte 14 -.byte 4 -.byte 0 -.byte 255 -.byte 12 -.byte 2 -.byte 11 -.byte 1 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 6 -.byte 15 -.byte 5 -.byte 255 -.byte 7 -.byte 255 -.byte 14 -.byte 255 -.byte 13 -.byte 255 -.byte 4 -.byte 255 -.byte 11 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 - -mask_132_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x804 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4020 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 - -mask_133_1: -.word 0x2010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x40 -.word 0x0 -.word 0x0 - -mask_134_1: -.word 0x0 -.word 0x1 -.word 0x804 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_135_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_136_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_137_1: -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 15 -.byte 5 -.byte 255 -.byte 12 -.byte 2 -.byte 255 -.byte 255 -.byte 10 -.byte 0 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 3 -.byte 255 -.byte 255 -.byte 11 -.byte 1 -.byte 10 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_138_1: -.word 0x0 -.word 0x0 -.word 0x201 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_139_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1008 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 - -mask_140_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x402 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_141_1: -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 15 -.byte 5 -.byte 14 -.byte 4 -.byte 255 -.byte 255 -.byte 12 -.byte 2 -.byte 255 -.byte 12 -.byte 2 -.byte 255 -.byte 255 -.byte 10 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 14 -.byte 4 -.byte 255 -.byte 255 - -mask_142_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x2010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 - -mask_143_1: -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x804 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4020 -.word 0x0 - -mask_144_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_145_1: -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_146_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_147_1: -.byte 255 -.byte 255 -.byte 11 -.byte 1 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 8 -.byte 255 -.byte 15 -.byte 5 -.byte 255 -.byte 255 -.byte 13 -.byte 3 -.byte 9 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 3 -.byte 255 -.byte 10 -.byte 255 - -mask_148_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x4 -.word 0x0 - -mask_149_1: -.word 0x0 -.word 0x1008 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 - -mask_150_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2010 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_151_1: -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 14 -.byte 255 -.byte 13 -.byte 255 -.byte 4 -.byte 255 -.byte 11 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 - -mask_152_1: -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_153_1: -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 - -mask_154_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_155_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_156_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_157_1: -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 9 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 2 -.byte 255 -.byte 255 -.byte 10 -.byte 0 - -mask_158_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8040 -.word 0x0 -.word 0x0 - -mask_159_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2010 - -mask_160_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_161_1: -.byte 255 -.byte 13 -.byte 3 -.byte 12 -.byte 2 -.byte 255 -.byte 255 -.byte 10 -.byte 0 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 7 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_162_1: -.word 0x0 -.word 0x1000 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_163_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_164_1: -.word 0x1000 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_165_1: -.byte 7 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 12 -.byte 2 -.byte 11 -.byte 1 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 5 -.byte 255 - -mask_166_1: -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x80 - -mask_167_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_168_1: -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_169_1: -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 15 -.byte 5 -.byte 255 -.byte 255 -.byte 13 -.byte 3 -.byte 255 -.byte 255 -.byte 11 -.byte 1 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_170_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_171_1: -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x804 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 - -mask_172_1: -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x201 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_173_1: -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 3 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 15 -.byte 5 -.byte 14 -.byte 4 -.byte 255 -.byte 255 -.byte 12 -.byte 2 -.byte 255 -.byte 255 - -mask_174_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1008 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_175_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x402 -.word 0x0 - -mask_176_1: -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1008 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_177_1: -.byte 5 -.byte 14 -.byte 4 -.byte 255 -.byte 11 -.byte 255 -.byte 2 -.byte 255 -.byte 9 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_178_1: -.word 0x200 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 - -mask_179_1: -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_180_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_181_1: -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 7 -.byte 255 -.byte 14 -.byte 4 -.byte 13 -.byte 3 -.byte 255 -.byte 10 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 15 - -mask_182_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 - -mask_183_1: -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8040 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 - -mask_184_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x100 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_185_1: -.byte 0 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 7 -.byte 255 -.byte 14 -.byte 255 -.byte 5 -.byte 255 -.byte 12 -.byte 2 -.byte 11 -.byte 1 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 0 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 - -mask_186_1: -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 - -mask_187_1: -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_188_1: -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_189_1: -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 6 -.byte 255 -.byte 13 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 - -mask_190_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 - -mask_191_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x80 -.word 0x0 -.word 0x0 - -mask_192_1: -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_193_1: -.byte 255 -.byte 255 -.byte 13 -.byte 3 -.byte 255 -.byte 255 -.byte 11 -.byte 1 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 15 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 - -mask_194_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_195_1: -.word 0x0 -.word 0x2010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 - -mask_196_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x804 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_197_1: -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 4 -.byte 255 -.byte 255 -.byte 12 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 - -mask_198_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4020 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 - -mask_199_1: -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1008 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 - -mask_200_1: -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_201_1: -.byte 9 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 14 -.byte 4 -.byte 13 -.byte 3 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 2 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 3 - -mask_202_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 - -mask_203_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 - -mask_204_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_205_1: -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 8 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 15 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 2 -.byte 255 - -mask_206_1: -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x4 - -mask_207_1: -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_208_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_209_1: -.byte 15 -.byte 5 -.byte 255 -.byte 12 -.byte 255 -.byte 11 -.byte 255 -.byte 2 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 6 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_210_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_211_1: -.word 0x402 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 - -mask_212_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_213_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_214_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_215_1: -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 4 -.byte 255 -.byte 11 -.byte 1 -.byte 10 -.byte 0 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_216_1: -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_217_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x201 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 - -mask_218_1: -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -.text -.global PQCLEAN_NTRUHRSS701_AVX2_square_27_701 -.global _PQCLEAN_NTRUHRSS701_AVX2_square_27_701 -PQCLEAN_NTRUHRSS701_AVX2_square_27_701: -_PQCLEAN_NTRUHRSS701_AVX2_square_27_701: -vmovdqa 0(%rsi), %ymm0 -vpshufb mask_0_1(%rip), %ymm0, %ymm5 -vpand mask_1_1(%rip), %ymm5, %ymm1 -vpand mask_2_1(%rip), %ymm5, %ymm2 -vpand mask_3_1(%rip), %ymm5, %ymm3 -vpermq $78, %ymm0, %ymm8 -vpshufb mask_4_1(%rip), %ymm8, %ymm5 -vpand mask_5_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_6_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_7_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm0, %ymm6 -vpshufb mask_8_1(%rip), %ymm6, %ymm5 -vpand mask_9_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_10_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_11_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_12_1(%rip), %ymm6, %ymm5 -vpand mask_13_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_14_1(%rip), %ymm8, %ymm5 -vpand mask_15_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_16_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_17_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $62, %ymm0, %ymm5 -vpsllq $2, %ymm0, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_18_1(%rip), %ymm6, %ymm5 -vpand mask_19_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_20_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_21_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_22_1(%rip), %ymm6, %ymm5 -vpand mask_23_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_24_1(%rip), %ymm8, %ymm5 -vpand mask_25_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_26_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_27_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm6, %ymm5 -vpsllq $1, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_28_1(%rip), %ymm7, %ymm5 -vpand mask_29_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_30_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_31_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_32_1(%rip), %ymm8, %ymm5 -vpand mask_33_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_34_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_35_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm7, %ymm5 -vpsllq $1, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_36_1(%rip), %ymm6, %ymm5 -vpand mask_37_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_38_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_39_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_40_1(%rip), %ymm8, %ymm5 -vpand mask_41_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_42_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_43_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm6, %ymm5 -vpsllq $1, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_44_1(%rip), %ymm7, %ymm5 -vpand mask_45_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_46_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_47_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_48_1(%rip), %ymm8, %ymm5 -vpand mask_49_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_50_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_51_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_52_1(%rip), %ymm8, %ymm5 -vpand mask_53_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_54_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm7, %ymm6 -vpshufb mask_55_1(%rip), %ymm6, %ymm5 -vpand mask_56_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_57_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_58_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_59_1(%rip), %ymm6, %ymm5 -vpand mask_60_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_61_1(%rip), %ymm8, %ymm5 -vpand mask_62_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_63_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_64_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $62, %ymm7, %ymm5 -vpsllq $2, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_65_1(%rip), %ymm6, %ymm5 -vpand mask_66_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_67_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_68_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_69_1(%rip), %ymm6, %ymm5 -vpand mask_70_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_71_1(%rip), %ymm8, %ymm5 -vpand mask_72_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_73_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_74_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vmovdqa 32(%rsi), %ymm0 -vpshufb mask_75_1(%rip), %ymm0, %ymm5 -vpand mask_76_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_77_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_78_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_79_1(%rip), %ymm0, %ymm5 -vpand mask_80_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm8 -vpshufb mask_81_1(%rip), %ymm8, %ymm5 -vpand mask_82_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_83_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_84_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm0, %ymm6 -vpshufb mask_85_1(%rip), %ymm6, %ymm5 -vpand mask_86_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_87_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_88_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_89_1(%rip), %ymm6, %ymm5 -vpand mask_90_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_91_1(%rip), %ymm8, %ymm5 -vpand mask_92_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_93_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_94_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $62, %ymm0, %ymm5 -vpsllq $2, %ymm0, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_95_1(%rip), %ymm6, %ymm5 -vpand mask_96_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_97_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_98_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_99_1(%rip), %ymm8, %ymm5 -vpand mask_100_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_101_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_102_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_103_1(%rip), %ymm8, %ymm5 -vpand mask_104_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm6, %ymm7 -vpshufb mask_105_1(%rip), %ymm7, %ymm5 -vpand mask_106_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_107_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_108_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_109_1(%rip), %ymm8, %ymm5 -vpand mask_110_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_111_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_112_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $62, %ymm6, %ymm5 -vpsllq $2, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_113_1(%rip), %ymm7, %ymm5 -vpand mask_114_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_115_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_116_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_117_1(%rip), %ymm8, %ymm5 -vpand mask_118_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_119_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_120_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm7, %ymm6 -vpshufb mask_121_1(%rip), %ymm6, %ymm5 -vpand mask_122_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_123_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_124_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_125_1(%rip), %ymm6, %ymm5 -vpand mask_126_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_127_1(%rip), %ymm8, %ymm5 -vpand mask_128_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_129_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_130_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $62, %ymm7, %ymm5 -vpsllq $2, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_131_1(%rip), %ymm6, %ymm5 -vpand mask_132_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_133_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_134_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_135_1(%rip), %ymm6, %ymm5 -vpand mask_136_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_137_1(%rip), %ymm8, %ymm5 -vpand mask_138_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_139_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_140_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm6, %ymm7 -vpshufb mask_141_1(%rip), %ymm7, %ymm5 -vpand mask_142_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_143_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_144_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_145_1(%rip), %ymm7, %ymm5 -vpand mask_146_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_147_1(%rip), %ymm8, %ymm5 -vpand mask_148_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_149_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_150_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vmovdqa 64(%rsi), %ymm0 -vpshufb mask_151_1(%rip), %ymm0, %ymm5 -vpand mask_152_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_153_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_154_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_155_1(%rip), %ymm0, %ymm5 -vpand mask_156_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm8 -vpshufb mask_157_1(%rip), %ymm8, %ymm5 -vpand mask_158_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_159_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_160_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm0, %ymm5 -vpsllq $1, %ymm0, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_161_1(%rip), %ymm6, %ymm5 -vpand mask_162_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_163_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_164_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_165_1(%rip), %ymm8, %ymm5 -vpand mask_166_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_167_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_168_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm6, %ymm7 -vpshufb mask_169_1(%rip), %ymm7, %ymm5 -vpand mask_170_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_171_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_172_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_173_1(%rip), %ymm8, %ymm5 -vpand mask_174_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_175_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_176_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $2, %ymm6, %ymm7 -vpshufb mask_177_1(%rip), %ymm7, %ymm5 -vpand mask_178_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_179_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_180_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_181_1(%rip), %ymm8, %ymm5 -vpand mask_182_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_183_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_184_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $61, %ymm6, %ymm5 -vpsllq $3, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_185_1(%rip), %ymm7, %ymm5 -vpand mask_186_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_187_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_188_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_189_1(%rip), %ymm8, %ymm5 -vpand mask_190_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_191_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_192_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm7, %ymm5 -vpsllq $1, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_193_1(%rip), %ymm6, %ymm5 -vpand mask_194_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_195_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_196_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_197_1(%rip), %ymm8, %ymm5 -vpand mask_198_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_199_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_200_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm6, %ymm7 -vpshufb mask_201_1(%rip), %ymm7, %ymm5 -vpand mask_202_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_203_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_204_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_205_1(%rip), %ymm8, %ymm5 -vpand mask_206_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_207_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_208_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $2, %ymm6, %ymm7 -vpshufb mask_209_1(%rip), %ymm7, %ymm5 -vpand mask_210_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_211_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_212_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_213_1(%rip), %ymm7, %ymm5 -vpand mask_214_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_215_1(%rip), %ymm8, %ymm5 -vpand mask_216_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_217_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_218_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vmovdqa %ymm1, 0(%rdi) -vmovdqa %ymm2, 32(%rdi) -vmovdqa %ymm3, 64(%rdi) -ret diff --git a/src/kem/ntru/ntruhrss701/avx2/square_336_701_shufbytes.s b/src/kem/ntru/ntruhrss701/avx2/square_336_701_shufbytes.s deleted file mode 100644 index 01fb1879..00000000 --- a/src/kem/ntru/ntruhrss701/avx2/square_336_701_shufbytes.s +++ /dev/null @@ -1,6738 +0,0 @@ -.data -.p2align 5 -mask_0_1: -.byte 0 -.byte 13 -.byte 255 -.byte 255 -.byte 2 -.byte 9 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 12 -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 11 -.byte 255 -.byte 255 -.byte 0 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 - -mask_1_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 - -mask_2_1: -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 - -mask_3_1: -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_4_1: -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_5_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_6_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_7_1: -.byte 255 -.byte 8 -.byte 15 -.byte 255 -.byte 3 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 12 -.byte 255 -.byte 255 -.byte 1 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 8 -.byte 255 -.byte 255 -.byte 3 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 - -mask_8_1: -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 - -mask_9_1: -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_10_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_11_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_12_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_13_1: -.byte 255 -.byte 2 -.byte 15 -.byte 255 -.byte 255 -.byte 4 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 13 -.byte 255 -.byte 255 -.byte 2 -.byte 9 -.byte 255 -.byte 255 -.byte 4 - -mask_14_1: -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 - -mask_15_1: -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x800 - -mask_16_1: -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_17_1: -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_18_1: -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_19_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_20_1: -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 12 -.byte 255 -.byte 255 -.byte 1 -.byte 14 -.byte 255 -.byte 255 -.byte 3 -.byte 10 -.byte 255 -.byte 14 -.byte 0 -.byte 255 -.byte 3 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 - -mask_21_1: -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 - -mask_22_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 - -mask_23_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_24_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_25_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_26_1: -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 13 -.byte 255 -.byte 1 -.byte 8 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 7 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 15 -.byte 255 -.byte 255 -.byte 4 -.byte 11 -.byte 255 -.byte 255 - -mask_27_1: -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x0 - -mask_28_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x0 - -mask_29_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_30_1: -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_31_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_32_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_33_1: -.byte 6 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 14 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 12 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 12 -.byte 255 -.byte 0 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 15 - -mask_34_1: -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 - -mask_35_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x0 - -mask_36_1: -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_37_1: -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_38_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_39_1: -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_40_1: -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 8 -.byte 15 -.byte 255 -.byte 3 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 14 -.byte 255 -.byte 2 -.byte 9 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 13 -.byte 255 - -mask_41_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 - -mask_42_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 - -mask_43_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_44_1: -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_45_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_46_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_47_1: -.byte 1 -.byte 8 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 0 -.byte 7 -.byte 255 -.byte 11 -.byte 1 -.byte 255 -.byte 255 -.byte 7 -.byte 14 -.byte 255 -.byte 2 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 - -mask_48_1: -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_49_1: -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 - -mask_50_1: -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_51_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_52_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_53_1: -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_54_1: -.byte 12 -.byte 2 -.byte 255 -.byte 255 -.byte 8 -.byte 0 -.byte 255 -.byte 3 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 12 -.byte 255 -.byte 255 -.byte 1 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 11 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 15 - -mask_55_1: -.word 0x20 -.word 0x0 -.word 0x401 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 - -mask_56_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 - -mask_57_1: -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_58_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_59_1: -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_60_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_61_1: -.byte 255 -.byte 3 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 11 -.byte 1 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 0 -.byte 13 -.byte 3 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 - -mask_62_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_63_1: -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 - -mask_64_1: -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_65_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_66_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_67_1: -.byte 255 -.byte 14 -.byte 4 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 12 -.byte 255 -.byte 0 -.byte 7 -.byte 14 -.byte 255 -.byte 255 -.byte 4 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 13 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 10 - -mask_68_1: -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x200 - -mask_69_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_70_1: -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_71_1: -.byte 255 -.byte 255 -.byte 5 -.byte 12 -.byte 255 -.byte 0 -.byte 7 -.byte 255 -.byte 255 -.byte 13 -.byte 3 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 15 -.byte 5 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 13 -.byte 255 -.byte 1 -.byte 8 -.byte 255 - -mask_72_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 - -mask_73_1: -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x40 - -mask_74_1: -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_75_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_76_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_77_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_78_1: -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 14 -.byte 255 -.byte 2 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 13 -.byte 255 -.byte 1 -.byte 8 -.byte 15 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_79_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_80_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_81_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_82_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_83_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_84_1: -.byte 12 -.byte 255 -.byte 0 -.byte 7 -.byte 14 -.byte 255 -.byte 2 -.byte 9 -.byte 255 -.byte 255 -.byte 15 -.byte 5 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 15 -.byte 255 -.byte 3 -.byte 10 - -mask_85_1: -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x80 - -mask_86_1: -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x4000 - -mask_87_1: -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_88_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_89_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_90_1: -.byte 12 -.byte 255 -.byte 255 -.byte 1 -.byte 8 -.byte 0 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 15 -.byte 255 -.byte 3 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 - -mask_91_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_92_1: -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 - -mask_93_1: -.word 0x40 -.word 0x0 -.word 0x802 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_94_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_95_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_96_1: -.byte 7 -.byte 14 -.byte 255 -.byte 2 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 11 -.byte 255 -.byte 255 -.byte 0 -.byte 7 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 9 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 - -mask_97_1: -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x8000 - -mask_98_1: -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_99_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_100_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_101_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_102_1: -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 11 -.byte 1 -.byte 255 -.byte 255 -.byte 7 -.byte 14 -.byte 255 -.byte 2 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 13 -.byte 255 -.byte 1 -.byte 8 -.byte 15 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_103_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_104_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_105_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_106_1: -.byte 12 -.byte 255 -.byte 0 -.byte 7 -.byte 14 -.byte 255 -.byte 2 -.byte 9 -.byte 255 -.byte 255 -.byte 15 -.byte 5 -.byte 255 -.byte 10 -.byte 0 -.byte 255 -.byte 4 -.byte 11 -.byte 255 -.byte 255 -.byte 0 -.byte 7 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 15 -.byte 255 -.byte 3 -.byte 10 - -mask_107_1: -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x40 - -mask_108_1: -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2000 - -mask_109_1: -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_110_1: -.byte 12 -.byte 255 -.byte 255 -.byte 1 -.byte 8 -.byte 255 -.byte 13 -.byte 3 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 15 -.byte 255 -.byte 3 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 - -mask_111_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_112_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x400 -.word 0x0 - -mask_113_1: -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_114_1: -.byte 7 -.byte 14 -.byte 255 -.byte 2 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 11 -.byte 255 -.byte 255 -.byte 0 -.byte 7 -.byte 255 -.byte 12 -.byte 2 -.byte 255 -.byte 6 -.byte 13 -.byte 255 -.byte 255 -.byte 2 -.byte 9 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 - -mask_115_1: -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x4000 - -mask_116_1: -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_117_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_118_1: -.byte 7 -.byte 14 -.byte 0 -.byte 255 -.byte 3 -.byte 10 -.byte 255 -.byte 15 -.byte 5 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 13 -.byte 4 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 12 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 - -mask_119_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 - -mask_120_1: -.word 0x40 -.word 0x1 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 - -mask_121_1: -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_122_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_123_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 - -mask_124_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_125_1: -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 13 -.byte 255 -.byte 255 -.byte 2 -.byte 9 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 2 -.byte 15 -.byte 255 -.byte 255 -.byte 4 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 - -mask_126_1: -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 - -mask_127_1: -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_128_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_129_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_130_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_131_1: -.byte 2 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 12 -.byte 255 -.byte 0 -.byte 7 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 14 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 5 - -mask_132_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 - -mask_133_1: -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x400 - -mask_134_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_135_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_136_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 - -mask_137_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_138_1: -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 13 -.byte 255 -.byte 1 -.byte 8 -.byte 15 -.byte 255 -.byte 255 -.byte 4 -.byte 11 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 - -mask_139_1: -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 - -mask_140_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 - -mask_141_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_142_1: -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_143_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_144_1: -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_145_1: -.byte 255 -.byte 4 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 14 -.byte 255 -.byte 2 -.byte 9 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 8 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 0 - -mask_146_1: -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x800 - -mask_147_1: -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_148_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_149_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 - -mask_150_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 - -mask_151_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_152_1: -.byte 7 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 15 -.byte 255 -.byte 3 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 13 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 8 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_153_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_154_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x0 - -mask_155_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_156_1: -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_157_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_158_1: -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_159_1: -.byte 1 -.byte 255 -.byte 6 -.byte 13 -.byte 255 -.byte 255 -.byte 2 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 15 -.byte 255 -.byte 3 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 - -mask_160_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x0 - -mask_161_1: -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_162_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_163_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 - -mask_164_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 - -mask_165_1: -.byte 2 -.byte 9 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 10 -.byte 0 -.byte 255 -.byte 5 -.byte 12 -.byte 255 -.byte 255 -.byte 1 -.byte 8 -.byte 255 -.byte 12 -.byte 2 -.byte 255 -.byte 255 -.byte 8 -.byte 0 -.byte 255 -.byte 3 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 - -mask_166_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x4 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_167_1: -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 - -mask_168_1: -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_169_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_170_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_171_1: -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_172_1: -.byte 13 -.byte 3 -.byte 255 -.byte 8 -.byte 15 -.byte 255 -.byte 255 -.byte 4 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 13 -.byte 255 -.byte 1 -.byte 8 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 12 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 - -mask_173_1: -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 - -mask_174_1: -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_175_1: -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_176_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 - -mask_177_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 - -mask_178_1: -.byte 255 -.byte 4 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 12 -.byte 2 -.byte 255 -.byte 7 -.byte 14 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 14 -.byte 4 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 12 -.byte 255 -.byte 0 -.byte 7 -.byte 255 -.byte 255 - -mask_179_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 - -mask_180_1: -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 - -mask_181_1: -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_182_1: -.byte 255 -.byte 15 -.byte 5 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 13 -.byte 255 -.byte 1 -.byte 8 -.byte 0 -.byte 255 -.byte 3 -.byte 5 -.byte 12 -.byte 255 -.byte 0 -.byte 7 -.byte 14 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 11 - -mask_183_1: -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x100 - -mask_184_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x4010 -.word 0x8000 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_185_1: -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_186_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_187_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_188_1: -.byte 255 -.byte 255 -.byte 6 -.byte 13 -.byte 255 -.byte 1 -.byte 8 -.byte 255 -.byte 255 -.byte 14 -.byte 4 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 14 -.byte 255 -.byte 2 -.byte 9 -.byte 255 - -mask_189_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 - -mask_190_1: -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 - -mask_191_1: -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_192_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_193_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_194_1: -.byte 13 -.byte 255 -.byte 255 -.byte 8 -.byte 15 -.byte 255 -.byte 255 -.byte 4 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 13 -.byte 255 -.byte 1 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_195_1: -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_196_1: -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_197_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_198_1: -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_199_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_200_1: -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 14 -.byte 4 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 12 -.byte 255 -.byte 0 -.byte 7 -.byte 255 -.byte 255 - -mask_201_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 - -mask_202_1: -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 - -mask_203_1: -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_204_1: -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 10 -.byte 0 -.byte 255 -.byte 255 -.byte 6 -.byte 13 -.byte 255 -.byte 1 -.byte 8 -.byte 15 -.byte 255 -.byte 3 -.byte 5 -.byte 255 -.byte 255 -.byte 0 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_205_1: -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_206_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_207_1: -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_208_1: -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_209_1: -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_210_1: -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 11 -.byte 1 -.byte 255 -.byte 255 -.byte 7 -.byte 14 -.byte 255 -.byte 2 -.byte 9 -.byte 255 - -mask_211_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 - -mask_212_1: -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 - -mask_213_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_214_1: -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 12 -.byte 2 -.byte 255 -.byte 255 -.byte 8 -.byte 15 -.byte 255 -.byte 3 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 - -mask_215_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_216_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x0 - -mask_217_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_218_1: -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 5 -.byte 12 -.byte 255 -.byte 255 -.byte 1 -.byte 8 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 11 - -mask_219_1: -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 - -mask_220_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 - -mask_221_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_222_1: -.byte 13 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 14 -.byte 4 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 - -mask_223_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_224_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 - -mask_225_1: -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_226_1: -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_227_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_228_1: -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 0 -.byte 7 -.byte 14 -.byte 255 -.byte 255 -.byte 3 -.byte 10 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 6 - -mask_229_1: -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4 -.word 0x2000 - -mask_230_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_231_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_232_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_233_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_234_1: -.byte 8 -.byte 15 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 14 -.byte 5 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 - -mask_235_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_236_1: -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 - -mask_237_1: -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_238_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_239_1: -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_240_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 0 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 12 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 - -mask_241_1: -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 - -mask_242_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_243_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_244_1: -.byte 3 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 -.byte 8 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 9 -.byte 0 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 - -mask_245_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 - -mask_246_1: -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 - -mask_247_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_248_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_249_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_250_1: -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 - -mask_251_1: -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 - -mask_252_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 - -mask_253_1: -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_254_1: -.byte 255 -.byte 5 -.byte 12 -.byte 255 -.byte 255 -.byte 1 -.byte 8 -.byte 255 -.byte 255 -.byte 3 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 1 - -mask_255_1: -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x400 - -mask_256_1: -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_257_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_258_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_259_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_260_1: -.byte 8 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 7 -.byte 255 -.byte 11 -.byte 1 -.byte 255 -.byte 6 -.byte 13 -.byte 255 -.byte 255 -.byte 2 -.byte 9 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_261_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_262_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x0 - -mask_263_1: -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_264_1: -.byte 255 -.byte 255 -.byte 7 -.byte 14 -.byte 255 -.byte 255 -.byte 3 -.byte 10 -.byte 255 -.byte 255 -.byte 5 -.byte 12 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 - -mask_265_1: -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 - -mask_266_1: -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_267_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_268_1: -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 13 -.byte 3 -.byte 255 -.byte 8 -.byte 15 -.byte 255 -.byte 255 -.byte 4 -.byte 11 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 1 - -mask_269_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_270_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x8000 - -mask_271_1: -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -.text -.global PQCLEAN_NTRUHRSS701_AVX2_square_336_701 -.global _PQCLEAN_NTRUHRSS701_AVX2_square_336_701 -PQCLEAN_NTRUHRSS701_AVX2_square_336_701: -_PQCLEAN_NTRUHRSS701_AVX2_square_336_701: -vmovdqa 0(%rsi), %ymm0 -vpshufb mask_0_1(%rip), %ymm0, %ymm5 -vpand mask_1_1(%rip), %ymm5, %ymm1 -vpand mask_2_1(%rip), %ymm5, %ymm2 -vpand mask_3_1(%rip), %ymm5, %ymm3 -vpshufb mask_4_1(%rip), %ymm0, %ymm5 -vpand mask_5_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_6_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm8 -vpshufb mask_7_1(%rip), %ymm8, %ymm5 -vpand mask_8_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_9_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_10_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_11_1(%rip), %ymm8, %ymm5 -vpand mask_12_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm0, %ymm5 -vpsllq $1, %ymm0, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_13_1(%rip), %ymm6, %ymm5 -vpand mask_14_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_15_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_16_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_17_1(%rip), %ymm6, %ymm5 -vpand mask_18_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_19_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_20_1(%rip), %ymm8, %ymm5 -vpand mask_21_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_22_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_23_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_24_1(%rip), %ymm8, %ymm5 -vpand mask_25_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsllq $1, %ymm6, %ymm7 -vpshufb mask_26_1(%rip), %ymm7, %ymm5 -vpand mask_27_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_28_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_29_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_30_1(%rip), %ymm7, %ymm5 -vpand mask_31_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_32_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_33_1(%rip), %ymm8, %ymm5 -vpand mask_34_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_35_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_36_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_37_1(%rip), %ymm8, %ymm5 -vpand mask_38_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_39_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $2, %ymm6, %ymm7 -vpshufb mask_40_1(%rip), %ymm7, %ymm5 -vpand mask_41_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_42_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_43_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_44_1(%rip), %ymm7, %ymm5 -vpand mask_45_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_46_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_47_1(%rip), %ymm8, %ymm5 -vpand mask_48_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_49_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_50_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_51_1(%rip), %ymm8, %ymm5 -vpand mask_52_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_53_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $61, %ymm6, %ymm5 -vpsllq $3, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_54_1(%rip), %ymm7, %ymm5 -vpand mask_55_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_56_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_57_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_58_1(%rip), %ymm7, %ymm5 -vpand mask_59_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_60_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_61_1(%rip), %ymm8, %ymm5 -vpand mask_62_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_63_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_64_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_65_1(%rip), %ymm8, %ymm5 -vpand mask_66_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsllq $1, %ymm7, %ymm6 -vpshufb mask_67_1(%rip), %ymm6, %ymm5 -vpand mask_68_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_69_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_70_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_71_1(%rip), %ymm8, %ymm5 -vpand mask_72_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_73_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_74_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_75_1(%rip), %ymm8, %ymm5 -vpand mask_76_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_77_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $2, %ymm7, %ymm6 -vpshufb mask_78_1(%rip), %ymm6, %ymm5 -vpand mask_79_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_80_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_81_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_82_1(%rip), %ymm6, %ymm5 -vpand mask_83_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_84_1(%rip), %ymm8, %ymm5 -vpand mask_85_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_86_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_87_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_88_1(%rip), %ymm8, %ymm5 -vpand mask_89_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $61, %ymm7, %ymm5 -vpsllq $3, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_90_1(%rip), %ymm6, %ymm5 -vpand mask_91_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_92_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_93_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_94_1(%rip), %ymm6, %ymm5 -vpand mask_95_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_96_1(%rip), %ymm8, %ymm5 -vpand mask_97_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_98_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_99_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_100_1(%rip), %ymm8, %ymm5 -vpand mask_101_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vmovdqa 32(%rsi), %ymm0 -vpshufb mask_102_1(%rip), %ymm0, %ymm5 -vpand mask_103_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_104_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_105_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm8 -vpshufb mask_106_1(%rip), %ymm8, %ymm5 -vpand mask_107_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_108_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_109_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm0, %ymm5 -vpsllq $1, %ymm0, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_110_1(%rip), %ymm6, %ymm5 -vpand mask_111_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_112_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_113_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_114_1(%rip), %ymm8, %ymm5 -vpand mask_115_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_116_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_117_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm6, %ymm5 -vpsllq $1, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_118_1(%rip), %ymm7, %ymm5 -vpand mask_119_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_120_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_121_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_122_1(%rip), %ymm7, %ymm5 -vpand mask_123_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_124_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_125_1(%rip), %ymm8, %ymm5 -vpand mask_126_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_127_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_128_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_129_1(%rip), %ymm8, %ymm5 -vpand mask_130_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsllq $1, %ymm7, %ymm6 -vpshufb mask_131_1(%rip), %ymm6, %ymm5 -vpand mask_132_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_133_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_134_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_135_1(%rip), %ymm6, %ymm5 -vpand mask_136_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_137_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_138_1(%rip), %ymm8, %ymm5 -vpand mask_139_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_140_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_141_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_142_1(%rip), %ymm8, %ymm5 -vpand mask_143_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_144_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $2, %ymm7, %ymm6 -vpshufb mask_145_1(%rip), %ymm6, %ymm5 -vpand mask_146_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_147_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_148_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_149_1(%rip), %ymm6, %ymm5 -vpand mask_150_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_151_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_152_1(%rip), %ymm8, %ymm5 -vpand mask_153_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_154_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_155_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_156_1(%rip), %ymm8, %ymm5 -vpand mask_157_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_158_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $61, %ymm7, %ymm5 -vpsllq $3, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_159_1(%rip), %ymm6, %ymm5 -vpand mask_160_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_161_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_162_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_163_1(%rip), %ymm6, %ymm5 -vpand mask_164_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_165_1(%rip), %ymm8, %ymm5 -vpand mask_166_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_167_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_168_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_169_1(%rip), %ymm8, %ymm5 -vpand mask_170_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_171_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm6, %ymm7 -vpshufb mask_172_1(%rip), %ymm7, %ymm5 -vpand mask_173_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_174_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_175_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_176_1(%rip), %ymm7, %ymm5 -vpand mask_177_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_178_1(%rip), %ymm8, %ymm5 -vpand mask_179_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_180_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_181_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $2, %ymm6, %ymm7 -vpshufb mask_182_1(%rip), %ymm7, %ymm5 -vpand mask_183_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_184_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_185_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_186_1(%rip), %ymm7, %ymm5 -vpand mask_187_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_188_1(%rip), %ymm8, %ymm5 -vpand mask_189_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_190_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_191_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_192_1(%rip), %ymm8, %ymm5 -vpand mask_193_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vmovdqa 64(%rsi), %ymm0 -vpshufb mask_194_1(%rip), %ymm0, %ymm5 -vpand mask_195_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_196_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_197_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_198_1(%rip), %ymm0, %ymm5 -vpand mask_199_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm8 -vpshufb mask_200_1(%rip), %ymm8, %ymm5 -vpand mask_201_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_202_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_203_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm0, %ymm6 -vpshufb mask_204_1(%rip), %ymm6, %ymm5 -vpand mask_205_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_206_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_207_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_208_1(%rip), %ymm6, %ymm5 -vpand mask_209_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_210_1(%rip), %ymm8, %ymm5 -vpand mask_211_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_212_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_213_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $62, %ymm0, %ymm5 -vpsllq $2, %ymm0, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_214_1(%rip), %ymm6, %ymm5 -vpand mask_215_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_216_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_217_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_218_1(%rip), %ymm8, %ymm5 -vpand mask_219_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_220_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_221_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm6, %ymm7 -vpshufb mask_222_1(%rip), %ymm7, %ymm5 -vpand mask_223_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_224_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_225_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_226_1(%rip), %ymm7, %ymm5 -vpand mask_227_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_228_1(%rip), %ymm8, %ymm5 -vpand mask_229_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_230_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_231_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_232_1(%rip), %ymm8, %ymm5 -vpand mask_233_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $2, %ymm6, %ymm7 -vpshufb mask_234_1(%rip), %ymm7, %ymm5 -vpand mask_235_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_236_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_237_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_238_1(%rip), %ymm7, %ymm5 -vpand mask_239_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_240_1(%rip), %ymm8, %ymm5 -vpand mask_241_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_242_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_243_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $61, %ymm6, %ymm5 -vpsllq $3, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_244_1(%rip), %ymm7, %ymm5 -vpand mask_245_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_246_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_247_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_248_1(%rip), %ymm7, %ymm5 -vpand mask_249_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_250_1(%rip), %ymm8, %ymm5 -vpand mask_251_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_252_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_253_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm7, %ymm5 -vpsllq $1, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_254_1(%rip), %ymm6, %ymm5 -vpand mask_255_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_256_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_257_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_258_1(%rip), %ymm6, %ymm5 -vpand mask_259_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_260_1(%rip), %ymm8, %ymm5 -vpand mask_261_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_262_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_263_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm6, %ymm7 -vpshufb mask_264_1(%rip), %ymm7, %ymm5 -vpand mask_265_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_266_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_267_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_268_1(%rip), %ymm8, %ymm5 -vpand mask_269_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_270_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_271_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vmovdqa %ymm1, 0(%rdi) -vmovdqa %ymm2, 32(%rdi) -vmovdqa %ymm3, 64(%rdi) -ret diff --git a/src/kem/ntru/ntruhrss701/avx2/square_3_701_patience.s b/src/kem/ntru/ntruhrss701/avx2/square_3_701_patience.s deleted file mode 100644 index 481dab57..00000000 --- a/src/kem/ntru/ntruhrss701/avx2/square_3_701_patience.s +++ /dev/null @@ -1,381 +0,0 @@ -.data -.p2align 5 -.text -.global PQCLEAN_NTRUHRSS701_AVX2_square_3_701 -.global _PQCLEAN_NTRUHRSS701_AVX2_square_3_701 -PQCLEAN_NTRUHRSS701_AVX2_square_3_701: -_PQCLEAN_NTRUHRSS701_AVX2_square_3_701: -push %r15 -push %r14 -push %r13 -push %r12 -push %rbx -push %rbp -mov 0(%rsi), %r11 -mov %r11, %r10 -and $0xff, %r10 -mov $0x101010101010101, %rbp -pdep %rbp, %r10, %r10 -mov %r10, 0(%rdi) -mov $0xff00, %rbx -pext %rbx, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 8(%rdi) -mov $0xff0000, %r12 -pext %r12, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 16(%rdi) -mov $0xff000000, %r13 -pext %r13, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 24(%rdi) -mov $0xff00000000, %r14 -pext %r14, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 32(%rdi) -mov $0xff0000000000, %r15 -pext %r15, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 40(%rdi) -mov $0xff000000000000, %r9 -pext %r9, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 48(%rdi) -mov $0xff00000000000000, %r8 -pext %r8, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 56(%rdi) -mov 8(%rsi), %r11 -pext %r13, %r11, %r10 -mov $0x808080808080808, %rdx -pdep %rdx, %r10, %r10 -xor %r10, 0(%rdi) -pext %r14, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 8(%rdi) -pext %r15, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 16(%rdi) -pext %r9, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 24(%rdi) -pext %r8, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 32(%rdi) -mov %r11, %r10 -and $0xff, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 64(%rdi) -pext %rbx, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 72(%rdi) -pext %r12, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 80(%rdi) -mov 16(%rsi), %r11 -pext %r9, %r11, %r10 -mov $0x4040404040404040, %rcx -pdep %rcx, %r10, %r10 -xor %r10, 0(%rdi) -pext %r8, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 8(%rdi) -mov %r11, %r10 -and $0xff, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 40(%rdi) -pext %rbx, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 48(%rdi) -pext %r12, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 56(%rdi) -pext %r13, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 64(%rdi) -pext %r14, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 72(%rdi) -pext %r15, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 80(%rdi) -mov 24(%rsi), %r11 -mov %r11, %r10 -and $0xff, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 16(%rdi) -pext %rbx, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 24(%rdi) -pext %r12, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 32(%rdi) -pext %r13, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 40(%rdi) -pext %r14, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 48(%rdi) -pext %r15, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 56(%rdi) -pext %r9, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 64(%rdi) -pext %r8, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 72(%rdi) -mov 32(%rsi), %r11 -mov $0x7f80, %rax -pext %rax, %r11, %r10 -mov $0x202020202020202, %rbp -pdep %rbp, %r10, %r10 -xor %r10, 0(%rdi) -mov $0x7f8000, %rdx -pext %rdx, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 8(%rdi) -mov $0x7f800000, %rbx -pext %rbx, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x7f80000000, %r12 -pext %r12, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x7f8000000000, %r13 -pext %r13, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x7f800000000000, %r14 -pext %r14, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 40(%rdi) -mov $0x7f80000000000000, %r15 -pext %r15, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 48(%rdi) -mov %r11, %r10 -rol $2, %r10 -and $0x2, %r10 -xor %r10, 56(%rdi) -mov %r11, %r10 -and $0x7f, %r10 -mov $0x40404040404040, %r9 -pdep %r9, %r10, %r10 -xor %r10, 80(%rdi) -mov 40(%rsi), %r11 -pext %r12, %r11, %r10 -mov $0x1010101010101010, %r8 -pdep %r8, %r10, %r10 -xor %r10, 0(%rdi) -pext %r13, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 8(%rdi) -pext %r14, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 16(%rdi) -pext %r15, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 24(%rdi) -mov %r11, %r10 -rol $5, %r10 -and $0x10, %r10 -xor %r10, 32(%rdi) -mov %r11, %r10 -and $0x7f, %r10 -mov $0x202020202020200, %rcx -pdep %rcx, %r10, %r10 -xor %r10, 56(%rdi) -pext %rax, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 64(%rdi) -pext %rdx, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 72(%rdi) -pext %rbx, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 80(%rdi) -mov 48(%rsi), %r11 -pext %r15, %r11, %r10 -mov $0x8080808080808080, %r9 -pdep %r9, %r10, %r10 -xor %r10, 0(%rdi) -mov %r11, %r10 -rol $8, %r10 -and $0x80, %r10 -xor %r10, 8(%rdi) -mov %r11, %r10 -and $0x7f, %r10 -mov $0x1010101010101000, %r12 -pdep %r12, %r10, %r10 -xor %r10, 32(%rdi) -pext %rax, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 40(%rdi) -pext %rdx, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 48(%rdi) -pext %rbx, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 56(%rdi) -mov $0x7f80000000, %r13 -pext %r13, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x7f8000000000, %r14 -pext %r14, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x7f800000000000, %rcx -pext %rcx, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 80(%rdi) -mov 56(%rsi), %r11 -mov %r11, %r10 -and $0x7f, %r10 -mov $0x8080808080808000, %rbp -pdep %rbp, %r10, %r10 -xor %r10, 8(%rdi) -pext %rax, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 16(%rdi) -pext %rdx, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 24(%rdi) -pext %rbx, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 32(%rdi) -pext %r13, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 40(%rdi) -pext %r14, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 48(%rdi) -pext %rcx, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 56(%rdi) -pext %r15, %r11, %r10 -pdep %r9, %r10, %r10 -xor %r10, 64(%rdi) -mov %r11, %r10 -rol $8, %r10 -and $0x80, %r10 -xor %r10, 72(%rdi) -mov 64(%rsi), %r11 -mov $0x3fc000, %r12 -pext %r12, %r11, %r10 -mov $0x404040404040404, %r8 -pdep %r8, %r10, %r10 -xor %r10, 0(%rdi) -mov $0x3fc00000, %rbp -pext %rbp, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 8(%rdi) -mov $0x3fc0000000, %rax -pext %rax, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x3fc000000000, %rdx -pext %rdx, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x3fc00000000000, %rbx -pext %rbx, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x3fc0000000000000, %r13 -pext %r13, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 40(%rdi) -mov $0xc000000000000000, %r14 -pext %r14, %r11, %r10 -mov $0x404, %rcx -pdep %rcx, %r10, %r10 -xor %r10, 48(%rdi) -mov %r11, %r10 -and $0x7f, %r10 -mov $0x8080808080808000, %r15 -pdep %r15, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x3f80, %r9 -pext %r9, %r11, %r10 -mov $0x80808080808080, %r12 -pdep %r12, %r10, %r10 -xor %r10, 80(%rdi) -mov 72(%rsi), %r11 -pext %rdx, %r11, %r10 -mov $0x2020202020202020, %rbp -pdep %rbp, %r10, %r10 -xor %r10, 0(%rdi) -pext %rbx, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 8(%rdi) -pext %r13, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 16(%rdi) -pext %r14, %r11, %r10 -mov $0x2020, %rax -pdep %rax, %r10, %r10 -xor %r10, 24(%rdi) -mov %r11, %r10 -and $0x3f, %r10 -mov $0x404040404040000, %r8 -pdep %r8, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x3fc0, %rcx -pext %rcx, %r11, %r10 -mov $0x404040404040404, %r15 -pdep %r15, %r10, %r10 -xor %r10, 56(%rdi) -mov $0x3fc000, %r9 -pext %r9, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x3fc00000, %r12 -pext %r12, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x3fc0000000, %rdx -pext %rdx, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 80(%rdi) -mov 80(%rsi), %r11 -mov %r11, %r10 -and $0x3f, %r10 -mov $0x2020202020200000, %rbx -pdep %rbx, %r10, %r10 -xor %r10, 24(%rdi) -pext %rcx, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 32(%rdi) -pext %r9, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 40(%rdi) -pext %r12, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 48(%rdi) -pext %rdx, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 56(%rdi) -mov $0x3fc000000000, %r13 -pext %r13, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x3fc00000000000, %r14 -pext %r14, %r11, %r10 -pdep %rbp, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x1fc0000000000000, %rax -pext %rax, %r11, %r10 -mov $0x20202020202020, %r8 -pdep %r8, %r10, %r10 -xor %r10, 80(%rdi) -movq $0x0, 88(%rdi) -pop %rbp -pop %rbx -pop %r12 -pop %r13 -pop %r14 -pop %r15 -ret diff --git a/src/kem/ntru/ntruhrss701/avx2/square_42_701_shufbytes.s b/src/kem/ntru/ntruhrss701/avx2/square_42_701_shufbytes.s deleted file mode 100644 index d33008b9..00000000 --- a/src/kem/ntru/ntruhrss701/avx2/square_42_701_shufbytes.s +++ /dev/null @@ -1,5974 +0,0 @@ -.data -.p2align 5 -mask_0_1: -.byte 0 -.byte 255 -.byte 4 -.byte 15 -.byte 255 -.byte 9 -.byte 255 -.byte 6 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 15 -.byte 1 -.byte 12 -.byte 5 -.byte 0 -.byte 11 -.byte 255 -.byte 5 -.byte 255 -.byte 2 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 12 -.byte 255 - -mask_1_1: -.word 0x1 -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 - -mask_2_1: -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 - -mask_3_1: -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_4_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_5_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_6_1: -.byte 9 -.byte 255 -.byte 3 -.byte 14 -.byte 255 -.byte 255 -.byte 4 -.byte 15 -.byte 255 -.byte 9 -.byte 5 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 11 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 3 -.byte 14 - -mask_7_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x800 - -mask_8_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 - -mask_9_1: -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_10_1: -.byte 0 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 10 -.byte 6 -.byte 255 -.byte 0 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 1 -.byte 12 -.byte 255 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 13 - -mask_11_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 - -mask_12_1: -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x2000 - -mask_13_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_14_1: -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_15_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_16_1: -.byte 255 -.byte 10 -.byte 255 -.byte 14 -.byte 0 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 10 -.byte 6 -.byte 255 -.byte 0 -.byte 11 -.byte 255 -.byte 6 -.byte 0 -.byte 3 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 4 - -mask_17_1: -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_18_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x800 - -mask_19_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x140 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_20_1: -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_21_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_22_1: -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 11 -.byte 7 -.byte 255 -.byte 1 -.byte 12 -.byte 255 -.byte 255 -.byte 2 -.byte 13 -.byte 255 -.byte 255 -.byte 2 -.byte 13 -.byte 255 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 - -mask_23_1: -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 - -mask_24_1: -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_25_1: -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_26_1: -.byte 14 -.byte 0 -.byte 11 -.byte 4 -.byte 15 -.byte 1 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 10 -.byte 255 -.byte 7 -.byte 255 -.byte 1 -.byte 12 -.byte 255 -.byte 7 -.byte 255 -.byte 4 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 14 -.byte 0 -.byte 255 -.byte 255 - -mask_27_1: -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 - -mask_28_1: -.word 0x200 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 - -mask_29_1: -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_30_1: -.byte 255 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 255 -.byte 2 -.byte 13 -.byte 255 -.byte 255 -.byte 3 -.byte 13 -.byte 255 -.byte 255 -.byte 3 -.byte 14 -.byte 255 -.byte 8 -.byte 4 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 - -mask_31_1: -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 - -mask_32_1: -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 - -mask_33_1: -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_34_1: -.byte 255 -.byte 15 -.byte 11 -.byte 255 -.byte 5 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 11 -.byte 255 -.byte 8 -.byte 255 -.byte 2 -.byte 14 -.byte 255 -.byte 8 -.byte 255 -.byte 5 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 15 -.byte 1 -.byte 255 - -mask_35_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 - -mask_36_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 - -mask_37_1: -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_38_1: -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_39_1: -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_40_1: -.byte 13 -.byte 255 -.byte 0 -.byte 3 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 255 -.byte 3 -.byte 14 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 15 -.byte 255 -.byte 9 -.byte 5 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 0 -.byte 11 - -mask_41_1: -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x1000 - -mask_42_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 - -mask_43_1: -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_44_1: -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_45_1: -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_46_1: -.byte 255 -.byte 255 -.byte 1 -.byte 12 -.byte 255 -.byte 6 -.byte 255 -.byte 3 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 9 -.byte 255 -.byte 4 -.byte 15 -.byte 255 -.byte 9 -.byte 5 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 2 - -mask_47_1: -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x400 - -mask_48_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_49_1: -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_50_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_51_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 - -mask_52_1: -.byte 3 -.byte 14 -.byte 7 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 13 -.byte 255 -.byte 10 -.byte 255 -.byte 4 -.byte 0 -.byte 255 -.byte 3 -.byte 14 -.byte 0 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 1 - -mask_53_1: -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_54_1: -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x1000 - -mask_55_1: -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_56_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_57_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_58_1: -.byte 12 -.byte 255 -.byte 255 -.byte 2 -.byte 13 -.byte 255 -.byte 7 -.byte 255 -.byte 4 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 10 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 10 -.byte 6 -.byte 0 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 1 -.byte 12 -.byte 255 -.byte 255 -.byte 255 - -mask_59_1: -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 - -mask_60_1: -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x0 - -mask_61_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_62_1: -.byte 255 -.byte 14 -.byte 255 -.byte 8 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 14 -.byte 255 -.byte 11 -.byte 255 -.byte 5 -.byte 1 -.byte 255 -.byte 4 -.byte 15 -.byte 1 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 - -mask_63_1: -.word 0x8000 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 - -mask_64_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 - -mask_65_1: -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_66_1: -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_67_1: -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_68_1: -.byte 2 -.byte 13 -.byte 255 -.byte 255 -.byte 3 -.byte 14 -.byte 255 -.byte 8 -.byte 4 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 11 -.byte 7 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 2 -.byte 13 -.byte 255 -.byte 255 - -mask_69_1: -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 - -mask_70_1: -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 - -mask_71_1: -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_72_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_73_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_74_1: -.byte 255 -.byte 4 -.byte 15 -.byte 255 -.byte 9 -.byte 255 -.byte 6 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 15 -.byte 1 -.byte 12 -.byte 255 -.byte 6 -.byte 11 -.byte 255 -.byte 5 -.byte 255 -.byte 2 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 12 -.byte 255 -.byte 255 - -mask_75_1: -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 - -mask_76_1: -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 - -mask_77_1: -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_78_1: -.byte 255 -.byte 3 -.byte 14 -.byte 255 -.byte 255 -.byte 4 -.byte 15 -.byte 255 -.byte 9 -.byte 5 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 0 -.byte 2 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 3 -.byte 14 -.byte 255 - -mask_79_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 - -mask_80_1: -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 - -mask_81_1: -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_82_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_83_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_84_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_85_1: -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 255 -.byte 2 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 8 -.byte 255 -.byte 5 -.byte 255 -.byte 8 -.byte 4 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 255 -.byte 255 -.byte 15 -.byte 1 -.byte 255 -.byte 255 -.byte 6 - -mask_86_1: -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4 -.word 0x0 - -mask_87_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x100 - -mask_88_1: -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_89_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_90_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_91_1: -.byte 2 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 255 -.byte 2 -.byte 13 -.byte 255 -.byte 255 -.byte 3 -.byte 14 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 14 -.byte 0 -.byte 11 -.byte 255 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 7 - -mask_92_1: -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x2000 - -mask_93_1: -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 - -mask_94_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_95_1: -.byte 8 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 255 -.byte 3 -.byte 14 -.byte 0 -.byte 255 -.byte 4 -.byte 15 -.byte 255 -.byte 9 -.byte 255 -.byte 6 -.byte 255 -.byte 9 -.byte 5 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 0 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 6 - -mask_96_1: -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 - -mask_97_1: -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x8000 - -mask_98_1: -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_99_1: -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 12 -.byte 255 -.byte 9 -.byte 255 -.byte 3 -.byte 14 -.byte 255 -.byte 255 -.byte 4 -.byte 15 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 15 -.byte 1 -.byte 12 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 - -mask_100_1: -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_101_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 - -mask_102_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_103_1: -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 255 -.byte 4 -.byte 15 -.byte 1 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 6 -.byte 255 -.byte 0 -.byte 11 -.byte 255 -.byte 255 -.byte 1 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 - -mask_104_1: -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 - -mask_105_1: -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_106_1: -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_107_1: -.byte 7 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 13 -.byte 255 -.byte 10 -.byte 255 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 5 -.byte 7 -.byte 0 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 13 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 - -mask_108_1: -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 - -mask_109_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 - -mask_110_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_111_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_112_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_113_1: -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 0 -.byte 11 -.byte 255 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 11 -.byte 6 -.byte 255 -.byte 255 -.byte 11 -.byte 7 -.byte 255 -.byte 1 -.byte 12 -.byte 255 -.byte 255 -.byte 2 -.byte 13 -.byte 255 -.byte 255 -.byte 3 -.byte 255 - -mask_114_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x80 - -mask_115_1: -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 - -mask_116_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_117_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_118_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_119_1: -.byte 255 -.byte 8 -.byte 255 -.byte 5 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 14 -.byte 0 -.byte 11 -.byte 255 -.byte 15 -.byte 1 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 1 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 9 -.byte 255 - -mask_120_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 - -mask_121_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 - -mask_122_1: -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_123_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_124_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_125_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_126_1: -.byte 6 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 15 -.byte 1 -.byte 12 -.byte 255 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 11 -.byte 255 -.byte 8 -.byte 255 -.byte 2 -.byte 13 -.byte 255 -.byte 255 -.byte 3 -.byte 14 -.byte 255 -.byte 255 -.byte 4 - -mask_127_1: -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x4000 - -mask_128_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x0 - -mask_129_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_130_1: -.byte 15 -.byte 255 -.byte 9 -.byte 255 -.byte 6 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 15 -.byte 1 -.byte 12 -.byte 5 -.byte 255 -.byte 2 -.byte 255 -.byte 12 -.byte 8 -.byte 255 -.byte 2 -.byte 13 -.byte 255 -.byte 255 -.byte 3 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 9 -.byte 255 - -mask_131_1: -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x0 - -mask_132_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 - -mask_133_1: -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_134_1: -.byte 255 -.byte 0 -.byte 255 -.byte 1 -.byte 12 -.byte 255 -.byte 255 -.byte 2 -.byte 13 -.byte 255 -.byte 0 -.byte 3 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 12 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 4 -.byte 15 -.byte 255 -.byte 255 - -mask_135_1: -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 - -mask_136_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x0 - -mask_137_1: -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_138_1: -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_139_1: -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_140_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_141_1: -.byte 5 -.byte 255 -.byte 255 -.byte 10 -.byte 6 -.byte 255 -.byte 0 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 6 -.byte 255 -.byte 3 -.byte 255 -.byte 13 -.byte 9 -.byte 255 -.byte 3 -.byte 14 -.byte 255 -.byte 255 -.byte 4 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 10 - -mask_142_1: -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x0 - -mask_143_1: -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x4000 - -mask_144_1: -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_145_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_146_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_147_1: -.byte 11 -.byte 255 -.byte 8 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 14 -.byte 255 -.byte 8 -.byte 4 -.byte 255 -.byte 255 -.byte 9 -.byte 4 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 10 -.byte 255 -.byte 14 -.byte 0 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 - -mask_148_1: -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 - -mask_149_1: -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x400 -.word 0x0 - -mask_150_1: -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_151_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_152_1: -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_153_1: -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 11 -.byte 7 -.byte 255 -.byte 1 -.byte 12 -.byte 255 -.byte 255 -.byte 2 -.byte 13 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 255 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 0 -.byte 255 - -mask_154_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x2 - -mask_155_1: -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_156_1: -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_157_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_158_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_159_1: -.byte 255 -.byte 12 -.byte 255 -.byte 9 -.byte 2 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 15 -.byte 8 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 14 -.byte 0 -.byte 11 -.byte 255 -.byte 15 -.byte 1 -.byte 255 -.byte 255 -.byte 6 -.byte 255 - -mask_160_1: -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x0 - -mask_161_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 - -mask_162_1: -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_163_1: -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 12 -.byte 8 -.byte 255 -.byte 2 -.byte 13 -.byte 255 -.byte 255 -.byte 3 -.byte 14 -.byte 255 -.byte 8 -.byte 10 -.byte 255 -.byte 14 -.byte 255 -.byte 11 -.byte 255 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 - -mask_164_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 - -mask_165_1: -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 - -mask_166_1: -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_167_1: -.byte 11 -.byte 255 -.byte 5 -.byte 255 -.byte 2 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 8 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_168_1: -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_169_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_170_1: -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_171_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_172_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_173_1: -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 14 -.byte 255 -.byte 8 -.byte 4 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 0 - -mask_174_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x8000 - -mask_175_1: -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_176_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_177_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 - -mask_178_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 - -mask_179_1: -.byte 1 -.byte 12 -.byte 255 -.byte 6 -.byte 255 -.byte 3 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 9 -.byte 2 -.byte 13 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_180_1: -.word 0x2000 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 - -mask_181_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_182_1: -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_183_1: -.byte 0 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 15 -.byte 8 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 0 -.byte 11 -.byte 255 -.byte 255 - -mask_184_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 - -mask_185_1: -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x10 -.word 0x0 - -mask_186_1: -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_187_1: -.byte 255 -.byte 2 -.byte 13 -.byte 255 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 13 -.byte 9 -.byte 255 -.byte 3 -.byte 14 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_188_1: -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 - -mask_189_1: -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_190_1: -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_191_1: -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 9 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 1 -.byte 12 -.byte 255 - -mask_192_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x8000 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 - -mask_193_1: -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 - -mask_194_1: -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_195_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_196_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_197_1: -.byte 255 -.byte 255 -.byte 3 -.byte 14 -.byte 255 -.byte 8 -.byte 4 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 14 -.byte 10 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 0 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_198_1: -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 - -mask_199_1: -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_200_1: -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_201_1: -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 7 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 1 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 7 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 13 - -mask_202_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x200 - -mask_203_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4 - -mask_204_1: -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_205_1: -.byte 14 -.byte 255 -.byte 255 -.byte 4 -.byte 15 -.byte 255 -.byte 9 -.byte 5 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 0 -.byte 11 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 - -mask_206_1: -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 - -mask_207_1: -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_208_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_209_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_210_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_211_1: -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 2 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 8 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 3 - -mask_212_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_213_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x200 - -mask_214_1: -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_215_1: -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 10 -.byte 6 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 1 -.byte 12 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_216_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_217_1: -.word 0x80 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_218_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_219_1: -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_220_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_221_1: -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 0 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 6 -.byte 2 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 255 - -mask_222_1: -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_223_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 - -mask_224_1: -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_225_1: -.byte 4 -.byte 15 -.byte 1 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 10 -.byte 255 -.byte 7 -.byte 255 -.byte 1 -.byte 12 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 6 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_226_1: -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_227_1: -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x1000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 - -mask_228_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_229_1: -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 1 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 0 -.byte 255 -.byte 13 -.byte 255 -.byte 7 -.byte 3 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 14 -.byte 255 -.byte 255 - -mask_230_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x8 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 - -mask_231_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 - -mask_232_1: -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_233_1: -.byte 255 -.byte 5 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 11 -.byte 255 -.byte 8 -.byte 255 -.byte 2 -.byte 13 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 7 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_234_1: -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_235_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_236_1: -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_237_1: -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 255 -.byte 5 -.byte 1 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 7 -.byte 255 -.byte 1 -.byte 3 -.byte 14 -.byte 255 -.byte 8 -.byte 4 -.byte 255 -.byte 255 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 15 -.byte 1 - -mask_238_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x100 - -mask_239_1: -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8 - -mask_240_1: -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -.text -.global PQCLEAN_NTRUHRSS701_AVX2_square_42_701 -.global _PQCLEAN_NTRUHRSS701_AVX2_square_42_701 -PQCLEAN_NTRUHRSS701_AVX2_square_42_701: -_PQCLEAN_NTRUHRSS701_AVX2_square_42_701: -vmovdqa 0(%rsi), %ymm0 -vpshufb mask_0_1(%rip), %ymm0, %ymm5 -vpand mask_1_1(%rip), %ymm5, %ymm1 -vpand mask_2_1(%rip), %ymm5, %ymm2 -vpand mask_3_1(%rip), %ymm5, %ymm3 -vpshufb mask_4_1(%rip), %ymm0, %ymm5 -vpand mask_5_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm8 -vpshufb mask_6_1(%rip), %ymm8, %ymm5 -vpand mask_7_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_8_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_9_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm0, %ymm5 -vpsllq $1, %ymm0, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_10_1(%rip), %ymm6, %ymm5 -vpand mask_11_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_12_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_13_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_14_1(%rip), %ymm6, %ymm5 -vpand mask_15_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_16_1(%rip), %ymm8, %ymm5 -vpand mask_17_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_18_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_19_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_20_1(%rip), %ymm8, %ymm5 -vpand mask_21_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm6, %ymm7 -vpshufb mask_22_1(%rip), %ymm7, %ymm5 -vpand mask_23_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_24_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_25_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_26_1(%rip), %ymm8, %ymm5 -vpand mask_27_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_28_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_29_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $62, %ymm6, %ymm5 -vpsllq $2, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_30_1(%rip), %ymm7, %ymm5 -vpand mask_31_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_32_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_33_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_34_1(%rip), %ymm8, %ymm5 -vpand mask_35_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_36_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_37_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_38_1(%rip), %ymm8, %ymm5 -vpand mask_39_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsllq $1, %ymm7, %ymm6 -vpshufb mask_40_1(%rip), %ymm6, %ymm5 -vpand mask_41_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_42_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_43_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_44_1(%rip), %ymm6, %ymm5 -vpand mask_45_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_46_1(%rip), %ymm8, %ymm5 -vpand mask_47_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_48_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_49_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_50_1(%rip), %ymm8, %ymm5 -vpand mask_51_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsrlq $62, %ymm7, %ymm5 -vpsllq $2, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_52_1(%rip), %ymm6, %ymm5 -vpand mask_53_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_54_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_55_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_56_1(%rip), %ymm6, %ymm5 -vpand mask_57_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_58_1(%rip), %ymm8, %ymm5 -vpand mask_59_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_60_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_61_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm6, %ymm5 -vpsllq $1, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_62_1(%rip), %ymm7, %ymm5 -vpand mask_63_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_64_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_65_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_66_1(%rip), %ymm7, %ymm5 -vpand mask_67_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_68_1(%rip), %ymm8, %ymm5 -vpand mask_69_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_70_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_71_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_72_1(%rip), %ymm8, %ymm5 -vpand mask_73_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsllq $1, %ymm7, %ymm6 -vpshufb mask_74_1(%rip), %ymm6, %ymm5 -vpand mask_75_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_76_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_77_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_78_1(%rip), %ymm8, %ymm5 -vpand mask_79_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_80_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_81_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_82_1(%rip), %ymm8, %ymm5 -vpand mask_83_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_84_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vmovdqa 32(%rsi), %ymm0 -vpshufb mask_85_1(%rip), %ymm0, %ymm5 -vpand mask_86_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_87_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_88_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_89_1(%rip), %ymm0, %ymm5 -vpand mask_90_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpermq $78, %ymm0, %ymm8 -vpshufb mask_91_1(%rip), %ymm8, %ymm5 -vpand mask_92_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_93_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_94_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm0, %ymm6 -vpshufb mask_95_1(%rip), %ymm6, %ymm5 -vpand mask_96_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_97_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_98_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_99_1(%rip), %ymm8, %ymm5 -vpand mask_100_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_101_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_102_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $62, %ymm0, %ymm5 -vpsllq $2, %ymm0, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_103_1(%rip), %ymm6, %ymm5 -vpand mask_104_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_105_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_106_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_107_1(%rip), %ymm8, %ymm5 -vpand mask_108_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_109_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_110_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_111_1(%rip), %ymm8, %ymm5 -vpand mask_112_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsllq $1, %ymm6, %ymm7 -vpshufb mask_113_1(%rip), %ymm7, %ymm5 -vpand mask_114_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_115_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_116_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_117_1(%rip), %ymm7, %ymm5 -vpand mask_118_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_119_1(%rip), %ymm8, %ymm5 -vpand mask_120_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_121_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_122_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_123_1(%rip), %ymm8, %ymm5 -vpand mask_124_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_125_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $2, %ymm6, %ymm7 -vpshufb mask_126_1(%rip), %ymm7, %ymm5 -vpand mask_127_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_128_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_129_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_130_1(%rip), %ymm8, %ymm5 -vpand mask_131_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_132_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_133_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $61, %ymm6, %ymm5 -vpsllq $3, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_134_1(%rip), %ymm7, %ymm5 -vpand mask_135_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_136_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_137_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_138_1(%rip), %ymm7, %ymm5 -vpand mask_139_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_140_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_141_1(%rip), %ymm8, %ymm5 -vpand mask_142_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_143_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_144_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_145_1(%rip), %ymm8, %ymm5 -vpand mask_146_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsrlq $63, %ymm7, %ymm5 -vpsllq $1, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_147_1(%rip), %ymm6, %ymm5 -vpand mask_148_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_149_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_150_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_151_1(%rip), %ymm6, %ymm5 -vpand mask_152_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_153_1(%rip), %ymm8, %ymm5 -vpand mask_154_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_155_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_156_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_157_1(%rip), %ymm8, %ymm5 -vpand mask_158_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsllq $1, %ymm6, %ymm7 -vpshufb mask_159_1(%rip), %ymm7, %ymm5 -vpand mask_160_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_161_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_162_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_163_1(%rip), %ymm8, %ymm5 -vpand mask_164_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_165_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_166_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vmovdqa 64(%rsi), %ymm0 -vpshufb mask_167_1(%rip), %ymm0, %ymm5 -vpand mask_168_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_169_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_170_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_171_1(%rip), %ymm0, %ymm5 -vpand mask_172_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm8 -vpshufb mask_173_1(%rip), %ymm8, %ymm5 -vpand mask_174_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_175_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_176_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_177_1(%rip), %ymm8, %ymm5 -vpand mask_178_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsllq $1, %ymm0, %ymm6 -vpshufb mask_179_1(%rip), %ymm6, %ymm5 -vpand mask_180_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_181_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_182_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_183_1(%rip), %ymm8, %ymm5 -vpand mask_184_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_185_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_186_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $2, %ymm0, %ymm6 -vpshufb mask_187_1(%rip), %ymm6, %ymm5 -vpand mask_188_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_189_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_190_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_191_1(%rip), %ymm8, %ymm5 -vpand mask_192_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_193_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_194_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_195_1(%rip), %ymm8, %ymm5 -vpand mask_196_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpsrlq $61, %ymm0, %ymm5 -vpsllq $3, %ymm0, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_197_1(%rip), %ymm6, %ymm5 -vpand mask_198_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_199_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_200_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_201_1(%rip), %ymm8, %ymm5 -vpand mask_202_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_203_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_204_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm6, %ymm5 -vpsllq $1, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_205_1(%rip), %ymm7, %ymm5 -vpand mask_206_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_207_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_208_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_209_1(%rip), %ymm7, %ymm5 -vpand mask_210_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_211_1(%rip), %ymm8, %ymm5 -vpand mask_212_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_213_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_214_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm7, %ymm5 -vpsllq $1, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_215_1(%rip), %ymm6, %ymm5 -vpand mask_216_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_217_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_218_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpshufb mask_219_1(%rip), %ymm6, %ymm5 -vpand mask_220_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_221_1(%rip), %ymm8, %ymm5 -vpand mask_222_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_223_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_224_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm6, %ymm7 -vpshufb mask_225_1(%rip), %ymm7, %ymm5 -vpand mask_226_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_227_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_228_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_229_1(%rip), %ymm8, %ymm5 -vpand mask_230_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_231_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_232_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $62, %ymm6, %ymm5 -vpsllq $2, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_233_1(%rip), %ymm7, %ymm5 -vpand mask_234_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_235_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_236_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_237_1(%rip), %ymm8, %ymm5 -vpand mask_238_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_239_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_240_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vmovdqa %ymm1, 0(%rdi) -vmovdqa %ymm2, 32(%rdi) -vmovdqa %ymm3, 64(%rdi) -ret diff --git a/src/kem/ntru/ntruhrss701/avx2/square_6_701_patience.s b/src/kem/ntru/ntruhrss701/avx2/square_6_701_patience.s deleted file mode 100644 index facbfca5..00000000 --- a/src/kem/ntru/ntruhrss701/avx2/square_6_701_patience.s +++ /dev/null @@ -1,554 +0,0 @@ -.data -.p2align 5 -.text -.global PQCLEAN_NTRUHRSS701_AVX2_square_6_701 -.global _PQCLEAN_NTRUHRSS701_AVX2_square_6_701 -PQCLEAN_NTRUHRSS701_AVX2_square_6_701: -_PQCLEAN_NTRUHRSS701_AVX2_square_6_701: -push %r15 -push %r14 -push %r13 -push %r12 -push %rbx -push %rbp -mov 0(%rsi), %r11 -mov $0x80100200400801, %rbp -pext %rbp, %r11, %r10 -mov $0x9249, %rbx -pdep %rbx, %r10, %r10 -mov %r10, 0(%rdi) -mov $0x100200400801002, %r12 -pext %r12, %r11, %r10 -pdep %rbx, %r10, %r10 -mov %r10, 8(%rdi) -mov $0x200400801002004, %r13 -pext %r13, %r11, %r10 -pdep %rbx, %r10, %r10 -mov %r10, 16(%rdi) -mov $0x400801002004008, %r14 -pext %r14, %r11, %r10 -pdep %rbx, %r10, %r10 -mov %r10, 24(%rdi) -mov $0x801002004008010, %r15 -pext %r15, %r11, %r10 -pdep %rbx, %r10, %r10 -mov %r10, 32(%rdi) -mov $0x1002004008010020, %r9 -pext %r9, %r11, %r10 -pdep %rbx, %r10, %r10 -mov %r10, 40(%rdi) -mov $0x2004008010020040, %r8 -pext %r8, %r11, %r10 -pdep %rbx, %r10, %r10 -mov %r10, 48(%rdi) -mov $0x4008010020040080, %rdx -pext %rdx, %r11, %r10 -pdep %rbx, %r10, %r10 -mov %r10, 56(%rdi) -mov $0x8010020040080100, %rcx -pext %rcx, %r11, %r10 -pdep %rbx, %r10, %r10 -mov %r10, 64(%rdi) -mov $0x20040080100200, %rax -pext %rax, %r11, %r10 -mov $0x1249, %rbp -pdep %rbp, %r10, %r10 -mov %r10, 72(%rdi) -mov $0x40080100200400, %r12 -pext %r12, %r11, %r10 -pdep %rbp, %r10, %r10 -mov %r10, 80(%rdi) -mov 8(%rsi), %r11 -pext %r13, %r11, %r10 -mov $0x249240000, %r14 -pdep %r14, %r10, %r10 -xor %r10, 0(%rdi) -mov $0x400801002004008, %r15 -pext %r15, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 8(%rdi) -mov $0x801002004008010, %r9 -pext %r9, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x1002004008010020, %r8 -pext %r8, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x2004008010020040, %rdx -pext %rdx, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x4008010020040080, %rcx -pext %rcx, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 40(%rdi) -mov $0x8010020040080100, %rbx -pext %rbx, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 48(%rdi) -pext %rax, %r11, %r10 -mov $0x49240000, %r12 -pdep %r12, %r10, %r10 -xor %r10, 56(%rdi) -mov $0x40080100200400, %rbp -pext %rbp, %r11, %r10 -pdep %r12, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x80100200400801, %r13 -pext %r13, %r11, %r10 -mov $0x49248000, %r15 -pdep %r15, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x100200400801002, %r9 -pext %r9, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 80(%rdi) -mov 16(%rsi), %r11 -mov $0x801002004008010, %r8 -pext %r8, %r11, %r10 -mov $0x9249000000000, %rdx -pdep %rdx, %r10, %r10 -xor %r10, 0(%rdi) -mov $0x1002004008010020, %rcx -pext %rcx, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 8(%rdi) -mov $0x2004008010020040, %rbx -pext %rbx, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x4008010020040080, %r14 -pext %r14, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x8010020040080100, %rax -pext %rax, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x20040080100200, %rbp -pext %rbp, %r11, %r10 -mov $0x1249000000000, %r12 -pdep %r12, %r10, %r10 -xor %r10, 40(%rdi) -mov $0x40080100200400, %r13 -pext %r13, %r11, %r10 -pdep %r12, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x80100200400801, %r9 -pext %r9, %r11, %r10 -mov $0x1249200000000, %r15 -pdep %r15, %r10, %r10 -xor %r10, 56(%rdi) -mov $0x100200400801002, %r8 -pext %r8, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x200400801002004, %rcx -pext %rcx, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x400801002004008, %rbx -pext %rbx, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 80(%rdi) -mov 24(%rsi), %r11 -mov $0x1002008010020040, %r14 -pext %r14, %r11, %r10 -mov $0x9249000000000000, %rax -pdep %rax, %r10, %r10 -rol $6, %r10 -xor %r10, 0(%rdi) -mov $0x2004010020040080, %rdx -pext %rdx, %r11, %r10 -pdep %rax, %r10, %r10 -rol $6, %r10 -xor %r10, 8(%rdi) -mov $0x4008020040080100, %rbp -pext %rbp, %r11, %r10 -pdep %rax, %r10, %r10 -rol $6, %r10 -xor %r10, 16(%rdi) -mov $0x8010040080100200, %r13 -pext %r13, %r11, %r10 -pdep %rax, %r10, %r10 -rol $6, %r10 -xor %r10, 24(%rdi) -mov $0x20080100200400, %r12 -pext %r12, %r11, %r10 -mov $0x9248000000000000, %r9 -pdep %r9, %r10, %r10 -rol $3, %r10 -xor %r10, 32(%rdi) -mov $0x40100200400801, %r8 -pext %r8, %r11, %r10 -pdep %rax, %r10, %r10 -rol $3, %r10 -xor %r10, 40(%rdi) -mov $0x80200400801002, %rcx -pext %rcx, %r11, %r10 -pdep %rax, %r10, %r10 -rol $3, %r10 -xor %r10, 48(%rdi) -mov $0x100400801002004, %rbx -pext %rbx, %r11, %r10 -pdep %rax, %r10, %r10 -rol $3, %r10 -xor %r10, 56(%rdi) -mov $0x200801002004008, %r15 -pext %r15, %r11, %r10 -pdep %rax, %r10, %r10 -rol $3, %r10 -xor %r10, 64(%rdi) -mov $0x401002004008010, %r14 -pext %r14, %r11, %r10 -pdep %rax, %r10, %r10 -rol $3, %r10 -xor %r10, 72(%rdi) -mov $0x800004008010020, %rdx -pext %rdx, %r11, %r10 -mov $0x8249000000000000, %rbp -pdep %rbp, %r10, %r10 -rol $3, %r10 -xor %r10, 80(%rdi) -mov 32(%rsi), %r11 -mov $0x4008010020040080, %r13 -pext %r13, %r11, %r10 -mov $0x924900, %r12 -pdep %r12, %r10, %r10 -xor %r10, 0(%rdi) -mov $0x8010020040080100, %r9 -pext %r9, %r11, %r10 -pdep %r12, %r10, %r10 -xor %r10, 8(%rdi) -mov $0x20040080100200, %r8 -pext %r8, %r11, %r10 -mov $0x124900, %rcx -pdep %rcx, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x40080100200400, %rbx -pext %rbx, %r11, %r10 -pdep %rcx, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x80100200400801, %r15 -pext %r15, %r11, %r10 -mov $0x124920, %r14 -pdep %r14, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x100200400801002, %rax -pext %rax, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 40(%rdi) -mov $0x200400801002004, %rdx -pext %rdx, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x400801002004008, %rbp -pext %rbp, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 56(%rdi) -mov $0x801002004008010, %r13 -pext %r13, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x1002004008010020, %r9 -pext %r9, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x2004008010020040, %r12 -pext %r12, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 80(%rdi) -mov 40(%rsi), %r11 -pext %r8, %r11, %r10 -mov $0x4924000000, %rbx -pdep %rbx, %r10, %r10 -xor %r10, 0(%rdi) -mov $0x40080100200400, %rcx -pext %rcx, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 8(%rdi) -pext %r15, %r11, %r10 -mov $0x4924800000, %rax -pdep %rax, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x100200400801002, %rdx -pext %rdx, %r11, %r10 -pdep %rax, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x200400801002004, %rbp -pext %rbp, %r11, %r10 -pdep %rax, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x400801002004008, %r13 -pext %r13, %r11, %r10 -pdep %rax, %r10, %r10 -xor %r10, 40(%rdi) -mov $0x801002004008010, %r9 -pext %r9, %r11, %r10 -pdep %rax, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x1002004008010020, %r12 -pext %r12, %r11, %r10 -pdep %rax, %r10, %r10 -xor %r10, 56(%rdi) -mov $0x2004008010020040, %r14 -pext %r14, %r11, %r10 -pdep %rax, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x4008010020040080, %r8 -pext %r8, %r11, %r10 -pdep %rax, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x8010020040080100, %rcx -pext %rcx, %r11, %r10 -pdep %rax, %r10, %r10 -xor %r10, 80(%rdi) -mov 48(%rsi), %r11 -pext %r15, %r11, %r10 -mov $0x124920000000000, %rbx -pdep %rbx, %r10, %r10 -xor %r10, 0(%rdi) -pext %rdx, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 8(%rdi) -pext %rbp, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 16(%rdi) -pext %r13, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 24(%rdi) -pext %r9, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 32(%rdi) -pext %r12, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 40(%rdi) -pext %r14, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 48(%rdi) -pext %r8, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 56(%rdi) -pext %rcx, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x20040080100200, %rax -pext %rax, %r11, %r10 -mov $0x24920000000000, %r15 -pdep %r15, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x40080100200400, %rdx -pext %rdx, %r11, %r10 -pdep %r15, %r10, %r10 -xor %r10, 80(%rdi) -mov 56(%rsi), %r11 -mov $0x100200400802004, %rbp -pext %rbp, %r11, %r10 -mov $0x9249000000000000, %r13 -pdep %r13, %r10, %r10 -rol $11, %r10 -xor %r10, 0(%rdi) -mov $0x200400801004008, %r9 -pext %r9, %r11, %r10 -pdep %r13, %r10, %r10 -rol $11, %r10 -xor %r10, 8(%rdi) -mov $0x400801002008010, %r12 -pext %r12, %r11, %r10 -pdep %r13, %r10, %r10 -rol $11, %r10 -xor %r10, 16(%rdi) -mov $0x801002004010020, %r14 -pext %r14, %r11, %r10 -pdep %r13, %r10, %r10 -rol $11, %r10 -xor %r10, 24(%rdi) -mov $0x1002004008020040, %r8 -pext %r8, %r11, %r10 -pdep %r13, %r10, %r10 -rol $11, %r10 -xor %r10, 32(%rdi) -mov $0x2004008010040080, %rcx -pext %rcx, %r11, %r10 -pdep %r13, %r10, %r10 -rol $11, %r10 -xor %r10, 40(%rdi) -mov $0x4008010020080100, %rbx -pext %rbx, %r11, %r10 -pdep %r13, %r10, %r10 -rol $11, %r10 -xor %r10, 48(%rdi) -mov $0x8010020040100200, %rax -pext %rax, %r11, %r10 -pdep %r13, %r10, %r10 -rol $11, %r10 -xor %r10, 56(%rdi) -mov $0x20040080200400, %rdx -pext %rdx, %r11, %r10 -mov $0x9248000000000000, %r15 -pdep %r15, %r10, %r10 -rol $8, %r10 -xor %r10, 64(%rdi) -mov $0x40080100400801, %rbp -pext %rbp, %r11, %r10 -pdep %r13, %r10, %r10 -rol $8, %r10 -xor %r10, 72(%rdi) -mov $0x80100200001002, %r9 -pext %r9, %r11, %r10 -mov $0x9209000000000000, %r12 -pdep %r12, %r10, %r10 -rol $8, %r10 -xor %r10, 80(%rdi) -mov 64(%rsi), %r11 -mov $0x400801002004008, %r14 -pext %r14, %r11, %r10 -mov $0x12492000, %r8 -pdep %r8, %r10, %r10 -xor %r10, 0(%rdi) -mov $0x801002004008010, %rcx -pext %rcx, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 8(%rdi) -mov $0x1002004008010020, %rbx -pext %rbx, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x2004008010020040, %rax -pext %rax, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x4008010020040080, %rdx -pext %rdx, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x8010020040080100, %r15 -pext %r15, %r11, %r10 -pdep %r8, %r10, %r10 -xor %r10, 40(%rdi) -mov $0x20040080100200, %rbp -pext %rbp, %r11, %r10 -mov $0x2492000, %r13 -pdep %r13, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x40080100200400, %r9 -pext %r9, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 56(%rdi) -mov $0x80100200400801, %r12 -pext %r12, %r11, %r10 -mov $0x2492400, %r14 -pdep %r14, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x100200400801002, %rcx -pext %rcx, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x200400801002004, %rbx -pext %rbx, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 80(%rdi) -mov 72(%rsi), %r11 -mov $0x1002004008010020, %rax -pext %rax, %r11, %r10 -mov $0x492480000000, %rdx -pdep %rdx, %r10, %r10 -xor %r10, 0(%rdi) -mov $0x2004008010020040, %r15 -pext %r15, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 8(%rdi) -mov $0x4008010020040080, %r8 -pext %r8, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x8010020040080100, %rbp -pext %rbp, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 24(%rdi) -mov $0x20040080100200, %r9 -pext %r9, %r11, %r10 -mov $0x92480000000, %r13 -pdep %r13, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x40080100200400, %r12 -pext %r12, %r11, %r10 -pdep %r13, %r10, %r10 -xor %r10, 40(%rdi) -mov $0x80100200400801, %rcx -pext %rcx, %r11, %r10 -mov $0x92490000000, %rbx -pdep %rbx, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x100200400801002, %r14 -pext %r14, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 56(%rdi) -mov $0x200400801002004, %rax -pext %rax, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x400801002004008, %r15 -pext %r15, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x801002004008010, %r8 -pext %r8, %r11, %r10 -pdep %rbx, %r10, %r10 -xor %r10, 80(%rdi) -mov 80(%rsi), %r11 -mov $0x8010020040080, %rbp -pext %rbp, %r11, %r10 -mov $0x2492000000000000, %rdx -pdep %rdx, %r10, %r10 -xor %r10, 0(%rdi) -mov $0x10020040080100, %r9 -pext %r9, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 8(%rdi) -mov $0x20040080100200, %r12 -pext %r12, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 16(%rdi) -mov $0x40080100200400, %r13 -pext %r13, %r11, %r10 -pdep %rdx, %r10, %r10 -xor %r10, 24(%rdi) -pext %rcx, %r11, %r10 -mov $0x2492400000000000, %r14 -pdep %r14, %r10, %r10 -xor %r10, 32(%rdi) -mov $0x100200400801002, %rax -pext %rax, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 40(%rdi) -mov $0x200400801002004, %r15 -pext %r15, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 48(%rdi) -mov $0x400801002004008, %r8 -pext %r8, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 56(%rdi) -mov $0x801002004008010, %rbx -pext %rbx, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 64(%rdi) -mov $0x1002004008010020, %rbp -pext %rbp, %r11, %r10 -pdep %r14, %r10, %r10 -xor %r10, 72(%rdi) -mov $0x4008010020040, %r9 -pext %r9, %r11, %r10 -mov $0x492400000000000, %r12 -pdep %r12, %r10, %r10 -xor %r10, 80(%rdi) -movq $0x0, 88(%rdi) -pop %rbp -pop %rbx -pop %r12 -pop %r13 -pop %r14 -pop %r15 -ret diff --git a/src/kem/ntru/ntruhrss701/avx2/square_84_701_shufbytes.s b/src/kem/ntru/ntruhrss701/avx2/square_84_701_shufbytes.s deleted file mode 100644 index 3164fc25..00000000 --- a/src/kem/ntru/ntruhrss701/avx2/square_84_701_shufbytes.s +++ /dev/null @@ -1,4655 +0,0 @@ -.data -.p2align 5 -mask_0_1: -.byte 0 -.byte 6 -.byte 12 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 4 -.byte 10 -.byte 255 -.byte 255 -.byte 3 -.byte 9 -.byte 255 -.byte 0 -.byte 6 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 10 -.byte 255 -.byte 255 -.byte 3 - -mask_1_1: -.word 0x801 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8010 -.word 0x400 -.word 0x20 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 - -mask_2_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1002 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x40 -.word 0x0 - -mask_3_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_4_1: -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 3 -.byte 9 -.byte 15 -.byte 255 -.byte 1 -.byte 7 -.byte 255 -.byte 14 -.byte 0 -.byte 255 -.byte 7 -.byte 13 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 8 -.byte 14 -.byte 255 -.byte 1 -.byte 7 -.byte 255 -.byte 14 -.byte 0 -.byte 255 -.byte 7 -.byte 13 -.byte 255 - -mask_5_1: -.word 0x0 -.word 0x0 -.word 0x1002 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x100 -.word 0x8 - -mask_6_1: -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x2004 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x20 -.word 0x1 -.word 0x0 -.word 0x0 - -mask_7_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8010 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x2004 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_8_1: -.byte 9 -.byte 15 -.byte 255 -.byte 1 -.byte 7 -.byte 255 -.byte 14 -.byte 0 -.byte 255 -.byte 7 -.byte 13 -.byte 255 -.byte 255 -.byte 6 -.byte 12 -.byte 255 -.byte 3 -.byte 9 -.byte 15 -.byte 255 -.byte 1 -.byte 7 -.byte 255 -.byte 14 -.byte 0 -.byte 255 -.byte 7 -.byte 13 -.byte 255 -.byte 0 -.byte 6 -.byte 255 - -mask_9_1: -.word 0x2004 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x40 -.word 0x1002 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x20 - -mask_10_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x100 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x2004 -.word 0x0 -.word 0x0 - -mask_11_1: -.word 0x0 -.word 0x400 -.word 0x20 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8010 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_12_1: -.byte 13 -.byte 255 -.byte 255 -.byte 6 -.byte 12 -.byte 255 -.byte 255 -.byte 4 -.byte 10 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 4 -.byte 10 -.byte 255 -.byte 255 -.byte 3 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_13_1: -.word 0x0 -.word 0x100 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8010 -.word 0x0 -.word 0x0 - -mask_14_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1002 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_15_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_16_1: -.byte 255 -.byte 255 -.byte 4 -.byte 10 -.byte 255 -.byte 255 -.byte 3 -.byte 9 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 9 -.byte 15 -.byte 255 -.byte 1 -.byte 12 -.byte 255 -.byte 255 -.byte 4 -.byte 10 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 3 -.byte 9 -.byte 15 -.byte 255 - -mask_17_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x2004 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1002 -.word 0x80 - -mask_18_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_19_1: -.word 0x0 -.word 0x1002 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x800 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_20_1: -.byte 2 -.byte 8 -.byte 255 -.byte 15 -.byte 0 -.byte 255 -.byte 7 -.byte 13 -.byte 255 -.byte 0 -.byte 6 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 6 -.byte 7 -.byte 255 -.byte 14 -.byte 0 -.byte 255 -.byte 7 -.byte 13 -.byte 255 -.byte 255 -.byte 6 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_21_1: -.word 0x8010 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x40 -.word 0x0 -.word 0x0 - -mask_22_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x20 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x100 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_23_1: -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x2004 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_24_1: -.byte 255 -.byte 7 -.byte 13 -.byte 255 -.byte 255 -.byte 6 -.byte 12 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 4 -.byte 10 -.byte 0 -.byte 255 -.byte 7 -.byte 13 -.byte 255 -.byte 0 -.byte 6 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 6 -.byte 12 -.byte 255 -.byte 255 -.byte 255 - -mask_25_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x8 -.word 0x0 - -mask_26_1: -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x20 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_27_1: -.word 0x100 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1002 -.word 0x80 -.word 0x2004 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_28_1: -.byte 11 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 3 -.byte 9 -.byte 15 -.byte 255 -.byte 2 -.byte 8 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 3 -.byte 9 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 9 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 - -mask_29_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8010 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x2004 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_30_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1002 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 - -mask_31_1: -.word 0x0 -.word 0x4000 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_32_1: -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 9 -.byte 15 -.byte 255 -.byte 2 -.byte 8 -.byte 255 -.byte 15 -.byte 0 -.byte 255 -.byte 7 -.byte 13 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 3 -.byte 9 -.byte 15 -.byte 255 -.byte 2 -.byte 8 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_33_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x20 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8010 -.word 0x400 -.word 0x0 -.word 0x0 - -mask_34_1: -.word 0x0 -.word 0x80 -.word 0x2004 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1002 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_35_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x100 -.word 0x8 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_36_1: -.byte 255 -.byte 0 -.byte 6 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 6 -.byte 12 -.byte 255 -.byte 255 -.byte 5 -.byte 11 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 6 -.byte 12 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 9 - -mask_37_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_38_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8010 - -mask_39_1: -.word 0x400 -.word 0x20 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_40_1: -.byte 255 -.byte 5 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 5 -.byte 11 -.byte 255 -.byte 255 -.byte 3 -.byte 9 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 6 -.byte 12 -.byte 255 -.byte 255 -.byte 5 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_41_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1002 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_42_1: -.word 0x4000 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x100 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_43_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8010 -.word 0x0 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_44_1: -.byte 3 -.byte 9 -.byte 15 -.byte 255 -.byte 2 -.byte 8 -.byte 255 -.byte 15 -.byte 1 -.byte 255 -.byte 8 -.byte 14 -.byte 255 -.byte 0 -.byte 6 -.byte 255 -.byte 9 -.byte 15 -.byte 255 -.byte 2 -.byte 8 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 -.byte 12 -.byte 255 - -mask_45_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x2004 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x20 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_46_1: -.word 0x0 -.word 0x0 -.word 0x8010 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2004 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x40 - -mask_47_1: -.word 0x1002 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_48_1: -.byte 8 -.byte 255 -.byte 15 -.byte 1 -.byte 255 -.byte 8 -.byte 14 -.byte 255 -.byte 255 -.byte 6 -.byte 12 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 12 -.byte 2 -.byte 8 -.byte 255 -.byte 15 -.byte 1 -.byte 255 -.byte 8 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 - -mask_49_1: -.word 0x0 -.word 0x2000 -.word 0x100 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x2004 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_50_1: -.word 0x20 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x200 -.word 0x8010 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 - -mask_51_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_52_1: -.byte 12 -.byte 255 -.byte 255 -.byte 5 -.byte 11 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 3 -.byte 9 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 11 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 9 -.byte 15 -.byte 255 -.byte 2 - -mask_53_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1002 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 - -mask_54_1: -.word 0x0 -.word 0x800 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x2004 -.word 0x0 - -mask_55_1: -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1002 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_56_1: -.byte 255 -.byte 255 -.byte 4 -.byte 10 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 9 -.byte 15 -.byte 255 -.byte 2 -.byte 8 -.byte 255 -.byte 15 -.byte 1 -.byte 11 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 8 -.byte 255 -.byte 15 - -mask_57_1: -.word 0x0 -.word 0x8010 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2000 -.word 0x0 -.word 0x4000 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_58_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x20 -.word 0x1 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8010 -.word 0x400 - -mask_59_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x2004 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_60_1: -.byte 1 -.byte 255 -.byte 8 -.byte 14 -.byte 255 -.byte 1 -.byte 7 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 6 -.byte 12 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 8 -.byte 14 -.byte 255 -.byte 255 -.byte 6 -.byte 12 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 5 -.byte 11 - -mask_61_1: -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x20 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1002 - -mask_62_1: -.word 0x80 -.word 0x2004 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x200 -.word 0x0 -.word 0x0 - -mask_63_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_64_1: -.byte 13 -.byte 255 -.byte 0 -.byte 6 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 6 -.byte 12 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 11 -.byte 255 -.byte 7 -.byte 255 -.byte 14 -.byte 0 -.byte 255 -.byte 7 -.byte 13 -.byte 255 -.byte 0 -.byte 6 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_65_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2004 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1002 -.word 0x80 -.word 0x0 -.word 0x0 - -mask_66_1: -.word 0x0 -.word 0x8010 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x200 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_67_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x1 -.word 0x40 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_68_1: -.byte 255 -.byte 255 -.byte 4 -.byte 10 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 3 -.byte 9 -.byte 15 -.byte 255 -.byte 1 -.byte 255 -.byte 4 -.byte 10 -.byte 255 -.byte 255 -.byte 3 -.byte 9 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 7 - -mask_69_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x4008 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_70_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1002 - -mask_71_1: -.word 0x0 -.word 0x2004 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_72_1: -.byte 255 -.byte 3 -.byte 9 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 9 -.byte 15 -.byte 255 -.byte 1 -.byte 7 -.byte 13 -.byte 255 -.byte 0 -.byte 6 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 3 -.byte 9 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 - -mask_73_1: -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x200 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x4008 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_74_1: -.word 0x800 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8010 -.word 0x0 -.word 0x20 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 - -mask_75_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1002 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_76_1: -.byte 255 -.byte 7 -.byte 13 -.byte 255 -.byte 0 -.byte 6 -.byte 12 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 4 -.byte 10 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 6 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 10 -.byte 255 - -mask_77_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2004 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_78_1: -.word 0x0 -.word 0x0 -.word 0x1002 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x8 - -mask_79_1: -.word 0x200 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2004 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_80_1: -.byte 6 -.byte 12 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 4 -.byte 10 -.byte 255 -.byte 255 -.byte 3 -.byte 9 -.byte 255 -.byte 0 -.byte 6 -.byte 12 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 - -mask_81_1: -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_82_1: -.word 0x2004 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x40 -.word 0x1002 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 - -mask_83_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_84_1: -.byte 10 -.byte 255 -.byte 255 -.byte 3 -.byte 9 -.byte 15 -.byte 255 -.byte 2 -.byte 8 -.byte 255 -.byte 15 -.byte 0 -.byte 255 -.byte 7 -.byte 13 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 9 -.byte 15 -.byte 255 -.byte 1 -.byte 7 -.byte 255 -.byte 255 -.byte 0 -.byte 6 -.byte 255 -.byte 13 -.byte 255 -.byte 255 - -mask_85_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x40 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x200 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_86_1: -.word 0x0 -.word 0x100 -.word 0x4008 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8010 -.word 0x400 -.word 0x0 - -mask_87_1: -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x200 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1002 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_88_1: -.byte 15 -.byte 255 -.byte 2 -.byte 8 -.byte 14 -.byte 255 -.byte 0 -.byte 6 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 6 -.byte 12 -.byte 255 -.byte 255 -.byte 9 -.byte 15 -.byte 255 -.byte 2 -.byte 8 -.byte 255 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 6 -.byte 12 -.byte 255 - -mask_89_1: -.word 0x0 -.word 0x1002 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x40 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_90_1: -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2004 -.word 0x0 -.word 0x4008 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1002 -.word 0x80 - -mask_91_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8010 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_92_1: -.byte 255 -.byte 5 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 5 -.byte 11 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 3 -.byte 5 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 4 -.byte 10 -.byte 255 -.byte 255 -.byte 3 -.byte 9 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 9 - -mask_93_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2004 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x200 - -mask_94_1: -.word 0x8000 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x40 -.word 0x0 -.word 0x0 - -mask_95_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_96_1: -.byte 255 -.byte 5 -.byte 11 -.byte 255 -.byte 255 -.byte 3 -.byte 9 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 9 -.byte 15 -.byte 255 -.byte 2 -.byte 8 -.byte 255 -.byte 255 -.byte 5 -.byte 11 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 9 -.byte 15 -.byte 255 -.byte 2 - -mask_97_1: -.word 0x100 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1002 -.word 0x0 -.word 0x2004 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 - -mask_98_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x200 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x4008 -.word 0x0 - -mask_99_1: -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_100_1: -.byte 8 -.byte 255 -.byte 15 -.byte 1 -.byte 255 -.byte 8 -.byte 14 -.byte 255 -.byte 0 -.byte 6 -.byte 12 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 12 -.byte 14 -.byte 255 -.byte 0 -.byte 6 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 6 -.byte 12 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 12 -.byte 255 - -mask_101_1: -.word 0x0 -.word 0x4000 -.word 0x200 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x1 - -mask_102_1: -.word 0x40 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2004 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_103_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1002 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8010 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_104_1: -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 6 -.byte 12 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 5 -.byte 11 -.byte 255 -.byte 255 -.byte 8 -.byte 14 -.byte 255 -.byte 0 -.byte 6 -.byte 12 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 5 -.byte 11 - -mask_105_1: -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x8 -.word 0x200 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2004 - -mask_106_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x400 -.word 0x0 -.word 0x0 - -mask_107_1: -.word 0x0 -.word 0x0 -.word 0x2004 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1002 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_108_1: -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 3 -.byte 9 -.byte 15 -.byte 255 -.byte 2 -.byte 8 -.byte 255 -.byte 15 -.byte 1 -.byte 255 -.byte 3 -.byte 9 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 9 -.byte 15 -.byte 255 -.byte 2 -.byte 8 -.byte 14 -.byte 255 -.byte 255 -.byte 255 - -mask_109_1: -.word 0x0 -.word 0x20 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1002 -.word 0x80 -.word 0x0 - -mask_110_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x40 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x200 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_111_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x4008 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_112_1: -.byte 255 -.byte 2 -.byte 255 -.byte 9 -.byte 15 -.byte 255 -.byte 2 -.byte 8 -.byte 14 -.byte 255 -.byte 1 -.byte 7 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 3 -.byte 9 -.byte 15 -.byte 255 -.byte 2 -.byte 8 -.byte 255 -.byte 15 -.byte 1 -.byte 255 -.byte 8 -.byte 14 -.byte 255 - -mask_113_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8010 -.word 0x400 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x200 -.word 0x10 - -mask_114_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1002 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x40 -.word 0x2 -.word 0x0 -.word 0x0 - -mask_115_1: -.word 0x4000 -.word 0x200 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x4008 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_116_1: -.byte 1 -.byte 7 -.byte 13 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 5 -.byte 11 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 6 -.byte 12 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 5 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_117_1: -.word 0x1002 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x8 -.word 0x0 -.word 0x0 - -mask_118_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2004 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_119_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2004 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_120_1: -.byte 5 -.byte 0 -.byte 12 -.byte 255 -.byte 255 -.byte 5 -.byte 11 -.byte 255 -.byte 255 -.byte 4 -.byte 10 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 9 -.byte 255 -.byte 5 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 5 -.byte 11 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 - -mask_121_1: -.word 0x4000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x1 -.word 0x0 - -mask_122_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2004 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_123_1: -.word 0x20 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x200 -.word 0x8000 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_124_1: -.byte 10 -.byte 255 -.byte 255 -.byte 2 -.byte 8 -.byte 255 -.byte 15 -.byte 1 -.byte 255 -.byte 8 -.byte 14 -.byte 255 -.byte 1 -.byte 7 -.byte 13 -.byte 255 -.byte 15 -.byte 255 -.byte 2 -.byte 8 -.byte 14 -.byte 255 -.byte 1 -.byte 7 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_125_1: -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1002 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8010 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_126_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4000 -.word 0x200 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1002 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_127_1: -.word 0x0 -.word 0x800 -.word 0x40 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_128_1: -.byte 2 -.byte 255 -.byte 9 -.byte 15 -.byte 255 -.byte 1 -.byte 7 -.byte 13 -.byte 255 -.byte 0 -.byte 6 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 0 - -mask_129_1: -.word 0x20 -.word 0x801 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 - -mask_130_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x40 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x1 -.word 0x0 - -mask_131_1: -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x4008 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_132_1: -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 12 -.byte 255 -.byte 255 -.byte 4 -.byte 10 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 3 -.byte 9 -.byte 255 -.byte 255 - -mask_133_1: -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2004 -.word 0x0 - -mask_134_1: -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_135_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_136_1: -.byte 11 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 3 -.byte 9 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 9 -.byte 15 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 - -mask_137_1: -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x801 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 - -mask_138_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2004 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_139_1: -.word 0x0 -.word 0x8000 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_140_1: -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 0 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 7 -.byte 13 -.byte 255 -.byte 0 -.byte 6 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 6 -.byte 12 -.byte 255 -.byte 255 -.byte 255 - -mask_141_1: -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x10 -.word 0x0 - -mask_142_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x40 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_143_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x4008 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_144_1: -.byte 255 -.byte 0 -.byte 6 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 6 -.byte 12 -.byte 255 -.byte 255 -.byte 5 -.byte 11 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 0 -.byte 255 -.byte 7 -.byte 255 -.byte 255 -.byte 0 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 - -mask_145_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 - -mask_146_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_147_1: -.word 0x800 -.word 0x40 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x20 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_148_1: -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 10 -.byte 255 -.byte 255 -.byte 3 -.byte 9 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 9 -.byte 15 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_149_1: -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x801 -.word 0x0 -.word 0x0 - -mask_150_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2004 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_151_1: -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_152_1: -.byte 3 -.byte 9 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 9 -.byte 15 -.byte 255 -.byte 2 -.byte 8 -.byte 14 -.byte 255 -.byte 0 -.byte 6 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_153_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x4008 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 - -mask_154_1: -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x801 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_155_1: -.word 0x2004 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x40 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_156_1: -.byte 255 -.byte 255 -.byte 255 -.byte 0 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 13 -.byte 255 -.byte 255 -.byte 6 -.byte 12 -.byte 255 -.byte 255 -.byte 5 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_157_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_158_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_159_1: -.word 0x0 -.word 0x100 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_160_1: -.byte 12 -.byte 255 -.byte 255 -.byte 5 -.byte 11 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 3 -.byte 9 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_161_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_162_1: -.word 0x0 -.word 0x1000 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_163_1: -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2004 -.word 0x0 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_164_1: -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 0 -.byte 2 -.byte 255 -.byte 9 -.byte 15 -.byte 255 -.byte 2 -.byte 8 -.byte 14 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 6 - -mask_165_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x4008 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_166_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x801 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 - -mask_167_1: -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_168_1: -.byte 255 -.byte 2 -.byte 8 -.byte 14 -.byte 255 -.byte 1 -.byte 7 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 6 -.byte 12 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 - -mask_169_1: -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x40 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_170_1: -.word 0x100 -.word 0x4008 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_171_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_172_1: -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 9 -.byte 15 - -mask_173_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_174_1: -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x801 - -mask_175_1: -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_176_1: -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 4 -.byte 10 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 9 -.byte 15 -.byte 255 -.byte 2 -.byte 8 -.byte 14 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 - -mask_177_1: -.word 0x0 -.word 0x0 -.word 0x2004 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_178_1: -.word 0x400 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x4008 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 - -mask_179_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x801 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_180_1: -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 1 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 7 -.byte 255 -.byte 14 -.byte 255 -.byte 255 -.byte 6 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 11 -.byte 255 -.byte 255 -.byte 4 - -mask_181_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x40 -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 - -mask_182_1: -.word 0x0 -.word 0x20 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x80 -.word 0x0 - -mask_183_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x40 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_184_1: -.byte 14 -.byte 255 -.byte 255 -.byte 7 -.byte 13 -.byte 255 -.byte 255 -.byte 5 -.byte 11 -.byte 255 -.byte 255 -.byte 4 -.byte 255 -.byte 11 -.byte 255 -.byte 255 -.byte 8 -.byte 255 -.byte 255 -.byte 1 -.byte 7 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 5 -.byte 255 -.byte 255 - -mask_185_1: -.word 0x0 -.word 0x200 -.word 0x10 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x8 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_186_1: -.word 0x2 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x400 -.word 0x0 -.word 0x1 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x200 -.word 0x0 - -mask_187_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x1000 -.word 0x80 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -mask_188_1: -.byte 255 -.byte 4 -.byte 255 -.byte 255 -.byte 255 -.byte 3 -.byte 255 -.byte 255 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 255 -.byte 255 -.byte 1 -.byte 255 -.byte 4 -.byte 10 -.byte 255 -.byte 255 -.byte 2 -.byte 255 -.byte 9 -.byte 15 -.byte 255 -.byte 2 -.byte 8 -.byte 14 -.byte 255 -.byte 1 -.byte 7 -.byte 255 - -mask_189_1: -.word 0x0 -.word 0x0 -.word 0x8000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x2004 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x800 -.word 0x40 - -mask_190_1: -.word 0x1000 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x100 -.word 0x4008 -.word 0x0 -.word 0x0 - -mask_191_1: -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x4 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x20 -.word 0x801 -.word 0x0 -.word 0x0 -.word 0x0 -.word 0x0 - -.text -.global PQCLEAN_NTRUHRSS701_AVX2_square_84_701 -.global _PQCLEAN_NTRUHRSS701_AVX2_square_84_701 -PQCLEAN_NTRUHRSS701_AVX2_square_84_701: -_PQCLEAN_NTRUHRSS701_AVX2_square_84_701: -vmovdqa 0(%rsi), %ymm0 -vpshufb mask_0_1(%rip), %ymm0, %ymm5 -vpand mask_1_1(%rip), %ymm5, %ymm1 -vpand mask_2_1(%rip), %ymm5, %ymm2 -vpand mask_3_1(%rip), %ymm5, %ymm3 -vpermq $78, %ymm0, %ymm8 -vpshufb mask_4_1(%rip), %ymm8, %ymm5 -vpand mask_5_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_6_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_7_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm0, %ymm6 -vpshufb mask_8_1(%rip), %ymm6, %ymm5 -vpand mask_9_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_10_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_11_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_12_1(%rip), %ymm8, %ymm5 -vpand mask_13_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_14_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_15_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $2, %ymm0, %ymm6 -vpshufb mask_16_1(%rip), %ymm6, %ymm5 -vpand mask_17_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_18_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_19_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_20_1(%rip), %ymm8, %ymm5 -vpand mask_21_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_22_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_23_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $61, %ymm0, %ymm5 -vpsllq $3, %ymm0, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_24_1(%rip), %ymm6, %ymm5 -vpand mask_25_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_26_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_27_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_28_1(%rip), %ymm8, %ymm5 -vpand mask_29_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_30_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_31_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm6, %ymm7 -vpshufb mask_32_1(%rip), %ymm7, %ymm5 -vpand mask_33_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_34_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_35_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_36_1(%rip), %ymm8, %ymm5 -vpand mask_37_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_38_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_39_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $2, %ymm6, %ymm7 -vpshufb mask_40_1(%rip), %ymm7, %ymm5 -vpand mask_41_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_42_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_43_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_44_1(%rip), %ymm8, %ymm5 -vpand mask_45_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_46_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_47_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $61, %ymm6, %ymm5 -vpsllq $3, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_48_1(%rip), %ymm7, %ymm5 -vpand mask_49_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_50_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_51_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_52_1(%rip), %ymm8, %ymm5 -vpand mask_53_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_54_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_55_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm7, %ymm5 -vpsllq $1, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_56_1(%rip), %ymm6, %ymm5 -vpand mask_57_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_58_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_59_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_60_1(%rip), %ymm8, %ymm5 -vpand mask_61_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_62_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_63_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vmovdqa 32(%rsi), %ymm0 -vpshufb mask_64_1(%rip), %ymm0, %ymm5 -vpand mask_65_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_66_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_67_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm8 -vpshufb mask_68_1(%rip), %ymm8, %ymm5 -vpand mask_69_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_70_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_71_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm0, %ymm6 -vpshufb mask_72_1(%rip), %ymm6, %ymm5 -vpand mask_73_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_74_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_75_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_76_1(%rip), %ymm8, %ymm5 -vpand mask_77_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_78_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_79_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $62, %ymm0, %ymm5 -vpsllq $2, %ymm0, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_80_1(%rip), %ymm6, %ymm5 -vpand mask_81_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_82_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_83_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_84_1(%rip), %ymm8, %ymm5 -vpand mask_85_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_86_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_87_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm6, %ymm7 -vpshufb mask_88_1(%rip), %ymm7, %ymm5 -vpand mask_89_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_90_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_91_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_92_1(%rip), %ymm8, %ymm5 -vpand mask_93_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_94_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_95_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $62, %ymm6, %ymm5 -vpsllq $2, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_96_1(%rip), %ymm7, %ymm5 -vpand mask_97_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_98_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_99_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_100_1(%rip), %ymm8, %ymm5 -vpand mask_101_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_102_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_103_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm7, %ymm6 -vpshufb mask_104_1(%rip), %ymm6, %ymm5 -vpand mask_105_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_106_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_107_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_108_1(%rip), %ymm8, %ymm5 -vpand mask_109_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_110_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_111_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $62, %ymm7, %ymm5 -vpsllq $2, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_112_1(%rip), %ymm6, %ymm5 -vpand mask_113_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_114_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_115_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_116_1(%rip), %ymm8, %ymm5 -vpand mask_117_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_118_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_119_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsllq $1, %ymm6, %ymm7 -vpshufb mask_120_1(%rip), %ymm7, %ymm5 -vpand mask_121_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_122_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_123_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_124_1(%rip), %ymm8, %ymm5 -vpand mask_125_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_126_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_127_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vmovdqa 64(%rsi), %ymm0 -vpshufb mask_128_1(%rip), %ymm0, %ymm5 -vpand mask_129_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_130_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_131_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm0, %ymm8 -vpshufb mask_132_1(%rip), %ymm8, %ymm5 -vpand mask_133_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_134_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_135_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm0, %ymm5 -vpsllq $1, %ymm0, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_136_1(%rip), %ymm6, %ymm5 -vpand mask_137_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_138_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_139_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_140_1(%rip), %ymm8, %ymm5 -vpand mask_141_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_142_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_143_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm6, %ymm5 -vpsllq $1, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_144_1(%rip), %ymm7, %ymm5 -vpand mask_145_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_146_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_147_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_148_1(%rip), %ymm8, %ymm5 -vpand mask_149_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_150_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_151_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm7, %ymm5 -vpsllq $1, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_152_1(%rip), %ymm6, %ymm5 -vpand mask_153_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_154_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_155_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_156_1(%rip), %ymm8, %ymm5 -vpand mask_157_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_158_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_159_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm6, %ymm5 -vpsllq $1, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_160_1(%rip), %ymm7, %ymm5 -vpand mask_161_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_162_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_163_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_164_1(%rip), %ymm8, %ymm5 -vpand mask_165_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_166_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_167_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm7, %ymm5 -vpsllq $1, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_168_1(%rip), %ymm6, %ymm5 -vpand mask_169_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_170_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_171_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_172_1(%rip), %ymm8, %ymm5 -vpand mask_173_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_174_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_175_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm6, %ymm5 -vpsllq $1, %ymm6, %ymm4 -vpermq $147, %ymm5, %ymm7 -vpxor %ymm4, %ymm7, %ymm7 -vpshufb mask_176_1(%rip), %ymm7, %ymm5 -vpand mask_177_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_178_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_179_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm7, %ymm8 -vpshufb mask_180_1(%rip), %ymm8, %ymm5 -vpand mask_181_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_182_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_183_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpsrlq $63, %ymm7, %ymm5 -vpsllq $1, %ymm7, %ymm4 -vpermq $147, %ymm5, %ymm6 -vpxor %ymm4, %ymm6, %ymm6 -vpshufb mask_184_1(%rip), %ymm6, %ymm5 -vpand mask_185_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_186_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_187_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vpermq $78, %ymm6, %ymm8 -vpshufb mask_188_1(%rip), %ymm8, %ymm5 -vpand mask_189_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm1, %ymm1 -vpand mask_190_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm2, %ymm2 -vpand mask_191_1(%rip), %ymm5, %ymm4 -vpxor %ymm4, %ymm3, %ymm3 -vmovdqa %ymm1, 0(%rdi) -vmovdqa %ymm2, 32(%rdi) -vmovdqa %ymm3, 64(%rdi) -ret diff --git a/src/kem/ntru/ntruhrss701/avx2/vec32_sample_iid.s b/src/kem/ntru/ntruhrss701/avx2/vec32_sample_iid.s deleted file mode 100644 index 1760e4f9..00000000 --- a/src/kem/ntru/ntruhrss701/avx2/vec32_sample_iid.s +++ /dev/null @@ -1,1042 +0,0 @@ -.data -.p2align 5 -cast8_to_16: -.byte 255 -.byte 0 -.byte 255 -.byte 1 -.byte 255 -.byte 2 -.byte 255 -.byte 3 -.byte 255 -.byte 4 -.byte 255 -.byte 5 -.byte 255 -.byte 6 -.byte 255 -.byte 7 -.byte 255 -.byte 0 -.byte 255 -.byte 1 -.byte 255 -.byte 2 -.byte 255 -.byte 3 -.byte 255 -.byte 4 -.byte 255 -.byte 5 -.byte 255 -.byte 6 -.byte 255 -.byte 7 -mask_ff: -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -.word 0xff -mask_f: -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -.word 0xf -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 -.text -.global PQCLEAN_NTRUHRSS701_AVX2_vec32_sample_iid -.global _PQCLEAN_NTRUHRSS701_AVX2_vec32_sample_iid -PQCLEAN_NTRUHRSS701_AVX2_vec32_sample_iid: -_PQCLEAN_NTRUHRSS701_AVX2_vec32_sample_iid: -vmovdqa 0(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 32(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 64(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 96(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 128(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 160(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 192(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 224(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 256(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 288(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 320(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 352(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 384(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 416(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 448(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 480(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 512(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 544(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 576(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 608(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 640(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vmovdqa 672(%rsi), %ymm3 -vextracti128 $0, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -vextracti128 $1, %ymm3, %xmm1 -vpermq $216, %ymm1, %ymm1 -vpshufb cast8_to_16(%rip), %ymm1, %ymm1 -vpsrlw $8, %ymm1, %ymm2 -vpand mask_ff(%rip), %ymm1, %ymm1 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_f(%rip), %ymm2, %ymm1 -vpsrlw $4, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %ymm2 -vpand mask_3(%rip), %ymm2, %ymm1 -vpsrlw $2, %ymm2, %ymm2 -vpaddw %ymm2, %ymm1, %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) -movw $0, 1400(%rdi) -movw $0, 1402(%rdi) -movw $0, 1404(%rdi) -movw $0, 1406(%rdi) -ret diff --git a/src/kem/ntru/ntruhrss701/clean/CMakeLists.txt b/src/kem/ntru/ntruhrss701/clean/CMakeLists.txt deleted file mode 100644 index 4de2e7bc..00000000 --- a/src/kem/ntru/ntruhrss701/clean/CMakeLists.txt +++ /dev/null @@ -1,19 +0,0 @@ -set( - SRC_CLEAN_NTRUHRSS701 - cmov.c - kem.c - owcpa.c - pack3.c - packq.c - poly.c - poly_lift.c - poly_mod.c - poly_r2_inv.c - poly_rq_mul.c - poly_s3_inv.c - sample.c - sample_iid.c -) - -define_kem_alg(ntruhrss701_clean - PQCLEAN_NTRUHRSS701_CLEAN "${SRC_CLEAN_NTRUHRSS701}" "${CMAKE_CURRENT_SOURCE_DIR}") diff --git a/src/kem/ntru/ntruhrss701/clean/api.h b/src/kem/ntru/ntruhrss701/clean/api.h deleted file mode 100644 index 470fb99d..00000000 --- a/src/kem/ntru/ntruhrss701/clean/api.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef PQCLEAN_NTRUHRSS701_CLEAN_API_H -#define PQCLEAN_NTRUHRSS701_CLEAN_API_H - -#include - -#define PQCLEAN_NTRUHRSS701_CLEAN_CRYPTO_SECRETKEYBYTES 1450 -#define PQCLEAN_NTRUHRSS701_CLEAN_CRYPTO_PUBLICKEYBYTES 1138 -#define PQCLEAN_NTRUHRSS701_CLEAN_CRYPTO_CIPHERTEXTBYTES 1138 -#define PQCLEAN_NTRUHRSS701_CLEAN_CRYPTO_BYTES 32 - -#define PQCLEAN_NTRUHRSS701_CLEAN_CRYPTO_ALGNAME "ntruhrss701" - -int PQCLEAN_NTRUHRSS701_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk); - -int PQCLEAN_NTRUHRSS701_CLEAN_crypto_kem_enc(uint8_t *c, uint8_t *k, const uint8_t *pk); - -int PQCLEAN_NTRUHRSS701_CLEAN_crypto_kem_dec(uint8_t *k, const uint8_t *c, const uint8_t *sk); - -#endif diff --git a/src/kem/ntru/ntruhrss701/clean/cmov.c b/src/kem/ntru/ntruhrss701/clean/cmov.c deleted file mode 100644 index 2283e18e..00000000 --- a/src/kem/ntru/ntruhrss701/clean/cmov.c +++ /dev/null @@ -1,11 +0,0 @@ -#include "cmov.h" - -/* b = 1 means mov, b = 0 means don't mov*/ -void PQCLEAN_NTRUHRSS701_CLEAN_cmov(unsigned char *r, const unsigned char *x, size_t len, unsigned char b) { - size_t i; - - b = (~b + 1); - for (i = 0; i < len; i++) { - r[i] ^= b & (x[i] ^ r[i]); - } -} diff --git a/src/kem/ntru/ntruhrss701/clean/cmov.h b/src/kem/ntru/ntruhrss701/clean/cmov.h deleted file mode 100644 index 82155035..00000000 --- a/src/kem/ntru/ntruhrss701/clean/cmov.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef VERIFY_H -#define VERIFY_H - -#include "params.h" - -#include - -void PQCLEAN_NTRUHRSS701_CLEAN_cmov(unsigned char *r, const unsigned char *x, size_t len, unsigned char b); - -#endif diff --git a/src/kem/ntru/ntruhrss701/clean/kem.c b/src/kem/ntru/ntruhrss701/clean/kem.c deleted file mode 100644 index 31887355..00000000 --- a/src/kem/ntru/ntruhrss701/clean/kem.c +++ /dev/null @@ -1,63 +0,0 @@ -#include "api.h" -#include "cmov.h" -#include "fips202.h" -#include "owcpa.h" -#include "params.h" -#include "randombytes.h" -#include "sample.h" - -// API FUNCTIONS -int PQCLEAN_NTRUHRSS701_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk) { - uint8_t seed[NTRU_SAMPLE_FG_BYTES]; - - randombytes(seed, NTRU_SAMPLE_FG_BYTES); - PQCLEAN_NTRUHRSS701_CLEAN_owcpa_keypair(pk, sk, seed); - - randombytes(sk + NTRU_OWCPA_SECRETKEYBYTES, NTRU_PRFKEYBYTES); - - return 0; -} - -int PQCLEAN_NTRUHRSS701_CLEAN_crypto_kem_enc(uint8_t *c, uint8_t *k, const uint8_t *pk) { - poly r, m; - uint8_t rm[NTRU_OWCPA_MSGBYTES]; - uint8_t rm_seed[NTRU_SAMPLE_RM_BYTES]; - - randombytes(rm_seed, NTRU_SAMPLE_RM_BYTES); - - PQCLEAN_NTRUHRSS701_CLEAN_sample_rm(&r, &m, rm_seed); - - PQCLEAN_NTRUHRSS701_CLEAN_poly_S3_tobytes(rm, &r); - PQCLEAN_NTRUHRSS701_CLEAN_poly_S3_tobytes(rm + NTRU_PACK_TRINARY_BYTES, &m); - sha3_256(k, rm, NTRU_OWCPA_MSGBYTES); - - PQCLEAN_NTRUHRSS701_CLEAN_poly_Z3_to_Zq(&r); - PQCLEAN_NTRUHRSS701_CLEAN_owcpa_enc(c, &r, &m, pk); - - return 0; -} - -int PQCLEAN_NTRUHRSS701_CLEAN_crypto_kem_dec(uint8_t *k, const uint8_t *c, const uint8_t *sk) { - int i, fail; - uint8_t rm[NTRU_OWCPA_MSGBYTES]; - uint8_t buf[NTRU_PRFKEYBYTES + NTRU_CIPHERTEXTBYTES]; - - fail = PQCLEAN_NTRUHRSS701_CLEAN_owcpa_dec(rm, c, sk); - /* If fail = 0 then c = Enc(h, rm). There is no need to re-encapsulate. */ - /* See comment in PQCLEAN_NTRUHRSS701_CLEAN_owcpa_dec for details. */ - - sha3_256(k, rm, NTRU_OWCPA_MSGBYTES); - - /* shake(secret PRF key || input ciphertext) */ - for (i = 0; i < NTRU_PRFKEYBYTES; i++) { - buf[i] = sk[i + NTRU_OWCPA_SECRETKEYBYTES]; - } - for (i = 0; i < NTRU_CIPHERTEXTBYTES; i++) { - buf[NTRU_PRFKEYBYTES + i] = c[i]; - } - sha3_256(rm, buf, NTRU_PRFKEYBYTES + NTRU_CIPHERTEXTBYTES); - - PQCLEAN_NTRUHRSS701_CLEAN_cmov(k, rm, NTRU_SHAREDKEYBYTES, (unsigned char) fail); - - return 0; -} diff --git a/src/kem/ntru/ntruhrss701/clean/owcpa.c b/src/kem/ntru/ntruhrss701/clean/owcpa.c deleted file mode 100644 index b62c147d..00000000 --- a/src/kem/ntru/ntruhrss701/clean/owcpa.c +++ /dev/null @@ -1,162 +0,0 @@ -#include "owcpa.h" -#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) { - /* 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; - uint32_t t = 0; - uint16_t c; - 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 |= 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)); -} - - -void PQCLEAN_NTRUHRSS701_CLEAN_owcpa_keypair(unsigned char *pk, - unsigned char *sk, - const unsigned char seed[NTRU_SAMPLE_FG_BYTES]) { - int i; - - poly x1, x2, x3, x4, x5; - - poly *f = &x1, *g = &x2, *invf_mod3 = &x3; - poly *gf = &x3, *invgf = &x4, *tmp = &x5; - poly *invh = &x3, *h = &x3; - - PQCLEAN_NTRUHRSS701_CLEAN_sample_fg(f, g, seed); - - PQCLEAN_NTRUHRSS701_CLEAN_poly_S3_inv(invf_mod3, f); - PQCLEAN_NTRUHRSS701_CLEAN_poly_S3_tobytes(sk, f); - PQCLEAN_NTRUHRSS701_CLEAN_poly_S3_tobytes(sk + NTRU_PACK_TRINARY_BYTES, invf_mod3); - - /* Lift coeffs of f and g from Z_p to Z_q */ - PQCLEAN_NTRUHRSS701_CLEAN_poly_Z3_to_Zq(f); - PQCLEAN_NTRUHRSS701_CLEAN_poly_Z3_to_Zq(g); - - /* g = 3*(x-1)*g */ - for (i = NTRU_N - 1; i > 0; i--) { - g->coeffs[i] = 3 * (g->coeffs[i - 1] - g->coeffs[i]); - } - g->coeffs[0] = -(3 * g->coeffs[0]); - - - PQCLEAN_NTRUHRSS701_CLEAN_poly_Rq_mul(gf, g, f); - - PQCLEAN_NTRUHRSS701_CLEAN_poly_Rq_inv(invgf, gf); - - PQCLEAN_NTRUHRSS701_CLEAN_poly_Rq_mul(tmp, invgf, f); - PQCLEAN_NTRUHRSS701_CLEAN_poly_Sq_mul(invh, tmp, f); - PQCLEAN_NTRUHRSS701_CLEAN_poly_Sq_tobytes(sk + 2 * NTRU_PACK_TRINARY_BYTES, invh); - - PQCLEAN_NTRUHRSS701_CLEAN_poly_Rq_mul(tmp, invgf, g); - PQCLEAN_NTRUHRSS701_CLEAN_poly_Rq_mul(h, tmp, g); - PQCLEAN_NTRUHRSS701_CLEAN_poly_Rq_sum_zero_tobytes(pk, h); -} - - -void PQCLEAN_NTRUHRSS701_CLEAN_owcpa_enc(unsigned char *c, - const poly *r, - const poly *m, - const unsigned char *pk) { - int i; - poly x1, x2; - poly *h = &x1, *liftm = &x1; - poly *ct = &x2; - - PQCLEAN_NTRUHRSS701_CLEAN_poly_Rq_sum_zero_frombytes(h, pk); - - PQCLEAN_NTRUHRSS701_CLEAN_poly_Rq_mul(ct, r, h); - - PQCLEAN_NTRUHRSS701_CLEAN_poly_lift(liftm, m); - for (i = 0; i < NTRU_N; i++) { - ct->coeffs[i] = ct->coeffs[i] + liftm->coeffs[i]; - } - - PQCLEAN_NTRUHRSS701_CLEAN_poly_Rq_sum_zero_tobytes(c, ct); -} - -int PQCLEAN_NTRUHRSS701_CLEAN_owcpa_dec(unsigned char *rm, - const unsigned char *ciphertext, - const unsigned char *secretkey) { - int i; - int fail; - poly x1, x2, x3, x4; - - poly *c = &x1, *f = &x2, *cf = &x3; - poly *mf = &x2, *finv3 = &x3, *m = &x4; - poly *liftm = &x2, *invh = &x3, *r = &x4; - poly *b = &x1; - - PQCLEAN_NTRUHRSS701_CLEAN_poly_Rq_sum_zero_frombytes(c, ciphertext); - PQCLEAN_NTRUHRSS701_CLEAN_poly_S3_frombytes(f, secretkey); - PQCLEAN_NTRUHRSS701_CLEAN_poly_Z3_to_Zq(f); - - PQCLEAN_NTRUHRSS701_CLEAN_poly_Rq_mul(cf, c, f); - PQCLEAN_NTRUHRSS701_CLEAN_poly_Rq_to_S3(mf, cf); - - PQCLEAN_NTRUHRSS701_CLEAN_poly_S3_frombytes(finv3, secretkey + NTRU_PACK_TRINARY_BYTES); - PQCLEAN_NTRUHRSS701_CLEAN_poly_S3_mul(m, mf, finv3); - PQCLEAN_NTRUHRSS701_CLEAN_poly_S3_tobytes(rm + NTRU_PACK_TRINARY_BYTES, m); - - fail = 0; - - /* 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 */ - /* r (defined as b/h mod (q, Phi_n)) and m are in the message space. */ - /* (m can take any value in S3 in NTRU_HRSS) */ - - /* b = c - Lift(m) mod (q, x^n - 1) */ - PQCLEAN_NTRUHRSS701_CLEAN_poly_lift(liftm, m); - for (i = 0; i < NTRU_N; i++) { - b->coeffs[i] = c->coeffs[i] - liftm->coeffs[i]; - } - - /* r = b / h mod (q, Phi_n) */ - PQCLEAN_NTRUHRSS701_CLEAN_poly_Sq_frombytes(invh, secretkey + 2 * NTRU_PACK_TRINARY_BYTES); - PQCLEAN_NTRUHRSS701_CLEAN_poly_Sq_mul(r, b, invh); - - /* NOTE: Our definition of r as b/h mod (q, Phi_n) follows Figure 4 of */ - /* [Sch18] https://eprint.iacr.org/2018/1174/20181203:032458. */ - /* This differs from Figure 10 of Saito--Xagawa--Yamakawa */ - /* [SXY17] https://eprint.iacr.org/2017/1005/20180516:055500 */ - /* where r gets a final reduction modulo p. */ - /* We need this change to use Proposition 1 of [Sch18]. */ - - /* Proposition 1 of [Sch18] shows that re-encryption with (r,m) yields c. */ - /* if and only if fail==0 after the following call to owcpa_check_r */ - /* The procedure given in Fig. 8 of [Sch18] can be skipped because we have */ - /* c(1) = 0 due to the use of poly_Rq_sum_zero_{to,from}bytes. */ - fail |= owcpa_check_r(r); - - PQCLEAN_NTRUHRSS701_CLEAN_poly_trinary_Zq_to_Z3(r); - PQCLEAN_NTRUHRSS701_CLEAN_poly_S3_tobytes(rm, r); - - return fail; -} diff --git a/src/kem/ntru/ntruhrss701/clean/owcpa.h b/src/kem/ntru/ntruhrss701/clean/owcpa.h deleted file mode 100644 index d5eb2fce..00000000 --- a/src/kem/ntru/ntruhrss701/clean/owcpa.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef OWCPA_H -#define OWCPA_H - -#include "params.h" -#include "poly.h" - -void PQCLEAN_NTRUHRSS701_CLEAN_owcpa_keypair(unsigned char *pk, - unsigned char *sk, - const unsigned char seed[NTRU_SAMPLE_FG_BYTES]); - -void PQCLEAN_NTRUHRSS701_CLEAN_owcpa_enc(unsigned char *c, - const poly *r, - const poly *m, - const unsigned char *pk); - -int PQCLEAN_NTRUHRSS701_CLEAN_owcpa_dec(unsigned char *rm, - const unsigned char *ciphertext, - const unsigned char *secretkey); -#endif diff --git a/src/kem/ntru/ntruhrss701/clean/pack3.c b/src/kem/ntru/ntruhrss701/clean/pack3.c deleted file mode 100644 index 1191b76c..00000000 --- a/src/kem/ntru/ntruhrss701/clean/pack3.c +++ /dev/null @@ -1,32 +0,0 @@ -#include "poly.h" - -void PQCLEAN_NTRUHRSS701_CLEAN_poly_S3_tobytes(unsigned char msg[NTRU_OWCPA_MSGBYTES], const poly *a) { - int i; - unsigned char c; - - for (i = 0; i < NTRU_PACK_DEG / 5; i++) { - c = a->coeffs[5 * i + 4] & 255; - c = (3 * c + a->coeffs[5 * i + 3]) & 255; - c = (3 * c + a->coeffs[5 * i + 2]) & 255; - c = (3 * c + a->coeffs[5 * i + 1]) & 255; - c = (3 * c + a->coeffs[5 * i + 0]) & 255; - msg[i] = c; - } -} - -void PQCLEAN_NTRUHRSS701_CLEAN_poly_S3_frombytes(poly *r, const unsigned char msg[NTRU_OWCPA_MSGBYTES]) { - int i; - unsigned char c; - - for (i = 0; i < NTRU_PACK_DEG / 5; i++) { - c = msg[i]; - r->coeffs[5 * i + 0] = c; - r->coeffs[5 * i + 1] = c * 171 >> 9; // this is division by 3 - r->coeffs[5 * i + 2] = c * 57 >> 9; // division by 3^2 - r->coeffs[5 * i + 3] = c * 19 >> 9; // division by 3^3 - r->coeffs[5 * i + 4] = c * 203 >> 14; // etc. - } - r->coeffs[NTRU_N - 1] = 0; - PQCLEAN_NTRUHRSS701_CLEAN_poly_mod_3_Phi_n(r); -} - diff --git a/src/kem/ntru/ntruhrss701/clean/packq.c b/src/kem/ntru/ntruhrss701/clean/packq.c deleted file mode 100644 index e065b69b..00000000 --- a/src/kem/ntru/ntruhrss701/clean/packq.c +++ /dev/null @@ -1,98 +0,0 @@ -#include "poly.h" - - -void PQCLEAN_NTRUHRSS701_CLEAN_poly_Sq_tobytes(unsigned char *r, const poly *a) { - int i, j; - uint16_t t[8]; - - for (i = 0; i < NTRU_PACK_DEG / 8; i++) { - for (j = 0; j < 8; j++) { - t[j] = MODQ(a->coeffs[8 * i + j]); - } - - r[13 * i + 0] = (unsigned char) ( t[0] & 0xff); - r[13 * i + 1] = (unsigned char) ((t[0] >> 8) | ((t[1] & 0x07) << 5)); - r[13 * i + 2] = (unsigned char) ((t[1] >> 3) & 0xff); - r[13 * i + 3] = (unsigned char) ((t[1] >> 11) | ((t[2] & 0x3f) << 2)); - r[13 * i + 4] = (unsigned char) ((t[2] >> 6) | ((t[3] & 0x01) << 7)); - r[13 * i + 5] = (unsigned char) ((t[3] >> 1) & 0xff); - r[13 * i + 6] = (unsigned char) ((t[3] >> 9) | ((t[4] & 0x0f) << 4)); - r[13 * i + 7] = (unsigned char) ((t[4] >> 4) & 0xff); - r[13 * i + 8] = (unsigned char) ((t[4] >> 12) | ((t[5] & 0x7f) << 1)); - r[13 * i + 9] = (unsigned char) ((t[5] >> 7) | ((t[6] & 0x03) << 6)); - r[13 * i + 10] = (unsigned char) ((t[6] >> 2) & 0xff); - r[13 * i + 11] = (unsigned char) ((t[6] >> 10) | ((t[7] & 0x1f) << 3)); - r[13 * i + 12] = (unsigned char) ((t[7] >> 5)); - } - - for (j = 0; j < NTRU_PACK_DEG - 8 * i; j++) { - t[j] = MODQ(a->coeffs[8 * i + j]); - } - for (; j < 8; j++) { - t[j] = 0; - } - - switch (NTRU_PACK_DEG - 8 * (NTRU_PACK_DEG / 8)) { - // cases 0 and 6 are impossible since 2 generates (Z/n)* and - // p mod 8 in {1, 7} implies that 2 is a quadratic residue. - case 4: - r[13 * i + 0] = (unsigned char) ( t[0] & 0xff); - r[13 * i + 1] = (unsigned char) (t[0] >> 8) | ((t[1] & 0x07) << 5); - r[13 * i + 2] = (unsigned char) (t[1] >> 3) & 0xff; - r[13 * i + 3] = (unsigned char) (t[1] >> 11) | ((t[2] & 0x3f) << 2); - r[13 * i + 4] = (unsigned char) (t[2] >> 6) | ((t[3] & 0x01) << 7); - r[13 * i + 5] = (unsigned char) (t[3] >> 1) & 0xff; - r[13 * i + 6] = (unsigned char) (t[3] >> 9) | ((t[4] & 0x0f) << 4); - break; - case 2: - r[13 * i + 0] = (unsigned char) ( t[0] & 0xff); - r[13 * i + 1] = (unsigned char) (t[0] >> 8) | ((t[1] & 0x07) << 5); - r[13 * i + 2] = (unsigned char) (t[1] >> 3) & 0xff; - r[13 * i + 3] = (unsigned char) (t[1] >> 11) | ((t[2] & 0x3f) << 2); - break; - } -} - -void PQCLEAN_NTRUHRSS701_CLEAN_poly_Sq_frombytes(poly *r, const unsigned char *a) { - int i; - for (i = 0; i < NTRU_PACK_DEG / 8; i++) { - r->coeffs[8 * i + 0] = a[13 * i + 0] | (((uint16_t)a[13 * i + 1] & 0x1f) << 8); - r->coeffs[8 * i + 1] = (a[13 * i + 1] >> 5) | (((uint16_t)a[13 * i + 2] ) << 3) | (((uint16_t)a[13 * i + 3] & 0x03) << 11); - r->coeffs[8 * i + 2] = (a[13 * i + 3] >> 2) | (((uint16_t)a[13 * i + 4] & 0x7f) << 6); - r->coeffs[8 * i + 3] = (a[13 * i + 4] >> 7) | (((uint16_t)a[13 * i + 5] ) << 1) | (((uint16_t)a[13 * i + 6] & 0x0f) << 9); - r->coeffs[8 * i + 4] = (a[13 * i + 6] >> 4) | (((uint16_t)a[13 * i + 7] ) << 4) | (((uint16_t)a[13 * i + 8] & 0x01) << 12); - r->coeffs[8 * i + 5] = (a[13 * i + 8] >> 1) | (((uint16_t)a[13 * i + 9] & 0x3f) << 7); - r->coeffs[8 * i + 6] = (a[13 * i + 9] >> 6) | (((uint16_t)a[13 * i + 10] ) << 2) | (((uint16_t)a[13 * i + 11] & 0x07) << 10); - r->coeffs[8 * i + 7] = (a[13 * i + 11] >> 3) | (((uint16_t)a[13 * i + 12] ) << 5); - } - switch (NTRU_PACK_DEG & 0x07) { - // cases 0 and 6 are impossible since 2 generates (Z/n)* and - // p mod 8 in {1, 7} implies that 2 is a quadratic residue. - case 4: - r->coeffs[8 * i + 0] = a[13 * i + 0] | (((uint16_t)a[13 * i + 1] & 0x1f) << 8); - r->coeffs[8 * i + 1] = (a[13 * i + 1] >> 5) | (((uint16_t)a[13 * i + 2] ) << 3) | (((uint16_t)a[13 * i + 3] & 0x03) << 11); - r->coeffs[8 * i + 2] = (a[13 * i + 3] >> 2) | (((uint16_t)a[13 * i + 4] & 0x7f) << 6); - r->coeffs[8 * i + 3] = (a[13 * i + 4] >> 7) | (((uint16_t)a[13 * i + 5] ) << 1) | (((uint16_t)a[13 * i + 6] & 0x0f) << 9); - break; - case 2: - r->coeffs[8 * i + 0] = a[13 * i + 0] | (((uint16_t)a[13 * i + 1] & 0x1f) << 8); - r->coeffs[8 * i + 1] = (a[13 * i + 1] >> 5) | (((uint16_t)a[13 * i + 2] ) << 3) | (((uint16_t)a[13 * i + 3] & 0x03) << 11); - break; - } - r->coeffs[NTRU_N - 1] = 0; -} - -void PQCLEAN_NTRUHRSS701_CLEAN_poly_Rq_sum_zero_tobytes(unsigned char *r, const poly *a) { - PQCLEAN_NTRUHRSS701_CLEAN_poly_Sq_tobytes(r, a); -} - -void PQCLEAN_NTRUHRSS701_CLEAN_poly_Rq_sum_zero_frombytes(poly *r, const unsigned char *a) { - int i; - PQCLEAN_NTRUHRSS701_CLEAN_poly_Sq_frombytes(r, a); - - /* Set r[n-1] so that the sum of coefficients is zero mod q */ - r->coeffs[NTRU_N - 1] = 0; - for (i = 0; i < NTRU_PACK_DEG; i++) { - r->coeffs[NTRU_N - 1] -= r->coeffs[i]; - } -} diff --git a/src/kem/ntru/ntruhrss701/clean/params.h b/src/kem/ntru/ntruhrss701/clean/params.h deleted file mode 100644 index a9dbddd5..00000000 --- a/src/kem/ntru/ntruhrss701/clean/params.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef PARAMS_H -#define PARAMS_H - -#define NTRU_HRSS -#define NTRU_N 701 -#define NTRU_LOGQ 13 - - -/* Do not modify below this line */ - -#define PAD32(X) ((((X) + 31)/32)*32) - -#define NTRU_Q (1 << NTRU_LOGQ) - -#define NTRU_SEEDBYTES 32 -#define NTRU_PRFKEYBYTES 32 -#define NTRU_SHAREDKEYBYTES 32 - -#define NTRU_SAMPLE_IID_BYTES (NTRU_N-1) -#define NTRU_SAMPLE_FG_BYTES (2*NTRU_SAMPLE_IID_BYTES) -#define NTRU_SAMPLE_RM_BYTES (2*NTRU_SAMPLE_IID_BYTES) - -#define NTRU_PACK_DEG (NTRU_N-1) -#define NTRU_PACK_TRINARY_BYTES ((NTRU_PACK_DEG+4)/5) - -#define NTRU_OWCPA_MSGBYTES (2*NTRU_PACK_TRINARY_BYTES) -#define NTRU_OWCPA_PUBLICKEYBYTES ((NTRU_LOGQ*NTRU_PACK_DEG+7)/8) -#define NTRU_OWCPA_SECRETKEYBYTES (2*NTRU_PACK_TRINARY_BYTES + NTRU_OWCPA_PUBLICKEYBYTES) -#define NTRU_OWCPA_BYTES ((NTRU_LOGQ*NTRU_PACK_DEG+7)/8) - -#define NTRU_PUBLICKEYBYTES (NTRU_OWCPA_PUBLICKEYBYTES) -#define NTRU_SECRETKEYBYTES (NTRU_OWCPA_SECRETKEYBYTES + NTRU_PRFKEYBYTES) -#define NTRU_CIPHERTEXTBYTES (NTRU_OWCPA_BYTES) - -#endif diff --git a/src/kem/ntru/ntruhrss701/clean/poly.c b/src/kem/ntru/ntruhrss701/clean/poly.c deleted file mode 100644 index a2ebb8c9..00000000 --- a/src/kem/ntru/ntruhrss701/clean/poly.c +++ /dev/null @@ -1,75 +0,0 @@ -#include "poly.h" - -/* Map {0, 1, 2} -> {0,1,q-1} in place */ -void PQCLEAN_NTRUHRSS701_CLEAN_poly_Z3_to_Zq(poly *r) { - int i; - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = r->coeffs[i] | ((-(r->coeffs[i] >> 1)) & (NTRU_Q - 1)); - } -} - -/* Map {0, 1, q-1} -> {0,1,2} in place */ -void PQCLEAN_NTRUHRSS701_CLEAN_poly_trinary_Zq_to_Z3(poly *r) { - int i; - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = MODQ(r->coeffs[i]); - r->coeffs[i] = 3 & (r->coeffs[i] ^ (r->coeffs[i] >> (NTRU_LOGQ - 1))); - } -} - -void PQCLEAN_NTRUHRSS701_CLEAN_poly_Sq_mul(poly *r, const poly *a, const poly *b) { - PQCLEAN_NTRUHRSS701_CLEAN_poly_Rq_mul(r, a, b); - PQCLEAN_NTRUHRSS701_CLEAN_poly_mod_q_Phi_n(r); -} - -void PQCLEAN_NTRUHRSS701_CLEAN_poly_S3_mul(poly *r, const poly *a, const poly *b) { - int i; - - /* Our S3 multiplications do not overflow mod q, */ - /* so we can re-purpose PQCLEAN_NTRUHRSS701_CLEAN_poly_Rq_mul, as long as we */ - /* follow with an explicit reduction mod q. */ - PQCLEAN_NTRUHRSS701_CLEAN_poly_Rq_mul(r, a, b); - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = MODQ(r->coeffs[i]); - } - PQCLEAN_NTRUHRSS701_CLEAN_poly_mod_3_Phi_n(r); -} - -static void PQCLEAN_NTRUHRSS701_CLEAN_poly_R2_inv_to_Rq_inv(poly *r, const poly *ai, const poly *a) { - - int i; - poly b, c; - poly s; - - // for 0..4 - // ai = ai * (2 - a*ai) mod q - for (i = 0; i < NTRU_N; i++) { - b.coeffs[i] = -(a->coeffs[i]); - } - - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = ai->coeffs[i]; - } - - PQCLEAN_NTRUHRSS701_CLEAN_poly_Rq_mul(&c, r, &b); - c.coeffs[0] += 2; // c = 2 - a*ai - PQCLEAN_NTRUHRSS701_CLEAN_poly_Rq_mul(&s, &c, r); // s = ai*c - - PQCLEAN_NTRUHRSS701_CLEAN_poly_Rq_mul(&c, &s, &b); - c.coeffs[0] += 2; // c = 2 - a*s - PQCLEAN_NTRUHRSS701_CLEAN_poly_Rq_mul(r, &c, &s); // r = s*c - - PQCLEAN_NTRUHRSS701_CLEAN_poly_Rq_mul(&c, r, &b); - c.coeffs[0] += 2; // c = 2 - a*r - PQCLEAN_NTRUHRSS701_CLEAN_poly_Rq_mul(&s, &c, r); // s = r*c - - PQCLEAN_NTRUHRSS701_CLEAN_poly_Rq_mul(&c, &s, &b); - c.coeffs[0] += 2; // c = 2 - a*s - PQCLEAN_NTRUHRSS701_CLEAN_poly_Rq_mul(r, &c, &s); // r = s*c -} - -void PQCLEAN_NTRUHRSS701_CLEAN_poly_Rq_inv(poly *r, const poly *a) { - poly ai2; - PQCLEAN_NTRUHRSS701_CLEAN_poly_R2_inv(&ai2, a); - PQCLEAN_NTRUHRSS701_CLEAN_poly_R2_inv_to_Rq_inv(r, &ai2, a); -} diff --git a/src/kem/ntru/ntruhrss701/clean/poly.h b/src/kem/ntru/ntruhrss701/clean/poly.h deleted file mode 100644 index 4c49aa32..00000000 --- a/src/kem/ntru/ntruhrss701/clean/poly.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef POLY_H -#define POLY_H - -#include "params.h" - -#include -#include - -#define MODQ(X) ((X) & (NTRU_Q-1)) - -typedef struct { - uint16_t coeffs[NTRU_N]; -} poly; - -void PQCLEAN_NTRUHRSS701_CLEAN_poly_mod_3_Phi_n(poly *r); -void PQCLEAN_NTRUHRSS701_CLEAN_poly_mod_q_Phi_n(poly *r); - -void PQCLEAN_NTRUHRSS701_CLEAN_poly_Sq_tobytes(unsigned char *r, const poly *a); -void PQCLEAN_NTRUHRSS701_CLEAN_poly_Sq_frombytes(poly *r, const unsigned char *a); - -void PQCLEAN_NTRUHRSS701_CLEAN_poly_Rq_sum_zero_tobytes(unsigned char *r, const poly *a); -void PQCLEAN_NTRUHRSS701_CLEAN_poly_Rq_sum_zero_frombytes(poly *r, const unsigned char *a); - -void PQCLEAN_NTRUHRSS701_CLEAN_poly_S3_tobytes(unsigned char msg[NTRU_PACK_TRINARY_BYTES], const poly *a); -void PQCLEAN_NTRUHRSS701_CLEAN_poly_S3_frombytes(poly *r, const unsigned char msg[NTRU_PACK_TRINARY_BYTES]); - -void PQCLEAN_NTRUHRSS701_CLEAN_poly_Sq_mul(poly *r, const poly *a, const poly *b); -void PQCLEAN_NTRUHRSS701_CLEAN_poly_Rq_mul(poly *r, const poly *a, const poly *b); -void PQCLEAN_NTRUHRSS701_CLEAN_poly_S3_mul(poly *r, const poly *a, const poly *b); -void PQCLEAN_NTRUHRSS701_CLEAN_poly_lift(poly *r, const poly *a); -void PQCLEAN_NTRUHRSS701_CLEAN_poly_Rq_to_S3(poly *r, const poly *a); - -void PQCLEAN_NTRUHRSS701_CLEAN_poly_R2_inv(poly *r, const poly *a); -void PQCLEAN_NTRUHRSS701_CLEAN_poly_Rq_inv(poly *r, const poly *a); -void PQCLEAN_NTRUHRSS701_CLEAN_poly_S3_inv(poly *r, const poly *a); - -void PQCLEAN_NTRUHRSS701_CLEAN_poly_Z3_to_Zq(poly *r); -void PQCLEAN_NTRUHRSS701_CLEAN_poly_trinary_Zq_to_Z3(poly *r); -#endif diff --git a/src/kem/ntru/ntruhrss701/clean/poly_lift.c b/src/kem/ntru/ntruhrss701/clean/poly_lift.c deleted file mode 100644 index 555da5ab..00000000 --- a/src/kem/ntru/ntruhrss701/clean/poly_lift.c +++ /dev/null @@ -1,54 +0,0 @@ -#include "poly.h" - - -void PQCLEAN_NTRUHRSS701_CLEAN_poly_lift(poly *r, const poly *a) { - /* NOTE: Assumes input is in {0,1,2}^N */ - /* Produces output in [0,Q-1]^N */ - int i; - poly b; - uint16_t t, zj; - - /* Define z by = delta_{i,0} mod 3: */ - /* t = -1/N mod p = -N mod 3 */ - /* z[0] = 2 - t mod 3 */ - /* z[1] = 0 mod 3 */ - /* z[j] = z[j-1] + t mod 3 */ - /* We'll compute b = a/(x-1) mod (3, Phi) using */ - /* b[0] = , b[1] = , b[2] = */ - /* b[i] = b[i-3] - (a[i] + a[i-1] + a[i-2]) */ - t = 3 - (NTRU_N % 3); - b.coeffs[0] = a->coeffs[0] * (2 - t) + a->coeffs[1] * 0 + a->coeffs[2] * t; - b.coeffs[1] = a->coeffs[1] * (2 - t) + a->coeffs[2] * 0; - b.coeffs[2] = a->coeffs[2] * (2 - t); - - zj = 0; /* z[1] */ - for (i = 3; i < NTRU_N; i++) { - b.coeffs[0] += a->coeffs[i] * (zj + 2 * t); - b.coeffs[1] += a->coeffs[i] * (zj + t); - b.coeffs[2] += a->coeffs[i] * zj; - zj = (zj + t) % 3; - } - b.coeffs[1] += a->coeffs[0] * (zj + t); - b.coeffs[2] += a->coeffs[0] * zj; - b.coeffs[2] += a->coeffs[1] * (zj + t); - - b.coeffs[0] = b.coeffs[0]; - b.coeffs[1] = b.coeffs[1]; - b.coeffs[2] = b.coeffs[2]; - for (i = 3; i < NTRU_N; i++) { - b.coeffs[i] = b.coeffs[i - 3] + 2 * (a->coeffs[i] + a->coeffs[i - 1] + a->coeffs[i - 2]); - } - - /* Finish reduction mod Phi by subtracting Phi * b[N-1] */ - PQCLEAN_NTRUHRSS701_CLEAN_poly_mod_3_Phi_n(&b); - - /* Switch from {0,1,2} to {0,1,q-1} coefficient representation */ - PQCLEAN_NTRUHRSS701_CLEAN_poly_Z3_to_Zq(&b); - - /* Multiply by (x-1) */ - r->coeffs[0] = -(b.coeffs[0]); - for (i = 0; i < NTRU_N - 1; i++) { - r->coeffs[i + 1] = b.coeffs[i] - b.coeffs[i + 1]; - } -} - diff --git a/src/kem/ntru/ntruhrss701/clean/poly_mod.c b/src/kem/ntru/ntruhrss701/clean/poly_mod.c deleted file mode 100644 index 820e206c..00000000 --- a/src/kem/ntru/ntruhrss701/clean/poly_mod.c +++ /dev/null @@ -1,53 +0,0 @@ -#include "poly.h" - -static uint16_t mod3(uint16_t a) { - uint16_t r; - int16_t t, c; - - r = (a >> 8) + (a & 0xff); // r mod 255 == a mod 255 - r = (r >> 4) + (r & 0xf); // r' mod 15 == r mod 15 - r = (r >> 2) + (r & 0x3); // r' mod 3 == r mod 3 - r = (r >> 2) + (r & 0x3); // r' mod 3 == r mod 3 - - t = r - 3; - c = t >> 15; - - return (c & r) ^ (~c & t); -} - -void PQCLEAN_NTRUHRSS701_CLEAN_poly_mod_3_Phi_n(poly *r) { - int i; - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = mod3(r->coeffs[i] + 2 * r->coeffs[NTRU_N - 1]); - } -} - -void PQCLEAN_NTRUHRSS701_CLEAN_poly_mod_q_Phi_n(poly *r) { - int i; - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = r->coeffs[i] - r->coeffs[NTRU_N - 1]; - } -} - -void PQCLEAN_NTRUHRSS701_CLEAN_poly_Rq_to_S3(poly *r, const poly *a) { - int i; - uint16_t flag; - - /* 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++) { - /* 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); -} - diff --git a/src/kem/ntru/ntruhrss701/clean/poly_r2_inv.c b/src/kem/ntru/ntruhrss701/clean/poly_r2_inv.c deleted file mode 100644 index 422deae6..00000000 --- a/src/kem/ntru/ntruhrss701/clean/poly_r2_inv.c +++ /dev/null @@ -1,69 +0,0 @@ -/* Based on supercop-20200702/crypto_core/invhrss701/simpler/core.c */ - -#include "poly.h" - -/* return -1 if x<0 and y<0; otherwise return 0 */ -static inline int16_t both_negative_mask(int16_t x, int16_t y) { - return (x & y) >> 15; -} - -void PQCLEAN_NTRUHRSS701_CLEAN_poly_R2_inv(poly *r, const poly *a) { - poly f, g, v, w; - size_t i, loop; - int16_t delta, sign, swap, t; - - for (i = 0; i < NTRU_N; ++i) { - v.coeffs[i] = 0; - } - for (i = 0; i < NTRU_N; ++i) { - w.coeffs[i] = 0; - } - w.coeffs[0] = 1; - - for (i = 0; i < NTRU_N; ++i) { - f.coeffs[i] = 1; - } - for (i = 0; i < NTRU_N - 1; ++i) { - g.coeffs[NTRU_N - 2 - i] = (a->coeffs[i] ^ a->coeffs[NTRU_N - 1]) & 1; - } - g.coeffs[NTRU_N - 1] = 0; - - delta = 1; - - for (loop = 0; loop < 2 * (NTRU_N - 1) - 1; ++loop) { - for (i = NTRU_N - 1; i > 0; --i) { - v.coeffs[i] = v.coeffs[i - 1]; - } - v.coeffs[0] = 0; - - sign = g.coeffs[0] & f.coeffs[0]; - swap = both_negative_mask(-delta, -(int16_t) g.coeffs[0]); - delta ^= swap & (delta ^ -delta); - delta += 1; - - for (i = 0; i < NTRU_N; ++i) { - t = swap & (f.coeffs[i] ^ g.coeffs[i]); - f.coeffs[i] ^= t; - g.coeffs[i] ^= t; - t = swap & (v.coeffs[i] ^ w.coeffs[i]); - v.coeffs[i] ^= t; - w.coeffs[i] ^= t; - } - - for (i = 0; i < NTRU_N; ++i) { - g.coeffs[i] = g.coeffs[i] ^ (sign & f.coeffs[i]); - } - for (i = 0; i < NTRU_N; ++i) { - w.coeffs[i] = w.coeffs[i] ^ (sign & v.coeffs[i]); - } - for (i = 0; i < NTRU_N - 1; ++i) { - g.coeffs[i] = g.coeffs[i + 1]; - } - g.coeffs[NTRU_N - 1] = 0; - } - - for (i = 0; i < NTRU_N - 1; ++i) { - r->coeffs[i] = v.coeffs[NTRU_N - 2 - i]; - } - r->coeffs[NTRU_N - 1] = 0; -} diff --git a/src/kem/ntru/ntruhrss701/clean/poly_rq_mul.c b/src/kem/ntru/ntruhrss701/clean/poly_rq_mul.c deleted file mode 100644 index 8d1dc391..00000000 --- a/src/kem/ntru/ntruhrss701/clean/poly_rq_mul.c +++ /dev/null @@ -1,284 +0,0 @@ -#include "poly.h" - -/* Polynomial multiplication using */ -/* Toom-4 and two layers of Karatsuba. */ - -#define L PAD32(NTRU_N) -#define M (L/4) -#define K (L/16) - -static void toom4_k2x2_mul(uint16_t ab[2 * L], const uint16_t a[L], const uint16_t b[L]); - -static void toom4_k2x2_eval_0(uint16_t r[9 * K], const uint16_t a[M]); -static void toom4_k2x2_eval_p1(uint16_t r[9 * K], const uint16_t a[M]); -static void toom4_k2x2_eval_m1(uint16_t r[9 * K], const uint16_t a[M]); -static void toom4_k2x2_eval_p2(uint16_t r[9 * K], const uint16_t a[M]); -static void toom4_k2x2_eval_m2(uint16_t r[9 * K], const uint16_t a[M]); -static void toom4_k2x2_eval_p3(uint16_t r[9 * K], const uint16_t a[M]); -static void toom4_k2x2_eval_inf(uint16_t r[9 * K], const uint16_t a[M]); -static inline void k2x2_eval(uint16_t r[9 * K]); - -static void toom4_k2x2_basemul(uint16_t r[18 * K], const uint16_t a[9 * K], const uint16_t b[9 * K]); -static inline void schoolbook_KxK(uint16_t r[2 * K], const uint16_t a[K], const uint16_t b[K]); - -static void toom4_k2x2_interpolate(uint16_t r[2 * M], const uint16_t a[63 * 2 * K]); -static inline void k2x2_interpolate(uint16_t r[M], const uint16_t a[9 * K]); - -void PQCLEAN_NTRUHRSS701_CLEAN_poly_Rq_mul(poly *r, const poly *a, const poly *b) { - size_t i; - uint16_t ab[2 * L]; - - for (i = 0; i < NTRU_N; i++) { - ab[i] = a->coeffs[i]; - ab[L + i] = b->coeffs[i]; - } - for (i = NTRU_N; i < L; i++) { - ab[i] = 0; - ab[L + i] = 0; - } - - toom4_k2x2_mul(ab, ab, ab + L); - - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = ab[i] + ab[NTRU_N + i]; - } -} - -static void toom4_k2x2_mul(uint16_t ab[2 * L], const uint16_t a[L], const uint16_t b[L]) { - uint16_t tmpA[9 * K]; - uint16_t tmpB[9 * K]; - uint16_t eC[63 * 2 * K]; - - toom4_k2x2_eval_0(tmpA, a); - toom4_k2x2_eval_0(tmpB, b); - toom4_k2x2_basemul(eC + 0 * 9 * 2 * K, tmpA, tmpB); - - toom4_k2x2_eval_p1(tmpA, a); - toom4_k2x2_eval_p1(tmpB, b); - toom4_k2x2_basemul(eC + 1 * 9 * 2 * K, tmpA, tmpB); - - toom4_k2x2_eval_m1(tmpA, a); - toom4_k2x2_eval_m1(tmpB, b); - toom4_k2x2_basemul(eC + 2 * 9 * 2 * K, tmpA, tmpB); - - toom4_k2x2_eval_p2(tmpA, a); - toom4_k2x2_eval_p2(tmpB, b); - toom4_k2x2_basemul(eC + 3 * 9 * 2 * K, tmpA, tmpB); - - toom4_k2x2_eval_m2(tmpA, a); - toom4_k2x2_eval_m2(tmpB, b); - toom4_k2x2_basemul(eC + 4 * 9 * 2 * K, tmpA, tmpB); - - toom4_k2x2_eval_p3(tmpA, a); - toom4_k2x2_eval_p3(tmpB, b); - toom4_k2x2_basemul(eC + 5 * 9 * 2 * K, tmpA, tmpB); - - toom4_k2x2_eval_inf(tmpA, a); - toom4_k2x2_eval_inf(tmpB, b); - toom4_k2x2_basemul(eC + 6 * 9 * 2 * K, tmpA, tmpB); - - toom4_k2x2_interpolate(ab, eC); -} - - -static void toom4_k2x2_eval_0(uint16_t r[9 * K], const uint16_t a[M]) { - for (size_t i = 0; i < M; i++) { - r[i] = a[i]; - } - k2x2_eval(r); -} - -static void toom4_k2x2_eval_p1(uint16_t r[9 * K], const uint16_t a[M]) { - for (size_t i = 0; i < M; i++) { - r[i] = a[0 * M + i]; - r[i] += a[1 * M + i]; - r[i] += a[2 * M + i]; - r[i] += a[3 * M + i]; - } - k2x2_eval(r); -} - -static void toom4_k2x2_eval_m1(uint16_t r[9 * K], const uint16_t a[M]) { - for (size_t i = 0; i < M; i++) { - r[i] = a[0 * M + i]; - r[i] -= a[1 * M + i]; - r[i] += a[2 * M + i]; - r[i] -= a[3 * M + i]; - } - k2x2_eval(r); -} - -static void toom4_k2x2_eval_p2(uint16_t r[9 * K], const uint16_t a[M]) { - for (size_t i = 0; i < M; i++) { - r[i] = a[0 * M + i]; - r[i] += 2 * a[1 * M + i]; - r[i] += 4 * a[2 * M + i]; - r[i] += 8 * a[3 * M + i]; - } - k2x2_eval(r); -} - -static void toom4_k2x2_eval_m2(uint16_t r[9 * K], const uint16_t a[M]) { - for (size_t i = 0; i < M; i++) { - r[i] = a[0 * M + i]; - r[i] -= 2 * a[1 * M + i]; - r[i] += 4 * a[2 * M + i]; - r[i] -= 8 * a[3 * M + i]; - } - k2x2_eval(r); -} - -static void toom4_k2x2_eval_p3(uint16_t r[9 * K], const uint16_t a[M]) { - for (size_t i = 0; i < M; i++) { - r[i] = a[0 * M + i]; - r[i] += 3 * a[1 * M + i]; - r[i] += 9 * a[2 * M + i]; - r[i] += 27 * a[3 * M + i]; - } - k2x2_eval(r); -} - -static void toom4_k2x2_eval_inf(uint16_t r[9 * K], const uint16_t a[M]) { - for (size_t i = 0; i < M; i++) { - r[i] = a[3 * M + i]; - } - k2x2_eval(r); -} - -static inline void k2x2_eval(uint16_t r[9 * K]) { - /* Input: e + f.Y + g.Y^2 + h.Y^3 */ - /* Output: [ e | f | g | h | e+f | f+h | g+e | h+g | e+f+g+h ] */ - - size_t i; - for (i = 0; i < 4 * K; i++) { - r[4 * K + i] = r[i]; - } - for (i = 0; i < K; i++) { - r[4 * K + i] += r[1 * K + i]; - r[5 * K + i] += r[3 * K + i]; - r[6 * K + i] += r[0 * K + i]; - r[7 * K + i] += r[2 * K + i]; - r[8 * K + i] = r[5 * K + i]; - r[8 * K + i] += r[6 * K + i]; - } -} - -static void toom4_k2x2_basemul(uint16_t r[18 * K], const uint16_t a[9 * K], const uint16_t b[9 * K]) { - schoolbook_KxK(r + 0 * 2 * K, a + 0 * K, b + 0 * K); - schoolbook_KxK(r + 1 * 2 * K, a + 1 * K, b + 1 * K); - schoolbook_KxK(r + 2 * 2 * K, a + 2 * K, b + 2 * K); - schoolbook_KxK(r + 3 * 2 * K, a + 3 * K, b + 3 * K); - schoolbook_KxK(r + 4 * 2 * K, a + 4 * K, b + 4 * K); - schoolbook_KxK(r + 5 * 2 * K, a + 5 * K, b + 5 * K); - schoolbook_KxK(r + 6 * 2 * K, a + 6 * K, b + 6 * K); - schoolbook_KxK(r + 7 * 2 * K, a + 7 * K, b + 7 * K); - schoolbook_KxK(r + 8 * 2 * K, a + 8 * K, b + 8 * K); -} - -static inline void schoolbook_KxK(uint16_t r[2 * K], const uint16_t a[K], const uint16_t b[K]) { - size_t i, j; - for (j = 0; j < K; j++) { - r[j] = a[0] * (uint32_t)b[j]; - } - for (i = 1; i < K; i++) { - for (j = 0; j < K - 1; j++) { - r[i + j] += a[i] * (uint32_t)b[j]; - } - r[i + K - 1] = a[i] * (uint32_t)b[K - 1]; - } - r[2 * K - 1] = 0; -} - -static void toom4_k2x2_interpolate(uint16_t r[2 * M], const uint16_t a[7 * 18 * K]) { - size_t i; - - uint16_t P1[2 * M]; - uint16_t Pm1[2 * M]; - uint16_t P2[2 * M]; - uint16_t Pm2[2 * M]; - - uint16_t *C0 = r; - uint16_t *C2 = r + 2 * M; - uint16_t *C4 = r + 4 * M; - uint16_t *C6 = r + 6 * M; - - uint16_t V0, V1, V2; - - k2x2_interpolate(C0, a + 0 * 9 * 2 * K); - k2x2_interpolate(P1, a + 1 * 9 * 2 * K); - k2x2_interpolate(Pm1, a + 2 * 9 * 2 * K); - k2x2_interpolate(P2, a + 3 * 9 * 2 * K); - k2x2_interpolate(Pm2, a + 4 * 9 * 2 * K); - k2x2_interpolate(C6, a + 6 * 9 * 2 * K); - - for (i = 0; i < 2 * M; i++) { - V0 = ((uint32_t)(P1[i] + Pm1[i])) >> 1; - V0 = V0 - C0[i] - C6[i]; - V1 = ((uint32_t)(P2[i] + Pm2[i] - 2 * C0[i] - 128 * C6[i])) >> 3; - C4[i] = 43691 * (uint32_t)(V1 - V0); - C2[i] = V0 - C4[i]; - P1[i] = ((uint32_t)(P1[i] - Pm1[i])) >> 1; - } - - /* reuse Pm1 for P3 */ -#define P3 Pm1 - k2x2_interpolate(P3, a + 5 * 9 * 2 * K); - - for (i = 0; i < 2 * M; i++) { - V0 = P1[i]; - V1 = 43691 * (((uint32_t)(P2[i] - Pm2[i]) >> 2) - V0); - V2 = 43691 * (uint32_t)(P3[i] - C0[i] - 9 * (C2[i] + 9 * (C4[i] + 9 * C6[i]))); - V2 = ((uint32_t)(V2 - V0)) >> 3; - V2 -= V1; - P3[i] = 52429 * (uint32_t)V2; - P2[i] = V1 - V2; - P1[i] = V0 - P2[i] - P3[i]; - } - - for (i = 0; i < 2 * M; i++) { - r[1 * M + i] += P1[i]; - r[3 * M + i] += P2[i]; - r[5 * M + i] += P3[i]; - } -} - -static inline void k2x2_interpolate(uint16_t r[M], const uint16_t a[9 * K]) { - size_t i; - uint16_t tmp[4 * K]; - - for (i = 0; i < 2 * K; i++) { - r[0 * K + i] = a[0 * K + i]; - r[2 * K + i] = a[2 * K + i]; - } - - for (i = 0; i < 2 * K; i++) { - r[1 * K + i] += a[8 * K + i] - a[0 * K + i] - a[2 * K + i]; - } - - for (i = 0; i < 2 * K; i++) { - r[4 * K + i] = a[4 * K + i]; - r[6 * K + i] = a[6 * K + i]; - } - - for (i = 0; i < 2 * K; i++) { - r[5 * K + i] += a[14 * K + i] - a[4 * K + i] - a[6 * K + i]; - } - - for (i = 0; i < 2 * K; i++) { - tmp[0 * K + i] = a[12 * K + i]; - tmp[2 * K + i] = a[10 * K + i]; - } - - for (i = 0; i < 2 * K; i++) { - tmp[K + i] += a[16 * K + i] - a[12 * K + i] - a[10 * K + i]; - } - - for (i = 0; i < 4 * K; i++) { - tmp[0 * K + i] = tmp[0 * K + i] - r[0 * K + i] - r[4 * K + i]; - } - - for (i = 0; i < 4 * K; i++) { - r[2 * K + i] += tmp[0 * K + i]; - } -} - diff --git a/src/kem/ntru/ntruhrss701/clean/poly_s3_inv.c b/src/kem/ntru/ntruhrss701/clean/poly_s3_inv.c deleted file mode 100644 index d6ca4ee6..00000000 --- a/src/kem/ntru/ntruhrss701/clean/poly_s3_inv.c +++ /dev/null @@ -1,78 +0,0 @@ -/* Based on supercop-20200702/crypto_core/invhrss701/simpler/core.c */ - -#include "poly.h" - -static inline uint8_t mod3(uint8_t a) { /* a between 0 and 9 */ - int16_t t, c; - a = (a >> 2) + (a & 3); /* between 0 and 4 */ - t = a - 3; - c = t >> 5; - return (uint8_t) (t ^ (c & (a ^ t))); -} - -/* return -1 if x<0 and y<0; otherwise return 0 */ -static inline int16_t both_negative_mask(int16_t x, int16_t y) { - return (x & y) >> 15; -} - -void PQCLEAN_NTRUHRSS701_CLEAN_poly_S3_inv(poly *r, const poly *a) { - poly f, g, v, w; - size_t i, loop; - int16_t delta, sign, swap, t; - - for (i = 0; i < NTRU_N; ++i) { - v.coeffs[i] = 0; - } - for (i = 0; i < NTRU_N; ++i) { - w.coeffs[i] = 0; - } - w.coeffs[0] = 1; - - for (i = 0; i < NTRU_N; ++i) { - f.coeffs[i] = 1; - } - for (i = 0; i < NTRU_N - 1; ++i) { - g.coeffs[NTRU_N - 2 - i] = mod3((a->coeffs[i] & 3) + 2 * (a->coeffs[NTRU_N - 1] & 3)); - } - g.coeffs[NTRU_N - 1] = 0; - - delta = 1; - - for (loop = 0; loop < 2 * (NTRU_N - 1) - 1; ++loop) { - for (i = NTRU_N - 1; i > 0; --i) { - v.coeffs[i] = v.coeffs[i - 1]; - } - v.coeffs[0] = 0; - - sign = mod3((uint8_t) (2 * g.coeffs[0] * f.coeffs[0])); - swap = both_negative_mask(-delta, -(int16_t) g.coeffs[0]); - delta ^= swap & (delta ^ -delta); - delta += 1; - - for (i = 0; i < NTRU_N; ++i) { - t = swap & (f.coeffs[i] ^ g.coeffs[i]); - f.coeffs[i] ^= t; - g.coeffs[i] ^= t; - t = swap & (v.coeffs[i] ^ w.coeffs[i]); - v.coeffs[i] ^= t; - w.coeffs[i] ^= t; - } - - for (i = 0; i < NTRU_N; ++i) { - g.coeffs[i] = mod3((uint8_t) (g.coeffs[i] + sign * f.coeffs[i])); - } - for (i = 0; i < NTRU_N; ++i) { - w.coeffs[i] = mod3((uint8_t) (w.coeffs[i] + sign * v.coeffs[i])); - } - for (i = 0; i < NTRU_N - 1; ++i) { - g.coeffs[i] = g.coeffs[i + 1]; - } - g.coeffs[NTRU_N - 1] = 0; - } - - sign = f.coeffs[0]; - for (i = 0; i < NTRU_N - 1; ++i) { - r->coeffs[i] = mod3((uint8_t) (sign * v.coeffs[NTRU_N - 2 - i])); - } - r->coeffs[NTRU_N - 1] = 0; -} diff --git a/src/kem/ntru/ntruhrss701/clean/sample.c b/src/kem/ntru/ntruhrss701/clean/sample.c deleted file mode 100644 index 52fa202b..00000000 --- a/src/kem/ntru/ntruhrss701/clean/sample.c +++ /dev/null @@ -1,46 +0,0 @@ -#include "sample.h" - -void PQCLEAN_NTRUHRSS701_CLEAN_sample_fg(poly *f, poly *g, const unsigned char uniformbytes[NTRU_SAMPLE_FG_BYTES]) { - PQCLEAN_NTRUHRSS701_CLEAN_sample_iid_plus(f, uniformbytes); - PQCLEAN_NTRUHRSS701_CLEAN_sample_iid_plus(g, uniformbytes + NTRU_SAMPLE_IID_BYTES); - -} - -void PQCLEAN_NTRUHRSS701_CLEAN_sample_rm(poly *r, poly *m, const unsigned char uniformbytes[NTRU_SAMPLE_RM_BYTES]) { - PQCLEAN_NTRUHRSS701_CLEAN_sample_iid(r, uniformbytes); - PQCLEAN_NTRUHRSS701_CLEAN_sample_iid(m, uniformbytes + NTRU_SAMPLE_IID_BYTES); - -} - -void PQCLEAN_NTRUHRSS701_CLEAN_sample_iid_plus(poly *r, const unsigned char uniformbytes[NTRU_SAMPLE_IID_BYTES]) { - /* Sample r using PQCLEAN_NTRUHRSS701_CLEAN_sample_iid then conditionally flip */ - /* signs of even index coefficients so that >= 0. */ - - int i; - uint16_t s = 0; - - PQCLEAN_NTRUHRSS701_CLEAN_sample_iid(r, uniformbytes); - - /* Map {0,1,2} -> {0, 1, 2^16 - 1} */ - for (i = 0; i < NTRU_N - 1; i++) { - r->coeffs[i] = r->coeffs[i] | (-(r->coeffs[i] >> 1)); - } - - /* s = . (r[n-1] = 0) */ - for (i = 0; i < NTRU_N - 1; i++) { - s += (uint16_t)((uint32_t)r->coeffs[i + 1] * (uint32_t)r->coeffs[i]); - } - - /* Extract sign of s (sign(0) = 1) */ - s = 1 | (-(s >> 15)); - - for (i = 0; i < NTRU_N; i += 2) { - r->coeffs[i] = (uint16_t)((uint32_t)s * (uint32_t)r->coeffs[i]); - } - - /* Map {0,1,2^16-1} -> {0, 1, 2} */ - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = 3 & (r->coeffs[i] ^ (r->coeffs[i] >> 15)); - } -} - diff --git a/src/kem/ntru/ntruhrss701/clean/sample.h b/src/kem/ntru/ntruhrss701/clean/sample.h deleted file mode 100644 index d37a7b2d..00000000 --- a/src/kem/ntru/ntruhrss701/clean/sample.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef SAMPLE_H -#define SAMPLE_H - -#include "params.h" -#include "poly.h" - - -void PQCLEAN_NTRUHRSS701_CLEAN_sample_fg(poly *f, poly *g, const unsigned char uniformbytes[NTRU_SAMPLE_FG_BYTES]); -void PQCLEAN_NTRUHRSS701_CLEAN_sample_rm(poly *r, poly *m, const unsigned char uniformbytes[NTRU_SAMPLE_RM_BYTES]); - -void PQCLEAN_NTRUHRSS701_CLEAN_sample_iid(poly *r, const unsigned char uniformbytes[NTRU_SAMPLE_IID_BYTES]); - - -void PQCLEAN_NTRUHRSS701_CLEAN_sample_iid_plus(poly *r, const unsigned char uniformbytes[NTRU_SAMPLE_IID_BYTES]); - -#endif diff --git a/src/kem/ntru/ntruhrss701/clean/sample_iid.c b/src/kem/ntru/ntruhrss701/clean/sample_iid.c deleted file mode 100644 index 82ff4b98..00000000 --- a/src/kem/ntru/ntruhrss701/clean/sample_iid.c +++ /dev/null @@ -1,26 +0,0 @@ -#include "sample.h" - -static uint16_t mod3(uint16_t a) { - uint16_t r; - int16_t t, c; - - r = (a >> 8) + (a & 0xff); // r mod 255 == a mod 255 - r = (r >> 4) + (r & 0xf); // r' mod 15 == r mod 15 - r = (r >> 2) + (r & 0x3); // r' mod 3 == r mod 3 - r = (r >> 2) + (r & 0x3); // r' mod 3 == r mod 3 - - t = r - 3; - c = t >> 15; - - return (c & r) ^ (~c & t); -} - -void PQCLEAN_NTRUHRSS701_CLEAN_sample_iid(poly *r, const unsigned char uniformbytes[NTRU_SAMPLE_IID_BYTES]) { - int i; - /* {0,1,...,255} -> {0,1,2}; Pr[0] = 86/256, Pr[1] = Pr[-1] = 85/256 */ - for (i = 0; i < NTRU_N - 1; i++) { - r->coeffs[i] = mod3(uniformbytes[i]); - } - - r->coeffs[NTRU_N - 1] = 0; -} diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/CMakeLists.txt b/src/kem/ntru_prime/ntrulpr653/avx2/CMakeLists.txt deleted file mode 100644 index 3acc5b97..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/CMakeLists.txt +++ /dev/null @@ -1,25 +0,0 @@ -set( - SRC_AVX2_NTRULPR653 - crypto_core_multsntrup653.c - crypto_core_multsntrup653_ntt.c - crypto_decode_256x16.c - crypto_decode_256x2.c - crypto_decode_653x1541.c - crypto_decode_653x3.c - crypto_decode_653xint16.c - crypto_decode_653xint32.c - crypto_encode_256x16.c - crypto_encode_256x2.c - crypto_encode_653x1541.c - crypto_encode_653x1541round.c - crypto_encode_653x3.c - crypto_encode_653xint16.c - crypto_sort_int32.c - crypto_sort_uint32.c - crypto_stream_aes256ctr.c - crypto_verify_1025.c - kem.c -) - -define_kem_alg(ntrulpr653_avx2 - PQCLEAN_NTRULPR653_AVX2 "${SRC_AVX2_NTRULPR653}" "${CMAKE_CURRENT_SOURCE_DIR}") diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/api.h b/src/kem/ntru_prime/ntrulpr653/avx2/api.h deleted file mode 100644 index d1f32496..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/api.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef PQCLEAN_NTRULPR653_AVX2_API_H -#define PQCLEAN_NTRULPR653_AVX2_API_H - - - -#define PQCLEAN_NTRULPR653_AVX2_CRYPTO_ALGNAME "ntrulpr653" - -#define PQCLEAN_NTRULPR653_AVX2_CRYPTO_SECRETKEYBYTES 1125 -#define PQCLEAN_NTRULPR653_AVX2_CRYPTO_PUBLICKEYBYTES 897 -#define PQCLEAN_NTRULPR653_AVX2_CRYPTO_CIPHERTEXTBYTES 1025 -#define PQCLEAN_NTRULPR653_AVX2_CRYPTO_BYTES 32 - -int PQCLEAN_NTRULPR653_AVX2_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); -int PQCLEAN_NTRULPR653_AVX2_crypto_kem_enc(unsigned char *c, unsigned char *k, const unsigned char *pk); -int PQCLEAN_NTRULPR653_AVX2_crypto_kem_dec(unsigned char *k, const unsigned char *c, const unsigned char *sk); -#endif diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_core_multsntrup653.c b/src/kem/ntru_prime/ntrulpr653/avx2/crypto_core_multsntrup653.c deleted file mode 100644 index 74df5a9d..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_core_multsntrup653.c +++ /dev/null @@ -1,314 +0,0 @@ -#include "crypto_core_multsntrup653.h" -#include "crypto_core_multsntrup653_ntt.h" -#include "crypto_decode_653xint16.h" -#include "crypto_encode_653xint16.h" -#include - -typedef int8_t int8; -typedef int16_t int16; - -#define int16x16 __m256i -#define load_x16(p) _mm256_loadu_si256((int16x16 *) (p)) -#define store_x16(p,v) _mm256_storeu_si256((int16x16 *) (p),(v)) -#define const_x16 _mm256_set1_epi16 -#define add_x16 _mm256_add_epi16 -#define sub_x16 _mm256_sub_epi16 -#define mullo_x16 _mm256_mullo_epi16 -#define mulhi_x16 _mm256_mulhi_epi16 -#define mulhrs_x16 _mm256_mulhrs_epi16 -#define signmask_x16(x) _mm256_srai_epi16((x),15) - -typedef union { - int16 v[3][512]; - int16x16 _dummy; -} vec3x512; - -typedef union { - int16 v[768]; - int16x16 _dummy; -} vec768; - -typedef union { - int16 v[3 * 512]; - int16x16 _dummy; -} vec1536; - -static inline int16x16 squeeze_4621_x16(int16x16 x) { - return sub_x16(x, mullo_x16(mulhrs_x16(x, const_x16(7)), const_x16(4621))); -} - -static inline int16x16 squeeze_7681_x16(int16x16 x) { - return sub_x16(x, mullo_x16(mulhrs_x16(x, const_x16(4)), const_x16(7681))); -} - -static inline int16x16 squeeze_10753_x16(int16x16 x) { - return sub_x16(x, mullo_x16(mulhrs_x16(x, const_x16(3)), const_x16(10753))); -} - -static inline int16x16 mulmod_4621_x16(int16x16 x, int16x16 y) { - int16x16 yqinv = mullo_x16(y, const_x16(-29499)); /* XXX: precompute */ - int16x16 b = mulhi_x16(x, y); - int16x16 d = mullo_x16(x, yqinv); - int16x16 e = mulhi_x16(d, const_x16(4621)); - return sub_x16(b, e); -} - -static inline int16x16 mulmod_7681_x16(int16x16 x, int16x16 y) { - int16x16 yqinv = mullo_x16(y, const_x16(-7679)); /* XXX: precompute */ - int16x16 b = mulhi_x16(x, y); - int16x16 d = mullo_x16(x, yqinv); - int16x16 e = mulhi_x16(d, const_x16(7681)); - return sub_x16(b, e); -} - -static inline int16x16 mulmod_10753_x16(int16x16 x, int16x16 y) { - int16x16 yqinv = mullo_x16(y, const_x16(-10751)); /* XXX: precompute */ - int16x16 b = mulhi_x16(x, y); - int16x16 d = mullo_x16(x, yqinv); - int16x16 e = mulhi_x16(d, const_x16(10753)); - return sub_x16(b, e); -} - -#define mask0 _mm256_set_epi16(-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1) -#define mask1 _mm256_set_epi16(0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0) -#define mask2 _mm256_set_epi16(0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0) - -static void good(int16 fpad[3][512], const int16 f[768]) { - int j; - int16x16 f0, f1; - - j = 0; - for (;;) { - f0 = load_x16(f + j); - f1 = load_x16(f + 512 + j); - store_x16(&fpad[0][j], (f0 & mask0) | (f1 & mask1)); - store_x16(&fpad[1][j], (f0 & mask1) | (f1 & mask2)); - store_x16(&fpad[2][j], (f0 & mask2) | (f1 & mask0)); - j += 16; - if (j == 256) { - break; - } - - f0 = load_x16(f + j); - f1 = load_x16(f + 512 + j); - store_x16(&fpad[0][j], (f0 & mask2) | (f1 & mask0)); - store_x16(&fpad[1][j], (f0 & mask0) | (f1 & mask1)); - store_x16(&fpad[2][j], (f0 & mask1) | (f1 & mask2)); - j += 16; - - f0 = load_x16(f + j); - f1 = load_x16(f + 512 + j); - store_x16(&fpad[0][j], (f0 & mask1) | (f1 & mask2)); - store_x16(&fpad[1][j], (f0 & mask2) | (f1 & mask0)); - store_x16(&fpad[2][j], (f0 & mask0) | (f1 & mask1)); - j += 16; - } - for (;;) { - f0 = load_x16(f + j); - store_x16(&fpad[0][j], f0 & mask2); - store_x16(&fpad[1][j], f0 & mask0); - store_x16(&fpad[2][j], f0 & mask1); - j += 16; - if (j == 512) { - break; - } - - f0 = load_x16(f + j); - store_x16(&fpad[0][j], f0 & mask1); - store_x16(&fpad[1][j], f0 & mask2); - store_x16(&fpad[2][j], f0 & mask0); - j += 16; - - f0 = load_x16(f + j); - store_x16(&fpad[0][j], f0 & mask0); - store_x16(&fpad[1][j], f0 & mask1); - store_x16(&fpad[2][j], f0 & mask2); - j += 16; - } -} - -static void ungood(int16 f[1536], const int16 fpad[3][512]) { - int j; - int16x16 f0, f1, f2, g0, g1, g2; - - j = 0; - - for (;;) { - f0 = load_x16(&fpad[0][j]); - f1 = load_x16(&fpad[1][j]); - f2 = load_x16(&fpad[2][j]); - g0 = (f0 & mask0) | (f1 & mask1) | (f2 & mask2); - g1 = (f0 & mask1) | (f1 & mask2) | (f2 & mask0); - g2 = f0 ^ f1 ^ f2 ^ g0 ^ g1; /* same as (f0&mask2)|(f1&mask0)|(f2&mask1) */ - store_x16(f + 0 + j, g0); - store_x16(f + 512 + j, g1); - store_x16(f + 1024 + j, g2); - j += 16; - - f0 = load_x16(&fpad[0][j]); - f1 = load_x16(&fpad[1][j]); - f2 = load_x16(&fpad[2][j]); - g0 = (f0 & mask2) | (f1 & mask0) | (f2 & mask1); - g1 = (f0 & mask0) | (f1 & mask1) | (f2 & mask2); - g2 = f0 ^ f1 ^ f2 ^ g0 ^ g1; /* same as (f0&mask1)|(f1&mask2)|(f2&mask0) */ - store_x16(f + 0 + j, g0); - store_x16(f + 512 + j, g1); - store_x16(f + 1024 + j, g2); - j += 16; - if (j == 512) { - break; - } - - f0 = load_x16(&fpad[0][j]); - f1 = load_x16(&fpad[1][j]); - f2 = load_x16(&fpad[2][j]); - g0 = (f0 & mask1) | (f1 & mask2) | (f2 & mask0); - g1 = (f0 & mask2) | (f1 & mask0) | (f2 & mask1); - g2 = f0 ^ f1 ^ f2 ^ g0 ^ g1; /* same as (f0&mask0)|(f1&mask1)|(f2&mask2) */ - store_x16(f + 0 + j, g0); - store_x16(f + 512 + j, g1); - store_x16(f + 1024 + j, g2); - j += 16; - } -} - -static void mult768(int16 h[1536], const int16 f[768], const int16 g[768]) { - vec3x512 x1, x2; - vec1536 x3, x4; -#define fpad (x1.v) -#define gpad (x2.v) -#define hpad fpad -#define h_7681 (x3.v) -#define h_10753 (x4.v) - int i; - - good(fpad, f); - PQCLEAN_NTRULPR653_AVX2_ntt512_7681(fpad[0], 3); - - good(gpad, g); - PQCLEAN_NTRULPR653_AVX2_ntt512_7681(gpad[0], 3); - - for (i = 0; i < 512; i += 16) { - int16x16 f0 = squeeze_7681_x16(load_x16(&fpad[0][i])); - int16x16 f1 = squeeze_7681_x16(load_x16(&fpad[1][i])); - int16x16 f2 = squeeze_7681_x16(load_x16(&fpad[2][i])); - int16x16 g0 = squeeze_7681_x16(load_x16(&gpad[0][i])); - int16x16 g1 = squeeze_7681_x16(load_x16(&gpad[1][i])); - int16x16 g2 = squeeze_7681_x16(load_x16(&gpad[2][i])); - int16x16 d0 = mulmod_7681_x16(f0, g0); - int16x16 d1 = mulmod_7681_x16(f1, g1); - int16x16 d2 = mulmod_7681_x16(f2, g2); - int16x16 dsum = add_x16(add_x16(d0, d1), d2); - int16x16 h0 = add_x16(dsum, mulmod_7681_x16(sub_x16(f2, f1), sub_x16(g1, g2))); - int16x16 h1 = add_x16(dsum, mulmod_7681_x16(sub_x16(f1, f0), sub_x16(g0, g1))); - int16x16 h2 = add_x16(dsum, mulmod_7681_x16(sub_x16(f0, f2), sub_x16(g2, g0))); - store_x16(&hpad[0][i], squeeze_7681_x16(h0)); - store_x16(&hpad[1][i], squeeze_7681_x16(h1)); - store_x16(&hpad[2][i], squeeze_7681_x16(h2)); - } - - PQCLEAN_NTRULPR653_AVX2_invntt512_7681(hpad[0], 3); - ungood(h_7681, (const int16(*)[512]) hpad); - - good(fpad, f); - PQCLEAN_NTRULPR653_AVX2_ntt512_10753(fpad[0], 3); - - good(gpad, g); - PQCLEAN_NTRULPR653_AVX2_ntt512_10753(gpad[0], 3); - - for (i = 0; i < 512; i += 16) { - int16x16 f0 = squeeze_10753_x16(load_x16(&fpad[0][i])); - int16x16 f1 = squeeze_10753_x16(load_x16(&fpad[1][i])); - int16x16 f2 = squeeze_10753_x16(load_x16(&fpad[2][i])); - int16x16 g0 = squeeze_10753_x16(load_x16(&gpad[0][i])); - int16x16 g1 = squeeze_10753_x16(load_x16(&gpad[1][i])); - int16x16 g2 = squeeze_10753_x16(load_x16(&gpad[2][i])); - int16x16 d0 = mulmod_10753_x16(f0, g0); - int16x16 d1 = mulmod_10753_x16(f1, g1); - int16x16 d2 = mulmod_10753_x16(f2, g2); - int16x16 dsum = add_x16(add_x16(d0, d1), d2); - int16x16 h0 = add_x16(dsum, mulmod_10753_x16(sub_x16(f2, f1), sub_x16(g1, g2))); - int16x16 h1 = add_x16(dsum, mulmod_10753_x16(sub_x16(f1, f0), sub_x16(g0, g1))); - int16x16 h2 = add_x16(dsum, mulmod_10753_x16(sub_x16(f0, f2), sub_x16(g2, g0))); - store_x16(&hpad[0][i], squeeze_10753_x16(h0)); - store_x16(&hpad[1][i], squeeze_10753_x16(h1)); - store_x16(&hpad[2][i], squeeze_10753_x16(h2)); - } - - PQCLEAN_NTRULPR653_AVX2_invntt512_10753(hpad[0], 3); - ungood(h_10753, (const int16(*)[512]) hpad); - - for (i = 0; i < 1536; i += 16) { - int16x16 u1 = load_x16(&h_10753[i]); - int16x16 u2 = load_x16(&h_7681[i]); - int16x16 t; - u1 = mulmod_10753_x16(u1, const_x16(1268)); - u2 = mulmod_7681_x16(u2, const_x16(956)); - t = mulmod_7681_x16(sub_x16(u2, u1), const_x16(-2539)); - t = add_x16(u1, mulmod_4621_x16(t, const_x16(1487))); - store_x16(&h[i], t); - } -} - -#define crypto_decode_pxint16 PQCLEAN_NTRULPR653_AVX2_crypto_decode_653xint16 -#define crypto_encode_pxint16 PQCLEAN_NTRULPR653_AVX2_crypto_encode_653xint16 - -#define p 653 -#define q 4621 - -static inline int16x16 freeze_4621_x16(int16x16 x) { - int16x16 mask, xq; - x = add_x16(x, const_x16(q)&signmask_x16(x)); - mask = signmask_x16(sub_x16(x, const_x16((q + 1) / 2))); - xq = sub_x16(x, const_x16(q)); - x = _mm256_blendv_epi8(xq, x, mask); - return x; -} - -int PQCLEAN_NTRULPR653_AVX2_crypto_core_multsntrup653(unsigned char *outbytes, const unsigned char *inbytes, const unsigned char *kbytes) { - vec768 x1, x2; - vec1536 x3; -#define f (x1.v) -#define g (x2.v) -#define fg (x3.v) -#define h f - int i; - int16x16 x; - - x = const_x16(0); - for (i = p & ~15; i < 768; i += 16) { - store_x16(&f[i], x); - } - for (i = p & ~15; i < 768; i += 16) { - store_x16(&g[i], x); - } - - crypto_decode_pxint16(f, inbytes); - - for (i = 0; i < 768; i += 16) { - x = load_x16(&f[i]); - x = freeze_4621_x16(squeeze_4621_x16(x)); - store_x16(&f[i], x); - } - for (i = 0; i < p; ++i) { - int8 gi = (int8) kbytes[i]; - int8 gi0 = gi & 1; - g[i] = (int16) (gi0 - (gi & (gi0 << 1))); - } - - mult768(fg, f, g); - - fg[0] = (int16) (fg[0] - fg[p - 1]); - for (i = 0; i < 768; i += 16) { - int16x16 fgi = load_x16(&fg[i]); - int16x16 fgip = load_x16(&fg[i + p]); - int16x16 fgip1 = load_x16(&fg[i + p - 1]); - x = add_x16(fgi, add_x16(fgip, fgip1)); - x = freeze_4621_x16(squeeze_4621_x16(x)); - store_x16(&h[i], x); - } - - crypto_encode_pxint16(outbytes, h); - - return 0; -} diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_core_multsntrup653.h b/src/kem/ntru_prime/ntrulpr653/avx2/crypto_core_multsntrup653.h deleted file mode 100644 index 0637b00c..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_core_multsntrup653.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef PQCLEAN_NTRULPR653_AVX2_CRYPTO_CORE_MULTSNTRUP653_H -#define PQCLEAN_NTRULPR653_AVX2_CRYPTO_CORE_MULTSNTRUP653_H - -#include -#define PQCLEAN_NTRULPR653_AVX2_crypto_core_multsntrup653_OUTPUTBYTES 1306 -#define PQCLEAN_NTRULPR653_AVX2_crypto_core_multsntrup653_INPUTBYTES 1306 -#define PQCLEAN_NTRULPR653_AVX2_crypto_core_multsntrup653_KEYBYTES 653 -#define PQCLEAN_NTRULPR653_AVX2_crypto_core_multsntrup653_CONSTBYTES 0 - -int PQCLEAN_NTRULPR653_AVX2_crypto_core_multsntrup653(unsigned char *outbytes, const unsigned char *inbytes, const unsigned char *kbytes); -#endif diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_core_multsntrup653_ntt.c b/src/kem/ntru_prime/ntrulpr653/avx2/crypto_core_multsntrup653_ntt.c deleted file mode 100644 index 461f626a..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_core_multsntrup653_ntt.c +++ /dev/null @@ -1,927 +0,0 @@ -#include "crypto_core_multsntrup653.h" -#include "crypto_core_multsntrup653_ntt.h" -#include -#include - -/* auto-generated; do not edit */ - - -typedef int8_t int8; -typedef int16_t int16; - -#define zeta(n,i) (((__m256i *) zeta_##n)[(i)]) -#define zeta_x4(n,i) (((__m256i *) zeta_x4_##n)[(i)]) -#define zeta_qinv(n,i) (((__m256i *) qinvzeta_##n)[(i)]) -#define zeta_x4_qinv(n,i) (((__m256i *) qinvzeta_x4_##n)[(i)]) -#define zetainv(n,i) _mm256_loadu_reverse16((__m256i *) ((int16 *) zeta_##n+(n)/2+1-16*((i)+1))) -#define zetainv_x4(n,i) _mm256_loadu_reverse16((__m256i *) ((int16 *) zeta_x4_##n+2*(n)+4-16*((i)+1))) -#define zetainv_qinv(n,i) _mm256_loadu_reverse16((__m256i *) ((int16 *) qinvzeta_##n+(n)/2+1-16*((i)+1))) -#define zetainv_x4_qinv(n,i) _mm256_loadu_reverse16((__m256i *) ((int16 *) qinvzeta_x4_##n+2*(n)+4-16*((i)+1))) - -typedef union { - int16 data[93 * 16]; - __m256i _dummy; -} vec1488; - -static const vec1488 qdata_7681 = { .data = { - -#define q_x16 (qdata[0]) - 7681, 7681, 7681, 7681, 7681, 7681, 7681, 7681, 7681, 7681, 7681, 7681, 7681, 7681, 7681, 7681, - -#define qrecip_x16 (qdata[1]) - 17474, 17474, 17474, 17474, 17474, 17474, 17474, 17474, 17474, 17474, 17474, 17474, 17474, 17474, 17474, 17474, - -#define qshift_x16 (qdata[2]) - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - -#define zeta4_x16 (qdata[3]) - -3777, -3777, -3777, -3777, -3777, -3777, -3777, -3777, -3777, -3777, -3777, -3777, -3777, -3777, -3777, -3777, - -#define zeta4_x16_qinv (qdata[4]) - -28865, -28865, -28865, -28865, -28865, -28865, -28865, -28865, -28865, -28865, -28865, -28865, -28865, -28865, -28865, -28865, - -#define zeta8_x16 (qdata[5]) - -3625, -3625, -3625, -3625, -3625, -3625, -3625, -3625, -3625, -3625, -3625, -3625, -3625, -3625, -3625, -3625, - -#define zeta8_x16_qinv (qdata[6]) - -16425, -16425, -16425, -16425, -16425, -16425, -16425, -16425, -16425, -16425, -16425, -16425, -16425, -16425, -16425, -16425, - -#define zetainv8_x16 (qdata[7]) - -3182, -3182, -3182, -3182, -3182, -3182, -3182, -3182, -3182, -3182, -3182, -3182, -3182, -3182, -3182, -3182, - -#define zetainv8_x16_qinv (qdata[8]) - -10350, -10350, -10350, -10350, -10350, -10350, -10350, -10350, -10350, -10350, -10350, -10350, -10350, -10350, -10350, -10350, - -#define zeta_x4_16 (qdata+9) - -3593, -3593, -3593, -3593, -2194, -2194, -2194, -2194, -3625, -3625, -3625, -3625, 1100, 1100, 1100, 1100, - -3777, -3777, -3777, -3777, -2456, -2456, -2456, -2456, 3182, 3182, 3182, 3182, 3696, 3696, 3696, 3696, - 3593, 3593, 3593, 3593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -#define qinvzeta_x4_16 (qdata+12) - -9, -9, -9, -9, 4974, 4974, 4974, 4974, -16425, -16425, -16425, -16425, 7244, 7244, 7244, 7244, - -28865, -28865, -28865, -28865, -14744, -14744, -14744, -14744, 10350, 10350, 10350, 10350, -4496, -4496, -4496, -4496, - 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -#define zeta_x4_32 (qdata+15) - -3593, -3593, -3593, -3593, 1414, 1414, 1414, 1414, -2194, -2194, -2194, -2194, -2495, -2495, -2495, -2495, - -3625, -3625, -3625, -3625, 2876, 2876, 2876, 2876, 1100, 1100, 1100, 1100, -2250, -2250, -2250, -2250, - -3777, -3777, -3777, -3777, -1701, -1701, -1701, -1701, -2456, -2456, -2456, -2456, 834, 834, 834, 834, - 3182, 3182, 3182, 3182, -2319, -2319, -2319, -2319, 3696, 3696, 3696, 3696, 121, 121, 121, 121, - 3593, 3593, 3593, 3593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -#define qinvzeta_x4_32 (qdata+20) - -9, -9, -9, -9, 20870, 20870, 20870, 20870, 4974, 4974, 4974, 4974, 22593, 22593, 22593, 22593, - -16425, -16425, -16425, -16425, 828, 828, 828, 828, 7244, 7244, 7244, 7244, -23754, -23754, -23754, -23754, - -28865, -28865, -28865, -28865, 20315, 20315, 20315, 20315, -14744, -14744, -14744, -14744, 18242, 18242, 18242, 18242, - 10350, 10350, 10350, 10350, -18191, -18191, -18191, -18191, -4496, -4496, -4496, -4496, -11655, -11655, -11655, -11655, - 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -#define zeta_64 (qdata+25) - -3593, -617, 1414, 3706, -2194, -1296, -2495, -2237, -3625, 2830, 2876, -1599, 1100, 1525, -2250, 2816, - -3777, 1921, -1701, 2006, -2456, 1483, 834, -1986, 3182, 3364, -2319, -1993, 3696, -2557, 121, 2088, - 3593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -#define qinvzeta_64 (qdata+28) - -9, 19351, 20870, -15750, 4974, -9488, 22593, 7491, -16425, 26382, 828, 23489, 7244, 20469, -23754, 2816, - -28865, -5759, 20315, -3114, -14744, 15307, 18242, -19394, 10350, -10972, -18191, -31177, -4496, -25597, -11655, 22568, - 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -#define zeta_128 (qdata+31) - -3593, -2804, -617, -396, 1414, -549, 3706, 810, -2194, -1321, -1296, 438, -2495, -2535, -2237, -3689, - -3625, 2043, 2830, -1881, 2876, 3153, -1599, 7, 1100, -514, 1525, -1760, -2250, -2440, 2816, 3600, - -3777, 103, 1921, -3174, -1701, 1535, 2006, -1887, -2456, 1399, 1483, -679, 834, 3772, -1986, 1738, - 3182, -1431, 3364, -3555, -2319, -2310, -1993, 638, 3696, -2956, -2557, -1305, 121, 2555, 2088, -3266, - 3593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -#define qinvzeta_128 (qdata+36) - -9, -29428, 19351, 26228, 20870, 21467, -15750, 5930, 4974, -14121, -9488, -21066, 22593, 2073, 7491, 16279, - -16425, -25093, 26382, 26279, 828, -29103, 23489, 11783, 7244, 14846, 20469, 14624, -23754, -6536, 2816, 11792, - -28865, -4505, -5759, -6246, 20315, 9215, -3114, 6817, -14744, 4983, 15307, -28839, 18242, 1724, -19394, 23242, - 10350, -21399, -10972, -29667, -18191, -21766, -31177, 15998, -4496, 23668, -25597, -5913, -11655, -24581, 22568, -20674, - 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -#define zeta_256 (qdata+41) - -3593, 2665, -2804, -2572, -617, 727, -396, 3417, 1414, 2579, -549, 373, 3706, 3750, 810, -1054, - -2194, -2133, -1321, 1681, -1296, -1386, 438, -2732, -2495, 1919, -2535, -2391, -2237, 2835, -3689, 2, - -3625, -783, 2043, 3145, 2830, 1533, -1881, 2789, 2876, 2649, 3153, 3692, -1599, -1390, 7, -1166, - 1100, 3310, -514, 2224, 1525, -2743, -1760, 2385, -2250, -486, -2440, -1756, 2816, -3816, 3600, -3831, - -3777, -1799, 103, 1497, 1921, 1521, -3174, -194, -1701, -859, 1535, 2175, 2006, -2762, -1887, -1698, - -2456, -3480, 1399, 2883, 1483, -3428, -679, -2113, 834, 1532, 3772, -660, -1986, -2764, 1738, -915, - 3182, 1056, -1431, 1350, 3364, 1464, -3555, 2919, -2319, -2160, -2310, 730, -1993, -1598, 638, 3456, - 3696, -1168, -2956, -3588, -2557, -921, -1305, 3405, 121, -404, 2555, -3135, 2088, 2233, -3266, -2426, - 3593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -#define qinvzeta_256 (qdata+50) - -9, -17303, -29428, 24052, 19351, -12073, 26228, -24743, 20870, -12269, 21467, 19317, -15750, -25946, 5930, 32738, - 4974, -4693, -14121, 2193, -9488, 26262, -21066, 7508, 22593, 9599, 2073, 10409, 7491, -12013, 16279, -15358, - -16425, -16655, -25093, 32329, 26382, 24573, 26279, 13541, 828, -25511, -29103, 26220, 23489, -8558, 11783, -24718, - 7244, 10478, 14846, 26800, 20469, 26441, 14624, -29871, -23754, -3558, -6536, -16092, 2816, 8472, 11792, -7415, - -28865, -13575, -4505, -26663, -5759, -14351, -6246, -17602, 20315, -22875, 9215, 9855, -3114, -24266, 6817, -2722, - -14744, -15768, 4983, 12611, 15307, -21860, -28839, -27201, 18242, 32252, 1724, 21868, -19394, -8908, 23242, 13933, - 10350, 17440, -21399, -11962, -10972, 30136, -29667, -1689, -18191, 6032, -21766, 30426, -31177, 15810, 15998, 3456, - -4496, -9360, 23668, 27132, -25597, -5529, -5913, 1869, -11655, 22124, -24581, 21953, 22568, 23225, -20674, 17030, - 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -#define zeta_512 (qdata+59) - -3593, 2005, 2665, 2891, -2804, 2345, -2572, 1121, -617, -188, 727, 2786, -396, -3208, 3417, -17, - 1414, -3752, 2579, 2815, -549, 1837, 373, 151, 3706, -1012, 3750, -1509, 810, -3214, -1054, 3177, - -2194, -1403, -2133, -3314, -1321, 83, 1681, -658, -1296, 2070, -1386, -3547, 438, 3781, -2732, 2230, - -2495, -1669, 1919, 2589, -2535, -3312, -2391, -3542, -2237, -1441, 2835, -3568, -3689, -402, 2, -1070, - -3625, 3763, -783, -3550, 2043, -2303, 3145, -436, 2830, -893, 1533, 1712, -1881, 124, 2789, -2001, - 2876, -2460, 2649, 3770, 3153, 2965, 3692, -1203, -1599, 2874, -1390, -1407, 7, -3745, -1166, 1649, - 1100, 2937, 3310, 3461, -514, -1526, 2224, 715, 1525, -1689, -2743, 434, -1760, -3163, 2385, -929, - -2250, -2167, -486, -1144, -2440, -370, -1756, 2378, 2816, -1084, -3816, -1586, 3600, 1931, -3831, -1242, - -3777, 592, -1799, 2340, 103, -1338, 1497, -2071, 1921, 1519, 1521, 451, -3174, 589, -194, -3744, - -1701, 3677, -859, -1295, 1535, 642, 2175, -3794, 2006, 2130, -2762, 2918, -1887, 3334, -1698, 2072, - -2456, 509, -3480, 2998, 1399, -3408, 2883, 1476, 1483, -2262, -3428, -1779, -679, 2258, -2113, 1348, - 834, -692, 1532, 2247, 3772, 2083, -660, -226, -1986, 2532, -2764, -3693, 1738, -429, -915, -2059, - 3182, 2812, 1056, 3434, -1431, -2515, 1350, -236, 3364, -2386, 1464, 222, -3555, -2963, 2919, -2422, - -2319, -3657, -2160, 3450, -2310, -791, 730, 1181, -1993, -1404, -1598, 2339, 638, -3366, 3456, 2161, - 3696, -3343, -1168, 2719, -2956, -826, -3588, -670, -2557, 777, -921, 1151, -1305, -796, 3405, -1278, - 121, -3287, -404, 1072, 2555, 293, -3135, 2767, 2088, -3335, 2233, 3581, -3266, 3723, -2426, -179, - 3593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -#define qinvzeta_512 (qdata+76) - -9, 4565, -17303, 16715, -29428, 15145, 24052, -22943, 19351, 1860, -12073, -28958, 26228, -7304, -24743, -529, - 20870, -24232, -12269, 10495, 21467, -16083, 19317, 20119, -15750, -27636, -25946, -12261, 5930, -26766, 32738, -16791, - 4974, 25733, -4693, 20238, -14121, 18003, 2193, 6510, -9488, 29718, 26262, -25563, -21066, -1851, 7508, -19274, - 22593, -28805, 9599, -23523, 2073, 4880, 10409, 1578, 7491, -10145, -12013, 4624, 16279, 6766, -15358, 24530, - -16425, 5299, -16655, -2526, -25093, -9983, 32329, 5708, 26382, -23933, 24573, 26288, 26279, 30844, 13541, 30255, - 828, 15972, -25511, 17082, -29103, -27243, 26220, -2739, 23489, 16186, -8558, -9087, 11783, -12449, -24718, -14223, - 7244, -8839, 10478, 30597, 14846, -12790, 26800, 14539, 20469, -6297, 26441, 9650, 14624, -25179, -29871, -9633, - -23754, -5751, -3558, 2952, -6536, 23182, -16092, 23882, 2816, 964, 8472, -10802, 11792, -17013, -7415, -30938, - -28865, -23984, -13575, -11996, -4505, -14650, -26663, -22039, -5759, 1007, -14351, 10179, -6246, -947, -17602, -20128, - 20315, 10333, -22875, -17167, 9215, -14718, 9855, -29394, -3114, 27730, -24266, 5990, 6817, 22790, -2722, 14360, - -14744, 23549, -15768, -18506, 4983, 21168, 12611, 3524, 15307, 2858, -21860, 29453, -28839, 27858, -27201, 3396, - 18242, 5452, 32252, -18745, 1724, -4573, 21868, 31518, -19394, 20964, -8908, -18541, 23242, 17491, 13933, 16885, - 10350, -32004, 17440, -24214, -21399, -20435, -11962, -22764, -10972, -27986, 30136, -802, -29667, 11885, -1689, -13686, - -18191, 32695, 6032, -16006, -21766, -20759, 30426, -24931, -31177, -32124, 15810, -4317, 15998, 26330, 3456, -13711, - -4496, -19215, -9360, 26783, 23668, -14138, 27132, -32414, -25597, -2807, -5529, 8831, -5913, 17636, 1869, -16638, - -11655, 9513, 22124, 25648, -24581, -21723, 21953, -14129, 22568, -15111, 23225, 26621, -20674, -15221, 17030, -1715, - 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - } -}; - -static const vec1488 qdata_10753 = { .data = { - - 10753, 10753, 10753, 10753, 10753, 10753, 10753, 10753, 10753, 10753, 10753, 10753, 10753, 10753, 10753, 10753, - - 24964, 24964, 24964, 24964, 24964, 24964, 24964, 24964, 24964, 24964, 24964, 24964, 24964, 24964, 24964, 24964, - - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - - 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, - - 27359, 27359, 27359, 27359, 27359, 27359, 27359, 27359, 27359, 27359, 27359, 27359, 27359, 27359, 27359, 27359, - - 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, - - -1956, -1956, -1956, -1956, -1956, -1956, -1956, -1956, -1956, -1956, -1956, -1956, -1956, -1956, -1956, -1956, - - 3688, 3688, 3688, 3688, 3688, 3688, 3688, 3688, 3688, 3688, 3688, 3688, 3688, 3688, 3688, 3688, - - -408, -408, -408, -408, -408, -408, -408, -408, -408, -408, -408, -408, -408, -408, -408, -408, - - 1018, 1018, 1018, 1018, 2413, 2413, 2413, 2413, 4188, 4188, 4188, 4188, 357, 357, 357, 357, - 223, 223, 223, 223, -3686, -3686, -3686, -3686, -3688, -3688, -3688, -3688, -376, -376, -376, -376, - -1018, -1018, -1018, -1018, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - -6, -6, -6, -6, 10093, 10093, 10093, 10093, -1956, -1956, -1956, -1956, 28517, 28517, 28517, 28517, - 27359, 27359, 27359, 27359, -21094, -21094, -21094, -21094, 408, 408, 408, 408, -20856, -20856, -20856, -20856, - 6, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 1018, 1018, 1018, 1018, -2695, -2695, -2695, -2695, 2413, 2413, 2413, 2413, 425, 425, 425, 425, - 4188, 4188, 4188, 4188, -4855, -4855, -4855, -4855, 357, 357, 357, 357, -3364, -3364, -3364, -3364, - 223, 223, 223, 223, 730, 730, 730, 730, -3686, -3686, -3686, -3686, -4544, -4544, -4544, -4544, - -3688, -3688, -3688, -3688, -2236, -2236, -2236, -2236, -376, -376, -376, -376, 3784, 3784, 3784, 3784, - -1018, -1018, -1018, -1018, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - -6, -6, -6, -6, 7033, 7033, 7033, 7033, 10093, 10093, 10093, 10093, 18345, 18345, 18345, 18345, - -1956, -1956, -1956, -1956, 29449, 29449, 29449, 29449, 28517, 28517, 28517, 28517, -9508, -9508, -9508, -9508, - 27359, 27359, 27359, 27359, 16090, 16090, 16090, 16090, -21094, -21094, -21094, -21094, 28224, 28224, 28224, 28224, - 408, 408, 408, 408, -12476, -12476, -12476, -12476, -20856, -20856, -20856, -20856, 16072, 16072, 16072, 16072, - 6, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 1018, -1520, -2695, 1341, 2413, 918, 425, 5175, 4188, -4035, -4855, 341, 357, 4347, -3364, 5213, - 223, -4875, 730, 1931, -3686, -2503, -4544, -4095, -3688, 5063, -2236, -3823, -376, 3012, 3784, -2629, - -1018, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - -6, 23056, 7033, 829, 10093, 26518, 18345, 3639, -1956, -4547, 29449, 3925, 28517, -7429, -9508, -11683, - 27359, -17675, 16090, 14731, -21094, -25543, 28224, -14847, 408, 28103, -12476, 10001, -20856, -7228, 16072, 18363, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 1018, -2935, -1520, -4744, -2695, -205, 1341, 1299, 2413, 4, 918, -4379, 425, -4616, 5175, -544, - 4188, 4129, -4035, 4102, -4855, -1287, 341, -2388, 357, 1284, 4347, 2984, -3364, 2178, 5213, -2576, - 223, 2790, -4875, 4876, 730, -4513, 1931, -3085, -3686, 3550, -2503, 847, -4544, 193, -4095, 1085, - -3688, 3091, 5063, -4742, -2236, 2982, -3823, -1009, -376, -268, 3012, 3062, 3784, -2565, -2629, 4189, - -1018, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - -6, 31369, 23056, 15736, 7033, -24269, 829, -6381, 10093, 22532, 26518, 23781, 18345, 15864, 3639, 15840, - -1956, -23007, -4547, 5126, 29449, 8441, 3925, -16724, 28517, 23812, -7429, 31656, -9508, -19326, -11683, -27152, - 27359, 20198, -17675, 6924, 16090, 22623, 14731, 5619, -21094, -24098, -25543, 3407, 28224, 22209, -14847, 573, - 408, -4589, 28103, -5766, -12476, -12378, 10001, -31217, -20856, -2316, -7228, -20490, 16072, -14341, 18363, -12707, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 1018, -4734, -2935, -400, -1520, 4977, -4744, -2973, -2695, 512, -205, -779, 1341, -1356, 1299, 635, - 2413, 567, 4, -4286, 918, -5114, -4379, -1586, 425, 1615, -4616, -336, 5175, -1841, -544, 2234, - 4188, -3441, 4129, 636, -4035, -4580, 4102, 2684, -4855, 3057, -1287, -2740, 341, -5156, -2388, -472, - 357, -794, 1284, 578, 4347, 3615, 2984, -3715, -3364, 2271, 2178, -326, 5213, 454, -2576, -3337, - 223, 2998, 2790, -151, -4875, 2981, 4876, 1324, 730, 2774, -4513, 2206, 1931, 886, -3085, -970, - -3686, 3198, 3550, 2737, -2503, -909, 847, 1068, -4544, -2213, 193, 2884, -4095, -4808, 1085, 4123, - -3688, 5341, 3091, 5294, 5063, -116, -4742, -5116, -2236, -2045, 2982, -1572, -3823, 4828, -1009, 467, - -376, 5023, -268, -3169, 3012, -1458, 3062, -1268, 3784, -675, -2565, 1006, -2629, 5064, 4189, 864, - -1018, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - -6, -26238, 31369, -24976, 23056, -30351, 15736, -18845, 7033, 512, -24269, -13579, 829, 29364, -6381, -11141, - 10093, -969, 22532, 6978, 26518, -4090, 23781, 11726, 18345, 4175, 15864, 7856, 3639, 719, 15840, -31558, - -1956, 31887, -23007, -21892, -4547, 22044, 5126, -19844, 29449, -32271, 8441, 32076, 3925, -11300, -16724, 28200, - 28517, 16614, 23812, 11842, -7429, -2017, 31656, 28541, -9508, 29407, -19326, 31418, -11683, -31290, -27152, 27895, - 27359, 12214, 20198, -14999, -17675, -1627, 6924, -13012, 16090, -4394, 22623, 7326, 14731, -22666, 5619, 8246, - -21094, 24702, -24098, 177, -25543, 7795, 3407, -13268, 28224, 2395, 22209, -7356, -14847, -17096, 573, -24037, - 408, -11555, -4589, -30546, 28103, 1932, -5766, 17412, -12476, 31235, -12378, -7716, 10001, -1316, -31217, 25555, - -20856, -609, -2316, -8801, -7228, 11854, -20490, 780, 16072, -17571, -14341, -2066, 18363, 17352, -12707, 17248, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 1018, 3453, -4734, 4519, -2935, 2118, -400, -554, -1520, 2196, 4977, 1893, -4744, -1409, -2973, -1053, - -2695, 4601, 512, 279, -205, -3241, -779, 4889, 1341, 3524, -1356, -1663, 1299, 2283, 635, 73, - 2413, 2428, 567, 624, 4, -1930, -4286, 3419, 918, -2062, -5114, 5068, -4379, -97, -1586, 1782, - 425, 4621, 1615, 355, -4616, 1349, -336, 825, 5175, 3135, -1841, 1160, -544, 4408, 2234, -2605, - 4188, 854, -3441, -1056, 4129, 2439, 636, 4967, -4035, -4782, -4580, -5268, 4102, -663, 2684, -4670, - -4855, 3760, 3057, 3535, -1287, 2680, -2740, -569, 341, 2139, -5156, 3827, -2388, 1639, -472, 1927, - 357, 5172, -794, -4003, 1284, 4144, 578, 693, 4347, 4784, 3615, 3125, 2984, 1122, -3715, 2113, - -3364, -573, 2271, -4328, 2178, 2909, -326, -4000, 5213, -4447, 454, -3995, -2576, -4428, -3337, 2529, - 223, 5309, 2998, 5120, 2790, -2050, -151, 2963, -4875, 2657, 2981, -2807, 4876, 2237, 1324, -4403, - 730, 2624, 2774, -5083, -4513, 40, 2206, 152, 1931, -1573, 886, 2625, -3085, -778, -970, -5107, - -3686, 4250, 3198, -5356, 3550, -3148, 2737, -3360, -2503, -2015, -909, 3096, 847, 5313, 1068, 834, - -4544, -1132, -2213, -2151, 193, -1722, 2884, -4393, -4095, 2662, -4808, -2788, 1085, -1992, 4123, 5334, - -3688, 5215, 5341, -1689, 3091, -2117, 5294, 4859, 5063, 3410, -116, 2205, -4742, -2374, -5116, -4720, - -2236, 3570, -2045, 2813, 2982, 2087, -1572, -4973, -3823, 458, 4828, 3891, -1009, -2419, 467, -4891, - -376, -1381, 5023, 1204, -268, 274, -3169, -3260, 3012, -1635, -1458, 4540, 3062, -4254, -1268, -1111, - 3784, 2230, -675, -2279, -2565, -4359, 1006, -1510, -2629, 5015, 5064, -2449, 4189, -5005, 864, 2487, - -1018, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - -6, -29827, -26238, -21593, 31369, -29626, -24976, -7722, 23056, -16236, -30351, 30053, 15736, 9343, -18845, -16925, - 7033, 14329, 512, 15127, -24269, -21161, -13579, -1767, 829, -6716, 29364, -12415, -6381, 31467, -11141, 1609, - 10093, -20100, -969, -23952, 22532, -25482, 6978, 8027, 26518, 17394, -4090, -25652, 23781, -5729, 11726, -21770, - 18345, -4083, 4175, -15517, 15864, -19643, 7856, -22215, 3639, -18881, 719, -19320, 15840, -7880, -31558, 22483, - -1956, -6314, 31887, 15328, -23007, -7289, -21892, 11623, -4547, 31058, 22044, 13164, 5126, -15511, -19844, 6594, - 29449, 11952, -32271, 6095, 8441, 23160, 32076, 22471, 3925, 6747, -11300, 12531, -16724, 8295, 28200, -7801, - 28517, -29644, 16614, -20899, 23812, 12336, 11842, 20661, -7429, 12976, -2017, 23093, 31656, -3998, 28541, 24129, - -9508, -61, 29407, -232, -19326, -13987, 31418, 12384, -11683, -31583, -31290, 24165, -27152, 26292, 27895, 8161, - 27359, 4797, 12214, 5120, 20198, 19454, -14999, -4717, -17675, 8289, -1627, 31497, 6924, 1725, -13012, 19661, - 16090, -30144, -4394, -9691, 22623, 28712, 7326, 4248, 14731, 3035, -22666, 24641, 5619, -24330, 8246, -13811, - -21094, -13158, 24702, -23788, -24098, 27572, 177, 13024, -25543, -29151, 7795, 7192, 3407, 27329, -13268, 12098, - 28224, -19564, 2395, -8807, 22209, 32070, -7356, -22313, -14847, 20070, -17096, 23836, 573, -14280, -24037, -1834, - 408, 32351, -11555, 4967, -4589, 18875, -30546, -6917, 28103, -26286, 1932, 18077, -5766, 29370, 17412, 19856, - -12476, 23026, 31235, -30467, -12378, -24025, -7716, -12653, 10001, -8758, -1316, -20173, -31217, -11123, 25555, 23269, - -20856, -29541, -609, 31924, -2316, 3346, -8801, -13500, -7228, 14237, 11854, 14780, -20490, -9374, 780, 16809, - 16072, 11446, -17571, -8935, -14341, 5369, -2066, -18918, 18363, 19863, 17352, -16273, -12707, 3699, 17248, 951, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - } -}; - -static inline __m256i sub_x16(__m256i a, __m256i b) { - //__asm__("vpsubw %1,%0,%0" : "+x"(a),"+x"(b)); - return _mm256_sub_epi16(a, b); -} - -static inline __m256i add_x16(__m256i a, __m256i b) { - return _mm256_add_epi16(a, b); -} - -static inline __m256i reduce_x16(const __m256i *qdata, __m256i x) { - __m256i y = _mm256_mulhi_epi16(x, qrecip_x16); - y = _mm256_mulhrs_epi16(y, qshift_x16); - y = _mm256_mullo_epi16(y, q_x16); - return sub_x16(x, y); -} - -static inline __m256i mulmod_x16_scaled(const __m256i *qdata, __m256i x, __m256i y, __m256i yqinv) { - __m256i b = _mm256_mulhi_epi16(x, y); - __m256i d = _mm256_mullo_epi16(x, yqinv); - __m256i e = _mm256_mulhi_epi16(d, q_x16); - return sub_x16(b, e); -} - -typedef union { - int8 data[32]; - __m256i _dummy; -} byte32; -static const byte32 shuffle_buf = { .data = { - 14, 15, 12, 13, 10, 11, 8, 9, 6, 7, 4, 5, 2, 3, 0, 1, - 14, 15, 12, 13, 10, 11, 8, 9, 6, 7, 4, 5, 2, 3, 0, 1, - } -}; -#define shuffle (*(__m256i *) shuffle_buf.data) - -static inline __m256i _mm256_loadu_reverse16(const __m256i *p) { - __m256i x = _mm256_loadu_si256(p); - x = _mm256_permute2x128_si256(x, x, 1); - x = _mm256_shuffle_epi8(x, shuffle); - return x; -} - -static void ntt128(int16 *f, int reps, const __m256i *qdata) { - __m256i f0, f1, f2, f3, g0, g1, g2, g3, h0, h1, h2, h3; - int16 *origf = f; - int rep; - __m256i zetainv_128_0 = zetainv(128, 0); - __m256i zetainv_qinv_128_0 = zetainv_qinv(128, 0); - __m256i zetainv_x4_32_0 = zetainv_x4(32, 0); - __m256i zetainv_x4_qinv_32_0 = zetainv_x4_qinv(32, 0); - __m256i zetainv_128_1 = zetainv(128, 1); - __m256i zetainv_qinv_128_1 = zetainv_qinv(128, 1); - __m256i zetainv_x4_32_1 = zetainv_x4(32, 1); - __m256i zetainv_x4_qinv_32_1 = zetainv_x4_qinv(32, 1); - for (rep = 0; rep < reps; ++rep) { - f1 = _mm256_loadu_si256((__m256i *) (f + 32)); - f3 = _mm256_loadu_si256((__m256i *) (f + 96)); - g3 = sub_x16(f1, f3); - g3 = mulmod_x16_scaled(qdata, g3, zeta4_x16, zeta4_x16_qinv); - g1 = add_x16(f1, f3); - - f0 = _mm256_loadu_si256((__m256i *) (f + 0)); - f2 = _mm256_loadu_si256((__m256i *) (f + 64)); - g2 = sub_x16(f0, f2); - g0 = add_x16(f0, f2); - - f3 = sub_x16(g3, g2); - f2 = add_x16(g2, g3); - f3 = mulmod_x16_scaled(qdata, f3, zetainv_128_0, zetainv_qinv_128_0); - f2 = mulmod_x16_scaled(qdata, f2, zeta(128, 0), zeta_qinv(128, 0)); - - g2 = _mm256_unpacklo_epi16(f2, f3); - g3 = _mm256_unpackhi_epi16(f2, f3); - - f1 = sub_x16(g0, g1); - f0 = add_x16(g0, g1); - f1 = mulmod_x16_scaled(qdata, f1, zeta(64, 0), zeta_qinv(64, 0)); - f0 = reduce_x16(qdata, f0); - - g0 = _mm256_unpacklo_epi16(f0, f1); - h0 = _mm256_unpacklo_epi32(g0, g2); - h1 = _mm256_unpackhi_epi32(g0, g2); - g1 = _mm256_unpackhi_epi16(f0, f1); - h2 = _mm256_unpacklo_epi32(g1, g3); - h3 = _mm256_unpackhi_epi32(g1, g3); - f0 = _mm256_permute2x128_si256(h0, h1, 0x20); - f2 = _mm256_permute2x128_si256(h0, h1, 0x31); - f1 = _mm256_permute2x128_si256(h2, h3, 0x20); - f3 = _mm256_permute2x128_si256(h2, h3, 0x31); - - _mm256_storeu_si256((__m256i *) (f + 0), f0); - _mm256_storeu_si256((__m256i *) (f + 64), f2); - _mm256_storeu_si256((__m256i *) (f + 32), f1); - _mm256_storeu_si256((__m256i *) (f + 96), f3); - - f1 = _mm256_loadu_si256((__m256i *) (f + 48)); - f3 = _mm256_loadu_si256((__m256i *) (f + 112)); - g3 = sub_x16(f1, f3); - g3 = mulmod_x16_scaled(qdata, g3, zeta4_x16, zeta4_x16_qinv); - g1 = add_x16(f1, f3); - - f0 = _mm256_loadu_si256((__m256i *) (f + 16)); - f2 = _mm256_loadu_si256((__m256i *) (f + 80)); - g2 = sub_x16(f0, f2); - g0 = add_x16(f0, f2); - - f3 = sub_x16(g3, g2); - f2 = add_x16(g2, g3); - f3 = mulmod_x16_scaled(qdata, f3, zetainv_128_1, zetainv_qinv_128_1); - f2 = mulmod_x16_scaled(qdata, f2, zeta(128, 1), zeta_qinv(128, 1)); - - g2 = _mm256_unpacklo_epi16(f2, f3); - g3 = _mm256_unpackhi_epi16(f2, f3); - - f1 = sub_x16(g0, g1); - f0 = add_x16(g0, g1); - f1 = mulmod_x16_scaled(qdata, f1, zeta(64, 1), zeta_qinv(64, 1)); - f0 = reduce_x16(qdata, f0); - - g0 = _mm256_unpacklo_epi16(f0, f1); - h0 = _mm256_unpacklo_epi32(g0, g2); - h1 = _mm256_unpackhi_epi32(g0, g2); - g1 = _mm256_unpackhi_epi16(f0, f1); - h2 = _mm256_unpacklo_epi32(g1, g3); - h3 = _mm256_unpackhi_epi32(g1, g3); - f0 = _mm256_permute2x128_si256(h0, h1, 0x20); - f2 = _mm256_permute2x128_si256(h0, h1, 0x31); - f1 = _mm256_permute2x128_si256(h2, h3, 0x20); - f3 = _mm256_permute2x128_si256(h2, h3, 0x31); - - _mm256_storeu_si256((__m256i *) (f + 16), f0); - _mm256_storeu_si256((__m256i *) (f + 80), f2); - _mm256_storeu_si256((__m256i *) (f + 48), f1); - _mm256_storeu_si256((__m256i *) (f + 112), f3); - - f += 128; - } - f = origf; - for (rep = 0; rep < reps; ++rep) { - f1 = _mm256_loadu_si256((__m256i *) (f + 64)); - f3 = _mm256_loadu_si256((__m256i *) (f + 80)); - g3 = sub_x16(f1, f3); - g3 = mulmod_x16_scaled(qdata, g3, zeta4_x16, zeta4_x16_qinv); - g1 = add_x16(f1, f3); - - f0 = _mm256_loadu_si256((__m256i *) (f + 0)); - f2 = _mm256_loadu_si256((__m256i *) (f + 16)); - g2 = sub_x16(f0, f2); - g0 = add_x16(f0, f2); - - f3 = sub_x16(g3, g2); - f2 = add_x16(g2, g3); - f3 = mulmod_x16_scaled(qdata, f3, zetainv_x4_32_0, zetainv_x4_qinv_32_0); - f2 = mulmod_x16_scaled(qdata, f2, zeta_x4(32, 0), zeta_x4_qinv(32, 0)); - - g2 = _mm256_unpacklo_epi64(f2, f3); - g3 = _mm256_unpackhi_epi64(f2, f3); - - f1 = sub_x16(g0, g1); - f0 = add_x16(g0, g1); - f1 = mulmod_x16_scaled(qdata, f1, zeta_x4(16, 0), zeta_x4_qinv(16, 0)); - f0 = reduce_x16(qdata, f0); - - g1 = _mm256_unpackhi_epi64(f0, f1); - g0 = _mm256_unpacklo_epi64(f0, f1); - f1 = _mm256_permute2x128_si256(g1, g3, 0x20); - f3 = _mm256_permute2x128_si256(g1, g3, 0x31); - f0 = _mm256_permute2x128_si256(g0, g2, 0x20); - f2 = _mm256_permute2x128_si256(g0, g2, 0x31); - - _mm256_storeu_si256((__m256i *) (f + 64), f1); - _mm256_storeu_si256((__m256i *) (f + 80), f3); - _mm256_storeu_si256((__m256i *) (f + 0), f0); - _mm256_storeu_si256((__m256i *) (f + 16), f2); - - f1 = _mm256_loadu_si256((__m256i *) (f + 96)); - f3 = _mm256_loadu_si256((__m256i *) (f + 112)); - g3 = sub_x16(f1, f3); - g3 = mulmod_x16_scaled(qdata, g3, zeta4_x16, zeta4_x16_qinv); - g1 = add_x16(f1, f3); - - f0 = _mm256_loadu_si256((__m256i *) (f + 32)); - f2 = _mm256_loadu_si256((__m256i *) (f + 48)); - g2 = sub_x16(f0, f2); - g0 = add_x16(f0, f2); - - f3 = sub_x16(g3, g2); - f2 = add_x16(g2, g3); - f3 = mulmod_x16_scaled(qdata, f3, zetainv_x4_32_1, zetainv_x4_qinv_32_1); - f2 = mulmod_x16_scaled(qdata, f2, zeta_x4(32, 1), zeta_x4_qinv(32, 1)); - - g2 = _mm256_unpacklo_epi64(f2, f3); - g3 = _mm256_unpackhi_epi64(f2, f3); - - f1 = sub_x16(g0, g1); - f0 = add_x16(g0, g1); - f1 = mulmod_x16_scaled(qdata, f1, zeta_x4(16, 1), zeta_x4_qinv(16, 1)); - f0 = reduce_x16(qdata, f0); - - g1 = _mm256_unpackhi_epi64(f0, f1); - g0 = _mm256_unpacklo_epi64(f0, f1); - f1 = _mm256_permute2x128_si256(g1, g3, 0x20); - f3 = _mm256_permute2x128_si256(g1, g3, 0x31); - f0 = _mm256_permute2x128_si256(g0, g2, 0x20); - f2 = _mm256_permute2x128_si256(g0, g2, 0x31); - - _mm256_storeu_si256((__m256i *) (f + 96), f1); - _mm256_storeu_si256((__m256i *) (f + 112), f3); - _mm256_storeu_si256((__m256i *) (f + 32), f0); - _mm256_storeu_si256((__m256i *) (f + 48), f2); - - f += 128; - } - f = origf; - for (rep = 0; rep < reps; ++rep) { - - f1 = _mm256_loadu_si256((__m256i *) (f + 16)); - f3 = _mm256_loadu_si256((__m256i *) (f + 48)); - g3 = sub_x16(f1, f3); - g3 = mulmod_x16_scaled(qdata, g3, zeta4_x16, zeta4_x16_qinv); - g1 = add_x16(f1, f3); - - f0 = _mm256_loadu_si256((__m256i *) (f + 0)); - f2 = _mm256_loadu_si256((__m256i *) (f + 32)); - g2 = sub_x16(f0, f2); - g0 = add_x16(f0, f2); - - f2 = add_x16(g2, g3); - f3 = sub_x16(g2, g3); - f2 = reduce_x16(qdata, f2); - f3 = reduce_x16(qdata, f3); - - f1 = sub_x16(g0, g1); - f0 = add_x16(g0, g1); - f0 = reduce_x16(qdata, f0); - - h0 = f0; - h1 = f1; - h2 = f2; - h3 = f3; - - f1 = _mm256_loadu_si256((__m256i *) (f + 80)); - f3 = _mm256_loadu_si256((__m256i *) (f + 112)); - g3 = sub_x16(f1, f3); - g3 = mulmod_x16_scaled(qdata, g3, zeta4_x16, zeta4_x16_qinv); - g1 = add_x16(f1, f3); - - f0 = _mm256_loadu_si256((__m256i *) (f + 64)); - f2 = _mm256_loadu_si256((__m256i *) (f + 96)); - g2 = sub_x16(f0, f2); - g0 = add_x16(f0, f2); - - f3 = sub_x16(g3, g2); - f2 = add_x16(g2, g3); - f3 = mulmod_x16_scaled(qdata, f3, zetainv8_x16, zetainv8_x16_qinv); - f2 = mulmod_x16_scaled(qdata, f2, zeta8_x16, zeta8_x16_qinv); - - f1 = sub_x16(g0, g1); - f0 = add_x16(g0, g1); - f1 = mulmod_x16_scaled(qdata, f1, zeta4_x16, zeta4_x16_qinv); - f0 = reduce_x16(qdata, f0); - - g0 = add_x16(h0, f0); - g1 = add_x16(h1, f1); - g2 = add_x16(h2, f2); - g3 = add_x16(h3, f3); - _mm256_storeu_si256((__m256i *) (f + 0), g0); - _mm256_storeu_si256((__m256i *) (f + 16), g1); - _mm256_storeu_si256((__m256i *) (f + 32), g2); - _mm256_storeu_si256((__m256i *) (f + 48), g3); - g0 = sub_x16(h0, f0); - g1 = sub_x16(h1, f1); - g2 = sub_x16(h2, f2); - g3 = sub_x16(h3, f3); - _mm256_storeu_si256((__m256i *) (f + 64), g0); - _mm256_storeu_si256((__m256i *) (f + 80), g1); - _mm256_storeu_si256((__m256i *) (f + 96), g2); - _mm256_storeu_si256((__m256i *) (f + 112), g3); - f += 128; - } -} - -static void ntt512(int16 *f, int reps, const __m256i *qdata) { - __m256i f0, f1, f2, f3, g0, g1, g2, g3; /* [-Werror=unused-variable] */ /* ,h0,h1,h2,h3; */ - int16 *origf = f; - int rep; - __m256i zetainv_512[8]; - __m256i zetainv_qinv_512[8]; - int i; - for (i = 0; i < 8; ++i) { - zetainv_512[i] = zetainv(512, i); - } - for (i = 0; i < 8; ++i) { - zetainv_qinv_512[i] = zetainv_qinv(512, i); - } - for (rep = 0; rep < reps; ++rep) { - for (i = 0; i < 8; ++i) { - f1 = _mm256_loadu_si256((__m256i *) (f + 16 * i + 128)); - f3 = _mm256_loadu_si256((__m256i *) (f + 16 * i + 384)); - g3 = sub_x16(f1, f3); - g3 = mulmod_x16_scaled(qdata, g3, zeta4_x16, zeta4_x16_qinv); - g1 = add_x16(f1, f3); - - f0 = _mm256_loadu_si256((__m256i *) (f + 16 * i)); - f2 = _mm256_loadu_si256((__m256i *) (f + 16 * i + 256)); - g2 = sub_x16(f0, f2); - g0 = add_x16(f0, f2); - - f3 = sub_x16(g3, g2); - f2 = add_x16(g2, g3); - f3 = mulmod_x16_scaled(qdata, f3, zetainv_512[i], zetainv_qinv_512[i]); - f2 = mulmod_x16_scaled(qdata, f2, zeta(512, i), zeta_qinv(512, i)); - - f1 = sub_x16(g0, g1); - f0 = add_x16(g0, g1); - f1 = mulmod_x16_scaled(qdata, f1, zeta(256, i), zeta_qinv(256, i)); - f0 = reduce_x16(qdata, f0); - - _mm256_storeu_si256((__m256i *) (f + 16 * i + 384), f3); - _mm256_storeu_si256((__m256i *) (f + 16 * i + 256), f2); - _mm256_storeu_si256((__m256i *) (f + 16 * i + 128), f1); - _mm256_storeu_si256((__m256i *) (f + 16 * i), f0); - - } - f += 512; - } - f = origf; - ntt128(f, reps * 4, qdata); -} - -void PQCLEAN_NTRULPR653_AVX2_ntt512_7681(int16 *f, int reps) { - ntt512(f, reps, (const __m256i *) qdata_7681.data); -} - -void PQCLEAN_NTRULPR653_AVX2_ntt512_10753(int16 *f, int reps) { - ntt512(f, reps, (const __m256i *) qdata_10753.data); -} - -static void invntt128(int16 *f, int reps, const __m256i *qdata) { - __m256i f0, f1, f2, f3, g0, g1, g2, g3, h0, h1, h2, h3; - int16 *origf = f; - int rep; - __m256i zetainv_x4_16_0 = zetainv_x4(16, 0); - __m256i zetainv_x4_qinv_16_0 = zetainv_x4_qinv(16, 0); - __m256i zetainv_x4_32_0 = zetainv_x4(32, 0); - __m256i zetainv_x4_qinv_32_0 = zetainv_x4_qinv(32, 0); - __m256i zetainv_64_0 = zetainv(64, 0); - __m256i zetainv_qinv_64_0 = zetainv_qinv(64, 0); - __m256i zetainv_128_0 = zetainv(128, 0); - __m256i zetainv_qinv_128_0 = zetainv_qinv(128, 0); - __m256i zetainv_x4_16_1 = zetainv_x4(16, 1); - __m256i zetainv_x4_qinv_16_1 = zetainv_x4_qinv(16, 1); - __m256i zetainv_x4_32_1 = zetainv_x4(32, 1); - __m256i zetainv_x4_qinv_32_1 = zetainv_x4_qinv(32, 1); - __m256i zetainv_64_1 = zetainv(64, 1); - __m256i zetainv_qinv_64_1 = zetainv_qinv(64, 1); - __m256i zetainv_128_1 = zetainv(128, 1); - __m256i zetainv_qinv_128_1 = zetainv_qinv(128, 1); - for (rep = 0; rep < reps; ++rep) { - f0 = _mm256_loadu_si256((__m256i *) (f + 0)); - f1 = _mm256_loadu_si256((__m256i *) (f + 64)); - f2 = _mm256_loadu_si256((__m256i *) (f + 16)); - f3 = _mm256_loadu_si256((__m256i *) (f + 80)); - g0 = _mm256_loadu_si256((__m256i *) (f + 32)); - g1 = _mm256_loadu_si256((__m256i *) (f + 96)); - g2 = _mm256_loadu_si256((__m256i *) (f + 48)); - g3 = _mm256_loadu_si256((__m256i *) (f + 112)); - - h1 = sub_x16(f0, f1); - h1 = reduce_x16(qdata, h1); - h0 = add_x16(f0, f1); - h3 = sub_x16(f2, f3); - h3 = mulmod_x16_scaled(qdata, h3, zeta4_x16, zeta4_x16_qinv); - h2 = add_x16(f2, f3); - f1 = sub_x16(g0, g1); - f1 = mulmod_x16_scaled(qdata, f1, zetainv8_x16, zetainv8_x16_qinv); - f0 = add_x16(g0, g1); - f3 = sub_x16(g2, g3); - f3 = mulmod_x16_scaled(qdata, f3, zeta8_x16, zeta8_x16_qinv); - f2 = add_x16(g2, g3); - - g0 = add_x16(h0, h2); - g0 = reduce_x16(qdata, g0); - g2 = sub_x16(h0, h2); - g2 = reduce_x16(qdata, g2); - g1 = sub_x16(h1, h3); - g3 = add_x16(h1, h3); - h2 = sub_x16(f0, f2); - h2 = mulmod_x16_scaled(qdata, h2, zeta4_x16, zeta4_x16_qinv); - h0 = add_x16(f0, f2); - h3 = add_x16(f1, f3); - h3 = mulmod_x16_scaled(qdata, h3, zeta4_x16, zeta4_x16_qinv); - h1 = sub_x16(f1, f3); - - f0 = add_x16(g0, h0); - g0 = sub_x16(g0, h0); - f1 = add_x16(g1, h1); - g1 = sub_x16(g1, h1); - f2 = sub_x16(g2, h2); - g2 = add_x16(g2, h2); - f3 = sub_x16(g3, h3); - g3 = add_x16(g3, h3); - - _mm256_storeu_si256((__m256i *) (f + 0), f0); - _mm256_storeu_si256((__m256i *) (f + 32), g0); - _mm256_storeu_si256((__m256i *) (f + 64), f1); - _mm256_storeu_si256((__m256i *) (f + 96), g1); - _mm256_storeu_si256((__m256i *) (f + 16), f2); - _mm256_storeu_si256((__m256i *) (f + 48), g2); - _mm256_storeu_si256((__m256i *) (f + 80), f3); - _mm256_storeu_si256((__m256i *) (f + 112), g3); - - f += 128; - } - f = origf; - for (rep = 0; rep < reps; ++rep) { - f0 = _mm256_loadu_si256((__m256i *) (f + 0)); - f1 = _mm256_loadu_si256((__m256i *) (f + 64)); - f2 = _mm256_loadu_si256((__m256i *) (f + 16)); - f3 = _mm256_loadu_si256((__m256i *) (f + 80)); - - g0 = _mm256_unpacklo_epi64(f0, f1); - g1 = _mm256_unpacklo_epi64(f2, f3); - g2 = _mm256_unpackhi_epi64(f0, f1); - g3 = _mm256_unpackhi_epi64(f2, f3); - f2 = _mm256_permute2x128_si256(g0, g1, 0x31); - f3 = _mm256_permute2x128_si256(g2, g3, 0x31); - f0 = _mm256_permute2x128_si256(g0, g1, 0x20); - f1 = _mm256_permute2x128_si256(g2, g3, 0x20); - - f2 = mulmod_x16_scaled(qdata, f2, zetainv_x4_32_0, zetainv_x4_qinv_32_0); - f3 = mulmod_x16_scaled(qdata, f3, zeta_x4(32, 0), zeta_x4_qinv(32, 0)); - - g3 = add_x16(f3, f2); - g3 = mulmod_x16_scaled(qdata, g3, zeta4_x16, zeta4_x16_qinv); - g2 = sub_x16(f3, f2); - - f0 = reduce_x16(qdata, f0); - f1 = mulmod_x16_scaled(qdata, f1, zetainv_x4_16_0, zetainv_x4_qinv_16_0); - - g1 = add_x16(f0, f1); - g0 = sub_x16(f0, f1); - - f1 = add_x16(g1, g3); - f3 = sub_x16(g1, g3); - f0 = add_x16(g0, g2); - f2 = sub_x16(g0, g2); - - _mm256_storeu_si256((__m256i *) (f + 64), f1); - _mm256_storeu_si256((__m256i *) (f + 80), f3); - _mm256_storeu_si256((__m256i *) (f + 0), f0); - _mm256_storeu_si256((__m256i *) (f + 16), f2); - - f0 = _mm256_loadu_si256((__m256i *) (f + 32)); - f1 = _mm256_loadu_si256((__m256i *) (f + 96)); - f2 = _mm256_loadu_si256((__m256i *) (f + 48)); - f3 = _mm256_loadu_si256((__m256i *) (f + 112)); - - g0 = _mm256_unpacklo_epi64(f0, f1); - g1 = _mm256_unpacklo_epi64(f2, f3); - g2 = _mm256_unpackhi_epi64(f0, f1); - g3 = _mm256_unpackhi_epi64(f2, f3); - f2 = _mm256_permute2x128_si256(g0, g1, 0x31); - f3 = _mm256_permute2x128_si256(g2, g3, 0x31); - f0 = _mm256_permute2x128_si256(g0, g1, 0x20); - f1 = _mm256_permute2x128_si256(g2, g3, 0x20); - - f2 = mulmod_x16_scaled(qdata, f2, zetainv_x4_32_1, zetainv_x4_qinv_32_1); - f3 = mulmod_x16_scaled(qdata, f3, zeta_x4(32, 1), zeta_x4_qinv(32, 1)); - - g3 = add_x16(f3, f2); - g3 = mulmod_x16_scaled(qdata, g3, zeta4_x16, zeta4_x16_qinv); - g2 = sub_x16(f3, f2); - - f0 = reduce_x16(qdata, f0); - f1 = mulmod_x16_scaled(qdata, f1, zetainv_x4_16_1, zetainv_x4_qinv_16_1); - - g1 = add_x16(f0, f1); - g0 = sub_x16(f0, f1); - - f1 = add_x16(g1, g3); - f3 = sub_x16(g1, g3); - f0 = add_x16(g0, g2); - f2 = sub_x16(g0, g2); - - _mm256_storeu_si256((__m256i *) (f + 96), f1); - _mm256_storeu_si256((__m256i *) (f + 112), f3); - _mm256_storeu_si256((__m256i *) (f + 32), f0); - _mm256_storeu_si256((__m256i *) (f + 48), f2); - - f += 128; - } - f = origf; - for (rep = 0; rep < reps; ++rep) { - f0 = _mm256_loadu_si256((__m256i *) (f + 0)); - f2 = _mm256_loadu_si256((__m256i *) (f + 64)); - f1 = _mm256_loadu_si256((__m256i *) (f + 32)); - f3 = _mm256_loadu_si256((__m256i *) (f + 96)); - - g0 = _mm256_permute2x128_si256(f0, f2, 0x20); - g2 = _mm256_permute2x128_si256(f0, f2, 0x31); - f0 = _mm256_unpacklo_epi16(g0, g2); - f2 = _mm256_unpackhi_epi16(g0, g2); - g1 = _mm256_permute2x128_si256(f1, f3, 0x20); - g3 = _mm256_permute2x128_si256(f1, f3, 0x31); - f1 = _mm256_unpacklo_epi16(g1, g3); - f3 = _mm256_unpackhi_epi16(g1, g3); - g1 = _mm256_unpackhi_epi16(f0, f2); - g0 = _mm256_unpacklo_epi16(f0, f2); - g3 = _mm256_unpackhi_epi16(f1, f3); - g2 = _mm256_unpacklo_epi16(f1, f3); - f2 = _mm256_unpacklo_epi64(g1, g3); - f3 = _mm256_unpackhi_epi64(g1, g3); - f0 = _mm256_unpacklo_epi64(g0, g2); - f1 = _mm256_unpackhi_epi64(g0, g2); - - f2 = mulmod_x16_scaled(qdata, f2, zetainv_128_0, zetainv_qinv_128_0); - f3 = mulmod_x16_scaled(qdata, f3, zeta(128, 0), zeta_qinv(128, 0)); - f0 = reduce_x16(qdata, f0); - f1 = mulmod_x16_scaled(qdata, f1, zetainv_64_0, zetainv_qinv_64_0); - - g3 = add_x16(f3, f2); - g3 = mulmod_x16_scaled(qdata, g3, zeta4_x16, zeta4_x16_qinv); - g1 = add_x16(f0, f1); - g2 = sub_x16(f3, f2); - g0 = sub_x16(f0, f1); - - f1 = add_x16(g1, g3); - f3 = sub_x16(g1, g3); - f0 = add_x16(g0, g2); - f2 = sub_x16(g0, g2); - - _mm256_storeu_si256((__m256i *) (f + 32), f1); - _mm256_storeu_si256((__m256i *) (f + 96), f3); - _mm256_storeu_si256((__m256i *) (f + 0), f0); - _mm256_storeu_si256((__m256i *) (f + 64), f2); - - f0 = _mm256_loadu_si256((__m256i *) (f + 16)); - f2 = _mm256_loadu_si256((__m256i *) (f + 80)); - f1 = _mm256_loadu_si256((__m256i *) (f + 48)); - f3 = _mm256_loadu_si256((__m256i *) (f + 112)); - - g0 = _mm256_permute2x128_si256(f0, f2, 0x20); - g2 = _mm256_permute2x128_si256(f0, f2, 0x31); - f0 = _mm256_unpacklo_epi16(g0, g2); - f2 = _mm256_unpackhi_epi16(g0, g2); - g1 = _mm256_permute2x128_si256(f1, f3, 0x20); - g3 = _mm256_permute2x128_si256(f1, f3, 0x31); - f1 = _mm256_unpacklo_epi16(g1, g3); - f3 = _mm256_unpackhi_epi16(g1, g3); - g1 = _mm256_unpackhi_epi16(f0, f2); - g0 = _mm256_unpacklo_epi16(f0, f2); - g3 = _mm256_unpackhi_epi16(f1, f3); - g2 = _mm256_unpacklo_epi16(f1, f3); - f2 = _mm256_unpacklo_epi64(g1, g3); - f3 = _mm256_unpackhi_epi64(g1, g3); - f0 = _mm256_unpacklo_epi64(g0, g2); - f1 = _mm256_unpackhi_epi64(g0, g2); - - f2 = mulmod_x16_scaled(qdata, f2, zetainv_128_1, zetainv_qinv_128_1); - f3 = mulmod_x16_scaled(qdata, f3, zeta(128, 1), zeta_qinv(128, 1)); - f0 = reduce_x16(qdata, f0); - f1 = mulmod_x16_scaled(qdata, f1, zetainv_64_1, zetainv_qinv_64_1); - - g3 = add_x16(f3, f2); - g3 = mulmod_x16_scaled(qdata, g3, zeta4_x16, zeta4_x16_qinv); - g1 = add_x16(f0, f1); - g2 = sub_x16(f3, f2); - g0 = sub_x16(f0, f1); - - f1 = add_x16(g1, g3); - f3 = sub_x16(g1, g3); - f0 = add_x16(g0, g2); - f2 = sub_x16(g0, g2); - - _mm256_storeu_si256((__m256i *) (f + 48), f1); - _mm256_storeu_si256((__m256i *) (f + 112), f3); - _mm256_storeu_si256((__m256i *) (f + 16), f0); - _mm256_storeu_si256((__m256i *) (f + 80), f2); - - f += 128; - } -} - -static void invntt512(int16 *f, int reps, const __m256i *qdata) { - __m256i f0, f1, f2, f3, g0, g1, g2, g3; /* [-Werror=unused-variable] */ /* ,h0,h1,h2,h3; */ - /* [-Werror=unused-variable] */ /* int16 *origf = f; */ - int rep; - __m256i zetainv_512[8]; - __m256i zetainv_qinv_512[8]; - __m256i zetainv_256[8]; - __m256i zetainv_qinv_256[8]; - int i; - for (i = 0; i < 8; ++i) { - zetainv_512[i] = zetainv(512, i); - } - for (i = 0; i < 8; ++i) { - zetainv_qinv_512[i] = zetainv_qinv(512, i); - } - for (i = 0; i < 8; ++i) { - zetainv_256[i] = zetainv(256, i); - } - for (i = 0; i < 8; ++i) { - zetainv_qinv_256[i] = zetainv_qinv(256, i); - } - invntt128(f, 4 * reps, qdata); - for (rep = 0; rep < reps; ++rep) { - for (i = 0; i < 8; ++i) { - f2 = _mm256_loadu_si256((__m256i *) (f + 16 * i + 256)); - f3 = _mm256_loadu_si256((__m256i *) (f + 16 * i + 384)); - - f2 = mulmod_x16_scaled(qdata, f2, zetainv_512[i], zetainv_qinv_512[i]); - f3 = mulmod_x16_scaled(qdata, f3, zeta(512, i), zeta_qinv(512, i)); - g3 = add_x16(f3, f2); - g3 = mulmod_x16_scaled(qdata, g3, zeta4_x16, zeta4_x16_qinv); - g2 = sub_x16(f3, f2); - - f0 = _mm256_loadu_si256((__m256i *) (f + 16 * i + 0)); - f1 = _mm256_loadu_si256((__m256i *) (f + 16 * i + 128)); - - f0 = reduce_x16(qdata, f0); - f1 = mulmod_x16_scaled(qdata, f1, zetainv_256[i], zetainv_qinv_256[i]); - g1 = add_x16(f0, f1); - g0 = sub_x16(f0, f1); - - f1 = add_x16(g1, g3); - f3 = sub_x16(g1, g3); - f0 = add_x16(g0, g2); - f2 = sub_x16(g0, g2); - - _mm256_storeu_si256((__m256i *) (f + 16 * i + 128), f1); - _mm256_storeu_si256((__m256i *) (f + 16 * i + 384), f3); - _mm256_storeu_si256((__m256i *) (f + 16 * i + 0), f0); - _mm256_storeu_si256((__m256i *) (f + 16 * i + 256), f2); - } - f += 512; - } -} - -void PQCLEAN_NTRULPR653_AVX2_invntt512_7681(int16 *f, int reps) { - invntt512(f, reps, (const __m256i *) qdata_7681.data); -} - -void PQCLEAN_NTRULPR653_AVX2_invntt512_10753(int16 *f, int reps) { - invntt512(f, reps, (const __m256i *) qdata_10753.data); -} diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_core_multsntrup653_ntt.h b/src/kem/ntru_prime/ntrulpr653/avx2/crypto_core_multsntrup653_ntt.h deleted file mode 100644 index 2d04b742..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_core_multsntrup653_ntt.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef ntt_H -#define ntt_H - -#include - - - -extern void PQCLEAN_NTRULPR653_AVX2_ntt512_7681(int16_t *f, int reps); -extern void PQCLEAN_NTRULPR653_AVX2_ntt512_10753(int16_t *f, int reps); -extern void PQCLEAN_NTRULPR653_AVX2_invntt512_7681(int16_t *f, int reps); -extern void PQCLEAN_NTRULPR653_AVX2_invntt512_10753(int16_t *f, int reps); - -#endif diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_256x16.c b/src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_256x16.c deleted file mode 100644 index cbb0080f..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_256x16.c +++ /dev/null @@ -1,11 +0,0 @@ -#include "crypto_decode_256x16.h" - - -void PQCLEAN_NTRULPR653_AVX2_crypto_decode_256x16(void *v, const unsigned char *s) { - unsigned char *T = v; - int i; - for (i = 0; i < 128; ++i) { - T[2 * i] = s[i] & 15; - T[2 * i + 1] = s[i] >> 4; - } -} diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_256x16.h b/src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_256x16.h deleted file mode 100644 index 449637a0..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_256x16.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR653_AVX2_CRYPTO_DECODE_256X16_H -#define PQCLEAN_NTRULPR653_AVX2_CRYPTO_DECODE_256X16_H - -#include -#define PQCLEAN_NTRULPR653_AVX2_crypto_decode_256x16_STRBYTES 128 -#define PQCLEAN_NTRULPR653_AVX2_crypto_decode_256x16_ITEMS 256 -#define PQCLEAN_NTRULPR653_AVX2_crypto_decode_256x16_ITEMBYTES 1 - -void PQCLEAN_NTRULPR653_AVX2_crypto_decode_256x16(void *v, const unsigned char *s); -#endif diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_256x2.c b/src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_256x2.c deleted file mode 100644 index db4b2b68..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_256x2.c +++ /dev/null @@ -1,27 +0,0 @@ -#include "crypto_decode_256x2.h" -#include -#include - -#define COPY _mm256_set_epi64x(0x0303030303030303,0x0202020202020202,0x0101010101010101,0x0000000000000000) -#define MASK _mm256_set1_epi64x((int64_t) 0x8040201008040201) -#define MASK2 _mm256_set1_epi64x(0x0101010101010101) - -void PQCLEAN_NTRULPR653_AVX2_crypto_decode_256x2(void *v, const unsigned char *s) { - __m256i *r = v; - int i; - - for (i = 0; i < 8; ++i) { - /* bytes s0 s1 s2 s3 */ - __m256i x = _mm256_set1_epi32(*(int32_t *) s); - /* s0 s1 s2 s3 s0 s1 s2 s3 s0 s1 s2 s3 s0 s1 s2 s3 s0 s1 s2 s3 s0 s1 s2 s3 s0 s1 s2 s3 s0 s1 s2 s3 */ - x = _mm256_shuffle_epi8(x, COPY); - /* s0 s0 s0 s0 s0 s0 s0 s0 s1 s1 s1 s1 s1 s1 s1 s1 s2 s2 s2 s2 s2 s2 s2 s2 s3 s3 s3 s3 s3 s3 s3 s3 */ - x = _mm256_andnot_si256(x, MASK); - x = _mm256_cmpeq_epi8(x, _mm256_setzero_si256()); - x &= MASK2; - _mm256_storeu_si256(r, x); - - s += 4; - r += 1; - } -} diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_256x2.h b/src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_256x2.h deleted file mode 100644 index f4b515da..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_256x2.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR653_AVX2_CRYPTO_DECODE_256X2_H -#define PQCLEAN_NTRULPR653_AVX2_CRYPTO_DECODE_256X2_H - -#include -#define PQCLEAN_NTRULPR653_AVX2_crypto_decode_256x2_STRBYTES 32 -#define PQCLEAN_NTRULPR653_AVX2_crypto_decode_256x2_ITEMS 256 -#define PQCLEAN_NTRULPR653_AVX2_crypto_decode_256x2_ITEMBYTES 1 - -void PQCLEAN_NTRULPR653_AVX2_crypto_decode_256x2(void *v, const unsigned char *s); -#endif diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_653x1541.c b/src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_653x1541.c deleted file mode 100644 index e54c65af..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_653x1541.c +++ /dev/null @@ -1,404 +0,0 @@ -#include "crypto_decode_653x1541.h" -#include -/* auto-generated; do not edit */ - -#define int16 int16_t -#define int32 int32_t - -static inline int16 mullo(int16 x, int16 y) { - return x * y; -} - -static inline int16 mulhi(int16 x, int16 y) { - return (int16) ((x * (int32)y) >> 16); -} - -static inline __m256i add(__m256i x, __m256i y) { - return _mm256_add_epi16(x, y); -} - -static inline __m256i sub(__m256i x, __m256i y) { - return _mm256_sub_epi16(x, y); -} - -static inline __m256i shiftleftconst(__m256i x, int16 y) { - return _mm256_slli_epi16(x, y); -} - -static inline __m256i signedshiftrightconst(__m256i x, int16 y) { - return _mm256_srai_epi16(x, y); -} - -static inline __m256i subconst(__m256i x, int16 y) { - return sub(x, _mm256_set1_epi16(y)); -} - -static inline __m256i mulloconst(__m256i x, int16 y) { - return _mm256_mullo_epi16(x, _mm256_set1_epi16(y)); -} - -static inline __m256i mulhiconst(__m256i x, int16 y) { - return _mm256_mulhi_epi16(x, _mm256_set1_epi16(y)); -} - -static inline __m256i ifgesubconst(__m256i x, int16 y) { - __m256i y16 = _mm256_set1_epi16(y); - __m256i top16 = _mm256_set1_epi16((int16)(y - 1)); - return sub(x, _mm256_cmpgt_epi16(x, top16) & y16); -} - -static inline __m256i ifnegaddconst(__m256i x, int16 y) { - return add(x, signedshiftrightconst(x, 15) & _mm256_set1_epi16(y)); -} - -void PQCLEAN_NTRULPR653_AVX2_crypto_decode_653x1541(void *v, const unsigned char *s) { - int16 *R0 = v; - int16 R1[327], R2[164], R3[82], R4[41], R5[21], R6[11], R7[6], R8[3], R9[2], R10[1]; - long long i; - int16 a0, a1, a2; - __m256i A0, A1, A2, S0, S1, B0, B1, C0, C1; - - s += PQCLEAN_NTRULPR653_AVX2_crypto_decode_653x1541_STRBYTES; - a1 = 0; - a1 += *--s; /* 0...255 */ - a1 = mulhi(a1, -48) - mulhi(mullo(a1, -6433), 2608); - a1 += *--s; /* -1304...1558 */ - a1 += (a1 >> 15) & 2608; /* 0...2607 */ - R10[0] = a1; - - /* R10 ------> R9: reconstruct mod 1*[71]+[9402] */ - - i = 0; - s -= 1; - a2 = a0 = R10[0]; - a0 = mulhi(a0, -13) - mulhi(mullo(a0, 25845), 71); /* -39...35 */ - a0 += s[1 * i + 0]; /* -39...290 */ - a0 = mulhi(a0, 3) - mulhi(mullo(a0, -923), 71); /* -36...35 */ - a0 += (a0 >> 15) & 71; /* 0...70 */ - a1 = (int16) ((a2 << 8) + s[i] - a0); - a1 = mullo(a1, -22153); - - /* invalid inputs might need reduction mod 9402 */ - a1 -= 9402; - a1 += (a1 >> 15) & 9402; - - R9[0] = a0; - R9[1] = a1; - s -= 0; - - /* R9 ------> R8: reconstruct mod 2*[134]+[9402] */ - - R8[2] = R9[1]; - s -= 1; - for (i = 0; i >= 0; --i) { - a2 = a0 = R9[i]; - a0 = mulhi(a0, 14) - mulhi(mullo(a0, 5869), 134); /* -67...70 */ - a0 += s[1 * i + 0]; /* -67...325 */ - a0 = mulhi(a0, 10) - mulhi(mullo(a0, -489), 134); /* -68...67 */ - a0 += (a0 >> 15) & 134; /* 0...133 */ - a1 = (int16) ((a2 << 7) + ((s[i] - a0) >> 1)); - a1 = mullo(a1, 19563); - - /* invalid inputs might need reduction mod 134 */ - a1 -= 134; - a1 += (a1 >> 15) & 134; - - R8[2 * i] = a0; - R8[2 * i + 1] = a1; - } - - /* R8 ------> R7: reconstruct mod 5*[2953]+[815] */ - - i = 0; - s -= 1; - a2 = a0 = R8[2]; - a0 = mulhi(a0, 1223) - mulhi(mullo(a0, -5681), 2953); /* -1477...1782 */ - a0 += s[1 * i + 0]; /* -1477...2037 */ - a0 += (a0 >> 15) & 2953; /* 0...2952 */ - a1 = (int16) ((a2 << 8) + s[i] - a0); - a1 = mullo(a1, -9543); - - /* invalid inputs might need reduction mod 815 */ - a1 -= 815; - a1 += (a1 >> 15) & 815; - - R7[4] = a0; - R7[5] = a1; - s -= 4; - for (i = 1; i >= 0; --i) { - a0 = R8[i]; - a0 = mulhi(a0, 1223) - mulhi(mullo(a0, -5681), 2953); /* -1477...1782 */ - a0 += s[2 * i + 1]; /* -1477...2037 */ - a0 = mulhi(a0, 1223) - mulhi(mullo(a0, -5681), 2953); /* -1505...1514 */ - a0 += s[2 * i + 0]; /* -1505...1769 */ - a0 += (a0 >> 15) & 2953; /* 0...2952 */ - a1 = (int16) ((s[2 * i + 1] << 8) + s[2 * i] - a0); - a1 = mullo(a1, -9543); - - /* invalid inputs might need reduction mod 2953 */ - a1 -= 2953; - a1 += (a1 >> 15) & 2953; - - R7[2 * i] = a0; - R7[2 * i + 1] = a1; - } - - /* R7 ------> R6: reconstruct mod 10*[13910]+[815] */ - - R6[10] = R7[5]; - s -= 10; - for (i = 4; i >= 0; --i) { - a2 = a0 = R7[i]; - a0 = mulhi(a0, 1756) - mulhi(mullo(a0, -1206), 13910); /* -6955...7394 */ - a0 += s[2 * i + 1]; /* -6955...7649 */ - a0 = mulhi(a0, 1756) - mulhi(mullo(a0, -1206), 13910); /* -7142...7159 */ - a0 += s[2 * i + 0]; /* -7142...7414 */ - a0 += (a0 >> 15) & 13910; /* 0...13909 */ - a1 = (int16) ((a2 << 15) + (s[2 * i + 1] << 7) + ((s[2 * i] - a0) >> 1)); - a1 = mullo(a1, -13437); - - /* invalid inputs might need reduction mod 13910 */ - a1 -= 13910; - a1 += (a1 >> 15) & 13910; - - R6[2 * i] = a0; - R6[2 * i + 1] = a1; - } - - /* R6 ------> R5: reconstruct mod 20*[1887]+[815] */ - - R5[20] = R6[10]; - s -= 10; - for (i = 9; i >= 0; --i) { - a2 = a0 = R6[i]; - a0 = mulhi(a0, -101) - mulhi(mullo(a0, -8891), 1887); /* -969...943 */ - a0 += s[1 * i + 0]; /* -969...1198 */ - a0 += (a0 >> 15) & 1887; /* 0...1886 */ - a1 = (int16) ((a2 << 8) + s[i] - a0); - a1 = mullo(a1, 5279); - - /* invalid inputs might need reduction mod 1887 */ - a1 -= 1887; - a1 += (a1 >> 15) & 1887; - - R5[2 * i] = a0; - R5[2 * i + 1] = a1; - } - - /* R5 ------> R4: reconstruct mod 40*[695]+[815] */ - - R4[40] = R5[20]; - s -= 20; - i = 4; - for (;;) { - A2 = A0 = _mm256_loadu_si256((__m256i *) &R5[i]); - S0 = _mm256_cvtepu8_epi16(_mm_loadu_si128((__m128i *) (s + i))); - A0 = sub(mulhiconst(A0, -84), mulhiconst(mulloconst(A0, -24140), 695)); /* -369...347 */ - A0 = add(A0, S0); /* -369...602 */ - A0 = ifnegaddconst(A0, 695); /* 0...694 */ - A1 = add(shiftleftconst(A2, 8), sub(S0, A0)); - A1 = mulloconst(A1, 31495); - - /* invalid inputs might need reduction mod 695 */ - A1 = ifgesubconst(A1, 695); - - /* A0: r0r2r4r6r8r10r12r14 r16r18r20r22r24r26r28r30 */ - /* A1: r1r3r5r7r9r11r13r15 r17r19r21r23r25r27r29r31 */ - B0 = _mm256_unpacklo_epi16(A0, A1); - B1 = _mm256_unpackhi_epi16(A0, A1); - /* B0: r0r1r2r3r4r5r6r7 r16r17r18r19r20r21r22r23 */ - /* B1: r8r9r10r11r12r13r14r15 r24r25r26r27r28r29r30r31 */ - C0 = _mm256_permute2x128_si256(B0, B1, 0x20); - C1 = _mm256_permute2x128_si256(B0, B1, 0x31); - /* C0: r0r1r2r3r4r5r6r7 r8r9r10r11r12r13r14r15 */ - /* C1: r16r17r18r19r20r21r22r23 r24r25r26r27r28r29r30r31 */ - _mm256_storeu_si256((__m256i *) (&R4[2 * i]), C0); - _mm256_storeu_si256((__m256i *) (16 + &R4[2 * i]), C1); - if (!i) { - break; - } - i = -16 - ((~15) & -i); - } - - /* R4 ------> R3: reconstruct mod 81*[6745]+[7910] */ - - i = 0; - s -= 2; - a0 = R4[40]; - a0 = mulhi(a0, 2401) - mulhi(mullo(a0, -2487), 6745); /* -3373...3972 */ - a0 += s[2 * i + 1]; /* -3373...4227 */ - a0 = mulhi(a0, 2401) - mulhi(mullo(a0, -2487), 6745); /* -3497...3527 */ - a0 += s[2 * i + 0]; /* -3497...3782 */ - a0 += (a0 >> 15) & 6745; /* 0...6744 */ - a1 = (int16) ((s[2 * i + 1] << 8) + s[2 * i] - a0); - a1 = mullo(a1, -29207); - - /* invalid inputs might need reduction mod 7910 */ - a1 -= 7910; - a1 += (a1 >> 15) & 7910; - - R3[80] = a0; - R3[81] = a1; - s -= 80; - i = 24; - for (;;) { - A0 = _mm256_loadu_si256((__m256i *) &R4[i]); - S0 = _mm256_loadu_si256((__m256i *) (s + 2 * i)); - S1 = _mm256_srli_epi16(S0, 8); - S0 &= _mm256_set1_epi16(255); - A0 = sub(mulhiconst(A0, 2401), mulhiconst(mulloconst(A0, -2487), 6745)); /* -3373...3972 */ - A0 = add(A0, S1); /* -3373...4227 */ - A0 = sub(mulhiconst(A0, 2401), mulhiconst(mulloconst(A0, -2487), 6745)); /* -3497...3527 */ - A0 = add(A0, S0); /* -3497...3782 */ - A0 = ifnegaddconst(A0, 6745); /* 0...6744 */ - A1 = add(shiftleftconst(S1, 8), sub(S0, A0)); - A1 = mulloconst(A1, -29207); - - /* invalid inputs might need reduction mod 6745 */ - A1 = ifgesubconst(A1, 6745); - - /* A0: r0r2r4r6r8r10r12r14 r16r18r20r22r24r26r28r30 */ - /* A1: r1r3r5r7r9r11r13r15 r17r19r21r23r25r27r29r31 */ - B0 = _mm256_unpacklo_epi16(A0, A1); - B1 = _mm256_unpackhi_epi16(A0, A1); - /* B0: r0r1r2r3r4r5r6r7 r16r17r18r19r20r21r22r23 */ - /* B1: r8r9r10r11r12r13r14r15 r24r25r26r27r28r29r30r31 */ - C0 = _mm256_permute2x128_si256(B0, B1, 0x20); - C1 = _mm256_permute2x128_si256(B0, B1, 0x31); - /* C0: r0r1r2r3r4r5r6r7 r8r9r10r11r12r13r14r15 */ - /* C1: r16r17r18r19r20r21r22r23 r24r25r26r27r28r29r30r31 */ - _mm256_storeu_si256((__m256i *) (&R3[2 * i]), C0); - _mm256_storeu_si256((__m256i *) (16 + &R3[2 * i]), C1); - if (!i) { - break; - } - i = -16 - ((~15) & -i); - } - - /* R3 ------> R2: reconstruct mod 163*[1314]+[1541] */ - - i = 0; - s -= 1; - a2 = a0 = R3[81]; - a0 = mulhi(a0, 64) - mulhi(mullo(a0, -12768), 1314); /* -657...673 */ - a0 += s[1 * i + 0]; /* -657...928 */ - a0 += (a0 >> 15) & 1314; /* 0...1313 */ - a1 = (int16) ((a2 << 7) + ((s[i] - a0) >> 1)); - a1 = mullo(a1, -399); - - /* invalid inputs might need reduction mod 1541 */ - a1 -= 1541; - a1 += (a1 >> 15) & 1541; - - R2[162] = a0; - R2[163] = a1; - s -= 81; - i = 65; - for (;;) { - A2 = A0 = _mm256_loadu_si256((__m256i *) &R3[i]); - S0 = _mm256_cvtepu8_epi16(_mm_loadu_si128((__m128i *) (s + i))); - A0 = sub(mulhiconst(A0, 64), mulhiconst(mulloconst(A0, -12768), 1314)); /* -657...673 */ - A0 = add(A0, S0); /* -657...928 */ - A0 = ifnegaddconst(A0, 1314); /* 0...1313 */ - A1 = add(shiftleftconst(A2, 7), signedshiftrightconst(sub(S0, A0), 1)); - A1 = mulloconst(A1, -399); - - /* invalid inputs might need reduction mod 1314 */ - A1 = ifgesubconst(A1, 1314); - - /* A0: r0r2r4r6r8r10r12r14 r16r18r20r22r24r26r28r30 */ - /* A1: r1r3r5r7r9r11r13r15 r17r19r21r23r25r27r29r31 */ - B0 = _mm256_unpacklo_epi16(A0, A1); - B1 = _mm256_unpackhi_epi16(A0, A1); - /* B0: r0r1r2r3r4r5r6r7 r16r17r18r19r20r21r22r23 */ - /* B1: r8r9r10r11r12r13r14r15 r24r25r26r27r28r29r30r31 */ - C0 = _mm256_permute2x128_si256(B0, B1, 0x20); - C1 = _mm256_permute2x128_si256(B0, B1, 0x31); - /* C0: r0r1r2r3r4r5r6r7 r8r9r10r11r12r13r14r15 */ - /* C1: r16r17r18r19r20r21r22r23 r24r25r26r27r28r29r30r31 */ - _mm256_storeu_si256((__m256i *) (&R2[2 * i]), C0); - _mm256_storeu_si256((__m256i *) (16 + &R2[2 * i]), C1); - if (!i) { - break; - } - i = -16 - ((~15) & -i); - } - - /* R2 ------> R1: reconstruct mod 326*[9277]+[1541] */ - - R1[326] = R2[163]; - s -= 326; - i = 147; - for (;;) { - A0 = _mm256_loadu_si256((__m256i *) &R2[i]); - S0 = _mm256_loadu_si256((__m256i *) (s + 2 * i)); - S1 = _mm256_srli_epi16(S0, 8); - S0 &= _mm256_set1_epi16(255); - A0 = sub(mulhiconst(A0, 4400), mulhiconst(mulloconst(A0, -1808), 9277)); /* -4639...5738 */ - A0 = add(A0, S1); /* -4639...5993 */ - A0 = sub(mulhiconst(A0, 4400), mulhiconst(mulloconst(A0, -1808), 9277)); /* -4950...5040 */ - A0 = add(A0, S0); /* -4950...5295 */ - A0 = ifnegaddconst(A0, 9277); /* 0...9276 */ - A1 = add(shiftleftconst(S1, 8), sub(S0, A0)); - A1 = mulloconst(A1, -27883); - - /* invalid inputs might need reduction mod 9277 */ - A1 = ifgesubconst(A1, 9277); - - /* A0: r0r2r4r6r8r10r12r14 r16r18r20r22r24r26r28r30 */ - /* A1: r1r3r5r7r9r11r13r15 r17r19r21r23r25r27r29r31 */ - B0 = _mm256_unpacklo_epi16(A0, A1); - B1 = _mm256_unpackhi_epi16(A0, A1); - /* B0: r0r1r2r3r4r5r6r7 r16r17r18r19r20r21r22r23 */ - /* B1: r8r9r10r11r12r13r14r15 r24r25r26r27r28r29r30r31 */ - C0 = _mm256_permute2x128_si256(B0, B1, 0x20); - C1 = _mm256_permute2x128_si256(B0, B1, 0x31); - /* C0: r0r1r2r3r4r5r6r7 r8r9r10r11r12r13r14r15 */ - /* C1: r16r17r18r19r20r21r22r23 r24r25r26r27r28r29r30r31 */ - _mm256_storeu_si256((__m256i *) (&R1[2 * i]), C0); - _mm256_storeu_si256((__m256i *) (16 + &R1[2 * i]), C1); - if (!i) { - break; - } - i = -16 - ((~15) & -i); - } - - /* R1 ------> R0: reconstruct mod 653*[1541] */ - - R0[652] = (int16) (3 * R1[326] - 2310); - s -= 326; - i = 310; - for (;;) { - A2 = A0 = _mm256_loadu_si256((__m256i *) &R1[i]); - S0 = _mm256_cvtepu8_epi16(_mm_loadu_si128((__m128i *) (s + i))); - A0 = sub(mulhiconst(A0, 349), mulhiconst(mulloconst(A0, -10887), 1541)); /* -771...857 */ - A0 = add(A0, S0); /* -771...1112 */ - A0 = ifnegaddconst(A0, 1541); /* 0...1540 */ - A1 = add(shiftleftconst(A2, 8), sub(S0, A0)); - A1 = mulloconst(A1, -10547); - - /* invalid inputs might need reduction mod 1541 */ - A1 = ifgesubconst(A1, 1541); - - A0 = mulloconst(A0, 3); - A1 = mulloconst(A1, 3); - A0 = subconst(A0, 2310); - A1 = subconst(A1, 2310); - /* A0: r0r2r4r6r8r10r12r14 r16r18r20r22r24r26r28r30 */ - /* A1: r1r3r5r7r9r11r13r15 r17r19r21r23r25r27r29r31 */ - B0 = _mm256_unpacklo_epi16(A0, A1); - B1 = _mm256_unpackhi_epi16(A0, A1); - /* B0: r0r1r2r3r4r5r6r7 r16r17r18r19r20r21r22r23 */ - /* B1: r8r9r10r11r12r13r14r15 r24r25r26r27r28r29r30r31 */ - C0 = _mm256_permute2x128_si256(B0, B1, 0x20); - C1 = _mm256_permute2x128_si256(B0, B1, 0x31); - /* C0: r0r1r2r3r4r5r6r7 r8r9r10r11r12r13r14r15 */ - /* C1: r16r17r18r19r20r21r22r23 r24r25r26r27r28r29r30r31 */ - _mm256_storeu_si256((__m256i *) (&R0[2 * i]), C0); - _mm256_storeu_si256((__m256i *) (16 + &R0[2 * i]), C1); - if (!i) { - break; - } - i = -16 - ((~15) & -i); - } -} diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_653x1541.h b/src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_653x1541.h deleted file mode 100644 index 8bdcdcfa..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_653x1541.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR653_AVX2_CRYPTO_DECODE_653X1541_H -#define PQCLEAN_NTRULPR653_AVX2_CRYPTO_DECODE_653X1541_H - -#include -#define PQCLEAN_NTRULPR653_AVX2_crypto_decode_653x1541_STRBYTES 865 -#define PQCLEAN_NTRULPR653_AVX2_crypto_decode_653x1541_ITEMS 653 -#define PQCLEAN_NTRULPR653_AVX2_crypto_decode_653x1541_ITEMBYTES 2 - -void PQCLEAN_NTRULPR653_AVX2_crypto_decode_653x1541(void *v, const unsigned char *s); -#endif diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_653x3.c b/src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_653x3.c deleted file mode 100644 index 06724eb7..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_653x3.c +++ /dev/null @@ -1,65 +0,0 @@ -#include "crypto_decode_653x3.h" -#include -#define uint8 uint8_t - -#define p 653 -#define loops 6 -#define overshoot 29 - -void PQCLEAN_NTRULPR653_AVX2_crypto_decode_653x3(void *v, const unsigned char *s) { - uint8 *f = v; - int loop; - uint8 *nextf = f + 128 - 4 * overshoot; - const unsigned char *nexts = s + 32 - overshoot; - - for (loop = loops; loop > 0; --loop) { - __m256i s0 = _mm256_loadu_si256((const __m256i *) s); - s = nexts; - nexts += 32; - - __m256i s1 = _mm256_srli_epi16(s0 & _mm256_set1_epi8(-16), 4); - s0 &= _mm256_set1_epi8(15); - - __m256i a0 = _mm256_unpacklo_epi8(s0, s1); - /* 0 0>>4 1 1>>4 2 2>>4 3 3>>4 4 4>>4 5 5>>4 6 6>>4 7 7>>4 */ - /* 16 16>>4 ... */ - __m256i a1 = _mm256_unpackhi_epi8(s0, s1); - /* 8 8>>4 9 9>>4 10 10>>4 ... */ - /* 24 24>>4 ... */ - - __m256i a2 = _mm256_srli_epi16(a0 & _mm256_set1_epi8(12), 2); - __m256i a3 = _mm256_srli_epi16(a1 & _mm256_set1_epi8(12), 2); - a0 &= _mm256_set1_epi8(3); - a1 &= _mm256_set1_epi8(3); - - __m256i b0 = _mm256_unpacklo_epi8(a0, a2); - /* 0 0>>2 0>>4 0>>6 1 1>>2 1>>4 1>>6 */ - /* 2 2>>2 2>>4 2>>6 3 3>>2 3>>4 3>.6 */ - /* 16 16>>2 16>>4 16>>6 ... */ - __m256i b2 = _mm256_unpackhi_epi8(a0, a2); - /* 4 4>>2 ... */ - __m256i b1 = _mm256_unpacklo_epi8(a1, a3); - /* 8 8>>2 ... */ - __m256i b3 = _mm256_unpackhi_epi8(a1, a3); - /* 12 12>>2 ... */ - - __m256i f0 = _mm256_permute2x128_si256(b0, b2, 0x20); - __m256i f2 = _mm256_permute2x128_si256(b0, b2, 0x31); - __m256i f1 = _mm256_permute2x128_si256(b1, b3, 0x20); - __m256i f3 = _mm256_permute2x128_si256(b1, b3, 0x31); - - f0 = _mm256_add_epi8(f0, _mm256_set1_epi8(-1)); - f1 = _mm256_add_epi8(f1, _mm256_set1_epi8(-1)); - f2 = _mm256_add_epi8(f2, _mm256_set1_epi8(-1)); - f3 = _mm256_add_epi8(f3, _mm256_set1_epi8(-1)); - - _mm256_storeu_si256((__m256i *) (f + 0), f0); - _mm256_storeu_si256((__m256i *) (f + 32), f1); - _mm256_storeu_si256((__m256i *) (f + 64), f2); - _mm256_storeu_si256((__m256i *) (f + 96), f3); - f = nextf; - nextf += 128; - } - - *f = (uint8) ((*s & 3) - 1); -} diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_653x3.h b/src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_653x3.h deleted file mode 100644 index fa74a621..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_653x3.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR653_AVX2_CRYPTO_DECODE_653X3_H -#define PQCLEAN_NTRULPR653_AVX2_CRYPTO_DECODE_653X3_H - -#include -#define PQCLEAN_NTRULPR653_AVX2_crypto_decode_653x3_STRBYTES 164 -#define PQCLEAN_NTRULPR653_AVX2_crypto_decode_653x3_ITEMS 653 -#define PQCLEAN_NTRULPR653_AVX2_crypto_decode_653x3_ITEMBYTES 1 - -void PQCLEAN_NTRULPR653_AVX2_crypto_decode_653x3(void *v, const unsigned char *s); -#endif diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_653xint16.c b/src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_653xint16.c deleted file mode 100644 index 9af423af..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_653xint16.c +++ /dev/null @@ -1,15 +0,0 @@ -#include "crypto_decode_653xint16.h" - - -void PQCLEAN_NTRULPR653_AVX2_crypto_decode_653xint16(void *v, const unsigned char *s) { - uint16_t *x = v; - int i; - - for (i = 0; i < 653; ++i) { - uint16_t u0 = s[0]; - uint16_t u1 = s[1]; - *x = (uint16_t) (u0 | (u1 << 8)); - x += 1; - s += 2; - } -} diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_653xint16.h b/src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_653xint16.h deleted file mode 100644 index af3e318f..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_653xint16.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR653_AVX2_CRYPTO_DECODE_653XINT16_H -#define PQCLEAN_NTRULPR653_AVX2_CRYPTO_DECODE_653XINT16_H - -#include -#define PQCLEAN_NTRULPR653_AVX2_crypto_decode_653xint16_STRBYTES 1306 -#define PQCLEAN_NTRULPR653_AVX2_crypto_decode_653xint16_ITEMBYTES 2 -#define PQCLEAN_NTRULPR653_AVX2_crypto_decode_653xint16_ITEMS 653 - -void PQCLEAN_NTRULPR653_AVX2_crypto_decode_653xint16(void *v, const unsigned char *s); -#endif diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_653xint32.c b/src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_653xint32.c deleted file mode 100644 index 3559b848..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_653xint32.c +++ /dev/null @@ -1,20 +0,0 @@ -#include "crypto_decode_653xint32.h" - - -void PQCLEAN_NTRULPR653_AVX2_crypto_decode_653xint32(void *v, const unsigned char *s) { - uint32_t *x = v; - int i; - - for (i = 0; i < 653; ++i) { - uint32_t u0 = s[0]; - uint32_t u1 = s[1]; - uint32_t u2 = s[2]; - uint32_t u3 = s[3]; - u1 <<= 8; - u2 <<= 16; - u3 <<= 24; - *x = u0 | u1 | u2 | u3; - x += 1; - s += 4; - } -} diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_653xint32.h b/src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_653xint32.h deleted file mode 100644 index 06f57027..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_decode_653xint32.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR653_AVX2_CRYPTO_DECODE_653XINT32_H -#define PQCLEAN_NTRULPR653_AVX2_CRYPTO_DECODE_653XINT32_H - -#include -#define PQCLEAN_NTRULPR653_AVX2_crypto_decode_653xint32_STRBYTES 2612 -#define PQCLEAN_NTRULPR653_AVX2_crypto_decode_653xint32_ITEMBYTES 4 -#define PQCLEAN_NTRULPR653_AVX2_crypto_decode_653xint32_ITEMS 653 - -void PQCLEAN_NTRULPR653_AVX2_crypto_decode_653xint32(void *v, const unsigned char *s); -#endif diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_256x16.c b/src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_256x16.c deleted file mode 100644 index 4b3a9647..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_256x16.c +++ /dev/null @@ -1,10 +0,0 @@ -#include "crypto_encode_256x16.h" - - -void PQCLEAN_NTRULPR653_AVX2_crypto_encode_256x16(unsigned char *s, const void *v) { - const unsigned char *T = v; - int i; - for (i = 0; i < 128; ++i) { - s[i] = (unsigned char) (T[2 * i] + (T[2 * i + 1] << 4)); - } -} diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_256x16.h b/src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_256x16.h deleted file mode 100644 index c7f79e39..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_256x16.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR653_AVX2_CRYPTO_ENCODE_256X16_H -#define PQCLEAN_NTRULPR653_AVX2_CRYPTO_ENCODE_256X16_H - -#include -#define PQCLEAN_NTRULPR653_AVX2_crypto_encode_256x16_STRBYTES 128 -#define PQCLEAN_NTRULPR653_AVX2_crypto_encode_256x16_ITEMS 256 -#define PQCLEAN_NTRULPR653_AVX2_crypto_encode_256x16_ITEMBYTES 1 - -void PQCLEAN_NTRULPR653_AVX2_crypto_encode_256x16(unsigned char *s, const void *v); -#endif diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_256x2.c b/src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_256x2.c deleted file mode 100644 index c77f1095..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_256x2.c +++ /dev/null @@ -1,88 +0,0 @@ -#include "crypto_encode_256x2.h" -#include -#include - -void PQCLEAN_NTRULPR653_AVX2_crypto_encode_256x2(unsigned char *s, const void *v) { - __m256i a0 = _mm256_loadu_si256(0 + (__m256i *) v); - __m256i a1 = _mm256_loadu_si256(1 + (__m256i *) v); - __m256i a2 = _mm256_loadu_si256(2 + (__m256i *) v); - __m256i a3 = _mm256_loadu_si256(3 + (__m256i *) v); - __m256i a4 = _mm256_loadu_si256(4 + (__m256i *) v); - __m256i a5 = _mm256_loadu_si256(5 + (__m256i *) v); - __m256i a6 = _mm256_loadu_si256(6 + (__m256i *) v); - __m256i a7 = _mm256_loadu_si256(7 + (__m256i *) v); - __m256i bottom = _mm256_set1_epi8(1); - __m256i zero = _mm256_setzero_si256(); - __m256i b0 = _mm256_cmpgt_epi8(a0 & bottom, zero); - __m256i b1 = _mm256_cmpgt_epi8(a1 & bottom, zero); - __m256i b2 = _mm256_cmpgt_epi8(a2 & bottom, zero); - __m256i b3 = _mm256_cmpgt_epi8(a3 & bottom, zero); - __m256i b4 = _mm256_cmpgt_epi8(a4 & bottom, zero); - __m256i b5 = _mm256_cmpgt_epi8(a5 & bottom, zero); - __m256i b6 = _mm256_cmpgt_epi8(a6 & bottom, zero); - __m256i b7 = _mm256_cmpgt_epi8(a7 & bottom, zero); - int32_t c0 = _mm256_movemask_epi8(b0); - int32_t c1 = _mm256_movemask_epi8(b1); - int32_t c2 = _mm256_movemask_epi8(b2); - int32_t c3 = _mm256_movemask_epi8(b3); - int32_t c4 = _mm256_movemask_epi8(b4); - int32_t c5 = _mm256_movemask_epi8(b5); - int32_t c6 = _mm256_movemask_epi8(b6); - int32_t c7 = _mm256_movemask_epi8(b7); - *s++ = (unsigned char) c0; - c0 >>= 8; - *s++ = (unsigned char) c0; - c0 >>= 8; - *s++ = (unsigned char) c0; - c0 >>= 8; - *s++ = (unsigned char) c0; - *s++ = (unsigned char) c1; - c1 >>= 8; - *s++ = (unsigned char) c1; - c1 >>= 8; - *s++ = (unsigned char) c1; - c1 >>= 8; - *s++ = (unsigned char) c1; - *s++ = (unsigned char) c2; - c2 >>= 8; - *s++ = (unsigned char) c2; - c2 >>= 8; - *s++ = (unsigned char) c2; - c2 >>= 8; - *s++ = (unsigned char) c2; - *s++ = (unsigned char) c3; - c3 >>= 8; - *s++ = (unsigned char) c3; - c3 >>= 8; - *s++ = (unsigned char) c3; - c3 >>= 8; - *s++ = (unsigned char) c3; - *s++ = (unsigned char) c4; - c4 >>= 8; - *s++ = (unsigned char) c4; - c4 >>= 8; - *s++ = (unsigned char) c4; - c4 >>= 8; - *s++ = (unsigned char) c4; - *s++ = (unsigned char) c5; - c5 >>= 8; - *s++ = (unsigned char) c5; - c5 >>= 8; - *s++ = (unsigned char) c5; - c5 >>= 8; - *s++ = (unsigned char) c5; - *s++ = (unsigned char) c6; - c6 >>= 8; - *s++ = (unsigned char) c6; - c6 >>= 8; - *s++ = (unsigned char) c6; - c6 >>= 8; - *s++ = (unsigned char) c6; - *s++ = (unsigned char) c7; - c7 >>= 8; - *s++ = (unsigned char) c7; - c7 >>= 8; - *s++ = (unsigned char) c7; - c7 >>= 8; - *s++ = (unsigned char) c7; -} diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_256x2.h b/src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_256x2.h deleted file mode 100644 index 12d50d31..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_256x2.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR653_AVX2_CRYPTO_ENCODE_256X2_H -#define PQCLEAN_NTRULPR653_AVX2_CRYPTO_ENCODE_256X2_H - -#include -#define PQCLEAN_NTRULPR653_AVX2_crypto_encode_256x2_STRBYTES 32 -#define PQCLEAN_NTRULPR653_AVX2_crypto_encode_256x2_ITEMS 256 -#define PQCLEAN_NTRULPR653_AVX2_crypto_encode_256x2_ITEMBYTES 1 - -void PQCLEAN_NTRULPR653_AVX2_crypto_encode_256x2(unsigned char *s, const void *v); -#endif diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_653x1541.c b/src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_653x1541.c deleted file mode 100644 index 7e69db37..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_653x1541.c +++ /dev/null @@ -1,286 +0,0 @@ -#include "crypto_encode_653x1541.h" -#include -/* auto-generated; do not edit */ - -#define int16 int16_t -#define uint16 uint16_t -#define uint32 uint32_t - -void PQCLEAN_NTRULPR653_AVX2_crypto_encode_653x1541(unsigned char *out, const void *v) { - const int16 *R0 = v; - /* XXX: caller could overlap R with input */ - uint16 R[327]; - long i; - const uint16 *reading; - uint16 *writing; - uint16 r0, r1; - uint32 r2; - uint32 s0; - - reading = (uint16 *) R0; - writing = R; - i = 41; - while (i > 0) { - __m256i x, y; - --i; - if (!i) { - reading -= 4; - writing -= 2; - out -= 2; - } - x = _mm256_loadu_si256((__m256i *) reading); - x = _mm256_add_epi16(x, _mm256_set1_epi16(2310)); - x &= _mm256_set1_epi16(16383); - x = _mm256_mulhi_epi16(x, _mm256_set1_epi16(21846)); - y = x & _mm256_set1_epi32(65535); - x = _mm256_srli_epi32(x, 16); - x = _mm256_mullo_epi32(x, _mm256_set1_epi32(1541)); - x = _mm256_add_epi32(y, x); - x = _mm256_shuffle_epi8(x, _mm256_set_epi8( - 12, 8, 4, 0, 12, 8, 4, 0, 14, 13, 10, 9, 6, 5, 2, 1, - 12, 8, 4, 0, 12, 8, 4, 0, 14, 13, 10, 9, 6, 5, 2, 1 - )); - x = _mm256_permute4x64_epi64(x, 0xd8); - _mm_storeu_si128((__m128i *) writing, _mm256_extractf128_si256(x, 0)); - s0 = (uint32) _mm256_extract_epi32(x, 4); - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 = (uint32) _mm256_extract_epi32(x, 6); - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - reading += 16; - writing += 8; - } - R[326] = (uint16) ((((R0[652] + 2310) & 16383) * 10923) >> 15); - - reading = (uint16 *) R; - writing = R; - i = 11; - while (i > 0) { - __m256i x, x2, y, y2; - --i; - if (!i) { - reading -= 26; - writing -= 13; - out -= 26; - } - x = _mm256_loadu_si256((__m256i *) (reading + 0)); - x2 = _mm256_loadu_si256((__m256i *) (reading + 16)); - y = x & _mm256_set1_epi32(65535); - y2 = x2 & _mm256_set1_epi32(65535); - x = _mm256_srli_epi32(x, 16); - x2 = _mm256_srli_epi32(x2, 16); - x = _mm256_mullo_epi32(x, _mm256_set1_epi32(9277)); - x2 = _mm256_mullo_epi32(x2, _mm256_set1_epi32(9277)); - x = _mm256_add_epi32(y, x); - x2 = _mm256_add_epi32(y2, x2); - x = _mm256_shuffle_epi8(x, _mm256_set_epi8( - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0, - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0 - )); - x2 = _mm256_shuffle_epi8(x2, _mm256_set_epi8( - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0, - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0 - )); - x = _mm256_permute4x64_epi64(x, 0xd8); - x2 = _mm256_permute4x64_epi64(x2, 0xd8); - _mm256_storeu_si256((__m256i *) writing, _mm256_permute2f128_si256(x, x2, 0x31)); - _mm256_storeu_si256((__m256i *) out, _mm256_permute2f128_si256(x, x2, 0x20)); - reading += 32; - writing += 16; - out += 32; - } - R[163] = R[326]; - - reading = (uint16 *) R; - writing = R; - i = 11; - while (i > 0) { - __m256i x, y; - --i; - if (!i) { - reading -= 12; - writing -= 6; - out -= 6; - } - x = _mm256_loadu_si256((__m256i *) reading); - y = x & _mm256_set1_epi32(65535); - x = _mm256_srli_epi32(x, 16); - x = _mm256_mullo_epi32(x, _mm256_set1_epi32(1314)); - x = _mm256_add_epi32(y, x); - x = _mm256_shuffle_epi8(x, _mm256_set_epi8( - 12, 8, 4, 0, 12, 8, 4, 0, 14, 13, 10, 9, 6, 5, 2, 1, - 12, 8, 4, 0, 12, 8, 4, 0, 14, 13, 10, 9, 6, 5, 2, 1 - )); - x = _mm256_permute4x64_epi64(x, 0xd8); - _mm_storeu_si128((__m128i *) writing, _mm256_extractf128_si256(x, 0)); - s0 = (uint32) _mm256_extract_epi32(x, 4); - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 = (uint32) _mm256_extract_epi32(x, 6); - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - reading += 16; - writing += 8; - } - - reading = (uint16 *) R; - writing = R; - i = 3; - while (i > 0) { - __m256i x, x2, y, y2; - --i; - if (!i) { - reading -= 14; - writing -= 7; - out -= 14; - } - x = _mm256_loadu_si256((__m256i *) (reading + 0)); - x2 = _mm256_loadu_si256((__m256i *) (reading + 16)); - y = x & _mm256_set1_epi32(65535); - y2 = x2 & _mm256_set1_epi32(65535); - x = _mm256_srli_epi32(x, 16); - x2 = _mm256_srli_epi32(x2, 16); - x = _mm256_mullo_epi32(x, _mm256_set1_epi32(6745)); - x2 = _mm256_mullo_epi32(x2, _mm256_set1_epi32(6745)); - x = _mm256_add_epi32(y, x); - x2 = _mm256_add_epi32(y2, x2); - x = _mm256_shuffle_epi8(x, _mm256_set_epi8( - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0, - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0 - )); - x2 = _mm256_shuffle_epi8(x2, _mm256_set_epi8( - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0, - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0 - )); - x = _mm256_permute4x64_epi64(x, 0xd8); - x2 = _mm256_permute4x64_epi64(x2, 0xd8); - _mm256_storeu_si256((__m256i *) writing, _mm256_permute2f128_si256(x, x2, 0x31)); - _mm256_storeu_si256((__m256i *) out, _mm256_permute2f128_si256(x, x2, 0x20)); - reading += 32; - writing += 16; - out += 32; - } - - reading = (uint16 *) R; - writing = R; - i = 3; - while (i > 0) { - __m256i x, y; - --i; - if (!i) { - reading -= 8; - writing -= 4; - out -= 4; - } - x = _mm256_loadu_si256((__m256i *) reading); - y = x & _mm256_set1_epi32(65535); - x = _mm256_srli_epi32(x, 16); - x = _mm256_mullo_epi32(x, _mm256_set1_epi32(695)); - x = _mm256_add_epi32(y, x); - x = _mm256_shuffle_epi8(x, _mm256_set_epi8( - 12, 8, 4, 0, 12, 8, 4, 0, 14, 13, 10, 9, 6, 5, 2, 1, - 12, 8, 4, 0, 12, 8, 4, 0, 14, 13, 10, 9, 6, 5, 2, 1 - )); - x = _mm256_permute4x64_epi64(x, 0xd8); - _mm_storeu_si128((__m128i *) writing, _mm256_extractf128_si256(x, 0)); - s0 = (uint32) _mm256_extract_epi32(x, 4); - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 = (uint32) _mm256_extract_epi32(x, 6); - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - reading += 16; - writing += 8; - } - R[20] = R[40]; - - for (i = 0; i < 10; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)1887; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - R[10] = R[20]; - - for (i = 0; i < 5; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)13910; - *out++ = (unsigned char) r2; - r2 >>= 8; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - R[5] = R[10]; - - for (i = 0; i < 2; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)2953; - *out++ = (unsigned char) r2; - r2 >>= 8; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - r0 = R[4]; - r1 = R[5]; - r2 = r0 + r1 * (uint32)2953; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[2] = (uint16) r2; - - r0 = R[0]; - r1 = R[1]; - r2 = r0 + r1 * (uint32)134; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[0] = (uint16) r2; - R[1] = R[2]; - - r0 = R[0]; - r1 = R[1]; - r2 = r0 + r1 * (uint32)71; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[0] = (uint16) r2; - - r0 = R[0]; - *out++ = (unsigned char) r0; - r0 >>= 8; - *out++ = (unsigned char) r0; -} diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_653x1541.h b/src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_653x1541.h deleted file mode 100644 index 5f498ca6..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_653x1541.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR653_AVX2_CRYPTO_ENCODE_653X1541_H -#define PQCLEAN_NTRULPR653_AVX2_CRYPTO_ENCODE_653X1541_H - -#include -#define PQCLEAN_NTRULPR653_AVX2_crypto_encode_653x1541_STRBYTES 865 -#define PQCLEAN_NTRULPR653_AVX2_crypto_encode_653x1541_ITEMS 653 -#define PQCLEAN_NTRULPR653_AVX2_crypto_encode_653x1541_ITEMBYTES 2 - -void PQCLEAN_NTRULPR653_AVX2_crypto_encode_653x1541(unsigned char *out, const void *v); -#endif diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_653x1541round.c b/src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_653x1541round.c deleted file mode 100644 index 575630e2..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_653x1541round.c +++ /dev/null @@ -1,288 +0,0 @@ -#include "crypto_encode_653x1541round.h" -#include -/* auto-generated; do not edit */ - -#define int16 int16_t -#define uint16 uint16_t -#define uint32 uint32_t - -void PQCLEAN_NTRULPR653_AVX2_crypto_encode_653x1541round(unsigned char *out, const void *v) { - const int16 *R0 = v; - /* XXX: caller could overlap R with input */ - uint16 R[327]; - long i; - const uint16 *reading; - uint16 *writing; - uint16 r0, r1; - uint32 r2; - uint32 s0; - - reading = (uint16 *) R0; - writing = R; - i = 41; - while (i > 0) { - __m256i x, y; - --i; - if (!i) { - reading -= 4; - writing -= 2; - out -= 2; - } - x = _mm256_loadu_si256((__m256i *) reading); - x = _mm256_mulhrs_epi16(x, _mm256_set1_epi16(10923)); - x = _mm256_add_epi16(x, _mm256_add_epi16(x, x)); - x = _mm256_add_epi16(x, _mm256_set1_epi16(2310)); - x &= _mm256_set1_epi16(16383); - x = _mm256_mulhi_epi16(x, _mm256_set1_epi16(21846)); - y = x & _mm256_set1_epi32(65535); - x = _mm256_srli_epi32(x, 16); - x = _mm256_mullo_epi32(x, _mm256_set1_epi32(1541)); - x = _mm256_add_epi32(y, x); - x = _mm256_shuffle_epi8(x, _mm256_set_epi8( - 12, 8, 4, 0, 12, 8, 4, 0, 14, 13, 10, 9, 6, 5, 2, 1, - 12, 8, 4, 0, 12, 8, 4, 0, 14, 13, 10, 9, 6, 5, 2, 1 - )); - x = _mm256_permute4x64_epi64(x, 0xd8); - _mm_storeu_si128((__m128i *) writing, _mm256_extractf128_si256(x, 0)); - s0 = (uint32) _mm256_extract_epi32(x, 4); - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 = (uint32) _mm256_extract_epi32(x, 6); - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - reading += 16; - writing += 8; - } - R[326] = (uint16) ((((3 * ((10923 * R0[652] + 16384) >> 15) + 2310) & 16383) * 10923) >> 15); - - reading = (uint16 *) R; - writing = R; - i = 11; - while (i > 0) { - __m256i x, x2, y, y2; - --i; - if (!i) { - reading -= 26; - writing -= 13; - out -= 26; - } - x = _mm256_loadu_si256((__m256i *) (reading + 0)); - x2 = _mm256_loadu_si256((__m256i *) (reading + 16)); - y = x & _mm256_set1_epi32(65535); - y2 = x2 & _mm256_set1_epi32(65535); - x = _mm256_srli_epi32(x, 16); - x2 = _mm256_srli_epi32(x2, 16); - x = _mm256_mullo_epi32(x, _mm256_set1_epi32(9277)); - x2 = _mm256_mullo_epi32(x2, _mm256_set1_epi32(9277)); - x = _mm256_add_epi32(y, x); - x2 = _mm256_add_epi32(y2, x2); - x = _mm256_shuffle_epi8(x, _mm256_set_epi8( - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0, - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0 - )); - x2 = _mm256_shuffle_epi8(x2, _mm256_set_epi8( - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0, - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0 - )); - x = _mm256_permute4x64_epi64(x, 0xd8); - x2 = _mm256_permute4x64_epi64(x2, 0xd8); - _mm256_storeu_si256((__m256i *) writing, _mm256_permute2f128_si256(x, x2, 0x31)); - _mm256_storeu_si256((__m256i *) out, _mm256_permute2f128_si256(x, x2, 0x20)); - reading += 32; - writing += 16; - out += 32; - } - R[163] = R[326]; - - reading = (uint16 *) R; - writing = R; - i = 11; - while (i > 0) { - __m256i x, y; - --i; - if (!i) { - reading -= 12; - writing -= 6; - out -= 6; - } - x = _mm256_loadu_si256((__m256i *) reading); - y = x & _mm256_set1_epi32(65535); - x = _mm256_srli_epi32(x, 16); - x = _mm256_mullo_epi32(x, _mm256_set1_epi32(1314)); - x = _mm256_add_epi32(y, x); - x = _mm256_shuffle_epi8(x, _mm256_set_epi8( - 12, 8, 4, 0, 12, 8, 4, 0, 14, 13, 10, 9, 6, 5, 2, 1, - 12, 8, 4, 0, 12, 8, 4, 0, 14, 13, 10, 9, 6, 5, 2, 1 - )); - x = _mm256_permute4x64_epi64(x, 0xd8); - _mm_storeu_si128((__m128i *) writing, _mm256_extractf128_si256(x, 0)); - s0 = (uint32) _mm256_extract_epi32(x, 4); - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 = (uint32) _mm256_extract_epi32(x, 6); - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - reading += 16; - writing += 8; - } - - reading = (uint16 *) R; - writing = R; - i = 3; - while (i > 0) { - __m256i x, x2, y, y2; - --i; - if (!i) { - reading -= 14; - writing -= 7; - out -= 14; - } - x = _mm256_loadu_si256((__m256i *) (reading + 0)); - x2 = _mm256_loadu_si256((__m256i *) (reading + 16)); - y = x & _mm256_set1_epi32(65535); - y2 = x2 & _mm256_set1_epi32(65535); - x = _mm256_srli_epi32(x, 16); - x2 = _mm256_srli_epi32(x2, 16); - x = _mm256_mullo_epi32(x, _mm256_set1_epi32(6745)); - x2 = _mm256_mullo_epi32(x2, _mm256_set1_epi32(6745)); - x = _mm256_add_epi32(y, x); - x2 = _mm256_add_epi32(y2, x2); - x = _mm256_shuffle_epi8(x, _mm256_set_epi8( - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0, - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0 - )); - x2 = _mm256_shuffle_epi8(x2, _mm256_set_epi8( - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0, - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0 - )); - x = _mm256_permute4x64_epi64(x, 0xd8); - x2 = _mm256_permute4x64_epi64(x2, 0xd8); - _mm256_storeu_si256((__m256i *) writing, _mm256_permute2f128_si256(x, x2, 0x31)); - _mm256_storeu_si256((__m256i *) out, _mm256_permute2f128_si256(x, x2, 0x20)); - reading += 32; - writing += 16; - out += 32; - } - - reading = (uint16 *) R; - writing = R; - i = 3; - while (i > 0) { - __m256i x, y; - --i; - if (!i) { - reading -= 8; - writing -= 4; - out -= 4; - } - x = _mm256_loadu_si256((__m256i *) reading); - y = x & _mm256_set1_epi32(65535); - x = _mm256_srli_epi32(x, 16); - x = _mm256_mullo_epi32(x, _mm256_set1_epi32(695)); - x = _mm256_add_epi32(y, x); - x = _mm256_shuffle_epi8(x, _mm256_set_epi8( - 12, 8, 4, 0, 12, 8, 4, 0, 14, 13, 10, 9, 6, 5, 2, 1, - 12, 8, 4, 0, 12, 8, 4, 0, 14, 13, 10, 9, 6, 5, 2, 1 - )); - x = _mm256_permute4x64_epi64(x, 0xd8); - _mm_storeu_si128((__m128i *) writing, _mm256_extractf128_si256(x, 0)); - s0 = (uint32) _mm256_extract_epi32(x, 4); - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 = (uint32) _mm256_extract_epi32(x, 6); - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - reading += 16; - writing += 8; - } - R[20] = R[40]; - - for (i = 0; i < 10; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)1887; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - R[10] = R[20]; - - for (i = 0; i < 5; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)13910; - *out++ = (unsigned char) r2; - r2 >>= 8; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - R[5] = R[10]; - - for (i = 0; i < 2; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)2953; - *out++ = (unsigned char) r2; - r2 >>= 8; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - r0 = R[4]; - r1 = R[5]; - r2 = r0 + r1 * (uint32)2953; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[2] = (uint16) r2; - - r0 = R[0]; - r1 = R[1]; - r2 = r0 + r1 * (uint32)134; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[0] = (uint16) r2; - R[1] = R[2]; - - r0 = R[0]; - r1 = R[1]; - r2 = r0 + r1 * (uint32)71; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[0] = (uint16) r2; - - r0 = R[0]; - *out++ = (unsigned char) r0; - r0 >>= 8; - *out++ = (unsigned char) r0; -} diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_653x1541round.h b/src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_653x1541round.h deleted file mode 100644 index 036eb13e..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_653x1541round.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR653_AVX2_CRYPTO_ENCODE_653X1541ROUND_H -#define PQCLEAN_NTRULPR653_AVX2_CRYPTO_ENCODE_653X1541ROUND_H - -#include -#define PQCLEAN_NTRULPR653_AVX2_crypto_encode_653x1541round_STRBYTES 865 -#define PQCLEAN_NTRULPR653_AVX2_crypto_encode_653x1541round_ITEMS 653 -#define PQCLEAN_NTRULPR653_AVX2_crypto_encode_653x1541round_ITEMBYTES 2 - -void PQCLEAN_NTRULPR653_AVX2_crypto_encode_653x1541round(unsigned char *out, const void *v); -#endif diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_653x3.c b/src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_653x3.c deleted file mode 100644 index f6748a3f..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_653x3.c +++ /dev/null @@ -1,64 +0,0 @@ -#include "crypto_encode_653x3.h" -#include -#define uint8 uint8_t - -#define p 653 -#define loops 6 -#define overshoot 29 - -static const union { - uint8 init[32]; - __m256i val; -} lobytes_buf = { .init = { - 255, 0, 255, 0, 255, 0, 255, 0, - 255, 0, 255, 0, 255, 0, 255, 0, - 255, 0, 255, 0, 255, 0, 255, 0, - 255, 0, 255, 0, 255, 0, 255, 0, - } -}; -#define lobytes (lobytes_buf.val) - -void PQCLEAN_NTRULPR653_AVX2_crypto_encode_653x3(unsigned char *s, const void *v) { - const uint8 *f = v; - int loop; - const uint8 *nextf = f + 128 - 4 * overshoot; - unsigned char *nexts = s + 32 - overshoot; - - for (loop = loops; loop > 0; --loop) { - __m256i f0 = _mm256_loadu_si256((const __m256i *) (f + 0)); - __m256i f1 = _mm256_loadu_si256((const __m256i *) (f + 32)); - __m256i f2 = _mm256_loadu_si256((const __m256i *) (f + 64)); - __m256i f3 = _mm256_loadu_si256((const __m256i *) (f + 96)); - f = nextf; - nextf += 128; - - __m256i a0 = _mm256_packus_epi16(f0 & lobytes, f1 & lobytes); - /* 0 2 4 6 8 10 12 14 32 34 36 38 40 42 44 46 */ - /* 16 18 20 22 24 26 28 30 48 50 52 54 56 58 60 62 */ - __m256i a1 = _mm256_packus_epi16(_mm256_srli_epi16(f0, 8), _mm256_srli_epi16(f1, 8)); - /* 1 3 ... */ - __m256i a2 = _mm256_packus_epi16(f2 & lobytes, f3 & lobytes); - __m256i a3 = _mm256_packus_epi16(_mm256_srli_epi16(f2, 8), _mm256_srli_epi16(f3, 8)); - - a0 = _mm256_add_epi8(a0, _mm256_slli_epi16(a1 & _mm256_set1_epi8(63), 2)); - a2 = _mm256_add_epi8(a2, _mm256_slli_epi16(a3 & _mm256_set1_epi8(63), 2)); - - __m256i b0 = _mm256_packus_epi16(a0 & lobytes, a2 & lobytes); - /* 0 4 8 12 32 36 40 44 64 68 72 76 96 100 104 108 */ - /* 16 20 24 28 48 52 56 60 80 84 88 92 112 116 120 124 */ - __m256i b2 = _mm256_packus_epi16(_mm256_srli_epi16(a0, 8), _mm256_srli_epi16(a2, 8)); - /* 2 6 ... */ - - b0 = _mm256_add_epi8(b0, _mm256_slli_epi16(b2 & _mm256_set1_epi8(15), 4)); - - b0 = _mm256_permutevar8x32_epi32(b0, _mm256_set_epi32(7, 3, 6, 2, 5, 1, 4, 0)); - - b0 = _mm256_add_epi8(b0, _mm256_set1_epi8(85)); - - _mm256_storeu_si256((__m256i *) s, b0); - s = nexts; - nexts += 32; - } - - *s++ = *f++ + 1; -} diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_653x3.h b/src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_653x3.h deleted file mode 100644 index b4cd590d..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_653x3.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR653_AVX2_CRYPTO_ENCODE_653X3_H -#define PQCLEAN_NTRULPR653_AVX2_CRYPTO_ENCODE_653X3_H - -#include -#define PQCLEAN_NTRULPR653_AVX2_crypto_encode_653x3_STRBYTES 164 -#define PQCLEAN_NTRULPR653_AVX2_crypto_encode_653x3_ITEMS 653 -#define PQCLEAN_NTRULPR653_AVX2_crypto_encode_653x3_ITEMBYTES 1 - -void PQCLEAN_NTRULPR653_AVX2_crypto_encode_653x3(unsigned char *s, const void *v); -#endif diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_653xint16.c b/src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_653xint16.c deleted file mode 100644 index f4432f5f..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_653xint16.c +++ /dev/null @@ -1,13 +0,0 @@ -#include "crypto_encode_653xint16.h" - - -void PQCLEAN_NTRULPR653_AVX2_crypto_encode_653xint16(unsigned char *s, const void *v) { - const uint16_t *x = v; - int i; - - for (i = 0; i < 653; ++i) { - uint16_t u = *x++; - *s++ = (unsigned char) u; - *s++ = (unsigned char) (u >> 8); - } -} diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_653xint16.h b/src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_653xint16.h deleted file mode 100644 index 8d6681ad..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_encode_653xint16.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR653_AVX2_CRYPTO_ENCODE_653XINT16_H -#define PQCLEAN_NTRULPR653_AVX2_CRYPTO_ENCODE_653XINT16_H - -#include -#define PQCLEAN_NTRULPR653_AVX2_crypto_encode_653xint16_STRBYTES 1306 -#define PQCLEAN_NTRULPR653_AVX2_crypto_encode_653xint16_ITEMBYTES 2 -#define PQCLEAN_NTRULPR653_AVX2_crypto_encode_653xint16_ITEMS 653 - -void PQCLEAN_NTRULPR653_AVX2_crypto_encode_653xint16(unsigned char *s, const void *v); -#endif diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_sort_int32.c b/src/kem/ntru_prime/ntrulpr653/avx2/crypto_sort_int32.c deleted file mode 100644 index c116c03d..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_sort_int32.c +++ /dev/null @@ -1,1215 +0,0 @@ -#include "crypto_sort_int32.h" -#include - -#define int32 int32_t - -typedef __m256i int32x8; -#define int32x8_load(z) _mm256_loadu_si256((__m256i *) (z)) -#define int32x8_store(z,i) _mm256_storeu_si256((__m256i *) (z),(i)) -#define int32x8_min _mm256_min_epi32 -#define int32x8_max _mm256_max_epi32 - -#define int32x8_MINMAX(a,b) \ - do { \ - int32x8 c = int32x8_min((a),(b)); \ - (b) = int32x8_max((a),(b)); \ - (a) = c; \ - } while(0) - -static inline void int32_MINMAX(int32 *a, int32 *b) { - int32 ab = *b ^ *a; - int32 c = (int32)((int64_t) * b - (int64_t) * a); - c ^= ab & (c ^ *b); - c >>= 31; - c &= ab; - *a ^= c; - *b ^= c; -} - -static void minmax_vector(int32 *x, int32 *y, long long n) { - if (n < 8) { - while (n > 0) { - int32_MINMAX(x, y); - ++x; - ++y; - --n; - } - return; - } - if (n & 7) { - int32x8 x0 = int32x8_load(x + n - 8); - int32x8 y0 = int32x8_load(y + n - 8); - int32x8_MINMAX(x0, y0); - int32x8_store(x + n - 8, x0); - int32x8_store(y + n - 8, y0); - n &= ~7; - } - do { - int32x8 x0 = int32x8_load(x); - int32x8 y0 = int32x8_load(y); - int32x8_MINMAX(x0, y0); - int32x8_store(x, x0); - int32x8_store(y, y0); - x += 8; - y += 8; - n -= 8; - } while (n); -} - -/* stages 8,4,2,1 of size-16 bitonic merging */ -static void merge16_finish(int32 *x, int32x8 x0, int32x8 x1, int flagdown) { - int32x8 b0, b1, c0, c1, mask; - - int32x8_MINMAX(x0, x1); - - b0 = _mm256_permute2x128_si256(x0, x1, 0x20); /* A0123B0123 */ - b1 = _mm256_permute2x128_si256(x0, x1, 0x31); /* A4567B4567 */ - - int32x8_MINMAX(b0, b1); - - c0 = _mm256_unpacklo_epi64(b0, b1); /* A0145B0145 */ - c1 = _mm256_unpackhi_epi64(b0, b1); /* A2367B2367 */ - - int32x8_MINMAX(c0, c1); - - b0 = _mm256_unpacklo_epi32(c0, c1); /* A0213B0213 */ - b1 = _mm256_unpackhi_epi32(c0, c1); /* A4657B4657 */ - - c0 = _mm256_unpacklo_epi64(b0, b1); /* A0246B0246 */ - c1 = _mm256_unpackhi_epi64(b0, b1); /* A1357B1357 */ - - int32x8_MINMAX(c0, c1); - - b0 = _mm256_unpacklo_epi32(c0, c1); /* A0123B0123 */ - b1 = _mm256_unpackhi_epi32(c0, c1); /* A4567B4567 */ - - x0 = _mm256_permute2x128_si256(b0, b1, 0x20); /* A01234567 */ - x1 = _mm256_permute2x128_si256(b0, b1, 0x31); /* A01234567 */ - - if (flagdown) { - mask = _mm256_set1_epi32(-1); - x0 ^= mask; - x1 ^= mask; - } - - int32x8_store(&x[0], x0); - int32x8_store(&x[8], x1); -} - -/* stages 64,32 of bitonic merging; n is multiple of 128 */ -static void int32_twostages_32(int32 *x, long long n) { - long long i; - - while (n > 0) { - for (i = 0; i < 32; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + 32]); - int32x8 x2 = int32x8_load(&x[i + 64]); - int32x8 x3 = int32x8_load(&x[i + 96]); - - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - - int32x8_store(&x[i], x0); - int32x8_store(&x[i + 32], x1); - int32x8_store(&x[i + 64], x2); - int32x8_store(&x[i + 96], x3); - } - x += 128; - n -= 128; - } -} - -/* stages 4q,2q,q of bitonic merging */ -static long long int32_threestages(int32 *x, long long n, long long q) { - long long k, i; - - for (k = 0; k + 8 * q <= n; k += 8 * q) { - for (i = k; i < k + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8 x4 = int32x8_load(&x[i + 4 * q]); - int32x8 x5 = int32x8_load(&x[i + 5 * q]); - int32x8 x6 = int32x8_load(&x[i + 6 * q]); - int32x8 x7 = int32x8_load(&x[i + 7 * q]); - - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - int32x8_store(&x[i + 4 * q], x4); - int32x8_store(&x[i + 5 * q], x5); - int32x8_store(&x[i + 6 * q], x6); - int32x8_store(&x[i + 7 * q], x7); - } - } - - return k; -} - -/* n is a power of 2; n >= 8; if n == 8 then flagdown */ -// NOLINTNEXTLINE(google-readability-function-size) -static void int32_sort_2power(int32 *x, long long n, int flagdown) { - long long p, q, i, j, k; - int32x8 mask; - - if (n == 8) { - int32 x0 = x[0]; - int32 x1 = x[1]; - int32 x2 = x[2]; - int32 x3 = x[3]; - int32 x4 = x[4]; - int32 x5 = x[5]; - int32 x6 = x[6]; - int32 x7 = x[7]; - - /* odd-even sort instead of bitonic sort */ - - int32_MINMAX(&x1, &x0); - int32_MINMAX(&x3, &x2); - int32_MINMAX(&x2, &x0); - int32_MINMAX(&x3, &x1); - int32_MINMAX(&x2, &x1); - - int32_MINMAX(&x5, &x4); - int32_MINMAX(&x7, &x6); - int32_MINMAX(&x6, &x4); - int32_MINMAX(&x7, &x5); - int32_MINMAX(&x6, &x5); - - int32_MINMAX(&x4, &x0); - int32_MINMAX(&x6, &x2); - int32_MINMAX(&x4, &x2); - - int32_MINMAX(&x5, &x1); - int32_MINMAX(&x7, &x3); - int32_MINMAX(&x5, &x3); - - int32_MINMAX(&x2, &x1); - int32_MINMAX(&x4, &x3); - int32_MINMAX(&x6, &x5); - - x[0] = x0; - x[1] = x1; - x[2] = x2; - x[3] = x3; - x[4] = x4; - x[5] = x5; - x[6] = x6; - x[7] = x7; - return; - } - - if (n == 16) { - int32x8 x0, x1, b0, b1, c0, c1; - - x0 = int32x8_load(&x[0]); - x1 = int32x8_load(&x[8]); - - mask = _mm256_set_epi32(0, 0, -1, -1, 0, 0, -1, -1); - - x0 ^= mask; /* A01234567 */ - x1 ^= mask; /* B01234567 */ - - b0 = _mm256_unpacklo_epi32(x0, x1); /* AB0AB1AB4AB5 */ - b1 = _mm256_unpackhi_epi32(x0, x1); /* AB2AB3AB6AB7 */ - - c0 = _mm256_unpacklo_epi64(b0, b1); /* AB0AB2AB4AB6 */ - c1 = _mm256_unpackhi_epi64(b0, b1); /* AB1AB3AB5AB7 */ - - int32x8_MINMAX(c0, c1); - - mask = _mm256_set_epi32(0, 0, -1, -1, -1, -1, 0, 0); - c0 ^= mask; - c1 ^= mask; - - b0 = _mm256_unpacklo_epi32(c0, c1); /* A01B01A45B45 */ - b1 = _mm256_unpackhi_epi32(c0, c1); /* A23B23A67B67 */ - - int32x8_MINMAX(b0, b1); - - x0 = _mm256_unpacklo_epi64(b0, b1); /* A01234567 */ - x1 = _mm256_unpackhi_epi64(b0, b1); /* B01234567 */ - - b0 = _mm256_unpacklo_epi32(x0, x1); /* AB0AB1AB4AB5 */ - b1 = _mm256_unpackhi_epi32(x0, x1); /* AB2AB3AB6AB7 */ - - c0 = _mm256_unpacklo_epi64(b0, b1); /* AB0AB2AB4AB6 */ - c1 = _mm256_unpackhi_epi64(b0, b1); /* AB1AB3AB5AB7 */ - - int32x8_MINMAX(c0, c1); - - b0 = _mm256_unpacklo_epi32(c0, c1); /* A01B01A45B45 */ - b1 = _mm256_unpackhi_epi32(c0, c1); /* A23B23A67B67 */ - - b0 ^= mask; - b1 ^= mask; - - c0 = _mm256_permute2x128_si256(b0, b1, 0x20); /* A01B01A23B23 */ - c1 = _mm256_permute2x128_si256(b0, b1, 0x31); /* A45B45A67B67 */ - - int32x8_MINMAX(c0, c1); - - b0 = _mm256_permute2x128_si256(c0, c1, 0x20); /* A01B01A45B45 */ - b1 = _mm256_permute2x128_si256(c0, c1, 0x31); /* A23B23A67B67 */ - - int32x8_MINMAX(b0, b1); - - x0 = _mm256_unpacklo_epi64(b0, b1); /* A01234567 */ - x1 = _mm256_unpackhi_epi64(b0, b1); /* B01234567 */ - - b0 = _mm256_unpacklo_epi32(x0, x1); /* AB0AB1AB4AB5 */ - b1 = _mm256_unpackhi_epi32(x0, x1); /* AB2AB3AB6AB7 */ - - c0 = _mm256_unpacklo_epi64(b0, b1); /* AB0AB2AB4AB6 */ - c1 = _mm256_unpackhi_epi64(b0, b1); /* AB1AB3AB5AB7 */ - - int32x8_MINMAX(c0, c1); - - b0 = _mm256_unpacklo_epi32(c0, c1); /* A01B01A45B45 */ - b1 = _mm256_unpackhi_epi32(c0, c1); /* A23B23A67B67 */ - - x0 = _mm256_unpacklo_epi64(b0, b1); /* A01234567 */ - x1 = _mm256_unpackhi_epi64(b0, b1); /* B01234567 */ - - mask = _mm256_set1_epi32(-1); - if (flagdown) { - x1 ^= mask; - } else { - x0 ^= mask; - } - - merge16_finish(x, x0, x1, flagdown); - return; - } - - if (n == 32) { - int32x8 x0, x1, x2, x3; - - int32_sort_2power(x, 16, 1); - int32_sort_2power(x + 16, 16, 0); - - x0 = int32x8_load(&x[0]); - x1 = int32x8_load(&x[8]); - x2 = int32x8_load(&x[16]); - x3 = int32x8_load(&x[24]); - - if (flagdown) { - mask = _mm256_set1_epi32(-1); - x0 ^= mask; - x1 ^= mask; - x2 ^= mask; - x3 ^= mask; - } - - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - - merge16_finish(x, x0, x1, flagdown); - merge16_finish(x + 16, x2, x3, flagdown); - return; - } - - p = n >> 3; - for (i = 0; i < p; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x2 = int32x8_load(&x[i + 2 * p]); - int32x8 x4 = int32x8_load(&x[i + 4 * p]); - int32x8 x6 = int32x8_load(&x[i + 6 * p]); - - /* odd-even stage instead of bitonic stage */ - - int32x8_MINMAX(x4, x0); - int32x8_MINMAX(x6, x2); - int32x8_MINMAX(x2, x0); - int32x8_MINMAX(x6, x4); - int32x8_MINMAX(x2, x4); - - int32x8_store(&x[i], x0); - int32x8_store(&x[i + 2 * p], x2); - int32x8_store(&x[i + 4 * p], x4); - int32x8_store(&x[i + 6 * p], x6); - - int32x8 x1 = int32x8_load(&x[i + p]); - int32x8 x3 = int32x8_load(&x[i + 3 * p]); - int32x8 x5 = int32x8_load(&x[i + 5 * p]); - int32x8 x7 = int32x8_load(&x[i + 7 * p]); - - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x3, x7); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x5, x3); - - int32x8_store(&x[i + p], x1); - int32x8_store(&x[i + 3 * p], x3); - int32x8_store(&x[i + 5 * p], x5); - int32x8_store(&x[i + 7 * p], x7); - } - - if (n >= 128) { - int flip, flipflip; - - mask = _mm256_set1_epi32(-1); - - for (j = 0; j < n; j += 32) { - int32x8 x0 = int32x8_load(&x[j]); - int32x8 x1 = int32x8_load(&x[j + 16]); - x0 ^= mask; - x1 ^= mask; - int32x8_store(&x[j], x0); - int32x8_store(&x[j + 16], x1); - } - - p = 8; - for (;;) { /* for p in [8, 16, ..., n/16] */ - q = p >> 1; - while (q >= 128) { - int32_threestages(x, n, q >> 2); - q >>= 3; - } - if (q == 64) { - int32_twostages_32(x, n); - q = 16; - } - if (q == 32) { - q = 8; - for (k = 0; k < n; k += 8 * q) { - for (i = k; i < k + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8 x4 = int32x8_load(&x[i + 4 * q]); - int32x8 x5 = int32x8_load(&x[i + 5 * q]); - int32x8 x6 = int32x8_load(&x[i + 6 * q]); - int32x8 x7 = int32x8_load(&x[i + 7 * q]); - - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - int32x8_store(&x[i + 4 * q], x4); - int32x8_store(&x[i + 5 * q], x5); - int32x8_store(&x[i + 6 * q], x6); - int32x8_store(&x[i + 7 * q], x7); - } - } - q = 4; - } - if (q == 16) { - q = 8; - for (k = 0; k < n; k += 4 * q) { - for (i = k; i < k + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - } - } - q = 4; - } - if (q == 8) { - for (k = 0; k < n; k += q + q) { - int32x8 x0 = int32x8_load(&x[k]); - int32x8 x1 = int32x8_load(&x[k + q]); - - int32x8_MINMAX(x0, x1); - - int32x8_store(&x[k], x0); - int32x8_store(&x[k + q], x1); - } - } - - q = n >> 3; - flip = 0; - if (p << 1 == q) { - flip = 1; - } - flipflip = 1 - flip; - for (j = 0; j < q; j += p + p) { - for (k = j; k < j + p + p; k += p) { - for (i = k; i < k + p; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8 x4 = int32x8_load(&x[i + 4 * q]); - int32x8 x5 = int32x8_load(&x[i + 5 * q]); - int32x8 x6 = int32x8_load(&x[i + 6 * q]); - int32x8 x7 = int32x8_load(&x[i + 7 * q]); - - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - - if (flip) { - x0 ^= mask; - x1 ^= mask; - x2 ^= mask; - x3 ^= mask; - x4 ^= mask; - x5 ^= mask; - x6 ^= mask; - x7 ^= mask; - } - - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - int32x8_store(&x[i + 4 * q], x4); - int32x8_store(&x[i + 5 * q], x5); - int32x8_store(&x[i + 6 * q], x6); - int32x8_store(&x[i + 7 * q], x7); - } - flip ^= 1; - } - flip ^= flipflip; - } - - if (p << 4 == n) { - break; - } - p <<= 1; - } - } - - for (p = 4; p >= 1; p >>= 1) { - int32 *z = x; - int32 *target = x + n; - if (p == 4) { - mask = _mm256_set_epi32(0, 0, 0, 0, -1, -1, -1, -1); - while (z != target) { - int32x8 x0 = int32x8_load(&z[0]); - int32x8 x1 = int32x8_load(&z[8]); - x0 ^= mask; - x1 ^= mask; - int32x8_store(&z[0], x0); - int32x8_store(&z[8], x1); - z += 16; - } - } else if (p == 2) { - mask = _mm256_set_epi32(0, 0, -1, -1, -1, -1, 0, 0); - while (z != target) { - int32x8 x0 = int32x8_load(&z[0]); - int32x8 x1 = int32x8_load(&z[8]); - x0 ^= mask; - x1 ^= mask; - int32x8 b0 = _mm256_permute2x128_si256(x0, x1, 0x20); - int32x8 b1 = _mm256_permute2x128_si256(x0, x1, 0x31); - int32x8_MINMAX(b0, b1); - int32x8 c0 = _mm256_permute2x128_si256(b0, b1, 0x20); - int32x8 c1 = _mm256_permute2x128_si256(b0, b1, 0x31); - int32x8_store(&z[0], c0); - int32x8_store(&z[8], c1); - z += 16; - } - } else { /* p == 1 */ - mask = _mm256_set_epi32(0, -1, -1, 0, 0, -1, -1, 0); - while (z != target) { - int32x8 x0 = int32x8_load(&z[0]); - int32x8 x1 = int32x8_load(&z[8]); - x0 ^= mask; - x1 ^= mask; - int32x8 b0 = _mm256_permute2x128_si256(x0, x1, 0x20); /* A0123B0123 */ - int32x8 b1 = _mm256_permute2x128_si256(x0, x1, 0x31); /* A4567B4567 */ - int32x8 c0 = _mm256_unpacklo_epi64(b0, b1); /* A0145B0145 */ - int32x8 c1 = _mm256_unpackhi_epi64(b0, b1); /* A2367B2367 */ - int32x8_MINMAX(c0, c1); - int32x8 d0 = _mm256_unpacklo_epi64(c0, c1); /* A0123B0123 */ - int32x8 d1 = _mm256_unpackhi_epi64(c0, c1); /* A4567B4567 */ - int32x8_MINMAX(d0, d1); - int32x8 e0 = _mm256_permute2x128_si256(d0, d1, 0x20); - int32x8 e1 = _mm256_permute2x128_si256(d0, d1, 0x31); - int32x8_store(&z[0], e0); - int32x8_store(&z[8], e1); - z += 16; - } - } - - q = n >> 4; - while (q >= 128 || q == 32) { - int32_threestages(x, n, q >> 2); - q >>= 3; - } - while (q >= 16) { - q >>= 1; - for (j = 0; j < n; j += 4 * q) { - for (k = j; k < j + q; k += 8) { - int32x8 x0 = int32x8_load(&x[k]); - int32x8 x1 = int32x8_load(&x[k + q]); - int32x8 x2 = int32x8_load(&x[k + 2 * q]); - int32x8 x3 = int32x8_load(&x[k + 3 * q]); - - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - - int32x8_store(&x[k], x0); - int32x8_store(&x[k + q], x1); - int32x8_store(&x[k + 2 * q], x2); - int32x8_store(&x[k + 3 * q], x3); - } - } - q >>= 1; - } - if (q == 8) { - for (j = 0; j < n; j += 2 * q) { - int32x8 x0 = int32x8_load(&x[j]); - int32x8 x1 = int32x8_load(&x[j + q]); - - int32x8_MINMAX(x0, x1); - - int32x8_store(&x[j], x0); - int32x8_store(&x[j + q], x1); - } - } - - q = n >> 3; - for (k = 0; k < q; k += 8) { - int32x8 x0 = int32x8_load(&x[k]); - int32x8 x1 = int32x8_load(&x[k + q]); - int32x8 x2 = int32x8_load(&x[k + 2 * q]); - int32x8 x3 = int32x8_load(&x[k + 3 * q]); - int32x8 x4 = int32x8_load(&x[k + 4 * q]); - int32x8 x5 = int32x8_load(&x[k + 5 * q]); - int32x8 x6 = int32x8_load(&x[k + 6 * q]); - int32x8 x7 = int32x8_load(&x[k + 7 * q]); - - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - - int32x8_store(&x[k], x0); - int32x8_store(&x[k + q], x1); - int32x8_store(&x[k + 2 * q], x2); - int32x8_store(&x[k + 3 * q], x3); - int32x8_store(&x[k + 4 * q], x4); - int32x8_store(&x[k + 5 * q], x5); - int32x8_store(&x[k + 6 * q], x6); - int32x8_store(&x[k + 7 * q], x7); - } - } - - /* everything is still masked with _mm256_set_epi32(0,-1,0,-1,0,-1,0,-1); */ - mask = _mm256_set1_epi32(-1); - - for (i = 0; i < n; i += 64) { - int32x8 a0 = int32x8_load(&x[i]); - int32x8 a1 = int32x8_load(&x[i + 8]); - int32x8 a2 = int32x8_load(&x[i + 16]); - int32x8 a3 = int32x8_load(&x[i + 24]); - int32x8 a4 = int32x8_load(&x[i + 32]); - int32x8 a5 = int32x8_load(&x[i + 40]); - int32x8 a6 = int32x8_load(&x[i + 48]); - int32x8 a7 = int32x8_load(&x[i + 56]); - - int32x8 b0 = _mm256_unpacklo_epi32(a0, a1); /* AB0AB1AB4AB5 */ - int32x8 b1 = _mm256_unpackhi_epi32(a0, a1); /* AB2AB3AB6AB7 */ - int32x8 b2 = _mm256_unpacklo_epi32(a2, a3); /* CD0CD1CD4CD5 */ - int32x8 b3 = _mm256_unpackhi_epi32(a2, a3); /* CD2CD3CD6CD7 */ - int32x8 b4 = _mm256_unpacklo_epi32(a4, a5); /* EF0EF1EF4EF5 */ - int32x8 b5 = _mm256_unpackhi_epi32(a4, a5); /* EF2EF3EF6EF7 */ - int32x8 b6 = _mm256_unpacklo_epi32(a6, a7); /* GH0GH1GH4GH5 */ - int32x8 b7 = _mm256_unpackhi_epi32(a6, a7); /* GH2GH3GH6GH7 */ - - int32x8 c0 = _mm256_unpacklo_epi64(b0, b2); /* ABCD0ABCD4 */ - int32x8 c1 = _mm256_unpacklo_epi64(b1, b3); /* ABCD2ABCD6 */ - int32x8 c2 = _mm256_unpackhi_epi64(b0, b2); /* ABCD1ABCD5 */ - int32x8 c3 = _mm256_unpackhi_epi64(b1, b3); /* ABCD3ABCD7 */ - int32x8 c4 = _mm256_unpacklo_epi64(b4, b6); /* EFGH0EFGH4 */ - int32x8 c5 = _mm256_unpacklo_epi64(b5, b7); /* EFGH2EFGH6 */ - int32x8 c6 = _mm256_unpackhi_epi64(b4, b6); /* EFGH1EFGH5 */ - int32x8 c7 = _mm256_unpackhi_epi64(b5, b7); /* EFGH3EFGH7 */ - - if (flagdown) { - c2 ^= mask; - c3 ^= mask; - c6 ^= mask; - c7 ^= mask; - } else { - c0 ^= mask; - c1 ^= mask; - c4 ^= mask; - c5 ^= mask; - } - - int32x8 d0 = _mm256_permute2x128_si256(c0, c4, 0x20); /* ABCDEFGH0 */ - int32x8 d1 = _mm256_permute2x128_si256(c2, c6, 0x20); /* ABCDEFGH1 */ - int32x8 d2 = _mm256_permute2x128_si256(c1, c5, 0x20); /* ABCDEFGH2 */ - int32x8 d3 = _mm256_permute2x128_si256(c3, c7, 0x20); /* ABCDEFGH5 */ - int32x8 d4 = _mm256_permute2x128_si256(c0, c4, 0x31); /* ABCDEFGH4 */ - int32x8 d5 = _mm256_permute2x128_si256(c2, c6, 0x31); /* ABCDEFGH3 */ - int32x8 d6 = _mm256_permute2x128_si256(c1, c5, 0x31); /* ABCDEFGH6 */ - int32x8 d7 = _mm256_permute2x128_si256(c3, c7, 0x31); /* ABCDEFGH7 */ - - int32x8_MINMAX(d0, d1); - int32x8_MINMAX(d2, d3); - int32x8_MINMAX(d4, d5); - int32x8_MINMAX(d6, d7); - int32x8_MINMAX(d0, d2); - int32x8_MINMAX(d1, d3); - int32x8_MINMAX(d4, d6); - int32x8_MINMAX(d5, d7); - int32x8_MINMAX(d0, d4); - int32x8_MINMAX(d1, d5); - int32x8_MINMAX(d2, d6); - int32x8_MINMAX(d3, d7); - - int32x8 e0 = _mm256_unpacklo_epi32(d0, d1); - int32x8 e1 = _mm256_unpackhi_epi32(d0, d1); - int32x8 e2 = _mm256_unpacklo_epi32(d2, d3); - int32x8 e3 = _mm256_unpackhi_epi32(d2, d3); - int32x8 e4 = _mm256_unpacklo_epi32(d4, d5); - int32x8 e5 = _mm256_unpackhi_epi32(d4, d5); - int32x8 e6 = _mm256_unpacklo_epi32(d6, d7); - int32x8 e7 = _mm256_unpackhi_epi32(d6, d7); - - int32x8 f0 = _mm256_unpacklo_epi64(e0, e2); - int32x8 f1 = _mm256_unpacklo_epi64(e1, e3); - int32x8 f2 = _mm256_unpackhi_epi64(e0, e2); - int32x8 f3 = _mm256_unpackhi_epi64(e1, e3); - int32x8 f4 = _mm256_unpacklo_epi64(e4, e6); - int32x8 f5 = _mm256_unpacklo_epi64(e5, e7); - int32x8 f6 = _mm256_unpackhi_epi64(e4, e6); - int32x8 f7 = _mm256_unpackhi_epi64(e5, e7); - - int32x8 g0 = _mm256_permute2x128_si256(f0, f4, 0x20); - int32x8 g1 = _mm256_permute2x128_si256(f2, f6, 0x20); - int32x8 g2 = _mm256_permute2x128_si256(f1, f5, 0x20); - int32x8 g3 = _mm256_permute2x128_si256(f3, f7, 0x20); - int32x8 g4 = _mm256_permute2x128_si256(f0, f4, 0x31); - int32x8 g5 = _mm256_permute2x128_si256(f2, f6, 0x31); - int32x8 g6 = _mm256_permute2x128_si256(f1, f5, 0x31); - int32x8 g7 = _mm256_permute2x128_si256(f3, f7, 0x31); - - int32x8_store(&x[i], g0); - int32x8_store(&x[i + 8], g1); - int32x8_store(&x[i + 16], g2); - int32x8_store(&x[i + 24], g3); - int32x8_store(&x[i + 32], g4); - int32x8_store(&x[i + 40], g5); - int32x8_store(&x[i + 48], g6); - int32x8_store(&x[i + 56], g7); - } - - q = n >> 4; - while (q >= 128 || q == 32) { - q >>= 2; - for (j = 0; j < n; j += 8 * q) { - for (i = j; i < j + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8 x4 = int32x8_load(&x[i + 4 * q]); - int32x8 x5 = int32x8_load(&x[i + 5 * q]); - int32x8 x6 = int32x8_load(&x[i + 6 * q]); - int32x8 x7 = int32x8_load(&x[i + 7 * q]); - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - int32x8_store(&x[i + 4 * q], x4); - int32x8_store(&x[i + 5 * q], x5); - int32x8_store(&x[i + 6 * q], x6); - int32x8_store(&x[i + 7 * q], x7); - } - } - q >>= 1; - } - while (q >= 16) { - q >>= 1; - for (j = 0; j < n; j += 4 * q) { - for (i = j; i < j + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - } - } - q >>= 1; - } - if (q == 8) { - for (j = 0; j < n; j += q + q) { - int32x8 x0 = int32x8_load(&x[j]); - int32x8 x1 = int32x8_load(&x[j + q]); - int32x8_MINMAX(x0, x1); - int32x8_store(&x[j], x0); - int32x8_store(&x[j + q], x1); - } - } - - q = n >> 3; - for (i = 0; i < q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8 x4 = int32x8_load(&x[i + 4 * q]); - int32x8 x5 = int32x8_load(&x[i + 5 * q]); - int32x8 x6 = int32x8_load(&x[i + 6 * q]); - int32x8 x7 = int32x8_load(&x[i + 7 * q]); - - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - - int32x8 b0 = _mm256_unpacklo_epi32(x0, x4); /* AE0AE1AE4AE5 */ - int32x8 b1 = _mm256_unpackhi_epi32(x0, x4); /* AE2AE3AE6AE7 */ - int32x8 b2 = _mm256_unpacklo_epi32(x1, x5); /* BF0BF1BF4BF5 */ - int32x8 b3 = _mm256_unpackhi_epi32(x1, x5); /* BF2BF3BF6BF7 */ - int32x8 b4 = _mm256_unpacklo_epi32(x2, x6); /* CG0CG1CG4CG5 */ - int32x8 b5 = _mm256_unpackhi_epi32(x2, x6); /* CG2CG3CG6CG7 */ - int32x8 b6 = _mm256_unpacklo_epi32(x3, x7); /* DH0DH1DH4DH5 */ - int32x8 b7 = _mm256_unpackhi_epi32(x3, x7); /* DH2DH3DH6DH7 */ - - int32x8 c0 = _mm256_unpacklo_epi64(b0, b4); /* AECG0AECG4 */ - int32x8 c1 = _mm256_unpacklo_epi64(b1, b5); /* AECG2AECG6 */ - int32x8 c2 = _mm256_unpackhi_epi64(b0, b4); /* AECG1AECG5 */ - int32x8 c3 = _mm256_unpackhi_epi64(b1, b5); /* AECG3AECG7 */ - int32x8 c4 = _mm256_unpacklo_epi64(b2, b6); /* BFDH0BFDH4 */ - int32x8 c5 = _mm256_unpacklo_epi64(b3, b7); /* BFDH2BFDH6 */ - int32x8 c6 = _mm256_unpackhi_epi64(b2, b6); /* BFDH1BFDH5 */ - int32x8 c7 = _mm256_unpackhi_epi64(b3, b7); /* BFDH3BFDH7 */ - - int32x8 d0 = _mm256_permute2x128_si256(c0, c4, 0x20); /* AECGBFDH0 */ - int32x8 d1 = _mm256_permute2x128_si256(c1, c5, 0x20); /* AECGBFDH2 */ - int32x8 d2 = _mm256_permute2x128_si256(c2, c6, 0x20); /* AECGBFDH1 */ - int32x8 d3 = _mm256_permute2x128_si256(c3, c7, 0x20); /* AECGBFDH3 */ - int32x8 d4 = _mm256_permute2x128_si256(c0, c4, 0x31); /* AECGBFDH4 */ - int32x8 d5 = _mm256_permute2x128_si256(c1, c5, 0x31); /* AECGBFDH6 */ - int32x8 d6 = _mm256_permute2x128_si256(c2, c6, 0x31); /* AECGBFDH5 */ - int32x8 d7 = _mm256_permute2x128_si256(c3, c7, 0x31); /* AECGBFDH7 */ - - if (flagdown) { - d0 ^= mask; - d1 ^= mask; - d2 ^= mask; - d3 ^= mask; - d4 ^= mask; - d5 ^= mask; - d6 ^= mask; - d7 ^= mask; - } - - int32x8_store(&x[i], d0); - int32x8_store(&x[i + q], d4); - int32x8_store(&x[i + 2 * q], d1); - int32x8_store(&x[i + 3 * q], d5); - int32x8_store(&x[i + 4 * q], d2); - int32x8_store(&x[i + 5 * q], d6); - int32x8_store(&x[i + 6 * q], d3); - int32x8_store(&x[i + 7 * q], d7); - } -} - -static void int32_sort(int32 *x, long long n) { - long long q, i, j; - - if (n <= 8) { - if (n == 8) { - int32_MINMAX(&x[0], &x[1]); - int32_MINMAX(&x[1], &x[2]); - int32_MINMAX(&x[2], &x[3]); - int32_MINMAX(&x[3], &x[4]); - int32_MINMAX(&x[4], &x[5]); - int32_MINMAX(&x[5], &x[6]); - int32_MINMAX(&x[6], &x[7]); - } - if (n >= 7) { - int32_MINMAX(&x[0], &x[1]); - int32_MINMAX(&x[1], &x[2]); - int32_MINMAX(&x[2], &x[3]); - int32_MINMAX(&x[3], &x[4]); - int32_MINMAX(&x[4], &x[5]); - int32_MINMAX(&x[5], &x[6]); - } - if (n >= 6) { - int32_MINMAX(&x[0], &x[1]); - int32_MINMAX(&x[1], &x[2]); - int32_MINMAX(&x[2], &x[3]); - int32_MINMAX(&x[3], &x[4]); - int32_MINMAX(&x[4], &x[5]); - } - if (n >= 5) { - int32_MINMAX(&x[0], &x[1]); - int32_MINMAX(&x[1], &x[2]); - int32_MINMAX(&x[2], &x[3]); - int32_MINMAX(&x[3], &x[4]); - } - if (n >= 4) { - int32_MINMAX(&x[0], &x[1]); - int32_MINMAX(&x[1], &x[2]); - int32_MINMAX(&x[2], &x[3]); - } - if (n >= 3) { - int32_MINMAX(&x[0], &x[1]); - int32_MINMAX(&x[1], &x[2]); - } - if (n >= 2) { - int32_MINMAX(&x[0], &x[1]); - } - return; - } - - if (!(n & (n - 1))) { - int32_sort_2power(x, n, 0); - return; - } - - q = 8; - while (q < n - q) { - q += q; - } - /* n > q >= 8 */ - - if (q <= 128) { /* n <= 256 */ - int32x8 y[32]; - for (i = q >> 3; i < q >> 2; ++i) { - y[i] = _mm256_set1_epi32(0x7fffffff); - } - for (i = 0; i < n; ++i) { - ((int32 *) y)[i] = x[i]; - } - int32_sort_2power((int32 *) y, 2 * q, 0); - for (i = 0; i < n; ++i) { - x[i] = ((int32 *) y)[i]; - } - return; - } - - int32_sort_2power(x, q, 1); - int32_sort(x + q, n - q); - - while (q >= 64) { - q >>= 2; - j = int32_threestages(x, n, q); - minmax_vector(x + j, x + j + 4 * q, n - 4 * q - j); - if (j + 4 * q <= n) { - for (i = j; i < j + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - } - j += 4 * q; - } - minmax_vector(x + j, x + j + 2 * q, n - 2 * q - j); - if (j + 2 * q <= n) { - for (i = j; i < j + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8_MINMAX(x0, x1); - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - } - j += 2 * q; - } - minmax_vector(x + j, x + j + q, n - q - j); - q >>= 1; - } - if (q == 32) { - j = 0; - for (; j + 64 <= n; j += 64) { - int32x8 x0 = int32x8_load(&x[j]); - int32x8 x1 = int32x8_load(&x[j + 8]); - int32x8 x2 = int32x8_load(&x[j + 16]); - int32x8 x3 = int32x8_load(&x[j + 24]); - int32x8 x4 = int32x8_load(&x[j + 32]); - int32x8 x5 = int32x8_load(&x[j + 40]); - int32x8 x6 = int32x8_load(&x[j + 48]); - int32x8 x7 = int32x8_load(&x[j + 56]); - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - int32x8 a0 = _mm256_permute2x128_si256(x0, x1, 0x20); - int32x8 a1 = _mm256_permute2x128_si256(x0, x1, 0x31); - int32x8 a2 = _mm256_permute2x128_si256(x2, x3, 0x20); - int32x8 a3 = _mm256_permute2x128_si256(x2, x3, 0x31); - int32x8 a4 = _mm256_permute2x128_si256(x4, x5, 0x20); - int32x8 a5 = _mm256_permute2x128_si256(x4, x5, 0x31); - int32x8 a6 = _mm256_permute2x128_si256(x6, x7, 0x20); - int32x8 a7 = _mm256_permute2x128_si256(x6, x7, 0x31); - int32x8_MINMAX(a0, a1); - int32x8_MINMAX(a2, a3); - int32x8_MINMAX(a4, a5); - int32x8_MINMAX(a6, a7); - int32x8 b0 = _mm256_permute2x128_si256(a0, a1, 0x20); - int32x8 b1 = _mm256_permute2x128_si256(a0, a1, 0x31); - int32x8 b2 = _mm256_permute2x128_si256(a2, a3, 0x20); - int32x8 b3 = _mm256_permute2x128_si256(a2, a3, 0x31); - int32x8 b4 = _mm256_permute2x128_si256(a4, a5, 0x20); - int32x8 b5 = _mm256_permute2x128_si256(a4, a5, 0x31); - int32x8 b6 = _mm256_permute2x128_si256(a6, a7, 0x20); - int32x8 b7 = _mm256_permute2x128_si256(a6, a7, 0x31); - int32x8 c0 = _mm256_unpacklo_epi64(b0, b1); - int32x8 c1 = _mm256_unpackhi_epi64(b0, b1); - int32x8 c2 = _mm256_unpacklo_epi64(b2, b3); - int32x8 c3 = _mm256_unpackhi_epi64(b2, b3); - int32x8 c4 = _mm256_unpacklo_epi64(b4, b5); - int32x8 c5 = _mm256_unpackhi_epi64(b4, b5); - int32x8 c6 = _mm256_unpacklo_epi64(b6, b7); - int32x8 c7 = _mm256_unpackhi_epi64(b6, b7); - int32x8_MINMAX(c0, c1); - int32x8_MINMAX(c2, c3); - int32x8_MINMAX(c4, c5); - int32x8_MINMAX(c6, c7); - int32x8 d0 = _mm256_unpacklo_epi32(c0, c1); - int32x8 d1 = _mm256_unpackhi_epi32(c0, c1); - int32x8 d2 = _mm256_unpacklo_epi32(c2, c3); - int32x8 d3 = _mm256_unpackhi_epi32(c2, c3); - int32x8 d4 = _mm256_unpacklo_epi32(c4, c5); - int32x8 d5 = _mm256_unpackhi_epi32(c4, c5); - int32x8 d6 = _mm256_unpacklo_epi32(c6, c7); - int32x8 d7 = _mm256_unpackhi_epi32(c6, c7); - int32x8 e0 = _mm256_unpacklo_epi64(d0, d1); - int32x8 e1 = _mm256_unpackhi_epi64(d0, d1); - int32x8 e2 = _mm256_unpacklo_epi64(d2, d3); - int32x8 e3 = _mm256_unpackhi_epi64(d2, d3); - int32x8 e4 = _mm256_unpacklo_epi64(d4, d5); - int32x8 e5 = _mm256_unpackhi_epi64(d4, d5); - int32x8 e6 = _mm256_unpacklo_epi64(d6, d7); - int32x8 e7 = _mm256_unpackhi_epi64(d6, d7); - int32x8_MINMAX(e0, e1); - int32x8_MINMAX(e2, e3); - int32x8_MINMAX(e4, e5); - int32x8_MINMAX(e6, e7); - int32x8 f0 = _mm256_unpacklo_epi32(e0, e1); - int32x8 f1 = _mm256_unpackhi_epi32(e0, e1); - int32x8 f2 = _mm256_unpacklo_epi32(e2, e3); - int32x8 f3 = _mm256_unpackhi_epi32(e2, e3); - int32x8 f4 = _mm256_unpacklo_epi32(e4, e5); - int32x8 f5 = _mm256_unpackhi_epi32(e4, e5); - int32x8 f6 = _mm256_unpacklo_epi32(e6, e7); - int32x8 f7 = _mm256_unpackhi_epi32(e6, e7); - int32x8_store(&x[j], f0); - int32x8_store(&x[j + 8], f1); - int32x8_store(&x[j + 16], f2); - int32x8_store(&x[j + 24], f3); - int32x8_store(&x[j + 32], f4); - int32x8_store(&x[j + 40], f5); - int32x8_store(&x[j + 48], f6); - int32x8_store(&x[j + 56], f7); - } - minmax_vector(x + j, x + j + 32, n - 32 - j); - goto continue16; - } - if (q == 16) { - j = 0; -continue16: - for (; j + 32 <= n; j += 32) { - int32x8 x0 = int32x8_load(&x[j]); - int32x8 x1 = int32x8_load(&x[j + 8]); - int32x8 x2 = int32x8_load(&x[j + 16]); - int32x8 x3 = int32x8_load(&x[j + 24]); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8 a0 = _mm256_permute2x128_si256(x0, x1, 0x20); - int32x8 a1 = _mm256_permute2x128_si256(x0, x1, 0x31); - int32x8 a2 = _mm256_permute2x128_si256(x2, x3, 0x20); - int32x8 a3 = _mm256_permute2x128_si256(x2, x3, 0x31); - int32x8_MINMAX(a0, a1); - int32x8_MINMAX(a2, a3); - int32x8 b0 = _mm256_permute2x128_si256(a0, a1, 0x20); - int32x8 b1 = _mm256_permute2x128_si256(a0, a1, 0x31); - int32x8 b2 = _mm256_permute2x128_si256(a2, a3, 0x20); - int32x8 b3 = _mm256_permute2x128_si256(a2, a3, 0x31); - int32x8 c0 = _mm256_unpacklo_epi64(b0, b1); - int32x8 c1 = _mm256_unpackhi_epi64(b0, b1); - int32x8 c2 = _mm256_unpacklo_epi64(b2, b3); - int32x8 c3 = _mm256_unpackhi_epi64(b2, b3); - int32x8_MINMAX(c0, c1); - int32x8_MINMAX(c2, c3); - int32x8 d0 = _mm256_unpacklo_epi32(c0, c1); - int32x8 d1 = _mm256_unpackhi_epi32(c0, c1); - int32x8 d2 = _mm256_unpacklo_epi32(c2, c3); - int32x8 d3 = _mm256_unpackhi_epi32(c2, c3); - int32x8 e0 = _mm256_unpacklo_epi64(d0, d1); - int32x8 e1 = _mm256_unpackhi_epi64(d0, d1); - int32x8 e2 = _mm256_unpacklo_epi64(d2, d3); - int32x8 e3 = _mm256_unpackhi_epi64(d2, d3); - int32x8_MINMAX(e0, e1); - int32x8_MINMAX(e2, e3); - int32x8 f0 = _mm256_unpacklo_epi32(e0, e1); - int32x8 f1 = _mm256_unpackhi_epi32(e0, e1); - int32x8 f2 = _mm256_unpacklo_epi32(e2, e3); - int32x8 f3 = _mm256_unpackhi_epi32(e2, e3); - int32x8_store(&x[j], f0); - int32x8_store(&x[j + 8], f1); - int32x8_store(&x[j + 16], f2); - int32x8_store(&x[j + 24], f3); - } - minmax_vector(x + j, x + j + 16, n - 16 - j); - goto continue8; - } - /* q == 8 */ - j = 0; -continue8: - for (; j + 16 <= n; j += 16) { - int32x8 x0 = int32x8_load(&x[j]); - int32x8 x1 = int32x8_load(&x[j + 8]); - int32x8_MINMAX(x0, x1); - int32x8_store(&x[j], x0); - int32x8_store(&x[j + 8], x1); - int32x8 a0 = _mm256_permute2x128_si256(x0, x1, 0x20); /* x0123y0123 */ - int32x8 a1 = _mm256_permute2x128_si256(x0, x1, 0x31); /* x4567y4567 */ - int32x8_MINMAX(a0, a1); - int32x8 b0 = _mm256_permute2x128_si256(a0, a1, 0x20); /* x01234567 */ - int32x8 b1 = _mm256_permute2x128_si256(a0, a1, 0x31); /* y01234567 */ - int32x8 c0 = _mm256_unpacklo_epi64(b0, b1); /* x01y01x45y45 */ - int32x8 c1 = _mm256_unpackhi_epi64(b0, b1); /* x23y23x67y67 */ - int32x8_MINMAX(c0, c1); - int32x8 d0 = _mm256_unpacklo_epi32(c0, c1); /* x02x13x46x57 */ - int32x8 d1 = _mm256_unpackhi_epi32(c0, c1); /* y02y13y46y57 */ - int32x8 e0 = _mm256_unpacklo_epi64(d0, d1); /* x02y02x46y46 */ - int32x8 e1 = _mm256_unpackhi_epi64(d0, d1); /* x13y13x57y57 */ - int32x8_MINMAX(e0, e1); - int32x8 f0 = _mm256_unpacklo_epi32(e0, e1); /* x01234567 */ - int32x8 f1 = _mm256_unpackhi_epi32(e0, e1); /* y01234567 */ - int32x8_store(&x[j], f0); - int32x8_store(&x[j + 8], f1); - } - minmax_vector(x + j, x + j + 8, n - 8 - j); - if (j + 8 <= n) { - int32_MINMAX(&x[j], &x[j + 4]); - int32_MINMAX(&x[j + 1], &x[j + 5]); - int32_MINMAX(&x[j + 2], &x[j + 6]); - int32_MINMAX(&x[j + 3], &x[j + 7]); - int32_MINMAX(&x[j], &x[j + 2]); - int32_MINMAX(&x[j + 1], &x[j + 3]); - int32_MINMAX(&x[j], &x[j + 1]); - int32_MINMAX(&x[j + 2], &x[j + 3]); - int32_MINMAX(&x[j + 4], &x[j + 6]); - int32_MINMAX(&x[j + 5], &x[j + 7]); - int32_MINMAX(&x[j + 4], &x[j + 5]); - int32_MINMAX(&x[j + 6], &x[j + 7]); - j += 8; - } - minmax_vector(x + j, x + j + 4, n - 4 - j); - if (j + 4 <= n) { - int32_MINMAX(&x[j], &x[j + 2]); - int32_MINMAX(&x[j + 1], &x[j + 3]); - int32_MINMAX(&x[j], &x[j + 1]); - int32_MINMAX(&x[j + 2], &x[j + 3]); - j += 4; - } - if (j + 3 <= n) { - int32_MINMAX(&x[j], &x[j + 2]); - } - if (j + 2 <= n) { - int32_MINMAX(&x[j], &x[j + 1]); - } -} - -void PQCLEAN_NTRULPR653_AVX2_crypto_sort_int32(void *array, long long n) { - int32_sort(array, n); -} diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_sort_int32.h b/src/kem/ntru_prime/ntrulpr653/avx2/crypto_sort_int32.h deleted file mode 100644 index e68488b3..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_sort_int32.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef PQCLEAN_NTRULPR653_AVX2_CRYPTO_SORT_INT32_H -#define PQCLEAN_NTRULPR653_AVX2_CRYPTO_SORT_INT32_H - -#include -#define PQCLEAN_NTRULPR653_AVX2_crypto_sort_int32_BYTES 4 - -void PQCLEAN_NTRULPR653_AVX2_crypto_sort_int32(void *array, long long n); -#endif diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_sort_uint32.c b/src/kem/ntru_prime/ntrulpr653/avx2/crypto_sort_uint32.c deleted file mode 100644 index 6532becd..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_sort_uint32.c +++ /dev/null @@ -1,18 +0,0 @@ -#include "crypto_sort_int32.h" -#include "crypto_sort_uint32.h" - - -/* can save time by vectorizing xor loops */ -/* can save time by integrating xor loops with int32_sort */ - -void PQCLEAN_NTRULPR653_AVX2_crypto_sort_uint32(void *array, long long n) { - uint32_t *x = array; - long long j; - for (j = 0; j < n; ++j) { - x[j] ^= 0x80000000; - } - PQCLEAN_NTRULPR653_AVX2_crypto_sort_int32((int32_t *)array, n); - for (j = 0; j < n; ++j) { - x[j] ^= 0x80000000; - } -} diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_sort_uint32.h b/src/kem/ntru_prime/ntrulpr653/avx2/crypto_sort_uint32.h deleted file mode 100644 index 81a4adb7..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_sort_uint32.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef PQCLEAN_NTRULPR653_AVX2_CRYPTO_SORT_UINT32_H -#define PQCLEAN_NTRULPR653_AVX2_CRYPTO_SORT_UINT32_H - -#include -#define PQCLEAN_NTRULPR653_AVX2_crypto_sort_uint32_BYTES 4 - -void PQCLEAN_NTRULPR653_AVX2_crypto_sort_uint32(void *array, long long n); -#endif diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_stream_aes256ctr.c b/src/kem/ntru_prime/ntrulpr653/avx2/crypto_stream_aes256ctr.c deleted file mode 100644 index 7932691b..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_stream_aes256ctr.c +++ /dev/null @@ -1,15 +0,0 @@ -#include "crypto_stream_aes256ctr.h" - - -int PQCLEAN_NTRULPR653_AVX2_crypto_stream_aes256ctr( - uint8_t *out, - size_t outlen, - const uint8_t nonce[AESCTR_NONCEBYTES], - const uint8_t key[AES256_KEYBYTES]) { - - aes256ctx state; - aes256_ctr_keyexp(&state, key); - aes256_ctr(out, outlen, nonce, &state); - aes256_ctx_release(&state); - return 0; -} diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_stream_aes256ctr.h b/src/kem/ntru_prime/ntrulpr653/avx2/crypto_stream_aes256ctr.h deleted file mode 100644 index d7e653ff..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_stream_aes256ctr.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef PQCLEAN_NTRULPR653_AVX2_CRYPTO_STREAM_AES256CTR_H -#define PQCLEAN_NTRULPR653_AVX2_CRYPTO_STREAM_AES256CTR_H -#include "aes.h" -#include -#include - - - -int PQCLEAN_NTRULPR653_AVX2_crypto_stream_aes256ctr( - uint8_t *out, - size_t outlen, - const uint8_t nonce[AESCTR_NONCEBYTES], - const uint8_t key[AES256_KEYBYTES]); - -#endif diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_verify_1025.c b/src/kem/ntru_prime/ntrulpr653/avx2/crypto_verify_1025.c deleted file mode 100644 index 33861c45..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_verify_1025.c +++ /dev/null @@ -1,36 +0,0 @@ -#include "crypto_verify_1025.h" -#include - -int PQCLEAN_NTRULPR653_AVX2_crypto_verify_1025(const unsigned char *x, const unsigned char *y) { - __m256i diff = _mm256_set1_epi8(0); - unsigned int differentbits = 0; - int i = PQCLEAN_NTRULPR653_AVX2_crypto_verify_1025_BYTES; - - i -= 32; - for (;;) { - do { - __m256i x0 = _mm256_loadu_si256((__m256i *) x); - __m256i y0 = _mm256_loadu_si256((__m256i *) y); - diff |= x0 ^ y0; - i -= 32; - x += 32; - y += 32; - } while (i >= 0); - if (i <= -32) { - break; - } - x += i; - y += i; - } - - diff |= _mm256_srli_epi16(diff, 8); - diff |= _mm256_srli_epi32(diff, 16); - diff |= _mm256_srli_epi64(diff, 32); - - differentbits = (unsigned int) _mm256_extract_epi8(diff, 0); - differentbits |= (unsigned int) _mm256_extract_epi8(diff, 8); - differentbits |= (unsigned int) _mm256_extract_epi8(diff, 16); - differentbits |= (unsigned int) _mm256_extract_epi8(diff, 24); - - return (int) (1 & ((differentbits - 1) >> 8)) - 1; -} diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_verify_1025.h b/src/kem/ntru_prime/ntrulpr653/avx2/crypto_verify_1025.h deleted file mode 100644 index b3a4d7bf..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/crypto_verify_1025.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef PQCLEAN_NTRULPR653_AVX2_CRYPTO_VERIFY_1025_H -#define PQCLEAN_NTRULPR653_AVX2_CRYPTO_VERIFY_1025_H - -#include -#define PQCLEAN_NTRULPR653_AVX2_crypto_verify_1025_BYTES 1025 - -int PQCLEAN_NTRULPR653_AVX2_crypto_verify_1025(const unsigned char *x, const unsigned char *y); -#endif diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/kem.c b/src/kem/ntru_prime/ntrulpr653/avx2/kem.c deleted file mode 100644 index b30045a5..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/kem.c +++ /dev/null @@ -1,287 +0,0 @@ -#include "api.h" -#include "crypto_sort_uint32.h" -#include "crypto_stream_aes256ctr.h" -#include "params.h" -#include "randombytes.h" -#include "sha2.h" - - - -#define int8 int8_t -#define int16 int16_t -#define int32 int32_t -#define uint16 uint16_t -#define uint32 uint32_t -#define uint64 uint64_t - -/* ----- masks */ - -/* return -1 if x<0; otherwise return 0 */ -static int int16_negative_mask(int16 x) { - uint16 u = (uint16) x; - u >>= 15; - return -(int) u; - /* alternative with gcc -fwrapv: */ - /* x>>15 compiles to CPU's arithmetic right shift */ -} - -/* ----- arithmetic mod 3 */ - -typedef int8 small; -/* F3 is always represented as -1,0,1 */ - -/* ----- arithmetic mod q */ - -#define q12 ((q-1)/2) -typedef int16 Fq; - -/* works for -14000000 < x < 14000000 if q in 4591, 4621, 5167 */ -/* assumes twos complement; use, e.g., gcc -fwrapv */ -static Fq Fq_freeze(int32 x) { - x -= (int32) (q * ((q18 * x) >> 18)); - x -= (int32) (q * ((q27 * x + 67108864) >> 27)); - return (Fq) x; -} - -/* works for all uint32 x */ -static Fq Fq_bigfreeze(uint32 x) { - x -= (uint32) (q * ((x * (uint64)q31) >> 31)); - x -= (uint32) (q * ((x * (uint64)q31) >> 31)); - x -= q; - x += (~(x >> 31) + 1) & (uint32)q; - return (Fq) x; -} - -/* ----- Top and Right */ - -static int8 Top(Fq C) { - return (int8) ((tau1 * (int32)(C + tau0) + 16384) >> 15); -} - -static Fq Right(int8 T) { - return Fq_freeze(tau3 * (int32)T - tau2); -} - -/* ----- polynomials mod q */ - -/* h = h*g in the ring Rq */ -static void Rq_mult_small(Fq *h, const small *g) { - crypto_encode_pxint16((unsigned char *) h, h); - crypto_core_mult((unsigned char *) h, (const unsigned char *) h, (const unsigned char *) g); - crypto_decode_pxint16(h, (const unsigned char *) h); -} - -/* ----- sorting to generate short polynomial */ - -static void Short_fromlist(small *out, const uint32 *in) { - uint32 L[ppadsort]; - int i; - - for (i = 0; i < w; ++i) { - L[i] = in[i] & (uint32) - 2; - } - for (i = w; i < p; ++i) { - L[i] = (in[i] & (uint32) - 3) | 1; - } - for (i = p; i < ppadsort; ++i) { - L[i] = 0xffffffff; - } - PQCLEAN_NTRULPR653_AVX2_crypto_sort_uint32(L, ppadsort); - for (i = 0; i < p; ++i) { - out[i] = (small) ((L[i] & 3) - 1); - } -} - -/* ----- underlying hash function */ - -#define Hash_bytes 32 - -static void Hash(unsigned char *out, const unsigned char *in, int inlen) { - unsigned char h[64]; - int i; - sha512(h, in, (size_t) inlen); - for (i = 0; i < 32; ++i) { - out[i] = h[i]; - } -} - -/* ----- higher-level randomness */ - -static void Short_random(small *out) { - uint32 L[p]; - - randombytes((unsigned char *) L, sizeof L); - crypto_decode_pxint32(L, (unsigned char *) L); - Short_fromlist(out, L); -} - -/* ----- Inputs, Generator */ - -typedef int8 Inputs[I]; /* passed by reference */ - -static const unsigned char aes_nonce[16] = {0}; - -/* G = Generator(pk) */ -static void Generator(Fq *G, const unsigned char *pk) { - uint32 L[p]; - int i; - - PQCLEAN_NTRULPR653_AVX2_crypto_stream_aes256ctr((unsigned char *) L, 4 * p, aes_nonce, pk); - crypto_decode_pxint32(L, (unsigned char *) L); - for (i = 0; i < p; ++i) { - G[i] = Fq_bigfreeze(L[i]) - q12; - } -} - -/* ----- NTRU LPRime */ - -#define Seeds_bytes 32 -#define Ciphertexts_bytes (Rounded_bytes+Top_bytes) -#define SecretKeys_bytes Small_bytes -#define PublicKeys_bytes (Seeds_bytes+Rounded_bytes) -#define Confirm_bytes 32 - -/* c,r_enc[1:] = Hide(r,pk,cache); cache is Hash4(pk) */ -static void Hide(unsigned char *c, unsigned char *r_enc, const Inputs r, const unsigned char *pk, const unsigned char *cache) { - small b[p]; - int i; - - Inputs_encode(r_enc + 1, r); - { - unsigned char h[Hash_bytes]; - uint32 L[p]; - { - unsigned char s[1 + Inputs_bytes]; - Inputs_encode(s + 1, r); - s[0] = 5; - Hash(h, s, sizeof s); - } - PQCLEAN_NTRULPR653_AVX2_crypto_stream_aes256ctr((unsigned char *) L, 4 * p, aes_nonce, h); - crypto_decode_pxint32(L, (unsigned char *) L); - Short_fromlist(b, L); - } - { - Fq bG[p]; - Generator(bG, pk); - Rq_mult_small(bG, b); - Round_and_encode(c, bG); - c += Rounded_bytes; - } - { - Fq bA[p]; - int8 T[I]; - Rounded_decode(bA, pk + Seeds_bytes); - Rq_mult_small(bA, b); - for (i = 0; i < I; ++i) { - T[i] = Top(Fq_freeze(bA[i] + r[i] * q12)); - } - Top_encode(c, T); - c += Top_bytes; - } - { - unsigned char x[1 + Inputs_bytes + Hash_bytes]; - for (i = 0; i < Inputs_bytes; ++i) { - x[1 + i] = r_enc[1 + i]; - } - for (i = 0; i < Hash_bytes; ++i) { - x[1 + Inputs_bytes + i] = cache[i]; - } - x[0] = 2; - Hash(c, x, sizeof x); - } -} - - -int PQCLEAN_NTRULPR653_AVX2_crypto_kem_keypair(unsigned char *pk, unsigned char *sk) { - Fq aG[p]; - int i; - randombytes(pk, Seeds_bytes); - Generator(aG, pk); - { - small a[p]; - Short_random(a); - Rq_mult_small(aG, a); - Small_encode(sk, a); - } - Round_and_encode(pk + Seeds_bytes, aG); - { - unsigned char sksave = sk[SecretKeys_bytes - 1]; - for (i = 0; i < PublicKeys_bytes; ++i) { - sk[SecretKeys_bytes + i] = pk[i]; - } - sk[SecretKeys_bytes - 1] = 4; - Hash(sk + SecretKeys_bytes + PublicKeys_bytes + Inputs_bytes, sk + SecretKeys_bytes - 1, 1 + PublicKeys_bytes); - sk[SecretKeys_bytes - 1] = sksave; - randombytes(sk + SecretKeys_bytes + PublicKeys_bytes, Inputs_bytes); - } - return 0; -} - -int PQCLEAN_NTRULPR653_AVX2_crypto_kem_enc(unsigned char *c, unsigned char *k, const unsigned char *pk) { - int i; - unsigned char cache[Hash_bytes]; - { - unsigned char y[1 + PublicKeys_bytes]; - for (i = 0; i < PublicKeys_bytes; ++i) { - y[1 + i] = pk[i]; - } - y[0] = 4; - Hash(cache, y, sizeof y); - } - Inputs r; - { - unsigned char s[Inputs_bytes]; - randombytes(s, sizeof s); - Inputs_decode(r, s); - } - { - unsigned char x[1 + Inputs_bytes + Ciphertexts_bytes + Confirm_bytes]; - Hide(c, x, r, pk, cache); - for (i = 0; i < Ciphertexts_bytes + Confirm_bytes; ++i) { - x[1 + Inputs_bytes + i] = c[i]; - } - x[0] = 1; - Hash(k, x, sizeof x); - } - return 0; -} - -int PQCLEAN_NTRULPR653_AVX2_crypto_kem_dec(unsigned char *k, const unsigned char *c, const unsigned char *sk) { - const unsigned char *pk = sk + SecretKeys_bytes; - const unsigned char *rho = pk + PublicKeys_bytes; - const unsigned char *cache = rho + Inputs_bytes; - Inputs r; - int i; - { - Fq aB[p]; - Rounded_decode(aB, c); - { - small a[p]; - Small_decode(a, sk); - Rq_mult_small(aB, a); - } - { - int8 T[I]; - Top_decode(T, c + Rounded_bytes); - for (i = 0; i < I; ++i) { - r[i] = (int8) - int16_negative_mask(Fq_freeze(Right(T[i]) - aB[i] + 4 * w + 1)); - } - } - } - { - unsigned char cnew[Ciphertexts_bytes + Confirm_bytes]; - int mask; - unsigned char x[1 + Inputs_bytes + Ciphertexts_bytes + Confirm_bytes]; - Hide(cnew, x, r, pk, cache); - mask = crypto_verify_clen(c, cnew); - for (i = 0; i < Inputs_bytes; ++i) { - x[1 + i] ^= (unsigned char) (mask & (x[1 + i] ^ rho[i])); - } - for (i = 0; i < Ciphertexts_bytes + Confirm_bytes; ++i) { - x[1 + Inputs_bytes + i] = c[i]; - } - x[0] = (unsigned char) (1 + mask); - Hash(k, x, sizeof x); - } - return 0; -} diff --git a/src/kem/ntru_prime/ntrulpr653/avx2/params.h b/src/kem/ntru_prime/ntrulpr653/avx2/params.h deleted file mode 100644 index b080a993..00000000 --- a/src/kem/ntru_prime/ntrulpr653/avx2/params.h +++ /dev/null @@ -1,63 +0,0 @@ -#ifndef params_H -#define params_H -#include "crypto_core_multsntrup653.h" -#include "crypto_decode_256x16.h" -#include "crypto_decode_256x2.h" -#include "crypto_decode_653x1541.h" -#include "crypto_decode_653x3.h" -#include "crypto_decode_653xint16.h" -#include "crypto_decode_653xint32.h" -#include "crypto_encode_256x16.h" -#include "crypto_encode_256x2.h" -#include "crypto_encode_653x1541.h" -#include "crypto_encode_653x1541round.h" -#include "crypto_encode_653x3.h" -#include "crypto_encode_653xint16.h" -#include "crypto_sort_int32.h" -#include "crypto_sort_uint32.h" -#include "crypto_verify_1025.h" - - -#define p 653 -#define q 4621 -#define w 252 -#define tau0 2175 -#define tau1 113 -#define tau2 2031 -#define tau3 290 -#define I 256 - -#define ppadsort 653 - -#define q18 57 /* round(2^18/q) */ -#define q27 29045 /* round(2^27/q) */ -#define q31 464722 /* floor(2^31/q) */ - -#define crypto_verify_clen PQCLEAN_NTRULPR653_AVX2_crypto_verify_1025 - -#define Rounded_bytes PQCLEAN_NTRULPR653_AVX2_crypto_decode_653x1541_STRBYTES -#define Rounded_decode PQCLEAN_NTRULPR653_AVX2_crypto_decode_653x1541 - -#define Round_and_encode PQCLEAN_NTRULPR653_AVX2_crypto_encode_653x1541round - -#define Small_bytes PQCLEAN_NTRULPR653_AVX2_crypto_encode_653x3_STRBYTES -#define Small_encode PQCLEAN_NTRULPR653_AVX2_crypto_encode_653x3 -#define Small_decode PQCLEAN_NTRULPR653_AVX2_crypto_decode_653x3 - -#define Top_bytes PQCLEAN_NTRULPR653_AVX2_crypto_encode_256x16_STRBYTES -#define Top_encode PQCLEAN_NTRULPR653_AVX2_crypto_encode_256x16 -#define Top_decode PQCLEAN_NTRULPR653_AVX2_crypto_decode_256x16 - -#define Inputs_bytes PQCLEAN_NTRULPR653_AVX2_crypto_encode_256x2_STRBYTES -#define Inputs_encode PQCLEAN_NTRULPR653_AVX2_crypto_encode_256x2 -#define Inputs_decode PQCLEAN_NTRULPR653_AVX2_crypto_decode_256x2 - -#define crypto_decode_pxint32 PQCLEAN_NTRULPR653_AVX2_crypto_decode_653xint32 - -#define crypto_decode_pxint16 PQCLEAN_NTRULPR653_AVX2_crypto_decode_653xint16 - -#define crypto_encode_pxint16 PQCLEAN_NTRULPR653_AVX2_crypto_encode_653xint16 - -#define crypto_core_mult PQCLEAN_NTRULPR653_AVX2_crypto_core_multsntrup653 - -#endif diff --git a/src/kem/ntru_prime/ntrulpr653/clean/CMakeLists.txt b/src/kem/ntru_prime/ntrulpr653/clean/CMakeLists.txt deleted file mode 100644 index 7d802991..00000000 --- a/src/kem/ntru_prime/ntrulpr653/clean/CMakeLists.txt +++ /dev/null @@ -1,24 +0,0 @@ -set( - SRC_CLEAN_NTRULPR653 - crypto_core_multsntrup653.c - crypto_decode_256x16.c - crypto_decode_256x2.c - crypto_decode_653x1541.c - crypto_decode_653x3.c - crypto_decode_653xint16.c - crypto_decode_653xint32.c - crypto_encode_256x16.c - crypto_encode_256x2.c - crypto_encode_653x1541.c - crypto_encode_653x1541round.c - crypto_encode_653x3.c - crypto_encode_653xint16.c - crypto_sort_int32.c - crypto_sort_uint32.c - crypto_stream_aes256ctr.c - crypto_verify_1025.c - kem.c -) - -define_kem_alg(ntrulpr653_clean - PQCLEAN_NTRULPR653_CLEAN "${SRC_CLEAN_NTRULPR653}" "${CMAKE_CURRENT_SOURCE_DIR}") diff --git a/src/kem/ntru_prime/ntrulpr653/clean/api.h b/src/kem/ntru_prime/ntrulpr653/clean/api.h deleted file mode 100644 index ca280411..00000000 --- a/src/kem/ntru_prime/ntrulpr653/clean/api.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef PQCLEAN_NTRULPR653_CLEAN_API_H -#define PQCLEAN_NTRULPR653_CLEAN_API_H - - - -#define PQCLEAN_NTRULPR653_CLEAN_CRYPTO_ALGNAME "ntrulpr653" - -#define PQCLEAN_NTRULPR653_CLEAN_CRYPTO_SECRETKEYBYTES 1125 -#define PQCLEAN_NTRULPR653_CLEAN_CRYPTO_PUBLICKEYBYTES 897 -#define PQCLEAN_NTRULPR653_CLEAN_CRYPTO_CIPHERTEXTBYTES 1025 -#define PQCLEAN_NTRULPR653_CLEAN_CRYPTO_BYTES 32 - -int PQCLEAN_NTRULPR653_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); -int PQCLEAN_NTRULPR653_CLEAN_crypto_kem_enc(unsigned char *c, unsigned char *k, const unsigned char *pk); -int PQCLEAN_NTRULPR653_CLEAN_crypto_kem_dec(unsigned char *k, const unsigned char *c, const unsigned char *sk); -#endif diff --git a/src/kem/ntru_prime/ntrulpr653/clean/crypto_core_multsntrup653.c b/src/kem/ntru_prime/ntrulpr653/clean/crypto_core_multsntrup653.c deleted file mode 100644 index 77d270cf..00000000 --- a/src/kem/ntru_prime/ntrulpr653/clean/crypto_core_multsntrup653.c +++ /dev/null @@ -1,60 +0,0 @@ -#include "crypto_core_multsntrup653.h" -#include "params.h" - - -#define int8 int8_t -#define int16 int16_t -#define int32 int32_t -typedef int8 small; - -typedef int16 Fq; -/* always represented as -(q-1)/2...(q-1)/2 */ - -/* works for -14000000 < x < 14000000 if q in 4591, 4621, 5167 */ -static Fq Fq_freeze(int32 x) { - x -= q * ((q18 * x) >> 18); - x -= q * ((q27 * x + 67108864) >> 27); - return (Fq) x; -} - -int PQCLEAN_NTRULPR653_CLEAN_crypto_core_multsntrup653(unsigned char *outbytes, const unsigned char *inbytes, const unsigned char *kbytes) { - Fq f[p]; - small g[p]; - Fq fg[p + p - 1]; - int32 result; - int i, j; - - crypto_decode_pxint16(f, inbytes); - for (i = 0; i < p; ++i) { - f[i] = Fq_freeze(f[i]); - } - - for (i = 0; i < p; ++i) { - small gi = (small) kbytes[i]; - small gi0 = gi & 1; - g[i] = (small) (gi0 - (gi & (gi0 << 1))); - } - - for (i = 0; i < p; ++i) { - result = 0; - for (j = 0; j <= i; ++j) { - result += f[j] * (int32)g[i - j]; - } - fg[i] = Fq_freeze(result); - } - for (i = p; i < p + p - 1; ++i) { - result = 0; - for (j = i - p + 1; j < p; ++j) { - result += f[j] * (int32)g[i - j]; - } - fg[i] = Fq_freeze(result); - } - - for (i = p + p - 2; i >= p; --i) { - fg[i - p] = Fq_freeze(fg[i - p] + fg[i]); - fg[i - p + 1] = Fq_freeze(fg[i - p + 1] + fg[i]); - } - - crypto_encode_pxint16(outbytes, fg); - return 0; -} diff --git a/src/kem/ntru_prime/ntrulpr653/clean/crypto_core_multsntrup653.h b/src/kem/ntru_prime/ntrulpr653/clean/crypto_core_multsntrup653.h deleted file mode 100644 index f653a5a9..00000000 --- a/src/kem/ntru_prime/ntrulpr653/clean/crypto_core_multsntrup653.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef PQCLEAN_NTRULPR653_CLEAN_CRYPTO_CORE_MULTSNTRUP653_H -#define PQCLEAN_NTRULPR653_CLEAN_CRYPTO_CORE_MULTSNTRUP653_H - -#include -#define PQCLEAN_NTRULPR653_CLEAN_crypto_core_multsntrup653_OUTPUTBYTES 1306 -#define PQCLEAN_NTRULPR653_CLEAN_crypto_core_multsntrup653_INPUTBYTES 1306 -#define PQCLEAN_NTRULPR653_CLEAN_crypto_core_multsntrup653_KEYBYTES 653 -#define PQCLEAN_NTRULPR653_CLEAN_crypto_core_multsntrup653_CONSTBYTES 0 - -int PQCLEAN_NTRULPR653_CLEAN_crypto_core_multsntrup653(unsigned char *outbytes, const unsigned char *inbytes, const unsigned char *kbytes); -#endif diff --git a/src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_256x16.c b/src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_256x16.c deleted file mode 100644 index 20460924..00000000 --- a/src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_256x16.c +++ /dev/null @@ -1,11 +0,0 @@ -#include "crypto_decode_256x16.h" - - -void PQCLEAN_NTRULPR653_CLEAN_crypto_decode_256x16(void *v, const unsigned char *s) { - unsigned char *T = v; - int i; - for (i = 0; i < 128; ++i) { - T[2 * i] = s[i] & 15; - T[2 * i + 1] = s[i] >> 4; - } -} diff --git a/src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_256x16.h b/src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_256x16.h deleted file mode 100644 index 2f5376dc..00000000 --- a/src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_256x16.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR653_CLEAN_CRYPTO_DECODE_256X16_H -#define PQCLEAN_NTRULPR653_CLEAN_CRYPTO_DECODE_256X16_H - -#include -#define PQCLEAN_NTRULPR653_CLEAN_crypto_decode_256x16_STRBYTES 128 -#define PQCLEAN_NTRULPR653_CLEAN_crypto_decode_256x16_ITEMS 256 -#define PQCLEAN_NTRULPR653_CLEAN_crypto_decode_256x16_ITEMBYTES 1 - -void PQCLEAN_NTRULPR653_CLEAN_crypto_decode_256x16(void *v, const unsigned char *s); -#endif diff --git a/src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_256x2.c b/src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_256x2.c deleted file mode 100644 index 50a0bfeb..00000000 --- a/src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_256x2.c +++ /dev/null @@ -1,10 +0,0 @@ -#include "crypto_decode_256x2.h" - - -void PQCLEAN_NTRULPR653_CLEAN_crypto_decode_256x2(void *v, const unsigned char *s) { - unsigned char *r = v; - int i; - for (i = 0; i < 256; ++i) { - r[i] = 1 & (s[i >> 3] >> (i & 7)); - } -} diff --git a/src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_256x2.h b/src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_256x2.h deleted file mode 100644 index 7e1f0bd8..00000000 --- a/src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_256x2.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR653_CLEAN_CRYPTO_DECODE_256X2_H -#define PQCLEAN_NTRULPR653_CLEAN_CRYPTO_DECODE_256X2_H - -#include -#define PQCLEAN_NTRULPR653_CLEAN_crypto_decode_256x2_STRBYTES 32 -#define PQCLEAN_NTRULPR653_CLEAN_crypto_decode_256x2_ITEMS 256 -#define PQCLEAN_NTRULPR653_CLEAN_crypto_decode_256x2_ITEMBYTES 1 - -void PQCLEAN_NTRULPR653_CLEAN_crypto_decode_256x2(void *v, const unsigned char *s); -#endif diff --git a/src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_653x1541.c b/src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_653x1541.c deleted file mode 100644 index cbe3372f..00000000 --- a/src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_653x1541.c +++ /dev/null @@ -1,200 +0,0 @@ -#include "crypto_decode_653x1541.h" - -/* auto-generated; do not edit */ - -#define int16 int16_t -#define uint16 uint16_t -#define uint32 uint32_t -#define uint64 uint64_t - -/* -CPU division instruction typically takes time depending on x. -This software is designed to take time independent of x. -Time still varies depending on m; user must ensure that m is constant. -Time also varies on CPUs where multiplication is variable-time. -There could be more CPU issues. -There could also be compiler issues. -*/ - -static void uint32_divmod_uint14(uint32 *q, uint16 *r, uint32 x, uint16 m) { - uint32 v = 0x80000000; - uint32 qpart; - uint32 mask; - - v /= m; - - /* caller guarantees m > 0 */ - /* caller guarantees m < 16384 */ - /* vm <= 2^31 <= vm+m-1 */ - /* xvm <= 2^31 x <= xvm+x(m-1) */ - - *q = 0; - - qpart = (uint32) ((x * (uint64)v) >> 31); - /* 2^31 qpart <= xv <= 2^31 qpart + 2^31-1 */ - /* 2^31 qpart m <= xvm <= 2^31 qpart m + (2^31-1)m */ - /* 2^31 qpart m <= 2^31 x <= 2^31 qpart m + (2^31-1)m + x(m-1) */ - /* 0 <= 2^31 newx <= (2^31-1)m + x(m-1) */ - /* 0 <= newx <= (1-1/2^31)m + x(m-1)/2^31 */ - /* 0 <= newx <= (1-1/2^31)(2^14-1) + (2^32-1)((2^14-1)-1)/2^31 */ - - x -= qpart * m; - *q += qpart; - /* x <= 49146 */ - - qpart = (uint32) ((x * (uint64)v) >> 31); - /* 0 <= newx <= (1-1/2^31)m + x(m-1)/2^31 */ - /* 0 <= newx <= m + 49146(2^14-1)/2^31 */ - /* 0 <= newx <= m + 0.4 */ - /* 0 <= newx <= m */ - - x -= qpart * m; - *q += qpart; - /* x <= m */ - - x -= m; - *q += 1; - mask = (~(x >> 31) + 1); - x += mask & (uint32)m; - *q += mask; - /* x < m */ - - *r = (uint16) x; -} - -static uint16 uint32_mod_uint14(uint32 x, uint16 m) { - uint32 q; - uint16 r; - uint32_divmod_uint14(&q, &r, x, m); - return r; -} - -void PQCLEAN_NTRULPR653_CLEAN_crypto_decode_653x1541(void *v, const unsigned char *s) { - int16 *R0 = v; - uint16 R1[327], R2[164], R3[82], R4[41], R5[21], R6[11], R7[6], R8[3], R9[2], R10[1]; - long long i; - uint16 r0; - uint32 r1, r2; - - s += PQCLEAN_NTRULPR653_CLEAN_crypto_decode_653x1541_STRBYTES; - r1 = 0; - r1 = (r1 << 8) | *--s; - r1 = (r1 << 8) | *--s; - r1 = uint32_mod_uint14(r1, 2608); /* needed only for invalid inputs */ - R10[0] = (uint16) r1; - - r2 = R10[0]; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 71); - R9[0] = r0; - r1 = uint32_mod_uint14(r1, 9402); /* needed only for invalid inputs */ - R9[1] = (uint16) r1; - - R8[2] = R9[1]; - r2 = R9[0]; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 134); - R8[0] = r0; - r1 = uint32_mod_uint14(r1, 134); /* needed only for invalid inputs */ - R8[1] = (uint16) r1; - - r2 = R8[2]; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 2953); - R7[4] = r0; - r1 = uint32_mod_uint14(r1, 815); /* needed only for invalid inputs */ - R7[5] = (uint16) r1; - for (i = 1; i >= 0; --i) { - r2 = R8[i]; - r2 = (r2 << 8) | *--s; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 2953); - R7[2 * i] = r0; - r1 = uint32_mod_uint14(r1, 2953); /* needed only for invalid inputs */ - R7[2 * i + 1] = (uint16) r1; - } - - R6[10] = R7[5]; - for (i = 4; i >= 0; --i) { - r2 = R7[i]; - r2 = (r2 << 8) | *--s; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 13910); - R6[2 * i] = r0; - r1 = uint32_mod_uint14(r1, 13910); /* needed only for invalid inputs */ - R6[2 * i + 1] = (uint16) r1; - } - - R5[20] = R6[10]; - for (i = 9; i >= 0; --i) { - r2 = R6[i]; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 1887); - R5[2 * i] = r0; - r1 = uint32_mod_uint14(r1, 1887); /* needed only for invalid inputs */ - R5[2 * i + 1] = (uint16) r1; - } - - R4[40] = R5[20]; - for (i = 19; i >= 0; --i) { - r2 = R5[i]; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 695); - R4[2 * i] = r0; - r1 = uint32_mod_uint14(r1, 695); /* needed only for invalid inputs */ - R4[2 * i + 1] = (uint16) r1; - } - - r2 = R4[40]; - r2 = (r2 << 8) | *--s; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 6745); - R3[80] = r0; - r1 = uint32_mod_uint14(r1, 7910); /* needed only for invalid inputs */ - R3[81] = (uint16) r1; - for (i = 39; i >= 0; --i) { - r2 = R4[i]; - r2 = (r2 << 8) | *--s; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 6745); - R3[2 * i] = r0; - r1 = uint32_mod_uint14(r1, 6745); /* needed only for invalid inputs */ - R3[2 * i + 1] = (uint16) r1; - } - - r2 = R3[81]; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 1314); - R2[162] = r0; - r1 = uint32_mod_uint14(r1, 1541); /* needed only for invalid inputs */ - R2[163] = (uint16) r1; - for (i = 80; i >= 0; --i) { - r2 = R3[i]; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 1314); - R2[2 * i] = r0; - r1 = uint32_mod_uint14(r1, 1314); /* needed only for invalid inputs */ - R2[2 * i + 1] = (uint16) r1; - } - - R1[326] = R2[163]; - for (i = 162; i >= 0; --i) { - r2 = R2[i]; - r2 = (r2 << 8) | *--s; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 9277); - R1[2 * i] = r0; - r1 = uint32_mod_uint14(r1, 9277); /* needed only for invalid inputs */ - R1[2 * i + 1] = (uint16) r1; - } - - R0[652] = (int16) (3 * R1[326] - 2310); - for (i = 325; i >= 0; --i) { - r2 = R1[i]; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 1541); - R0[2 * i] = (int16) (3 * r0 - 2310); - r1 = uint32_mod_uint14(r1, 1541); /* needed only for invalid inputs */ - R0[2 * i + 1] = (int16) (3 * r1 - 2310); - } -} diff --git a/src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_653x1541.h b/src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_653x1541.h deleted file mode 100644 index 99b43d6b..00000000 --- a/src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_653x1541.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR653_CLEAN_CRYPTO_DECODE_653X1541_H -#define PQCLEAN_NTRULPR653_CLEAN_CRYPTO_DECODE_653X1541_H - -#include -#define PQCLEAN_NTRULPR653_CLEAN_crypto_decode_653x1541_STRBYTES 865 -#define PQCLEAN_NTRULPR653_CLEAN_crypto_decode_653x1541_ITEMS 653 -#define PQCLEAN_NTRULPR653_CLEAN_crypto_decode_653x1541_ITEMBYTES 2 - -void PQCLEAN_NTRULPR653_CLEAN_crypto_decode_653x1541(void *v, const unsigned char *s); -#endif diff --git a/src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_653x3.c b/src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_653x3.c deleted file mode 100644 index 3f8204c3..00000000 --- a/src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_653x3.c +++ /dev/null @@ -1,24 +0,0 @@ -#include "crypto_decode_653x3.h" - -#define uint8 uint8_t - -#define p 653 - -void PQCLEAN_NTRULPR653_CLEAN_crypto_decode_653x3(void *v, const unsigned char *s) { - uint8 *f = v; - uint8 x; - int i; - - for (i = 0; i < p / 4; ++i) { - x = *s++; - *f++ = (uint8) ((x & 3) - 1); - x >>= 2; - *f++ = (uint8) ((x & 3) - 1); - x >>= 2; - *f++ = (uint8) ((x & 3) - 1); - x >>= 2; - *f++ = (uint8) ((x & 3) - 1); - } - x = *s++; - *f++ = (uint8) ((x & 3) - 1); -} diff --git a/src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_653x3.h b/src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_653x3.h deleted file mode 100644 index 8984a459..00000000 --- a/src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_653x3.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR653_CLEAN_CRYPTO_DECODE_653X3_H -#define PQCLEAN_NTRULPR653_CLEAN_CRYPTO_DECODE_653X3_H - -#include -#define PQCLEAN_NTRULPR653_CLEAN_crypto_decode_653x3_STRBYTES 164 -#define PQCLEAN_NTRULPR653_CLEAN_crypto_decode_653x3_ITEMS 653 -#define PQCLEAN_NTRULPR653_CLEAN_crypto_decode_653x3_ITEMBYTES 1 - -void PQCLEAN_NTRULPR653_CLEAN_crypto_decode_653x3(void *v, const unsigned char *s); -#endif diff --git a/src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_653xint16.c b/src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_653xint16.c deleted file mode 100644 index 22634823..00000000 --- a/src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_653xint16.c +++ /dev/null @@ -1,15 +0,0 @@ -#include "crypto_decode_653xint16.h" - - -void PQCLEAN_NTRULPR653_CLEAN_crypto_decode_653xint16(void *v, const unsigned char *s) { - uint16_t *x = v; - int i; - - for (i = 0; i < 653; ++i) { - uint16_t u0 = s[0]; - uint16_t u1 = s[1]; - *x = (uint16_t) (u0 | (u1 << 8)); - x += 1; - s += 2; - } -} diff --git a/src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_653xint16.h b/src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_653xint16.h deleted file mode 100644 index 409c3053..00000000 --- a/src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_653xint16.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR653_CLEAN_CRYPTO_DECODE_653XINT16_H -#define PQCLEAN_NTRULPR653_CLEAN_CRYPTO_DECODE_653XINT16_H - -#include -#define PQCLEAN_NTRULPR653_CLEAN_crypto_decode_653xint16_STRBYTES 1306 -#define PQCLEAN_NTRULPR653_CLEAN_crypto_decode_653xint16_ITEMBYTES 2 -#define PQCLEAN_NTRULPR653_CLEAN_crypto_decode_653xint16_ITEMS 653 - -void PQCLEAN_NTRULPR653_CLEAN_crypto_decode_653xint16(void *v, const unsigned char *s); -#endif diff --git a/src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_653xint32.c b/src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_653xint32.c deleted file mode 100644 index 29a21249..00000000 --- a/src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_653xint32.c +++ /dev/null @@ -1,20 +0,0 @@ -#include "crypto_decode_653xint32.h" - - -void PQCLEAN_NTRULPR653_CLEAN_crypto_decode_653xint32(void *v, const unsigned char *s) { - uint32_t *x = v; - int i; - - for (i = 0; i < 653; ++i) { - uint32_t u0 = s[0]; - uint32_t u1 = s[1]; - uint32_t u2 = s[2]; - uint32_t u3 = s[3]; - u1 <<= 8; - u2 <<= 16; - u3 <<= 24; - *x = u0 | u1 | u2 | u3; - x += 1; - s += 4; - } -} diff --git a/src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_653xint32.h b/src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_653xint32.h deleted file mode 100644 index 273c304c..00000000 --- a/src/kem/ntru_prime/ntrulpr653/clean/crypto_decode_653xint32.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR653_CLEAN_CRYPTO_DECODE_653XINT32_H -#define PQCLEAN_NTRULPR653_CLEAN_CRYPTO_DECODE_653XINT32_H - -#include -#define PQCLEAN_NTRULPR653_CLEAN_crypto_decode_653xint32_STRBYTES 2612 -#define PQCLEAN_NTRULPR653_CLEAN_crypto_decode_653xint32_ITEMBYTES 4 -#define PQCLEAN_NTRULPR653_CLEAN_crypto_decode_653xint32_ITEMS 653 - -void PQCLEAN_NTRULPR653_CLEAN_crypto_decode_653xint32(void *v, const unsigned char *s); -#endif diff --git a/src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_256x16.c b/src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_256x16.c deleted file mode 100644 index 8f425feb..00000000 --- a/src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_256x16.c +++ /dev/null @@ -1,10 +0,0 @@ -#include "crypto_encode_256x16.h" - - -void PQCLEAN_NTRULPR653_CLEAN_crypto_encode_256x16(unsigned char *s, const void *v) { - const unsigned char *T = v; - int i; - for (i = 0; i < 128; ++i) { - s[i] = (unsigned char) (T[2 * i] + (T[2 * i + 1] << 4)); - } -} diff --git a/src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_256x16.h b/src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_256x16.h deleted file mode 100644 index 6757ca09..00000000 --- a/src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_256x16.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR653_CLEAN_CRYPTO_ENCODE_256X16_H -#define PQCLEAN_NTRULPR653_CLEAN_CRYPTO_ENCODE_256X16_H - -#include -#define PQCLEAN_NTRULPR653_CLEAN_crypto_encode_256x16_STRBYTES 128 -#define PQCLEAN_NTRULPR653_CLEAN_crypto_encode_256x16_ITEMS 256 -#define PQCLEAN_NTRULPR653_CLEAN_crypto_encode_256x16_ITEMBYTES 1 - -void PQCLEAN_NTRULPR653_CLEAN_crypto_encode_256x16(unsigned char *s, const void *v); -#endif diff --git a/src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_256x2.c b/src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_256x2.c deleted file mode 100644 index d09e48af..00000000 --- a/src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_256x2.c +++ /dev/null @@ -1,13 +0,0 @@ -#include "crypto_encode_256x2.h" - - -void PQCLEAN_NTRULPR653_CLEAN_crypto_encode_256x2(unsigned char *s, const void *v) { - const unsigned char *r = v; - int i; - for (i = 0; i < 32; ++i) { - s[i] = 0; - } - for (i = 0; i < 256; ++i) { - s[i >> 3] |= (unsigned char) ((r[i] & 1) << (i & 7)); - } -} diff --git a/src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_256x2.h b/src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_256x2.h deleted file mode 100644 index 155bf29e..00000000 --- a/src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_256x2.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR653_CLEAN_CRYPTO_ENCODE_256X2_H -#define PQCLEAN_NTRULPR653_CLEAN_CRYPTO_ENCODE_256X2_H - -#include -#define PQCLEAN_NTRULPR653_CLEAN_crypto_encode_256x2_STRBYTES 32 -#define PQCLEAN_NTRULPR653_CLEAN_crypto_encode_256x2_ITEMS 256 -#define PQCLEAN_NTRULPR653_CLEAN_crypto_encode_256x2_ITEMBYTES 1 - -void PQCLEAN_NTRULPR653_CLEAN_crypto_encode_256x2(unsigned char *s, const void *v); -#endif diff --git a/src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_653x1541.c b/src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_653x1541.c deleted file mode 100644 index 47f8f5ba..00000000 --- a/src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_653x1541.c +++ /dev/null @@ -1,127 +0,0 @@ -#include "crypto_encode_653x1541.h" - -/* auto-generated; do not edit */ - -#define int16 int16_t -#define uint16 uint16_t -#define uint32 uint32_t - -void PQCLEAN_NTRULPR653_CLEAN_crypto_encode_653x1541(unsigned char *out, const void *v) { - const int16 *R0 = v; - /* XXX: caller could overlap R with input */ - uint16 R[327]; - long i; - uint16 r0, r1; - uint32 r2; - - for (i = 0; i < 326; ++i) { - r0 = (uint16) ((((R0[2 * i] + 2310) & 16383) * 10923) >> 15); - r1 = (uint16) ((((R0[2 * i + 1] + 2310) & 16383) * 10923) >> 15); - r2 = r0 + r1 * (uint32)1541; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - R[326] = (uint16) ((((R0[652] + 2310) & 16383) * 10923) >> 15); - - for (i = 0; i < 163; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)9277; - *out++ = (unsigned char) r2; - r2 >>= 8; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - R[163] = R[326]; - - for (i = 0; i < 82; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)1314; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - - for (i = 0; i < 41; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)6745; - *out++ = (unsigned char) r2; - r2 >>= 8; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - - for (i = 0; i < 20; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)695; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - R[20] = R[40]; - - for (i = 0; i < 10; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)1887; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - R[10] = R[20]; - - for (i = 0; i < 5; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)13910; - *out++ = (unsigned char) r2; - r2 >>= 8; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - R[5] = R[10]; - - for (i = 0; i < 2; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)2953; - *out++ = (unsigned char) r2; - r2 >>= 8; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - r0 = R[4]; - r1 = R[5]; - r2 = r0 + r1 * (uint32)2953; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[2] = (uint16) r2; - - r0 = R[0]; - r1 = R[1]; - r2 = r0 + r1 * (uint32)134; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[0] = (uint16) r2; - R[1] = R[2]; - - r0 = R[0]; - r1 = R[1]; - r2 = r0 + r1 * (uint32)71; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[0] = (uint16) r2; - - r0 = R[0]; - *out++ = (unsigned char) r0; - r0 >>= 8; - *out++ = (unsigned char) r0; -} diff --git a/src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_653x1541.h b/src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_653x1541.h deleted file mode 100644 index fd04831c..00000000 --- a/src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_653x1541.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR653_CLEAN_CRYPTO_ENCODE_653X1541_H -#define PQCLEAN_NTRULPR653_CLEAN_CRYPTO_ENCODE_653X1541_H - -#include -#define PQCLEAN_NTRULPR653_CLEAN_crypto_encode_653x1541_STRBYTES 865 -#define PQCLEAN_NTRULPR653_CLEAN_crypto_encode_653x1541_ITEMS 653 -#define PQCLEAN_NTRULPR653_CLEAN_crypto_encode_653x1541_ITEMBYTES 2 - -void PQCLEAN_NTRULPR653_CLEAN_crypto_encode_653x1541(unsigned char *out, const void *v); -#endif diff --git a/src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_653x1541round.c b/src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_653x1541round.c deleted file mode 100644 index 2361d1c2..00000000 --- a/src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_653x1541round.c +++ /dev/null @@ -1,17 +0,0 @@ -#include "crypto_encode_653x1541.h" -#include "crypto_encode_653x1541round.h" - -#define int16 int16_t - -#define p 653 - -void PQCLEAN_NTRULPR653_CLEAN_crypto_encode_653x1541round(unsigned char *out, const void *v) { - const int16 *a = v; - int16 x[p]; - int i; - - for (i = 0; i < p; ++i) { - x[i] = (int16) (3 * ((10923 * a[i] + 16384) >> 15)); - } - PQCLEAN_NTRULPR653_CLEAN_crypto_encode_653x1541(out, x); -} diff --git a/src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_653x1541round.h b/src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_653x1541round.h deleted file mode 100644 index 84a35183..00000000 --- a/src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_653x1541round.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR653_CLEAN_CRYPTO_ENCODE_653X1541ROUND_H -#define PQCLEAN_NTRULPR653_CLEAN_CRYPTO_ENCODE_653X1541ROUND_H - -#include -#define PQCLEAN_NTRULPR653_CLEAN_crypto_encode_653x1541round_STRBYTES 865 -#define PQCLEAN_NTRULPR653_CLEAN_crypto_encode_653x1541round_ITEMS 653 -#define PQCLEAN_NTRULPR653_CLEAN_crypto_encode_653x1541round_ITEMBYTES 2 - -void PQCLEAN_NTRULPR653_CLEAN_crypto_encode_653x1541round(unsigned char *out, const void *v); -#endif diff --git a/src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_653x3.c b/src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_653x3.c deleted file mode 100644 index 34f1f6c4..00000000 --- a/src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_653x3.c +++ /dev/null @@ -1,21 +0,0 @@ -#include "crypto_encode_653x3.h" - -#define uint8 uint8_t - -#define p 653 - -void PQCLEAN_NTRULPR653_CLEAN_crypto_encode_653x3(unsigned char *s, const void *v) { - const uint8 *f = v; - uint8 x; - int i; - - for (i = 0; i < p / 4; ++i) { - x = *f++ + 1; - x += (*f++ + 1) << 2; - x += (*f++ + 1) << 4; - x += (*f++ + 1) << 6; - *s++ = x; - } - x = *f++ + 1; - *s++ = x; -} diff --git a/src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_653x3.h b/src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_653x3.h deleted file mode 100644 index fa055522..00000000 --- a/src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_653x3.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR653_CLEAN_CRYPTO_ENCODE_653X3_H -#define PQCLEAN_NTRULPR653_CLEAN_CRYPTO_ENCODE_653X3_H - -#include -#define PQCLEAN_NTRULPR653_CLEAN_crypto_encode_653x3_STRBYTES 164 -#define PQCLEAN_NTRULPR653_CLEAN_crypto_encode_653x3_ITEMS 653 -#define PQCLEAN_NTRULPR653_CLEAN_crypto_encode_653x3_ITEMBYTES 1 - -void PQCLEAN_NTRULPR653_CLEAN_crypto_encode_653x3(unsigned char *s, const void *v); -#endif diff --git a/src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_653xint16.c b/src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_653xint16.c deleted file mode 100644 index 70193303..00000000 --- a/src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_653xint16.c +++ /dev/null @@ -1,13 +0,0 @@ -#include "crypto_encode_653xint16.h" - - -void PQCLEAN_NTRULPR653_CLEAN_crypto_encode_653xint16(unsigned char *s, const void *v) { - const uint16_t *x = v; - int i; - - for (i = 0; i < 653; ++i) { - uint16_t u = *x++; - *s++ = (unsigned char) u; - *s++ = (unsigned char) (u >> 8); - } -} diff --git a/src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_653xint16.h b/src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_653xint16.h deleted file mode 100644 index b083af75..00000000 --- a/src/kem/ntru_prime/ntrulpr653/clean/crypto_encode_653xint16.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR653_CLEAN_CRYPTO_ENCODE_653XINT16_H -#define PQCLEAN_NTRULPR653_CLEAN_CRYPTO_ENCODE_653XINT16_H - -#include -#define PQCLEAN_NTRULPR653_CLEAN_crypto_encode_653xint16_STRBYTES 1306 -#define PQCLEAN_NTRULPR653_CLEAN_crypto_encode_653xint16_ITEMBYTES 2 -#define PQCLEAN_NTRULPR653_CLEAN_crypto_encode_653xint16_ITEMS 653 - -void PQCLEAN_NTRULPR653_CLEAN_crypto_encode_653xint16(unsigned char *s, const void *v); -#endif diff --git a/src/kem/ntru_prime/ntrulpr653/clean/crypto_sort_int32.c b/src/kem/ntru_prime/ntrulpr653/clean/crypto_sort_int32.c deleted file mode 100644 index 3f27c9f1..00000000 --- a/src/kem/ntru_prime/ntrulpr653/clean/crypto_sort_int32.c +++ /dev/null @@ -1,84 +0,0 @@ -#include "crypto_sort_int32.h" -#include - -#define int32 int32_t - -#define int32_MINMAX(a,b) \ - do { \ - int32_t ab = (b) ^ (a); \ - int32_t c = (int32_t)((int64_t)(b) - (int64_t)(a)); \ - c ^= ab & (c ^ (b)); \ - c >>= 31; \ - c &= ab; \ - (a) ^= c; \ - (b) ^= c; \ - } while(0) - -/* assume 2 <= n <= 0x40000000 */ -void PQCLEAN_NTRULPR653_CLEAN_crypto_sort_int32(int32_t *x, long long n) { - int32 top, p, q, r, i; - long long j; - - top = 1; - while (top < n - top) { - top += top; - } - - for (p = top; p >= 1; p >>= 1) { - i = 0; - while (i + 2 * p <= n) { - for (j = i; j < i + p; ++j) { - int32_MINMAX(x[j], x[j + p]); - } - i += 2 * p; - } - for (j = i; j < n - p; ++j) { - int32_MINMAX(x[j], x[j + p]); - } - - i = 0; - j = 0; - for (q = top; q > p; q >>= 1) { - if (j != i) { - for (;;) { - if (j == n - q) { - goto done; - } - int32 a = x[j + p]; - for (r = q; r > p; r >>= 1) { - int32_MINMAX(a, x[j + r]); - } - x[j + p] = a; - ++j; - if (j == i + p) { - i += 2 * p; - break; - } - } - } - while (i + p <= n - q) { - for (j = i; j < i + p; ++j) { - int32 a = x[j + p]; - for (r = q; r > p; r >>= 1) { - int32_MINMAX(a, x[j + r]); - } - x[j + p] = a; - } - i += 2 * p; - } - /* now i + p > n - q */ - j = i; - while (j < n - q) { - int32 a = x[j + p]; - for (r = q; r > p; r >>= 1) { - int32_MINMAX(a, x[j + r]); - } - x[j + p] = a; - ++j; - } - -done: - ; - } - } -} diff --git a/src/kem/ntru_prime/ntrulpr653/clean/crypto_sort_int32.h b/src/kem/ntru_prime/ntrulpr653/clean/crypto_sort_int32.h deleted file mode 100644 index debd94c5..00000000 --- a/src/kem/ntru_prime/ntrulpr653/clean/crypto_sort_int32.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef PQCLEAN_NTRULPR653_CLEAN_CRYPTO_SORT_INT32_H -#define PQCLEAN_NTRULPR653_CLEAN_CRYPTO_SORT_INT32_H - -#include -#define PQCLEAN_NTRULPR653_CLEAN_crypto_sort_int32_BYTES 4 - -void PQCLEAN_NTRULPR653_CLEAN_crypto_sort_int32(int32_t *x, long long n); -#endif diff --git a/src/kem/ntru_prime/ntrulpr653/clean/crypto_sort_uint32.c b/src/kem/ntru_prime/ntrulpr653/clean/crypto_sort_uint32.c deleted file mode 100644 index 9fc01d21..00000000 --- a/src/kem/ntru_prime/ntrulpr653/clean/crypto_sort_uint32.c +++ /dev/null @@ -1,18 +0,0 @@ -#include "crypto_sort_int32.h" -#include "crypto_sort_uint32.h" - - -/* can save time by vectorizing xor loops */ -/* can save time by integrating xor loops with int32_sort */ - -void PQCLEAN_NTRULPR653_CLEAN_crypto_sort_uint32(void *array, long long n) { - uint32_t *x = array; - long long j; - for (j = 0; j < n; ++j) { - x[j] ^= 0x80000000; - } - PQCLEAN_NTRULPR653_CLEAN_crypto_sort_int32((int32_t *)array, n); - for (j = 0; j < n; ++j) { - x[j] ^= 0x80000000; - } -} diff --git a/src/kem/ntru_prime/ntrulpr653/clean/crypto_sort_uint32.h b/src/kem/ntru_prime/ntrulpr653/clean/crypto_sort_uint32.h deleted file mode 100644 index dccba278..00000000 --- a/src/kem/ntru_prime/ntrulpr653/clean/crypto_sort_uint32.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef PQCLEAN_NTRULPR653_CLEAN_CRYPTO_SORT_UINT32_H -#define PQCLEAN_NTRULPR653_CLEAN_CRYPTO_SORT_UINT32_H - -#include -#define PQCLEAN_NTRULPR653_CLEAN_crypto_sort_uint32_BYTES 4 - -void PQCLEAN_NTRULPR653_CLEAN_crypto_sort_uint32(void *array, long long n); -#endif diff --git a/src/kem/ntru_prime/ntrulpr653/clean/crypto_stream_aes256ctr.c b/src/kem/ntru_prime/ntrulpr653/clean/crypto_stream_aes256ctr.c deleted file mode 100644 index f402a0d7..00000000 --- a/src/kem/ntru_prime/ntrulpr653/clean/crypto_stream_aes256ctr.c +++ /dev/null @@ -1,15 +0,0 @@ -#include "crypto_stream_aes256ctr.h" - - -int PQCLEAN_NTRULPR653_CLEAN_crypto_stream_aes256ctr( - uint8_t *out, - size_t outlen, - const uint8_t nonce[AESCTR_NONCEBYTES], - const uint8_t key[AES256_KEYBYTES]) { - - aes256ctx state; - aes256_ctr_keyexp(&state, key); - aes256_ctr(out, outlen, nonce, &state); - aes256_ctx_release(&state); - return 0; -} diff --git a/src/kem/ntru_prime/ntrulpr653/clean/crypto_stream_aes256ctr.h b/src/kem/ntru_prime/ntrulpr653/clean/crypto_stream_aes256ctr.h deleted file mode 100644 index 8b2991e6..00000000 --- a/src/kem/ntru_prime/ntrulpr653/clean/crypto_stream_aes256ctr.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef PQCLEAN_NTRULPR653_CLEAN_CRYPTO_STREAM_AES256CTR_H -#define PQCLEAN_NTRULPR653_CLEAN_CRYPTO_STREAM_AES256CTR_H -#include "aes.h" -#include -#include - - - -int PQCLEAN_NTRULPR653_CLEAN_crypto_stream_aes256ctr( - uint8_t *out, - size_t outlen, - const uint8_t nonce[AESCTR_NONCEBYTES], - const uint8_t key[AES256_KEYBYTES]); - -#endif diff --git a/src/kem/ntru_prime/ntrulpr653/clean/crypto_verify_1025.c b/src/kem/ntru_prime/ntrulpr653/clean/crypto_verify_1025.c deleted file mode 100644 index 0cf6b97b..00000000 --- a/src/kem/ntru_prime/ntrulpr653/clean/crypto_verify_1025.c +++ /dev/null @@ -1,13 +0,0 @@ -#include "crypto_verify_1025.h" - - -int PQCLEAN_NTRULPR653_CLEAN_crypto_verify_1025(const unsigned char *x, const unsigned char *y) { - unsigned int differentbits = 0; - int i; - - for (i = 0; i < PQCLEAN_NTRULPR653_CLEAN_crypto_verify_1025_BYTES; ++i) { - differentbits |= x[i] ^ y[i]; - } - - return (int) (1 & ((differentbits - 1) >> 8)) - 1; -} diff --git a/src/kem/ntru_prime/ntrulpr653/clean/crypto_verify_1025.h b/src/kem/ntru_prime/ntrulpr653/clean/crypto_verify_1025.h deleted file mode 100644 index 82c6c9ae..00000000 --- a/src/kem/ntru_prime/ntrulpr653/clean/crypto_verify_1025.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef PQCLEAN_NTRULPR653_CLEAN_CRYPTO_VERIFY_1025_H -#define PQCLEAN_NTRULPR653_CLEAN_CRYPTO_VERIFY_1025_H - -#include -#define PQCLEAN_NTRULPR653_CLEAN_crypto_verify_1025_BYTES 1025 - -int PQCLEAN_NTRULPR653_CLEAN_crypto_verify_1025(const unsigned char *x, const unsigned char *y); -#endif diff --git a/src/kem/ntru_prime/ntrulpr653/clean/kem.c b/src/kem/ntru_prime/ntrulpr653/clean/kem.c deleted file mode 100644 index b56a30a6..00000000 --- a/src/kem/ntru_prime/ntrulpr653/clean/kem.c +++ /dev/null @@ -1,287 +0,0 @@ -#include "api.h" -#include "crypto_sort_uint32.h" -#include "crypto_stream_aes256ctr.h" -#include "params.h" -#include "randombytes.h" -#include "sha2.h" - - - -#define int8 int8_t -#define int16 int16_t -#define int32 int32_t -#define uint16 uint16_t -#define uint32 uint32_t -#define uint64 uint64_t - -/* ----- masks */ - -/* return -1 if x<0; otherwise return 0 */ -static int int16_negative_mask(int16 x) { - uint16 u = (uint16) x; - u >>= 15; - return -(int) u; - /* alternative with gcc -fwrapv: */ - /* x>>15 compiles to CPU's arithmetic right shift */ -} - -/* ----- arithmetic mod 3 */ - -typedef int8 small; -/* F3 is always represented as -1,0,1 */ - -/* ----- arithmetic mod q */ - -#define q12 ((q-1)/2) -typedef int16 Fq; - -/* works for -14000000 < x < 14000000 if q in 4591, 4621, 5167 */ -/* assumes twos complement; use, e.g., gcc -fwrapv */ -static Fq Fq_freeze(int32 x) { - x -= (int32) (q * ((q18 * x) >> 18)); - x -= (int32) (q * ((q27 * x + 67108864) >> 27)); - return (Fq) x; -} - -/* works for all uint32 x */ -static Fq Fq_bigfreeze(uint32 x) { - x -= (uint32) (q * ((x * (uint64)q31) >> 31)); - x -= (uint32) (q * ((x * (uint64)q31) >> 31)); - x -= q; - x += (~(x >> 31) + 1) & (uint32)q; - return (Fq) x; -} - -/* ----- Top and Right */ - -static int8 Top(Fq C) { - return (int8) ((tau1 * (int32)(C + tau0) + 16384) >> 15); -} - -static Fq Right(int8 T) { - return Fq_freeze(tau3 * (int32)T - tau2); -} - -/* ----- polynomials mod q */ - -/* h = h*g in the ring Rq */ -static void Rq_mult_small(Fq *h, const small *g) { - crypto_encode_pxint16((unsigned char *) h, h); - crypto_core_mult((unsigned char *) h, (const unsigned char *) h, (const unsigned char *) g); - crypto_decode_pxint16(h, (const unsigned char *) h); -} - -/* ----- sorting to generate short polynomial */ - -static void Short_fromlist(small *out, const uint32 *in) { - uint32 L[ppadsort]; - int i; - - for (i = 0; i < w; ++i) { - L[i] = in[i] & (uint32) - 2; - } - for (i = w; i < p; ++i) { - L[i] = (in[i] & (uint32) - 3) | 1; - } - for (i = p; i < ppadsort; ++i) { - L[i] = 0xffffffff; - } - PQCLEAN_NTRULPR653_CLEAN_crypto_sort_uint32(L, ppadsort); - for (i = 0; i < p; ++i) { - out[i] = (small) ((L[i] & 3) - 1); - } -} - -/* ----- underlying hash function */ - -#define Hash_bytes 32 - -static void Hash(unsigned char *out, const unsigned char *in, int inlen) { - unsigned char h[64]; - int i; - sha512(h, in, (size_t) inlen); - for (i = 0; i < 32; ++i) { - out[i] = h[i]; - } -} - -/* ----- higher-level randomness */ - -static void Short_random(small *out) { - uint32 L[p]; - - randombytes((unsigned char *) L, sizeof L); - crypto_decode_pxint32(L, (unsigned char *) L); - Short_fromlist(out, L); -} - -/* ----- Inputs, Generator */ - -typedef int8 Inputs[I]; /* passed by reference */ - -static const unsigned char aes_nonce[16] = {0}; - -/* G = Generator(pk) */ -static void Generator(Fq *G, const unsigned char *pk) { - uint32 L[p]; - int i; - - PQCLEAN_NTRULPR653_CLEAN_crypto_stream_aes256ctr((unsigned char *) L, 4 * p, aes_nonce, pk); - crypto_decode_pxint32(L, (unsigned char *) L); - for (i = 0; i < p; ++i) { - G[i] = Fq_bigfreeze(L[i]) - q12; - } -} - -/* ----- NTRU LPRime */ - -#define Seeds_bytes 32 -#define Ciphertexts_bytes (Rounded_bytes+Top_bytes) -#define SecretKeys_bytes Small_bytes -#define PublicKeys_bytes (Seeds_bytes+Rounded_bytes) -#define Confirm_bytes 32 - -/* c,r_enc[1:] = Hide(r,pk,cache); cache is Hash4(pk) */ -static void Hide(unsigned char *c, unsigned char *r_enc, const Inputs r, const unsigned char *pk, const unsigned char *cache) { - small b[p]; - int i; - - Inputs_encode(r_enc + 1, r); - { - unsigned char h[Hash_bytes]; - uint32 L[p]; - { - unsigned char s[1 + Inputs_bytes]; - Inputs_encode(s + 1, r); - s[0] = 5; - Hash(h, s, sizeof s); - } - PQCLEAN_NTRULPR653_CLEAN_crypto_stream_aes256ctr((unsigned char *) L, 4 * p, aes_nonce, h); - crypto_decode_pxint32(L, (unsigned char *) L); - Short_fromlist(b, L); - } - { - Fq bG[p]; - Generator(bG, pk); - Rq_mult_small(bG, b); - Round_and_encode(c, bG); - c += Rounded_bytes; - } - { - Fq bA[p]; - int8 T[I]; - Rounded_decode(bA, pk + Seeds_bytes); - Rq_mult_small(bA, b); - for (i = 0; i < I; ++i) { - T[i] = Top(Fq_freeze(bA[i] + r[i] * q12)); - } - Top_encode(c, T); - c += Top_bytes; - } - { - unsigned char x[1 + Inputs_bytes + Hash_bytes]; - for (i = 0; i < Inputs_bytes; ++i) { - x[1 + i] = r_enc[1 + i]; - } - for (i = 0; i < Hash_bytes; ++i) { - x[1 + Inputs_bytes + i] = cache[i]; - } - x[0] = 2; - Hash(c, x, sizeof x); - } -} - - -int PQCLEAN_NTRULPR653_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk) { - Fq aG[p]; - int i; - randombytes(pk, Seeds_bytes); - Generator(aG, pk); - { - small a[p]; - Short_random(a); - Rq_mult_small(aG, a); - Small_encode(sk, a); - } - Round_and_encode(pk + Seeds_bytes, aG); - { - unsigned char sksave = sk[SecretKeys_bytes - 1]; - for (i = 0; i < PublicKeys_bytes; ++i) { - sk[SecretKeys_bytes + i] = pk[i]; - } - sk[SecretKeys_bytes - 1] = 4; - Hash(sk + SecretKeys_bytes + PublicKeys_bytes + Inputs_bytes, sk + SecretKeys_bytes - 1, 1 + PublicKeys_bytes); - sk[SecretKeys_bytes - 1] = sksave; - randombytes(sk + SecretKeys_bytes + PublicKeys_bytes, Inputs_bytes); - } - return 0; -} - -int PQCLEAN_NTRULPR653_CLEAN_crypto_kem_enc(unsigned char *c, unsigned char *k, const unsigned char *pk) { - int i; - unsigned char cache[Hash_bytes]; - { - unsigned char y[1 + PublicKeys_bytes]; - for (i = 0; i < PublicKeys_bytes; ++i) { - y[1 + i] = pk[i]; - } - y[0] = 4; - Hash(cache, y, sizeof y); - } - Inputs r; - { - unsigned char s[Inputs_bytes]; - randombytes(s, sizeof s); - Inputs_decode(r, s); - } - { - unsigned char x[1 + Inputs_bytes + Ciphertexts_bytes + Confirm_bytes]; - Hide(c, x, r, pk, cache); - for (i = 0; i < Ciphertexts_bytes + Confirm_bytes; ++i) { - x[1 + Inputs_bytes + i] = c[i]; - } - x[0] = 1; - Hash(k, x, sizeof x); - } - return 0; -} - -int PQCLEAN_NTRULPR653_CLEAN_crypto_kem_dec(unsigned char *k, const unsigned char *c, const unsigned char *sk) { - const unsigned char *pk = sk + SecretKeys_bytes; - const unsigned char *rho = pk + PublicKeys_bytes; - const unsigned char *cache = rho + Inputs_bytes; - Inputs r; - int i; - { - Fq aB[p]; - Rounded_decode(aB, c); - { - small a[p]; - Small_decode(a, sk); - Rq_mult_small(aB, a); - } - { - int8 T[I]; - Top_decode(T, c + Rounded_bytes); - for (i = 0; i < I; ++i) { - r[i] = (int8) - int16_negative_mask(Fq_freeze(Right(T[i]) - aB[i] + 4 * w + 1)); - } - } - } - { - unsigned char cnew[Ciphertexts_bytes + Confirm_bytes]; - int mask; - unsigned char x[1 + Inputs_bytes + Ciphertexts_bytes + Confirm_bytes]; - Hide(cnew, x, r, pk, cache); - mask = crypto_verify_clen(c, cnew); - for (i = 0; i < Inputs_bytes; ++i) { - x[1 + i] ^= (unsigned char) (mask & (x[1 + i] ^ rho[i])); - } - for (i = 0; i < Ciphertexts_bytes + Confirm_bytes; ++i) { - x[1 + Inputs_bytes + i] = c[i]; - } - x[0] = (unsigned char) (1 + mask); - Hash(k, x, sizeof x); - } - return 0; -} diff --git a/src/kem/ntru_prime/ntrulpr653/clean/params.h b/src/kem/ntru_prime/ntrulpr653/clean/params.h deleted file mode 100644 index da7b5099..00000000 --- a/src/kem/ntru_prime/ntrulpr653/clean/params.h +++ /dev/null @@ -1,65 +0,0 @@ -#ifndef params_H -#define params_H -#include "crypto_core_multsntrup653.h" -#include "crypto_decode_256x16.h" -#include "crypto_decode_256x2.h" -#include "crypto_decode_653x1541.h" -#include "crypto_decode_653x3.h" -#include "crypto_decode_653xint16.h" -#include "crypto_decode_653xint32.h" -#include "crypto_encode_256x16.h" -#include "crypto_encode_256x2.h" -#include "crypto_encode_653x1541.h" -#include "crypto_encode_653x1541round.h" -#include "crypto_encode_653x3.h" -#include "crypto_encode_653xint16.h" -#include "crypto_sort_int32.h" -#include "crypto_sort_uint32.h" -#include "crypto_verify_1025.h" - - -#define p 653 -#define q27 29045 /* closest integer to 2^27/q */ -#define q18 57 /* closest integer to 2^18/q */ -#define q 4621 -#define w 252 -#define tau0 2175 -#define tau1 113 -#define tau2 2031 -#define tau3 290 -#define I 256 - -#define ppadsort 653 - -#define q18 57 /* round(2^18/q) */ -#define q27 29045 /* round(2^27/q) */ -#define q31 464722 /* floor(2^31/q) */ - -#define crypto_verify_clen PQCLEAN_NTRULPR653_CLEAN_crypto_verify_1025 - -#define Rounded_bytes PQCLEAN_NTRULPR653_CLEAN_crypto_decode_653x1541_STRBYTES -#define Rounded_decode PQCLEAN_NTRULPR653_CLEAN_crypto_decode_653x1541 - -#define Round_and_encode PQCLEAN_NTRULPR653_CLEAN_crypto_encode_653x1541round - -#define Small_bytes PQCLEAN_NTRULPR653_CLEAN_crypto_encode_653x3_STRBYTES -#define Small_encode PQCLEAN_NTRULPR653_CLEAN_crypto_encode_653x3 -#define Small_decode PQCLEAN_NTRULPR653_CLEAN_crypto_decode_653x3 - -#define Top_bytes PQCLEAN_NTRULPR653_CLEAN_crypto_encode_256x16_STRBYTES -#define Top_encode PQCLEAN_NTRULPR653_CLEAN_crypto_encode_256x16 -#define Top_decode PQCLEAN_NTRULPR653_CLEAN_crypto_decode_256x16 - -#define Inputs_bytes PQCLEAN_NTRULPR653_CLEAN_crypto_encode_256x2_STRBYTES -#define Inputs_encode PQCLEAN_NTRULPR653_CLEAN_crypto_encode_256x2 -#define Inputs_decode PQCLEAN_NTRULPR653_CLEAN_crypto_decode_256x2 - -#define crypto_decode_pxint32 PQCLEAN_NTRULPR653_CLEAN_crypto_decode_653xint32 - -#define crypto_decode_pxint16 PQCLEAN_NTRULPR653_CLEAN_crypto_decode_653xint16 - -#define crypto_encode_pxint16 PQCLEAN_NTRULPR653_CLEAN_crypto_encode_653xint16 - -#define crypto_core_mult PQCLEAN_NTRULPR653_CLEAN_crypto_core_multsntrup653 - -#endif diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/CMakeLists.txt b/src/kem/ntru_prime/ntrulpr761/avx2/CMakeLists.txt deleted file mode 100644 index 71877542..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/CMakeLists.txt +++ /dev/null @@ -1,25 +0,0 @@ -set( - SRC_AVX2_NTRULPR761 - crypto_core_multsntrup761.c - crypto_core_multsntrup761_ntt.c - crypto_decode_256x16.c - crypto_decode_256x2.c - crypto_decode_761x1531.c - crypto_decode_761x3.c - crypto_decode_761xint16.c - crypto_decode_761xint32.c - crypto_encode_256x16.c - crypto_encode_256x2.c - crypto_encode_761x1531.c - crypto_encode_761x1531round.c - crypto_encode_761x3.c - crypto_encode_761xint16.c - crypto_sort_int32.c - crypto_sort_uint32.c - crypto_stream_aes256ctr.c - crypto_verify_1167.c - kem.c -) - -define_kem_alg(ntrulpr761_avx2 - PQCLEAN_NTRULPR761_AVX2 "${SRC_AVX2_NTRULPR761}" "${CMAKE_CURRENT_SOURCE_DIR}") diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/api.h b/src/kem/ntru_prime/ntrulpr761/avx2/api.h deleted file mode 100644 index 7e1e5d40..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/api.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef PQCLEAN_NTRULPR761_AVX2_API_H -#define PQCLEAN_NTRULPR761_AVX2_API_H - - - -#define PQCLEAN_NTRULPR761_AVX2_CRYPTO_ALGNAME "ntrulpr761" - -#define PQCLEAN_NTRULPR761_AVX2_CRYPTO_SECRETKEYBYTES 1294 -#define PQCLEAN_NTRULPR761_AVX2_CRYPTO_PUBLICKEYBYTES 1039 -#define PQCLEAN_NTRULPR761_AVX2_CRYPTO_CIPHERTEXTBYTES 1167 -#define PQCLEAN_NTRULPR761_AVX2_CRYPTO_BYTES 32 - -int PQCLEAN_NTRULPR761_AVX2_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); -int PQCLEAN_NTRULPR761_AVX2_crypto_kem_enc(unsigned char *c, unsigned char *k, const unsigned char *pk); -int PQCLEAN_NTRULPR761_AVX2_crypto_kem_dec(unsigned char *k, const unsigned char *c, const unsigned char *sk); -#endif diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_core_multsntrup761.c b/src/kem/ntru_prime/ntrulpr761/avx2/crypto_core_multsntrup761.c deleted file mode 100644 index b78302d2..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_core_multsntrup761.c +++ /dev/null @@ -1,314 +0,0 @@ -#include "crypto_core_multsntrup761.h" -#include "crypto_core_multsntrup761_ntt.h" -#include "crypto_decode_761xint16.h" -#include "crypto_encode_761xint16.h" -#include - -typedef int8_t int8; -typedef int16_t int16; - -#define int16x16 __m256i -#define load_x16(p) _mm256_loadu_si256((int16x16 *) (p)) -#define store_x16(p,v) _mm256_storeu_si256((int16x16 *) (p),(v)) -#define const_x16 _mm256_set1_epi16 -#define add_x16 _mm256_add_epi16 -#define sub_x16 _mm256_sub_epi16 -#define mullo_x16 _mm256_mullo_epi16 -#define mulhi_x16 _mm256_mulhi_epi16 -#define mulhrs_x16 _mm256_mulhrs_epi16 -#define signmask_x16(x) _mm256_srai_epi16((x),15) - -typedef union { - int16 v[3][512]; - int16x16 _dummy; -} vec3x512; - -typedef union { - int16 v[768]; - int16x16 _dummy; -} vec768; - -typedef union { - int16 v[3 * 512]; - int16x16 _dummy; -} vec1536; - -static inline int16x16 squeeze_4591_x16(int16x16 x) { - return sub_x16(x, mullo_x16(mulhrs_x16(x, const_x16(7)), const_x16(4591))); -} - -static inline int16x16 squeeze_7681_x16(int16x16 x) { - return sub_x16(x, mullo_x16(mulhrs_x16(x, const_x16(4)), const_x16(7681))); -} - -static inline int16x16 squeeze_10753_x16(int16x16 x) { - return sub_x16(x, mullo_x16(mulhrs_x16(x, const_x16(3)), const_x16(10753))); -} - -static inline int16x16 mulmod_4591_x16(int16x16 x, int16x16 y) { - int16x16 yqinv = mullo_x16(y, const_x16(15631)); /* XXX: precompute */ - int16x16 b = mulhi_x16(x, y); - int16x16 d = mullo_x16(x, yqinv); - int16x16 e = mulhi_x16(d, const_x16(4591)); - return sub_x16(b, e); -} - -static inline int16x16 mulmod_7681_x16(int16x16 x, int16x16 y) { - int16x16 yqinv = mullo_x16(y, const_x16(-7679)); /* XXX: precompute */ - int16x16 b = mulhi_x16(x, y); - int16x16 d = mullo_x16(x, yqinv); - int16x16 e = mulhi_x16(d, const_x16(7681)); - return sub_x16(b, e); -} - -static inline int16x16 mulmod_10753_x16(int16x16 x, int16x16 y) { - int16x16 yqinv = mullo_x16(y, const_x16(-10751)); /* XXX: precompute */ - int16x16 b = mulhi_x16(x, y); - int16x16 d = mullo_x16(x, yqinv); - int16x16 e = mulhi_x16(d, const_x16(10753)); - return sub_x16(b, e); -} - -#define mask0 _mm256_set_epi16(-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1) -#define mask1 _mm256_set_epi16(0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0) -#define mask2 _mm256_set_epi16(0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0) - -static void good(int16 fpad[3][512], const int16 f[768]) { - int j; - int16x16 f0, f1; - - j = 0; - for (;;) { - f0 = load_x16(f + j); - f1 = load_x16(f + 512 + j); - store_x16(&fpad[0][j], (f0 & mask0) | (f1 & mask1)); - store_x16(&fpad[1][j], (f0 & mask1) | (f1 & mask2)); - store_x16(&fpad[2][j], (f0 & mask2) | (f1 & mask0)); - j += 16; - if (j == 256) { - break; - } - - f0 = load_x16(f + j); - f1 = load_x16(f + 512 + j); - store_x16(&fpad[0][j], (f0 & mask2) | (f1 & mask0)); - store_x16(&fpad[1][j], (f0 & mask0) | (f1 & mask1)); - store_x16(&fpad[2][j], (f0 & mask1) | (f1 & mask2)); - j += 16; - - f0 = load_x16(f + j); - f1 = load_x16(f + 512 + j); - store_x16(&fpad[0][j], (f0 & mask1) | (f1 & mask2)); - store_x16(&fpad[1][j], (f0 & mask2) | (f1 & mask0)); - store_x16(&fpad[2][j], (f0 & mask0) | (f1 & mask1)); - j += 16; - } - for (;;) { - f0 = load_x16(f + j); - store_x16(&fpad[0][j], f0 & mask2); - store_x16(&fpad[1][j], f0 & mask0); - store_x16(&fpad[2][j], f0 & mask1); - j += 16; - if (j == 512) { - break; - } - - f0 = load_x16(f + j); - store_x16(&fpad[0][j], f0 & mask1); - store_x16(&fpad[1][j], f0 & mask2); - store_x16(&fpad[2][j], f0 & mask0); - j += 16; - - f0 = load_x16(f + j); - store_x16(&fpad[0][j], f0 & mask0); - store_x16(&fpad[1][j], f0 & mask1); - store_x16(&fpad[2][j], f0 & mask2); - j += 16; - } -} - -static void ungood(int16 f[1536], const int16 fpad[3][512]) { - int j; - int16x16 f0, f1, f2, g0, g1, g2; - - j = 0; - - for (;;) { - f0 = load_x16(&fpad[0][j]); - f1 = load_x16(&fpad[1][j]); - f2 = load_x16(&fpad[2][j]); - g0 = (f0 & mask0) | (f1 & mask1) | (f2 & mask2); - g1 = (f0 & mask1) | (f1 & mask2) | (f2 & mask0); - g2 = f0 ^ f1 ^ f2 ^ g0 ^ g1; /* same as (f0&mask2)|(f1&mask0)|(f2&mask1) */ - store_x16(f + 0 + j, g0); - store_x16(f + 512 + j, g1); - store_x16(f + 1024 + j, g2); - j += 16; - - f0 = load_x16(&fpad[0][j]); - f1 = load_x16(&fpad[1][j]); - f2 = load_x16(&fpad[2][j]); - g0 = (f0 & mask2) | (f1 & mask0) | (f2 & mask1); - g1 = (f0 & mask0) | (f1 & mask1) | (f2 & mask2); - g2 = f0 ^ f1 ^ f2 ^ g0 ^ g1; /* same as (f0&mask1)|(f1&mask2)|(f2&mask0) */ - store_x16(f + 0 + j, g0); - store_x16(f + 512 + j, g1); - store_x16(f + 1024 + j, g2); - j += 16; - if (j == 512) { - break; - } - - f0 = load_x16(&fpad[0][j]); - f1 = load_x16(&fpad[1][j]); - f2 = load_x16(&fpad[2][j]); - g0 = (f0 & mask1) | (f1 & mask2) | (f2 & mask0); - g1 = (f0 & mask2) | (f1 & mask0) | (f2 & mask1); - g2 = f0 ^ f1 ^ f2 ^ g0 ^ g1; /* same as (f0&mask0)|(f1&mask1)|(f2&mask2) */ - store_x16(f + 0 + j, g0); - store_x16(f + 512 + j, g1); - store_x16(f + 1024 + j, g2); - j += 16; - } -} - -static void mult768(int16 h[1536], const int16 f[768], const int16 g[768]) { - vec3x512 x1, x2; - vec1536 x3, x4; -#define fpad (x1.v) -#define gpad (x2.v) -#define hpad fpad -#define h_7681 (x3.v) -#define h_10753 (x4.v) - int i; - - good(fpad, f); - PQCLEAN_NTRULPR761_AVX2_ntt512_7681(fpad[0], 3); - - good(gpad, g); - PQCLEAN_NTRULPR761_AVX2_ntt512_7681(gpad[0], 3); - - for (i = 0; i < 512; i += 16) { - int16x16 f0 = squeeze_7681_x16(load_x16(&fpad[0][i])); - int16x16 f1 = squeeze_7681_x16(load_x16(&fpad[1][i])); - int16x16 f2 = squeeze_7681_x16(load_x16(&fpad[2][i])); - int16x16 g0 = squeeze_7681_x16(load_x16(&gpad[0][i])); - int16x16 g1 = squeeze_7681_x16(load_x16(&gpad[1][i])); - int16x16 g2 = squeeze_7681_x16(load_x16(&gpad[2][i])); - int16x16 d0 = mulmod_7681_x16(f0, g0); - int16x16 d1 = mulmod_7681_x16(f1, g1); - int16x16 d2 = mulmod_7681_x16(f2, g2); - int16x16 dsum = add_x16(add_x16(d0, d1), d2); - int16x16 h0 = add_x16(dsum, mulmod_7681_x16(sub_x16(f2, f1), sub_x16(g1, g2))); - int16x16 h1 = add_x16(dsum, mulmod_7681_x16(sub_x16(f1, f0), sub_x16(g0, g1))); - int16x16 h2 = add_x16(dsum, mulmod_7681_x16(sub_x16(f0, f2), sub_x16(g2, g0))); - store_x16(&hpad[0][i], squeeze_7681_x16(h0)); - store_x16(&hpad[1][i], squeeze_7681_x16(h1)); - store_x16(&hpad[2][i], squeeze_7681_x16(h2)); - } - - PQCLEAN_NTRULPR761_AVX2_invntt512_7681(hpad[0], 3); - ungood(h_7681, (const int16(*)[512]) hpad); - - good(fpad, f); - PQCLEAN_NTRULPR761_AVX2_ntt512_10753(fpad[0], 3); - - good(gpad, g); - PQCLEAN_NTRULPR761_AVX2_ntt512_10753(gpad[0], 3); - - for (i = 0; i < 512; i += 16) { - int16x16 f0 = squeeze_10753_x16(load_x16(&fpad[0][i])); - int16x16 f1 = squeeze_10753_x16(load_x16(&fpad[1][i])); - int16x16 f2 = squeeze_10753_x16(load_x16(&fpad[2][i])); - int16x16 g0 = squeeze_10753_x16(load_x16(&gpad[0][i])); - int16x16 g1 = squeeze_10753_x16(load_x16(&gpad[1][i])); - int16x16 g2 = squeeze_10753_x16(load_x16(&gpad[2][i])); - int16x16 d0 = mulmod_10753_x16(f0, g0); - int16x16 d1 = mulmod_10753_x16(f1, g1); - int16x16 d2 = mulmod_10753_x16(f2, g2); - int16x16 dsum = add_x16(add_x16(d0, d1), d2); - int16x16 h0 = add_x16(dsum, mulmod_10753_x16(sub_x16(f2, f1), sub_x16(g1, g2))); - int16x16 h1 = add_x16(dsum, mulmod_10753_x16(sub_x16(f1, f0), sub_x16(g0, g1))); - int16x16 h2 = add_x16(dsum, mulmod_10753_x16(sub_x16(f0, f2), sub_x16(g2, g0))); - store_x16(&hpad[0][i], squeeze_10753_x16(h0)); - store_x16(&hpad[1][i], squeeze_10753_x16(h1)); - store_x16(&hpad[2][i], squeeze_10753_x16(h2)); - } - - PQCLEAN_NTRULPR761_AVX2_invntt512_10753(hpad[0], 3); - ungood(h_10753, (const int16(*)[512]) hpad); - - for (i = 0; i < 1536; i += 16) { - int16x16 u1 = load_x16(&h_10753[i]); - int16x16 u2 = load_x16(&h_7681[i]); - int16x16 t; - u1 = mulmod_10753_x16(u1, const_x16(1268)); - u2 = mulmod_7681_x16(u2, const_x16(956)); - t = mulmod_7681_x16(sub_x16(u2, u1), const_x16(-2539)); - t = add_x16(u1, mulmod_4591_x16(t, const_x16(-710))); - store_x16(&h[i], t); - } -} - -#define crypto_decode_pxint16 PQCLEAN_NTRULPR761_AVX2_crypto_decode_761xint16 -#define crypto_encode_pxint16 PQCLEAN_NTRULPR761_AVX2_crypto_encode_761xint16 - -#define p 761 -#define q 4591 - -static inline int16x16 freeze_4591_x16(int16x16 x) { - int16x16 mask, xq; - x = add_x16(x, const_x16(q)&signmask_x16(x)); - mask = signmask_x16(sub_x16(x, const_x16((q + 1) / 2))); - xq = sub_x16(x, const_x16(q)); - x = _mm256_blendv_epi8(xq, x, mask); - return x; -} - -int PQCLEAN_NTRULPR761_AVX2_crypto_core_multsntrup761(unsigned char *outbytes, const unsigned char *inbytes, const unsigned char *kbytes) { - vec768 x1, x2; - vec1536 x3; -#define f (x1.v) -#define g (x2.v) -#define fg (x3.v) -#define h f - int i; - int16x16 x; - - x = const_x16(0); - for (i = p & ~15; i < 768; i += 16) { - store_x16(&f[i], x); - } - for (i = p & ~15; i < 768; i += 16) { - store_x16(&g[i], x); - } - - crypto_decode_pxint16(f, inbytes); - - for (i = 0; i < 768; i += 16) { - x = load_x16(&f[i]); - x = freeze_4591_x16(squeeze_4591_x16(x)); - store_x16(&f[i], x); - } - for (i = 0; i < p; ++i) { - int8 gi = (int8) kbytes[i]; - int8 gi0 = gi & 1; - g[i] = (int16) (gi0 - (gi & (gi0 << 1))); - } - - mult768(fg, f, g); - - fg[0] = (int16) (fg[0] - fg[p - 1]); - for (i = 0; i < 768; i += 16) { - int16x16 fgi = load_x16(&fg[i]); - int16x16 fgip = load_x16(&fg[i + p]); - int16x16 fgip1 = load_x16(&fg[i + p - 1]); - x = add_x16(fgi, add_x16(fgip, fgip1)); - x = freeze_4591_x16(squeeze_4591_x16(x)); - store_x16(&h[i], x); - } - - crypto_encode_pxint16(outbytes, h); - - return 0; -} diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_core_multsntrup761.h b/src/kem/ntru_prime/ntrulpr761/avx2/crypto_core_multsntrup761.h deleted file mode 100644 index 9b2a6d15..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_core_multsntrup761.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef PQCLEAN_NTRULPR761_AVX2_CRYPTO_CORE_MULTSNTRUP761_H -#define PQCLEAN_NTRULPR761_AVX2_CRYPTO_CORE_MULTSNTRUP761_H - -#include -#define PQCLEAN_NTRULPR761_AVX2_crypto_core_multsntrup761_OUTPUTBYTES 1522 -#define PQCLEAN_NTRULPR761_AVX2_crypto_core_multsntrup761_INPUTBYTES 1522 -#define PQCLEAN_NTRULPR761_AVX2_crypto_core_multsntrup761_KEYBYTES 761 -#define PQCLEAN_NTRULPR761_AVX2_crypto_core_multsntrup761_CONSTBYTES 0 - -int PQCLEAN_NTRULPR761_AVX2_crypto_core_multsntrup761(unsigned char *outbytes, const unsigned char *inbytes, const unsigned char *kbytes); -#endif diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_core_multsntrup761_ntt.c b/src/kem/ntru_prime/ntrulpr761/avx2/crypto_core_multsntrup761_ntt.c deleted file mode 100644 index dfb90c53..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_core_multsntrup761_ntt.c +++ /dev/null @@ -1,927 +0,0 @@ -#include "crypto_core_multsntrup761.h" -#include "crypto_core_multsntrup761_ntt.h" -#include -#include - -/* auto-generated; do not edit */ - - -typedef int8_t int8; -typedef int16_t int16; - -#define zeta(n,i) (((__m256i *) zeta_##n)[(i)]) -#define zeta_x4(n,i) (((__m256i *) zeta_x4_##n)[(i)]) -#define zeta_qinv(n,i) (((__m256i *) qinvzeta_##n)[(i)]) -#define zeta_x4_qinv(n,i) (((__m256i *) qinvzeta_x4_##n)[(i)]) -#define zetainv(n,i) _mm256_loadu_reverse16((__m256i *) ((int16 *) zeta_##n+(n)/2+1-16*((i)+1))) -#define zetainv_x4(n,i) _mm256_loadu_reverse16((__m256i *) ((int16 *) zeta_x4_##n+2*(n)+4-16*((i)+1))) -#define zetainv_qinv(n,i) _mm256_loadu_reverse16((__m256i *) ((int16 *) qinvzeta_##n+(n)/2+1-16*((i)+1))) -#define zetainv_x4_qinv(n,i) _mm256_loadu_reverse16((__m256i *) ((int16 *) qinvzeta_x4_##n+2*(n)+4-16*((i)+1))) - -typedef union { - int16 data[93 * 16]; - __m256i _dummy; -} vec1488; - -static const vec1488 qdata_7681 = { .data = { - -#define q_x16 (qdata[0]) - 7681, 7681, 7681, 7681, 7681, 7681, 7681, 7681, 7681, 7681, 7681, 7681, 7681, 7681, 7681, 7681, - -#define qrecip_x16 (qdata[1]) - 17474, 17474, 17474, 17474, 17474, 17474, 17474, 17474, 17474, 17474, 17474, 17474, 17474, 17474, 17474, 17474, - -#define qshift_x16 (qdata[2]) - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - -#define zeta4_x16 (qdata[3]) - -3777, -3777, -3777, -3777, -3777, -3777, -3777, -3777, -3777, -3777, -3777, -3777, -3777, -3777, -3777, -3777, - -#define zeta4_x16_qinv (qdata[4]) - -28865, -28865, -28865, -28865, -28865, -28865, -28865, -28865, -28865, -28865, -28865, -28865, -28865, -28865, -28865, -28865, - -#define zeta8_x16 (qdata[5]) - -3625, -3625, -3625, -3625, -3625, -3625, -3625, -3625, -3625, -3625, -3625, -3625, -3625, -3625, -3625, -3625, - -#define zeta8_x16_qinv (qdata[6]) - -16425, -16425, -16425, -16425, -16425, -16425, -16425, -16425, -16425, -16425, -16425, -16425, -16425, -16425, -16425, -16425, - -#define zetainv8_x16 (qdata[7]) - -3182, -3182, -3182, -3182, -3182, -3182, -3182, -3182, -3182, -3182, -3182, -3182, -3182, -3182, -3182, -3182, - -#define zetainv8_x16_qinv (qdata[8]) - -10350, -10350, -10350, -10350, -10350, -10350, -10350, -10350, -10350, -10350, -10350, -10350, -10350, -10350, -10350, -10350, - -#define zeta_x4_16 (qdata+9) - -3593, -3593, -3593, -3593, -2194, -2194, -2194, -2194, -3625, -3625, -3625, -3625, 1100, 1100, 1100, 1100, - -3777, -3777, -3777, -3777, -2456, -2456, -2456, -2456, 3182, 3182, 3182, 3182, 3696, 3696, 3696, 3696, - 3593, 3593, 3593, 3593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -#define qinvzeta_x4_16 (qdata+12) - -9, -9, -9, -9, 4974, 4974, 4974, 4974, -16425, -16425, -16425, -16425, 7244, 7244, 7244, 7244, - -28865, -28865, -28865, -28865, -14744, -14744, -14744, -14744, 10350, 10350, 10350, 10350, -4496, -4496, -4496, -4496, - 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -#define zeta_x4_32 (qdata+15) - -3593, -3593, -3593, -3593, 1414, 1414, 1414, 1414, -2194, -2194, -2194, -2194, -2495, -2495, -2495, -2495, - -3625, -3625, -3625, -3625, 2876, 2876, 2876, 2876, 1100, 1100, 1100, 1100, -2250, -2250, -2250, -2250, - -3777, -3777, -3777, -3777, -1701, -1701, -1701, -1701, -2456, -2456, -2456, -2456, 834, 834, 834, 834, - 3182, 3182, 3182, 3182, -2319, -2319, -2319, -2319, 3696, 3696, 3696, 3696, 121, 121, 121, 121, - 3593, 3593, 3593, 3593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -#define qinvzeta_x4_32 (qdata+20) - -9, -9, -9, -9, 20870, 20870, 20870, 20870, 4974, 4974, 4974, 4974, 22593, 22593, 22593, 22593, - -16425, -16425, -16425, -16425, 828, 828, 828, 828, 7244, 7244, 7244, 7244, -23754, -23754, -23754, -23754, - -28865, -28865, -28865, -28865, 20315, 20315, 20315, 20315, -14744, -14744, -14744, -14744, 18242, 18242, 18242, 18242, - 10350, 10350, 10350, 10350, -18191, -18191, -18191, -18191, -4496, -4496, -4496, -4496, -11655, -11655, -11655, -11655, - 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -#define zeta_64 (qdata+25) - -3593, -617, 1414, 3706, -2194, -1296, -2495, -2237, -3625, 2830, 2876, -1599, 1100, 1525, -2250, 2816, - -3777, 1921, -1701, 2006, -2456, 1483, 834, -1986, 3182, 3364, -2319, -1993, 3696, -2557, 121, 2088, - 3593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -#define qinvzeta_64 (qdata+28) - -9, 19351, 20870, -15750, 4974, -9488, 22593, 7491, -16425, 26382, 828, 23489, 7244, 20469, -23754, 2816, - -28865, -5759, 20315, -3114, -14744, 15307, 18242, -19394, 10350, -10972, -18191, -31177, -4496, -25597, -11655, 22568, - 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -#define zeta_128 (qdata+31) - -3593, -2804, -617, -396, 1414, -549, 3706, 810, -2194, -1321, -1296, 438, -2495, -2535, -2237, -3689, - -3625, 2043, 2830, -1881, 2876, 3153, -1599, 7, 1100, -514, 1525, -1760, -2250, -2440, 2816, 3600, - -3777, 103, 1921, -3174, -1701, 1535, 2006, -1887, -2456, 1399, 1483, -679, 834, 3772, -1986, 1738, - 3182, -1431, 3364, -3555, -2319, -2310, -1993, 638, 3696, -2956, -2557, -1305, 121, 2555, 2088, -3266, - 3593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -#define qinvzeta_128 (qdata+36) - -9, -29428, 19351, 26228, 20870, 21467, -15750, 5930, 4974, -14121, -9488, -21066, 22593, 2073, 7491, 16279, - -16425, -25093, 26382, 26279, 828, -29103, 23489, 11783, 7244, 14846, 20469, 14624, -23754, -6536, 2816, 11792, - -28865, -4505, -5759, -6246, 20315, 9215, -3114, 6817, -14744, 4983, 15307, -28839, 18242, 1724, -19394, 23242, - 10350, -21399, -10972, -29667, -18191, -21766, -31177, 15998, -4496, 23668, -25597, -5913, -11655, -24581, 22568, -20674, - 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -#define zeta_256 (qdata+41) - -3593, 2665, -2804, -2572, -617, 727, -396, 3417, 1414, 2579, -549, 373, 3706, 3750, 810, -1054, - -2194, -2133, -1321, 1681, -1296, -1386, 438, -2732, -2495, 1919, -2535, -2391, -2237, 2835, -3689, 2, - -3625, -783, 2043, 3145, 2830, 1533, -1881, 2789, 2876, 2649, 3153, 3692, -1599, -1390, 7, -1166, - 1100, 3310, -514, 2224, 1525, -2743, -1760, 2385, -2250, -486, -2440, -1756, 2816, -3816, 3600, -3831, - -3777, -1799, 103, 1497, 1921, 1521, -3174, -194, -1701, -859, 1535, 2175, 2006, -2762, -1887, -1698, - -2456, -3480, 1399, 2883, 1483, -3428, -679, -2113, 834, 1532, 3772, -660, -1986, -2764, 1738, -915, - 3182, 1056, -1431, 1350, 3364, 1464, -3555, 2919, -2319, -2160, -2310, 730, -1993, -1598, 638, 3456, - 3696, -1168, -2956, -3588, -2557, -921, -1305, 3405, 121, -404, 2555, -3135, 2088, 2233, -3266, -2426, - 3593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -#define qinvzeta_256 (qdata+50) - -9, -17303, -29428, 24052, 19351, -12073, 26228, -24743, 20870, -12269, 21467, 19317, -15750, -25946, 5930, 32738, - 4974, -4693, -14121, 2193, -9488, 26262, -21066, 7508, 22593, 9599, 2073, 10409, 7491, -12013, 16279, -15358, - -16425, -16655, -25093, 32329, 26382, 24573, 26279, 13541, 828, -25511, -29103, 26220, 23489, -8558, 11783, -24718, - 7244, 10478, 14846, 26800, 20469, 26441, 14624, -29871, -23754, -3558, -6536, -16092, 2816, 8472, 11792, -7415, - -28865, -13575, -4505, -26663, -5759, -14351, -6246, -17602, 20315, -22875, 9215, 9855, -3114, -24266, 6817, -2722, - -14744, -15768, 4983, 12611, 15307, -21860, -28839, -27201, 18242, 32252, 1724, 21868, -19394, -8908, 23242, 13933, - 10350, 17440, -21399, -11962, -10972, 30136, -29667, -1689, -18191, 6032, -21766, 30426, -31177, 15810, 15998, 3456, - -4496, -9360, 23668, 27132, -25597, -5529, -5913, 1869, -11655, 22124, -24581, 21953, 22568, 23225, -20674, 17030, - 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -#define zeta_512 (qdata+59) - -3593, 2005, 2665, 2891, -2804, 2345, -2572, 1121, -617, -188, 727, 2786, -396, -3208, 3417, -17, - 1414, -3752, 2579, 2815, -549, 1837, 373, 151, 3706, -1012, 3750, -1509, 810, -3214, -1054, 3177, - -2194, -1403, -2133, -3314, -1321, 83, 1681, -658, -1296, 2070, -1386, -3547, 438, 3781, -2732, 2230, - -2495, -1669, 1919, 2589, -2535, -3312, -2391, -3542, -2237, -1441, 2835, -3568, -3689, -402, 2, -1070, - -3625, 3763, -783, -3550, 2043, -2303, 3145, -436, 2830, -893, 1533, 1712, -1881, 124, 2789, -2001, - 2876, -2460, 2649, 3770, 3153, 2965, 3692, -1203, -1599, 2874, -1390, -1407, 7, -3745, -1166, 1649, - 1100, 2937, 3310, 3461, -514, -1526, 2224, 715, 1525, -1689, -2743, 434, -1760, -3163, 2385, -929, - -2250, -2167, -486, -1144, -2440, -370, -1756, 2378, 2816, -1084, -3816, -1586, 3600, 1931, -3831, -1242, - -3777, 592, -1799, 2340, 103, -1338, 1497, -2071, 1921, 1519, 1521, 451, -3174, 589, -194, -3744, - -1701, 3677, -859, -1295, 1535, 642, 2175, -3794, 2006, 2130, -2762, 2918, -1887, 3334, -1698, 2072, - -2456, 509, -3480, 2998, 1399, -3408, 2883, 1476, 1483, -2262, -3428, -1779, -679, 2258, -2113, 1348, - 834, -692, 1532, 2247, 3772, 2083, -660, -226, -1986, 2532, -2764, -3693, 1738, -429, -915, -2059, - 3182, 2812, 1056, 3434, -1431, -2515, 1350, -236, 3364, -2386, 1464, 222, -3555, -2963, 2919, -2422, - -2319, -3657, -2160, 3450, -2310, -791, 730, 1181, -1993, -1404, -1598, 2339, 638, -3366, 3456, 2161, - 3696, -3343, -1168, 2719, -2956, -826, -3588, -670, -2557, 777, -921, 1151, -1305, -796, 3405, -1278, - 121, -3287, -404, 1072, 2555, 293, -3135, 2767, 2088, -3335, 2233, 3581, -3266, 3723, -2426, -179, - 3593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -#define qinvzeta_512 (qdata+76) - -9, 4565, -17303, 16715, -29428, 15145, 24052, -22943, 19351, 1860, -12073, -28958, 26228, -7304, -24743, -529, - 20870, -24232, -12269, 10495, 21467, -16083, 19317, 20119, -15750, -27636, -25946, -12261, 5930, -26766, 32738, -16791, - 4974, 25733, -4693, 20238, -14121, 18003, 2193, 6510, -9488, 29718, 26262, -25563, -21066, -1851, 7508, -19274, - 22593, -28805, 9599, -23523, 2073, 4880, 10409, 1578, 7491, -10145, -12013, 4624, 16279, 6766, -15358, 24530, - -16425, 5299, -16655, -2526, -25093, -9983, 32329, 5708, 26382, -23933, 24573, 26288, 26279, 30844, 13541, 30255, - 828, 15972, -25511, 17082, -29103, -27243, 26220, -2739, 23489, 16186, -8558, -9087, 11783, -12449, -24718, -14223, - 7244, -8839, 10478, 30597, 14846, -12790, 26800, 14539, 20469, -6297, 26441, 9650, 14624, -25179, -29871, -9633, - -23754, -5751, -3558, 2952, -6536, 23182, -16092, 23882, 2816, 964, 8472, -10802, 11792, -17013, -7415, -30938, - -28865, -23984, -13575, -11996, -4505, -14650, -26663, -22039, -5759, 1007, -14351, 10179, -6246, -947, -17602, -20128, - 20315, 10333, -22875, -17167, 9215, -14718, 9855, -29394, -3114, 27730, -24266, 5990, 6817, 22790, -2722, 14360, - -14744, 23549, -15768, -18506, 4983, 21168, 12611, 3524, 15307, 2858, -21860, 29453, -28839, 27858, -27201, 3396, - 18242, 5452, 32252, -18745, 1724, -4573, 21868, 31518, -19394, 20964, -8908, -18541, 23242, 17491, 13933, 16885, - 10350, -32004, 17440, -24214, -21399, -20435, -11962, -22764, -10972, -27986, 30136, -802, -29667, 11885, -1689, -13686, - -18191, 32695, 6032, -16006, -21766, -20759, 30426, -24931, -31177, -32124, 15810, -4317, 15998, 26330, 3456, -13711, - -4496, -19215, -9360, 26783, 23668, -14138, 27132, -32414, -25597, -2807, -5529, 8831, -5913, 17636, 1869, -16638, - -11655, 9513, 22124, 25648, -24581, -21723, 21953, -14129, 22568, -15111, 23225, 26621, -20674, -15221, 17030, -1715, - 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - } -}; - -static const vec1488 qdata_10753 = { .data = { - - 10753, 10753, 10753, 10753, 10753, 10753, 10753, 10753, 10753, 10753, 10753, 10753, 10753, 10753, 10753, 10753, - - 24964, 24964, 24964, 24964, 24964, 24964, 24964, 24964, 24964, 24964, 24964, 24964, 24964, 24964, 24964, 24964, - - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - - 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, - - 27359, 27359, 27359, 27359, 27359, 27359, 27359, 27359, 27359, 27359, 27359, 27359, 27359, 27359, 27359, 27359, - - 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, - - -1956, -1956, -1956, -1956, -1956, -1956, -1956, -1956, -1956, -1956, -1956, -1956, -1956, -1956, -1956, -1956, - - 3688, 3688, 3688, 3688, 3688, 3688, 3688, 3688, 3688, 3688, 3688, 3688, 3688, 3688, 3688, 3688, - - -408, -408, -408, -408, -408, -408, -408, -408, -408, -408, -408, -408, -408, -408, -408, -408, - - 1018, 1018, 1018, 1018, 2413, 2413, 2413, 2413, 4188, 4188, 4188, 4188, 357, 357, 357, 357, - 223, 223, 223, 223, -3686, -3686, -3686, -3686, -3688, -3688, -3688, -3688, -376, -376, -376, -376, - -1018, -1018, -1018, -1018, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - -6, -6, -6, -6, 10093, 10093, 10093, 10093, -1956, -1956, -1956, -1956, 28517, 28517, 28517, 28517, - 27359, 27359, 27359, 27359, -21094, -21094, -21094, -21094, 408, 408, 408, 408, -20856, -20856, -20856, -20856, - 6, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 1018, 1018, 1018, 1018, -2695, -2695, -2695, -2695, 2413, 2413, 2413, 2413, 425, 425, 425, 425, - 4188, 4188, 4188, 4188, -4855, -4855, -4855, -4855, 357, 357, 357, 357, -3364, -3364, -3364, -3364, - 223, 223, 223, 223, 730, 730, 730, 730, -3686, -3686, -3686, -3686, -4544, -4544, -4544, -4544, - -3688, -3688, -3688, -3688, -2236, -2236, -2236, -2236, -376, -376, -376, -376, 3784, 3784, 3784, 3784, - -1018, -1018, -1018, -1018, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - -6, -6, -6, -6, 7033, 7033, 7033, 7033, 10093, 10093, 10093, 10093, 18345, 18345, 18345, 18345, - -1956, -1956, -1956, -1956, 29449, 29449, 29449, 29449, 28517, 28517, 28517, 28517, -9508, -9508, -9508, -9508, - 27359, 27359, 27359, 27359, 16090, 16090, 16090, 16090, -21094, -21094, -21094, -21094, 28224, 28224, 28224, 28224, - 408, 408, 408, 408, -12476, -12476, -12476, -12476, -20856, -20856, -20856, -20856, 16072, 16072, 16072, 16072, - 6, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 1018, -1520, -2695, 1341, 2413, 918, 425, 5175, 4188, -4035, -4855, 341, 357, 4347, -3364, 5213, - 223, -4875, 730, 1931, -3686, -2503, -4544, -4095, -3688, 5063, -2236, -3823, -376, 3012, 3784, -2629, - -1018, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - -6, 23056, 7033, 829, 10093, 26518, 18345, 3639, -1956, -4547, 29449, 3925, 28517, -7429, -9508, -11683, - 27359, -17675, 16090, 14731, -21094, -25543, 28224, -14847, 408, 28103, -12476, 10001, -20856, -7228, 16072, 18363, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 1018, -2935, -1520, -4744, -2695, -205, 1341, 1299, 2413, 4, 918, -4379, 425, -4616, 5175, -544, - 4188, 4129, -4035, 4102, -4855, -1287, 341, -2388, 357, 1284, 4347, 2984, -3364, 2178, 5213, -2576, - 223, 2790, -4875, 4876, 730, -4513, 1931, -3085, -3686, 3550, -2503, 847, -4544, 193, -4095, 1085, - -3688, 3091, 5063, -4742, -2236, 2982, -3823, -1009, -376, -268, 3012, 3062, 3784, -2565, -2629, 4189, - -1018, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - -6, 31369, 23056, 15736, 7033, -24269, 829, -6381, 10093, 22532, 26518, 23781, 18345, 15864, 3639, 15840, - -1956, -23007, -4547, 5126, 29449, 8441, 3925, -16724, 28517, 23812, -7429, 31656, -9508, -19326, -11683, -27152, - 27359, 20198, -17675, 6924, 16090, 22623, 14731, 5619, -21094, -24098, -25543, 3407, 28224, 22209, -14847, 573, - 408, -4589, 28103, -5766, -12476, -12378, 10001, -31217, -20856, -2316, -7228, -20490, 16072, -14341, 18363, -12707, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 1018, -4734, -2935, -400, -1520, 4977, -4744, -2973, -2695, 512, -205, -779, 1341, -1356, 1299, 635, - 2413, 567, 4, -4286, 918, -5114, -4379, -1586, 425, 1615, -4616, -336, 5175, -1841, -544, 2234, - 4188, -3441, 4129, 636, -4035, -4580, 4102, 2684, -4855, 3057, -1287, -2740, 341, -5156, -2388, -472, - 357, -794, 1284, 578, 4347, 3615, 2984, -3715, -3364, 2271, 2178, -326, 5213, 454, -2576, -3337, - 223, 2998, 2790, -151, -4875, 2981, 4876, 1324, 730, 2774, -4513, 2206, 1931, 886, -3085, -970, - -3686, 3198, 3550, 2737, -2503, -909, 847, 1068, -4544, -2213, 193, 2884, -4095, -4808, 1085, 4123, - -3688, 5341, 3091, 5294, 5063, -116, -4742, -5116, -2236, -2045, 2982, -1572, -3823, 4828, -1009, 467, - -376, 5023, -268, -3169, 3012, -1458, 3062, -1268, 3784, -675, -2565, 1006, -2629, 5064, 4189, 864, - -1018, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - -6, -26238, 31369, -24976, 23056, -30351, 15736, -18845, 7033, 512, -24269, -13579, 829, 29364, -6381, -11141, - 10093, -969, 22532, 6978, 26518, -4090, 23781, 11726, 18345, 4175, 15864, 7856, 3639, 719, 15840, -31558, - -1956, 31887, -23007, -21892, -4547, 22044, 5126, -19844, 29449, -32271, 8441, 32076, 3925, -11300, -16724, 28200, - 28517, 16614, 23812, 11842, -7429, -2017, 31656, 28541, -9508, 29407, -19326, 31418, -11683, -31290, -27152, 27895, - 27359, 12214, 20198, -14999, -17675, -1627, 6924, -13012, 16090, -4394, 22623, 7326, 14731, -22666, 5619, 8246, - -21094, 24702, -24098, 177, -25543, 7795, 3407, -13268, 28224, 2395, 22209, -7356, -14847, -17096, 573, -24037, - 408, -11555, -4589, -30546, 28103, 1932, -5766, 17412, -12476, 31235, -12378, -7716, 10001, -1316, -31217, 25555, - -20856, -609, -2316, -8801, -7228, 11854, -20490, 780, 16072, -17571, -14341, -2066, 18363, 17352, -12707, 17248, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 1018, 3453, -4734, 4519, -2935, 2118, -400, -554, -1520, 2196, 4977, 1893, -4744, -1409, -2973, -1053, - -2695, 4601, 512, 279, -205, -3241, -779, 4889, 1341, 3524, -1356, -1663, 1299, 2283, 635, 73, - 2413, 2428, 567, 624, 4, -1930, -4286, 3419, 918, -2062, -5114, 5068, -4379, -97, -1586, 1782, - 425, 4621, 1615, 355, -4616, 1349, -336, 825, 5175, 3135, -1841, 1160, -544, 4408, 2234, -2605, - 4188, 854, -3441, -1056, 4129, 2439, 636, 4967, -4035, -4782, -4580, -5268, 4102, -663, 2684, -4670, - -4855, 3760, 3057, 3535, -1287, 2680, -2740, -569, 341, 2139, -5156, 3827, -2388, 1639, -472, 1927, - 357, 5172, -794, -4003, 1284, 4144, 578, 693, 4347, 4784, 3615, 3125, 2984, 1122, -3715, 2113, - -3364, -573, 2271, -4328, 2178, 2909, -326, -4000, 5213, -4447, 454, -3995, -2576, -4428, -3337, 2529, - 223, 5309, 2998, 5120, 2790, -2050, -151, 2963, -4875, 2657, 2981, -2807, 4876, 2237, 1324, -4403, - 730, 2624, 2774, -5083, -4513, 40, 2206, 152, 1931, -1573, 886, 2625, -3085, -778, -970, -5107, - -3686, 4250, 3198, -5356, 3550, -3148, 2737, -3360, -2503, -2015, -909, 3096, 847, 5313, 1068, 834, - -4544, -1132, -2213, -2151, 193, -1722, 2884, -4393, -4095, 2662, -4808, -2788, 1085, -1992, 4123, 5334, - -3688, 5215, 5341, -1689, 3091, -2117, 5294, 4859, 5063, 3410, -116, 2205, -4742, -2374, -5116, -4720, - -2236, 3570, -2045, 2813, 2982, 2087, -1572, -4973, -3823, 458, 4828, 3891, -1009, -2419, 467, -4891, - -376, -1381, 5023, 1204, -268, 274, -3169, -3260, 3012, -1635, -1458, 4540, 3062, -4254, -1268, -1111, - 3784, 2230, -675, -2279, -2565, -4359, 1006, -1510, -2629, 5015, 5064, -2449, 4189, -5005, 864, 2487, - -1018, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - -6, -29827, -26238, -21593, 31369, -29626, -24976, -7722, 23056, -16236, -30351, 30053, 15736, 9343, -18845, -16925, - 7033, 14329, 512, 15127, -24269, -21161, -13579, -1767, 829, -6716, 29364, -12415, -6381, 31467, -11141, 1609, - 10093, -20100, -969, -23952, 22532, -25482, 6978, 8027, 26518, 17394, -4090, -25652, 23781, -5729, 11726, -21770, - 18345, -4083, 4175, -15517, 15864, -19643, 7856, -22215, 3639, -18881, 719, -19320, 15840, -7880, -31558, 22483, - -1956, -6314, 31887, 15328, -23007, -7289, -21892, 11623, -4547, 31058, 22044, 13164, 5126, -15511, -19844, 6594, - 29449, 11952, -32271, 6095, 8441, 23160, 32076, 22471, 3925, 6747, -11300, 12531, -16724, 8295, 28200, -7801, - 28517, -29644, 16614, -20899, 23812, 12336, 11842, 20661, -7429, 12976, -2017, 23093, 31656, -3998, 28541, 24129, - -9508, -61, 29407, -232, -19326, -13987, 31418, 12384, -11683, -31583, -31290, 24165, -27152, 26292, 27895, 8161, - 27359, 4797, 12214, 5120, 20198, 19454, -14999, -4717, -17675, 8289, -1627, 31497, 6924, 1725, -13012, 19661, - 16090, -30144, -4394, -9691, 22623, 28712, 7326, 4248, 14731, 3035, -22666, 24641, 5619, -24330, 8246, -13811, - -21094, -13158, 24702, -23788, -24098, 27572, 177, 13024, -25543, -29151, 7795, 7192, 3407, 27329, -13268, 12098, - 28224, -19564, 2395, -8807, 22209, 32070, -7356, -22313, -14847, 20070, -17096, 23836, 573, -14280, -24037, -1834, - 408, 32351, -11555, 4967, -4589, 18875, -30546, -6917, 28103, -26286, 1932, 18077, -5766, 29370, 17412, 19856, - -12476, 23026, 31235, -30467, -12378, -24025, -7716, -12653, 10001, -8758, -1316, -20173, -31217, -11123, 25555, 23269, - -20856, -29541, -609, 31924, -2316, 3346, -8801, -13500, -7228, 14237, 11854, 14780, -20490, -9374, 780, 16809, - 16072, 11446, -17571, -8935, -14341, 5369, -2066, -18918, 18363, 19863, 17352, -16273, -12707, 3699, 17248, 951, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - } -}; - -static inline __m256i sub_x16(__m256i a, __m256i b) { - //__asm__("vpsubw %1,%0,%0" : "+x"(a),"+x"(b)); - return _mm256_sub_epi16(a, b); -} - -static inline __m256i add_x16(__m256i a, __m256i b) { - return _mm256_add_epi16(a, b); -} - -static inline __m256i reduce_x16(const __m256i *qdata, __m256i x) { - __m256i y = _mm256_mulhi_epi16(x, qrecip_x16); - y = _mm256_mulhrs_epi16(y, qshift_x16); - y = _mm256_mullo_epi16(y, q_x16); - return sub_x16(x, y); -} - -static inline __m256i mulmod_x16_scaled(const __m256i *qdata, __m256i x, __m256i y, __m256i yqinv) { - __m256i b = _mm256_mulhi_epi16(x, y); - __m256i d = _mm256_mullo_epi16(x, yqinv); - __m256i e = _mm256_mulhi_epi16(d, q_x16); - return sub_x16(b, e); -} - -typedef union { - int8 data[32]; - __m256i _dummy; -} byte32; -static const byte32 shuffle_buf = { .data = { - 14, 15, 12, 13, 10, 11, 8, 9, 6, 7, 4, 5, 2, 3, 0, 1, - 14, 15, 12, 13, 10, 11, 8, 9, 6, 7, 4, 5, 2, 3, 0, 1, - } -}; -#define shuffle (*(__m256i *) shuffle_buf.data) - -static inline __m256i _mm256_loadu_reverse16(const __m256i *p) { - __m256i x = _mm256_loadu_si256(p); - x = _mm256_permute2x128_si256(x, x, 1); - x = _mm256_shuffle_epi8(x, shuffle); - return x; -} - -static void ntt128(int16 *f, int reps, const __m256i *qdata) { - __m256i f0, f1, f2, f3, g0, g1, g2, g3, h0, h1, h2, h3; - int16 *origf = f; - int rep; - __m256i zetainv_128_0 = zetainv(128, 0); - __m256i zetainv_qinv_128_0 = zetainv_qinv(128, 0); - __m256i zetainv_x4_32_0 = zetainv_x4(32, 0); - __m256i zetainv_x4_qinv_32_0 = zetainv_x4_qinv(32, 0); - __m256i zetainv_128_1 = zetainv(128, 1); - __m256i zetainv_qinv_128_1 = zetainv_qinv(128, 1); - __m256i zetainv_x4_32_1 = zetainv_x4(32, 1); - __m256i zetainv_x4_qinv_32_1 = zetainv_x4_qinv(32, 1); - for (rep = 0; rep < reps; ++rep) { - f1 = _mm256_loadu_si256((__m256i *) (f + 32)); - f3 = _mm256_loadu_si256((__m256i *) (f + 96)); - g3 = sub_x16(f1, f3); - g3 = mulmod_x16_scaled(qdata, g3, zeta4_x16, zeta4_x16_qinv); - g1 = add_x16(f1, f3); - - f0 = _mm256_loadu_si256((__m256i *) (f + 0)); - f2 = _mm256_loadu_si256((__m256i *) (f + 64)); - g2 = sub_x16(f0, f2); - g0 = add_x16(f0, f2); - - f3 = sub_x16(g3, g2); - f2 = add_x16(g2, g3); - f3 = mulmod_x16_scaled(qdata, f3, zetainv_128_0, zetainv_qinv_128_0); - f2 = mulmod_x16_scaled(qdata, f2, zeta(128, 0), zeta_qinv(128, 0)); - - g2 = _mm256_unpacklo_epi16(f2, f3); - g3 = _mm256_unpackhi_epi16(f2, f3); - - f1 = sub_x16(g0, g1); - f0 = add_x16(g0, g1); - f1 = mulmod_x16_scaled(qdata, f1, zeta(64, 0), zeta_qinv(64, 0)); - f0 = reduce_x16(qdata, f0); - - g0 = _mm256_unpacklo_epi16(f0, f1); - h0 = _mm256_unpacklo_epi32(g0, g2); - h1 = _mm256_unpackhi_epi32(g0, g2); - g1 = _mm256_unpackhi_epi16(f0, f1); - h2 = _mm256_unpacklo_epi32(g1, g3); - h3 = _mm256_unpackhi_epi32(g1, g3); - f0 = _mm256_permute2x128_si256(h0, h1, 0x20); - f2 = _mm256_permute2x128_si256(h0, h1, 0x31); - f1 = _mm256_permute2x128_si256(h2, h3, 0x20); - f3 = _mm256_permute2x128_si256(h2, h3, 0x31); - - _mm256_storeu_si256((__m256i *) (f + 0), f0); - _mm256_storeu_si256((__m256i *) (f + 64), f2); - _mm256_storeu_si256((__m256i *) (f + 32), f1); - _mm256_storeu_si256((__m256i *) (f + 96), f3); - - f1 = _mm256_loadu_si256((__m256i *) (f + 48)); - f3 = _mm256_loadu_si256((__m256i *) (f + 112)); - g3 = sub_x16(f1, f3); - g3 = mulmod_x16_scaled(qdata, g3, zeta4_x16, zeta4_x16_qinv); - g1 = add_x16(f1, f3); - - f0 = _mm256_loadu_si256((__m256i *) (f + 16)); - f2 = _mm256_loadu_si256((__m256i *) (f + 80)); - g2 = sub_x16(f0, f2); - g0 = add_x16(f0, f2); - - f3 = sub_x16(g3, g2); - f2 = add_x16(g2, g3); - f3 = mulmod_x16_scaled(qdata, f3, zetainv_128_1, zetainv_qinv_128_1); - f2 = mulmod_x16_scaled(qdata, f2, zeta(128, 1), zeta_qinv(128, 1)); - - g2 = _mm256_unpacklo_epi16(f2, f3); - g3 = _mm256_unpackhi_epi16(f2, f3); - - f1 = sub_x16(g0, g1); - f0 = add_x16(g0, g1); - f1 = mulmod_x16_scaled(qdata, f1, zeta(64, 1), zeta_qinv(64, 1)); - f0 = reduce_x16(qdata, f0); - - g0 = _mm256_unpacklo_epi16(f0, f1); - h0 = _mm256_unpacklo_epi32(g0, g2); - h1 = _mm256_unpackhi_epi32(g0, g2); - g1 = _mm256_unpackhi_epi16(f0, f1); - h2 = _mm256_unpacklo_epi32(g1, g3); - h3 = _mm256_unpackhi_epi32(g1, g3); - f0 = _mm256_permute2x128_si256(h0, h1, 0x20); - f2 = _mm256_permute2x128_si256(h0, h1, 0x31); - f1 = _mm256_permute2x128_si256(h2, h3, 0x20); - f3 = _mm256_permute2x128_si256(h2, h3, 0x31); - - _mm256_storeu_si256((__m256i *) (f + 16), f0); - _mm256_storeu_si256((__m256i *) (f + 80), f2); - _mm256_storeu_si256((__m256i *) (f + 48), f1); - _mm256_storeu_si256((__m256i *) (f + 112), f3); - - f += 128; - } - f = origf; - for (rep = 0; rep < reps; ++rep) { - f1 = _mm256_loadu_si256((__m256i *) (f + 64)); - f3 = _mm256_loadu_si256((__m256i *) (f + 80)); - g3 = sub_x16(f1, f3); - g3 = mulmod_x16_scaled(qdata, g3, zeta4_x16, zeta4_x16_qinv); - g1 = add_x16(f1, f3); - - f0 = _mm256_loadu_si256((__m256i *) (f + 0)); - f2 = _mm256_loadu_si256((__m256i *) (f + 16)); - g2 = sub_x16(f0, f2); - g0 = add_x16(f0, f2); - - f3 = sub_x16(g3, g2); - f2 = add_x16(g2, g3); - f3 = mulmod_x16_scaled(qdata, f3, zetainv_x4_32_0, zetainv_x4_qinv_32_0); - f2 = mulmod_x16_scaled(qdata, f2, zeta_x4(32, 0), zeta_x4_qinv(32, 0)); - - g2 = _mm256_unpacklo_epi64(f2, f3); - g3 = _mm256_unpackhi_epi64(f2, f3); - - f1 = sub_x16(g0, g1); - f0 = add_x16(g0, g1); - f1 = mulmod_x16_scaled(qdata, f1, zeta_x4(16, 0), zeta_x4_qinv(16, 0)); - f0 = reduce_x16(qdata, f0); - - g1 = _mm256_unpackhi_epi64(f0, f1); - g0 = _mm256_unpacklo_epi64(f0, f1); - f1 = _mm256_permute2x128_si256(g1, g3, 0x20); - f3 = _mm256_permute2x128_si256(g1, g3, 0x31); - f0 = _mm256_permute2x128_si256(g0, g2, 0x20); - f2 = _mm256_permute2x128_si256(g0, g2, 0x31); - - _mm256_storeu_si256((__m256i *) (f + 64), f1); - _mm256_storeu_si256((__m256i *) (f + 80), f3); - _mm256_storeu_si256((__m256i *) (f + 0), f0); - _mm256_storeu_si256((__m256i *) (f + 16), f2); - - f1 = _mm256_loadu_si256((__m256i *) (f + 96)); - f3 = _mm256_loadu_si256((__m256i *) (f + 112)); - g3 = sub_x16(f1, f3); - g3 = mulmod_x16_scaled(qdata, g3, zeta4_x16, zeta4_x16_qinv); - g1 = add_x16(f1, f3); - - f0 = _mm256_loadu_si256((__m256i *) (f + 32)); - f2 = _mm256_loadu_si256((__m256i *) (f + 48)); - g2 = sub_x16(f0, f2); - g0 = add_x16(f0, f2); - - f3 = sub_x16(g3, g2); - f2 = add_x16(g2, g3); - f3 = mulmod_x16_scaled(qdata, f3, zetainv_x4_32_1, zetainv_x4_qinv_32_1); - f2 = mulmod_x16_scaled(qdata, f2, zeta_x4(32, 1), zeta_x4_qinv(32, 1)); - - g2 = _mm256_unpacklo_epi64(f2, f3); - g3 = _mm256_unpackhi_epi64(f2, f3); - - f1 = sub_x16(g0, g1); - f0 = add_x16(g0, g1); - f1 = mulmod_x16_scaled(qdata, f1, zeta_x4(16, 1), zeta_x4_qinv(16, 1)); - f0 = reduce_x16(qdata, f0); - - g1 = _mm256_unpackhi_epi64(f0, f1); - g0 = _mm256_unpacklo_epi64(f0, f1); - f1 = _mm256_permute2x128_si256(g1, g3, 0x20); - f3 = _mm256_permute2x128_si256(g1, g3, 0x31); - f0 = _mm256_permute2x128_si256(g0, g2, 0x20); - f2 = _mm256_permute2x128_si256(g0, g2, 0x31); - - _mm256_storeu_si256((__m256i *) (f + 96), f1); - _mm256_storeu_si256((__m256i *) (f + 112), f3); - _mm256_storeu_si256((__m256i *) (f + 32), f0); - _mm256_storeu_si256((__m256i *) (f + 48), f2); - - f += 128; - } - f = origf; - for (rep = 0; rep < reps; ++rep) { - - f1 = _mm256_loadu_si256((__m256i *) (f + 16)); - f3 = _mm256_loadu_si256((__m256i *) (f + 48)); - g3 = sub_x16(f1, f3); - g3 = mulmod_x16_scaled(qdata, g3, zeta4_x16, zeta4_x16_qinv); - g1 = add_x16(f1, f3); - - f0 = _mm256_loadu_si256((__m256i *) (f + 0)); - f2 = _mm256_loadu_si256((__m256i *) (f + 32)); - g2 = sub_x16(f0, f2); - g0 = add_x16(f0, f2); - - f2 = add_x16(g2, g3); - f3 = sub_x16(g2, g3); - f2 = reduce_x16(qdata, f2); - f3 = reduce_x16(qdata, f3); - - f1 = sub_x16(g0, g1); - f0 = add_x16(g0, g1); - f0 = reduce_x16(qdata, f0); - - h0 = f0; - h1 = f1; - h2 = f2; - h3 = f3; - - f1 = _mm256_loadu_si256((__m256i *) (f + 80)); - f3 = _mm256_loadu_si256((__m256i *) (f + 112)); - g3 = sub_x16(f1, f3); - g3 = mulmod_x16_scaled(qdata, g3, zeta4_x16, zeta4_x16_qinv); - g1 = add_x16(f1, f3); - - f0 = _mm256_loadu_si256((__m256i *) (f + 64)); - f2 = _mm256_loadu_si256((__m256i *) (f + 96)); - g2 = sub_x16(f0, f2); - g0 = add_x16(f0, f2); - - f3 = sub_x16(g3, g2); - f2 = add_x16(g2, g3); - f3 = mulmod_x16_scaled(qdata, f3, zetainv8_x16, zetainv8_x16_qinv); - f2 = mulmod_x16_scaled(qdata, f2, zeta8_x16, zeta8_x16_qinv); - - f1 = sub_x16(g0, g1); - f0 = add_x16(g0, g1); - f1 = mulmod_x16_scaled(qdata, f1, zeta4_x16, zeta4_x16_qinv); - f0 = reduce_x16(qdata, f0); - - g0 = add_x16(h0, f0); - g1 = add_x16(h1, f1); - g2 = add_x16(h2, f2); - g3 = add_x16(h3, f3); - _mm256_storeu_si256((__m256i *) (f + 0), g0); - _mm256_storeu_si256((__m256i *) (f + 16), g1); - _mm256_storeu_si256((__m256i *) (f + 32), g2); - _mm256_storeu_si256((__m256i *) (f + 48), g3); - g0 = sub_x16(h0, f0); - g1 = sub_x16(h1, f1); - g2 = sub_x16(h2, f2); - g3 = sub_x16(h3, f3); - _mm256_storeu_si256((__m256i *) (f + 64), g0); - _mm256_storeu_si256((__m256i *) (f + 80), g1); - _mm256_storeu_si256((__m256i *) (f + 96), g2); - _mm256_storeu_si256((__m256i *) (f + 112), g3); - f += 128; - } -} - -static void ntt512(int16 *f, int reps, const __m256i *qdata) { - __m256i f0, f1, f2, f3, g0, g1, g2, g3; /* [-Werror=unused-variable] */ /* ,h0,h1,h2,h3; */ - int16 *origf = f; - int rep; - __m256i zetainv_512[8]; - __m256i zetainv_qinv_512[8]; - int i; - for (i = 0; i < 8; ++i) { - zetainv_512[i] = zetainv(512, i); - } - for (i = 0; i < 8; ++i) { - zetainv_qinv_512[i] = zetainv_qinv(512, i); - } - for (rep = 0; rep < reps; ++rep) { - for (i = 0; i < 8; ++i) { - f1 = _mm256_loadu_si256((__m256i *) (f + 16 * i + 128)); - f3 = _mm256_loadu_si256((__m256i *) (f + 16 * i + 384)); - g3 = sub_x16(f1, f3); - g3 = mulmod_x16_scaled(qdata, g3, zeta4_x16, zeta4_x16_qinv); - g1 = add_x16(f1, f3); - - f0 = _mm256_loadu_si256((__m256i *) (f + 16 * i)); - f2 = _mm256_loadu_si256((__m256i *) (f + 16 * i + 256)); - g2 = sub_x16(f0, f2); - g0 = add_x16(f0, f2); - - f3 = sub_x16(g3, g2); - f2 = add_x16(g2, g3); - f3 = mulmod_x16_scaled(qdata, f3, zetainv_512[i], zetainv_qinv_512[i]); - f2 = mulmod_x16_scaled(qdata, f2, zeta(512, i), zeta_qinv(512, i)); - - f1 = sub_x16(g0, g1); - f0 = add_x16(g0, g1); - f1 = mulmod_x16_scaled(qdata, f1, zeta(256, i), zeta_qinv(256, i)); - f0 = reduce_x16(qdata, f0); - - _mm256_storeu_si256((__m256i *) (f + 16 * i + 384), f3); - _mm256_storeu_si256((__m256i *) (f + 16 * i + 256), f2); - _mm256_storeu_si256((__m256i *) (f + 16 * i + 128), f1); - _mm256_storeu_si256((__m256i *) (f + 16 * i), f0); - - } - f += 512; - } - f = origf; - ntt128(f, reps * 4, qdata); -} - -void PQCLEAN_NTRULPR761_AVX2_ntt512_7681(int16 *f, int reps) { - ntt512(f, reps, (const __m256i *) qdata_7681.data); -} - -void PQCLEAN_NTRULPR761_AVX2_ntt512_10753(int16 *f, int reps) { - ntt512(f, reps, (const __m256i *) qdata_10753.data); -} - -static void invntt128(int16 *f, int reps, const __m256i *qdata) { - __m256i f0, f1, f2, f3, g0, g1, g2, g3, h0, h1, h2, h3; - int16 *origf = f; - int rep; - __m256i zetainv_x4_16_0 = zetainv_x4(16, 0); - __m256i zetainv_x4_qinv_16_0 = zetainv_x4_qinv(16, 0); - __m256i zetainv_x4_32_0 = zetainv_x4(32, 0); - __m256i zetainv_x4_qinv_32_0 = zetainv_x4_qinv(32, 0); - __m256i zetainv_64_0 = zetainv(64, 0); - __m256i zetainv_qinv_64_0 = zetainv_qinv(64, 0); - __m256i zetainv_128_0 = zetainv(128, 0); - __m256i zetainv_qinv_128_0 = zetainv_qinv(128, 0); - __m256i zetainv_x4_16_1 = zetainv_x4(16, 1); - __m256i zetainv_x4_qinv_16_1 = zetainv_x4_qinv(16, 1); - __m256i zetainv_x4_32_1 = zetainv_x4(32, 1); - __m256i zetainv_x4_qinv_32_1 = zetainv_x4_qinv(32, 1); - __m256i zetainv_64_1 = zetainv(64, 1); - __m256i zetainv_qinv_64_1 = zetainv_qinv(64, 1); - __m256i zetainv_128_1 = zetainv(128, 1); - __m256i zetainv_qinv_128_1 = zetainv_qinv(128, 1); - for (rep = 0; rep < reps; ++rep) { - f0 = _mm256_loadu_si256((__m256i *) (f + 0)); - f1 = _mm256_loadu_si256((__m256i *) (f + 64)); - f2 = _mm256_loadu_si256((__m256i *) (f + 16)); - f3 = _mm256_loadu_si256((__m256i *) (f + 80)); - g0 = _mm256_loadu_si256((__m256i *) (f + 32)); - g1 = _mm256_loadu_si256((__m256i *) (f + 96)); - g2 = _mm256_loadu_si256((__m256i *) (f + 48)); - g3 = _mm256_loadu_si256((__m256i *) (f + 112)); - - h1 = sub_x16(f0, f1); - h1 = reduce_x16(qdata, h1); - h0 = add_x16(f0, f1); - h3 = sub_x16(f2, f3); - h3 = mulmod_x16_scaled(qdata, h3, zeta4_x16, zeta4_x16_qinv); - h2 = add_x16(f2, f3); - f1 = sub_x16(g0, g1); - f1 = mulmod_x16_scaled(qdata, f1, zetainv8_x16, zetainv8_x16_qinv); - f0 = add_x16(g0, g1); - f3 = sub_x16(g2, g3); - f3 = mulmod_x16_scaled(qdata, f3, zeta8_x16, zeta8_x16_qinv); - f2 = add_x16(g2, g3); - - g0 = add_x16(h0, h2); - g0 = reduce_x16(qdata, g0); - g2 = sub_x16(h0, h2); - g2 = reduce_x16(qdata, g2); - g1 = sub_x16(h1, h3); - g3 = add_x16(h1, h3); - h2 = sub_x16(f0, f2); - h2 = mulmod_x16_scaled(qdata, h2, zeta4_x16, zeta4_x16_qinv); - h0 = add_x16(f0, f2); - h3 = add_x16(f1, f3); - h3 = mulmod_x16_scaled(qdata, h3, zeta4_x16, zeta4_x16_qinv); - h1 = sub_x16(f1, f3); - - f0 = add_x16(g0, h0); - g0 = sub_x16(g0, h0); - f1 = add_x16(g1, h1); - g1 = sub_x16(g1, h1); - f2 = sub_x16(g2, h2); - g2 = add_x16(g2, h2); - f3 = sub_x16(g3, h3); - g3 = add_x16(g3, h3); - - _mm256_storeu_si256((__m256i *) (f + 0), f0); - _mm256_storeu_si256((__m256i *) (f + 32), g0); - _mm256_storeu_si256((__m256i *) (f + 64), f1); - _mm256_storeu_si256((__m256i *) (f + 96), g1); - _mm256_storeu_si256((__m256i *) (f + 16), f2); - _mm256_storeu_si256((__m256i *) (f + 48), g2); - _mm256_storeu_si256((__m256i *) (f + 80), f3); - _mm256_storeu_si256((__m256i *) (f + 112), g3); - - f += 128; - } - f = origf; - for (rep = 0; rep < reps; ++rep) { - f0 = _mm256_loadu_si256((__m256i *) (f + 0)); - f1 = _mm256_loadu_si256((__m256i *) (f + 64)); - f2 = _mm256_loadu_si256((__m256i *) (f + 16)); - f3 = _mm256_loadu_si256((__m256i *) (f + 80)); - - g0 = _mm256_unpacklo_epi64(f0, f1); - g1 = _mm256_unpacklo_epi64(f2, f3); - g2 = _mm256_unpackhi_epi64(f0, f1); - g3 = _mm256_unpackhi_epi64(f2, f3); - f2 = _mm256_permute2x128_si256(g0, g1, 0x31); - f3 = _mm256_permute2x128_si256(g2, g3, 0x31); - f0 = _mm256_permute2x128_si256(g0, g1, 0x20); - f1 = _mm256_permute2x128_si256(g2, g3, 0x20); - - f2 = mulmod_x16_scaled(qdata, f2, zetainv_x4_32_0, zetainv_x4_qinv_32_0); - f3 = mulmod_x16_scaled(qdata, f3, zeta_x4(32, 0), zeta_x4_qinv(32, 0)); - - g3 = add_x16(f3, f2); - g3 = mulmod_x16_scaled(qdata, g3, zeta4_x16, zeta4_x16_qinv); - g2 = sub_x16(f3, f2); - - f0 = reduce_x16(qdata, f0); - f1 = mulmod_x16_scaled(qdata, f1, zetainv_x4_16_0, zetainv_x4_qinv_16_0); - - g1 = add_x16(f0, f1); - g0 = sub_x16(f0, f1); - - f1 = add_x16(g1, g3); - f3 = sub_x16(g1, g3); - f0 = add_x16(g0, g2); - f2 = sub_x16(g0, g2); - - _mm256_storeu_si256((__m256i *) (f + 64), f1); - _mm256_storeu_si256((__m256i *) (f + 80), f3); - _mm256_storeu_si256((__m256i *) (f + 0), f0); - _mm256_storeu_si256((__m256i *) (f + 16), f2); - - f0 = _mm256_loadu_si256((__m256i *) (f + 32)); - f1 = _mm256_loadu_si256((__m256i *) (f + 96)); - f2 = _mm256_loadu_si256((__m256i *) (f + 48)); - f3 = _mm256_loadu_si256((__m256i *) (f + 112)); - - g0 = _mm256_unpacklo_epi64(f0, f1); - g1 = _mm256_unpacklo_epi64(f2, f3); - g2 = _mm256_unpackhi_epi64(f0, f1); - g3 = _mm256_unpackhi_epi64(f2, f3); - f2 = _mm256_permute2x128_si256(g0, g1, 0x31); - f3 = _mm256_permute2x128_si256(g2, g3, 0x31); - f0 = _mm256_permute2x128_si256(g0, g1, 0x20); - f1 = _mm256_permute2x128_si256(g2, g3, 0x20); - - f2 = mulmod_x16_scaled(qdata, f2, zetainv_x4_32_1, zetainv_x4_qinv_32_1); - f3 = mulmod_x16_scaled(qdata, f3, zeta_x4(32, 1), zeta_x4_qinv(32, 1)); - - g3 = add_x16(f3, f2); - g3 = mulmod_x16_scaled(qdata, g3, zeta4_x16, zeta4_x16_qinv); - g2 = sub_x16(f3, f2); - - f0 = reduce_x16(qdata, f0); - f1 = mulmod_x16_scaled(qdata, f1, zetainv_x4_16_1, zetainv_x4_qinv_16_1); - - g1 = add_x16(f0, f1); - g0 = sub_x16(f0, f1); - - f1 = add_x16(g1, g3); - f3 = sub_x16(g1, g3); - f0 = add_x16(g0, g2); - f2 = sub_x16(g0, g2); - - _mm256_storeu_si256((__m256i *) (f + 96), f1); - _mm256_storeu_si256((__m256i *) (f + 112), f3); - _mm256_storeu_si256((__m256i *) (f + 32), f0); - _mm256_storeu_si256((__m256i *) (f + 48), f2); - - f += 128; - } - f = origf; - for (rep = 0; rep < reps; ++rep) { - f0 = _mm256_loadu_si256((__m256i *) (f + 0)); - f2 = _mm256_loadu_si256((__m256i *) (f + 64)); - f1 = _mm256_loadu_si256((__m256i *) (f + 32)); - f3 = _mm256_loadu_si256((__m256i *) (f + 96)); - - g0 = _mm256_permute2x128_si256(f0, f2, 0x20); - g2 = _mm256_permute2x128_si256(f0, f2, 0x31); - f0 = _mm256_unpacklo_epi16(g0, g2); - f2 = _mm256_unpackhi_epi16(g0, g2); - g1 = _mm256_permute2x128_si256(f1, f3, 0x20); - g3 = _mm256_permute2x128_si256(f1, f3, 0x31); - f1 = _mm256_unpacklo_epi16(g1, g3); - f3 = _mm256_unpackhi_epi16(g1, g3); - g1 = _mm256_unpackhi_epi16(f0, f2); - g0 = _mm256_unpacklo_epi16(f0, f2); - g3 = _mm256_unpackhi_epi16(f1, f3); - g2 = _mm256_unpacklo_epi16(f1, f3); - f2 = _mm256_unpacklo_epi64(g1, g3); - f3 = _mm256_unpackhi_epi64(g1, g3); - f0 = _mm256_unpacklo_epi64(g0, g2); - f1 = _mm256_unpackhi_epi64(g0, g2); - - f2 = mulmod_x16_scaled(qdata, f2, zetainv_128_0, zetainv_qinv_128_0); - f3 = mulmod_x16_scaled(qdata, f3, zeta(128, 0), zeta_qinv(128, 0)); - f0 = reduce_x16(qdata, f0); - f1 = mulmod_x16_scaled(qdata, f1, zetainv_64_0, zetainv_qinv_64_0); - - g3 = add_x16(f3, f2); - g3 = mulmod_x16_scaled(qdata, g3, zeta4_x16, zeta4_x16_qinv); - g1 = add_x16(f0, f1); - g2 = sub_x16(f3, f2); - g0 = sub_x16(f0, f1); - - f1 = add_x16(g1, g3); - f3 = sub_x16(g1, g3); - f0 = add_x16(g0, g2); - f2 = sub_x16(g0, g2); - - _mm256_storeu_si256((__m256i *) (f + 32), f1); - _mm256_storeu_si256((__m256i *) (f + 96), f3); - _mm256_storeu_si256((__m256i *) (f + 0), f0); - _mm256_storeu_si256((__m256i *) (f + 64), f2); - - f0 = _mm256_loadu_si256((__m256i *) (f + 16)); - f2 = _mm256_loadu_si256((__m256i *) (f + 80)); - f1 = _mm256_loadu_si256((__m256i *) (f + 48)); - f3 = _mm256_loadu_si256((__m256i *) (f + 112)); - - g0 = _mm256_permute2x128_si256(f0, f2, 0x20); - g2 = _mm256_permute2x128_si256(f0, f2, 0x31); - f0 = _mm256_unpacklo_epi16(g0, g2); - f2 = _mm256_unpackhi_epi16(g0, g2); - g1 = _mm256_permute2x128_si256(f1, f3, 0x20); - g3 = _mm256_permute2x128_si256(f1, f3, 0x31); - f1 = _mm256_unpacklo_epi16(g1, g3); - f3 = _mm256_unpackhi_epi16(g1, g3); - g1 = _mm256_unpackhi_epi16(f0, f2); - g0 = _mm256_unpacklo_epi16(f0, f2); - g3 = _mm256_unpackhi_epi16(f1, f3); - g2 = _mm256_unpacklo_epi16(f1, f3); - f2 = _mm256_unpacklo_epi64(g1, g3); - f3 = _mm256_unpackhi_epi64(g1, g3); - f0 = _mm256_unpacklo_epi64(g0, g2); - f1 = _mm256_unpackhi_epi64(g0, g2); - - f2 = mulmod_x16_scaled(qdata, f2, zetainv_128_1, zetainv_qinv_128_1); - f3 = mulmod_x16_scaled(qdata, f3, zeta(128, 1), zeta_qinv(128, 1)); - f0 = reduce_x16(qdata, f0); - f1 = mulmod_x16_scaled(qdata, f1, zetainv_64_1, zetainv_qinv_64_1); - - g3 = add_x16(f3, f2); - g3 = mulmod_x16_scaled(qdata, g3, zeta4_x16, zeta4_x16_qinv); - g1 = add_x16(f0, f1); - g2 = sub_x16(f3, f2); - g0 = sub_x16(f0, f1); - - f1 = add_x16(g1, g3); - f3 = sub_x16(g1, g3); - f0 = add_x16(g0, g2); - f2 = sub_x16(g0, g2); - - _mm256_storeu_si256((__m256i *) (f + 48), f1); - _mm256_storeu_si256((__m256i *) (f + 112), f3); - _mm256_storeu_si256((__m256i *) (f + 16), f0); - _mm256_storeu_si256((__m256i *) (f + 80), f2); - - f += 128; - } -} - -static void invntt512(int16 *f, int reps, const __m256i *qdata) { - __m256i f0, f1, f2, f3, g0, g1, g2, g3; /* [-Werror=unused-variable] */ /* ,h0,h1,h2,h3; */ - /* [-Werror=unused-variable] */ /* int16 *origf = f; */ - int rep; - __m256i zetainv_512[8]; - __m256i zetainv_qinv_512[8]; - __m256i zetainv_256[8]; - __m256i zetainv_qinv_256[8]; - int i; - for (i = 0; i < 8; ++i) { - zetainv_512[i] = zetainv(512, i); - } - for (i = 0; i < 8; ++i) { - zetainv_qinv_512[i] = zetainv_qinv(512, i); - } - for (i = 0; i < 8; ++i) { - zetainv_256[i] = zetainv(256, i); - } - for (i = 0; i < 8; ++i) { - zetainv_qinv_256[i] = zetainv_qinv(256, i); - } - invntt128(f, 4 * reps, qdata); - for (rep = 0; rep < reps; ++rep) { - for (i = 0; i < 8; ++i) { - f2 = _mm256_loadu_si256((__m256i *) (f + 16 * i + 256)); - f3 = _mm256_loadu_si256((__m256i *) (f + 16 * i + 384)); - - f2 = mulmod_x16_scaled(qdata, f2, zetainv_512[i], zetainv_qinv_512[i]); - f3 = mulmod_x16_scaled(qdata, f3, zeta(512, i), zeta_qinv(512, i)); - g3 = add_x16(f3, f2); - g3 = mulmod_x16_scaled(qdata, g3, zeta4_x16, zeta4_x16_qinv); - g2 = sub_x16(f3, f2); - - f0 = _mm256_loadu_si256((__m256i *) (f + 16 * i + 0)); - f1 = _mm256_loadu_si256((__m256i *) (f + 16 * i + 128)); - - f0 = reduce_x16(qdata, f0); - f1 = mulmod_x16_scaled(qdata, f1, zetainv_256[i], zetainv_qinv_256[i]); - g1 = add_x16(f0, f1); - g0 = sub_x16(f0, f1); - - f1 = add_x16(g1, g3); - f3 = sub_x16(g1, g3); - f0 = add_x16(g0, g2); - f2 = sub_x16(g0, g2); - - _mm256_storeu_si256((__m256i *) (f + 16 * i + 128), f1); - _mm256_storeu_si256((__m256i *) (f + 16 * i + 384), f3); - _mm256_storeu_si256((__m256i *) (f + 16 * i + 0), f0); - _mm256_storeu_si256((__m256i *) (f + 16 * i + 256), f2); - } - f += 512; - } -} - -void PQCLEAN_NTRULPR761_AVX2_invntt512_7681(int16 *f, int reps) { - invntt512(f, reps, (const __m256i *) qdata_7681.data); -} - -void PQCLEAN_NTRULPR761_AVX2_invntt512_10753(int16 *f, int reps) { - invntt512(f, reps, (const __m256i *) qdata_10753.data); -} diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_core_multsntrup761_ntt.h b/src/kem/ntru_prime/ntrulpr761/avx2/crypto_core_multsntrup761_ntt.h deleted file mode 100644 index 5be35b95..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_core_multsntrup761_ntt.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef ntt_H -#define ntt_H - -#include - - - -extern void PQCLEAN_NTRULPR761_AVX2_ntt512_7681(int16_t *f, int reps); -extern void PQCLEAN_NTRULPR761_AVX2_ntt512_10753(int16_t *f, int reps); -extern void PQCLEAN_NTRULPR761_AVX2_invntt512_7681(int16_t *f, int reps); -extern void PQCLEAN_NTRULPR761_AVX2_invntt512_10753(int16_t *f, int reps); - -#endif diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_256x16.c b/src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_256x16.c deleted file mode 100644 index e7bcbcd9..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_256x16.c +++ /dev/null @@ -1,11 +0,0 @@ -#include "crypto_decode_256x16.h" - - -void PQCLEAN_NTRULPR761_AVX2_crypto_decode_256x16(void *v, const unsigned char *s) { - unsigned char *T = v; - int i; - for (i = 0; i < 128; ++i) { - T[2 * i] = s[i] & 15; - T[2 * i + 1] = s[i] >> 4; - } -} diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_256x16.h b/src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_256x16.h deleted file mode 100644 index ec6d214e..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_256x16.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR761_AVX2_CRYPTO_DECODE_256X16_H -#define PQCLEAN_NTRULPR761_AVX2_CRYPTO_DECODE_256X16_H - -#include -#define PQCLEAN_NTRULPR761_AVX2_crypto_decode_256x16_STRBYTES 128 -#define PQCLEAN_NTRULPR761_AVX2_crypto_decode_256x16_ITEMS 256 -#define PQCLEAN_NTRULPR761_AVX2_crypto_decode_256x16_ITEMBYTES 1 - -void PQCLEAN_NTRULPR761_AVX2_crypto_decode_256x16(void *v, const unsigned char *s); -#endif diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_256x2.c b/src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_256x2.c deleted file mode 100644 index dd58d199..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_256x2.c +++ /dev/null @@ -1,27 +0,0 @@ -#include "crypto_decode_256x2.h" -#include -#include - -#define COPY _mm256_set_epi64x(0x0303030303030303,0x0202020202020202,0x0101010101010101,0x0000000000000000) -#define MASK _mm256_set1_epi64x((int64_t) 0x8040201008040201) -#define MASK2 _mm256_set1_epi64x(0x0101010101010101) - -void PQCLEAN_NTRULPR761_AVX2_crypto_decode_256x2(void *v, const unsigned char *s) { - __m256i *r = v; - int i; - - for (i = 0; i < 8; ++i) { - /* bytes s0 s1 s2 s3 */ - __m256i x = _mm256_set1_epi32(*(int32_t *) s); - /* s0 s1 s2 s3 s0 s1 s2 s3 s0 s1 s2 s3 s0 s1 s2 s3 s0 s1 s2 s3 s0 s1 s2 s3 s0 s1 s2 s3 s0 s1 s2 s3 */ - x = _mm256_shuffle_epi8(x, COPY); - /* s0 s0 s0 s0 s0 s0 s0 s0 s1 s1 s1 s1 s1 s1 s1 s1 s2 s2 s2 s2 s2 s2 s2 s2 s3 s3 s3 s3 s3 s3 s3 s3 */ - x = _mm256_andnot_si256(x, MASK); - x = _mm256_cmpeq_epi8(x, _mm256_setzero_si256()); - x &= MASK2; - _mm256_storeu_si256(r, x); - - s += 4; - r += 1; - } -} diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_256x2.h b/src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_256x2.h deleted file mode 100644 index 19661cc5..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_256x2.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR761_AVX2_CRYPTO_DECODE_256X2_H -#define PQCLEAN_NTRULPR761_AVX2_CRYPTO_DECODE_256X2_H - -#include -#define PQCLEAN_NTRULPR761_AVX2_crypto_decode_256x2_STRBYTES 32 -#define PQCLEAN_NTRULPR761_AVX2_crypto_decode_256x2_ITEMS 256 -#define PQCLEAN_NTRULPR761_AVX2_crypto_decode_256x2_ITEMBYTES 1 - -void PQCLEAN_NTRULPR761_AVX2_crypto_decode_256x2(void *v, const unsigned char *s); -#endif diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_761x1531.c b/src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_761x1531.c deleted file mode 100644 index 82ce77dd..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_761x1531.c +++ /dev/null @@ -1,432 +0,0 @@ -#include "crypto_decode_761x1531.h" -#include -/* auto-generated; do not edit */ - -#define int16 int16_t -#define int32 int32_t - -static inline int16 mullo(int16 x, int16 y) { - return x * y; -} - -static inline int16 mulhi(int16 x, int16 y) { - return (int16) ((x * (int32)y) >> 16); -} - -static inline __m256i add(__m256i x, __m256i y) { - return _mm256_add_epi16(x, y); -} - -static inline __m256i sub(__m256i x, __m256i y) { - return _mm256_sub_epi16(x, y); -} - -static inline __m256i shiftleftconst(__m256i x, int16 y) { - return _mm256_slli_epi16(x, y); -} - -static inline __m256i signedshiftrightconst(__m256i x, int16 y) { - return _mm256_srai_epi16(x, y); -} - -static inline __m256i subconst(__m256i x, int16 y) { - return sub(x, _mm256_set1_epi16(y)); -} - -static inline __m256i mulloconst(__m256i x, int16 y) { - return _mm256_mullo_epi16(x, _mm256_set1_epi16(y)); -} - -static inline __m256i mulhiconst(__m256i x, int16 y) { - return _mm256_mulhi_epi16(x, _mm256_set1_epi16(y)); -} - -static inline __m256i ifgesubconst(__m256i x, int16 y) { - __m256i y16 = _mm256_set1_epi16(y); - __m256i top16 = _mm256_set1_epi16((int16)(y - 1)); - return sub(x, _mm256_cmpgt_epi16(x, top16) & y16); -} - -static inline __m256i ifnegaddconst(__m256i x, int16 y) { - return add(x, signedshiftrightconst(x, 15) & _mm256_set1_epi16(y)); -} - -void PQCLEAN_NTRULPR761_AVX2_crypto_decode_761x1531(void *v, const unsigned char *s) { - int16 *R0 = v; - int16 R1[381], R2[191], R3[96], R4[48], R5[24], R6[12], R7[6], R8[3], R9[2], R10[1]; - long long i; - int16 a0, a1, a2; - __m256i A0, A1, A2, S0, S1, B0, B1, C0, C1; - - s += PQCLEAN_NTRULPR761_AVX2_crypto_decode_761x1531_STRBYTES; - a1 = 0; - a1 += *--s; /* 0...255 */ - a1 = mulhi(a1, -84) - mulhi(mullo(a1, -4828), 3475); - a1 += *--s; /* -1738...1992 */ - a1 += (a1 >> 15) & 3475; /* 0...3474 */ - R10[0] = a1; - - /* R10 ------> R9: reconstruct mod 1*[593]+[1500] */ - - i = 0; - s -= 1; - a2 = a0 = R10[0]; - a0 = mulhi(a0, 60) - mulhi(mullo(a0, -28292), 593); /* -297...311 */ - a0 += s[1 * i + 0]; /* -297...566 */ - a0 += (a0 >> 15) & 593; /* 0...592 */ - a1 = (int16) ((a2 << 8) + s[i] - a0); - a1 = mullo(a1, -31055); - - /* invalid inputs might need reduction mod 1500 */ - a1 -= 1500; - a1 += (a1 >> 15) & 1500; - - R9[0] = a0; - R9[1] = a1; - s -= 0; - - /* R9 ------> R8: reconstruct mod 2*[6232]+[1500] */ - - R8[2] = R9[1]; - s -= 2; - for (i = 0; i >= 0; --i) { - a2 = a0 = R9[i]; - a0 = mulhi(a0, 672) - mulhi(mullo(a0, -2692), 6232); /* -3116...3284 */ - a0 += s[2 * i + 1]; /* -3116...3539 */ - a0 = mulhi(a0, 672) - mulhi(mullo(a0, -2692), 6232); /* -3148...3152 */ - a0 += s[2 * i + 0]; /* -3148...3407 */ - a0 += (a0 >> 15) & 6232; /* 0...6231 */ - a1 = (int16) ((a2 << 13) + (s[2 * i + 1] << 5) + ((s[2 * i] - a0) >> 3)); - a1 = mullo(a1, 12451); - - /* invalid inputs might need reduction mod 6232 */ - a1 -= 6232; - a1 += (a1 >> 15) & 6232; - - R8[2 * i] = a0; - R8[2 * i + 1] = a1; - } - - /* R8 ------> R7: reconstruct mod 5*[1263]+[304] */ - - i = 0; - s -= 1; - a2 = a0 = R8[2]; - a0 = mulhi(a0, -476) - mulhi(mullo(a0, -13284), 1263); /* -751...631 */ - a0 += s[1 * i + 0]; /* -751...886 */ - a0 += (a0 >> 15) & 1263; /* 0...1262 */ - a1 = (int16) ((a2 << 8) + s[i] - a0); - a1 = mullo(a1, -22001); - - /* invalid inputs might need reduction mod 304 */ - a1 -= 304; - a1 += (a1 >> 15) & 304; - - R7[4] = a0; - R7[5] = a1; - s -= 2; - for (i = 1; i >= 0; --i) { - a2 = a0 = R8[i]; - a0 = mulhi(a0, -476) - mulhi(mullo(a0, -13284), 1263); /* -751...631 */ - a0 += s[1 * i + 0]; /* -751...886 */ - a0 += (a0 >> 15) & 1263; /* 0...1262 */ - a1 = (int16) ((a2 << 8) + s[i] - a0); - a1 = mullo(a1, -22001); - - /* invalid inputs might need reduction mod 1263 */ - a1 -= 1263; - a1 += (a1 >> 15) & 1263; - - R7[2 * i] = a0; - R7[2 * i + 1] = a1; - } - - /* R7 ------> R6: reconstruct mod 11*[9097]+[2188] */ - - i = 0; - s -= 2; - a0 = R7[5]; - a0 = mulhi(a0, 2348) - mulhi(mullo(a0, -1844), 9097); /* -4549...5135 */ - a0 += s[2 * i + 1]; /* -4549...5390 */ - a0 = mulhi(a0, 2348) - mulhi(mullo(a0, -1844), 9097); /* -4712...4741 */ - a0 += s[2 * i + 0]; /* -4712...4996 */ - a0 += (a0 >> 15) & 9097; /* 0...9096 */ - a1 = (int16) ((s[2 * i + 1] << 8) + s[2 * i] - a0); - a1 = mullo(a1, 17081); - - /* invalid inputs might need reduction mod 2188 */ - a1 -= 2188; - a1 += (a1 >> 15) & 2188; - - R6[10] = a0; - R6[11] = a1; - s -= 10; - for (i = 4; i >= 0; --i) { - a0 = R7[i]; - a0 = mulhi(a0, 2348) - mulhi(mullo(a0, -1844), 9097); /* -4549...5135 */ - a0 += s[2 * i + 1]; /* -4549...5390 */ - a0 = mulhi(a0, 2348) - mulhi(mullo(a0, -1844), 9097); /* -4712...4741 */ - a0 += s[2 * i + 0]; /* -4712...4996 */ - a0 += (a0 >> 15) & 9097; /* 0...9096 */ - a1 = (int16) ((s[2 * i + 1] << 8) + s[2 * i] - a0); - a1 = mullo(a1, 17081); - - /* invalid inputs might need reduction mod 9097 */ - a1 -= 9097; - a1 += (a1 >> 15) & 9097; - - R6[2 * i] = a0; - R6[2 * i + 1] = a1; - } - - /* R6 ------> R5: reconstruct mod 23*[1526]+[367] */ - - i = 0; - s -= 1; - a2 = a0 = R6[11]; - a0 = mulhi(a0, 372) - mulhi(mullo(a0, -10994), 1526); /* -763...856 */ - a0 += s[1 * i + 0]; /* -763...1111 */ - a0 += (a0 >> 15) & 1526; /* 0...1525 */ - a1 = (int16) ((a2 << 7) + ((s[i] - a0) >> 1)); - a1 = mullo(a1, -18381); - - /* invalid inputs might need reduction mod 367 */ - a1 -= 367; - a1 += (a1 >> 15) & 367; - - R5[22] = a0; - R5[23] = a1; - s -= 11; - for (i = 10; i >= 0; --i) { - a2 = a0 = R6[i]; - a0 = mulhi(a0, 372) - mulhi(mullo(a0, -10994), 1526); /* -763...856 */ - a0 += s[1 * i + 0]; /* -763...1111 */ - a0 += (a0 >> 15) & 1526; /* 0...1525 */ - a1 = (int16) ((a2 << 7) + ((s[i] - a0) >> 1)); - a1 = mullo(a1, -18381); - - /* invalid inputs might need reduction mod 1526 */ - a1 -= 1526; - a1 += (a1 >> 15) & 1526; - - R5[2 * i] = a0; - R5[2 * i + 1] = a1; - } - - /* R5 ------> R4: reconstruct mod 47*[625]+[150] */ - - i = 0; - s -= 1; - a2 = a0 = R5[23]; - a0 = mulhi(a0, -284) - mulhi(mullo(a0, -26844), 625); /* -384...312 */ - a0 += s[1 * i + 0]; /* -384...567 */ - a0 += (a0 >> 15) & 625; /* 0...624 */ - a1 = (int16) ((a2 << 8) + s[i] - a0); - a1 = mullo(a1, 32401); - - /* invalid inputs might need reduction mod 150 */ - a1 -= 150; - a1 += (a1 >> 15) & 150; - - R4[46] = a0; - R4[47] = a1; - s -= 23; - i = 7; - for (;;) { - A2 = A0 = _mm256_loadu_si256((__m256i *) &R5[i]); - S0 = _mm256_cvtepu8_epi16(_mm_loadu_si128((__m128i *) (s + i))); - A0 = sub(mulhiconst(A0, -284), mulhiconst(mulloconst(A0, -26844), 625)); /* -384...312 */ - A0 = add(A0, S0); /* -384...567 */ - A0 = ifnegaddconst(A0, 625); /* 0...624 */ - A1 = add(shiftleftconst(A2, 8), sub(S0, A0)); - A1 = mulloconst(A1, 32401); - - /* invalid inputs might need reduction mod 625 */ - A1 = ifgesubconst(A1, 625); - - /* A0: r0r2r4r6r8r10r12r14 r16r18r20r22r24r26r28r30 */ - /* A1: r1r3r5r7r9r11r13r15 r17r19r21r23r25r27r29r31 */ - B0 = _mm256_unpacklo_epi16(A0, A1); - B1 = _mm256_unpackhi_epi16(A0, A1); - /* B0: r0r1r2r3r4r5r6r7 r16r17r18r19r20r21r22r23 */ - /* B1: r8r9r10r11r12r13r14r15 r24r25r26r27r28r29r30r31 */ - C0 = _mm256_permute2x128_si256(B0, B1, 0x20); - C1 = _mm256_permute2x128_si256(B0, B1, 0x31); - /* C0: r0r1r2r3r4r5r6r7 r8r9r10r11r12r13r14r15 */ - /* C1: r16r17r18r19r20r21r22r23 r24r25r26r27r28r29r30r31 */ - _mm256_storeu_si256((__m256i *) (&R4[2 * i]), C0); - _mm256_storeu_si256((__m256i *) (16 + &R4[2 * i]), C1); - if (!i) { - break; - } - i = -16 - ((~15) & -i); - } - - /* R4 ------> R3: reconstruct mod 95*[6400]+[1531] */ - - i = 0; - s -= 2; - a2 = a0 = R4[47]; - a0 = mulhi(a0, 2816) - mulhi(mullo(a0, -2621), 6400); /* -3200...3904 */ - a0 += s[2 * i + 1]; /* -3200...4159 */ - a0 = mulhi(a0, 2816) - mulhi(mullo(a0, -2621), 6400); /* -3338...3378 */ - a0 += s[2 * i + 0]; /* -3338...3633 */ - a0 += (a0 >> 15) & 6400; /* 0...6399 */ - a1 = (int16) ((a2 << 8) + s[2 * i + 1] + ((s[2 * i] - a0) >> 8)); - a1 = mullo(a1, 23593); - - /* invalid inputs might need reduction mod 1531 */ - a1 -= 1531; - a1 += (a1 >> 15) & 1531; - - R3[94] = a0; - R3[95] = a1; - s -= 94; - i = 31; - for (;;) { - A2 = A0 = _mm256_loadu_si256((__m256i *) &R4[i]); - S0 = _mm256_loadu_si256((__m256i *) (s + 2 * i)); - S1 = _mm256_srli_epi16(S0, 8); - S0 &= _mm256_set1_epi16(255); - A0 = sub(mulhiconst(A0, 2816), mulhiconst(mulloconst(A0, -2621), 6400)); /* -3200...3904 */ - A0 = add(A0, S1); /* -3200...4159 */ - A0 = sub(mulhiconst(A0, 2816), mulhiconst(mulloconst(A0, -2621), 6400)); /* -3338...3378 */ - A0 = add(A0, S0); /* -3338...3633 */ - A0 = ifnegaddconst(A0, 6400); /* 0...6399 */ - A1 = add(add(shiftleftconst(A2, 8), S1), signedshiftrightconst(sub(S0, A0), 8)); - A1 = mulloconst(A1, 23593); - - /* invalid inputs might need reduction mod 6400 */ - A1 = ifgesubconst(A1, 6400); - - /* A0: r0r2r4r6r8r10r12r14 r16r18r20r22r24r26r28r30 */ - /* A1: r1r3r5r7r9r11r13r15 r17r19r21r23r25r27r29r31 */ - B0 = _mm256_unpacklo_epi16(A0, A1); - B1 = _mm256_unpackhi_epi16(A0, A1); - /* B0: r0r1r2r3r4r5r6r7 r16r17r18r19r20r21r22r23 */ - /* B1: r8r9r10r11r12r13r14r15 r24r25r26r27r28r29r30r31 */ - C0 = _mm256_permute2x128_si256(B0, B1, 0x20); - C1 = _mm256_permute2x128_si256(B0, B1, 0x31); - /* C0: r0r1r2r3r4r5r6r7 r8r9r10r11r12r13r14r15 */ - /* C1: r16r17r18r19r20r21r22r23 r24r25r26r27r28r29r30r31 */ - _mm256_storeu_si256((__m256i *) (&R3[2 * i]), C0); - _mm256_storeu_si256((__m256i *) (16 + &R3[2 * i]), C1); - if (!i) { - break; - } - i = -16 - ((~15) & -i); - } - - /* R3 ------> R2: reconstruct mod 190*[1280]+[1531] */ - - R2[190] = R3[95]; - s -= 95; - i = 79; - for (;;) { - A2 = A0 = _mm256_loadu_si256((__m256i *) &R3[i]); - S0 = _mm256_cvtepu8_epi16(_mm_loadu_si128((__m128i *) (s + i))); - A0 = sub(mulhiconst(A0, 256), mulhiconst(mulloconst(A0, -13107), 1280)); /* -640...704 */ - A0 = add(A0, S0); /* -640...959 */ - A0 = ifnegaddconst(A0, 1280); /* 0...1279 */ - A1 = add(A2, signedshiftrightconst(sub(S0, A0), 8)); - A1 = mulloconst(A1, -13107); - - /* invalid inputs might need reduction mod 1280 */ - A1 = ifgesubconst(A1, 1280); - - /* A0: r0r2r4r6r8r10r12r14 r16r18r20r22r24r26r28r30 */ - /* A1: r1r3r5r7r9r11r13r15 r17r19r21r23r25r27r29r31 */ - B0 = _mm256_unpacklo_epi16(A0, A1); - B1 = _mm256_unpackhi_epi16(A0, A1); - /* B0: r0r1r2r3r4r5r6r7 r16r17r18r19r20r21r22r23 */ - /* B1: r8r9r10r11r12r13r14r15 r24r25r26r27r28r29r30r31 */ - C0 = _mm256_permute2x128_si256(B0, B1, 0x20); - C1 = _mm256_permute2x128_si256(B0, B1, 0x31); - /* C0: r0r1r2r3r4r5r6r7 r8r9r10r11r12r13r14r15 */ - /* C1: r16r17r18r19r20r21r22r23 r24r25r26r27r28r29r30r31 */ - _mm256_storeu_si256((__m256i *) (&R2[2 * i]), C0); - _mm256_storeu_si256((__m256i *) (16 + &R2[2 * i]), C1); - if (!i) { - break; - } - i = -16 - ((~15) & -i); - } - - /* R2 ------> R1: reconstruct mod 380*[9157]+[1531] */ - - R1[380] = R2[190]; - s -= 380; - i = 174; - for (;;) { - A0 = _mm256_loadu_si256((__m256i *) &R2[i]); - S0 = _mm256_loadu_si256((__m256i *) (s + 2 * i)); - S1 = _mm256_srli_epi16(S0, 8); - S0 &= _mm256_set1_epi16(255); - A0 = sub(mulhiconst(A0, 1592), mulhiconst(mulloconst(A0, -1832), 9157)); /* -4579...4976 */ - A0 = add(A0, S1); /* -4579...5231 */ - A0 = sub(mulhiconst(A0, 1592), mulhiconst(mulloconst(A0, -1832), 9157)); /* -4690...4705 */ - A0 = add(A0, S0); /* -4690...4960 */ - A0 = ifnegaddconst(A0, 9157); /* 0...9156 */ - A1 = add(shiftleftconst(S1, 8), sub(S0, A0)); - A1 = mulloconst(A1, 25357); - - /* invalid inputs might need reduction mod 9157 */ - A1 = ifgesubconst(A1, 9157); - - /* A0: r0r2r4r6r8r10r12r14 r16r18r20r22r24r26r28r30 */ - /* A1: r1r3r5r7r9r11r13r15 r17r19r21r23r25r27r29r31 */ - B0 = _mm256_unpacklo_epi16(A0, A1); - B1 = _mm256_unpackhi_epi16(A0, A1); - /* B0: r0r1r2r3r4r5r6r7 r16r17r18r19r20r21r22r23 */ - /* B1: r8r9r10r11r12r13r14r15 r24r25r26r27r28r29r30r31 */ - C0 = _mm256_permute2x128_si256(B0, B1, 0x20); - C1 = _mm256_permute2x128_si256(B0, B1, 0x31); - /* C0: r0r1r2r3r4r5r6r7 r8r9r10r11r12r13r14r15 */ - /* C1: r16r17r18r19r20r21r22r23 r24r25r26r27r28r29r30r31 */ - _mm256_storeu_si256((__m256i *) (&R1[2 * i]), C0); - _mm256_storeu_si256((__m256i *) (16 + &R1[2 * i]), C1); - if (!i) { - break; - } - i = -16 - ((~15) & -i); - } - - /* R1 ------> R0: reconstruct mod 761*[1531] */ - - R0[760] = (int16) (3 * R1[380] - 2295); - s -= 380; - i = 364; - for (;;) { - A2 = A0 = _mm256_loadu_si256((__m256i *) &R1[i]); - S0 = _mm256_cvtepu8_epi16(_mm_loadu_si128((__m128i *) (s + i))); - A0 = sub(mulhiconst(A0, 518), mulhiconst(mulloconst(A0, -10958), 1531)); /* -766...895 */ - A0 = add(A0, S0); /* -766...1150 */ - A0 = ifnegaddconst(A0, 1531); /* 0...1530 */ - A1 = add(shiftleftconst(A2, 8), sub(S0, A0)); - A1 = mulloconst(A1, 15667); - - /* invalid inputs might need reduction mod 1531 */ - A1 = ifgesubconst(A1, 1531); - - A0 = mulloconst(A0, 3); - A1 = mulloconst(A1, 3); - A0 = subconst(A0, 2295); - A1 = subconst(A1, 2295); - /* A0: r0r2r4r6r8r10r12r14 r16r18r20r22r24r26r28r30 */ - /* A1: r1r3r5r7r9r11r13r15 r17r19r21r23r25r27r29r31 */ - B0 = _mm256_unpacklo_epi16(A0, A1); - B1 = _mm256_unpackhi_epi16(A0, A1); - /* B0: r0r1r2r3r4r5r6r7 r16r17r18r19r20r21r22r23 */ - /* B1: r8r9r10r11r12r13r14r15 r24r25r26r27r28r29r30r31 */ - C0 = _mm256_permute2x128_si256(B0, B1, 0x20); - C1 = _mm256_permute2x128_si256(B0, B1, 0x31); - /* C0: r0r1r2r3r4r5r6r7 r8r9r10r11r12r13r14r15 */ - /* C1: r16r17r18r19r20r21r22r23 r24r25r26r27r28r29r30r31 */ - _mm256_storeu_si256((__m256i *) (&R0[2 * i]), C0); - _mm256_storeu_si256((__m256i *) (16 + &R0[2 * i]), C1); - if (!i) { - break; - } - i = -16 - ((~15) & -i); - } -} diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_761x1531.h b/src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_761x1531.h deleted file mode 100644 index a862cd5a..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_761x1531.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR761_AVX2_CRYPTO_DECODE_761X1531_H -#define PQCLEAN_NTRULPR761_AVX2_CRYPTO_DECODE_761X1531_H - -#include -#define PQCLEAN_NTRULPR761_AVX2_crypto_decode_761x1531_STRBYTES 1007 -#define PQCLEAN_NTRULPR761_AVX2_crypto_decode_761x1531_ITEMS 761 -#define PQCLEAN_NTRULPR761_AVX2_crypto_decode_761x1531_ITEMBYTES 2 - -void PQCLEAN_NTRULPR761_AVX2_crypto_decode_761x1531(void *v, const unsigned char *s); -#endif diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_761x3.c b/src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_761x3.c deleted file mode 100644 index 06013fd2..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_761x3.c +++ /dev/null @@ -1,65 +0,0 @@ -#include "crypto_decode_761x3.h" -#include -#define uint8 uint8_t - -#define p 761 -#define loops 6 -#define overshoot 2 - -void PQCLEAN_NTRULPR761_AVX2_crypto_decode_761x3(void *v, const unsigned char *s) { - uint8 *f = v; - int loop; - uint8 *nextf = f + 128 - 4 * overshoot; - const unsigned char *nexts = s + 32 - overshoot; - - for (loop = loops; loop > 0; --loop) { - __m256i s0 = _mm256_loadu_si256((const __m256i *) s); - s = nexts; - nexts += 32; - - __m256i s1 = _mm256_srli_epi16(s0 & _mm256_set1_epi8(-16), 4); - s0 &= _mm256_set1_epi8(15); - - __m256i a0 = _mm256_unpacklo_epi8(s0, s1); - /* 0 0>>4 1 1>>4 2 2>>4 3 3>>4 4 4>>4 5 5>>4 6 6>>4 7 7>>4 */ - /* 16 16>>4 ... */ - __m256i a1 = _mm256_unpackhi_epi8(s0, s1); - /* 8 8>>4 9 9>>4 10 10>>4 ... */ - /* 24 24>>4 ... */ - - __m256i a2 = _mm256_srli_epi16(a0 & _mm256_set1_epi8(12), 2); - __m256i a3 = _mm256_srli_epi16(a1 & _mm256_set1_epi8(12), 2); - a0 &= _mm256_set1_epi8(3); - a1 &= _mm256_set1_epi8(3); - - __m256i b0 = _mm256_unpacklo_epi8(a0, a2); - /* 0 0>>2 0>>4 0>>6 1 1>>2 1>>4 1>>6 */ - /* 2 2>>2 2>>4 2>>6 3 3>>2 3>>4 3>.6 */ - /* 16 16>>2 16>>4 16>>6 ... */ - __m256i b2 = _mm256_unpackhi_epi8(a0, a2); - /* 4 4>>2 ... */ - __m256i b1 = _mm256_unpacklo_epi8(a1, a3); - /* 8 8>>2 ... */ - __m256i b3 = _mm256_unpackhi_epi8(a1, a3); - /* 12 12>>2 ... */ - - __m256i f0 = _mm256_permute2x128_si256(b0, b2, 0x20); - __m256i f2 = _mm256_permute2x128_si256(b0, b2, 0x31); - __m256i f1 = _mm256_permute2x128_si256(b1, b3, 0x20); - __m256i f3 = _mm256_permute2x128_si256(b1, b3, 0x31); - - f0 = _mm256_add_epi8(f0, _mm256_set1_epi8(-1)); - f1 = _mm256_add_epi8(f1, _mm256_set1_epi8(-1)); - f2 = _mm256_add_epi8(f2, _mm256_set1_epi8(-1)); - f3 = _mm256_add_epi8(f3, _mm256_set1_epi8(-1)); - - _mm256_storeu_si256((__m256i *) (f + 0), f0); - _mm256_storeu_si256((__m256i *) (f + 32), f1); - _mm256_storeu_si256((__m256i *) (f + 64), f2); - _mm256_storeu_si256((__m256i *) (f + 96), f3); - f = nextf; - nextf += 128; - } - - *f = (uint8) ((*s & 3) - 1); -} diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_761x3.h b/src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_761x3.h deleted file mode 100644 index ce7e0bfc..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_761x3.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR761_AVX2_CRYPTO_DECODE_761X3_H -#define PQCLEAN_NTRULPR761_AVX2_CRYPTO_DECODE_761X3_H - -#include -#define PQCLEAN_NTRULPR761_AVX2_crypto_decode_761x3_STRBYTES 191 -#define PQCLEAN_NTRULPR761_AVX2_crypto_decode_761x3_ITEMS 761 -#define PQCLEAN_NTRULPR761_AVX2_crypto_decode_761x3_ITEMBYTES 1 - -void PQCLEAN_NTRULPR761_AVX2_crypto_decode_761x3(void *v, const unsigned char *s); -#endif diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_761xint16.c b/src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_761xint16.c deleted file mode 100644 index 6c2f717a..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_761xint16.c +++ /dev/null @@ -1,15 +0,0 @@ -#include "crypto_decode_761xint16.h" - - -void PQCLEAN_NTRULPR761_AVX2_crypto_decode_761xint16(void *v, const unsigned char *s) { - uint16_t *x = v; - int i; - - for (i = 0; i < 761; ++i) { - uint16_t u0 = s[0]; - uint16_t u1 = s[1]; - *x = (uint16_t) (u0 | (u1 << 8)); - x += 1; - s += 2; - } -} diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_761xint16.h b/src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_761xint16.h deleted file mode 100644 index b6c48d9c..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_761xint16.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR761_AVX2_CRYPTO_DECODE_761XINT16_H -#define PQCLEAN_NTRULPR761_AVX2_CRYPTO_DECODE_761XINT16_H - -#include -#define PQCLEAN_NTRULPR761_AVX2_crypto_decode_761xint16_STRBYTES 1522 -#define PQCLEAN_NTRULPR761_AVX2_crypto_decode_761xint16_ITEMBYTES 2 -#define PQCLEAN_NTRULPR761_AVX2_crypto_decode_761xint16_ITEMS 761 - -void PQCLEAN_NTRULPR761_AVX2_crypto_decode_761xint16(void *v, const unsigned char *s); -#endif diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_761xint32.c b/src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_761xint32.c deleted file mode 100644 index 2ac1fe5e..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_761xint32.c +++ /dev/null @@ -1,20 +0,0 @@ -#include "crypto_decode_761xint32.h" - - -void PQCLEAN_NTRULPR761_AVX2_crypto_decode_761xint32(void *v, const unsigned char *s) { - uint32_t *x = v; - int i; - - for (i = 0; i < 761; ++i) { - uint32_t u0 = s[0]; - uint32_t u1 = s[1]; - uint32_t u2 = s[2]; - uint32_t u3 = s[3]; - u1 <<= 8; - u2 <<= 16; - u3 <<= 24; - *x = u0 | u1 | u2 | u3; - x += 1; - s += 4; - } -} diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_761xint32.h b/src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_761xint32.h deleted file mode 100644 index 213d3111..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_decode_761xint32.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR761_AVX2_CRYPTO_DECODE_761XINT32_H -#define PQCLEAN_NTRULPR761_AVX2_CRYPTO_DECODE_761XINT32_H - -#include -#define PQCLEAN_NTRULPR761_AVX2_crypto_decode_761xint32_STRBYTES 3044 -#define PQCLEAN_NTRULPR761_AVX2_crypto_decode_761xint32_ITEMBYTES 4 -#define PQCLEAN_NTRULPR761_AVX2_crypto_decode_761xint32_ITEMS 761 - -void PQCLEAN_NTRULPR761_AVX2_crypto_decode_761xint32(void *v, const unsigned char *s); -#endif diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_256x16.c b/src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_256x16.c deleted file mode 100644 index 073c52e9..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_256x16.c +++ /dev/null @@ -1,10 +0,0 @@ -#include "crypto_encode_256x16.h" - - -void PQCLEAN_NTRULPR761_AVX2_crypto_encode_256x16(unsigned char *s, const void *v) { - const unsigned char *T = v; - int i; - for (i = 0; i < 128; ++i) { - s[i] = (unsigned char) (T[2 * i] + (T[2 * i + 1] << 4)); - } -} diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_256x16.h b/src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_256x16.h deleted file mode 100644 index f4763596..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_256x16.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR761_AVX2_CRYPTO_ENCODE_256X16_H -#define PQCLEAN_NTRULPR761_AVX2_CRYPTO_ENCODE_256X16_H - -#include -#define PQCLEAN_NTRULPR761_AVX2_crypto_encode_256x16_STRBYTES 128 -#define PQCLEAN_NTRULPR761_AVX2_crypto_encode_256x16_ITEMS 256 -#define PQCLEAN_NTRULPR761_AVX2_crypto_encode_256x16_ITEMBYTES 1 - -void PQCLEAN_NTRULPR761_AVX2_crypto_encode_256x16(unsigned char *s, const void *v); -#endif diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_256x2.c b/src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_256x2.c deleted file mode 100644 index 46c6ae54..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_256x2.c +++ /dev/null @@ -1,88 +0,0 @@ -#include "crypto_encode_256x2.h" -#include -#include - -void PQCLEAN_NTRULPR761_AVX2_crypto_encode_256x2(unsigned char *s, const void *v) { - __m256i a0 = _mm256_loadu_si256(0 + (__m256i *) v); - __m256i a1 = _mm256_loadu_si256(1 + (__m256i *) v); - __m256i a2 = _mm256_loadu_si256(2 + (__m256i *) v); - __m256i a3 = _mm256_loadu_si256(3 + (__m256i *) v); - __m256i a4 = _mm256_loadu_si256(4 + (__m256i *) v); - __m256i a5 = _mm256_loadu_si256(5 + (__m256i *) v); - __m256i a6 = _mm256_loadu_si256(6 + (__m256i *) v); - __m256i a7 = _mm256_loadu_si256(7 + (__m256i *) v); - __m256i bottom = _mm256_set1_epi8(1); - __m256i zero = _mm256_setzero_si256(); - __m256i b0 = _mm256_cmpgt_epi8(a0 & bottom, zero); - __m256i b1 = _mm256_cmpgt_epi8(a1 & bottom, zero); - __m256i b2 = _mm256_cmpgt_epi8(a2 & bottom, zero); - __m256i b3 = _mm256_cmpgt_epi8(a3 & bottom, zero); - __m256i b4 = _mm256_cmpgt_epi8(a4 & bottom, zero); - __m256i b5 = _mm256_cmpgt_epi8(a5 & bottom, zero); - __m256i b6 = _mm256_cmpgt_epi8(a6 & bottom, zero); - __m256i b7 = _mm256_cmpgt_epi8(a7 & bottom, zero); - int32_t c0 = _mm256_movemask_epi8(b0); - int32_t c1 = _mm256_movemask_epi8(b1); - int32_t c2 = _mm256_movemask_epi8(b2); - int32_t c3 = _mm256_movemask_epi8(b3); - int32_t c4 = _mm256_movemask_epi8(b4); - int32_t c5 = _mm256_movemask_epi8(b5); - int32_t c6 = _mm256_movemask_epi8(b6); - int32_t c7 = _mm256_movemask_epi8(b7); - *s++ = (unsigned char) c0; - c0 >>= 8; - *s++ = (unsigned char) c0; - c0 >>= 8; - *s++ = (unsigned char) c0; - c0 >>= 8; - *s++ = (unsigned char) c0; - *s++ = (unsigned char) c1; - c1 >>= 8; - *s++ = (unsigned char) c1; - c1 >>= 8; - *s++ = (unsigned char) c1; - c1 >>= 8; - *s++ = (unsigned char) c1; - *s++ = (unsigned char) c2; - c2 >>= 8; - *s++ = (unsigned char) c2; - c2 >>= 8; - *s++ = (unsigned char) c2; - c2 >>= 8; - *s++ = (unsigned char) c2; - *s++ = (unsigned char) c3; - c3 >>= 8; - *s++ = (unsigned char) c3; - c3 >>= 8; - *s++ = (unsigned char) c3; - c3 >>= 8; - *s++ = (unsigned char) c3; - *s++ = (unsigned char) c4; - c4 >>= 8; - *s++ = (unsigned char) c4; - c4 >>= 8; - *s++ = (unsigned char) c4; - c4 >>= 8; - *s++ = (unsigned char) c4; - *s++ = (unsigned char) c5; - c5 >>= 8; - *s++ = (unsigned char) c5; - c5 >>= 8; - *s++ = (unsigned char) c5; - c5 >>= 8; - *s++ = (unsigned char) c5; - *s++ = (unsigned char) c6; - c6 >>= 8; - *s++ = (unsigned char) c6; - c6 >>= 8; - *s++ = (unsigned char) c6; - c6 >>= 8; - *s++ = (unsigned char) c6; - *s++ = (unsigned char) c7; - c7 >>= 8; - *s++ = (unsigned char) c7; - c7 >>= 8; - *s++ = (unsigned char) c7; - c7 >>= 8; - *s++ = (unsigned char) c7; -} diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_256x2.h b/src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_256x2.h deleted file mode 100644 index e29ac8f7..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_256x2.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR761_AVX2_CRYPTO_ENCODE_256X2_H -#define PQCLEAN_NTRULPR761_AVX2_CRYPTO_ENCODE_256X2_H - -#include -#define PQCLEAN_NTRULPR761_AVX2_crypto_encode_256x2_STRBYTES 32 -#define PQCLEAN_NTRULPR761_AVX2_crypto_encode_256x2_ITEMS 256 -#define PQCLEAN_NTRULPR761_AVX2_crypto_encode_256x2_ITEMBYTES 1 - -void PQCLEAN_NTRULPR761_AVX2_crypto_encode_256x2(unsigned char *s, const void *v); -#endif diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_761x1531.c b/src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_761x1531.c deleted file mode 100644 index ebf65b92..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_761x1531.c +++ /dev/null @@ -1,301 +0,0 @@ -#include "crypto_encode_761x1531.h" -#include -/* auto-generated; do not edit */ - -#define int16 int16_t -#define uint16 uint16_t -#define uint32 uint32_t - -void PQCLEAN_NTRULPR761_AVX2_crypto_encode_761x1531(unsigned char *out, const void *v) { - const int16 *R0 = v; - /* XXX: caller could overlap R with input */ - uint16 R[381]; - long i; - const uint16 *reading; - uint16 *writing; - uint16 r0, r1; - uint32 r2; - uint32 s0; - - reading = (uint16 *) R0; - writing = R; - i = 48; - while (i > 0) { - __m256i x, y; - --i; - if (!i) { - reading -= 8; - writing -= 4; - out -= 4; - } - x = _mm256_loadu_si256((__m256i *) reading); - x = _mm256_add_epi16(x, _mm256_set1_epi16(2295)); - x &= _mm256_set1_epi16(16383); - x = _mm256_mulhi_epi16(x, _mm256_set1_epi16(21846)); - y = x & _mm256_set1_epi32(65535); - x = _mm256_srli_epi32(x, 16); - x = _mm256_mullo_epi32(x, _mm256_set1_epi32(1531)); - x = _mm256_add_epi32(y, x); - x = _mm256_shuffle_epi8(x, _mm256_set_epi8( - 12, 8, 4, 0, 12, 8, 4, 0, 14, 13, 10, 9, 6, 5, 2, 1, - 12, 8, 4, 0, 12, 8, 4, 0, 14, 13, 10, 9, 6, 5, 2, 1 - )); - x = _mm256_permute4x64_epi64(x, 0xd8); - _mm_storeu_si128((__m128i *) writing, _mm256_extractf128_si256(x, 0)); - s0 = (uint32) _mm256_extract_epi32(x, 4); - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 = (uint32) _mm256_extract_epi32(x, 6); - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - reading += 16; - writing += 8; - } - R[380] = (uint16) ((((R0[760] + 2295) & 16383) * 10923) >> 15); - - reading = (uint16 *) R; - writing = R; - i = 12; - while (i > 0) { - __m256i x, x2, y, y2; - --i; - if (!i) { - reading -= 4; - writing -= 2; - out -= 4; - } - x = _mm256_loadu_si256((__m256i *) (reading + 0)); - x2 = _mm256_loadu_si256((__m256i *) (reading + 16)); - y = x & _mm256_set1_epi32(65535); - y2 = x2 & _mm256_set1_epi32(65535); - x = _mm256_srli_epi32(x, 16); - x2 = _mm256_srli_epi32(x2, 16); - x = _mm256_mullo_epi32(x, _mm256_set1_epi32(9157)); - x2 = _mm256_mullo_epi32(x2, _mm256_set1_epi32(9157)); - x = _mm256_add_epi32(y, x); - x2 = _mm256_add_epi32(y2, x2); - x = _mm256_shuffle_epi8(x, _mm256_set_epi8( - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0, - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0 - )); - x2 = _mm256_shuffle_epi8(x2, _mm256_set_epi8( - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0, - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0 - )); - x = _mm256_permute4x64_epi64(x, 0xd8); - x2 = _mm256_permute4x64_epi64(x2, 0xd8); - _mm256_storeu_si256((__m256i *) writing, _mm256_permute2f128_si256(x, x2, 0x31)); - _mm256_storeu_si256((__m256i *) out, _mm256_permute2f128_si256(x, x2, 0x20)); - reading += 32; - writing += 16; - out += 32; - } - R[190] = R[380]; - - reading = (uint16 *) R; - writing = R; - i = 12; - while (i > 0) { - __m256i x, y; - --i; - if (!i) { - reading -= 2; - writing -= 1; - out -= 1; - } - x = _mm256_loadu_si256((__m256i *) reading); - y = x & _mm256_set1_epi32(65535); - x = _mm256_srli_epi32(x, 16); - x = _mm256_mullo_epi32(x, _mm256_set1_epi32(1280)); - x = _mm256_add_epi32(y, x); - x = _mm256_shuffle_epi8(x, _mm256_set_epi8( - 12, 8, 4, 0, 12, 8, 4, 0, 14, 13, 10, 9, 6, 5, 2, 1, - 12, 8, 4, 0, 12, 8, 4, 0, 14, 13, 10, 9, 6, 5, 2, 1 - )); - x = _mm256_permute4x64_epi64(x, 0xd8); - _mm_storeu_si128((__m128i *) writing, _mm256_extractf128_si256(x, 0)); - s0 = (uint32) _mm256_extract_epi32(x, 4); - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 = (uint32) _mm256_extract_epi32(x, 6); - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - reading += 16; - writing += 8; - } - R[95] = R[190]; - - reading = (uint16 *) R; - writing = R; - i = 3; - while (i > 0) { - __m256i x, x2, y, y2; - --i; - x = _mm256_loadu_si256((__m256i *) (reading + 0)); - x2 = _mm256_loadu_si256((__m256i *) (reading + 16)); - y = x & _mm256_set1_epi32(65535); - y2 = x2 & _mm256_set1_epi32(65535); - x = _mm256_srli_epi32(x, 16); - x2 = _mm256_srli_epi32(x2, 16); - x = _mm256_mullo_epi32(x, _mm256_set1_epi32(6400)); - x2 = _mm256_mullo_epi32(x2, _mm256_set1_epi32(6400)); - x = _mm256_add_epi32(y, x); - x2 = _mm256_add_epi32(y2, x2); - x = _mm256_shuffle_epi8(x, _mm256_set_epi8( - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0, - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0 - )); - x2 = _mm256_shuffle_epi8(x2, _mm256_set_epi8( - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0, - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0 - )); - x = _mm256_permute4x64_epi64(x, 0xd8); - x2 = _mm256_permute4x64_epi64(x2, 0xd8); - _mm256_storeu_si256((__m256i *) writing, _mm256_permute2f128_si256(x, x2, 0x31)); - _mm256_storeu_si256((__m256i *) out, _mm256_permute2f128_si256(x, x2, 0x20)); - reading += 32; - writing += 16; - out += 32; - } - - reading = (uint16 *) R; - writing = R; - i = 3; - while (i > 0) { - __m256i x, y; - --i; - x = _mm256_loadu_si256((__m256i *) reading); - y = x & _mm256_set1_epi32(65535); - x = _mm256_srli_epi32(x, 16); - x = _mm256_mullo_epi32(x, _mm256_set1_epi32(625)); - x = _mm256_add_epi32(y, x); - x = _mm256_shuffle_epi8(x, _mm256_set_epi8( - 12, 8, 4, 0, 12, 8, 4, 0, 14, 13, 10, 9, 6, 5, 2, 1, - 12, 8, 4, 0, 12, 8, 4, 0, 14, 13, 10, 9, 6, 5, 2, 1 - )); - x = _mm256_permute4x64_epi64(x, 0xd8); - _mm_storeu_si128((__m128i *) writing, _mm256_extractf128_si256(x, 0)); - s0 = (uint32) _mm256_extract_epi32(x, 4); - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 = (uint32) _mm256_extract_epi32(x, 6); - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - reading += 16; - writing += 8; - } - - reading = (uint16 *) R; - writing = R; - i = 2; - while (i > 0) { - __m256i x, y; - --i; - if (!i) { - reading -= 8; - writing -= 4; - out -= 4; - } - x = _mm256_loadu_si256((__m256i *) reading); - y = x & _mm256_set1_epi32(65535); - x = _mm256_srli_epi32(x, 16); - x = _mm256_mullo_epi32(x, _mm256_set1_epi32(1526)); - x = _mm256_add_epi32(y, x); - x = _mm256_shuffle_epi8(x, _mm256_set_epi8( - 12, 8, 4, 0, 12, 8, 4, 0, 14, 13, 10, 9, 6, 5, 2, 1, - 12, 8, 4, 0, 12, 8, 4, 0, 14, 13, 10, 9, 6, 5, 2, 1 - )); - x = _mm256_permute4x64_epi64(x, 0xd8); - _mm_storeu_si128((__m128i *) writing, _mm256_extractf128_si256(x, 0)); - s0 = (uint32) _mm256_extract_epi32(x, 4); - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 = (uint32) _mm256_extract_epi32(x, 6); - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - reading += 16; - writing += 8; - } - - for (i = 0; i < 6; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)9097; - *out++ = (unsigned char) r2; - r2 >>= 8; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - - for (i = 0; i < 3; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)1263; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - - r0 = R[0]; - r1 = R[1]; - r2 = r0 + r1 * (uint32)6232; - *out++ = (unsigned char) r2; - r2 >>= 8; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[0] = (uint16) r2; - R[1] = R[2]; - - r0 = R[0]; - r1 = R[1]; - r2 = r0 + r1 * (uint32)593; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[0] = (uint16) r2; - - r0 = R[0]; - *out++ = (unsigned char) r0; - r0 >>= 8; - *out++ = (unsigned char) r0; -} diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_761x1531.h b/src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_761x1531.h deleted file mode 100644 index 58bb9ea2..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_761x1531.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR761_AVX2_CRYPTO_ENCODE_761X1531_H -#define PQCLEAN_NTRULPR761_AVX2_CRYPTO_ENCODE_761X1531_H - -#include -#define PQCLEAN_NTRULPR761_AVX2_crypto_encode_761x1531_STRBYTES 1007 -#define PQCLEAN_NTRULPR761_AVX2_crypto_encode_761x1531_ITEMS 761 -#define PQCLEAN_NTRULPR761_AVX2_crypto_encode_761x1531_ITEMBYTES 2 - -void PQCLEAN_NTRULPR761_AVX2_crypto_encode_761x1531(unsigned char *out, const void *v); -#endif diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_761x1531round.c b/src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_761x1531round.c deleted file mode 100644 index 799b2ae6..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_761x1531round.c +++ /dev/null @@ -1,303 +0,0 @@ -#include "crypto_encode_761x1531round.h" -#include -/* auto-generated; do not edit */ - -#define int16 int16_t -#define uint16 uint16_t -#define uint32 uint32_t - -void PQCLEAN_NTRULPR761_AVX2_crypto_encode_761x1531round(unsigned char *out, const void *v) { - const int16 *R0 = v; - /* XXX: caller could overlap R with input */ - uint16 R[381]; - long i; - const uint16 *reading; - uint16 *writing; - uint16 r0, r1; - uint32 r2; - uint32 s0; - - reading = (uint16 *) R0; - writing = R; - i = 48; - while (i > 0) { - __m256i x, y; - --i; - if (!i) { - reading -= 8; - writing -= 4; - out -= 4; - } - x = _mm256_loadu_si256((__m256i *) reading); - x = _mm256_mulhrs_epi16(x, _mm256_set1_epi16(10923)); - x = _mm256_add_epi16(x, _mm256_add_epi16(x, x)); - x = _mm256_add_epi16(x, _mm256_set1_epi16(2295)); - x &= _mm256_set1_epi16(16383); - x = _mm256_mulhi_epi16(x, _mm256_set1_epi16(21846)); - y = x & _mm256_set1_epi32(65535); - x = _mm256_srli_epi32(x, 16); - x = _mm256_mullo_epi32(x, _mm256_set1_epi32(1531)); - x = _mm256_add_epi32(y, x); - x = _mm256_shuffle_epi8(x, _mm256_set_epi8( - 12, 8, 4, 0, 12, 8, 4, 0, 14, 13, 10, 9, 6, 5, 2, 1, - 12, 8, 4, 0, 12, 8, 4, 0, 14, 13, 10, 9, 6, 5, 2, 1 - )); - x = _mm256_permute4x64_epi64(x, 0xd8); - _mm_storeu_si128((__m128i *) writing, _mm256_extractf128_si256(x, 0)); - s0 = (uint32) _mm256_extract_epi32(x, 4); - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 = (uint32) _mm256_extract_epi32(x, 6); - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - reading += 16; - writing += 8; - } - R[380] = (uint16) ((((3 * ((10923 * R0[760] + 16384) >> 15) + 2295) & 16383) * 10923) >> 15); - - reading = (uint16 *) R; - writing = R; - i = 12; - while (i > 0) { - __m256i x, x2, y, y2; - --i; - if (!i) { - reading -= 4; - writing -= 2; - out -= 4; - } - x = _mm256_loadu_si256((__m256i *) (reading + 0)); - x2 = _mm256_loadu_si256((__m256i *) (reading + 16)); - y = x & _mm256_set1_epi32(65535); - y2 = x2 & _mm256_set1_epi32(65535); - x = _mm256_srli_epi32(x, 16); - x2 = _mm256_srli_epi32(x2, 16); - x = _mm256_mullo_epi32(x, _mm256_set1_epi32(9157)); - x2 = _mm256_mullo_epi32(x2, _mm256_set1_epi32(9157)); - x = _mm256_add_epi32(y, x); - x2 = _mm256_add_epi32(y2, x2); - x = _mm256_shuffle_epi8(x, _mm256_set_epi8( - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0, - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0 - )); - x2 = _mm256_shuffle_epi8(x2, _mm256_set_epi8( - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0, - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0 - )); - x = _mm256_permute4x64_epi64(x, 0xd8); - x2 = _mm256_permute4x64_epi64(x2, 0xd8); - _mm256_storeu_si256((__m256i *) writing, _mm256_permute2f128_si256(x, x2, 0x31)); - _mm256_storeu_si256((__m256i *) out, _mm256_permute2f128_si256(x, x2, 0x20)); - reading += 32; - writing += 16; - out += 32; - } - R[190] = R[380]; - - reading = (uint16 *) R; - writing = R; - i = 12; - while (i > 0) { - __m256i x, y; - --i; - if (!i) { - reading -= 2; - writing -= 1; - out -= 1; - } - x = _mm256_loadu_si256((__m256i *) reading); - y = x & _mm256_set1_epi32(65535); - x = _mm256_srli_epi32(x, 16); - x = _mm256_mullo_epi32(x, _mm256_set1_epi32(1280)); - x = _mm256_add_epi32(y, x); - x = _mm256_shuffle_epi8(x, _mm256_set_epi8( - 12, 8, 4, 0, 12, 8, 4, 0, 14, 13, 10, 9, 6, 5, 2, 1, - 12, 8, 4, 0, 12, 8, 4, 0, 14, 13, 10, 9, 6, 5, 2, 1 - )); - x = _mm256_permute4x64_epi64(x, 0xd8); - _mm_storeu_si128((__m128i *) writing, _mm256_extractf128_si256(x, 0)); - s0 = (uint32) _mm256_extract_epi32(x, 4); - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 = (uint32) _mm256_extract_epi32(x, 6); - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - reading += 16; - writing += 8; - } - R[95] = R[190]; - - reading = (uint16 *) R; - writing = R; - i = 3; - while (i > 0) { - __m256i x, x2, y, y2; - --i; - x = _mm256_loadu_si256((__m256i *) (reading + 0)); - x2 = _mm256_loadu_si256((__m256i *) (reading + 16)); - y = x & _mm256_set1_epi32(65535); - y2 = x2 & _mm256_set1_epi32(65535); - x = _mm256_srli_epi32(x, 16); - x2 = _mm256_srli_epi32(x2, 16); - x = _mm256_mullo_epi32(x, _mm256_set1_epi32(6400)); - x2 = _mm256_mullo_epi32(x2, _mm256_set1_epi32(6400)); - x = _mm256_add_epi32(y, x); - x2 = _mm256_add_epi32(y2, x2); - x = _mm256_shuffle_epi8(x, _mm256_set_epi8( - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0, - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0 - )); - x2 = _mm256_shuffle_epi8(x2, _mm256_set_epi8( - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0, - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0 - )); - x = _mm256_permute4x64_epi64(x, 0xd8); - x2 = _mm256_permute4x64_epi64(x2, 0xd8); - _mm256_storeu_si256((__m256i *) writing, _mm256_permute2f128_si256(x, x2, 0x31)); - _mm256_storeu_si256((__m256i *) out, _mm256_permute2f128_si256(x, x2, 0x20)); - reading += 32; - writing += 16; - out += 32; - } - - reading = (uint16 *) R; - writing = R; - i = 3; - while (i > 0) { - __m256i x, y; - --i; - x = _mm256_loadu_si256((__m256i *) reading); - y = x & _mm256_set1_epi32(65535); - x = _mm256_srli_epi32(x, 16); - x = _mm256_mullo_epi32(x, _mm256_set1_epi32(625)); - x = _mm256_add_epi32(y, x); - x = _mm256_shuffle_epi8(x, _mm256_set_epi8( - 12, 8, 4, 0, 12, 8, 4, 0, 14, 13, 10, 9, 6, 5, 2, 1, - 12, 8, 4, 0, 12, 8, 4, 0, 14, 13, 10, 9, 6, 5, 2, 1 - )); - x = _mm256_permute4x64_epi64(x, 0xd8); - _mm_storeu_si128((__m128i *) writing, _mm256_extractf128_si256(x, 0)); - s0 = (uint32) _mm256_extract_epi32(x, 4); - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 = (uint32) _mm256_extract_epi32(x, 6); - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - reading += 16; - writing += 8; - } - - reading = (uint16 *) R; - writing = R; - i = 2; - while (i > 0) { - __m256i x, y; - --i; - if (!i) { - reading -= 8; - writing -= 4; - out -= 4; - } - x = _mm256_loadu_si256((__m256i *) reading); - y = x & _mm256_set1_epi32(65535); - x = _mm256_srli_epi32(x, 16); - x = _mm256_mullo_epi32(x, _mm256_set1_epi32(1526)); - x = _mm256_add_epi32(y, x); - x = _mm256_shuffle_epi8(x, _mm256_set_epi8( - 12, 8, 4, 0, 12, 8, 4, 0, 14, 13, 10, 9, 6, 5, 2, 1, - 12, 8, 4, 0, 12, 8, 4, 0, 14, 13, 10, 9, 6, 5, 2, 1 - )); - x = _mm256_permute4x64_epi64(x, 0xd8); - _mm_storeu_si128((__m128i *) writing, _mm256_extractf128_si256(x, 0)); - s0 = (uint32) _mm256_extract_epi32(x, 4); - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 = (uint32) _mm256_extract_epi32(x, 6); - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - reading += 16; - writing += 8; - } - - for (i = 0; i < 6; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)9097; - *out++ = (unsigned char) r2; - r2 >>= 8; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - - for (i = 0; i < 3; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)1263; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - - r0 = R[0]; - r1 = R[1]; - r2 = r0 + r1 * (uint32)6232; - *out++ = (unsigned char) r2; - r2 >>= 8; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[0] = (uint16) r2; - R[1] = R[2]; - - r0 = R[0]; - r1 = R[1]; - r2 = r0 + r1 * (uint32)593; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[0] = (uint16) r2; - - r0 = R[0]; - *out++ = (unsigned char) r0; - r0 >>= 8; - *out++ = (unsigned char) r0; -} diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_761x1531round.h b/src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_761x1531round.h deleted file mode 100644 index b9335dad..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_761x1531round.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR761_AVX2_CRYPTO_ENCODE_761X1531ROUND_H -#define PQCLEAN_NTRULPR761_AVX2_CRYPTO_ENCODE_761X1531ROUND_H - -#include -#define PQCLEAN_NTRULPR761_AVX2_crypto_encode_761x1531round_STRBYTES 1007 -#define PQCLEAN_NTRULPR761_AVX2_crypto_encode_761x1531round_ITEMS 761 -#define PQCLEAN_NTRULPR761_AVX2_crypto_encode_761x1531round_ITEMBYTES 2 - -void PQCLEAN_NTRULPR761_AVX2_crypto_encode_761x1531round(unsigned char *out, const void *v); -#endif diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_761x3.c b/src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_761x3.c deleted file mode 100644 index 9cb10c88..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_761x3.c +++ /dev/null @@ -1,64 +0,0 @@ -#include "crypto_encode_761x3.h" -#include -#define uint8 uint8_t - -#define p 761 -#define loops 6 -#define overshoot 2 - -static const union { - uint8 init[32]; - __m256i val; -} lobytes_buf = { .init = { - 255, 0, 255, 0, 255, 0, 255, 0, - 255, 0, 255, 0, 255, 0, 255, 0, - 255, 0, 255, 0, 255, 0, 255, 0, - 255, 0, 255, 0, 255, 0, 255, 0, - } -}; -#define lobytes (lobytes_buf.val) - -void PQCLEAN_NTRULPR761_AVX2_crypto_encode_761x3(unsigned char *s, const void *v) { - const uint8 *f = v; - int loop; - const uint8 *nextf = f + 128 - 4 * overshoot; - unsigned char *nexts = s + 32 - overshoot; - - for (loop = loops; loop > 0; --loop) { - __m256i f0 = _mm256_loadu_si256((const __m256i *) (f + 0)); - __m256i f1 = _mm256_loadu_si256((const __m256i *) (f + 32)); - __m256i f2 = _mm256_loadu_si256((const __m256i *) (f + 64)); - __m256i f3 = _mm256_loadu_si256((const __m256i *) (f + 96)); - f = nextf; - nextf += 128; - - __m256i a0 = _mm256_packus_epi16(f0 & lobytes, f1 & lobytes); - /* 0 2 4 6 8 10 12 14 32 34 36 38 40 42 44 46 */ - /* 16 18 20 22 24 26 28 30 48 50 52 54 56 58 60 62 */ - __m256i a1 = _mm256_packus_epi16(_mm256_srli_epi16(f0, 8), _mm256_srli_epi16(f1, 8)); - /* 1 3 ... */ - __m256i a2 = _mm256_packus_epi16(f2 & lobytes, f3 & lobytes); - __m256i a3 = _mm256_packus_epi16(_mm256_srli_epi16(f2, 8), _mm256_srli_epi16(f3, 8)); - - a0 = _mm256_add_epi8(a0, _mm256_slli_epi16(a1 & _mm256_set1_epi8(63), 2)); - a2 = _mm256_add_epi8(a2, _mm256_slli_epi16(a3 & _mm256_set1_epi8(63), 2)); - - __m256i b0 = _mm256_packus_epi16(a0 & lobytes, a2 & lobytes); - /* 0 4 8 12 32 36 40 44 64 68 72 76 96 100 104 108 */ - /* 16 20 24 28 48 52 56 60 80 84 88 92 112 116 120 124 */ - __m256i b2 = _mm256_packus_epi16(_mm256_srli_epi16(a0, 8), _mm256_srli_epi16(a2, 8)); - /* 2 6 ... */ - - b0 = _mm256_add_epi8(b0, _mm256_slli_epi16(b2 & _mm256_set1_epi8(15), 4)); - - b0 = _mm256_permutevar8x32_epi32(b0, _mm256_set_epi32(7, 3, 6, 2, 5, 1, 4, 0)); - - b0 = _mm256_add_epi8(b0, _mm256_set1_epi8(85)); - - _mm256_storeu_si256((__m256i *) s, b0); - s = nexts; - nexts += 32; - } - - *s++ = *f++ + 1; -} diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_761x3.h b/src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_761x3.h deleted file mode 100644 index da478dbb..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_761x3.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR761_AVX2_CRYPTO_ENCODE_761X3_H -#define PQCLEAN_NTRULPR761_AVX2_CRYPTO_ENCODE_761X3_H - -#include -#define PQCLEAN_NTRULPR761_AVX2_crypto_encode_761x3_STRBYTES 191 -#define PQCLEAN_NTRULPR761_AVX2_crypto_encode_761x3_ITEMS 761 -#define PQCLEAN_NTRULPR761_AVX2_crypto_encode_761x3_ITEMBYTES 1 - -void PQCLEAN_NTRULPR761_AVX2_crypto_encode_761x3(unsigned char *s, const void *v); -#endif diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_761xint16.c b/src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_761xint16.c deleted file mode 100644 index 8894a09d..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_761xint16.c +++ /dev/null @@ -1,13 +0,0 @@ -#include "crypto_encode_761xint16.h" - - -void PQCLEAN_NTRULPR761_AVX2_crypto_encode_761xint16(unsigned char *s, const void *v) { - const uint16_t *x = v; - int i; - - for (i = 0; i < 761; ++i) { - uint16_t u = *x++; - *s++ = (unsigned char) u; - *s++ = (unsigned char) (u >> 8); - } -} diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_761xint16.h b/src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_761xint16.h deleted file mode 100644 index 0ae1dafe..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_encode_761xint16.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR761_AVX2_CRYPTO_ENCODE_761XINT16_H -#define PQCLEAN_NTRULPR761_AVX2_CRYPTO_ENCODE_761XINT16_H - -#include -#define PQCLEAN_NTRULPR761_AVX2_crypto_encode_761xint16_STRBYTES 1522 -#define PQCLEAN_NTRULPR761_AVX2_crypto_encode_761xint16_ITEMBYTES 2 -#define PQCLEAN_NTRULPR761_AVX2_crypto_encode_761xint16_ITEMS 761 - -void PQCLEAN_NTRULPR761_AVX2_crypto_encode_761xint16(unsigned char *s, const void *v); -#endif diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_sort_int32.c b/src/kem/ntru_prime/ntrulpr761/avx2/crypto_sort_int32.c deleted file mode 100644 index 9340fb5b..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_sort_int32.c +++ /dev/null @@ -1,1215 +0,0 @@ -#include "crypto_sort_int32.h" -#include - -#define int32 int32_t - -typedef __m256i int32x8; -#define int32x8_load(z) _mm256_loadu_si256((__m256i *) (z)) -#define int32x8_store(z,i) _mm256_storeu_si256((__m256i *) (z),(i)) -#define int32x8_min _mm256_min_epi32 -#define int32x8_max _mm256_max_epi32 - -#define int32x8_MINMAX(a,b) \ - do { \ - int32x8 c = int32x8_min((a),(b)); \ - (b) = int32x8_max((a),(b)); \ - (a) = c; \ - } while(0) - -static inline void int32_MINMAX(int32 *a, int32 *b) { - int32 ab = *b ^ *a; - int32 c = (int32)((int64_t) * b - (int64_t) * a); - c ^= ab & (c ^ *b); - c >>= 31; - c &= ab; - *a ^= c; - *b ^= c; -} - -static void minmax_vector(int32 *x, int32 *y, long long n) { - if (n < 8) { - while (n > 0) { - int32_MINMAX(x, y); - ++x; - ++y; - --n; - } - return; - } - if (n & 7) { - int32x8 x0 = int32x8_load(x + n - 8); - int32x8 y0 = int32x8_load(y + n - 8); - int32x8_MINMAX(x0, y0); - int32x8_store(x + n - 8, x0); - int32x8_store(y + n - 8, y0); - n &= ~7; - } - do { - int32x8 x0 = int32x8_load(x); - int32x8 y0 = int32x8_load(y); - int32x8_MINMAX(x0, y0); - int32x8_store(x, x0); - int32x8_store(y, y0); - x += 8; - y += 8; - n -= 8; - } while (n); -} - -/* stages 8,4,2,1 of size-16 bitonic merging */ -static void merge16_finish(int32 *x, int32x8 x0, int32x8 x1, int flagdown) { - int32x8 b0, b1, c0, c1, mask; - - int32x8_MINMAX(x0, x1); - - b0 = _mm256_permute2x128_si256(x0, x1, 0x20); /* A0123B0123 */ - b1 = _mm256_permute2x128_si256(x0, x1, 0x31); /* A4567B4567 */ - - int32x8_MINMAX(b0, b1); - - c0 = _mm256_unpacklo_epi64(b0, b1); /* A0145B0145 */ - c1 = _mm256_unpackhi_epi64(b0, b1); /* A2367B2367 */ - - int32x8_MINMAX(c0, c1); - - b0 = _mm256_unpacklo_epi32(c0, c1); /* A0213B0213 */ - b1 = _mm256_unpackhi_epi32(c0, c1); /* A4657B4657 */ - - c0 = _mm256_unpacklo_epi64(b0, b1); /* A0246B0246 */ - c1 = _mm256_unpackhi_epi64(b0, b1); /* A1357B1357 */ - - int32x8_MINMAX(c0, c1); - - b0 = _mm256_unpacklo_epi32(c0, c1); /* A0123B0123 */ - b1 = _mm256_unpackhi_epi32(c0, c1); /* A4567B4567 */ - - x0 = _mm256_permute2x128_si256(b0, b1, 0x20); /* A01234567 */ - x1 = _mm256_permute2x128_si256(b0, b1, 0x31); /* A01234567 */ - - if (flagdown) { - mask = _mm256_set1_epi32(-1); - x0 ^= mask; - x1 ^= mask; - } - - int32x8_store(&x[0], x0); - int32x8_store(&x[8], x1); -} - -/* stages 64,32 of bitonic merging; n is multiple of 128 */ -static void int32_twostages_32(int32 *x, long long n) { - long long i; - - while (n > 0) { - for (i = 0; i < 32; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + 32]); - int32x8 x2 = int32x8_load(&x[i + 64]); - int32x8 x3 = int32x8_load(&x[i + 96]); - - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - - int32x8_store(&x[i], x0); - int32x8_store(&x[i + 32], x1); - int32x8_store(&x[i + 64], x2); - int32x8_store(&x[i + 96], x3); - } - x += 128; - n -= 128; - } -} - -/* stages 4q,2q,q of bitonic merging */ -static long long int32_threestages(int32 *x, long long n, long long q) { - long long k, i; - - for (k = 0; k + 8 * q <= n; k += 8 * q) { - for (i = k; i < k + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8 x4 = int32x8_load(&x[i + 4 * q]); - int32x8 x5 = int32x8_load(&x[i + 5 * q]); - int32x8 x6 = int32x8_load(&x[i + 6 * q]); - int32x8 x7 = int32x8_load(&x[i + 7 * q]); - - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - int32x8_store(&x[i + 4 * q], x4); - int32x8_store(&x[i + 5 * q], x5); - int32x8_store(&x[i + 6 * q], x6); - int32x8_store(&x[i + 7 * q], x7); - } - } - - return k; -} - -/* n is a power of 2; n >= 8; if n == 8 then flagdown */ -// NOLINTNEXTLINE(google-readability-function-size) -static void int32_sort_2power(int32 *x, long long n, int flagdown) { - long long p, q, i, j, k; - int32x8 mask; - - if (n == 8) { - int32 x0 = x[0]; - int32 x1 = x[1]; - int32 x2 = x[2]; - int32 x3 = x[3]; - int32 x4 = x[4]; - int32 x5 = x[5]; - int32 x6 = x[6]; - int32 x7 = x[7]; - - /* odd-even sort instead of bitonic sort */ - - int32_MINMAX(&x1, &x0); - int32_MINMAX(&x3, &x2); - int32_MINMAX(&x2, &x0); - int32_MINMAX(&x3, &x1); - int32_MINMAX(&x2, &x1); - - int32_MINMAX(&x5, &x4); - int32_MINMAX(&x7, &x6); - int32_MINMAX(&x6, &x4); - int32_MINMAX(&x7, &x5); - int32_MINMAX(&x6, &x5); - - int32_MINMAX(&x4, &x0); - int32_MINMAX(&x6, &x2); - int32_MINMAX(&x4, &x2); - - int32_MINMAX(&x5, &x1); - int32_MINMAX(&x7, &x3); - int32_MINMAX(&x5, &x3); - - int32_MINMAX(&x2, &x1); - int32_MINMAX(&x4, &x3); - int32_MINMAX(&x6, &x5); - - x[0] = x0; - x[1] = x1; - x[2] = x2; - x[3] = x3; - x[4] = x4; - x[5] = x5; - x[6] = x6; - x[7] = x7; - return; - } - - if (n == 16) { - int32x8 x0, x1, b0, b1, c0, c1; - - x0 = int32x8_load(&x[0]); - x1 = int32x8_load(&x[8]); - - mask = _mm256_set_epi32(0, 0, -1, -1, 0, 0, -1, -1); - - x0 ^= mask; /* A01234567 */ - x1 ^= mask; /* B01234567 */ - - b0 = _mm256_unpacklo_epi32(x0, x1); /* AB0AB1AB4AB5 */ - b1 = _mm256_unpackhi_epi32(x0, x1); /* AB2AB3AB6AB7 */ - - c0 = _mm256_unpacklo_epi64(b0, b1); /* AB0AB2AB4AB6 */ - c1 = _mm256_unpackhi_epi64(b0, b1); /* AB1AB3AB5AB7 */ - - int32x8_MINMAX(c0, c1); - - mask = _mm256_set_epi32(0, 0, -1, -1, -1, -1, 0, 0); - c0 ^= mask; - c1 ^= mask; - - b0 = _mm256_unpacklo_epi32(c0, c1); /* A01B01A45B45 */ - b1 = _mm256_unpackhi_epi32(c0, c1); /* A23B23A67B67 */ - - int32x8_MINMAX(b0, b1); - - x0 = _mm256_unpacklo_epi64(b0, b1); /* A01234567 */ - x1 = _mm256_unpackhi_epi64(b0, b1); /* B01234567 */ - - b0 = _mm256_unpacklo_epi32(x0, x1); /* AB0AB1AB4AB5 */ - b1 = _mm256_unpackhi_epi32(x0, x1); /* AB2AB3AB6AB7 */ - - c0 = _mm256_unpacklo_epi64(b0, b1); /* AB0AB2AB4AB6 */ - c1 = _mm256_unpackhi_epi64(b0, b1); /* AB1AB3AB5AB7 */ - - int32x8_MINMAX(c0, c1); - - b0 = _mm256_unpacklo_epi32(c0, c1); /* A01B01A45B45 */ - b1 = _mm256_unpackhi_epi32(c0, c1); /* A23B23A67B67 */ - - b0 ^= mask; - b1 ^= mask; - - c0 = _mm256_permute2x128_si256(b0, b1, 0x20); /* A01B01A23B23 */ - c1 = _mm256_permute2x128_si256(b0, b1, 0x31); /* A45B45A67B67 */ - - int32x8_MINMAX(c0, c1); - - b0 = _mm256_permute2x128_si256(c0, c1, 0x20); /* A01B01A45B45 */ - b1 = _mm256_permute2x128_si256(c0, c1, 0x31); /* A23B23A67B67 */ - - int32x8_MINMAX(b0, b1); - - x0 = _mm256_unpacklo_epi64(b0, b1); /* A01234567 */ - x1 = _mm256_unpackhi_epi64(b0, b1); /* B01234567 */ - - b0 = _mm256_unpacklo_epi32(x0, x1); /* AB0AB1AB4AB5 */ - b1 = _mm256_unpackhi_epi32(x0, x1); /* AB2AB3AB6AB7 */ - - c0 = _mm256_unpacklo_epi64(b0, b1); /* AB0AB2AB4AB6 */ - c1 = _mm256_unpackhi_epi64(b0, b1); /* AB1AB3AB5AB7 */ - - int32x8_MINMAX(c0, c1); - - b0 = _mm256_unpacklo_epi32(c0, c1); /* A01B01A45B45 */ - b1 = _mm256_unpackhi_epi32(c0, c1); /* A23B23A67B67 */ - - x0 = _mm256_unpacklo_epi64(b0, b1); /* A01234567 */ - x1 = _mm256_unpackhi_epi64(b0, b1); /* B01234567 */ - - mask = _mm256_set1_epi32(-1); - if (flagdown) { - x1 ^= mask; - } else { - x0 ^= mask; - } - - merge16_finish(x, x0, x1, flagdown); - return; - } - - if (n == 32) { - int32x8 x0, x1, x2, x3; - - int32_sort_2power(x, 16, 1); - int32_sort_2power(x + 16, 16, 0); - - x0 = int32x8_load(&x[0]); - x1 = int32x8_load(&x[8]); - x2 = int32x8_load(&x[16]); - x3 = int32x8_load(&x[24]); - - if (flagdown) { - mask = _mm256_set1_epi32(-1); - x0 ^= mask; - x1 ^= mask; - x2 ^= mask; - x3 ^= mask; - } - - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - - merge16_finish(x, x0, x1, flagdown); - merge16_finish(x + 16, x2, x3, flagdown); - return; - } - - p = n >> 3; - for (i = 0; i < p; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x2 = int32x8_load(&x[i + 2 * p]); - int32x8 x4 = int32x8_load(&x[i + 4 * p]); - int32x8 x6 = int32x8_load(&x[i + 6 * p]); - - /* odd-even stage instead of bitonic stage */ - - int32x8_MINMAX(x4, x0); - int32x8_MINMAX(x6, x2); - int32x8_MINMAX(x2, x0); - int32x8_MINMAX(x6, x4); - int32x8_MINMAX(x2, x4); - - int32x8_store(&x[i], x0); - int32x8_store(&x[i + 2 * p], x2); - int32x8_store(&x[i + 4 * p], x4); - int32x8_store(&x[i + 6 * p], x6); - - int32x8 x1 = int32x8_load(&x[i + p]); - int32x8 x3 = int32x8_load(&x[i + 3 * p]); - int32x8 x5 = int32x8_load(&x[i + 5 * p]); - int32x8 x7 = int32x8_load(&x[i + 7 * p]); - - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x3, x7); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x5, x3); - - int32x8_store(&x[i + p], x1); - int32x8_store(&x[i + 3 * p], x3); - int32x8_store(&x[i + 5 * p], x5); - int32x8_store(&x[i + 7 * p], x7); - } - - if (n >= 128) { - int flip, flipflip; - - mask = _mm256_set1_epi32(-1); - - for (j = 0; j < n; j += 32) { - int32x8 x0 = int32x8_load(&x[j]); - int32x8 x1 = int32x8_load(&x[j + 16]); - x0 ^= mask; - x1 ^= mask; - int32x8_store(&x[j], x0); - int32x8_store(&x[j + 16], x1); - } - - p = 8; - for (;;) { /* for p in [8, 16, ..., n/16] */ - q = p >> 1; - while (q >= 128) { - int32_threestages(x, n, q >> 2); - q >>= 3; - } - if (q == 64) { - int32_twostages_32(x, n); - q = 16; - } - if (q == 32) { - q = 8; - for (k = 0; k < n; k += 8 * q) { - for (i = k; i < k + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8 x4 = int32x8_load(&x[i + 4 * q]); - int32x8 x5 = int32x8_load(&x[i + 5 * q]); - int32x8 x6 = int32x8_load(&x[i + 6 * q]); - int32x8 x7 = int32x8_load(&x[i + 7 * q]); - - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - int32x8_store(&x[i + 4 * q], x4); - int32x8_store(&x[i + 5 * q], x5); - int32x8_store(&x[i + 6 * q], x6); - int32x8_store(&x[i + 7 * q], x7); - } - } - q = 4; - } - if (q == 16) { - q = 8; - for (k = 0; k < n; k += 4 * q) { - for (i = k; i < k + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - } - } - q = 4; - } - if (q == 8) { - for (k = 0; k < n; k += q + q) { - int32x8 x0 = int32x8_load(&x[k]); - int32x8 x1 = int32x8_load(&x[k + q]); - - int32x8_MINMAX(x0, x1); - - int32x8_store(&x[k], x0); - int32x8_store(&x[k + q], x1); - } - } - - q = n >> 3; - flip = 0; - if (p << 1 == q) { - flip = 1; - } - flipflip = 1 - flip; - for (j = 0; j < q; j += p + p) { - for (k = j; k < j + p + p; k += p) { - for (i = k; i < k + p; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8 x4 = int32x8_load(&x[i + 4 * q]); - int32x8 x5 = int32x8_load(&x[i + 5 * q]); - int32x8 x6 = int32x8_load(&x[i + 6 * q]); - int32x8 x7 = int32x8_load(&x[i + 7 * q]); - - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - - if (flip) { - x0 ^= mask; - x1 ^= mask; - x2 ^= mask; - x3 ^= mask; - x4 ^= mask; - x5 ^= mask; - x6 ^= mask; - x7 ^= mask; - } - - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - int32x8_store(&x[i + 4 * q], x4); - int32x8_store(&x[i + 5 * q], x5); - int32x8_store(&x[i + 6 * q], x6); - int32x8_store(&x[i + 7 * q], x7); - } - flip ^= 1; - } - flip ^= flipflip; - } - - if (p << 4 == n) { - break; - } - p <<= 1; - } - } - - for (p = 4; p >= 1; p >>= 1) { - int32 *z = x; - int32 *target = x + n; - if (p == 4) { - mask = _mm256_set_epi32(0, 0, 0, 0, -1, -1, -1, -1); - while (z != target) { - int32x8 x0 = int32x8_load(&z[0]); - int32x8 x1 = int32x8_load(&z[8]); - x0 ^= mask; - x1 ^= mask; - int32x8_store(&z[0], x0); - int32x8_store(&z[8], x1); - z += 16; - } - } else if (p == 2) { - mask = _mm256_set_epi32(0, 0, -1, -1, -1, -1, 0, 0); - while (z != target) { - int32x8 x0 = int32x8_load(&z[0]); - int32x8 x1 = int32x8_load(&z[8]); - x0 ^= mask; - x1 ^= mask; - int32x8 b0 = _mm256_permute2x128_si256(x0, x1, 0x20); - int32x8 b1 = _mm256_permute2x128_si256(x0, x1, 0x31); - int32x8_MINMAX(b0, b1); - int32x8 c0 = _mm256_permute2x128_si256(b0, b1, 0x20); - int32x8 c1 = _mm256_permute2x128_si256(b0, b1, 0x31); - int32x8_store(&z[0], c0); - int32x8_store(&z[8], c1); - z += 16; - } - } else { /* p == 1 */ - mask = _mm256_set_epi32(0, -1, -1, 0, 0, -1, -1, 0); - while (z != target) { - int32x8 x0 = int32x8_load(&z[0]); - int32x8 x1 = int32x8_load(&z[8]); - x0 ^= mask; - x1 ^= mask; - int32x8 b0 = _mm256_permute2x128_si256(x0, x1, 0x20); /* A0123B0123 */ - int32x8 b1 = _mm256_permute2x128_si256(x0, x1, 0x31); /* A4567B4567 */ - int32x8 c0 = _mm256_unpacklo_epi64(b0, b1); /* A0145B0145 */ - int32x8 c1 = _mm256_unpackhi_epi64(b0, b1); /* A2367B2367 */ - int32x8_MINMAX(c0, c1); - int32x8 d0 = _mm256_unpacklo_epi64(c0, c1); /* A0123B0123 */ - int32x8 d1 = _mm256_unpackhi_epi64(c0, c1); /* A4567B4567 */ - int32x8_MINMAX(d0, d1); - int32x8 e0 = _mm256_permute2x128_si256(d0, d1, 0x20); - int32x8 e1 = _mm256_permute2x128_si256(d0, d1, 0x31); - int32x8_store(&z[0], e0); - int32x8_store(&z[8], e1); - z += 16; - } - } - - q = n >> 4; - while (q >= 128 || q == 32) { - int32_threestages(x, n, q >> 2); - q >>= 3; - } - while (q >= 16) { - q >>= 1; - for (j = 0; j < n; j += 4 * q) { - for (k = j; k < j + q; k += 8) { - int32x8 x0 = int32x8_load(&x[k]); - int32x8 x1 = int32x8_load(&x[k + q]); - int32x8 x2 = int32x8_load(&x[k + 2 * q]); - int32x8 x3 = int32x8_load(&x[k + 3 * q]); - - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - - int32x8_store(&x[k], x0); - int32x8_store(&x[k + q], x1); - int32x8_store(&x[k + 2 * q], x2); - int32x8_store(&x[k + 3 * q], x3); - } - } - q >>= 1; - } - if (q == 8) { - for (j = 0; j < n; j += 2 * q) { - int32x8 x0 = int32x8_load(&x[j]); - int32x8 x1 = int32x8_load(&x[j + q]); - - int32x8_MINMAX(x0, x1); - - int32x8_store(&x[j], x0); - int32x8_store(&x[j + q], x1); - } - } - - q = n >> 3; - for (k = 0; k < q; k += 8) { - int32x8 x0 = int32x8_load(&x[k]); - int32x8 x1 = int32x8_load(&x[k + q]); - int32x8 x2 = int32x8_load(&x[k + 2 * q]); - int32x8 x3 = int32x8_load(&x[k + 3 * q]); - int32x8 x4 = int32x8_load(&x[k + 4 * q]); - int32x8 x5 = int32x8_load(&x[k + 5 * q]); - int32x8 x6 = int32x8_load(&x[k + 6 * q]); - int32x8 x7 = int32x8_load(&x[k + 7 * q]); - - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - - int32x8_store(&x[k], x0); - int32x8_store(&x[k + q], x1); - int32x8_store(&x[k + 2 * q], x2); - int32x8_store(&x[k + 3 * q], x3); - int32x8_store(&x[k + 4 * q], x4); - int32x8_store(&x[k + 5 * q], x5); - int32x8_store(&x[k + 6 * q], x6); - int32x8_store(&x[k + 7 * q], x7); - } - } - - /* everything is still masked with _mm256_set_epi32(0,-1,0,-1,0,-1,0,-1); */ - mask = _mm256_set1_epi32(-1); - - for (i = 0; i < n; i += 64) { - int32x8 a0 = int32x8_load(&x[i]); - int32x8 a1 = int32x8_load(&x[i + 8]); - int32x8 a2 = int32x8_load(&x[i + 16]); - int32x8 a3 = int32x8_load(&x[i + 24]); - int32x8 a4 = int32x8_load(&x[i + 32]); - int32x8 a5 = int32x8_load(&x[i + 40]); - int32x8 a6 = int32x8_load(&x[i + 48]); - int32x8 a7 = int32x8_load(&x[i + 56]); - - int32x8 b0 = _mm256_unpacklo_epi32(a0, a1); /* AB0AB1AB4AB5 */ - int32x8 b1 = _mm256_unpackhi_epi32(a0, a1); /* AB2AB3AB6AB7 */ - int32x8 b2 = _mm256_unpacklo_epi32(a2, a3); /* CD0CD1CD4CD5 */ - int32x8 b3 = _mm256_unpackhi_epi32(a2, a3); /* CD2CD3CD6CD7 */ - int32x8 b4 = _mm256_unpacklo_epi32(a4, a5); /* EF0EF1EF4EF5 */ - int32x8 b5 = _mm256_unpackhi_epi32(a4, a5); /* EF2EF3EF6EF7 */ - int32x8 b6 = _mm256_unpacklo_epi32(a6, a7); /* GH0GH1GH4GH5 */ - int32x8 b7 = _mm256_unpackhi_epi32(a6, a7); /* GH2GH3GH6GH7 */ - - int32x8 c0 = _mm256_unpacklo_epi64(b0, b2); /* ABCD0ABCD4 */ - int32x8 c1 = _mm256_unpacklo_epi64(b1, b3); /* ABCD2ABCD6 */ - int32x8 c2 = _mm256_unpackhi_epi64(b0, b2); /* ABCD1ABCD5 */ - int32x8 c3 = _mm256_unpackhi_epi64(b1, b3); /* ABCD3ABCD7 */ - int32x8 c4 = _mm256_unpacklo_epi64(b4, b6); /* EFGH0EFGH4 */ - int32x8 c5 = _mm256_unpacklo_epi64(b5, b7); /* EFGH2EFGH6 */ - int32x8 c6 = _mm256_unpackhi_epi64(b4, b6); /* EFGH1EFGH5 */ - int32x8 c7 = _mm256_unpackhi_epi64(b5, b7); /* EFGH3EFGH7 */ - - if (flagdown) { - c2 ^= mask; - c3 ^= mask; - c6 ^= mask; - c7 ^= mask; - } else { - c0 ^= mask; - c1 ^= mask; - c4 ^= mask; - c5 ^= mask; - } - - int32x8 d0 = _mm256_permute2x128_si256(c0, c4, 0x20); /* ABCDEFGH0 */ - int32x8 d1 = _mm256_permute2x128_si256(c2, c6, 0x20); /* ABCDEFGH1 */ - int32x8 d2 = _mm256_permute2x128_si256(c1, c5, 0x20); /* ABCDEFGH2 */ - int32x8 d3 = _mm256_permute2x128_si256(c3, c7, 0x20); /* ABCDEFGH5 */ - int32x8 d4 = _mm256_permute2x128_si256(c0, c4, 0x31); /* ABCDEFGH4 */ - int32x8 d5 = _mm256_permute2x128_si256(c2, c6, 0x31); /* ABCDEFGH3 */ - int32x8 d6 = _mm256_permute2x128_si256(c1, c5, 0x31); /* ABCDEFGH6 */ - int32x8 d7 = _mm256_permute2x128_si256(c3, c7, 0x31); /* ABCDEFGH7 */ - - int32x8_MINMAX(d0, d1); - int32x8_MINMAX(d2, d3); - int32x8_MINMAX(d4, d5); - int32x8_MINMAX(d6, d7); - int32x8_MINMAX(d0, d2); - int32x8_MINMAX(d1, d3); - int32x8_MINMAX(d4, d6); - int32x8_MINMAX(d5, d7); - int32x8_MINMAX(d0, d4); - int32x8_MINMAX(d1, d5); - int32x8_MINMAX(d2, d6); - int32x8_MINMAX(d3, d7); - - int32x8 e0 = _mm256_unpacklo_epi32(d0, d1); - int32x8 e1 = _mm256_unpackhi_epi32(d0, d1); - int32x8 e2 = _mm256_unpacklo_epi32(d2, d3); - int32x8 e3 = _mm256_unpackhi_epi32(d2, d3); - int32x8 e4 = _mm256_unpacklo_epi32(d4, d5); - int32x8 e5 = _mm256_unpackhi_epi32(d4, d5); - int32x8 e6 = _mm256_unpacklo_epi32(d6, d7); - int32x8 e7 = _mm256_unpackhi_epi32(d6, d7); - - int32x8 f0 = _mm256_unpacklo_epi64(e0, e2); - int32x8 f1 = _mm256_unpacklo_epi64(e1, e3); - int32x8 f2 = _mm256_unpackhi_epi64(e0, e2); - int32x8 f3 = _mm256_unpackhi_epi64(e1, e3); - int32x8 f4 = _mm256_unpacklo_epi64(e4, e6); - int32x8 f5 = _mm256_unpacklo_epi64(e5, e7); - int32x8 f6 = _mm256_unpackhi_epi64(e4, e6); - int32x8 f7 = _mm256_unpackhi_epi64(e5, e7); - - int32x8 g0 = _mm256_permute2x128_si256(f0, f4, 0x20); - int32x8 g1 = _mm256_permute2x128_si256(f2, f6, 0x20); - int32x8 g2 = _mm256_permute2x128_si256(f1, f5, 0x20); - int32x8 g3 = _mm256_permute2x128_si256(f3, f7, 0x20); - int32x8 g4 = _mm256_permute2x128_si256(f0, f4, 0x31); - int32x8 g5 = _mm256_permute2x128_si256(f2, f6, 0x31); - int32x8 g6 = _mm256_permute2x128_si256(f1, f5, 0x31); - int32x8 g7 = _mm256_permute2x128_si256(f3, f7, 0x31); - - int32x8_store(&x[i], g0); - int32x8_store(&x[i + 8], g1); - int32x8_store(&x[i + 16], g2); - int32x8_store(&x[i + 24], g3); - int32x8_store(&x[i + 32], g4); - int32x8_store(&x[i + 40], g5); - int32x8_store(&x[i + 48], g6); - int32x8_store(&x[i + 56], g7); - } - - q = n >> 4; - while (q >= 128 || q == 32) { - q >>= 2; - for (j = 0; j < n; j += 8 * q) { - for (i = j; i < j + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8 x4 = int32x8_load(&x[i + 4 * q]); - int32x8 x5 = int32x8_load(&x[i + 5 * q]); - int32x8 x6 = int32x8_load(&x[i + 6 * q]); - int32x8 x7 = int32x8_load(&x[i + 7 * q]); - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - int32x8_store(&x[i + 4 * q], x4); - int32x8_store(&x[i + 5 * q], x5); - int32x8_store(&x[i + 6 * q], x6); - int32x8_store(&x[i + 7 * q], x7); - } - } - q >>= 1; - } - while (q >= 16) { - q >>= 1; - for (j = 0; j < n; j += 4 * q) { - for (i = j; i < j + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - } - } - q >>= 1; - } - if (q == 8) { - for (j = 0; j < n; j += q + q) { - int32x8 x0 = int32x8_load(&x[j]); - int32x8 x1 = int32x8_load(&x[j + q]); - int32x8_MINMAX(x0, x1); - int32x8_store(&x[j], x0); - int32x8_store(&x[j + q], x1); - } - } - - q = n >> 3; - for (i = 0; i < q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8 x4 = int32x8_load(&x[i + 4 * q]); - int32x8 x5 = int32x8_load(&x[i + 5 * q]); - int32x8 x6 = int32x8_load(&x[i + 6 * q]); - int32x8 x7 = int32x8_load(&x[i + 7 * q]); - - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - - int32x8 b0 = _mm256_unpacklo_epi32(x0, x4); /* AE0AE1AE4AE5 */ - int32x8 b1 = _mm256_unpackhi_epi32(x0, x4); /* AE2AE3AE6AE7 */ - int32x8 b2 = _mm256_unpacklo_epi32(x1, x5); /* BF0BF1BF4BF5 */ - int32x8 b3 = _mm256_unpackhi_epi32(x1, x5); /* BF2BF3BF6BF7 */ - int32x8 b4 = _mm256_unpacklo_epi32(x2, x6); /* CG0CG1CG4CG5 */ - int32x8 b5 = _mm256_unpackhi_epi32(x2, x6); /* CG2CG3CG6CG7 */ - int32x8 b6 = _mm256_unpacklo_epi32(x3, x7); /* DH0DH1DH4DH5 */ - int32x8 b7 = _mm256_unpackhi_epi32(x3, x7); /* DH2DH3DH6DH7 */ - - int32x8 c0 = _mm256_unpacklo_epi64(b0, b4); /* AECG0AECG4 */ - int32x8 c1 = _mm256_unpacklo_epi64(b1, b5); /* AECG2AECG6 */ - int32x8 c2 = _mm256_unpackhi_epi64(b0, b4); /* AECG1AECG5 */ - int32x8 c3 = _mm256_unpackhi_epi64(b1, b5); /* AECG3AECG7 */ - int32x8 c4 = _mm256_unpacklo_epi64(b2, b6); /* BFDH0BFDH4 */ - int32x8 c5 = _mm256_unpacklo_epi64(b3, b7); /* BFDH2BFDH6 */ - int32x8 c6 = _mm256_unpackhi_epi64(b2, b6); /* BFDH1BFDH5 */ - int32x8 c7 = _mm256_unpackhi_epi64(b3, b7); /* BFDH3BFDH7 */ - - int32x8 d0 = _mm256_permute2x128_si256(c0, c4, 0x20); /* AECGBFDH0 */ - int32x8 d1 = _mm256_permute2x128_si256(c1, c5, 0x20); /* AECGBFDH2 */ - int32x8 d2 = _mm256_permute2x128_si256(c2, c6, 0x20); /* AECGBFDH1 */ - int32x8 d3 = _mm256_permute2x128_si256(c3, c7, 0x20); /* AECGBFDH3 */ - int32x8 d4 = _mm256_permute2x128_si256(c0, c4, 0x31); /* AECGBFDH4 */ - int32x8 d5 = _mm256_permute2x128_si256(c1, c5, 0x31); /* AECGBFDH6 */ - int32x8 d6 = _mm256_permute2x128_si256(c2, c6, 0x31); /* AECGBFDH5 */ - int32x8 d7 = _mm256_permute2x128_si256(c3, c7, 0x31); /* AECGBFDH7 */ - - if (flagdown) { - d0 ^= mask; - d1 ^= mask; - d2 ^= mask; - d3 ^= mask; - d4 ^= mask; - d5 ^= mask; - d6 ^= mask; - d7 ^= mask; - } - - int32x8_store(&x[i], d0); - int32x8_store(&x[i + q], d4); - int32x8_store(&x[i + 2 * q], d1); - int32x8_store(&x[i + 3 * q], d5); - int32x8_store(&x[i + 4 * q], d2); - int32x8_store(&x[i + 5 * q], d6); - int32x8_store(&x[i + 6 * q], d3); - int32x8_store(&x[i + 7 * q], d7); - } -} - -static void int32_sort(int32 *x, long long n) { - long long q, i, j; - - if (n <= 8) { - if (n == 8) { - int32_MINMAX(&x[0], &x[1]); - int32_MINMAX(&x[1], &x[2]); - int32_MINMAX(&x[2], &x[3]); - int32_MINMAX(&x[3], &x[4]); - int32_MINMAX(&x[4], &x[5]); - int32_MINMAX(&x[5], &x[6]); - int32_MINMAX(&x[6], &x[7]); - } - if (n >= 7) { - int32_MINMAX(&x[0], &x[1]); - int32_MINMAX(&x[1], &x[2]); - int32_MINMAX(&x[2], &x[3]); - int32_MINMAX(&x[3], &x[4]); - int32_MINMAX(&x[4], &x[5]); - int32_MINMAX(&x[5], &x[6]); - } - if (n >= 6) { - int32_MINMAX(&x[0], &x[1]); - int32_MINMAX(&x[1], &x[2]); - int32_MINMAX(&x[2], &x[3]); - int32_MINMAX(&x[3], &x[4]); - int32_MINMAX(&x[4], &x[5]); - } - if (n >= 5) { - int32_MINMAX(&x[0], &x[1]); - int32_MINMAX(&x[1], &x[2]); - int32_MINMAX(&x[2], &x[3]); - int32_MINMAX(&x[3], &x[4]); - } - if (n >= 4) { - int32_MINMAX(&x[0], &x[1]); - int32_MINMAX(&x[1], &x[2]); - int32_MINMAX(&x[2], &x[3]); - } - if (n >= 3) { - int32_MINMAX(&x[0], &x[1]); - int32_MINMAX(&x[1], &x[2]); - } - if (n >= 2) { - int32_MINMAX(&x[0], &x[1]); - } - return; - } - - if (!(n & (n - 1))) { - int32_sort_2power(x, n, 0); - return; - } - - q = 8; - while (q < n - q) { - q += q; - } - /* n > q >= 8 */ - - if (q <= 128) { /* n <= 256 */ - int32x8 y[32]; - for (i = q >> 3; i < q >> 2; ++i) { - y[i] = _mm256_set1_epi32(0x7fffffff); - } - for (i = 0; i < n; ++i) { - ((int32 *) y)[i] = x[i]; - } - int32_sort_2power((int32 *) y, 2 * q, 0); - for (i = 0; i < n; ++i) { - x[i] = ((int32 *) y)[i]; - } - return; - } - - int32_sort_2power(x, q, 1); - int32_sort(x + q, n - q); - - while (q >= 64) { - q >>= 2; - j = int32_threestages(x, n, q); - minmax_vector(x + j, x + j + 4 * q, n - 4 * q - j); - if (j + 4 * q <= n) { - for (i = j; i < j + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - } - j += 4 * q; - } - minmax_vector(x + j, x + j + 2 * q, n - 2 * q - j); - if (j + 2 * q <= n) { - for (i = j; i < j + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8_MINMAX(x0, x1); - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - } - j += 2 * q; - } - minmax_vector(x + j, x + j + q, n - q - j); - q >>= 1; - } - if (q == 32) { - j = 0; - for (; j + 64 <= n; j += 64) { - int32x8 x0 = int32x8_load(&x[j]); - int32x8 x1 = int32x8_load(&x[j + 8]); - int32x8 x2 = int32x8_load(&x[j + 16]); - int32x8 x3 = int32x8_load(&x[j + 24]); - int32x8 x4 = int32x8_load(&x[j + 32]); - int32x8 x5 = int32x8_load(&x[j + 40]); - int32x8 x6 = int32x8_load(&x[j + 48]); - int32x8 x7 = int32x8_load(&x[j + 56]); - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - int32x8 a0 = _mm256_permute2x128_si256(x0, x1, 0x20); - int32x8 a1 = _mm256_permute2x128_si256(x0, x1, 0x31); - int32x8 a2 = _mm256_permute2x128_si256(x2, x3, 0x20); - int32x8 a3 = _mm256_permute2x128_si256(x2, x3, 0x31); - int32x8 a4 = _mm256_permute2x128_si256(x4, x5, 0x20); - int32x8 a5 = _mm256_permute2x128_si256(x4, x5, 0x31); - int32x8 a6 = _mm256_permute2x128_si256(x6, x7, 0x20); - int32x8 a7 = _mm256_permute2x128_si256(x6, x7, 0x31); - int32x8_MINMAX(a0, a1); - int32x8_MINMAX(a2, a3); - int32x8_MINMAX(a4, a5); - int32x8_MINMAX(a6, a7); - int32x8 b0 = _mm256_permute2x128_si256(a0, a1, 0x20); - int32x8 b1 = _mm256_permute2x128_si256(a0, a1, 0x31); - int32x8 b2 = _mm256_permute2x128_si256(a2, a3, 0x20); - int32x8 b3 = _mm256_permute2x128_si256(a2, a3, 0x31); - int32x8 b4 = _mm256_permute2x128_si256(a4, a5, 0x20); - int32x8 b5 = _mm256_permute2x128_si256(a4, a5, 0x31); - int32x8 b6 = _mm256_permute2x128_si256(a6, a7, 0x20); - int32x8 b7 = _mm256_permute2x128_si256(a6, a7, 0x31); - int32x8 c0 = _mm256_unpacklo_epi64(b0, b1); - int32x8 c1 = _mm256_unpackhi_epi64(b0, b1); - int32x8 c2 = _mm256_unpacklo_epi64(b2, b3); - int32x8 c3 = _mm256_unpackhi_epi64(b2, b3); - int32x8 c4 = _mm256_unpacklo_epi64(b4, b5); - int32x8 c5 = _mm256_unpackhi_epi64(b4, b5); - int32x8 c6 = _mm256_unpacklo_epi64(b6, b7); - int32x8 c7 = _mm256_unpackhi_epi64(b6, b7); - int32x8_MINMAX(c0, c1); - int32x8_MINMAX(c2, c3); - int32x8_MINMAX(c4, c5); - int32x8_MINMAX(c6, c7); - int32x8 d0 = _mm256_unpacklo_epi32(c0, c1); - int32x8 d1 = _mm256_unpackhi_epi32(c0, c1); - int32x8 d2 = _mm256_unpacklo_epi32(c2, c3); - int32x8 d3 = _mm256_unpackhi_epi32(c2, c3); - int32x8 d4 = _mm256_unpacklo_epi32(c4, c5); - int32x8 d5 = _mm256_unpackhi_epi32(c4, c5); - int32x8 d6 = _mm256_unpacklo_epi32(c6, c7); - int32x8 d7 = _mm256_unpackhi_epi32(c6, c7); - int32x8 e0 = _mm256_unpacklo_epi64(d0, d1); - int32x8 e1 = _mm256_unpackhi_epi64(d0, d1); - int32x8 e2 = _mm256_unpacklo_epi64(d2, d3); - int32x8 e3 = _mm256_unpackhi_epi64(d2, d3); - int32x8 e4 = _mm256_unpacklo_epi64(d4, d5); - int32x8 e5 = _mm256_unpackhi_epi64(d4, d5); - int32x8 e6 = _mm256_unpacklo_epi64(d6, d7); - int32x8 e7 = _mm256_unpackhi_epi64(d6, d7); - int32x8_MINMAX(e0, e1); - int32x8_MINMAX(e2, e3); - int32x8_MINMAX(e4, e5); - int32x8_MINMAX(e6, e7); - int32x8 f0 = _mm256_unpacklo_epi32(e0, e1); - int32x8 f1 = _mm256_unpackhi_epi32(e0, e1); - int32x8 f2 = _mm256_unpacklo_epi32(e2, e3); - int32x8 f3 = _mm256_unpackhi_epi32(e2, e3); - int32x8 f4 = _mm256_unpacklo_epi32(e4, e5); - int32x8 f5 = _mm256_unpackhi_epi32(e4, e5); - int32x8 f6 = _mm256_unpacklo_epi32(e6, e7); - int32x8 f7 = _mm256_unpackhi_epi32(e6, e7); - int32x8_store(&x[j], f0); - int32x8_store(&x[j + 8], f1); - int32x8_store(&x[j + 16], f2); - int32x8_store(&x[j + 24], f3); - int32x8_store(&x[j + 32], f4); - int32x8_store(&x[j + 40], f5); - int32x8_store(&x[j + 48], f6); - int32x8_store(&x[j + 56], f7); - } - minmax_vector(x + j, x + j + 32, n - 32 - j); - goto continue16; - } - if (q == 16) { - j = 0; -continue16: - for (; j + 32 <= n; j += 32) { - int32x8 x0 = int32x8_load(&x[j]); - int32x8 x1 = int32x8_load(&x[j + 8]); - int32x8 x2 = int32x8_load(&x[j + 16]); - int32x8 x3 = int32x8_load(&x[j + 24]); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8 a0 = _mm256_permute2x128_si256(x0, x1, 0x20); - int32x8 a1 = _mm256_permute2x128_si256(x0, x1, 0x31); - int32x8 a2 = _mm256_permute2x128_si256(x2, x3, 0x20); - int32x8 a3 = _mm256_permute2x128_si256(x2, x3, 0x31); - int32x8_MINMAX(a0, a1); - int32x8_MINMAX(a2, a3); - int32x8 b0 = _mm256_permute2x128_si256(a0, a1, 0x20); - int32x8 b1 = _mm256_permute2x128_si256(a0, a1, 0x31); - int32x8 b2 = _mm256_permute2x128_si256(a2, a3, 0x20); - int32x8 b3 = _mm256_permute2x128_si256(a2, a3, 0x31); - int32x8 c0 = _mm256_unpacklo_epi64(b0, b1); - int32x8 c1 = _mm256_unpackhi_epi64(b0, b1); - int32x8 c2 = _mm256_unpacklo_epi64(b2, b3); - int32x8 c3 = _mm256_unpackhi_epi64(b2, b3); - int32x8_MINMAX(c0, c1); - int32x8_MINMAX(c2, c3); - int32x8 d0 = _mm256_unpacklo_epi32(c0, c1); - int32x8 d1 = _mm256_unpackhi_epi32(c0, c1); - int32x8 d2 = _mm256_unpacklo_epi32(c2, c3); - int32x8 d3 = _mm256_unpackhi_epi32(c2, c3); - int32x8 e0 = _mm256_unpacklo_epi64(d0, d1); - int32x8 e1 = _mm256_unpackhi_epi64(d0, d1); - int32x8 e2 = _mm256_unpacklo_epi64(d2, d3); - int32x8 e3 = _mm256_unpackhi_epi64(d2, d3); - int32x8_MINMAX(e0, e1); - int32x8_MINMAX(e2, e3); - int32x8 f0 = _mm256_unpacklo_epi32(e0, e1); - int32x8 f1 = _mm256_unpackhi_epi32(e0, e1); - int32x8 f2 = _mm256_unpacklo_epi32(e2, e3); - int32x8 f3 = _mm256_unpackhi_epi32(e2, e3); - int32x8_store(&x[j], f0); - int32x8_store(&x[j + 8], f1); - int32x8_store(&x[j + 16], f2); - int32x8_store(&x[j + 24], f3); - } - minmax_vector(x + j, x + j + 16, n - 16 - j); - goto continue8; - } - /* q == 8 */ - j = 0; -continue8: - for (; j + 16 <= n; j += 16) { - int32x8 x0 = int32x8_load(&x[j]); - int32x8 x1 = int32x8_load(&x[j + 8]); - int32x8_MINMAX(x0, x1); - int32x8_store(&x[j], x0); - int32x8_store(&x[j + 8], x1); - int32x8 a0 = _mm256_permute2x128_si256(x0, x1, 0x20); /* x0123y0123 */ - int32x8 a1 = _mm256_permute2x128_si256(x0, x1, 0x31); /* x4567y4567 */ - int32x8_MINMAX(a0, a1); - int32x8 b0 = _mm256_permute2x128_si256(a0, a1, 0x20); /* x01234567 */ - int32x8 b1 = _mm256_permute2x128_si256(a0, a1, 0x31); /* y01234567 */ - int32x8 c0 = _mm256_unpacklo_epi64(b0, b1); /* x01y01x45y45 */ - int32x8 c1 = _mm256_unpackhi_epi64(b0, b1); /* x23y23x67y67 */ - int32x8_MINMAX(c0, c1); - int32x8 d0 = _mm256_unpacklo_epi32(c0, c1); /* x02x13x46x57 */ - int32x8 d1 = _mm256_unpackhi_epi32(c0, c1); /* y02y13y46y57 */ - int32x8 e0 = _mm256_unpacklo_epi64(d0, d1); /* x02y02x46y46 */ - int32x8 e1 = _mm256_unpackhi_epi64(d0, d1); /* x13y13x57y57 */ - int32x8_MINMAX(e0, e1); - int32x8 f0 = _mm256_unpacklo_epi32(e0, e1); /* x01234567 */ - int32x8 f1 = _mm256_unpackhi_epi32(e0, e1); /* y01234567 */ - int32x8_store(&x[j], f0); - int32x8_store(&x[j + 8], f1); - } - minmax_vector(x + j, x + j + 8, n - 8 - j); - if (j + 8 <= n) { - int32_MINMAX(&x[j], &x[j + 4]); - int32_MINMAX(&x[j + 1], &x[j + 5]); - int32_MINMAX(&x[j + 2], &x[j + 6]); - int32_MINMAX(&x[j + 3], &x[j + 7]); - int32_MINMAX(&x[j], &x[j + 2]); - int32_MINMAX(&x[j + 1], &x[j + 3]); - int32_MINMAX(&x[j], &x[j + 1]); - int32_MINMAX(&x[j + 2], &x[j + 3]); - int32_MINMAX(&x[j + 4], &x[j + 6]); - int32_MINMAX(&x[j + 5], &x[j + 7]); - int32_MINMAX(&x[j + 4], &x[j + 5]); - int32_MINMAX(&x[j + 6], &x[j + 7]); - j += 8; - } - minmax_vector(x + j, x + j + 4, n - 4 - j); - if (j + 4 <= n) { - int32_MINMAX(&x[j], &x[j + 2]); - int32_MINMAX(&x[j + 1], &x[j + 3]); - int32_MINMAX(&x[j], &x[j + 1]); - int32_MINMAX(&x[j + 2], &x[j + 3]); - j += 4; - } - if (j + 3 <= n) { - int32_MINMAX(&x[j], &x[j + 2]); - } - if (j + 2 <= n) { - int32_MINMAX(&x[j], &x[j + 1]); - } -} - -void PQCLEAN_NTRULPR761_AVX2_crypto_sort_int32(void *array, long long n) { - int32_sort(array, n); -} diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_sort_int32.h b/src/kem/ntru_prime/ntrulpr761/avx2/crypto_sort_int32.h deleted file mode 100644 index 6bd305b1..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_sort_int32.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef PQCLEAN_NTRULPR761_AVX2_CRYPTO_SORT_INT32_H -#define PQCLEAN_NTRULPR761_AVX2_CRYPTO_SORT_INT32_H - -#include -#define PQCLEAN_NTRULPR761_AVX2_crypto_sort_int32_BYTES 4 - -void PQCLEAN_NTRULPR761_AVX2_crypto_sort_int32(void *array, long long n); -#endif diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_sort_uint32.c b/src/kem/ntru_prime/ntrulpr761/avx2/crypto_sort_uint32.c deleted file mode 100644 index a4ed948c..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_sort_uint32.c +++ /dev/null @@ -1,18 +0,0 @@ -#include "crypto_sort_int32.h" -#include "crypto_sort_uint32.h" - - -/* can save time by vectorizing xor loops */ -/* can save time by integrating xor loops with int32_sort */ - -void PQCLEAN_NTRULPR761_AVX2_crypto_sort_uint32(void *array, long long n) { - uint32_t *x = array; - long long j; - for (j = 0; j < n; ++j) { - x[j] ^= 0x80000000; - } - PQCLEAN_NTRULPR761_AVX2_crypto_sort_int32((int32_t *)array, n); - for (j = 0; j < n; ++j) { - x[j] ^= 0x80000000; - } -} diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_sort_uint32.h b/src/kem/ntru_prime/ntrulpr761/avx2/crypto_sort_uint32.h deleted file mode 100644 index da8370dd..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_sort_uint32.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef PQCLEAN_NTRULPR761_AVX2_CRYPTO_SORT_UINT32_H -#define PQCLEAN_NTRULPR761_AVX2_CRYPTO_SORT_UINT32_H - -#include -#define PQCLEAN_NTRULPR761_AVX2_crypto_sort_uint32_BYTES 4 - -void PQCLEAN_NTRULPR761_AVX2_crypto_sort_uint32(void *array, long long n); -#endif diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_stream_aes256ctr.c b/src/kem/ntru_prime/ntrulpr761/avx2/crypto_stream_aes256ctr.c deleted file mode 100644 index a40c96d4..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_stream_aes256ctr.c +++ /dev/null @@ -1,15 +0,0 @@ -#include "crypto_stream_aes256ctr.h" - - -int PQCLEAN_NTRULPR761_AVX2_crypto_stream_aes256ctr( - uint8_t *out, - size_t outlen, - const uint8_t nonce[AESCTR_NONCEBYTES], - const uint8_t key[AES256_KEYBYTES]) { - - aes256ctx state; - aes256_ctr_keyexp(&state, key); - aes256_ctr(out, outlen, nonce, &state); - aes256_ctx_release(&state); - return 0; -} diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_stream_aes256ctr.h b/src/kem/ntru_prime/ntrulpr761/avx2/crypto_stream_aes256ctr.h deleted file mode 100644 index 52a8e430..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_stream_aes256ctr.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef PQCLEAN_NTRULPR761_AVX2_CRYPTO_STREAM_AES256CTR_H -#define PQCLEAN_NTRULPR761_AVX2_CRYPTO_STREAM_AES256CTR_H -#include "aes.h" -#include -#include - - - -int PQCLEAN_NTRULPR761_AVX2_crypto_stream_aes256ctr( - uint8_t *out, - size_t outlen, - const uint8_t nonce[AESCTR_NONCEBYTES], - const uint8_t key[AES256_KEYBYTES]); - -#endif diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_verify_1167.c b/src/kem/ntru_prime/ntrulpr761/avx2/crypto_verify_1167.c deleted file mode 100644 index 5fa3f002..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_verify_1167.c +++ /dev/null @@ -1,36 +0,0 @@ -#include "crypto_verify_1167.h" -#include - -int PQCLEAN_NTRULPR761_AVX2_crypto_verify_1167(const unsigned char *x, const unsigned char *y) { - __m256i diff = _mm256_set1_epi8(0); - unsigned int differentbits = 0; - int i = PQCLEAN_NTRULPR761_AVX2_crypto_verify_1167_BYTES; - - i -= 32; - for (;;) { - do { - __m256i x0 = _mm256_loadu_si256((__m256i *) x); - __m256i y0 = _mm256_loadu_si256((__m256i *) y); - diff |= x0 ^ y0; - i -= 32; - x += 32; - y += 32; - } while (i >= 0); - if (i <= -32) { - break; - } - x += i; - y += i; - } - - diff |= _mm256_srli_epi16(diff, 8); - diff |= _mm256_srli_epi32(diff, 16); - diff |= _mm256_srli_epi64(diff, 32); - - differentbits = (unsigned int) _mm256_extract_epi8(diff, 0); - differentbits |= (unsigned int) _mm256_extract_epi8(diff, 8); - differentbits |= (unsigned int) _mm256_extract_epi8(diff, 16); - differentbits |= (unsigned int) _mm256_extract_epi8(diff, 24); - - return (int) (1 & ((differentbits - 1) >> 8)) - 1; -} diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_verify_1167.h b/src/kem/ntru_prime/ntrulpr761/avx2/crypto_verify_1167.h deleted file mode 100644 index afeaa888..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/crypto_verify_1167.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef PQCLEAN_NTRULPR761_AVX2_CRYPTO_VERIFY_1167_H -#define PQCLEAN_NTRULPR761_AVX2_CRYPTO_VERIFY_1167_H - -#include -#define PQCLEAN_NTRULPR761_AVX2_crypto_verify_1167_BYTES 1167 - -int PQCLEAN_NTRULPR761_AVX2_crypto_verify_1167(const unsigned char *x, const unsigned char *y); -#endif diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/kem.c b/src/kem/ntru_prime/ntrulpr761/avx2/kem.c deleted file mode 100644 index 81c07d81..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/kem.c +++ /dev/null @@ -1,287 +0,0 @@ -#include "api.h" -#include "crypto_sort_uint32.h" -#include "crypto_stream_aes256ctr.h" -#include "params.h" -#include "randombytes.h" -#include "sha2.h" - - - -#define int8 int8_t -#define int16 int16_t -#define int32 int32_t -#define uint16 uint16_t -#define uint32 uint32_t -#define uint64 uint64_t - -/* ----- masks */ - -/* return -1 if x<0; otherwise return 0 */ -static int int16_negative_mask(int16 x) { - uint16 u = (uint16) x; - u >>= 15; - return -(int) u; - /* alternative with gcc -fwrapv: */ - /* x>>15 compiles to CPU's arithmetic right shift */ -} - -/* ----- arithmetic mod 3 */ - -typedef int8 small; -/* F3 is always represented as -1,0,1 */ - -/* ----- arithmetic mod q */ - -#define q12 ((q-1)/2) -typedef int16 Fq; - -/* works for -14000000 < x < 14000000 if q in 4591, 4621, 5167 */ -/* assumes twos complement; use, e.g., gcc -fwrapv */ -static Fq Fq_freeze(int32 x) { - x -= (int32) (q * ((q18 * x) >> 18)); - x -= (int32) (q * ((q27 * x + 67108864) >> 27)); - return (Fq) x; -} - -/* works for all uint32 x */ -static Fq Fq_bigfreeze(uint32 x) { - x -= (uint32) (q * ((x * (uint64)q31) >> 31)); - x -= (uint32) (q * ((x * (uint64)q31) >> 31)); - x -= q; - x += (~(x >> 31) + 1) & (uint32)q; - return (Fq) x; -} - -/* ----- Top and Right */ - -static int8 Top(Fq C) { - return (int8) ((tau1 * (int32)(C + tau0) + 16384) >> 15); -} - -static Fq Right(int8 T) { - return Fq_freeze(tau3 * (int32)T - tau2); -} - -/* ----- polynomials mod q */ - -/* h = h*g in the ring Rq */ -static void Rq_mult_small(Fq *h, const small *g) { - crypto_encode_pxint16((unsigned char *) h, h); - crypto_core_mult((unsigned char *) h, (const unsigned char *) h, (const unsigned char *) g); - crypto_decode_pxint16(h, (const unsigned char *) h); -} - -/* ----- sorting to generate short polynomial */ - -static void Short_fromlist(small *out, const uint32 *in) { - uint32 L[ppadsort]; - int i; - - for (i = 0; i < w; ++i) { - L[i] = in[i] & (uint32) - 2; - } - for (i = w; i < p; ++i) { - L[i] = (in[i] & (uint32) - 3) | 1; - } - for (i = p; i < ppadsort; ++i) { - L[i] = 0xffffffff; - } - PQCLEAN_NTRULPR761_AVX2_crypto_sort_uint32(L, ppadsort); - for (i = 0; i < p; ++i) { - out[i] = (small) ((L[i] & 3) - 1); - } -} - -/* ----- underlying hash function */ - -#define Hash_bytes 32 - -static void Hash(unsigned char *out, const unsigned char *in, int inlen) { - unsigned char h[64]; - int i; - sha512(h, in, (size_t) inlen); - for (i = 0; i < 32; ++i) { - out[i] = h[i]; - } -} - -/* ----- higher-level randomness */ - -static void Short_random(small *out) { - uint32 L[p]; - - randombytes((unsigned char *) L, sizeof L); - crypto_decode_pxint32(L, (unsigned char *) L); - Short_fromlist(out, L); -} - -/* ----- Inputs, Generator */ - -typedef int8 Inputs[I]; /* passed by reference */ - -static const unsigned char aes_nonce[16] = {0}; - -/* G = Generator(pk) */ -static void Generator(Fq *G, const unsigned char *pk) { - uint32 L[p]; - int i; - - PQCLEAN_NTRULPR761_AVX2_crypto_stream_aes256ctr((unsigned char *) L, 4 * p, aes_nonce, pk); - crypto_decode_pxint32(L, (unsigned char *) L); - for (i = 0; i < p; ++i) { - G[i] = Fq_bigfreeze(L[i]) - q12; - } -} - -/* ----- NTRU LPRime */ - -#define Seeds_bytes 32 -#define Ciphertexts_bytes (Rounded_bytes+Top_bytes) -#define SecretKeys_bytes Small_bytes -#define PublicKeys_bytes (Seeds_bytes+Rounded_bytes) -#define Confirm_bytes 32 - -/* c,r_enc[1:] = Hide(r,pk,cache); cache is Hash4(pk) */ -static void Hide(unsigned char *c, unsigned char *r_enc, const Inputs r, const unsigned char *pk, const unsigned char *cache) { - small b[p]; - int i; - - Inputs_encode(r_enc + 1, r); - { - unsigned char h[Hash_bytes]; - uint32 L[p]; - { - unsigned char s[1 + Inputs_bytes]; - Inputs_encode(s + 1, r); - s[0] = 5; - Hash(h, s, sizeof s); - } - PQCLEAN_NTRULPR761_AVX2_crypto_stream_aes256ctr((unsigned char *) L, 4 * p, aes_nonce, h); - crypto_decode_pxint32(L, (unsigned char *) L); - Short_fromlist(b, L); - } - { - Fq bG[p]; - Generator(bG, pk); - Rq_mult_small(bG, b); - Round_and_encode(c, bG); - c += Rounded_bytes; - } - { - Fq bA[p]; - int8 T[I]; - Rounded_decode(bA, pk + Seeds_bytes); - Rq_mult_small(bA, b); - for (i = 0; i < I; ++i) { - T[i] = Top(Fq_freeze(bA[i] + r[i] * q12)); - } - Top_encode(c, T); - c += Top_bytes; - } - { - unsigned char x[1 + Inputs_bytes + Hash_bytes]; - for (i = 0; i < Inputs_bytes; ++i) { - x[1 + i] = r_enc[1 + i]; - } - for (i = 0; i < Hash_bytes; ++i) { - x[1 + Inputs_bytes + i] = cache[i]; - } - x[0] = 2; - Hash(c, x, sizeof x); - } -} - - -int PQCLEAN_NTRULPR761_AVX2_crypto_kem_keypair(unsigned char *pk, unsigned char *sk) { - Fq aG[p]; - int i; - randombytes(pk, Seeds_bytes); - Generator(aG, pk); - { - small a[p]; - Short_random(a); - Rq_mult_small(aG, a); - Small_encode(sk, a); - } - Round_and_encode(pk + Seeds_bytes, aG); - { - unsigned char sksave = sk[SecretKeys_bytes - 1]; - for (i = 0; i < PublicKeys_bytes; ++i) { - sk[SecretKeys_bytes + i] = pk[i]; - } - sk[SecretKeys_bytes - 1] = 4; - Hash(sk + SecretKeys_bytes + PublicKeys_bytes + Inputs_bytes, sk + SecretKeys_bytes - 1, 1 + PublicKeys_bytes); - sk[SecretKeys_bytes - 1] = sksave; - randombytes(sk + SecretKeys_bytes + PublicKeys_bytes, Inputs_bytes); - } - return 0; -} - -int PQCLEAN_NTRULPR761_AVX2_crypto_kem_enc(unsigned char *c, unsigned char *k, const unsigned char *pk) { - int i; - unsigned char cache[Hash_bytes]; - { - unsigned char y[1 + PublicKeys_bytes]; - for (i = 0; i < PublicKeys_bytes; ++i) { - y[1 + i] = pk[i]; - } - y[0] = 4; - Hash(cache, y, sizeof y); - } - Inputs r; - { - unsigned char s[Inputs_bytes]; - randombytes(s, sizeof s); - Inputs_decode(r, s); - } - { - unsigned char x[1 + Inputs_bytes + Ciphertexts_bytes + Confirm_bytes]; - Hide(c, x, r, pk, cache); - for (i = 0; i < Ciphertexts_bytes + Confirm_bytes; ++i) { - x[1 + Inputs_bytes + i] = c[i]; - } - x[0] = 1; - Hash(k, x, sizeof x); - } - return 0; -} - -int PQCLEAN_NTRULPR761_AVX2_crypto_kem_dec(unsigned char *k, const unsigned char *c, const unsigned char *sk) { - const unsigned char *pk = sk + SecretKeys_bytes; - const unsigned char *rho = pk + PublicKeys_bytes; - const unsigned char *cache = rho + Inputs_bytes; - Inputs r; - int i; - { - Fq aB[p]; - Rounded_decode(aB, c); - { - small a[p]; - Small_decode(a, sk); - Rq_mult_small(aB, a); - } - { - int8 T[I]; - Top_decode(T, c + Rounded_bytes); - for (i = 0; i < I; ++i) { - r[i] = (int8) - int16_negative_mask(Fq_freeze(Right(T[i]) - aB[i] + 4 * w + 1)); - } - } - } - { - unsigned char cnew[Ciphertexts_bytes + Confirm_bytes]; - int mask; - unsigned char x[1 + Inputs_bytes + Ciphertexts_bytes + Confirm_bytes]; - Hide(cnew, x, r, pk, cache); - mask = crypto_verify_clen(c, cnew); - for (i = 0; i < Inputs_bytes; ++i) { - x[1 + i] ^= (unsigned char) (mask & (x[1 + i] ^ rho[i])); - } - for (i = 0; i < Ciphertexts_bytes + Confirm_bytes; ++i) { - x[1 + Inputs_bytes + i] = c[i]; - } - x[0] = (unsigned char) (1 + mask); - Hash(k, x, sizeof x); - } - return 0; -} diff --git a/src/kem/ntru_prime/ntrulpr761/avx2/params.h b/src/kem/ntru_prime/ntrulpr761/avx2/params.h deleted file mode 100644 index 5c631b2d..00000000 --- a/src/kem/ntru_prime/ntrulpr761/avx2/params.h +++ /dev/null @@ -1,63 +0,0 @@ -#ifndef params_H -#define params_H -#include "crypto_core_multsntrup761.h" -#include "crypto_decode_256x16.h" -#include "crypto_decode_256x2.h" -#include "crypto_decode_761x1531.h" -#include "crypto_decode_761x3.h" -#include "crypto_decode_761xint16.h" -#include "crypto_decode_761xint32.h" -#include "crypto_encode_256x16.h" -#include "crypto_encode_256x2.h" -#include "crypto_encode_761x1531.h" -#include "crypto_encode_761x1531round.h" -#include "crypto_encode_761x3.h" -#include "crypto_encode_761xint16.h" -#include "crypto_sort_int32.h" -#include "crypto_sort_uint32.h" -#include "crypto_verify_1167.h" - - -#define p 761 -#define q 4591 -#define w 250 -#define tau0 2156 -#define tau1 114 -#define tau2 2007 -#define tau3 287 -#define I 256 - -#define ppadsort 768 - -#define q18 57 /* round(2^18/q) */ -#define q27 29235 /* round(2^27/q) */ -#define q31 467759 /* floor(2^31/q) */ - -#define crypto_verify_clen PQCLEAN_NTRULPR761_AVX2_crypto_verify_1167 - -#define Rounded_bytes PQCLEAN_NTRULPR761_AVX2_crypto_decode_761x1531_STRBYTES -#define Rounded_decode PQCLEAN_NTRULPR761_AVX2_crypto_decode_761x1531 - -#define Round_and_encode PQCLEAN_NTRULPR761_AVX2_crypto_encode_761x1531round - -#define Small_bytes PQCLEAN_NTRULPR761_AVX2_crypto_encode_761x3_STRBYTES -#define Small_encode PQCLEAN_NTRULPR761_AVX2_crypto_encode_761x3 -#define Small_decode PQCLEAN_NTRULPR761_AVX2_crypto_decode_761x3 - -#define Top_bytes PQCLEAN_NTRULPR761_AVX2_crypto_encode_256x16_STRBYTES -#define Top_encode PQCLEAN_NTRULPR761_AVX2_crypto_encode_256x16 -#define Top_decode PQCLEAN_NTRULPR761_AVX2_crypto_decode_256x16 - -#define Inputs_bytes PQCLEAN_NTRULPR761_AVX2_crypto_encode_256x2_STRBYTES -#define Inputs_encode PQCLEAN_NTRULPR761_AVX2_crypto_encode_256x2 -#define Inputs_decode PQCLEAN_NTRULPR761_AVX2_crypto_decode_256x2 - -#define crypto_decode_pxint32 PQCLEAN_NTRULPR761_AVX2_crypto_decode_761xint32 - -#define crypto_decode_pxint16 PQCLEAN_NTRULPR761_AVX2_crypto_decode_761xint16 - -#define crypto_encode_pxint16 PQCLEAN_NTRULPR761_AVX2_crypto_encode_761xint16 - -#define crypto_core_mult PQCLEAN_NTRULPR761_AVX2_crypto_core_multsntrup761 - -#endif diff --git a/src/kem/ntru_prime/ntrulpr761/clean/CMakeLists.txt b/src/kem/ntru_prime/ntrulpr761/clean/CMakeLists.txt deleted file mode 100644 index e007e33b..00000000 --- a/src/kem/ntru_prime/ntrulpr761/clean/CMakeLists.txt +++ /dev/null @@ -1,24 +0,0 @@ -set( - SRC_CLEAN_NTRULPR761 - crypto_core_multsntrup761.c - crypto_decode_256x16.c - crypto_decode_256x2.c - crypto_decode_761x1531.c - crypto_decode_761x3.c - crypto_decode_761xint16.c - crypto_decode_761xint32.c - crypto_encode_256x16.c - crypto_encode_256x2.c - crypto_encode_761x1531.c - crypto_encode_761x1531round.c - crypto_encode_761x3.c - crypto_encode_761xint16.c - crypto_sort_int32.c - crypto_sort_uint32.c - crypto_stream_aes256ctr.c - crypto_verify_1167.c - kem.c -) - -define_kem_alg(ntrulpr761_clean - PQCLEAN_NTRULPR761_CLEAN "${SRC_CLEAN_NTRULPR761}" "${CMAKE_CURRENT_SOURCE_DIR}") diff --git a/src/kem/ntru_prime/ntrulpr761/clean/api.h b/src/kem/ntru_prime/ntrulpr761/clean/api.h deleted file mode 100644 index dc7f2bb6..00000000 --- a/src/kem/ntru_prime/ntrulpr761/clean/api.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef PQCLEAN_NTRULPR761_CLEAN_API_H -#define PQCLEAN_NTRULPR761_CLEAN_API_H - - - -#define PQCLEAN_NTRULPR761_CLEAN_CRYPTO_ALGNAME "ntrulpr761" - -#define PQCLEAN_NTRULPR761_CLEAN_CRYPTO_SECRETKEYBYTES 1294 -#define PQCLEAN_NTRULPR761_CLEAN_CRYPTO_PUBLICKEYBYTES 1039 -#define PQCLEAN_NTRULPR761_CLEAN_CRYPTO_CIPHERTEXTBYTES 1167 -#define PQCLEAN_NTRULPR761_CLEAN_CRYPTO_BYTES 32 - -int PQCLEAN_NTRULPR761_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); -int PQCLEAN_NTRULPR761_CLEAN_crypto_kem_enc(unsigned char *c, unsigned char *k, const unsigned char *pk); -int PQCLEAN_NTRULPR761_CLEAN_crypto_kem_dec(unsigned char *k, const unsigned char *c, const unsigned char *sk); -#endif diff --git a/src/kem/ntru_prime/ntrulpr761/clean/crypto_core_multsntrup761.c b/src/kem/ntru_prime/ntrulpr761/clean/crypto_core_multsntrup761.c deleted file mode 100644 index 4c5086f5..00000000 --- a/src/kem/ntru_prime/ntrulpr761/clean/crypto_core_multsntrup761.c +++ /dev/null @@ -1,60 +0,0 @@ -#include "crypto_core_multsntrup761.h" -#include "params.h" - - -#define int8 int8_t -#define int16 int16_t -#define int32 int32_t -typedef int8 small; - -typedef int16 Fq; -/* always represented as -(q-1)/2...(q-1)/2 */ - -/* works for -14000000 < x < 14000000 if q in 4591, 4621, 5167 */ -static Fq Fq_freeze(int32 x) { - x -= q * ((q18 * x) >> 18); - x -= q * ((q27 * x + 67108864) >> 27); - return (Fq) x; -} - -int PQCLEAN_NTRULPR761_CLEAN_crypto_core_multsntrup761(unsigned char *outbytes, const unsigned char *inbytes, const unsigned char *kbytes) { - Fq f[p]; - small g[p]; - Fq fg[p + p - 1]; - int32 result; - int i, j; - - crypto_decode_pxint16(f, inbytes); - for (i = 0; i < p; ++i) { - f[i] = Fq_freeze(f[i]); - } - - for (i = 0; i < p; ++i) { - small gi = (small) kbytes[i]; - small gi0 = gi & 1; - g[i] = (small) (gi0 - (gi & (gi0 << 1))); - } - - for (i = 0; i < p; ++i) { - result = 0; - for (j = 0; j <= i; ++j) { - result += f[j] * (int32)g[i - j]; - } - fg[i] = Fq_freeze(result); - } - for (i = p; i < p + p - 1; ++i) { - result = 0; - for (j = i - p + 1; j < p; ++j) { - result += f[j] * (int32)g[i - j]; - } - fg[i] = Fq_freeze(result); - } - - for (i = p + p - 2; i >= p; --i) { - fg[i - p] = Fq_freeze(fg[i - p] + fg[i]); - fg[i - p + 1] = Fq_freeze(fg[i - p + 1] + fg[i]); - } - - crypto_encode_pxint16(outbytes, fg); - return 0; -} diff --git a/src/kem/ntru_prime/ntrulpr761/clean/crypto_core_multsntrup761.h b/src/kem/ntru_prime/ntrulpr761/clean/crypto_core_multsntrup761.h deleted file mode 100644 index 3da5b2e0..00000000 --- a/src/kem/ntru_prime/ntrulpr761/clean/crypto_core_multsntrup761.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef PQCLEAN_NTRULPR761_CLEAN_CRYPTO_CORE_MULTSNTRUP761_H -#define PQCLEAN_NTRULPR761_CLEAN_CRYPTO_CORE_MULTSNTRUP761_H - -#include -#define PQCLEAN_NTRULPR761_CLEAN_crypto_core_multsntrup761_OUTPUTBYTES 1522 -#define PQCLEAN_NTRULPR761_CLEAN_crypto_core_multsntrup761_INPUTBYTES 1522 -#define PQCLEAN_NTRULPR761_CLEAN_crypto_core_multsntrup761_KEYBYTES 761 -#define PQCLEAN_NTRULPR761_CLEAN_crypto_core_multsntrup761_CONSTBYTES 0 - -int PQCLEAN_NTRULPR761_CLEAN_crypto_core_multsntrup761(unsigned char *outbytes, const unsigned char *inbytes, const unsigned char *kbytes); -#endif diff --git a/src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_256x16.c b/src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_256x16.c deleted file mode 100644 index 82ff1b27..00000000 --- a/src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_256x16.c +++ /dev/null @@ -1,11 +0,0 @@ -#include "crypto_decode_256x16.h" - - -void PQCLEAN_NTRULPR761_CLEAN_crypto_decode_256x16(void *v, const unsigned char *s) { - unsigned char *T = v; - int i; - for (i = 0; i < 128; ++i) { - T[2 * i] = s[i] & 15; - T[2 * i + 1] = s[i] >> 4; - } -} diff --git a/src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_256x16.h b/src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_256x16.h deleted file mode 100644 index 2c38ad47..00000000 --- a/src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_256x16.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR761_CLEAN_CRYPTO_DECODE_256X16_H -#define PQCLEAN_NTRULPR761_CLEAN_CRYPTO_DECODE_256X16_H - -#include -#define PQCLEAN_NTRULPR761_CLEAN_crypto_decode_256x16_STRBYTES 128 -#define PQCLEAN_NTRULPR761_CLEAN_crypto_decode_256x16_ITEMS 256 -#define PQCLEAN_NTRULPR761_CLEAN_crypto_decode_256x16_ITEMBYTES 1 - -void PQCLEAN_NTRULPR761_CLEAN_crypto_decode_256x16(void *v, const unsigned char *s); -#endif diff --git a/src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_256x2.c b/src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_256x2.c deleted file mode 100644 index d30c5f84..00000000 --- a/src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_256x2.c +++ /dev/null @@ -1,10 +0,0 @@ -#include "crypto_decode_256x2.h" - - -void PQCLEAN_NTRULPR761_CLEAN_crypto_decode_256x2(void *v, const unsigned char *s) { - unsigned char *r = v; - int i; - for (i = 0; i < 256; ++i) { - r[i] = 1 & (s[i >> 3] >> (i & 7)); - } -} diff --git a/src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_256x2.h b/src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_256x2.h deleted file mode 100644 index 7798a97e..00000000 --- a/src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_256x2.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR761_CLEAN_CRYPTO_DECODE_256X2_H -#define PQCLEAN_NTRULPR761_CLEAN_CRYPTO_DECODE_256X2_H - -#include -#define PQCLEAN_NTRULPR761_CLEAN_crypto_decode_256x2_STRBYTES 32 -#define PQCLEAN_NTRULPR761_CLEAN_crypto_decode_256x2_ITEMS 256 -#define PQCLEAN_NTRULPR761_CLEAN_crypto_decode_256x2_ITEMBYTES 1 - -void PQCLEAN_NTRULPR761_CLEAN_crypto_decode_256x2(void *v, const unsigned char *s); -#endif diff --git a/src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_761x1531.c b/src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_761x1531.c deleted file mode 100644 index 7617f528..00000000 --- a/src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_761x1531.c +++ /dev/null @@ -1,211 +0,0 @@ -#include "crypto_decode_761x1531.h" - -/* auto-generated; do not edit */ - -#define int16 int16_t -#define uint16 uint16_t -#define uint32 uint32_t -#define uint64 uint64_t - -/* -CPU division instruction typically takes time depending on x. -This software is designed to take time independent of x. -Time still varies depending on m; user must ensure that m is constant. -Time also varies on CPUs where multiplication is variable-time. -There could be more CPU issues. -There could also be compiler issues. -*/ - -static void uint32_divmod_uint14(uint32 *q, uint16 *r, uint32 x, uint16 m) { - uint32 v = 0x80000000; - uint32 qpart; - uint32 mask; - - v /= m; - - /* caller guarantees m > 0 */ - /* caller guarantees m < 16384 */ - /* vm <= 2^31 <= vm+m-1 */ - /* xvm <= 2^31 x <= xvm+x(m-1) */ - - *q = 0; - - qpart = (uint32) ((x * (uint64)v) >> 31); - /* 2^31 qpart <= xv <= 2^31 qpart + 2^31-1 */ - /* 2^31 qpart m <= xvm <= 2^31 qpart m + (2^31-1)m */ - /* 2^31 qpart m <= 2^31 x <= 2^31 qpart m + (2^31-1)m + x(m-1) */ - /* 0 <= 2^31 newx <= (2^31-1)m + x(m-1) */ - /* 0 <= newx <= (1-1/2^31)m + x(m-1)/2^31 */ - /* 0 <= newx <= (1-1/2^31)(2^14-1) + (2^32-1)((2^14-1)-1)/2^31 */ - - x -= qpart * m; - *q += qpart; - /* x <= 49146 */ - - qpart = (uint32) ((x * (uint64)v) >> 31); - /* 0 <= newx <= (1-1/2^31)m + x(m-1)/2^31 */ - /* 0 <= newx <= m + 49146(2^14-1)/2^31 */ - /* 0 <= newx <= m + 0.4 */ - /* 0 <= newx <= m */ - - x -= qpart * m; - *q += qpart; - /* x <= m */ - - x -= m; - *q += 1; - mask = (~(x >> 31) + 1); - x += mask & (uint32)m; - *q += mask; - /* x < m */ - - *r = (uint16) x; -} - -static uint16 uint32_mod_uint14(uint32 x, uint16 m) { - uint32 q; - uint16 r; - uint32_divmod_uint14(&q, &r, x, m); - return r; -} - -void PQCLEAN_NTRULPR761_CLEAN_crypto_decode_761x1531(void *v, const unsigned char *s) { - int16 *R0 = v; - uint16 R1[381], R2[191], R3[96], R4[48], R5[24], R6[12], R7[6], R8[3], R9[2], R10[1]; - long long i; - uint16 r0; - uint32 r1, r2; - - s += PQCLEAN_NTRULPR761_CLEAN_crypto_decode_761x1531_STRBYTES; - r1 = 0; - r1 = (r1 << 8) | *--s; - r1 = (r1 << 8) | *--s; - r1 = uint32_mod_uint14(r1, 3475); /* needed only for invalid inputs */ - R10[0] = (uint16) r1; - - r2 = R10[0]; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 593); - R9[0] = r0; - r1 = uint32_mod_uint14(r1, 1500); /* needed only for invalid inputs */ - R9[1] = (uint16) r1; - - R8[2] = R9[1]; - r2 = R9[0]; - r2 = (r2 << 8) | *--s; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 6232); - R8[0] = r0; - r1 = uint32_mod_uint14(r1, 6232); /* needed only for invalid inputs */ - R8[1] = (uint16) r1; - - r2 = R8[2]; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 1263); - R7[4] = r0; - r1 = uint32_mod_uint14(r1, 304); /* needed only for invalid inputs */ - R7[5] = (uint16) r1; - for (i = 1; i >= 0; --i) { - r2 = R8[i]; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 1263); - R7[2 * i] = r0; - r1 = uint32_mod_uint14(r1, 1263); /* needed only for invalid inputs */ - R7[2 * i + 1] = (uint16) r1; - } - - r2 = R7[5]; - r2 = (r2 << 8) | *--s; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 9097); - R6[10] = r0; - r1 = uint32_mod_uint14(r1, 2188); /* needed only for invalid inputs */ - R6[11] = (uint16) r1; - for (i = 4; i >= 0; --i) { - r2 = R7[i]; - r2 = (r2 << 8) | *--s; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 9097); - R6[2 * i] = r0; - r1 = uint32_mod_uint14(r1, 9097); /* needed only for invalid inputs */ - R6[2 * i + 1] = (uint16) r1; - } - - r2 = R6[11]; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 1526); - R5[22] = r0; - r1 = uint32_mod_uint14(r1, 367); /* needed only for invalid inputs */ - R5[23] = (uint16) r1; - for (i = 10; i >= 0; --i) { - r2 = R6[i]; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 1526); - R5[2 * i] = r0; - r1 = uint32_mod_uint14(r1, 1526); /* needed only for invalid inputs */ - R5[2 * i + 1] = (uint16) r1; - } - - r2 = R5[23]; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 625); - R4[46] = r0; - r1 = uint32_mod_uint14(r1, 150); /* needed only for invalid inputs */ - R4[47] = (uint16) r1; - for (i = 22; i >= 0; --i) { - r2 = R5[i]; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 625); - R4[2 * i] = r0; - r1 = uint32_mod_uint14(r1, 625); /* needed only for invalid inputs */ - R4[2 * i + 1] = (uint16) r1; - } - - r2 = R4[47]; - r2 = (r2 << 8) | *--s; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 6400); - R3[94] = r0; - r1 = uint32_mod_uint14(r1, 1531); /* needed only for invalid inputs */ - R3[95] = (uint16) r1; - for (i = 46; i >= 0; --i) { - r2 = R4[i]; - r2 = (r2 << 8) | *--s; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 6400); - R3[2 * i] = r0; - r1 = uint32_mod_uint14(r1, 6400); /* needed only for invalid inputs */ - R3[2 * i + 1] = (uint16) r1; - } - - R2[190] = R3[95]; - for (i = 94; i >= 0; --i) { - r2 = R3[i]; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 1280); - R2[2 * i] = r0; - r1 = uint32_mod_uint14(r1, 1280); /* needed only for invalid inputs */ - R2[2 * i + 1] = (uint16) r1; - } - - R1[380] = R2[190]; - for (i = 189; i >= 0; --i) { - r2 = R2[i]; - r2 = (r2 << 8) | *--s; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 9157); - R1[2 * i] = r0; - r1 = uint32_mod_uint14(r1, 9157); /* needed only for invalid inputs */ - R1[2 * i + 1] = (uint16) r1; - } - - R0[760] = (int16) (3 * R1[380] - 2295); - for (i = 379; i >= 0; --i) { - r2 = R1[i]; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 1531); - R0[2 * i] = (int16) (3 * r0 - 2295); - r1 = uint32_mod_uint14(r1, 1531); /* needed only for invalid inputs */ - R0[2 * i + 1] = (int16) (3 * r1 - 2295); - } -} diff --git a/src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_761x1531.h b/src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_761x1531.h deleted file mode 100644 index cc91874c..00000000 --- a/src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_761x1531.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR761_CLEAN_CRYPTO_DECODE_761X1531_H -#define PQCLEAN_NTRULPR761_CLEAN_CRYPTO_DECODE_761X1531_H - -#include -#define PQCLEAN_NTRULPR761_CLEAN_crypto_decode_761x1531_STRBYTES 1007 -#define PQCLEAN_NTRULPR761_CLEAN_crypto_decode_761x1531_ITEMS 761 -#define PQCLEAN_NTRULPR761_CLEAN_crypto_decode_761x1531_ITEMBYTES 2 - -void PQCLEAN_NTRULPR761_CLEAN_crypto_decode_761x1531(void *v, const unsigned char *s); -#endif diff --git a/src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_761x3.c b/src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_761x3.c deleted file mode 100644 index d18ed794..00000000 --- a/src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_761x3.c +++ /dev/null @@ -1,24 +0,0 @@ -#include "crypto_decode_761x3.h" - -#define uint8 uint8_t - -#define p 761 - -void PQCLEAN_NTRULPR761_CLEAN_crypto_decode_761x3(void *v, const unsigned char *s) { - uint8 *f = v; - uint8 x; - int i; - - for (i = 0; i < p / 4; ++i) { - x = *s++; - *f++ = (uint8) ((x & 3) - 1); - x >>= 2; - *f++ = (uint8) ((x & 3) - 1); - x >>= 2; - *f++ = (uint8) ((x & 3) - 1); - x >>= 2; - *f++ = (uint8) ((x & 3) - 1); - } - x = *s++; - *f++ = (uint8) ((x & 3) - 1); -} diff --git a/src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_761x3.h b/src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_761x3.h deleted file mode 100644 index e7c095d4..00000000 --- a/src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_761x3.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR761_CLEAN_CRYPTO_DECODE_761X3_H -#define PQCLEAN_NTRULPR761_CLEAN_CRYPTO_DECODE_761X3_H - -#include -#define PQCLEAN_NTRULPR761_CLEAN_crypto_decode_761x3_STRBYTES 191 -#define PQCLEAN_NTRULPR761_CLEAN_crypto_decode_761x3_ITEMS 761 -#define PQCLEAN_NTRULPR761_CLEAN_crypto_decode_761x3_ITEMBYTES 1 - -void PQCLEAN_NTRULPR761_CLEAN_crypto_decode_761x3(void *v, const unsigned char *s); -#endif diff --git a/src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_761xint16.c b/src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_761xint16.c deleted file mode 100644 index b506fcc9..00000000 --- a/src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_761xint16.c +++ /dev/null @@ -1,15 +0,0 @@ -#include "crypto_decode_761xint16.h" - - -void PQCLEAN_NTRULPR761_CLEAN_crypto_decode_761xint16(void *v, const unsigned char *s) { - uint16_t *x = v; - int i; - - for (i = 0; i < 761; ++i) { - uint16_t u0 = s[0]; - uint16_t u1 = s[1]; - *x = (uint16_t) (u0 | (u1 << 8)); - x += 1; - s += 2; - } -} diff --git a/src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_761xint16.h b/src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_761xint16.h deleted file mode 100644 index eea533c8..00000000 --- a/src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_761xint16.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR761_CLEAN_CRYPTO_DECODE_761XINT16_H -#define PQCLEAN_NTRULPR761_CLEAN_CRYPTO_DECODE_761XINT16_H - -#include -#define PQCLEAN_NTRULPR761_CLEAN_crypto_decode_761xint16_STRBYTES 1522 -#define PQCLEAN_NTRULPR761_CLEAN_crypto_decode_761xint16_ITEMBYTES 2 -#define PQCLEAN_NTRULPR761_CLEAN_crypto_decode_761xint16_ITEMS 761 - -void PQCLEAN_NTRULPR761_CLEAN_crypto_decode_761xint16(void *v, const unsigned char *s); -#endif diff --git a/src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_761xint32.c b/src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_761xint32.c deleted file mode 100644 index aaa8f49d..00000000 --- a/src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_761xint32.c +++ /dev/null @@ -1,20 +0,0 @@ -#include "crypto_decode_761xint32.h" - - -void PQCLEAN_NTRULPR761_CLEAN_crypto_decode_761xint32(void *v, const unsigned char *s) { - uint32_t *x = v; - int i; - - for (i = 0; i < 761; ++i) { - uint32_t u0 = s[0]; - uint32_t u1 = s[1]; - uint32_t u2 = s[2]; - uint32_t u3 = s[3]; - u1 <<= 8; - u2 <<= 16; - u3 <<= 24; - *x = u0 | u1 | u2 | u3; - x += 1; - s += 4; - } -} diff --git a/src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_761xint32.h b/src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_761xint32.h deleted file mode 100644 index 253150d7..00000000 --- a/src/kem/ntru_prime/ntrulpr761/clean/crypto_decode_761xint32.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR761_CLEAN_CRYPTO_DECODE_761XINT32_H -#define PQCLEAN_NTRULPR761_CLEAN_CRYPTO_DECODE_761XINT32_H - -#include -#define PQCLEAN_NTRULPR761_CLEAN_crypto_decode_761xint32_STRBYTES 3044 -#define PQCLEAN_NTRULPR761_CLEAN_crypto_decode_761xint32_ITEMBYTES 4 -#define PQCLEAN_NTRULPR761_CLEAN_crypto_decode_761xint32_ITEMS 761 - -void PQCLEAN_NTRULPR761_CLEAN_crypto_decode_761xint32(void *v, const unsigned char *s); -#endif diff --git a/src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_256x16.c b/src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_256x16.c deleted file mode 100644 index af79cc4f..00000000 --- a/src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_256x16.c +++ /dev/null @@ -1,10 +0,0 @@ -#include "crypto_encode_256x16.h" - - -void PQCLEAN_NTRULPR761_CLEAN_crypto_encode_256x16(unsigned char *s, const void *v) { - const unsigned char *T = v; - int i; - for (i = 0; i < 128; ++i) { - s[i] = (unsigned char) (T[2 * i] + (T[2 * i + 1] << 4)); - } -} diff --git a/src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_256x16.h b/src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_256x16.h deleted file mode 100644 index 93520514..00000000 --- a/src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_256x16.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR761_CLEAN_CRYPTO_ENCODE_256X16_H -#define PQCLEAN_NTRULPR761_CLEAN_CRYPTO_ENCODE_256X16_H - -#include -#define PQCLEAN_NTRULPR761_CLEAN_crypto_encode_256x16_STRBYTES 128 -#define PQCLEAN_NTRULPR761_CLEAN_crypto_encode_256x16_ITEMS 256 -#define PQCLEAN_NTRULPR761_CLEAN_crypto_encode_256x16_ITEMBYTES 1 - -void PQCLEAN_NTRULPR761_CLEAN_crypto_encode_256x16(unsigned char *s, const void *v); -#endif diff --git a/src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_256x2.c b/src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_256x2.c deleted file mode 100644 index 51701ea5..00000000 --- a/src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_256x2.c +++ /dev/null @@ -1,13 +0,0 @@ -#include "crypto_encode_256x2.h" - - -void PQCLEAN_NTRULPR761_CLEAN_crypto_encode_256x2(unsigned char *s, const void *v) { - const unsigned char *r = v; - int i; - for (i = 0; i < 32; ++i) { - s[i] = 0; - } - for (i = 0; i < 256; ++i) { - s[i >> 3] |= (unsigned char) ((r[i] & 1) << (i & 7)); - } -} diff --git a/src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_256x2.h b/src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_256x2.h deleted file mode 100644 index e0865155..00000000 --- a/src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_256x2.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR761_CLEAN_CRYPTO_ENCODE_256X2_H -#define PQCLEAN_NTRULPR761_CLEAN_CRYPTO_ENCODE_256X2_H - -#include -#define PQCLEAN_NTRULPR761_CLEAN_crypto_encode_256x2_STRBYTES 32 -#define PQCLEAN_NTRULPR761_CLEAN_crypto_encode_256x2_ITEMS 256 -#define PQCLEAN_NTRULPR761_CLEAN_crypto_encode_256x2_ITEMBYTES 1 - -void PQCLEAN_NTRULPR761_CLEAN_crypto_encode_256x2(unsigned char *s, const void *v); -#endif diff --git a/src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_761x1531.c b/src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_761x1531.c deleted file mode 100644 index e68e1840..00000000 --- a/src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_761x1531.c +++ /dev/null @@ -1,119 +0,0 @@ -#include "crypto_encode_761x1531.h" - -/* auto-generated; do not edit */ - -#define int16 int16_t -#define uint16 uint16_t -#define uint32 uint32_t - -void PQCLEAN_NTRULPR761_CLEAN_crypto_encode_761x1531(unsigned char *out, const void *v) { - const int16 *R0 = v; - /* XXX: caller could overlap R with input */ - uint16 R[381]; - long i; - uint16 r0, r1; - uint32 r2; - - for (i = 0; i < 380; ++i) { - r0 = (uint16) ((((R0[2 * i] + 2295) & 16383) * 10923) >> 15); - r1 = (uint16) ((((R0[2 * i + 1] + 2295) & 16383) * 10923) >> 15); - r2 = r0 + r1 * (uint32)1531; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - R[380] = (uint16) ((((R0[760] + 2295) & 16383) * 10923) >> 15); - - for (i = 0; i < 190; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)9157; - *out++ = (unsigned char) r2; - r2 >>= 8; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - R[190] = R[380]; - - for (i = 0; i < 95; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)1280; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - R[95] = R[190]; - - for (i = 0; i < 48; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)6400; - *out++ = (unsigned char) r2; - r2 >>= 8; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - - for (i = 0; i < 24; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)625; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - - for (i = 0; i < 12; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)1526; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - - for (i = 0; i < 6; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)9097; - *out++ = (unsigned char) r2; - r2 >>= 8; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - - for (i = 0; i < 3; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)1263; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - - r0 = R[0]; - r1 = R[1]; - r2 = r0 + r1 * (uint32)6232; - *out++ = (unsigned char) r2; - r2 >>= 8; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[0] = (uint16) r2; - R[1] = R[2]; - - r0 = R[0]; - r1 = R[1]; - r2 = r0 + r1 * (uint32)593; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[0] = (uint16) r2; - - r0 = R[0]; - *out++ = (unsigned char) r0; - r0 >>= 8; - *out++ = (unsigned char) r0; -} diff --git a/src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_761x1531.h b/src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_761x1531.h deleted file mode 100644 index 2cf745b9..00000000 --- a/src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_761x1531.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR761_CLEAN_CRYPTO_ENCODE_761X1531_H -#define PQCLEAN_NTRULPR761_CLEAN_CRYPTO_ENCODE_761X1531_H - -#include -#define PQCLEAN_NTRULPR761_CLEAN_crypto_encode_761x1531_STRBYTES 1007 -#define PQCLEAN_NTRULPR761_CLEAN_crypto_encode_761x1531_ITEMS 761 -#define PQCLEAN_NTRULPR761_CLEAN_crypto_encode_761x1531_ITEMBYTES 2 - -void PQCLEAN_NTRULPR761_CLEAN_crypto_encode_761x1531(unsigned char *out, const void *v); -#endif diff --git a/src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_761x1531round.c b/src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_761x1531round.c deleted file mode 100644 index eefb4275..00000000 --- a/src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_761x1531round.c +++ /dev/null @@ -1,17 +0,0 @@ -#include "crypto_encode_761x1531.h" -#include "crypto_encode_761x1531round.h" - -#define int16 int16_t - -#define p 761 - -void PQCLEAN_NTRULPR761_CLEAN_crypto_encode_761x1531round(unsigned char *out, const void *v) { - const int16 *a = v; - int16 x[p]; - int i; - - for (i = 0; i < p; ++i) { - x[i] = (int16) (3 * ((10923 * a[i] + 16384) >> 15)); - } - PQCLEAN_NTRULPR761_CLEAN_crypto_encode_761x1531(out, x); -} diff --git a/src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_761x1531round.h b/src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_761x1531round.h deleted file mode 100644 index 10d34a51..00000000 --- a/src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_761x1531round.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR761_CLEAN_CRYPTO_ENCODE_761X1531ROUND_H -#define PQCLEAN_NTRULPR761_CLEAN_CRYPTO_ENCODE_761X1531ROUND_H - -#include -#define PQCLEAN_NTRULPR761_CLEAN_crypto_encode_761x1531round_STRBYTES 1007 -#define PQCLEAN_NTRULPR761_CLEAN_crypto_encode_761x1531round_ITEMS 761 -#define PQCLEAN_NTRULPR761_CLEAN_crypto_encode_761x1531round_ITEMBYTES 2 - -void PQCLEAN_NTRULPR761_CLEAN_crypto_encode_761x1531round(unsigned char *out, const void *v); -#endif diff --git a/src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_761x3.c b/src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_761x3.c deleted file mode 100644 index 53cf0e21..00000000 --- a/src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_761x3.c +++ /dev/null @@ -1,21 +0,0 @@ -#include "crypto_encode_761x3.h" - -#define uint8 uint8_t - -#define p 761 - -void PQCLEAN_NTRULPR761_CLEAN_crypto_encode_761x3(unsigned char *s, const void *v) { - const uint8 *f = v; - uint8 x; - int i; - - for (i = 0; i < p / 4; ++i) { - x = *f++ + 1; - x += (*f++ + 1) << 2; - x += (*f++ + 1) << 4; - x += (*f++ + 1) << 6; - *s++ = x; - } - x = *f++ + 1; - *s++ = x; -} diff --git a/src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_761x3.h b/src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_761x3.h deleted file mode 100644 index 13efec7b..00000000 --- a/src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_761x3.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR761_CLEAN_CRYPTO_ENCODE_761X3_H -#define PQCLEAN_NTRULPR761_CLEAN_CRYPTO_ENCODE_761X3_H - -#include -#define PQCLEAN_NTRULPR761_CLEAN_crypto_encode_761x3_STRBYTES 191 -#define PQCLEAN_NTRULPR761_CLEAN_crypto_encode_761x3_ITEMS 761 -#define PQCLEAN_NTRULPR761_CLEAN_crypto_encode_761x3_ITEMBYTES 1 - -void PQCLEAN_NTRULPR761_CLEAN_crypto_encode_761x3(unsigned char *s, const void *v); -#endif diff --git a/src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_761xint16.c b/src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_761xint16.c deleted file mode 100644 index 8cbb2e9f..00000000 --- a/src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_761xint16.c +++ /dev/null @@ -1,13 +0,0 @@ -#include "crypto_encode_761xint16.h" - - -void PQCLEAN_NTRULPR761_CLEAN_crypto_encode_761xint16(unsigned char *s, const void *v) { - const uint16_t *x = v; - int i; - - for (i = 0; i < 761; ++i) { - uint16_t u = *x++; - *s++ = (unsigned char) u; - *s++ = (unsigned char) (u >> 8); - } -} diff --git a/src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_761xint16.h b/src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_761xint16.h deleted file mode 100644 index e28f4336..00000000 --- a/src/kem/ntru_prime/ntrulpr761/clean/crypto_encode_761xint16.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR761_CLEAN_CRYPTO_ENCODE_761XINT16_H -#define PQCLEAN_NTRULPR761_CLEAN_CRYPTO_ENCODE_761XINT16_H - -#include -#define PQCLEAN_NTRULPR761_CLEAN_crypto_encode_761xint16_STRBYTES 1522 -#define PQCLEAN_NTRULPR761_CLEAN_crypto_encode_761xint16_ITEMBYTES 2 -#define PQCLEAN_NTRULPR761_CLEAN_crypto_encode_761xint16_ITEMS 761 - -void PQCLEAN_NTRULPR761_CLEAN_crypto_encode_761xint16(unsigned char *s, const void *v); -#endif diff --git a/src/kem/ntru_prime/ntrulpr761/clean/crypto_sort_int32.c b/src/kem/ntru_prime/ntrulpr761/clean/crypto_sort_int32.c deleted file mode 100644 index a23017c3..00000000 --- a/src/kem/ntru_prime/ntrulpr761/clean/crypto_sort_int32.c +++ /dev/null @@ -1,84 +0,0 @@ -#include "crypto_sort_int32.h" -#include - -#define int32 int32_t - -#define int32_MINMAX(a,b) \ - do { \ - int32_t ab = (b) ^ (a); \ - int32_t c = (int32_t)((int64_t)(b) - (int64_t)(a)); \ - c ^= ab & (c ^ (b)); \ - c >>= 31; \ - c &= ab; \ - (a) ^= c; \ - (b) ^= c; \ - } while(0) - -/* assume 2 <= n <= 0x40000000 */ -void PQCLEAN_NTRULPR761_CLEAN_crypto_sort_int32(int32_t *x, long long n) { - int32 top, p, q, r, i; - long long j; - - top = 1; - while (top < n - top) { - top += top; - } - - for (p = top; p >= 1; p >>= 1) { - i = 0; - while (i + 2 * p <= n) { - for (j = i; j < i + p; ++j) { - int32_MINMAX(x[j], x[j + p]); - } - i += 2 * p; - } - for (j = i; j < n - p; ++j) { - int32_MINMAX(x[j], x[j + p]); - } - - i = 0; - j = 0; - for (q = top; q > p; q >>= 1) { - if (j != i) { - for (;;) { - if (j == n - q) { - goto done; - } - int32 a = x[j + p]; - for (r = q; r > p; r >>= 1) { - int32_MINMAX(a, x[j + r]); - } - x[j + p] = a; - ++j; - if (j == i + p) { - i += 2 * p; - break; - } - } - } - while (i + p <= n - q) { - for (j = i; j < i + p; ++j) { - int32 a = x[j + p]; - for (r = q; r > p; r >>= 1) { - int32_MINMAX(a, x[j + r]); - } - x[j + p] = a; - } - i += 2 * p; - } - /* now i + p > n - q */ - j = i; - while (j < n - q) { - int32 a = x[j + p]; - for (r = q; r > p; r >>= 1) { - int32_MINMAX(a, x[j + r]); - } - x[j + p] = a; - ++j; - } - -done: - ; - } - } -} diff --git a/src/kem/ntru_prime/ntrulpr761/clean/crypto_sort_int32.h b/src/kem/ntru_prime/ntrulpr761/clean/crypto_sort_int32.h deleted file mode 100644 index 56fd150d..00000000 --- a/src/kem/ntru_prime/ntrulpr761/clean/crypto_sort_int32.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef PQCLEAN_NTRULPR761_CLEAN_CRYPTO_SORT_INT32_H -#define PQCLEAN_NTRULPR761_CLEAN_CRYPTO_SORT_INT32_H - -#include -#define PQCLEAN_NTRULPR761_CLEAN_crypto_sort_int32_BYTES 4 - -void PQCLEAN_NTRULPR761_CLEAN_crypto_sort_int32(int32_t *x, long long n); -#endif diff --git a/src/kem/ntru_prime/ntrulpr761/clean/crypto_sort_uint32.c b/src/kem/ntru_prime/ntrulpr761/clean/crypto_sort_uint32.c deleted file mode 100644 index 000ea53b..00000000 --- a/src/kem/ntru_prime/ntrulpr761/clean/crypto_sort_uint32.c +++ /dev/null @@ -1,18 +0,0 @@ -#include "crypto_sort_int32.h" -#include "crypto_sort_uint32.h" - - -/* can save time by vectorizing xor loops */ -/* can save time by integrating xor loops with int32_sort */ - -void PQCLEAN_NTRULPR761_CLEAN_crypto_sort_uint32(void *array, long long n) { - uint32_t *x = array; - long long j; - for (j = 0; j < n; ++j) { - x[j] ^= 0x80000000; - } - PQCLEAN_NTRULPR761_CLEAN_crypto_sort_int32((int32_t *)array, n); - for (j = 0; j < n; ++j) { - x[j] ^= 0x80000000; - } -} diff --git a/src/kem/ntru_prime/ntrulpr761/clean/crypto_sort_uint32.h b/src/kem/ntru_prime/ntrulpr761/clean/crypto_sort_uint32.h deleted file mode 100644 index 3841befa..00000000 --- a/src/kem/ntru_prime/ntrulpr761/clean/crypto_sort_uint32.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef PQCLEAN_NTRULPR761_CLEAN_CRYPTO_SORT_UINT32_H -#define PQCLEAN_NTRULPR761_CLEAN_CRYPTO_SORT_UINT32_H - -#include -#define PQCLEAN_NTRULPR761_CLEAN_crypto_sort_uint32_BYTES 4 - -void PQCLEAN_NTRULPR761_CLEAN_crypto_sort_uint32(void *array, long long n); -#endif diff --git a/src/kem/ntru_prime/ntrulpr761/clean/crypto_stream_aes256ctr.c b/src/kem/ntru_prime/ntrulpr761/clean/crypto_stream_aes256ctr.c deleted file mode 100644 index 6bc07077..00000000 --- a/src/kem/ntru_prime/ntrulpr761/clean/crypto_stream_aes256ctr.c +++ /dev/null @@ -1,15 +0,0 @@ -#include "crypto_stream_aes256ctr.h" - - -int PQCLEAN_NTRULPR761_CLEAN_crypto_stream_aes256ctr( - uint8_t *out, - size_t outlen, - const uint8_t nonce[AESCTR_NONCEBYTES], - const uint8_t key[AES256_KEYBYTES]) { - - aes256ctx state; - aes256_ctr_keyexp(&state, key); - aes256_ctr(out, outlen, nonce, &state); - aes256_ctx_release(&state); - return 0; -} diff --git a/src/kem/ntru_prime/ntrulpr761/clean/crypto_stream_aes256ctr.h b/src/kem/ntru_prime/ntrulpr761/clean/crypto_stream_aes256ctr.h deleted file mode 100644 index dd212944..00000000 --- a/src/kem/ntru_prime/ntrulpr761/clean/crypto_stream_aes256ctr.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef PQCLEAN_NTRULPR761_CLEAN_CRYPTO_STREAM_AES256CTR_H -#define PQCLEAN_NTRULPR761_CLEAN_CRYPTO_STREAM_AES256CTR_H -#include "aes.h" -#include -#include - - - -int PQCLEAN_NTRULPR761_CLEAN_crypto_stream_aes256ctr( - uint8_t *out, - size_t outlen, - const uint8_t nonce[AESCTR_NONCEBYTES], - const uint8_t key[AES256_KEYBYTES]); - -#endif diff --git a/src/kem/ntru_prime/ntrulpr761/clean/crypto_verify_1167.c b/src/kem/ntru_prime/ntrulpr761/clean/crypto_verify_1167.c deleted file mode 100644 index c66c9adf..00000000 --- a/src/kem/ntru_prime/ntrulpr761/clean/crypto_verify_1167.c +++ /dev/null @@ -1,13 +0,0 @@ -#include "crypto_verify_1167.h" - - -int PQCLEAN_NTRULPR761_CLEAN_crypto_verify_1167(const unsigned char *x, const unsigned char *y) { - unsigned int differentbits = 0; - int i; - - for (i = 0; i < PQCLEAN_NTRULPR761_CLEAN_crypto_verify_1167_BYTES; ++i) { - differentbits |= x[i] ^ y[i]; - } - - return (int) (1 & ((differentbits - 1) >> 8)) - 1; -} diff --git a/src/kem/ntru_prime/ntrulpr761/clean/crypto_verify_1167.h b/src/kem/ntru_prime/ntrulpr761/clean/crypto_verify_1167.h deleted file mode 100644 index 3feefc83..00000000 --- a/src/kem/ntru_prime/ntrulpr761/clean/crypto_verify_1167.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef PQCLEAN_NTRULPR761_CLEAN_CRYPTO_VERIFY_1167_H -#define PQCLEAN_NTRULPR761_CLEAN_CRYPTO_VERIFY_1167_H - -#include -#define PQCLEAN_NTRULPR761_CLEAN_crypto_verify_1167_BYTES 1167 - -int PQCLEAN_NTRULPR761_CLEAN_crypto_verify_1167(const unsigned char *x, const unsigned char *y); -#endif diff --git a/src/kem/ntru_prime/ntrulpr761/clean/kem.c b/src/kem/ntru_prime/ntrulpr761/clean/kem.c deleted file mode 100644 index de3bbfbb..00000000 --- a/src/kem/ntru_prime/ntrulpr761/clean/kem.c +++ /dev/null @@ -1,287 +0,0 @@ -#include "api.h" -#include "crypto_sort_uint32.h" -#include "crypto_stream_aes256ctr.h" -#include "params.h" -#include "randombytes.h" -#include "sha2.h" - - - -#define int8 int8_t -#define int16 int16_t -#define int32 int32_t -#define uint16 uint16_t -#define uint32 uint32_t -#define uint64 uint64_t - -/* ----- masks */ - -/* return -1 if x<0; otherwise return 0 */ -static int int16_negative_mask(int16 x) { - uint16 u = (uint16) x; - u >>= 15; - return -(int) u; - /* alternative with gcc -fwrapv: */ - /* x>>15 compiles to CPU's arithmetic right shift */ -} - -/* ----- arithmetic mod 3 */ - -typedef int8 small; -/* F3 is always represented as -1,0,1 */ - -/* ----- arithmetic mod q */ - -#define q12 ((q-1)/2) -typedef int16 Fq; - -/* works for -14000000 < x < 14000000 if q in 4591, 4621, 5167 */ -/* assumes twos complement; use, e.g., gcc -fwrapv */ -static Fq Fq_freeze(int32 x) { - x -= (int32) (q * ((q18 * x) >> 18)); - x -= (int32) (q * ((q27 * x + 67108864) >> 27)); - return (Fq) x; -} - -/* works for all uint32 x */ -static Fq Fq_bigfreeze(uint32 x) { - x -= (uint32) (q * ((x * (uint64)q31) >> 31)); - x -= (uint32) (q * ((x * (uint64)q31) >> 31)); - x -= q; - x += (~(x >> 31) + 1) & (uint32)q; - return (Fq) x; -} - -/* ----- Top and Right */ - -static int8 Top(Fq C) { - return (int8) ((tau1 * (int32)(C + tau0) + 16384) >> 15); -} - -static Fq Right(int8 T) { - return Fq_freeze(tau3 * (int32)T - tau2); -} - -/* ----- polynomials mod q */ - -/* h = h*g in the ring Rq */ -static void Rq_mult_small(Fq *h, const small *g) { - crypto_encode_pxint16((unsigned char *) h, h); - crypto_core_mult((unsigned char *) h, (const unsigned char *) h, (const unsigned char *) g); - crypto_decode_pxint16(h, (const unsigned char *) h); -} - -/* ----- sorting to generate short polynomial */ - -static void Short_fromlist(small *out, const uint32 *in) { - uint32 L[ppadsort]; - int i; - - for (i = 0; i < w; ++i) { - L[i] = in[i] & (uint32) - 2; - } - for (i = w; i < p; ++i) { - L[i] = (in[i] & (uint32) - 3) | 1; - } - for (i = p; i < ppadsort; ++i) { - L[i] = 0xffffffff; - } - PQCLEAN_NTRULPR761_CLEAN_crypto_sort_uint32(L, ppadsort); - for (i = 0; i < p; ++i) { - out[i] = (small) ((L[i] & 3) - 1); - } -} - -/* ----- underlying hash function */ - -#define Hash_bytes 32 - -static void Hash(unsigned char *out, const unsigned char *in, int inlen) { - unsigned char h[64]; - int i; - sha512(h, in, (size_t) inlen); - for (i = 0; i < 32; ++i) { - out[i] = h[i]; - } -} - -/* ----- higher-level randomness */ - -static void Short_random(small *out) { - uint32 L[p]; - - randombytes((unsigned char *) L, sizeof L); - crypto_decode_pxint32(L, (unsigned char *) L); - Short_fromlist(out, L); -} - -/* ----- Inputs, Generator */ - -typedef int8 Inputs[I]; /* passed by reference */ - -static const unsigned char aes_nonce[16] = {0}; - -/* G = Generator(pk) */ -static void Generator(Fq *G, const unsigned char *pk) { - uint32 L[p]; - int i; - - PQCLEAN_NTRULPR761_CLEAN_crypto_stream_aes256ctr((unsigned char *) L, 4 * p, aes_nonce, pk); - crypto_decode_pxint32(L, (unsigned char *) L); - for (i = 0; i < p; ++i) { - G[i] = Fq_bigfreeze(L[i]) - q12; - } -} - -/* ----- NTRU LPRime */ - -#define Seeds_bytes 32 -#define Ciphertexts_bytes (Rounded_bytes+Top_bytes) -#define SecretKeys_bytes Small_bytes -#define PublicKeys_bytes (Seeds_bytes+Rounded_bytes) -#define Confirm_bytes 32 - -/* c,r_enc[1:] = Hide(r,pk,cache); cache is Hash4(pk) */ -static void Hide(unsigned char *c, unsigned char *r_enc, const Inputs r, const unsigned char *pk, const unsigned char *cache) { - small b[p]; - int i; - - Inputs_encode(r_enc + 1, r); - { - unsigned char h[Hash_bytes]; - uint32 L[p]; - { - unsigned char s[1 + Inputs_bytes]; - Inputs_encode(s + 1, r); - s[0] = 5; - Hash(h, s, sizeof s); - } - PQCLEAN_NTRULPR761_CLEAN_crypto_stream_aes256ctr((unsigned char *) L, 4 * p, aes_nonce, h); - crypto_decode_pxint32(L, (unsigned char *) L); - Short_fromlist(b, L); - } - { - Fq bG[p]; - Generator(bG, pk); - Rq_mult_small(bG, b); - Round_and_encode(c, bG); - c += Rounded_bytes; - } - { - Fq bA[p]; - int8 T[I]; - Rounded_decode(bA, pk + Seeds_bytes); - Rq_mult_small(bA, b); - for (i = 0; i < I; ++i) { - T[i] = Top(Fq_freeze(bA[i] + r[i] * q12)); - } - Top_encode(c, T); - c += Top_bytes; - } - { - unsigned char x[1 + Inputs_bytes + Hash_bytes]; - for (i = 0; i < Inputs_bytes; ++i) { - x[1 + i] = r_enc[1 + i]; - } - for (i = 0; i < Hash_bytes; ++i) { - x[1 + Inputs_bytes + i] = cache[i]; - } - x[0] = 2; - Hash(c, x, sizeof x); - } -} - - -int PQCLEAN_NTRULPR761_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk) { - Fq aG[p]; - int i; - randombytes(pk, Seeds_bytes); - Generator(aG, pk); - { - small a[p]; - Short_random(a); - Rq_mult_small(aG, a); - Small_encode(sk, a); - } - Round_and_encode(pk + Seeds_bytes, aG); - { - unsigned char sksave = sk[SecretKeys_bytes - 1]; - for (i = 0; i < PublicKeys_bytes; ++i) { - sk[SecretKeys_bytes + i] = pk[i]; - } - sk[SecretKeys_bytes - 1] = 4; - Hash(sk + SecretKeys_bytes + PublicKeys_bytes + Inputs_bytes, sk + SecretKeys_bytes - 1, 1 + PublicKeys_bytes); - sk[SecretKeys_bytes - 1] = sksave; - randombytes(sk + SecretKeys_bytes + PublicKeys_bytes, Inputs_bytes); - } - return 0; -} - -int PQCLEAN_NTRULPR761_CLEAN_crypto_kem_enc(unsigned char *c, unsigned char *k, const unsigned char *pk) { - int i; - unsigned char cache[Hash_bytes]; - { - unsigned char y[1 + PublicKeys_bytes]; - for (i = 0; i < PublicKeys_bytes; ++i) { - y[1 + i] = pk[i]; - } - y[0] = 4; - Hash(cache, y, sizeof y); - } - Inputs r; - { - unsigned char s[Inputs_bytes]; - randombytes(s, sizeof s); - Inputs_decode(r, s); - } - { - unsigned char x[1 + Inputs_bytes + Ciphertexts_bytes + Confirm_bytes]; - Hide(c, x, r, pk, cache); - for (i = 0; i < Ciphertexts_bytes + Confirm_bytes; ++i) { - x[1 + Inputs_bytes + i] = c[i]; - } - x[0] = 1; - Hash(k, x, sizeof x); - } - return 0; -} - -int PQCLEAN_NTRULPR761_CLEAN_crypto_kem_dec(unsigned char *k, const unsigned char *c, const unsigned char *sk) { - const unsigned char *pk = sk + SecretKeys_bytes; - const unsigned char *rho = pk + PublicKeys_bytes; - const unsigned char *cache = rho + Inputs_bytes; - Inputs r; - int i; - { - Fq aB[p]; - Rounded_decode(aB, c); - { - small a[p]; - Small_decode(a, sk); - Rq_mult_small(aB, a); - } - { - int8 T[I]; - Top_decode(T, c + Rounded_bytes); - for (i = 0; i < I; ++i) { - r[i] = (int8) - int16_negative_mask(Fq_freeze(Right(T[i]) - aB[i] + 4 * w + 1)); - } - } - } - { - unsigned char cnew[Ciphertexts_bytes + Confirm_bytes]; - int mask; - unsigned char x[1 + Inputs_bytes + Ciphertexts_bytes + Confirm_bytes]; - Hide(cnew, x, r, pk, cache); - mask = crypto_verify_clen(c, cnew); - for (i = 0; i < Inputs_bytes; ++i) { - x[1 + i] ^= (unsigned char) (mask & (x[1 + i] ^ rho[i])); - } - for (i = 0; i < Ciphertexts_bytes + Confirm_bytes; ++i) { - x[1 + Inputs_bytes + i] = c[i]; - } - x[0] = (unsigned char) (1 + mask); - Hash(k, x, sizeof x); - } - return 0; -} diff --git a/src/kem/ntru_prime/ntrulpr761/clean/params.h b/src/kem/ntru_prime/ntrulpr761/clean/params.h deleted file mode 100644 index ece26ee8..00000000 --- a/src/kem/ntru_prime/ntrulpr761/clean/params.h +++ /dev/null @@ -1,65 +0,0 @@ -#ifndef params_H -#define params_H -#include "crypto_core_multsntrup761.h" -#include "crypto_decode_256x16.h" -#include "crypto_decode_256x2.h" -#include "crypto_decode_761x1531.h" -#include "crypto_decode_761x3.h" -#include "crypto_decode_761xint16.h" -#include "crypto_decode_761xint32.h" -#include "crypto_encode_256x16.h" -#include "crypto_encode_256x2.h" -#include "crypto_encode_761x1531.h" -#include "crypto_encode_761x1531round.h" -#include "crypto_encode_761x3.h" -#include "crypto_encode_761xint16.h" -#include "crypto_sort_int32.h" -#include "crypto_sort_uint32.h" -#include "crypto_verify_1167.h" - - -#define p 761 -#define q27 29235 /* closest integer to 2^27/q */ -#define q18 57 /* closest integer to 2^18/q */ -#define q 4591 -#define w 250 -#define tau0 2156 -#define tau1 114 -#define tau2 2007 -#define tau3 287 -#define I 256 - -#define ppadsort 768 - -#define q18 57 /* round(2^18/q) */ -#define q27 29235 /* round(2^27/q) */ -#define q31 467759 /* floor(2^31/q) */ - -#define crypto_verify_clen PQCLEAN_NTRULPR761_CLEAN_crypto_verify_1167 - -#define Rounded_bytes PQCLEAN_NTRULPR761_CLEAN_crypto_decode_761x1531_STRBYTES -#define Rounded_decode PQCLEAN_NTRULPR761_CLEAN_crypto_decode_761x1531 - -#define Round_and_encode PQCLEAN_NTRULPR761_CLEAN_crypto_encode_761x1531round - -#define Small_bytes PQCLEAN_NTRULPR761_CLEAN_crypto_encode_761x3_STRBYTES -#define Small_encode PQCLEAN_NTRULPR761_CLEAN_crypto_encode_761x3 -#define Small_decode PQCLEAN_NTRULPR761_CLEAN_crypto_decode_761x3 - -#define Top_bytes PQCLEAN_NTRULPR761_CLEAN_crypto_encode_256x16_STRBYTES -#define Top_encode PQCLEAN_NTRULPR761_CLEAN_crypto_encode_256x16 -#define Top_decode PQCLEAN_NTRULPR761_CLEAN_crypto_decode_256x16 - -#define Inputs_bytes PQCLEAN_NTRULPR761_CLEAN_crypto_encode_256x2_STRBYTES -#define Inputs_encode PQCLEAN_NTRULPR761_CLEAN_crypto_encode_256x2 -#define Inputs_decode PQCLEAN_NTRULPR761_CLEAN_crypto_decode_256x2 - -#define crypto_decode_pxint32 PQCLEAN_NTRULPR761_CLEAN_crypto_decode_761xint32 - -#define crypto_decode_pxint16 PQCLEAN_NTRULPR761_CLEAN_crypto_decode_761xint16 - -#define crypto_encode_pxint16 PQCLEAN_NTRULPR761_CLEAN_crypto_encode_761xint16 - -#define crypto_core_mult PQCLEAN_NTRULPR761_CLEAN_crypto_core_multsntrup761 - -#endif diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/CMakeLists.txt b/src/kem/ntru_prime/ntrulpr857/avx2/CMakeLists.txt deleted file mode 100644 index 4f3ea238..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/CMakeLists.txt +++ /dev/null @@ -1,25 +0,0 @@ -set( - SRC_AVX2_NTRULPR857 - crypto_core_multsntrup857.c - crypto_core_multsntrup857_ntt.c - crypto_decode_256x16.c - crypto_decode_256x2.c - crypto_decode_857x1723.c - crypto_decode_857x3.c - crypto_decode_857xint16.c - crypto_decode_857xint32.c - crypto_encode_256x16.c - crypto_encode_256x2.c - crypto_encode_857x1723.c - crypto_encode_857x1723round.c - crypto_encode_857x3.c - crypto_encode_857xint16.c - crypto_sort_int32.c - crypto_sort_uint32.c - crypto_stream_aes256ctr.c - crypto_verify_1312.c - kem.c -) - -define_kem_alg(ntrulpr857_avx2 - PQCLEAN_NTRULPR857_AVX2 "${SRC_AVX2_NTRULPR857}" "${CMAKE_CURRENT_SOURCE_DIR}") diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/api.h b/src/kem/ntru_prime/ntrulpr857/avx2/api.h deleted file mode 100644 index 373863f4..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/api.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef PQCLEAN_NTRULPR857_AVX2_API_H -#define PQCLEAN_NTRULPR857_AVX2_API_H - - - -#define PQCLEAN_NTRULPR857_AVX2_CRYPTO_ALGNAME "ntrulpr857" - -#define PQCLEAN_NTRULPR857_AVX2_CRYPTO_SECRETKEYBYTES 1463 -#define PQCLEAN_NTRULPR857_AVX2_CRYPTO_PUBLICKEYBYTES 1184 -#define PQCLEAN_NTRULPR857_AVX2_CRYPTO_CIPHERTEXTBYTES 1312 -#define PQCLEAN_NTRULPR857_AVX2_CRYPTO_BYTES 32 - -int PQCLEAN_NTRULPR857_AVX2_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); -int PQCLEAN_NTRULPR857_AVX2_crypto_kem_enc(unsigned char *c, unsigned char *k, const unsigned char *pk); -int PQCLEAN_NTRULPR857_AVX2_crypto_kem_dec(unsigned char *k, const unsigned char *c, const unsigned char *sk); -#endif diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_core_multsntrup857.c b/src/kem/ntru_prime/ntrulpr857/avx2/crypto_core_multsntrup857.c deleted file mode 100644 index e4e12728..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_core_multsntrup857.c +++ /dev/null @@ -1,421 +0,0 @@ -#include "crypto_core_multsntrup857.h" -#include "crypto_core_multsntrup857_ntt.h" -#include "crypto_decode_857xint16.h" -#include "crypto_encode_857xint16.h" -#include - -typedef int8_t int8; -typedef int16_t int16; - -#define int16x16 __m256i -#define load_x16(p) _mm256_loadu_si256((int16x16 *) (p)) -#define store_x16(p,v) _mm256_storeu_si256((int16x16 *) (p),(v)) -#define const_x16 _mm256_set1_epi16 -#define add_x16 _mm256_add_epi16 -#define sub_x16 _mm256_sub_epi16 -#define mullo_x16 _mm256_mullo_epi16 -#define mulhi_x16 _mm256_mulhi_epi16 -#define mulhrs_x16 _mm256_mulhrs_epi16 -#define signmask_x16(x) _mm256_srai_epi16((x),15) - -typedef union { - int16 v[512]; - int16x16 _dummy; -} vec512; - -typedef union { - int16 v[4][512]; - int16x16 _dummy; -} vec4x512; - -typedef union { - int16 v[1024]; - int16x16 _dummy; -} vec1024; - -typedef union { - int16 v[4 * 512]; - int16x16 _dummy; -} vec2048; - -static inline int16x16 squeeze_5167_x16(int16x16 x) { - return sub_x16(x, mullo_x16(mulhrs_x16(x, const_x16(6)), const_x16(5167))); -} - -static inline int16x16 squeeze_7681_x16(int16x16 x) { - return sub_x16(x, mullo_x16(mulhrs_x16(x, const_x16(4)), const_x16(7681))); -} - -static inline int16x16 squeeze_10753_x16(int16x16 x) { - return sub_x16(x, mullo_x16(mulhrs_x16(x, const_x16(3)), const_x16(10753))); -} - -static inline int16x16 mulmod_5167_x16(int16x16 x, int16x16 y) { - int16x16 yqinv = mullo_x16(y, const_x16(-19761)); /* XXX: precompute */ - int16x16 b = mulhi_x16(x, y); - int16x16 d = mullo_x16(x, yqinv); - int16x16 e = mulhi_x16(d, const_x16(5167)); - return sub_x16(b, e); -} - -static inline int16x16 mulmod_7681_x16(int16x16 x, int16x16 y) { - int16x16 yqinv = mullo_x16(y, const_x16(-7679)); /* XXX: precompute */ - int16x16 b = mulhi_x16(x, y); - int16x16 d = mullo_x16(x, yqinv); - int16x16 e = mulhi_x16(d, const_x16(7681)); - return sub_x16(b, e); -} - -static inline int16x16 mulmod_10753_x16(int16x16 x, int16x16 y) { - int16x16 yqinv = mullo_x16(y, const_x16(-10751)); /* XXX: precompute */ - int16x16 b = mulhi_x16(x, y); - int16x16 d = mullo_x16(x, yqinv); - int16x16 e = mulhi_x16(d, const_x16(10753)); - return sub_x16(b, e); -} - -static void stride(int16 fpad[4][512], const int16 f[1024]) { - int16x16 f0, f1, f2, f3, g0, g1, g2, g3; - int i, j; - - for (j = 0; j < 256; j += 16) { - f0 = load_x16(&f[0]); - f1 = load_x16(&f[16]); - f2 = load_x16(&f[32]); - f3 = load_x16(&f[48]); - f += 64; - - g0 = _mm256_permute2x128_si256(f0, f2, 0x20); - g1 = _mm256_permute2x128_si256(f0, f2, 0x31); - g2 = _mm256_permute2x128_si256(f1, f3, 0x20); - g3 = _mm256_permute2x128_si256(f1, f3, 0x31); - f0 = _mm256_unpacklo_epi16(g0, g1); - f1 = _mm256_unpackhi_epi16(g0, g1); - f2 = _mm256_unpacklo_epi16(g2, g3); - f3 = _mm256_unpackhi_epi16(g2, g3); - g0 = _mm256_unpacklo_epi16(f0, f1); - g1 = _mm256_unpackhi_epi16(f0, f1); - g2 = _mm256_unpacklo_epi16(f2, f3); - g3 = _mm256_unpackhi_epi16(f2, f3); - f0 = _mm256_unpacklo_epi64(g0, g2); - f1 = _mm256_unpackhi_epi64(g0, g2); - f2 = _mm256_unpacklo_epi64(g1, g3); - f3 = _mm256_unpackhi_epi64(g1, g3); - - store_x16(&fpad[0][j], f0); - store_x16(&fpad[1][j], f1); - store_x16(&fpad[2][j], f2); - store_x16(&fpad[3][j], f3); - } - - for (i = 0; i < 4; ++i) { - for (j = 256; j < 512; ++j) { - fpad[i][j] = 0; - } - } -} - -static void unstride(int16 f[2048], const int16 fpad[4][512]) { - int16x16 f0, f1, f2, f3, g0, g1, g2, g3, h0, h1, h2, h3; - int j; - - for (j = 0; j < 512; j += 16) { - f0 = load_x16(&fpad[0][j]); - f1 = load_x16(&fpad[1][j]); - f2 = load_x16(&fpad[2][j]); - f3 = load_x16(&fpad[3][j]); - - g2 = _mm256_unpacklo_epi16(f2, f3); - g3 = _mm256_unpackhi_epi16(f2, f3); - g0 = _mm256_unpacklo_epi16(f0, f1); - h0 = _mm256_unpacklo_epi32(g0, g2); - h1 = _mm256_unpackhi_epi32(g0, g2); - g1 = _mm256_unpackhi_epi16(f0, f1); - h2 = _mm256_unpacklo_epi32(g1, g3); - h3 = _mm256_unpackhi_epi32(g1, g3); - f1 = _mm256_permute2x128_si256(h2, h3, 0x20); - f3 = _mm256_permute2x128_si256(h2, h3, 0x31); - f0 = _mm256_permute2x128_si256(h0, h1, 0x20); - f2 = _mm256_permute2x128_si256(h0, h1, 0x31); - - store_x16(&f[0], f0); - store_x16(&f[16], f1); - store_x16(&f[32], f2); - store_x16(&f[48], f3); - f += 64; - } -} - -static const vec512 y_7681 = { .v = { - -3593, -617, -2804, 3266, -2194, -1296, -1321, 810, 1414, 3706, -549, -396, -121, -2088, -2555, 1305, - -3777, 1921, 103, 3600, -2456, 1483, 1399, -1887, -1701, 2006, 1535, -3174, -2250, 2816, -2440, -1760, - -3625, 2830, 2043, -3689, 1100, 1525, -514, 7, 2876, -1599, 3153, -1881, -2495, -2237, -2535, 438, - 3182, 3364, -1431, 1738, 3696, -2557, -2956, 638, -2319, -1993, -2310, -3555, 834, -1986, 3772, -679, - 3593, 617, 2804, -3266, 2194, 1296, 1321, -810, -1414, -3706, 549, 396, 121, 2088, 2555, -1305, - 3777, -1921, -103, -3600, 2456, -1483, -1399, 1887, 1701, -2006, -1535, 3174, 2250, -2816, 2440, 1760, - 3625, -2830, -2043, 3689, -1100, -1525, 514, -7, -2876, 1599, -3153, 1881, 2495, 2237, 2535, -438, - -3182, -3364, 1431, -1738, -3696, 2557, 2956, -638, 2319, 1993, 2310, 3555, -834, 1986, -3772, 679, - 2665, 727, -2572, 2426, -2133, -1386, 1681, -1054, 2579, 3750, 373, 3417, 404, -2233, 3135, -3405, - -1799, 1521, 1497, -3831, -3480, -3428, 2883, -1698, -859, -2762, 2175, -194, -486, -3816, -1756, 2385, - -783, 1533, 3145, 2, 3310, -2743, 2224, -1166, 2649, -1390, 3692, 2789, 1919, 2835, -2391, -2732, - 1056, 1464, 1350, -915, -1168, -921, -3588, 3456, -2160, -1598, 730, 2919, 1532, -2764, -660, -2113, - -2665, -727, 2572, -2426, 2133, 1386, -1681, 1054, -2579, -3750, -373, -3417, -404, 2233, -3135, 3405, - 1799, -1521, -1497, 3831, 3480, 3428, -2883, 1698, 859, 2762, -2175, 194, 486, 3816, 1756, -2385, - 783, -1533, -3145, -2, -3310, 2743, -2224, 1166, -2649, 1390, -3692, -2789, -1919, -2835, 2391, 2732, - -1056, -1464, -1350, 915, 1168, 921, 3588, -3456, 2160, 1598, -730, -2919, -1532, 2764, 660, 2113, - 2005, -188, 2345, -3723, -1403, 2070, 83, -3214, -3752, -1012, 1837, -3208, 3287, 3335, -293, 796, - 592, 1519, -1338, 1931, 509, -2262, -3408, 3334, 3677, 2130, 642, 589, -2167, -1084, -370, -3163, - 3763, -893, -2303, -402, 2937, -1689, -1526, -3745, -2460, 2874, 2965, 124, -1669, -1441, -3312, 3781, - 2812, -2386, -2515, -429, -3343, 777, -826, -3366, -3657, -1404, -791, -2963, -692, 2532, 2083, 2258, - -2005, 188, -2345, 3723, 1403, -2070, -83, 3214, 3752, 1012, -1837, 3208, -3287, -3335, 293, -796, - -592, -1519, 1338, -1931, -509, 2262, 3408, -3334, -3677, -2130, -642, -589, 2167, 1084, 370, 3163, - -3763, 893, 2303, 402, -2937, 1689, 1526, 3745, 2460, -2874, -2965, -124, 1669, 1441, 3312, -3781, - -2812, 2386, 2515, 429, 3343, -777, 826, 3366, 3657, 1404, 791, 2963, 692, -2532, -2083, -2258, - 179, 1121, 2891, -3581, 3177, -658, -3314, -1509, -17, 151, 2815, 2786, 1278, -2767, -1072, -1151, - -1242, -2071, 2340, -1586, 2072, 1476, 2998, 2918, -3744, -3794, -1295, 451, -929, 2378, -1144, 434, - -1070, -436, -3550, -3568, 1649, 715, 3461, -1407, -2001, -1203, 3770, 1712, 2230, -3542, 2589, -3547, - -2059, -236, 3434, -3693, 2161, -670, 2719, 2339, -2422, 1181, 3450, 222, 1348, -226, 2247, -1779, - -179, -1121, -2891, 3581, -3177, 658, 3314, 1509, 17, -151, -2815, -2786, -1278, 2767, 1072, 1151, - 1242, 2071, -2340, 1586, -2072, -1476, -2998, -2918, 3744, 3794, 1295, -451, 929, -2378, 1144, -434, - 1070, 436, 3550, 3568, -1649, -715, -3461, 1407, 2001, 1203, -3770, -1712, -2230, 3542, -2589, 3547, - 2059, 236, -3434, 3693, -2161, 670, -2719, -2339, 2422, -1181, -3450, -222, -1348, 226, -2247, 1779, - } -} ; -static const vec512 y_10753 = { .v = { - 1018, -1520, -2935, -4189, 2413, 918, 4, 1299, -2695, 1341, -205, -4744, -3784, 2629, 2565, -3062, - 223, -4875, 2790, -2576, -3686, -2503, 3550, -3085, 730, 1931, -4513, 4876, -3364, 5213, 2178, 2984, - 4188, -4035, 4129, -544, 357, 4347, 1284, -2388, -4855, 341, -1287, 4102, 425, 5175, -4616, -4379, - -3688, 5063, 3091, 1085, -376, 3012, -268, -1009, -2236, -3823, 2982, -4742, -4544, -4095, 193, 847, - -1018, 1520, 2935, 4189, -2413, -918, -4, -1299, 2695, -1341, 205, 4744, 3784, -2629, -2565, 3062, - -223, 4875, -2790, 2576, 3686, 2503, -3550, 3085, -730, -1931, 4513, -4876, 3364, -5213, -2178, -2984, - -4188, 4035, -4129, 544, -357, -4347, -1284, 2388, 4855, -341, 1287, -4102, -425, -5175, 4616, 4379, - 3688, -5063, -3091, -1085, 376, -3012, 268, 1009, 2236, 3823, -2982, 4742, 4544, 4095, -193, -847, - -4734, 4977, -400, -864, 567, -5114, -4286, 635, 512, -1356, -779, -2973, 675, -5064, -1006, 1268, - 2998, 2981, -151, -3337, 3198, -909, 2737, -970, 2774, 886, 2206, 1324, 2271, 454, -326, -3715, - -3441, -4580, 636, 2234, -794, 3615, 578, -472, 3057, -5156, -2740, 2684, 1615, -1841, -336, -1586, - 5341, -116, 5294, 4123, 5023, -1458, -3169, 467, -2045, 4828, -1572, -5116, -2213, -4808, 2884, 1068, - 4734, -4977, 400, 864, -567, 5114, 4286, -635, -512, 1356, 779, 2973, -675, 5064, 1006, -1268, - -2998, -2981, 151, 3337, -3198, 909, -2737, 970, -2774, -886, -2206, -1324, -2271, -454, 326, 3715, - 3441, 4580, -636, -2234, 794, -3615, -578, 472, -3057, 5156, 2740, -2684, -1615, 1841, 336, 1586, - -5341, 116, -5294, -4123, -5023, 1458, 3169, -467, 2045, -4828, 1572, 5116, 2213, 4808, -2884, -1068, - 3453, 2196, 2118, 5005, 2428, -2062, -1930, 2283, 4601, 3524, -3241, -1409, -2230, -5015, 4359, 4254, - 5309, 2657, -2050, -4428, 4250, -2015, -3148, -778, 2624, -1573, 40, 2237, -573, -4447, 2909, 1122, - 854, -4782, 2439, 4408, 5172, 4784, 4144, 1639, 3760, 2139, 2680, -663, 4621, 3135, 1349, -97, - 5215, 3410, -2117, -1992, -1381, -1635, 274, -2419, 3570, 458, 2087, -2374, -1132, 2662, -1722, 5313, - -3453, -2196, -2118, -5005, -2428, 2062, 1930, -2283, -4601, -3524, 3241, 1409, 2230, 5015, -4359, -4254, - -5309, -2657, 2050, 4428, -4250, 2015, 3148, 778, -2624, 1573, -40, -2237, 573, 4447, -2909, -1122, - -854, 4782, -2439, -4408, -5172, -4784, -4144, -1639, -3760, -2139, -2680, 663, -4621, -3135, -1349, 97, - -5215, -3410, 2117, 1992, 1381, 1635, -274, 2419, -3570, -458, -2087, 2374, 1132, -2662, 1722, -5313, - -2487, -554, 4519, 2449, 73, 3419, 624, -1663, -1053, 4889, 279, 1893, 1111, 1510, 2279, -4540, - 2529, 2963, 5120, -3995, -5107, -3360, -5356, 2625, -4403, 152, -5083, -2807, 2113, -4000, -4328, 3125, - -2605, 4967, -1056, 1160, 1927, 693, -4003, 3827, -4670, -569, 3535, -5268, 1782, 825, 355, 5068, - 5334, 4859, -1689, -2788, -4891, -3260, 1204, 3891, -4720, -4973, 2813, 2205, 834, -4393, -2151, 3096, - 2487, 554, -4519, -2449, -73, -3419, -624, 1663, 1053, -4889, -279, -1893, -1111, -1510, -2279, 4540, - -2529, -2963, -5120, 3995, 5107, 3360, 5356, -2625, 4403, -152, 5083, 2807, -2113, 4000, 4328, -3125, - 2605, -4967, 1056, -1160, -1927, -693, 4003, -3827, 4670, 569, -3535, 5268, -1782, -825, -355, -5068, - -5334, -4859, 1689, 2788, 4891, 3260, -1204, -3891, 4720, 4973, -2813, -2205, -834, 4393, 2151, -3096, - } -} ; -/* - can also compute these on the fly, and share storage, - at expense of 2 NTTs on top of the 24 NTTs below: - ... - for (i = 0;i < 512;++i) y_7681[i] = 0; - y_7681[1] = -3593; - PQCLEAN_NTRULPR857_AVX2_ntt512_7681(y_7681,1); - ... - for (i = 0;i < 512;++i) y_10753[i] = 0; - y_10753[1] = 1018; - PQCLEAN_NTRULPR857_AVX2_ntt512_10753(y_10753,1); -*/ - -static void mult1024(int16 h[2048], const int16 f[1024], const int16 g[1024]) { - vec4x512 x1, x2; - vec2048 x3, x4; -#define fpad (x1.v) -#define gpad (x2.v) -#define hpad fpad -#define h_7681 (x3.v) -#define h_10753 (x4.v) - int i; - - stride(fpad, f); - PQCLEAN_NTRULPR857_AVX2_ntt512_7681(fpad[0], 4); - - stride(gpad, g); - PQCLEAN_NTRULPR857_AVX2_ntt512_7681(gpad[0], 4); - - for (i = 0; i < 512; i += 16) { - int16x16 f0 = squeeze_7681_x16(load_x16(&fpad[0][i])); - int16x16 f1 = squeeze_7681_x16(load_x16(&fpad[1][i])); - int16x16 f2 = squeeze_7681_x16(load_x16(&fpad[2][i])); - int16x16 f3 = squeeze_7681_x16(load_x16(&fpad[3][i])); - int16x16 g0 = squeeze_7681_x16(load_x16(&gpad[0][i])); - int16x16 g1 = squeeze_7681_x16(load_x16(&gpad[1][i])); - int16x16 g2 = squeeze_7681_x16(load_x16(&gpad[2][i])); - int16x16 g3 = squeeze_7681_x16(load_x16(&gpad[3][i])); - int16x16 d0 = mulmod_7681_x16(f0, g0); - int16x16 d1 = mulmod_7681_x16(f1, g1); - int16x16 d2 = mulmod_7681_x16(f2, g2); - int16x16 d3 = mulmod_7681_x16(f3, g3); - int16x16 d0d1 = add_x16(d0, d1); - int16x16 d0d1d2 = add_x16(d0d1, d2); - int16x16 d0d1d2d3 = squeeze_7681_x16(add_x16(d0d1d2, d3)); - int16x16 d2d3 = add_x16(d2, d3); - int16x16 d1d2d3 = add_x16(d1, d2d3); - int16x16 e01 = mulmod_7681_x16(sub_x16(f0, f1), sub_x16(g0, g1)); - int16x16 e02 = mulmod_7681_x16(sub_x16(f0, f2), sub_x16(g0, g2)); - int16x16 e03 = mulmod_7681_x16(sub_x16(f0, f3), sub_x16(g0, g3)); - int16x16 e12 = mulmod_7681_x16(sub_x16(f1, f2), sub_x16(g1, g2)); - int16x16 e13 = mulmod_7681_x16(sub_x16(f1, f3), sub_x16(g1, g3)); - int16x16 e23 = mulmod_7681_x16(sub_x16(f2, f3), sub_x16(g2, g3)); - int16x16 h0 = d0; - int16x16 h1 = sub_x16(d0d1, e01); - int16x16 h2 = sub_x16(d0d1d2, e02); - int16x16 h3 = sub_x16(d0d1d2d3, add_x16(e12, e03)); - int16x16 h4 = sub_x16(d1d2d3, e13); - int16x16 h5 = sub_x16(d2d3, e23); - int16x16 h6 = d3; - int16x16 twist = load_x16(&y_7681.v[i]); - h4 = mulmod_7681_x16(h4, twist); - h5 = mulmod_7681_x16(h5, twist); - h6 = mulmod_7681_x16(h6, twist); - h0 = add_x16(h0, h4); - h1 = add_x16(h1, h5); - h2 = add_x16(h2, h6); - store_x16(&hpad[0][i], squeeze_7681_x16(h0)); - store_x16(&hpad[1][i], squeeze_7681_x16(h1)); - store_x16(&hpad[2][i], squeeze_7681_x16(h2)); - store_x16(&hpad[3][i], squeeze_7681_x16(h3)); - } - - PQCLEAN_NTRULPR857_AVX2_invntt512_7681(hpad[0], 4); - unstride(h_7681, (const int16(*)[512]) hpad); - - stride(fpad, f); - PQCLEAN_NTRULPR857_AVX2_ntt512_10753(fpad[0], 4); - - stride(gpad, g); - PQCLEAN_NTRULPR857_AVX2_ntt512_10753(gpad[0], 4); - - for (i = 0; i < 512; i += 16) { - int16x16 f0 = squeeze_10753_x16(load_x16(&fpad[0][i])); - int16x16 f1 = squeeze_10753_x16(load_x16(&fpad[1][i])); - int16x16 f2 = squeeze_10753_x16(load_x16(&fpad[2][i])); - int16x16 f3 = squeeze_10753_x16(load_x16(&fpad[3][i])); - int16x16 g0 = squeeze_10753_x16(load_x16(&gpad[0][i])); - int16x16 g1 = squeeze_10753_x16(load_x16(&gpad[1][i])); - int16x16 g2 = squeeze_10753_x16(load_x16(&gpad[2][i])); - int16x16 g3 = squeeze_10753_x16(load_x16(&gpad[3][i])); - int16x16 d0 = mulmod_10753_x16(f0, g0); - int16x16 d1 = mulmod_10753_x16(f1, g1); - int16x16 d2 = mulmod_10753_x16(f2, g2); - int16x16 d3 = mulmod_10753_x16(f3, g3); - int16x16 d0d1 = add_x16(d0, d1); - int16x16 d0d1d2 = add_x16(d0d1, d2); - int16x16 d0d1d2d3 = squeeze_10753_x16(add_x16(d0d1d2, d3)); - int16x16 d2d3 = add_x16(d2, d3); - int16x16 d1d2d3 = add_x16(d1, d2d3); - int16x16 e01 = mulmod_10753_x16(sub_x16(f0, f1), sub_x16(g0, g1)); - int16x16 e02 = mulmod_10753_x16(sub_x16(f0, f2), sub_x16(g0, g2)); - int16x16 e03 = mulmod_10753_x16(sub_x16(f0, f3), sub_x16(g0, g3)); - int16x16 e12 = mulmod_10753_x16(sub_x16(f1, f2), sub_x16(g1, g2)); - int16x16 e13 = mulmod_10753_x16(sub_x16(f1, f3), sub_x16(g1, g3)); - int16x16 e23 = mulmod_10753_x16(sub_x16(f2, f3), sub_x16(g2, g3)); - int16x16 h0 = d0; - int16x16 h1 = sub_x16(d0d1, e01); - int16x16 h2 = sub_x16(d0d1d2, e02); - int16x16 h3 = sub_x16(d0d1d2d3, add_x16(e12, e03)); - int16x16 h4 = sub_x16(d1d2d3, e13); - int16x16 h5 = sub_x16(d2d3, e23); - int16x16 h6 = d3; - int16x16 twist = load_x16(&y_10753.v[i]); - h4 = mulmod_10753_x16(h4, twist); - h5 = mulmod_10753_x16(h5, twist); - h6 = mulmod_10753_x16(h6, twist); - h0 = add_x16(h0, h4); - h1 = add_x16(h1, h5); - h2 = add_x16(h2, h6); - store_x16(&hpad[0][i], squeeze_10753_x16(h0)); - store_x16(&hpad[1][i], squeeze_10753_x16(h1)); - store_x16(&hpad[2][i], squeeze_10753_x16(h2)); - store_x16(&hpad[3][i], squeeze_10753_x16(h3)); - } - - PQCLEAN_NTRULPR857_AVX2_invntt512_10753(hpad[0], 4); - unstride(h_10753, (const int16(*)[512]) hpad); - - for (i = 0; i < 2048; i += 16) { - int16x16 u1 = load_x16(&h_10753[i]); - int16x16 u2 = load_x16(&h_7681[i]); - int16x16 t; - u1 = mulmod_10753_x16(u1, const_x16(1268)); - u2 = mulmod_7681_x16(u2, const_x16(956)); - t = mulmod_7681_x16(sub_x16(u2, u1), const_x16(-2539)); - t = add_x16(u1, mulmod_5167_x16(t, const_x16(2146))); - store_x16(&h[i], t); - } -} - -#define crypto_decode_pxint16 PQCLEAN_NTRULPR857_AVX2_crypto_decode_857xint16 -#define crypto_encode_pxint16 PQCLEAN_NTRULPR857_AVX2_crypto_encode_857xint16 - -#define p 857 -#define q 5167 - -static inline int16x16 freeze_5167_x16(int16x16 x) { - int16x16 mask, xq; - x = add_x16(x, const_x16(q)&signmask_x16(x)); - mask = signmask_x16(sub_x16(x, const_x16((q + 1) / 2))); - xq = sub_x16(x, const_x16(q)); - x = _mm256_blendv_epi8(xq, x, mask); - return x; -} - -int PQCLEAN_NTRULPR857_AVX2_crypto_core_multsntrup857(unsigned char *outbytes, const unsigned char *inbytes, const unsigned char *kbytes) { - vec1024 x1, x2; - vec2048 x3; -#define f (x1.v) -#define g (x2.v) -#define fg (x3.v) -#define h f - int i; - int16x16 x; - - x = const_x16(0); - for (i = p & ~15; i < 1024; i += 16) { - store_x16(&f[i], x); - } - for (i = p & ~15; i < 1024; i += 16) { - store_x16(&g[i], x); - } - - crypto_decode_pxint16(f, inbytes); - - for (i = 0; i < 1024; i += 16) { - x = load_x16(&f[i]); - x = freeze_5167_x16(squeeze_5167_x16(x)); - store_x16(&f[i], x); - } - for (i = 0; i < p; ++i) { - int8 gi = (int8) kbytes[i]; - int8 gi0 = gi & 1; - g[i] = (int8) (gi0 - (gi & (gi0 << 1))); - } - - mult1024(fg, f, g); - - fg[0] = (int16) (fg[0] - fg[p - 1]); - for (i = 0; i < 1024; i += 16) { - int16x16 fgi = load_x16(&fg[i]); - int16x16 fgip = load_x16(&fg[i + p]); - int16x16 fgip1 = load_x16(&fg[i + p - 1]); - x = add_x16(fgi, add_x16(fgip, fgip1)); - x = freeze_5167_x16(squeeze_5167_x16(x)); - store_x16(&h[i], x); - } - - crypto_encode_pxint16(outbytes, h); - - return 0; -} diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_core_multsntrup857.h b/src/kem/ntru_prime/ntrulpr857/avx2/crypto_core_multsntrup857.h deleted file mode 100644 index f6ab0e08..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_core_multsntrup857.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef PQCLEAN_NTRULPR857_AVX2_CRYPTO_CORE_MULTSNTRUP857_H -#define PQCLEAN_NTRULPR857_AVX2_CRYPTO_CORE_MULTSNTRUP857_H - -#include -#define PQCLEAN_NTRULPR857_AVX2_crypto_core_multsntrup857_OUTPUTBYTES 1714 -#define PQCLEAN_NTRULPR857_AVX2_crypto_core_multsntrup857_INPUTBYTES 1714 -#define PQCLEAN_NTRULPR857_AVX2_crypto_core_multsntrup857_KEYBYTES 857 -#define PQCLEAN_NTRULPR857_AVX2_crypto_core_multsntrup857_CONSTBYTES 0 - -int PQCLEAN_NTRULPR857_AVX2_crypto_core_multsntrup857(unsigned char *outbytes, const unsigned char *inbytes, const unsigned char *kbytes); -#endif diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_core_multsntrup857_ntt.c b/src/kem/ntru_prime/ntrulpr857/avx2/crypto_core_multsntrup857_ntt.c deleted file mode 100644 index bcadf637..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_core_multsntrup857_ntt.c +++ /dev/null @@ -1,927 +0,0 @@ -#include "crypto_core_multsntrup857.h" -#include "crypto_core_multsntrup857_ntt.h" -#include -#include - -/* auto-generated; do not edit */ - - -typedef int8_t int8; -typedef int16_t int16; - -#define zeta(n,i) (((__m256i *) zeta_##n)[(i)]) -#define zeta_x4(n,i) (((__m256i *) zeta_x4_##n)[(i)]) -#define zeta_qinv(n,i) (((__m256i *) qinvzeta_##n)[(i)]) -#define zeta_x4_qinv(n,i) (((__m256i *) qinvzeta_x4_##n)[(i)]) -#define zetainv(n,i) _mm256_loadu_reverse16((__m256i *) ((int16 *) zeta_##n+(n)/2+1-16*((i)+1))) -#define zetainv_x4(n,i) _mm256_loadu_reverse16((__m256i *) ((int16 *) zeta_x4_##n+2*(n)+4-16*((i)+1))) -#define zetainv_qinv(n,i) _mm256_loadu_reverse16((__m256i *) ((int16 *) qinvzeta_##n+(n)/2+1-16*((i)+1))) -#define zetainv_x4_qinv(n,i) _mm256_loadu_reverse16((__m256i *) ((int16 *) qinvzeta_x4_##n+2*(n)+4-16*((i)+1))) - -typedef union { - int16 data[93 * 16]; - __m256i _dummy; -} vec1488; - -static const vec1488 qdata_7681 = { .data = { - -#define q_x16 (qdata[0]) - 7681, 7681, 7681, 7681, 7681, 7681, 7681, 7681, 7681, 7681, 7681, 7681, 7681, 7681, 7681, 7681, - -#define qrecip_x16 (qdata[1]) - 17474, 17474, 17474, 17474, 17474, 17474, 17474, 17474, 17474, 17474, 17474, 17474, 17474, 17474, 17474, 17474, - -#define qshift_x16 (qdata[2]) - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - -#define zeta4_x16 (qdata[3]) - -3777, -3777, -3777, -3777, -3777, -3777, -3777, -3777, -3777, -3777, -3777, -3777, -3777, -3777, -3777, -3777, - -#define zeta4_x16_qinv (qdata[4]) - -28865, -28865, -28865, -28865, -28865, -28865, -28865, -28865, -28865, -28865, -28865, -28865, -28865, -28865, -28865, -28865, - -#define zeta8_x16 (qdata[5]) - -3625, -3625, -3625, -3625, -3625, -3625, -3625, -3625, -3625, -3625, -3625, -3625, -3625, -3625, -3625, -3625, - -#define zeta8_x16_qinv (qdata[6]) - -16425, -16425, -16425, -16425, -16425, -16425, -16425, -16425, -16425, -16425, -16425, -16425, -16425, -16425, -16425, -16425, - -#define zetainv8_x16 (qdata[7]) - -3182, -3182, -3182, -3182, -3182, -3182, -3182, -3182, -3182, -3182, -3182, -3182, -3182, -3182, -3182, -3182, - -#define zetainv8_x16_qinv (qdata[8]) - -10350, -10350, -10350, -10350, -10350, -10350, -10350, -10350, -10350, -10350, -10350, -10350, -10350, -10350, -10350, -10350, - -#define zeta_x4_16 (qdata+9) - -3593, -3593, -3593, -3593, -2194, -2194, -2194, -2194, -3625, -3625, -3625, -3625, 1100, 1100, 1100, 1100, - -3777, -3777, -3777, -3777, -2456, -2456, -2456, -2456, 3182, 3182, 3182, 3182, 3696, 3696, 3696, 3696, - 3593, 3593, 3593, 3593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -#define qinvzeta_x4_16 (qdata+12) - -9, -9, -9, -9, 4974, 4974, 4974, 4974, -16425, -16425, -16425, -16425, 7244, 7244, 7244, 7244, - -28865, -28865, -28865, -28865, -14744, -14744, -14744, -14744, 10350, 10350, 10350, 10350, -4496, -4496, -4496, -4496, - 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -#define zeta_x4_32 (qdata+15) - -3593, -3593, -3593, -3593, 1414, 1414, 1414, 1414, -2194, -2194, -2194, -2194, -2495, -2495, -2495, -2495, - -3625, -3625, -3625, -3625, 2876, 2876, 2876, 2876, 1100, 1100, 1100, 1100, -2250, -2250, -2250, -2250, - -3777, -3777, -3777, -3777, -1701, -1701, -1701, -1701, -2456, -2456, -2456, -2456, 834, 834, 834, 834, - 3182, 3182, 3182, 3182, -2319, -2319, -2319, -2319, 3696, 3696, 3696, 3696, 121, 121, 121, 121, - 3593, 3593, 3593, 3593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -#define qinvzeta_x4_32 (qdata+20) - -9, -9, -9, -9, 20870, 20870, 20870, 20870, 4974, 4974, 4974, 4974, 22593, 22593, 22593, 22593, - -16425, -16425, -16425, -16425, 828, 828, 828, 828, 7244, 7244, 7244, 7244, -23754, -23754, -23754, -23754, - -28865, -28865, -28865, -28865, 20315, 20315, 20315, 20315, -14744, -14744, -14744, -14744, 18242, 18242, 18242, 18242, - 10350, 10350, 10350, 10350, -18191, -18191, -18191, -18191, -4496, -4496, -4496, -4496, -11655, -11655, -11655, -11655, - 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -#define zeta_64 (qdata+25) - -3593, -617, 1414, 3706, -2194, -1296, -2495, -2237, -3625, 2830, 2876, -1599, 1100, 1525, -2250, 2816, - -3777, 1921, -1701, 2006, -2456, 1483, 834, -1986, 3182, 3364, -2319, -1993, 3696, -2557, 121, 2088, - 3593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -#define qinvzeta_64 (qdata+28) - -9, 19351, 20870, -15750, 4974, -9488, 22593, 7491, -16425, 26382, 828, 23489, 7244, 20469, -23754, 2816, - -28865, -5759, 20315, -3114, -14744, 15307, 18242, -19394, 10350, -10972, -18191, -31177, -4496, -25597, -11655, 22568, - 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -#define zeta_128 (qdata+31) - -3593, -2804, -617, -396, 1414, -549, 3706, 810, -2194, -1321, -1296, 438, -2495, -2535, -2237, -3689, - -3625, 2043, 2830, -1881, 2876, 3153, -1599, 7, 1100, -514, 1525, -1760, -2250, -2440, 2816, 3600, - -3777, 103, 1921, -3174, -1701, 1535, 2006, -1887, -2456, 1399, 1483, -679, 834, 3772, -1986, 1738, - 3182, -1431, 3364, -3555, -2319, -2310, -1993, 638, 3696, -2956, -2557, -1305, 121, 2555, 2088, -3266, - 3593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -#define qinvzeta_128 (qdata+36) - -9, -29428, 19351, 26228, 20870, 21467, -15750, 5930, 4974, -14121, -9488, -21066, 22593, 2073, 7491, 16279, - -16425, -25093, 26382, 26279, 828, -29103, 23489, 11783, 7244, 14846, 20469, 14624, -23754, -6536, 2816, 11792, - -28865, -4505, -5759, -6246, 20315, 9215, -3114, 6817, -14744, 4983, 15307, -28839, 18242, 1724, -19394, 23242, - 10350, -21399, -10972, -29667, -18191, -21766, -31177, 15998, -4496, 23668, -25597, -5913, -11655, -24581, 22568, -20674, - 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -#define zeta_256 (qdata+41) - -3593, 2665, -2804, -2572, -617, 727, -396, 3417, 1414, 2579, -549, 373, 3706, 3750, 810, -1054, - -2194, -2133, -1321, 1681, -1296, -1386, 438, -2732, -2495, 1919, -2535, -2391, -2237, 2835, -3689, 2, - -3625, -783, 2043, 3145, 2830, 1533, -1881, 2789, 2876, 2649, 3153, 3692, -1599, -1390, 7, -1166, - 1100, 3310, -514, 2224, 1525, -2743, -1760, 2385, -2250, -486, -2440, -1756, 2816, -3816, 3600, -3831, - -3777, -1799, 103, 1497, 1921, 1521, -3174, -194, -1701, -859, 1535, 2175, 2006, -2762, -1887, -1698, - -2456, -3480, 1399, 2883, 1483, -3428, -679, -2113, 834, 1532, 3772, -660, -1986, -2764, 1738, -915, - 3182, 1056, -1431, 1350, 3364, 1464, -3555, 2919, -2319, -2160, -2310, 730, -1993, -1598, 638, 3456, - 3696, -1168, -2956, -3588, -2557, -921, -1305, 3405, 121, -404, 2555, -3135, 2088, 2233, -3266, -2426, - 3593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -#define qinvzeta_256 (qdata+50) - -9, -17303, -29428, 24052, 19351, -12073, 26228, -24743, 20870, -12269, 21467, 19317, -15750, -25946, 5930, 32738, - 4974, -4693, -14121, 2193, -9488, 26262, -21066, 7508, 22593, 9599, 2073, 10409, 7491, -12013, 16279, -15358, - -16425, -16655, -25093, 32329, 26382, 24573, 26279, 13541, 828, -25511, -29103, 26220, 23489, -8558, 11783, -24718, - 7244, 10478, 14846, 26800, 20469, 26441, 14624, -29871, -23754, -3558, -6536, -16092, 2816, 8472, 11792, -7415, - -28865, -13575, -4505, -26663, -5759, -14351, -6246, -17602, 20315, -22875, 9215, 9855, -3114, -24266, 6817, -2722, - -14744, -15768, 4983, 12611, 15307, -21860, -28839, -27201, 18242, 32252, 1724, 21868, -19394, -8908, 23242, 13933, - 10350, 17440, -21399, -11962, -10972, 30136, -29667, -1689, -18191, 6032, -21766, 30426, -31177, 15810, 15998, 3456, - -4496, -9360, 23668, 27132, -25597, -5529, -5913, 1869, -11655, 22124, -24581, 21953, 22568, 23225, -20674, 17030, - 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -#define zeta_512 (qdata+59) - -3593, 2005, 2665, 2891, -2804, 2345, -2572, 1121, -617, -188, 727, 2786, -396, -3208, 3417, -17, - 1414, -3752, 2579, 2815, -549, 1837, 373, 151, 3706, -1012, 3750, -1509, 810, -3214, -1054, 3177, - -2194, -1403, -2133, -3314, -1321, 83, 1681, -658, -1296, 2070, -1386, -3547, 438, 3781, -2732, 2230, - -2495, -1669, 1919, 2589, -2535, -3312, -2391, -3542, -2237, -1441, 2835, -3568, -3689, -402, 2, -1070, - -3625, 3763, -783, -3550, 2043, -2303, 3145, -436, 2830, -893, 1533, 1712, -1881, 124, 2789, -2001, - 2876, -2460, 2649, 3770, 3153, 2965, 3692, -1203, -1599, 2874, -1390, -1407, 7, -3745, -1166, 1649, - 1100, 2937, 3310, 3461, -514, -1526, 2224, 715, 1525, -1689, -2743, 434, -1760, -3163, 2385, -929, - -2250, -2167, -486, -1144, -2440, -370, -1756, 2378, 2816, -1084, -3816, -1586, 3600, 1931, -3831, -1242, - -3777, 592, -1799, 2340, 103, -1338, 1497, -2071, 1921, 1519, 1521, 451, -3174, 589, -194, -3744, - -1701, 3677, -859, -1295, 1535, 642, 2175, -3794, 2006, 2130, -2762, 2918, -1887, 3334, -1698, 2072, - -2456, 509, -3480, 2998, 1399, -3408, 2883, 1476, 1483, -2262, -3428, -1779, -679, 2258, -2113, 1348, - 834, -692, 1532, 2247, 3772, 2083, -660, -226, -1986, 2532, -2764, -3693, 1738, -429, -915, -2059, - 3182, 2812, 1056, 3434, -1431, -2515, 1350, -236, 3364, -2386, 1464, 222, -3555, -2963, 2919, -2422, - -2319, -3657, -2160, 3450, -2310, -791, 730, 1181, -1993, -1404, -1598, 2339, 638, -3366, 3456, 2161, - 3696, -3343, -1168, 2719, -2956, -826, -3588, -670, -2557, 777, -921, 1151, -1305, -796, 3405, -1278, - 121, -3287, -404, 1072, 2555, 293, -3135, 2767, 2088, -3335, 2233, 3581, -3266, 3723, -2426, -179, - 3593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -#define qinvzeta_512 (qdata+76) - -9, 4565, -17303, 16715, -29428, 15145, 24052, -22943, 19351, 1860, -12073, -28958, 26228, -7304, -24743, -529, - 20870, -24232, -12269, 10495, 21467, -16083, 19317, 20119, -15750, -27636, -25946, -12261, 5930, -26766, 32738, -16791, - 4974, 25733, -4693, 20238, -14121, 18003, 2193, 6510, -9488, 29718, 26262, -25563, -21066, -1851, 7508, -19274, - 22593, -28805, 9599, -23523, 2073, 4880, 10409, 1578, 7491, -10145, -12013, 4624, 16279, 6766, -15358, 24530, - -16425, 5299, -16655, -2526, -25093, -9983, 32329, 5708, 26382, -23933, 24573, 26288, 26279, 30844, 13541, 30255, - 828, 15972, -25511, 17082, -29103, -27243, 26220, -2739, 23489, 16186, -8558, -9087, 11783, -12449, -24718, -14223, - 7244, -8839, 10478, 30597, 14846, -12790, 26800, 14539, 20469, -6297, 26441, 9650, 14624, -25179, -29871, -9633, - -23754, -5751, -3558, 2952, -6536, 23182, -16092, 23882, 2816, 964, 8472, -10802, 11792, -17013, -7415, -30938, - -28865, -23984, -13575, -11996, -4505, -14650, -26663, -22039, -5759, 1007, -14351, 10179, -6246, -947, -17602, -20128, - 20315, 10333, -22875, -17167, 9215, -14718, 9855, -29394, -3114, 27730, -24266, 5990, 6817, 22790, -2722, 14360, - -14744, 23549, -15768, -18506, 4983, 21168, 12611, 3524, 15307, 2858, -21860, 29453, -28839, 27858, -27201, 3396, - 18242, 5452, 32252, -18745, 1724, -4573, 21868, 31518, -19394, 20964, -8908, -18541, 23242, 17491, 13933, 16885, - 10350, -32004, 17440, -24214, -21399, -20435, -11962, -22764, -10972, -27986, 30136, -802, -29667, 11885, -1689, -13686, - -18191, 32695, 6032, -16006, -21766, -20759, 30426, -24931, -31177, -32124, 15810, -4317, 15998, 26330, 3456, -13711, - -4496, -19215, -9360, 26783, 23668, -14138, 27132, -32414, -25597, -2807, -5529, 8831, -5913, 17636, 1869, -16638, - -11655, 9513, 22124, 25648, -24581, -21723, 21953, -14129, 22568, -15111, 23225, 26621, -20674, -15221, 17030, -1715, - 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - } -}; - -static const vec1488 qdata_10753 = { .data = { - - 10753, 10753, 10753, 10753, 10753, 10753, 10753, 10753, 10753, 10753, 10753, 10753, 10753, 10753, 10753, 10753, - - 24964, 24964, 24964, 24964, 24964, 24964, 24964, 24964, 24964, 24964, 24964, 24964, 24964, 24964, 24964, 24964, - - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - - 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, - - 27359, 27359, 27359, 27359, 27359, 27359, 27359, 27359, 27359, 27359, 27359, 27359, 27359, 27359, 27359, 27359, - - 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, - - -1956, -1956, -1956, -1956, -1956, -1956, -1956, -1956, -1956, -1956, -1956, -1956, -1956, -1956, -1956, -1956, - - 3688, 3688, 3688, 3688, 3688, 3688, 3688, 3688, 3688, 3688, 3688, 3688, 3688, 3688, 3688, 3688, - - -408, -408, -408, -408, -408, -408, -408, -408, -408, -408, -408, -408, -408, -408, -408, -408, - - 1018, 1018, 1018, 1018, 2413, 2413, 2413, 2413, 4188, 4188, 4188, 4188, 357, 357, 357, 357, - 223, 223, 223, 223, -3686, -3686, -3686, -3686, -3688, -3688, -3688, -3688, -376, -376, -376, -376, - -1018, -1018, -1018, -1018, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - -6, -6, -6, -6, 10093, 10093, 10093, 10093, -1956, -1956, -1956, -1956, 28517, 28517, 28517, 28517, - 27359, 27359, 27359, 27359, -21094, -21094, -21094, -21094, 408, 408, 408, 408, -20856, -20856, -20856, -20856, - 6, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 1018, 1018, 1018, 1018, -2695, -2695, -2695, -2695, 2413, 2413, 2413, 2413, 425, 425, 425, 425, - 4188, 4188, 4188, 4188, -4855, -4855, -4855, -4855, 357, 357, 357, 357, -3364, -3364, -3364, -3364, - 223, 223, 223, 223, 730, 730, 730, 730, -3686, -3686, -3686, -3686, -4544, -4544, -4544, -4544, - -3688, -3688, -3688, -3688, -2236, -2236, -2236, -2236, -376, -376, -376, -376, 3784, 3784, 3784, 3784, - -1018, -1018, -1018, -1018, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - -6, -6, -6, -6, 7033, 7033, 7033, 7033, 10093, 10093, 10093, 10093, 18345, 18345, 18345, 18345, - -1956, -1956, -1956, -1956, 29449, 29449, 29449, 29449, 28517, 28517, 28517, 28517, -9508, -9508, -9508, -9508, - 27359, 27359, 27359, 27359, 16090, 16090, 16090, 16090, -21094, -21094, -21094, -21094, 28224, 28224, 28224, 28224, - 408, 408, 408, 408, -12476, -12476, -12476, -12476, -20856, -20856, -20856, -20856, 16072, 16072, 16072, 16072, - 6, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 1018, -1520, -2695, 1341, 2413, 918, 425, 5175, 4188, -4035, -4855, 341, 357, 4347, -3364, 5213, - 223, -4875, 730, 1931, -3686, -2503, -4544, -4095, -3688, 5063, -2236, -3823, -376, 3012, 3784, -2629, - -1018, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - -6, 23056, 7033, 829, 10093, 26518, 18345, 3639, -1956, -4547, 29449, 3925, 28517, -7429, -9508, -11683, - 27359, -17675, 16090, 14731, -21094, -25543, 28224, -14847, 408, 28103, -12476, 10001, -20856, -7228, 16072, 18363, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 1018, -2935, -1520, -4744, -2695, -205, 1341, 1299, 2413, 4, 918, -4379, 425, -4616, 5175, -544, - 4188, 4129, -4035, 4102, -4855, -1287, 341, -2388, 357, 1284, 4347, 2984, -3364, 2178, 5213, -2576, - 223, 2790, -4875, 4876, 730, -4513, 1931, -3085, -3686, 3550, -2503, 847, -4544, 193, -4095, 1085, - -3688, 3091, 5063, -4742, -2236, 2982, -3823, -1009, -376, -268, 3012, 3062, 3784, -2565, -2629, 4189, - -1018, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - -6, 31369, 23056, 15736, 7033, -24269, 829, -6381, 10093, 22532, 26518, 23781, 18345, 15864, 3639, 15840, - -1956, -23007, -4547, 5126, 29449, 8441, 3925, -16724, 28517, 23812, -7429, 31656, -9508, -19326, -11683, -27152, - 27359, 20198, -17675, 6924, 16090, 22623, 14731, 5619, -21094, -24098, -25543, 3407, 28224, 22209, -14847, 573, - 408, -4589, 28103, -5766, -12476, -12378, 10001, -31217, -20856, -2316, -7228, -20490, 16072, -14341, 18363, -12707, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 1018, -4734, -2935, -400, -1520, 4977, -4744, -2973, -2695, 512, -205, -779, 1341, -1356, 1299, 635, - 2413, 567, 4, -4286, 918, -5114, -4379, -1586, 425, 1615, -4616, -336, 5175, -1841, -544, 2234, - 4188, -3441, 4129, 636, -4035, -4580, 4102, 2684, -4855, 3057, -1287, -2740, 341, -5156, -2388, -472, - 357, -794, 1284, 578, 4347, 3615, 2984, -3715, -3364, 2271, 2178, -326, 5213, 454, -2576, -3337, - 223, 2998, 2790, -151, -4875, 2981, 4876, 1324, 730, 2774, -4513, 2206, 1931, 886, -3085, -970, - -3686, 3198, 3550, 2737, -2503, -909, 847, 1068, -4544, -2213, 193, 2884, -4095, -4808, 1085, 4123, - -3688, 5341, 3091, 5294, 5063, -116, -4742, -5116, -2236, -2045, 2982, -1572, -3823, 4828, -1009, 467, - -376, 5023, -268, -3169, 3012, -1458, 3062, -1268, 3784, -675, -2565, 1006, -2629, 5064, 4189, 864, - -1018, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - -6, -26238, 31369, -24976, 23056, -30351, 15736, -18845, 7033, 512, -24269, -13579, 829, 29364, -6381, -11141, - 10093, -969, 22532, 6978, 26518, -4090, 23781, 11726, 18345, 4175, 15864, 7856, 3639, 719, 15840, -31558, - -1956, 31887, -23007, -21892, -4547, 22044, 5126, -19844, 29449, -32271, 8441, 32076, 3925, -11300, -16724, 28200, - 28517, 16614, 23812, 11842, -7429, -2017, 31656, 28541, -9508, 29407, -19326, 31418, -11683, -31290, -27152, 27895, - 27359, 12214, 20198, -14999, -17675, -1627, 6924, -13012, 16090, -4394, 22623, 7326, 14731, -22666, 5619, 8246, - -21094, 24702, -24098, 177, -25543, 7795, 3407, -13268, 28224, 2395, 22209, -7356, -14847, -17096, 573, -24037, - 408, -11555, -4589, -30546, 28103, 1932, -5766, 17412, -12476, 31235, -12378, -7716, 10001, -1316, -31217, 25555, - -20856, -609, -2316, -8801, -7228, 11854, -20490, 780, 16072, -17571, -14341, -2066, 18363, 17352, -12707, 17248, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 1018, 3453, -4734, 4519, -2935, 2118, -400, -554, -1520, 2196, 4977, 1893, -4744, -1409, -2973, -1053, - -2695, 4601, 512, 279, -205, -3241, -779, 4889, 1341, 3524, -1356, -1663, 1299, 2283, 635, 73, - 2413, 2428, 567, 624, 4, -1930, -4286, 3419, 918, -2062, -5114, 5068, -4379, -97, -1586, 1782, - 425, 4621, 1615, 355, -4616, 1349, -336, 825, 5175, 3135, -1841, 1160, -544, 4408, 2234, -2605, - 4188, 854, -3441, -1056, 4129, 2439, 636, 4967, -4035, -4782, -4580, -5268, 4102, -663, 2684, -4670, - -4855, 3760, 3057, 3535, -1287, 2680, -2740, -569, 341, 2139, -5156, 3827, -2388, 1639, -472, 1927, - 357, 5172, -794, -4003, 1284, 4144, 578, 693, 4347, 4784, 3615, 3125, 2984, 1122, -3715, 2113, - -3364, -573, 2271, -4328, 2178, 2909, -326, -4000, 5213, -4447, 454, -3995, -2576, -4428, -3337, 2529, - 223, 5309, 2998, 5120, 2790, -2050, -151, 2963, -4875, 2657, 2981, -2807, 4876, 2237, 1324, -4403, - 730, 2624, 2774, -5083, -4513, 40, 2206, 152, 1931, -1573, 886, 2625, -3085, -778, -970, -5107, - -3686, 4250, 3198, -5356, 3550, -3148, 2737, -3360, -2503, -2015, -909, 3096, 847, 5313, 1068, 834, - -4544, -1132, -2213, -2151, 193, -1722, 2884, -4393, -4095, 2662, -4808, -2788, 1085, -1992, 4123, 5334, - -3688, 5215, 5341, -1689, 3091, -2117, 5294, 4859, 5063, 3410, -116, 2205, -4742, -2374, -5116, -4720, - -2236, 3570, -2045, 2813, 2982, 2087, -1572, -4973, -3823, 458, 4828, 3891, -1009, -2419, 467, -4891, - -376, -1381, 5023, 1204, -268, 274, -3169, -3260, 3012, -1635, -1458, 4540, 3062, -4254, -1268, -1111, - 3784, 2230, -675, -2279, -2565, -4359, 1006, -1510, -2629, 5015, 5064, -2449, 4189, -5005, 864, 2487, - -1018, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - -6, -29827, -26238, -21593, 31369, -29626, -24976, -7722, 23056, -16236, -30351, 30053, 15736, 9343, -18845, -16925, - 7033, 14329, 512, 15127, -24269, -21161, -13579, -1767, 829, -6716, 29364, -12415, -6381, 31467, -11141, 1609, - 10093, -20100, -969, -23952, 22532, -25482, 6978, 8027, 26518, 17394, -4090, -25652, 23781, -5729, 11726, -21770, - 18345, -4083, 4175, -15517, 15864, -19643, 7856, -22215, 3639, -18881, 719, -19320, 15840, -7880, -31558, 22483, - -1956, -6314, 31887, 15328, -23007, -7289, -21892, 11623, -4547, 31058, 22044, 13164, 5126, -15511, -19844, 6594, - 29449, 11952, -32271, 6095, 8441, 23160, 32076, 22471, 3925, 6747, -11300, 12531, -16724, 8295, 28200, -7801, - 28517, -29644, 16614, -20899, 23812, 12336, 11842, 20661, -7429, 12976, -2017, 23093, 31656, -3998, 28541, 24129, - -9508, -61, 29407, -232, -19326, -13987, 31418, 12384, -11683, -31583, -31290, 24165, -27152, 26292, 27895, 8161, - 27359, 4797, 12214, 5120, 20198, 19454, -14999, -4717, -17675, 8289, -1627, 31497, 6924, 1725, -13012, 19661, - 16090, -30144, -4394, -9691, 22623, 28712, 7326, 4248, 14731, 3035, -22666, 24641, 5619, -24330, 8246, -13811, - -21094, -13158, 24702, -23788, -24098, 27572, 177, 13024, -25543, -29151, 7795, 7192, 3407, 27329, -13268, 12098, - 28224, -19564, 2395, -8807, 22209, 32070, -7356, -22313, -14847, 20070, -17096, 23836, 573, -14280, -24037, -1834, - 408, 32351, -11555, 4967, -4589, 18875, -30546, -6917, 28103, -26286, 1932, 18077, -5766, 29370, 17412, 19856, - -12476, 23026, 31235, -30467, -12378, -24025, -7716, -12653, 10001, -8758, -1316, -20173, -31217, -11123, 25555, 23269, - -20856, -29541, -609, 31924, -2316, 3346, -8801, -13500, -7228, 14237, 11854, 14780, -20490, -9374, 780, 16809, - 16072, 11446, -17571, -8935, -14341, 5369, -2066, -18918, 18363, 19863, 17352, -16273, -12707, 3699, 17248, 951, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - } -}; - -static inline __m256i sub_x16(__m256i a, __m256i b) { - //__asm__("vpsubw %1,%0,%0" : "+x"(a),"+x"(b)); - return _mm256_sub_epi16(a, b); -} - -static inline __m256i add_x16(__m256i a, __m256i b) { - return _mm256_add_epi16(a, b); -} - -static inline __m256i reduce_x16(const __m256i *qdata, __m256i x) { - __m256i y = _mm256_mulhi_epi16(x, qrecip_x16); - y = _mm256_mulhrs_epi16(y, qshift_x16); - y = _mm256_mullo_epi16(y, q_x16); - return sub_x16(x, y); -} - -static inline __m256i mulmod_x16_scaled(const __m256i *qdata, __m256i x, __m256i y, __m256i yqinv) { - __m256i b = _mm256_mulhi_epi16(x, y); - __m256i d = _mm256_mullo_epi16(x, yqinv); - __m256i e = _mm256_mulhi_epi16(d, q_x16); - return sub_x16(b, e); -} - -typedef union { - int8 data[32]; - __m256i _dummy; -} byte32; -static const byte32 shuffle_buf = { .data = { - 14, 15, 12, 13, 10, 11, 8, 9, 6, 7, 4, 5, 2, 3, 0, 1, - 14, 15, 12, 13, 10, 11, 8, 9, 6, 7, 4, 5, 2, 3, 0, 1, - } -}; -#define shuffle (*(__m256i *) shuffle_buf.data) - -static inline __m256i _mm256_loadu_reverse16(const __m256i *p) { - __m256i x = _mm256_loadu_si256(p); - x = _mm256_permute2x128_si256(x, x, 1); - x = _mm256_shuffle_epi8(x, shuffle); - return x; -} - -static void ntt128(int16 *f, int reps, const __m256i *qdata) { - __m256i f0, f1, f2, f3, g0, g1, g2, g3, h0, h1, h2, h3; - int16 *origf = f; - int rep; - __m256i zetainv_128_0 = zetainv(128, 0); - __m256i zetainv_qinv_128_0 = zetainv_qinv(128, 0); - __m256i zetainv_x4_32_0 = zetainv_x4(32, 0); - __m256i zetainv_x4_qinv_32_0 = zetainv_x4_qinv(32, 0); - __m256i zetainv_128_1 = zetainv(128, 1); - __m256i zetainv_qinv_128_1 = zetainv_qinv(128, 1); - __m256i zetainv_x4_32_1 = zetainv_x4(32, 1); - __m256i zetainv_x4_qinv_32_1 = zetainv_x4_qinv(32, 1); - for (rep = 0; rep < reps; ++rep) { - f1 = _mm256_loadu_si256((__m256i *) (f + 32)); - f3 = _mm256_loadu_si256((__m256i *) (f + 96)); - g3 = sub_x16(f1, f3); - g3 = mulmod_x16_scaled(qdata, g3, zeta4_x16, zeta4_x16_qinv); - g1 = add_x16(f1, f3); - - f0 = _mm256_loadu_si256((__m256i *) (f + 0)); - f2 = _mm256_loadu_si256((__m256i *) (f + 64)); - g2 = sub_x16(f0, f2); - g0 = add_x16(f0, f2); - - f3 = sub_x16(g3, g2); - f2 = add_x16(g2, g3); - f3 = mulmod_x16_scaled(qdata, f3, zetainv_128_0, zetainv_qinv_128_0); - f2 = mulmod_x16_scaled(qdata, f2, zeta(128, 0), zeta_qinv(128, 0)); - - g2 = _mm256_unpacklo_epi16(f2, f3); - g3 = _mm256_unpackhi_epi16(f2, f3); - - f1 = sub_x16(g0, g1); - f0 = add_x16(g0, g1); - f1 = mulmod_x16_scaled(qdata, f1, zeta(64, 0), zeta_qinv(64, 0)); - f0 = reduce_x16(qdata, f0); - - g0 = _mm256_unpacklo_epi16(f0, f1); - h0 = _mm256_unpacklo_epi32(g0, g2); - h1 = _mm256_unpackhi_epi32(g0, g2); - g1 = _mm256_unpackhi_epi16(f0, f1); - h2 = _mm256_unpacklo_epi32(g1, g3); - h3 = _mm256_unpackhi_epi32(g1, g3); - f0 = _mm256_permute2x128_si256(h0, h1, 0x20); - f2 = _mm256_permute2x128_si256(h0, h1, 0x31); - f1 = _mm256_permute2x128_si256(h2, h3, 0x20); - f3 = _mm256_permute2x128_si256(h2, h3, 0x31); - - _mm256_storeu_si256((__m256i *) (f + 0), f0); - _mm256_storeu_si256((__m256i *) (f + 64), f2); - _mm256_storeu_si256((__m256i *) (f + 32), f1); - _mm256_storeu_si256((__m256i *) (f + 96), f3); - - f1 = _mm256_loadu_si256((__m256i *) (f + 48)); - f3 = _mm256_loadu_si256((__m256i *) (f + 112)); - g3 = sub_x16(f1, f3); - g3 = mulmod_x16_scaled(qdata, g3, zeta4_x16, zeta4_x16_qinv); - g1 = add_x16(f1, f3); - - f0 = _mm256_loadu_si256((__m256i *) (f + 16)); - f2 = _mm256_loadu_si256((__m256i *) (f + 80)); - g2 = sub_x16(f0, f2); - g0 = add_x16(f0, f2); - - f3 = sub_x16(g3, g2); - f2 = add_x16(g2, g3); - f3 = mulmod_x16_scaled(qdata, f3, zetainv_128_1, zetainv_qinv_128_1); - f2 = mulmod_x16_scaled(qdata, f2, zeta(128, 1), zeta_qinv(128, 1)); - - g2 = _mm256_unpacklo_epi16(f2, f3); - g3 = _mm256_unpackhi_epi16(f2, f3); - - f1 = sub_x16(g0, g1); - f0 = add_x16(g0, g1); - f1 = mulmod_x16_scaled(qdata, f1, zeta(64, 1), zeta_qinv(64, 1)); - f0 = reduce_x16(qdata, f0); - - g0 = _mm256_unpacklo_epi16(f0, f1); - h0 = _mm256_unpacklo_epi32(g0, g2); - h1 = _mm256_unpackhi_epi32(g0, g2); - g1 = _mm256_unpackhi_epi16(f0, f1); - h2 = _mm256_unpacklo_epi32(g1, g3); - h3 = _mm256_unpackhi_epi32(g1, g3); - f0 = _mm256_permute2x128_si256(h0, h1, 0x20); - f2 = _mm256_permute2x128_si256(h0, h1, 0x31); - f1 = _mm256_permute2x128_si256(h2, h3, 0x20); - f3 = _mm256_permute2x128_si256(h2, h3, 0x31); - - _mm256_storeu_si256((__m256i *) (f + 16), f0); - _mm256_storeu_si256((__m256i *) (f + 80), f2); - _mm256_storeu_si256((__m256i *) (f + 48), f1); - _mm256_storeu_si256((__m256i *) (f + 112), f3); - - f += 128; - } - f = origf; - for (rep = 0; rep < reps; ++rep) { - f1 = _mm256_loadu_si256((__m256i *) (f + 64)); - f3 = _mm256_loadu_si256((__m256i *) (f + 80)); - g3 = sub_x16(f1, f3); - g3 = mulmod_x16_scaled(qdata, g3, zeta4_x16, zeta4_x16_qinv); - g1 = add_x16(f1, f3); - - f0 = _mm256_loadu_si256((__m256i *) (f + 0)); - f2 = _mm256_loadu_si256((__m256i *) (f + 16)); - g2 = sub_x16(f0, f2); - g0 = add_x16(f0, f2); - - f3 = sub_x16(g3, g2); - f2 = add_x16(g2, g3); - f3 = mulmod_x16_scaled(qdata, f3, zetainv_x4_32_0, zetainv_x4_qinv_32_0); - f2 = mulmod_x16_scaled(qdata, f2, zeta_x4(32, 0), zeta_x4_qinv(32, 0)); - - g2 = _mm256_unpacklo_epi64(f2, f3); - g3 = _mm256_unpackhi_epi64(f2, f3); - - f1 = sub_x16(g0, g1); - f0 = add_x16(g0, g1); - f1 = mulmod_x16_scaled(qdata, f1, zeta_x4(16, 0), zeta_x4_qinv(16, 0)); - f0 = reduce_x16(qdata, f0); - - g1 = _mm256_unpackhi_epi64(f0, f1); - g0 = _mm256_unpacklo_epi64(f0, f1); - f1 = _mm256_permute2x128_si256(g1, g3, 0x20); - f3 = _mm256_permute2x128_si256(g1, g3, 0x31); - f0 = _mm256_permute2x128_si256(g0, g2, 0x20); - f2 = _mm256_permute2x128_si256(g0, g2, 0x31); - - _mm256_storeu_si256((__m256i *) (f + 64), f1); - _mm256_storeu_si256((__m256i *) (f + 80), f3); - _mm256_storeu_si256((__m256i *) (f + 0), f0); - _mm256_storeu_si256((__m256i *) (f + 16), f2); - - f1 = _mm256_loadu_si256((__m256i *) (f + 96)); - f3 = _mm256_loadu_si256((__m256i *) (f + 112)); - g3 = sub_x16(f1, f3); - g3 = mulmod_x16_scaled(qdata, g3, zeta4_x16, zeta4_x16_qinv); - g1 = add_x16(f1, f3); - - f0 = _mm256_loadu_si256((__m256i *) (f + 32)); - f2 = _mm256_loadu_si256((__m256i *) (f + 48)); - g2 = sub_x16(f0, f2); - g0 = add_x16(f0, f2); - - f3 = sub_x16(g3, g2); - f2 = add_x16(g2, g3); - f3 = mulmod_x16_scaled(qdata, f3, zetainv_x4_32_1, zetainv_x4_qinv_32_1); - f2 = mulmod_x16_scaled(qdata, f2, zeta_x4(32, 1), zeta_x4_qinv(32, 1)); - - g2 = _mm256_unpacklo_epi64(f2, f3); - g3 = _mm256_unpackhi_epi64(f2, f3); - - f1 = sub_x16(g0, g1); - f0 = add_x16(g0, g1); - f1 = mulmod_x16_scaled(qdata, f1, zeta_x4(16, 1), zeta_x4_qinv(16, 1)); - f0 = reduce_x16(qdata, f0); - - g1 = _mm256_unpackhi_epi64(f0, f1); - g0 = _mm256_unpacklo_epi64(f0, f1); - f1 = _mm256_permute2x128_si256(g1, g3, 0x20); - f3 = _mm256_permute2x128_si256(g1, g3, 0x31); - f0 = _mm256_permute2x128_si256(g0, g2, 0x20); - f2 = _mm256_permute2x128_si256(g0, g2, 0x31); - - _mm256_storeu_si256((__m256i *) (f + 96), f1); - _mm256_storeu_si256((__m256i *) (f + 112), f3); - _mm256_storeu_si256((__m256i *) (f + 32), f0); - _mm256_storeu_si256((__m256i *) (f + 48), f2); - - f += 128; - } - f = origf; - for (rep = 0; rep < reps; ++rep) { - - f1 = _mm256_loadu_si256((__m256i *) (f + 16)); - f3 = _mm256_loadu_si256((__m256i *) (f + 48)); - g3 = sub_x16(f1, f3); - g3 = mulmod_x16_scaled(qdata, g3, zeta4_x16, zeta4_x16_qinv); - g1 = add_x16(f1, f3); - - f0 = _mm256_loadu_si256((__m256i *) (f + 0)); - f2 = _mm256_loadu_si256((__m256i *) (f + 32)); - g2 = sub_x16(f0, f2); - g0 = add_x16(f0, f2); - - f2 = add_x16(g2, g3); - f3 = sub_x16(g2, g3); - f2 = reduce_x16(qdata, f2); - f3 = reduce_x16(qdata, f3); - - f1 = sub_x16(g0, g1); - f0 = add_x16(g0, g1); - f0 = reduce_x16(qdata, f0); - - h0 = f0; - h1 = f1; - h2 = f2; - h3 = f3; - - f1 = _mm256_loadu_si256((__m256i *) (f + 80)); - f3 = _mm256_loadu_si256((__m256i *) (f + 112)); - g3 = sub_x16(f1, f3); - g3 = mulmod_x16_scaled(qdata, g3, zeta4_x16, zeta4_x16_qinv); - g1 = add_x16(f1, f3); - - f0 = _mm256_loadu_si256((__m256i *) (f + 64)); - f2 = _mm256_loadu_si256((__m256i *) (f + 96)); - g2 = sub_x16(f0, f2); - g0 = add_x16(f0, f2); - - f3 = sub_x16(g3, g2); - f2 = add_x16(g2, g3); - f3 = mulmod_x16_scaled(qdata, f3, zetainv8_x16, zetainv8_x16_qinv); - f2 = mulmod_x16_scaled(qdata, f2, zeta8_x16, zeta8_x16_qinv); - - f1 = sub_x16(g0, g1); - f0 = add_x16(g0, g1); - f1 = mulmod_x16_scaled(qdata, f1, zeta4_x16, zeta4_x16_qinv); - f0 = reduce_x16(qdata, f0); - - g0 = add_x16(h0, f0); - g1 = add_x16(h1, f1); - g2 = add_x16(h2, f2); - g3 = add_x16(h3, f3); - _mm256_storeu_si256((__m256i *) (f + 0), g0); - _mm256_storeu_si256((__m256i *) (f + 16), g1); - _mm256_storeu_si256((__m256i *) (f + 32), g2); - _mm256_storeu_si256((__m256i *) (f + 48), g3); - g0 = sub_x16(h0, f0); - g1 = sub_x16(h1, f1); - g2 = sub_x16(h2, f2); - g3 = sub_x16(h3, f3); - _mm256_storeu_si256((__m256i *) (f + 64), g0); - _mm256_storeu_si256((__m256i *) (f + 80), g1); - _mm256_storeu_si256((__m256i *) (f + 96), g2); - _mm256_storeu_si256((__m256i *) (f + 112), g3); - f += 128; - } -} - -static void ntt512(int16 *f, int reps, const __m256i *qdata) { - __m256i f0, f1, f2, f3, g0, g1, g2, g3; /* [-Werror=unused-variable] */ /* ,h0,h1,h2,h3; */ - int16 *origf = f; - int rep; - __m256i zetainv_512[8]; - __m256i zetainv_qinv_512[8]; - int i; - for (i = 0; i < 8; ++i) { - zetainv_512[i] = zetainv(512, i); - } - for (i = 0; i < 8; ++i) { - zetainv_qinv_512[i] = zetainv_qinv(512, i); - } - for (rep = 0; rep < reps; ++rep) { - for (i = 0; i < 8; ++i) { - f1 = _mm256_loadu_si256((__m256i *) (f + 16 * i + 128)); - f3 = _mm256_loadu_si256((__m256i *) (f + 16 * i + 384)); - g3 = sub_x16(f1, f3); - g3 = mulmod_x16_scaled(qdata, g3, zeta4_x16, zeta4_x16_qinv); - g1 = add_x16(f1, f3); - - f0 = _mm256_loadu_si256((__m256i *) (f + 16 * i)); - f2 = _mm256_loadu_si256((__m256i *) (f + 16 * i + 256)); - g2 = sub_x16(f0, f2); - g0 = add_x16(f0, f2); - - f3 = sub_x16(g3, g2); - f2 = add_x16(g2, g3); - f3 = mulmod_x16_scaled(qdata, f3, zetainv_512[i], zetainv_qinv_512[i]); - f2 = mulmod_x16_scaled(qdata, f2, zeta(512, i), zeta_qinv(512, i)); - - f1 = sub_x16(g0, g1); - f0 = add_x16(g0, g1); - f1 = mulmod_x16_scaled(qdata, f1, zeta(256, i), zeta_qinv(256, i)); - f0 = reduce_x16(qdata, f0); - - _mm256_storeu_si256((__m256i *) (f + 16 * i + 384), f3); - _mm256_storeu_si256((__m256i *) (f + 16 * i + 256), f2); - _mm256_storeu_si256((__m256i *) (f + 16 * i + 128), f1); - _mm256_storeu_si256((__m256i *) (f + 16 * i), f0); - - } - f += 512; - } - f = origf; - ntt128(f, reps * 4, qdata); -} - -void PQCLEAN_NTRULPR857_AVX2_ntt512_7681(int16 *f, int reps) { - ntt512(f, reps, (const __m256i *) qdata_7681.data); -} - -void PQCLEAN_NTRULPR857_AVX2_ntt512_10753(int16 *f, int reps) { - ntt512(f, reps, (const __m256i *) qdata_10753.data); -} - -static void invntt128(int16 *f, int reps, const __m256i *qdata) { - __m256i f0, f1, f2, f3, g0, g1, g2, g3, h0, h1, h2, h3; - int16 *origf = f; - int rep; - __m256i zetainv_x4_16_0 = zetainv_x4(16, 0); - __m256i zetainv_x4_qinv_16_0 = zetainv_x4_qinv(16, 0); - __m256i zetainv_x4_32_0 = zetainv_x4(32, 0); - __m256i zetainv_x4_qinv_32_0 = zetainv_x4_qinv(32, 0); - __m256i zetainv_64_0 = zetainv(64, 0); - __m256i zetainv_qinv_64_0 = zetainv_qinv(64, 0); - __m256i zetainv_128_0 = zetainv(128, 0); - __m256i zetainv_qinv_128_0 = zetainv_qinv(128, 0); - __m256i zetainv_x4_16_1 = zetainv_x4(16, 1); - __m256i zetainv_x4_qinv_16_1 = zetainv_x4_qinv(16, 1); - __m256i zetainv_x4_32_1 = zetainv_x4(32, 1); - __m256i zetainv_x4_qinv_32_1 = zetainv_x4_qinv(32, 1); - __m256i zetainv_64_1 = zetainv(64, 1); - __m256i zetainv_qinv_64_1 = zetainv_qinv(64, 1); - __m256i zetainv_128_1 = zetainv(128, 1); - __m256i zetainv_qinv_128_1 = zetainv_qinv(128, 1); - for (rep = 0; rep < reps; ++rep) { - f0 = _mm256_loadu_si256((__m256i *) (f + 0)); - f1 = _mm256_loadu_si256((__m256i *) (f + 64)); - f2 = _mm256_loadu_si256((__m256i *) (f + 16)); - f3 = _mm256_loadu_si256((__m256i *) (f + 80)); - g0 = _mm256_loadu_si256((__m256i *) (f + 32)); - g1 = _mm256_loadu_si256((__m256i *) (f + 96)); - g2 = _mm256_loadu_si256((__m256i *) (f + 48)); - g3 = _mm256_loadu_si256((__m256i *) (f + 112)); - - h1 = sub_x16(f0, f1); - h1 = reduce_x16(qdata, h1); - h0 = add_x16(f0, f1); - h3 = sub_x16(f2, f3); - h3 = mulmod_x16_scaled(qdata, h3, zeta4_x16, zeta4_x16_qinv); - h2 = add_x16(f2, f3); - f1 = sub_x16(g0, g1); - f1 = mulmod_x16_scaled(qdata, f1, zetainv8_x16, zetainv8_x16_qinv); - f0 = add_x16(g0, g1); - f3 = sub_x16(g2, g3); - f3 = mulmod_x16_scaled(qdata, f3, zeta8_x16, zeta8_x16_qinv); - f2 = add_x16(g2, g3); - - g0 = add_x16(h0, h2); - g0 = reduce_x16(qdata, g0); - g2 = sub_x16(h0, h2); - g2 = reduce_x16(qdata, g2); - g1 = sub_x16(h1, h3); - g3 = add_x16(h1, h3); - h2 = sub_x16(f0, f2); - h2 = mulmod_x16_scaled(qdata, h2, zeta4_x16, zeta4_x16_qinv); - h0 = add_x16(f0, f2); - h3 = add_x16(f1, f3); - h3 = mulmod_x16_scaled(qdata, h3, zeta4_x16, zeta4_x16_qinv); - h1 = sub_x16(f1, f3); - - f0 = add_x16(g0, h0); - g0 = sub_x16(g0, h0); - f1 = add_x16(g1, h1); - g1 = sub_x16(g1, h1); - f2 = sub_x16(g2, h2); - g2 = add_x16(g2, h2); - f3 = sub_x16(g3, h3); - g3 = add_x16(g3, h3); - - _mm256_storeu_si256((__m256i *) (f + 0), f0); - _mm256_storeu_si256((__m256i *) (f + 32), g0); - _mm256_storeu_si256((__m256i *) (f + 64), f1); - _mm256_storeu_si256((__m256i *) (f + 96), g1); - _mm256_storeu_si256((__m256i *) (f + 16), f2); - _mm256_storeu_si256((__m256i *) (f + 48), g2); - _mm256_storeu_si256((__m256i *) (f + 80), f3); - _mm256_storeu_si256((__m256i *) (f + 112), g3); - - f += 128; - } - f = origf; - for (rep = 0; rep < reps; ++rep) { - f0 = _mm256_loadu_si256((__m256i *) (f + 0)); - f1 = _mm256_loadu_si256((__m256i *) (f + 64)); - f2 = _mm256_loadu_si256((__m256i *) (f + 16)); - f3 = _mm256_loadu_si256((__m256i *) (f + 80)); - - g0 = _mm256_unpacklo_epi64(f0, f1); - g1 = _mm256_unpacklo_epi64(f2, f3); - g2 = _mm256_unpackhi_epi64(f0, f1); - g3 = _mm256_unpackhi_epi64(f2, f3); - f2 = _mm256_permute2x128_si256(g0, g1, 0x31); - f3 = _mm256_permute2x128_si256(g2, g3, 0x31); - f0 = _mm256_permute2x128_si256(g0, g1, 0x20); - f1 = _mm256_permute2x128_si256(g2, g3, 0x20); - - f2 = mulmod_x16_scaled(qdata, f2, zetainv_x4_32_0, zetainv_x4_qinv_32_0); - f3 = mulmod_x16_scaled(qdata, f3, zeta_x4(32, 0), zeta_x4_qinv(32, 0)); - - g3 = add_x16(f3, f2); - g3 = mulmod_x16_scaled(qdata, g3, zeta4_x16, zeta4_x16_qinv); - g2 = sub_x16(f3, f2); - - f0 = reduce_x16(qdata, f0); - f1 = mulmod_x16_scaled(qdata, f1, zetainv_x4_16_0, zetainv_x4_qinv_16_0); - - g1 = add_x16(f0, f1); - g0 = sub_x16(f0, f1); - - f1 = add_x16(g1, g3); - f3 = sub_x16(g1, g3); - f0 = add_x16(g0, g2); - f2 = sub_x16(g0, g2); - - _mm256_storeu_si256((__m256i *) (f + 64), f1); - _mm256_storeu_si256((__m256i *) (f + 80), f3); - _mm256_storeu_si256((__m256i *) (f + 0), f0); - _mm256_storeu_si256((__m256i *) (f + 16), f2); - - f0 = _mm256_loadu_si256((__m256i *) (f + 32)); - f1 = _mm256_loadu_si256((__m256i *) (f + 96)); - f2 = _mm256_loadu_si256((__m256i *) (f + 48)); - f3 = _mm256_loadu_si256((__m256i *) (f + 112)); - - g0 = _mm256_unpacklo_epi64(f0, f1); - g1 = _mm256_unpacklo_epi64(f2, f3); - g2 = _mm256_unpackhi_epi64(f0, f1); - g3 = _mm256_unpackhi_epi64(f2, f3); - f2 = _mm256_permute2x128_si256(g0, g1, 0x31); - f3 = _mm256_permute2x128_si256(g2, g3, 0x31); - f0 = _mm256_permute2x128_si256(g0, g1, 0x20); - f1 = _mm256_permute2x128_si256(g2, g3, 0x20); - - f2 = mulmod_x16_scaled(qdata, f2, zetainv_x4_32_1, zetainv_x4_qinv_32_1); - f3 = mulmod_x16_scaled(qdata, f3, zeta_x4(32, 1), zeta_x4_qinv(32, 1)); - - g3 = add_x16(f3, f2); - g3 = mulmod_x16_scaled(qdata, g3, zeta4_x16, zeta4_x16_qinv); - g2 = sub_x16(f3, f2); - - f0 = reduce_x16(qdata, f0); - f1 = mulmod_x16_scaled(qdata, f1, zetainv_x4_16_1, zetainv_x4_qinv_16_1); - - g1 = add_x16(f0, f1); - g0 = sub_x16(f0, f1); - - f1 = add_x16(g1, g3); - f3 = sub_x16(g1, g3); - f0 = add_x16(g0, g2); - f2 = sub_x16(g0, g2); - - _mm256_storeu_si256((__m256i *) (f + 96), f1); - _mm256_storeu_si256((__m256i *) (f + 112), f3); - _mm256_storeu_si256((__m256i *) (f + 32), f0); - _mm256_storeu_si256((__m256i *) (f + 48), f2); - - f += 128; - } - f = origf; - for (rep = 0; rep < reps; ++rep) { - f0 = _mm256_loadu_si256((__m256i *) (f + 0)); - f2 = _mm256_loadu_si256((__m256i *) (f + 64)); - f1 = _mm256_loadu_si256((__m256i *) (f + 32)); - f3 = _mm256_loadu_si256((__m256i *) (f + 96)); - - g0 = _mm256_permute2x128_si256(f0, f2, 0x20); - g2 = _mm256_permute2x128_si256(f0, f2, 0x31); - f0 = _mm256_unpacklo_epi16(g0, g2); - f2 = _mm256_unpackhi_epi16(g0, g2); - g1 = _mm256_permute2x128_si256(f1, f3, 0x20); - g3 = _mm256_permute2x128_si256(f1, f3, 0x31); - f1 = _mm256_unpacklo_epi16(g1, g3); - f3 = _mm256_unpackhi_epi16(g1, g3); - g1 = _mm256_unpackhi_epi16(f0, f2); - g0 = _mm256_unpacklo_epi16(f0, f2); - g3 = _mm256_unpackhi_epi16(f1, f3); - g2 = _mm256_unpacklo_epi16(f1, f3); - f2 = _mm256_unpacklo_epi64(g1, g3); - f3 = _mm256_unpackhi_epi64(g1, g3); - f0 = _mm256_unpacklo_epi64(g0, g2); - f1 = _mm256_unpackhi_epi64(g0, g2); - - f2 = mulmod_x16_scaled(qdata, f2, zetainv_128_0, zetainv_qinv_128_0); - f3 = mulmod_x16_scaled(qdata, f3, zeta(128, 0), zeta_qinv(128, 0)); - f0 = reduce_x16(qdata, f0); - f1 = mulmod_x16_scaled(qdata, f1, zetainv_64_0, zetainv_qinv_64_0); - - g3 = add_x16(f3, f2); - g3 = mulmod_x16_scaled(qdata, g3, zeta4_x16, zeta4_x16_qinv); - g1 = add_x16(f0, f1); - g2 = sub_x16(f3, f2); - g0 = sub_x16(f0, f1); - - f1 = add_x16(g1, g3); - f3 = sub_x16(g1, g3); - f0 = add_x16(g0, g2); - f2 = sub_x16(g0, g2); - - _mm256_storeu_si256((__m256i *) (f + 32), f1); - _mm256_storeu_si256((__m256i *) (f + 96), f3); - _mm256_storeu_si256((__m256i *) (f + 0), f0); - _mm256_storeu_si256((__m256i *) (f + 64), f2); - - f0 = _mm256_loadu_si256((__m256i *) (f + 16)); - f2 = _mm256_loadu_si256((__m256i *) (f + 80)); - f1 = _mm256_loadu_si256((__m256i *) (f + 48)); - f3 = _mm256_loadu_si256((__m256i *) (f + 112)); - - g0 = _mm256_permute2x128_si256(f0, f2, 0x20); - g2 = _mm256_permute2x128_si256(f0, f2, 0x31); - f0 = _mm256_unpacklo_epi16(g0, g2); - f2 = _mm256_unpackhi_epi16(g0, g2); - g1 = _mm256_permute2x128_si256(f1, f3, 0x20); - g3 = _mm256_permute2x128_si256(f1, f3, 0x31); - f1 = _mm256_unpacklo_epi16(g1, g3); - f3 = _mm256_unpackhi_epi16(g1, g3); - g1 = _mm256_unpackhi_epi16(f0, f2); - g0 = _mm256_unpacklo_epi16(f0, f2); - g3 = _mm256_unpackhi_epi16(f1, f3); - g2 = _mm256_unpacklo_epi16(f1, f3); - f2 = _mm256_unpacklo_epi64(g1, g3); - f3 = _mm256_unpackhi_epi64(g1, g3); - f0 = _mm256_unpacklo_epi64(g0, g2); - f1 = _mm256_unpackhi_epi64(g0, g2); - - f2 = mulmod_x16_scaled(qdata, f2, zetainv_128_1, zetainv_qinv_128_1); - f3 = mulmod_x16_scaled(qdata, f3, zeta(128, 1), zeta_qinv(128, 1)); - f0 = reduce_x16(qdata, f0); - f1 = mulmod_x16_scaled(qdata, f1, zetainv_64_1, zetainv_qinv_64_1); - - g3 = add_x16(f3, f2); - g3 = mulmod_x16_scaled(qdata, g3, zeta4_x16, zeta4_x16_qinv); - g1 = add_x16(f0, f1); - g2 = sub_x16(f3, f2); - g0 = sub_x16(f0, f1); - - f1 = add_x16(g1, g3); - f3 = sub_x16(g1, g3); - f0 = add_x16(g0, g2); - f2 = sub_x16(g0, g2); - - _mm256_storeu_si256((__m256i *) (f + 48), f1); - _mm256_storeu_si256((__m256i *) (f + 112), f3); - _mm256_storeu_si256((__m256i *) (f + 16), f0); - _mm256_storeu_si256((__m256i *) (f + 80), f2); - - f += 128; - } -} - -static void invntt512(int16 *f, int reps, const __m256i *qdata) { - __m256i f0, f1, f2, f3, g0, g1, g2, g3; /* [-Werror=unused-variable] */ /* ,h0,h1,h2,h3; */ - /* [-Werror=unused-variable] */ /* int16 *origf = f; */ - int rep; - __m256i zetainv_512[8]; - __m256i zetainv_qinv_512[8]; - __m256i zetainv_256[8]; - __m256i zetainv_qinv_256[8]; - int i; - for (i = 0; i < 8; ++i) { - zetainv_512[i] = zetainv(512, i); - } - for (i = 0; i < 8; ++i) { - zetainv_qinv_512[i] = zetainv_qinv(512, i); - } - for (i = 0; i < 8; ++i) { - zetainv_256[i] = zetainv(256, i); - } - for (i = 0; i < 8; ++i) { - zetainv_qinv_256[i] = zetainv_qinv(256, i); - } - invntt128(f, 4 * reps, qdata); - for (rep = 0; rep < reps; ++rep) { - for (i = 0; i < 8; ++i) { - f2 = _mm256_loadu_si256((__m256i *) (f + 16 * i + 256)); - f3 = _mm256_loadu_si256((__m256i *) (f + 16 * i + 384)); - - f2 = mulmod_x16_scaled(qdata, f2, zetainv_512[i], zetainv_qinv_512[i]); - f3 = mulmod_x16_scaled(qdata, f3, zeta(512, i), zeta_qinv(512, i)); - g3 = add_x16(f3, f2); - g3 = mulmod_x16_scaled(qdata, g3, zeta4_x16, zeta4_x16_qinv); - g2 = sub_x16(f3, f2); - - f0 = _mm256_loadu_si256((__m256i *) (f + 16 * i + 0)); - f1 = _mm256_loadu_si256((__m256i *) (f + 16 * i + 128)); - - f0 = reduce_x16(qdata, f0); - f1 = mulmod_x16_scaled(qdata, f1, zetainv_256[i], zetainv_qinv_256[i]); - g1 = add_x16(f0, f1); - g0 = sub_x16(f0, f1); - - f1 = add_x16(g1, g3); - f3 = sub_x16(g1, g3); - f0 = add_x16(g0, g2); - f2 = sub_x16(g0, g2); - - _mm256_storeu_si256((__m256i *) (f + 16 * i + 128), f1); - _mm256_storeu_si256((__m256i *) (f + 16 * i + 384), f3); - _mm256_storeu_si256((__m256i *) (f + 16 * i + 0), f0); - _mm256_storeu_si256((__m256i *) (f + 16 * i + 256), f2); - } - f += 512; - } -} - -void PQCLEAN_NTRULPR857_AVX2_invntt512_7681(int16 *f, int reps) { - invntt512(f, reps, (const __m256i *) qdata_7681.data); -} - -void PQCLEAN_NTRULPR857_AVX2_invntt512_10753(int16 *f, int reps) { - invntt512(f, reps, (const __m256i *) qdata_10753.data); -} diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_core_multsntrup857_ntt.h b/src/kem/ntru_prime/ntrulpr857/avx2/crypto_core_multsntrup857_ntt.h deleted file mode 100644 index caaf40e3..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_core_multsntrup857_ntt.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef ntt_H -#define ntt_H - -#include - - - -extern void PQCLEAN_NTRULPR857_AVX2_ntt512_7681(int16_t *f, int reps); -extern void PQCLEAN_NTRULPR857_AVX2_ntt512_10753(int16_t *f, int reps); -extern void PQCLEAN_NTRULPR857_AVX2_invntt512_7681(int16_t *f, int reps); -extern void PQCLEAN_NTRULPR857_AVX2_invntt512_10753(int16_t *f, int reps); - -#endif diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_256x16.c b/src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_256x16.c deleted file mode 100644 index 2a81fee1..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_256x16.c +++ /dev/null @@ -1,11 +0,0 @@ -#include "crypto_decode_256x16.h" - - -void PQCLEAN_NTRULPR857_AVX2_crypto_decode_256x16(void *v, const unsigned char *s) { - unsigned char *T = v; - int i; - for (i = 0; i < 128; ++i) { - T[2 * i] = s[i] & 15; - T[2 * i + 1] = s[i] >> 4; - } -} diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_256x16.h b/src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_256x16.h deleted file mode 100644 index 30083556..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_256x16.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR857_AVX2_CRYPTO_DECODE_256X16_H -#define PQCLEAN_NTRULPR857_AVX2_CRYPTO_DECODE_256X16_H - -#include -#define PQCLEAN_NTRULPR857_AVX2_crypto_decode_256x16_STRBYTES 128 -#define PQCLEAN_NTRULPR857_AVX2_crypto_decode_256x16_ITEMS 256 -#define PQCLEAN_NTRULPR857_AVX2_crypto_decode_256x16_ITEMBYTES 1 - -void PQCLEAN_NTRULPR857_AVX2_crypto_decode_256x16(void *v, const unsigned char *s); -#endif diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_256x2.c b/src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_256x2.c deleted file mode 100644 index ca8da2c4..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_256x2.c +++ /dev/null @@ -1,27 +0,0 @@ -#include "crypto_decode_256x2.h" -#include -#include - -#define COPY _mm256_set_epi64x(0x0303030303030303,0x0202020202020202,0x0101010101010101,0x0000000000000000) -#define MASK _mm256_set1_epi64x((int64_t) 0x8040201008040201) -#define MASK2 _mm256_set1_epi64x(0x0101010101010101) - -void PQCLEAN_NTRULPR857_AVX2_crypto_decode_256x2(void *v, const unsigned char *s) { - __m256i *r = v; - int i; - - for (i = 0; i < 8; ++i) { - /* bytes s0 s1 s2 s3 */ - __m256i x = _mm256_set1_epi32(*(int32_t *) s); - /* s0 s1 s2 s3 s0 s1 s2 s3 s0 s1 s2 s3 s0 s1 s2 s3 s0 s1 s2 s3 s0 s1 s2 s3 s0 s1 s2 s3 s0 s1 s2 s3 */ - x = _mm256_shuffle_epi8(x, COPY); - /* s0 s0 s0 s0 s0 s0 s0 s0 s1 s1 s1 s1 s1 s1 s1 s1 s2 s2 s2 s2 s2 s2 s2 s2 s3 s3 s3 s3 s3 s3 s3 s3 */ - x = _mm256_andnot_si256(x, MASK); - x = _mm256_cmpeq_epi8(x, _mm256_setzero_si256()); - x &= MASK2; - _mm256_storeu_si256(r, x); - - s += 4; - r += 1; - } -} diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_256x2.h b/src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_256x2.h deleted file mode 100644 index 1977de43..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_256x2.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR857_AVX2_CRYPTO_DECODE_256X2_H -#define PQCLEAN_NTRULPR857_AVX2_CRYPTO_DECODE_256X2_H - -#include -#define PQCLEAN_NTRULPR857_AVX2_crypto_decode_256x2_STRBYTES 32 -#define PQCLEAN_NTRULPR857_AVX2_crypto_decode_256x2_ITEMS 256 -#define PQCLEAN_NTRULPR857_AVX2_crypto_decode_256x2_ITEMBYTES 1 - -void PQCLEAN_NTRULPR857_AVX2_crypto_decode_256x2(void *v, const unsigned char *s); -#endif diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_857x1723.c b/src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_857x1723.c deleted file mode 100644 index 7f1f07b8..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_857x1723.c +++ /dev/null @@ -1,426 +0,0 @@ -#include "crypto_decode_857x1723.h" -#include -/* auto-generated; do not edit */ - -#define int16 int16_t -#define int32 int32_t - -static inline int16 mullo(int16 x, int16 y) { - return x * y; -} - -static inline int16 mulhi(int16 x, int16 y) { - return (int16) ((x * (int32)y) >> 16); -} - -static inline __m256i add(__m256i x, __m256i y) { - return _mm256_add_epi16(x, y); -} - -static inline __m256i sub(__m256i x, __m256i y) { - return _mm256_sub_epi16(x, y); -} - -static inline __m256i shiftleftconst(__m256i x, int16 y) { - return _mm256_slli_epi16(x, y); -} - -static inline __m256i signedshiftrightconst(__m256i x, int16 y) { - return _mm256_srai_epi16(x, y); -} - -static inline __m256i subconst(__m256i x, int16 y) { - return sub(x, _mm256_set1_epi16(y)); -} - -static inline __m256i mulloconst(__m256i x, int16 y) { - return _mm256_mullo_epi16(x, _mm256_set1_epi16(y)); -} - -static inline __m256i mulhiconst(__m256i x, int16 y) { - return _mm256_mulhi_epi16(x, _mm256_set1_epi16(y)); -} - -static inline __m256i ifgesubconst(__m256i x, int16 y) { - __m256i y16 = _mm256_set1_epi16(y); - __m256i top16 = _mm256_set1_epi16((int16)(y - 1)); - return sub(x, _mm256_cmpgt_epi16(x, top16) & y16); -} - -static inline __m256i ifnegaddconst(__m256i x, int16 y) { - return add(x, signedshiftrightconst(x, 15) & _mm256_set1_epi16(y)); -} - -void PQCLEAN_NTRULPR857_AVX2_crypto_decode_857x1723(void *v, const unsigned char *s) { - int16 *R0 = v; - int16 R1[429], R2[215], R3[108], R4[54], R5[27], R6[14], R7[7], R8[4], R9[2], R10[1]; - long long i; - int16 a0, a1, a2; - __m256i A0, A1, A2, S0, S1, B0, B1, C0, C1; - - s += PQCLEAN_NTRULPR857_AVX2_crypto_decode_857x1723_STRBYTES; - a1 = 0; - a1 += *--s; /* 0...255 */ - a1 -= 160; /* -160...95 */ - a1 += (a1 >> 15) & 160; /* 0...159 */ - R10[0] = a1; - - /* R10 ------> R9: reconstruct mod 1*[743]+[14044] */ - - i = 0; - s -= 2; - a0 = R10[0]; - a0 = mulhi(a0, 276) - mulhi(mullo(a0, -22580), 743); /* -372...440 */ - a0 += s[2 * i + 1]; /* -372...695 */ - a0 = mulhi(a0, 276) - mulhi(mullo(a0, -22580), 743); /* -374...374 */ - a0 += s[2 * i + 0]; /* -374...629 */ - a0 += (a0 >> 15) & 743; /* 0...742 */ - a1 = (int16) ((s[2 * i + 1] << 8) + s[2 * i] - a0); - a1 = mullo(a1, -3881); - - /* invalid inputs might need reduction mod 14044 */ - a1 -= 14044; - a1 += (a1 >> 15) & 14044; - - R9[0] = a0; - R9[1] = a1; - s -= 0; - - /* R9 ------> R8: reconstruct mod 3*[436]+[8246] */ - - i = 0; - s -= 1; - a2 = a0 = R9[1]; - a0 = mulhi(a0, -64) - mulhi(mullo(a0, 27056), 436); /* -234...218 */ - a0 += s[1 * i + 0]; /* -234...473 */ - a0 -= 436; /* -670..>37 */ - a0 += (a0 >> 15) & 436; /* -234...435 */ - a0 += (a0 >> 15) & 436; /* 0...435 */ - a1 = (int16) ((a2 << 6) + ((s[i] - a0) >> 2)); - a1 = mullo(a1, 2405); - - /* invalid inputs might need reduction mod 8246 */ - a1 -= 8246; - a1 += (a1 >> 15) & 8246; - - R8[2] = a0; - R8[3] = a1; - s -= 1; - for (i = 0; i >= 0; --i) { - a2 = a0 = R9[i]; - a0 = mulhi(a0, -64) - mulhi(mullo(a0, 27056), 436); /* -234...218 */ - a0 += s[1 * i + 0]; /* -234...473 */ - a0 -= 436; /* -670..>37 */ - a0 += (a0 >> 15) & 436; /* -234...435 */ - a0 += (a0 >> 15) & 436; /* 0...435 */ - a1 = (int16) ((a2 << 6) + ((s[i] - a0) >> 2)); - a1 = mullo(a1, 2405); - - /* invalid inputs might need reduction mod 436 */ - a1 -= 436; - a1 += (a1 >> 15) & 436; - - R8[2 * i] = a0; - R8[2 * i + 1] = a1; - } - - /* R8 ------> R7: reconstruct mod 6*[334]+[8246] */ - - R7[6] = R8[3]; - s -= 3; - for (i = 2; i >= 0; --i) { - a2 = a0 = R8[i]; - a0 = mulhi(a0, 62) - mulhi(mullo(a0, 15305), 334); /* -167...182 */ - a0 += s[1 * i + 0]; /* -167...437 */ - a0 -= 334; /* -501..>103 */ - a0 += (a0 >> 15) & 334; /* -167...333 */ - a0 += (a0 >> 15) & 334; /* 0...333 */ - a1 = (int16) ((a2 << 7) + ((s[i] - a0) >> 1)); - a1 = mullo(a1, -22761); - - /* invalid inputs might need reduction mod 334 */ - a1 -= 334; - a1 += (a1 >> 15) & 334; - - R7[2 * i] = a0; - R7[2 * i + 1] = a1; - } - - /* R7 ------> R6: reconstruct mod 13*[292]+[7229] */ - - i = 0; - s -= 1; - a2 = a0 = R7[6]; - a0 = mulhi(a0, 64) - mulhi(mullo(a0, 8080), 292); /* -146...162 */ - a0 += s[1 * i + 0]; /* -146...417 */ - a0 -= 292; /* -438..>125 */ - a0 += (a0 >> 15) & 292; /* -146...291 */ - a0 += (a0 >> 15) & 292; /* 0...291 */ - a1 = (int16) ((a2 << 6) + ((s[i] - a0) >> 2)); - a1 = mullo(a1, -3591); - - /* invalid inputs might need reduction mod 7229 */ - a1 -= 7229; - a1 += (a1 >> 15) & 7229; - - R6[12] = a0; - R6[13] = a1; - s -= 6; - for (i = 5; i >= 0; --i) { - a2 = a0 = R7[i]; - a0 = mulhi(a0, 64) - mulhi(mullo(a0, 8080), 292); /* -146...162 */ - a0 += s[1 * i + 0]; /* -146...417 */ - a0 -= 292; /* -438..>125 */ - a0 += (a0 >> 15) & 292; /* -146...291 */ - a0 += (a0 >> 15) & 292; /* 0...291 */ - a1 = (int16) ((a2 << 6) + ((s[i] - a0) >> 2)); - a1 = mullo(a1, -3591); - - /* invalid inputs might need reduction mod 292 */ - a1 -= 292; - a1 += (a1 >> 15) & 292; - - R6[2 * i] = a0; - R6[2 * i + 1] = a1; - } - - /* R6 ------> R5: reconstruct mod 26*[273]+[7229] */ - - R5[26] = R6[13]; - s -= 13; - for (i = 12; i >= 0; --i) { - a2 = a0 = R6[i]; - a0 = mulhi(a0, 1) - mulhi(mullo(a0, 4081), 273); /* -137...136 */ - a0 += s[1 * i + 0]; /* -137...391 */ - a0 -= 273; /* -410..>118 */ - a0 += (a0 >> 15) & 273; /* -137...272 */ - a0 += (a0 >> 15) & 273; /* 0...272 */ - a1 = (int16) ((a2 << 8) + s[i] - a0); - a1 = mullo(a1, 4081); - - /* invalid inputs might need reduction mod 273 */ - a1 -= 273; - a1 += (a1 >> 15) & 273; - - R5[2 * i] = a0; - R5[2 * i + 1] = a1; - } - - /* R5 ------> R4: reconstruct mod 53*[4225]+[438] */ - - i = 0; - s -= 1; - a2 = a0 = R5[26]; - a0 = mulhi(a0, -259) - mulhi(mullo(a0, -3971), 4225); /* -2178...2112 */ - a0 += s[1 * i + 0]; /* -2178...2367 */ - a0 += (a0 >> 15) & 4225; /* 0...4224 */ - a1 = (int16) ((a2 << 8) + s[i] - a0); - a1 = mullo(a1, 12161); - - /* invalid inputs might need reduction mod 438 */ - a1 -= 438; - a1 += (a1 >> 15) & 438; - - R4[52] = a0; - R4[53] = a1; - s -= 52; - i = 10; - for (;;) { - A0 = _mm256_loadu_si256((__m256i *) &R5[i]); - S0 = _mm256_loadu_si256((__m256i *) (s + 2 * i)); - S1 = _mm256_srli_epi16(S0, 8); - S0 &= _mm256_set1_epi16(255); - A0 = sub(mulhiconst(A0, -259), mulhiconst(mulloconst(A0, -3971), 4225)); /* -2178...2112 */ - A0 = add(A0, S1); /* -2178...2367 */ - A0 = sub(mulhiconst(A0, -259), mulhiconst(mulloconst(A0, -3971), 4225)); /* -2122...2121 */ - A0 = add(A0, S0); /* -2122...2376 */ - A0 = ifnegaddconst(A0, 4225); /* 0...4224 */ - A1 = add(shiftleftconst(S1, 8), sub(S0, A0)); - A1 = mulloconst(A1, 12161); - - /* invalid inputs might need reduction mod 4225 */ - A1 = ifgesubconst(A1, 4225); - - /* A0: r0r2r4r6r8r10r12r14 r16r18r20r22r24r26r28r30 */ - /* A1: r1r3r5r7r9r11r13r15 r17r19r21r23r25r27r29r31 */ - B0 = _mm256_unpacklo_epi16(A0, A1); - B1 = _mm256_unpackhi_epi16(A0, A1); - /* B0: r0r1r2r3r4r5r6r7 r16r17r18r19r20r21r22r23 */ - /* B1: r8r9r10r11r12r13r14r15 r24r25r26r27r28r29r30r31 */ - C0 = _mm256_permute2x128_si256(B0, B1, 0x20); - C1 = _mm256_permute2x128_si256(B0, B1, 0x31); - /* C0: r0r1r2r3r4r5r6r7 r8r9r10r11r12r13r14r15 */ - /* C1: r16r17r18r19r20r21r22r23 r24r25r26r27r28r29r30r31 */ - _mm256_storeu_si256((__m256i *) (&R4[2 * i]), C0); - _mm256_storeu_si256((__m256i *) (16 + &R4[2 * i]), C1); - if (!i) { - break; - } - i = -16 - ((~15) & -i); - } - - /* R4 ------> R3: reconstruct mod 107*[65]+[1723] */ - - i = 0; - s -= 1; - a2 = a0 = R4[53]; - a0 = mulhi(a0, 1) - mulhi(mullo(a0, 4033), 65); /* -33...32 */ - a0 += s[1 * i + 0]; /* -33...287 */ - a0 = mulhi(a0, 16) - mulhi(mullo(a0, -1008), 65); /* -33...32 */ - a0 += (a0 >> 15) & 65; /* 0...64 */ - a1 = (int16) ((a2 << 8) + s[i] - a0); - a1 = mullo(a1, 4033); - - /* invalid inputs might need reduction mod 1723 */ - a1 -= 1723; - a1 += (a1 >> 15) & 1723; - - R3[106] = a0; - R3[107] = a1; - s -= 0; - i = 37; - for (;;) { - A2 = A0 = _mm256_loadu_si256((__m256i *) &R4[i]); - A0 = sub(mulhiconst(A0, 16), mulhiconst(mulloconst(A0, -1008), 65)); /* -33...36 */ - A0 = ifnegaddconst(A0, 65); /* 0...64 */ - A1 = signedshiftrightconst(sub(A2, A0), 0); - A1 = mulloconst(A1, 4033); - - /* invalid inputs might need reduction mod 65 */ - A1 = ifgesubconst(A1, 65); - - /* A0: r0r2r4r6r8r10r12r14 r16r18r20r22r24r26r28r30 */ - /* A1: r1r3r5r7r9r11r13r15 r17r19r21r23r25r27r29r31 */ - B0 = _mm256_unpacklo_epi16(A0, A1); - B1 = _mm256_unpackhi_epi16(A0, A1); - /* B0: r0r1r2r3r4r5r6r7 r16r17r18r19r20r21r22r23 */ - /* B1: r8r9r10r11r12r13r14r15 r24r25r26r27r28r29r30r31 */ - C0 = _mm256_permute2x128_si256(B0, B1, 0x20); - C1 = _mm256_permute2x128_si256(B0, B1, 0x31); - /* C0: r0r1r2r3r4r5r6r7 r8r9r10r11r12r13r14r15 */ - /* C1: r16r17r18r19r20r21r22r23 r24r25r26r27r28r29r30r31 */ - _mm256_storeu_si256((__m256i *) (&R3[2 * i]), C0); - _mm256_storeu_si256((__m256i *) (16 + &R3[2 * i]), C1); - if (!i) { - break; - } - i = -16 - ((~15) & -i); - } - - /* R3 ------> R2: reconstruct mod 214*[2053]+[1723] */ - - R2[214] = R3[107]; - s -= 214; - i = 91; - for (;;) { - A0 = _mm256_loadu_si256((__m256i *) &R3[i]); - S0 = _mm256_loadu_si256((__m256i *) (s + 2 * i)); - S1 = _mm256_srli_epi16(S0, 8); - S0 &= _mm256_set1_epi16(255); - A0 = sub(mulhiconst(A0, 100), mulhiconst(mulloconst(A0, -8172), 2053)); /* -1027...1051 */ - A0 = add(A0, S1); /* -1027...1306 */ - A0 = sub(mulhiconst(A0, 100), mulhiconst(mulloconst(A0, -8172), 2053)); /* -1029...1028 */ - A0 = add(A0, S0); /* -1029...1283 */ - A0 = ifnegaddconst(A0, 2053); /* 0...2052 */ - A1 = add(shiftleftconst(S1, 8), sub(S0, A0)); - A1 = mulloconst(A1, -31539); - - /* invalid inputs might need reduction mod 2053 */ - A1 = ifgesubconst(A1, 2053); - - /* A0: r0r2r4r6r8r10r12r14 r16r18r20r22r24r26r28r30 */ - /* A1: r1r3r5r7r9r11r13r15 r17r19r21r23r25r27r29r31 */ - B0 = _mm256_unpacklo_epi16(A0, A1); - B1 = _mm256_unpackhi_epi16(A0, A1); - /* B0: r0r1r2r3r4r5r6r7 r16r17r18r19r20r21r22r23 */ - /* B1: r8r9r10r11r12r13r14r15 r24r25r26r27r28r29r30r31 */ - C0 = _mm256_permute2x128_si256(B0, B1, 0x20); - C1 = _mm256_permute2x128_si256(B0, B1, 0x31); - /* C0: r0r1r2r3r4r5r6r7 r8r9r10r11r12r13r14r15 */ - /* C1: r16r17r18r19r20r21r22r23 r24r25r26r27r28r29r30r31 */ - _mm256_storeu_si256((__m256i *) (&R2[2 * i]), C0); - _mm256_storeu_si256((__m256i *) (16 + &R2[2 * i]), C1); - if (!i) { - break; - } - i = -16 - ((~15) & -i); - } - - /* R2 ------> R1: reconstruct mod 428*[11597]+[1723] */ - - R1[428] = R2[214]; - s -= 428; - i = 198; - for (;;) { - A0 = _mm256_loadu_si256((__m256i *) &R2[i]); - S0 = _mm256_loadu_si256((__m256i *) (s + 2 * i)); - S1 = _mm256_srli_epi16(S0, 8); - S0 &= _mm256_set1_epi16(255); - A0 = sub(mulhiconst(A0, -3643), mulhiconst(mulloconst(A0, -1447), 11597)); /* -6710...5798 */ - A0 = add(A0, S1); /* -6710...6053 */ - A0 = sub(mulhiconst(A0, -3643), mulhiconst(mulloconst(A0, -1447), 11597)); /* -6135...6171 */ - A0 = add(A0, S0); /* -6135...6426 */ - A0 = ifnegaddconst(A0, 11597); /* 0...11596 */ - A1 = add(shiftleftconst(S1, 8), sub(S0, A0)); - A1 = mulloconst(A1, -11387); - - /* invalid inputs might need reduction mod 11597 */ - A1 = ifgesubconst(A1, 11597); - - /* A0: r0r2r4r6r8r10r12r14 r16r18r20r22r24r26r28r30 */ - /* A1: r1r3r5r7r9r11r13r15 r17r19r21r23r25r27r29r31 */ - B0 = _mm256_unpacklo_epi16(A0, A1); - B1 = _mm256_unpackhi_epi16(A0, A1); - /* B0: r0r1r2r3r4r5r6r7 r16r17r18r19r20r21r22r23 */ - /* B1: r8r9r10r11r12r13r14r15 r24r25r26r27r28r29r30r31 */ - C0 = _mm256_permute2x128_si256(B0, B1, 0x20); - C1 = _mm256_permute2x128_si256(B0, B1, 0x31); - /* C0: r0r1r2r3r4r5r6r7 r8r9r10r11r12r13r14r15 */ - /* C1: r16r17r18r19r20r21r22r23 r24r25r26r27r28r29r30r31 */ - _mm256_storeu_si256((__m256i *) (&R1[2 * i]), C0); - _mm256_storeu_si256((__m256i *) (16 + &R1[2 * i]), C1); - if (!i) { - break; - } - i = -16 - ((~15) & -i); - } - - /* R1 ------> R0: reconstruct mod 857*[1723] */ - - R0[856] = (int16) (3 * R1[428] - 2583); - s -= 428; - i = 412; - for (;;) { - A2 = A0 = _mm256_loadu_si256((__m256i *) &R1[i]); - S0 = _mm256_cvtepu8_epi16(_mm_loadu_si128((__m128i *) (s + i))); - A0 = sub(mulhiconst(A0, 365), mulhiconst(mulloconst(A0, -9737), 1723)); /* -862...952 */ - A0 = add(A0, S0); /* -862...1207 */ - A0 = ifnegaddconst(A0, 1723); /* 0...1722 */ - A1 = add(shiftleftconst(A2, 8), sub(S0, A0)); - A1 = mulloconst(A1, 20083); - - /* invalid inputs might need reduction mod 1723 */ - A1 = ifgesubconst(A1, 1723); - - A0 = mulloconst(A0, 3); - A1 = mulloconst(A1, 3); - A0 = subconst(A0, 2583); - A1 = subconst(A1, 2583); - /* A0: r0r2r4r6r8r10r12r14 r16r18r20r22r24r26r28r30 */ - /* A1: r1r3r5r7r9r11r13r15 r17r19r21r23r25r27r29r31 */ - B0 = _mm256_unpacklo_epi16(A0, A1); - B1 = _mm256_unpackhi_epi16(A0, A1); - /* B0: r0r1r2r3r4r5r6r7 r16r17r18r19r20r21r22r23 */ - /* B1: r8r9r10r11r12r13r14r15 r24r25r26r27r28r29r30r31 */ - C0 = _mm256_permute2x128_si256(B0, B1, 0x20); - C1 = _mm256_permute2x128_si256(B0, B1, 0x31); - /* C0: r0r1r2r3r4r5r6r7 r8r9r10r11r12r13r14r15 */ - /* C1: r16r17r18r19r20r21r22r23 r24r25r26r27r28r29r30r31 */ - _mm256_storeu_si256((__m256i *) (&R0[2 * i]), C0); - _mm256_storeu_si256((__m256i *) (16 + &R0[2 * i]), C1); - if (!i) { - break; - } - i = -16 - ((~15) & -i); - } -} diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_857x1723.h b/src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_857x1723.h deleted file mode 100644 index 0e8cb2cf..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_857x1723.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR857_AVX2_CRYPTO_DECODE_857X1723_H -#define PQCLEAN_NTRULPR857_AVX2_CRYPTO_DECODE_857X1723_H - -#include -#define PQCLEAN_NTRULPR857_AVX2_crypto_decode_857x1723_STRBYTES 1152 -#define PQCLEAN_NTRULPR857_AVX2_crypto_decode_857x1723_ITEMS 857 -#define PQCLEAN_NTRULPR857_AVX2_crypto_decode_857x1723_ITEMBYTES 2 - -void PQCLEAN_NTRULPR857_AVX2_crypto_decode_857x1723(void *v, const unsigned char *s); -#endif diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_857x3.c b/src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_857x3.c deleted file mode 100644 index c6565cc3..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_857x3.c +++ /dev/null @@ -1,65 +0,0 @@ -#include "crypto_decode_857x3.h" -#include -#define uint8 uint8_t - -#define p 857 -#define loops 7 -#define overshoot 10 - -void PQCLEAN_NTRULPR857_AVX2_crypto_decode_857x3(void *v, const unsigned char *s) { - uint8 *f = v; - int loop; - uint8 *nextf = f + 128 - 4 * overshoot; - const unsigned char *nexts = s + 32 - overshoot; - - for (loop = loops; loop > 0; --loop) { - __m256i s0 = _mm256_loadu_si256((const __m256i *) s); - s = nexts; - nexts += 32; - - __m256i s1 = _mm256_srli_epi16(s0 & _mm256_set1_epi8(-16), 4); - s0 &= _mm256_set1_epi8(15); - - __m256i a0 = _mm256_unpacklo_epi8(s0, s1); - /* 0 0>>4 1 1>>4 2 2>>4 3 3>>4 4 4>>4 5 5>>4 6 6>>4 7 7>>4 */ - /* 16 16>>4 ... */ - __m256i a1 = _mm256_unpackhi_epi8(s0, s1); - /* 8 8>>4 9 9>>4 10 10>>4 ... */ - /* 24 24>>4 ... */ - - __m256i a2 = _mm256_srli_epi16(a0 & _mm256_set1_epi8(12), 2); - __m256i a3 = _mm256_srli_epi16(a1 & _mm256_set1_epi8(12), 2); - a0 &= _mm256_set1_epi8(3); - a1 &= _mm256_set1_epi8(3); - - __m256i b0 = _mm256_unpacklo_epi8(a0, a2); - /* 0 0>>2 0>>4 0>>6 1 1>>2 1>>4 1>>6 */ - /* 2 2>>2 2>>4 2>>6 3 3>>2 3>>4 3>.6 */ - /* 16 16>>2 16>>4 16>>6 ... */ - __m256i b2 = _mm256_unpackhi_epi8(a0, a2); - /* 4 4>>2 ... */ - __m256i b1 = _mm256_unpacklo_epi8(a1, a3); - /* 8 8>>2 ... */ - __m256i b3 = _mm256_unpackhi_epi8(a1, a3); - /* 12 12>>2 ... */ - - __m256i f0 = _mm256_permute2x128_si256(b0, b2, 0x20); - __m256i f2 = _mm256_permute2x128_si256(b0, b2, 0x31); - __m256i f1 = _mm256_permute2x128_si256(b1, b3, 0x20); - __m256i f3 = _mm256_permute2x128_si256(b1, b3, 0x31); - - f0 = _mm256_add_epi8(f0, _mm256_set1_epi8(-1)); - f1 = _mm256_add_epi8(f1, _mm256_set1_epi8(-1)); - f2 = _mm256_add_epi8(f2, _mm256_set1_epi8(-1)); - f3 = _mm256_add_epi8(f3, _mm256_set1_epi8(-1)); - - _mm256_storeu_si256((__m256i *) (f + 0), f0); - _mm256_storeu_si256((__m256i *) (f + 32), f1); - _mm256_storeu_si256((__m256i *) (f + 64), f2); - _mm256_storeu_si256((__m256i *) (f + 96), f3); - f = nextf; - nextf += 128; - } - - *f = (uint8) ((*s & 3) - 1); -} diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_857x3.h b/src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_857x3.h deleted file mode 100644 index 789c740e..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_857x3.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR857_AVX2_CRYPTO_DECODE_857X3_H -#define PQCLEAN_NTRULPR857_AVX2_CRYPTO_DECODE_857X3_H - -#include -#define PQCLEAN_NTRULPR857_AVX2_crypto_decode_857x3_STRBYTES 215 -#define PQCLEAN_NTRULPR857_AVX2_crypto_decode_857x3_ITEMS 857 -#define PQCLEAN_NTRULPR857_AVX2_crypto_decode_857x3_ITEMBYTES 1 - -void PQCLEAN_NTRULPR857_AVX2_crypto_decode_857x3(void *v, const unsigned char *s); -#endif diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_857xint16.c b/src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_857xint16.c deleted file mode 100644 index f9dc31e6..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_857xint16.c +++ /dev/null @@ -1,15 +0,0 @@ -#include "crypto_decode_857xint16.h" - - -void PQCLEAN_NTRULPR857_AVX2_crypto_decode_857xint16(void *v, const unsigned char *s) { - uint16_t *x = v; - int i; - - for (i = 0; i < 857; ++i) { - uint16_t u0 = s[0]; - uint16_t u1 = s[1]; - *x = (uint16_t) (u0 | (u1 << 8)); - x += 1; - s += 2; - } -} diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_857xint16.h b/src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_857xint16.h deleted file mode 100644 index 7f602bb3..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_857xint16.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR857_AVX2_CRYPTO_DECODE_857XINT16_H -#define PQCLEAN_NTRULPR857_AVX2_CRYPTO_DECODE_857XINT16_H - -#include -#define PQCLEAN_NTRULPR857_AVX2_crypto_decode_857xint16_STRBYTES 1714 -#define PQCLEAN_NTRULPR857_AVX2_crypto_decode_857xint16_ITEMBYTES 2 -#define PQCLEAN_NTRULPR857_AVX2_crypto_decode_857xint16_ITEMS 857 - -void PQCLEAN_NTRULPR857_AVX2_crypto_decode_857xint16(void *v, const unsigned char *s); -#endif diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_857xint32.c b/src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_857xint32.c deleted file mode 100644 index 3fd7e3b9..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_857xint32.c +++ /dev/null @@ -1,20 +0,0 @@ -#include "crypto_decode_857xint32.h" - - -void PQCLEAN_NTRULPR857_AVX2_crypto_decode_857xint32(void *v, const unsigned char *s) { - uint32_t *x = v; - int i; - - for (i = 0; i < 857; ++i) { - uint32_t u0 = s[0]; - uint32_t u1 = s[1]; - uint32_t u2 = s[2]; - uint32_t u3 = s[3]; - u1 <<= 8; - u2 <<= 16; - u3 <<= 24; - *x = u0 | u1 | u2 | u3; - x += 1; - s += 4; - } -} diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_857xint32.h b/src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_857xint32.h deleted file mode 100644 index 822eda0c..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_decode_857xint32.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR857_AVX2_CRYPTO_DECODE_857XINT32_H -#define PQCLEAN_NTRULPR857_AVX2_CRYPTO_DECODE_857XINT32_H - -#include -#define PQCLEAN_NTRULPR857_AVX2_crypto_decode_857xint32_STRBYTES 3428 -#define PQCLEAN_NTRULPR857_AVX2_crypto_decode_857xint32_ITEMBYTES 4 -#define PQCLEAN_NTRULPR857_AVX2_crypto_decode_857xint32_ITEMS 857 - -void PQCLEAN_NTRULPR857_AVX2_crypto_decode_857xint32(void *v, const unsigned char *s); -#endif diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_256x16.c b/src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_256x16.c deleted file mode 100644 index a1ead4c1..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_256x16.c +++ /dev/null @@ -1,10 +0,0 @@ -#include "crypto_encode_256x16.h" - - -void PQCLEAN_NTRULPR857_AVX2_crypto_encode_256x16(unsigned char *s, const void *v) { - const unsigned char *T = v; - int i; - for (i = 0; i < 128; ++i) { - s[i] = (unsigned char) (T[2 * i] + (T[2 * i + 1] << 4)); - } -} diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_256x16.h b/src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_256x16.h deleted file mode 100644 index e2aa335f..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_256x16.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR857_AVX2_CRYPTO_ENCODE_256X16_H -#define PQCLEAN_NTRULPR857_AVX2_CRYPTO_ENCODE_256X16_H - -#include -#define PQCLEAN_NTRULPR857_AVX2_crypto_encode_256x16_STRBYTES 128 -#define PQCLEAN_NTRULPR857_AVX2_crypto_encode_256x16_ITEMS 256 -#define PQCLEAN_NTRULPR857_AVX2_crypto_encode_256x16_ITEMBYTES 1 - -void PQCLEAN_NTRULPR857_AVX2_crypto_encode_256x16(unsigned char *s, const void *v); -#endif diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_256x2.c b/src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_256x2.c deleted file mode 100644 index f24fae0e..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_256x2.c +++ /dev/null @@ -1,88 +0,0 @@ -#include "crypto_encode_256x2.h" -#include -#include - -void PQCLEAN_NTRULPR857_AVX2_crypto_encode_256x2(unsigned char *s, const void *v) { - __m256i a0 = _mm256_loadu_si256(0 + (__m256i *) v); - __m256i a1 = _mm256_loadu_si256(1 + (__m256i *) v); - __m256i a2 = _mm256_loadu_si256(2 + (__m256i *) v); - __m256i a3 = _mm256_loadu_si256(3 + (__m256i *) v); - __m256i a4 = _mm256_loadu_si256(4 + (__m256i *) v); - __m256i a5 = _mm256_loadu_si256(5 + (__m256i *) v); - __m256i a6 = _mm256_loadu_si256(6 + (__m256i *) v); - __m256i a7 = _mm256_loadu_si256(7 + (__m256i *) v); - __m256i bottom = _mm256_set1_epi8(1); - __m256i zero = _mm256_setzero_si256(); - __m256i b0 = _mm256_cmpgt_epi8(a0 & bottom, zero); - __m256i b1 = _mm256_cmpgt_epi8(a1 & bottom, zero); - __m256i b2 = _mm256_cmpgt_epi8(a2 & bottom, zero); - __m256i b3 = _mm256_cmpgt_epi8(a3 & bottom, zero); - __m256i b4 = _mm256_cmpgt_epi8(a4 & bottom, zero); - __m256i b5 = _mm256_cmpgt_epi8(a5 & bottom, zero); - __m256i b6 = _mm256_cmpgt_epi8(a6 & bottom, zero); - __m256i b7 = _mm256_cmpgt_epi8(a7 & bottom, zero); - int32_t c0 = _mm256_movemask_epi8(b0); - int32_t c1 = _mm256_movemask_epi8(b1); - int32_t c2 = _mm256_movemask_epi8(b2); - int32_t c3 = _mm256_movemask_epi8(b3); - int32_t c4 = _mm256_movemask_epi8(b4); - int32_t c5 = _mm256_movemask_epi8(b5); - int32_t c6 = _mm256_movemask_epi8(b6); - int32_t c7 = _mm256_movemask_epi8(b7); - *s++ = (unsigned char) c0; - c0 >>= 8; - *s++ = (unsigned char) c0; - c0 >>= 8; - *s++ = (unsigned char) c0; - c0 >>= 8; - *s++ = (unsigned char) c0; - *s++ = (unsigned char) c1; - c1 >>= 8; - *s++ = (unsigned char) c1; - c1 >>= 8; - *s++ = (unsigned char) c1; - c1 >>= 8; - *s++ = (unsigned char) c1; - *s++ = (unsigned char) c2; - c2 >>= 8; - *s++ = (unsigned char) c2; - c2 >>= 8; - *s++ = (unsigned char) c2; - c2 >>= 8; - *s++ = (unsigned char) c2; - *s++ = (unsigned char) c3; - c3 >>= 8; - *s++ = (unsigned char) c3; - c3 >>= 8; - *s++ = (unsigned char) c3; - c3 >>= 8; - *s++ = (unsigned char) c3; - *s++ = (unsigned char) c4; - c4 >>= 8; - *s++ = (unsigned char) c4; - c4 >>= 8; - *s++ = (unsigned char) c4; - c4 >>= 8; - *s++ = (unsigned char) c4; - *s++ = (unsigned char) c5; - c5 >>= 8; - *s++ = (unsigned char) c5; - c5 >>= 8; - *s++ = (unsigned char) c5; - c5 >>= 8; - *s++ = (unsigned char) c5; - *s++ = (unsigned char) c6; - c6 >>= 8; - *s++ = (unsigned char) c6; - c6 >>= 8; - *s++ = (unsigned char) c6; - c6 >>= 8; - *s++ = (unsigned char) c6; - *s++ = (unsigned char) c7; - c7 >>= 8; - *s++ = (unsigned char) c7; - c7 >>= 8; - *s++ = (unsigned char) c7; - c7 >>= 8; - *s++ = (unsigned char) c7; -} diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_256x2.h b/src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_256x2.h deleted file mode 100644 index a552cb18..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_256x2.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR857_AVX2_CRYPTO_ENCODE_256X2_H -#define PQCLEAN_NTRULPR857_AVX2_CRYPTO_ENCODE_256X2_H - -#include -#define PQCLEAN_NTRULPR857_AVX2_crypto_encode_256x2_STRBYTES 32 -#define PQCLEAN_NTRULPR857_AVX2_crypto_encode_256x2_ITEMS 256 -#define PQCLEAN_NTRULPR857_AVX2_crypto_encode_256x2_ITEMBYTES 1 - -void PQCLEAN_NTRULPR857_AVX2_crypto_encode_256x2(unsigned char *s, const void *v); -#endif diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_857x1723.c b/src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_857x1723.c deleted file mode 100644 index 4d986557..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_857x1723.c +++ /dev/null @@ -1,283 +0,0 @@ -#include "crypto_encode_857x1723.h" -#include -/* auto-generated; do not edit */ - -#define int16 int16_t -#define uint16 uint16_t -#define uint32 uint32_t - -void PQCLEAN_NTRULPR857_AVX2_crypto_encode_857x1723(unsigned char *out, const void *v) { - const int16 *R0 = v; - /* XXX: caller could overlap R with input */ - uint16 R[429]; - long i; - const uint16 *reading; - uint16 *writing; - uint16 r0, r1; - uint32 r2; - uint32 s0; - - reading = (uint16 *) R0; - writing = R; - i = 54; - while (i > 0) { - __m256i x, y; - --i; - if (!i) { - reading -= 8; - writing -= 4; - out -= 4; - } - x = _mm256_loadu_si256((__m256i *) reading); - x = _mm256_add_epi16(x, _mm256_set1_epi16(2583)); - x &= _mm256_set1_epi16(16383); - x = _mm256_mulhi_epi16(x, _mm256_set1_epi16(21846)); - y = x & _mm256_set1_epi32(65535); - x = _mm256_srli_epi32(x, 16); - x = _mm256_mullo_epi32(x, _mm256_set1_epi32(1723)); - x = _mm256_add_epi32(y, x); - x = _mm256_shuffle_epi8(x, _mm256_set_epi8( - 12, 8, 4, 0, 12, 8, 4, 0, 14, 13, 10, 9, 6, 5, 2, 1, - 12, 8, 4, 0, 12, 8, 4, 0, 14, 13, 10, 9, 6, 5, 2, 1 - )); - x = _mm256_permute4x64_epi64(x, 0xd8); - _mm_storeu_si128((__m128i *) writing, _mm256_extractf128_si256(x, 0)); - s0 = (uint32) _mm256_extract_epi32(x, 4); - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 = (uint32) _mm256_extract_epi32(x, 6); - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - reading += 16; - writing += 8; - } - R[428] = (uint16) ((((R0[856] + 2583) & 16383) * 10923) >> 15); - - reading = (uint16 *) R; - writing = R; - i = 14; - while (i > 0) { - __m256i x, x2, y, y2; - --i; - if (!i) { - reading -= 20; - writing -= 10; - out -= 20; - } - x = _mm256_loadu_si256((__m256i *) (reading + 0)); - x2 = _mm256_loadu_si256((__m256i *) (reading + 16)); - y = x & _mm256_set1_epi32(65535); - y2 = x2 & _mm256_set1_epi32(65535); - x = _mm256_srli_epi32(x, 16); - x2 = _mm256_srli_epi32(x2, 16); - x = _mm256_mullo_epi32(x, _mm256_set1_epi32(11597)); - x2 = _mm256_mullo_epi32(x2, _mm256_set1_epi32(11597)); - x = _mm256_add_epi32(y, x); - x2 = _mm256_add_epi32(y2, x2); - x = _mm256_shuffle_epi8(x, _mm256_set_epi8( - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0, - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0 - )); - x2 = _mm256_shuffle_epi8(x2, _mm256_set_epi8( - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0, - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0 - )); - x = _mm256_permute4x64_epi64(x, 0xd8); - x2 = _mm256_permute4x64_epi64(x2, 0xd8); - _mm256_storeu_si256((__m256i *) writing, _mm256_permute2f128_si256(x, x2, 0x31)); - _mm256_storeu_si256((__m256i *) out, _mm256_permute2f128_si256(x, x2, 0x20)); - reading += 32; - writing += 16; - out += 32; - } - R[214] = R[428]; - - reading = (uint16 *) R; - writing = R; - i = 7; - while (i > 0) { - __m256i x, x2, y, y2; - --i; - if (!i) { - reading -= 10; - writing -= 5; - out -= 10; - } - x = _mm256_loadu_si256((__m256i *) (reading + 0)); - x2 = _mm256_loadu_si256((__m256i *) (reading + 16)); - y = x & _mm256_set1_epi32(65535); - y2 = x2 & _mm256_set1_epi32(65535); - x = _mm256_srli_epi32(x, 16); - x2 = _mm256_srli_epi32(x2, 16); - x = _mm256_mullo_epi32(x, _mm256_set1_epi32(2053)); - x2 = _mm256_mullo_epi32(x2, _mm256_set1_epi32(2053)); - x = _mm256_add_epi32(y, x); - x2 = _mm256_add_epi32(y2, x2); - x = _mm256_shuffle_epi8(x, _mm256_set_epi8( - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0, - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0 - )); - x2 = _mm256_shuffle_epi8(x2, _mm256_set_epi8( - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0, - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0 - )); - x = _mm256_permute4x64_epi64(x, 0xd8); - x2 = _mm256_permute4x64_epi64(x2, 0xd8); - _mm256_storeu_si256((__m256i *) writing, _mm256_permute2f128_si256(x, x2, 0x31)); - _mm256_storeu_si256((__m256i *) out, _mm256_permute2f128_si256(x, x2, 0x20)); - reading += 32; - writing += 16; - out += 32; - } - R[107] = R[214]; - - for (i = 0; i < 53; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)65; - R[i] = (uint16) r2; - } - r0 = R[106]; - r1 = R[107]; - r2 = r0 + r1 * (uint32)65; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[53] = (uint16) r2; - - reading = (uint16 *) R; - writing = R; - i = 2; - while (i > 0) { - __m256i x, x2, y, y2; - --i; - if (!i) { - reading -= 12; - writing -= 6; - out -= 12; - } - x = _mm256_loadu_si256((__m256i *) (reading + 0)); - x2 = _mm256_loadu_si256((__m256i *) (reading + 16)); - y = x & _mm256_set1_epi32(65535); - y2 = x2 & _mm256_set1_epi32(65535); - x = _mm256_srli_epi32(x, 16); - x2 = _mm256_srli_epi32(x2, 16); - x = _mm256_mullo_epi32(x, _mm256_set1_epi32(4225)); - x2 = _mm256_mullo_epi32(x2, _mm256_set1_epi32(4225)); - x = _mm256_add_epi32(y, x); - x2 = _mm256_add_epi32(y2, x2); - x = _mm256_shuffle_epi8(x, _mm256_set_epi8( - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0, - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0 - )); - x2 = _mm256_shuffle_epi8(x2, _mm256_set_epi8( - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0, - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0 - )); - x = _mm256_permute4x64_epi64(x, 0xd8); - x2 = _mm256_permute4x64_epi64(x2, 0xd8); - _mm256_storeu_si256((__m256i *) writing, _mm256_permute2f128_si256(x, x2, 0x31)); - _mm256_storeu_si256((__m256i *) out, _mm256_permute2f128_si256(x, x2, 0x20)); - reading += 32; - writing += 16; - out += 32; - } - r0 = R[52]; - r1 = R[53]; - r2 = r0 + r1 * (uint32)4225; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[26] = (uint16) r2; - - reading = (uint16 *) R; - writing = R; - i = 2; - while (i > 0) { - __m256i x, y; - --i; - if (!i) { - reading -= 6; - writing -= 3; - out -= 3; - } - x = _mm256_loadu_si256((__m256i *) reading); - y = x & _mm256_set1_epi32(65535); - x = _mm256_srli_epi32(x, 16); - x = _mm256_mullo_epi32(x, _mm256_set1_epi32(273)); - x = _mm256_add_epi32(y, x); - x = _mm256_shuffle_epi8(x, _mm256_set_epi8( - 12, 8, 4, 0, 12, 8, 4, 0, 14, 13, 10, 9, 6, 5, 2, 1, - 12, 8, 4, 0, 12, 8, 4, 0, 14, 13, 10, 9, 6, 5, 2, 1 - )); - x = _mm256_permute4x64_epi64(x, 0xd8); - _mm_storeu_si128((__m128i *) writing, _mm256_extractf128_si256(x, 0)); - s0 = (uint32) _mm256_extract_epi32(x, 4); - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 = (uint32) _mm256_extract_epi32(x, 6); - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - reading += 16; - writing += 8; - } - R[13] = R[26]; - - for (i = 0; i < 7; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)292; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - - for (i = 0; i < 3; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)334; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - R[3] = R[6]; - - for (i = 0; i < 2; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)436; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - - r0 = R[0]; - r1 = R[1]; - r2 = r0 + r1 * (uint32)743; - *out++ = (unsigned char) r2; - r2 >>= 8; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[0] = (uint16) r2; - - r0 = R[0]; - *out++ = (unsigned char) r0; -} diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_857x1723.h b/src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_857x1723.h deleted file mode 100644 index 82842aea..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_857x1723.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR857_AVX2_CRYPTO_ENCODE_857X1723_H -#define PQCLEAN_NTRULPR857_AVX2_CRYPTO_ENCODE_857X1723_H - -#include -#define PQCLEAN_NTRULPR857_AVX2_crypto_encode_857x1723_STRBYTES 1152 -#define PQCLEAN_NTRULPR857_AVX2_crypto_encode_857x1723_ITEMS 857 -#define PQCLEAN_NTRULPR857_AVX2_crypto_encode_857x1723_ITEMBYTES 2 - -void PQCLEAN_NTRULPR857_AVX2_crypto_encode_857x1723(unsigned char *out, const void *v); -#endif diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_857x1723round.c b/src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_857x1723round.c deleted file mode 100644 index d0e5b304..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_857x1723round.c +++ /dev/null @@ -1,285 +0,0 @@ -#include "crypto_encode_857x1723round.h" -#include -/* auto-generated; do not edit */ - -#define int16 int16_t -#define uint16 uint16_t -#define uint32 uint32_t - -void PQCLEAN_NTRULPR857_AVX2_crypto_encode_857x1723round(unsigned char *out, const void *v) { - const int16 *R0 = v; - /* XXX: caller could overlap R with input */ - uint16 R[429]; - long i; - const uint16 *reading; - uint16 *writing; - uint16 r0, r1; - uint32 r2; - uint32 s0; - - reading = (uint16 *) R0; - writing = R; - i = 54; - while (i > 0) { - __m256i x, y; - --i; - if (!i) { - reading -= 8; - writing -= 4; - out -= 4; - } - x = _mm256_loadu_si256((__m256i *) reading); - x = _mm256_mulhrs_epi16(x, _mm256_set1_epi16(10923)); - x = _mm256_add_epi16(x, _mm256_add_epi16(x, x)); - x = _mm256_add_epi16(x, _mm256_set1_epi16(2583)); - x &= _mm256_set1_epi16(16383); - x = _mm256_mulhi_epi16(x, _mm256_set1_epi16(21846)); - y = x & _mm256_set1_epi32(65535); - x = _mm256_srli_epi32(x, 16); - x = _mm256_mullo_epi32(x, _mm256_set1_epi32(1723)); - x = _mm256_add_epi32(y, x); - x = _mm256_shuffle_epi8(x, _mm256_set_epi8( - 12, 8, 4, 0, 12, 8, 4, 0, 14, 13, 10, 9, 6, 5, 2, 1, - 12, 8, 4, 0, 12, 8, 4, 0, 14, 13, 10, 9, 6, 5, 2, 1 - )); - x = _mm256_permute4x64_epi64(x, 0xd8); - _mm_storeu_si128((__m128i *) writing, _mm256_extractf128_si256(x, 0)); - s0 = (uint32) _mm256_extract_epi32(x, 4); - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 = (uint32) _mm256_extract_epi32(x, 6); - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - reading += 16; - writing += 8; - } - R[428] = (uint16) ((((3 * ((10923 * R0[856] + 16384) >> 15) + 2583) & 16383) * 10923) >> 15); - - reading = (uint16 *) R; - writing = R; - i = 14; - while (i > 0) { - __m256i x, x2, y, y2; - --i; - if (!i) { - reading -= 20; - writing -= 10; - out -= 20; - } - x = _mm256_loadu_si256((__m256i *) (reading + 0)); - x2 = _mm256_loadu_si256((__m256i *) (reading + 16)); - y = x & _mm256_set1_epi32(65535); - y2 = x2 & _mm256_set1_epi32(65535); - x = _mm256_srli_epi32(x, 16); - x2 = _mm256_srli_epi32(x2, 16); - x = _mm256_mullo_epi32(x, _mm256_set1_epi32(11597)); - x2 = _mm256_mullo_epi32(x2, _mm256_set1_epi32(11597)); - x = _mm256_add_epi32(y, x); - x2 = _mm256_add_epi32(y2, x2); - x = _mm256_shuffle_epi8(x, _mm256_set_epi8( - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0, - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0 - )); - x2 = _mm256_shuffle_epi8(x2, _mm256_set_epi8( - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0, - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0 - )); - x = _mm256_permute4x64_epi64(x, 0xd8); - x2 = _mm256_permute4x64_epi64(x2, 0xd8); - _mm256_storeu_si256((__m256i *) writing, _mm256_permute2f128_si256(x, x2, 0x31)); - _mm256_storeu_si256((__m256i *) out, _mm256_permute2f128_si256(x, x2, 0x20)); - reading += 32; - writing += 16; - out += 32; - } - R[214] = R[428]; - - reading = (uint16 *) R; - writing = R; - i = 7; - while (i > 0) { - __m256i x, x2, y, y2; - --i; - if (!i) { - reading -= 10; - writing -= 5; - out -= 10; - } - x = _mm256_loadu_si256((__m256i *) (reading + 0)); - x2 = _mm256_loadu_si256((__m256i *) (reading + 16)); - y = x & _mm256_set1_epi32(65535); - y2 = x2 & _mm256_set1_epi32(65535); - x = _mm256_srli_epi32(x, 16); - x2 = _mm256_srli_epi32(x2, 16); - x = _mm256_mullo_epi32(x, _mm256_set1_epi32(2053)); - x2 = _mm256_mullo_epi32(x2, _mm256_set1_epi32(2053)); - x = _mm256_add_epi32(y, x); - x2 = _mm256_add_epi32(y2, x2); - x = _mm256_shuffle_epi8(x, _mm256_set_epi8( - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0, - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0 - )); - x2 = _mm256_shuffle_epi8(x2, _mm256_set_epi8( - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0, - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0 - )); - x = _mm256_permute4x64_epi64(x, 0xd8); - x2 = _mm256_permute4x64_epi64(x2, 0xd8); - _mm256_storeu_si256((__m256i *) writing, _mm256_permute2f128_si256(x, x2, 0x31)); - _mm256_storeu_si256((__m256i *) out, _mm256_permute2f128_si256(x, x2, 0x20)); - reading += 32; - writing += 16; - out += 32; - } - R[107] = R[214]; - - for (i = 0; i < 53; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)65; - R[i] = (uint16) r2; - } - r0 = R[106]; - r1 = R[107]; - r2 = r0 + r1 * (uint32)65; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[53] = (uint16) r2; - - reading = (uint16 *) R; - writing = R; - i = 2; - while (i > 0) { - __m256i x, x2, y, y2; - --i; - if (!i) { - reading -= 12; - writing -= 6; - out -= 12; - } - x = _mm256_loadu_si256((__m256i *) (reading + 0)); - x2 = _mm256_loadu_si256((__m256i *) (reading + 16)); - y = x & _mm256_set1_epi32(65535); - y2 = x2 & _mm256_set1_epi32(65535); - x = _mm256_srli_epi32(x, 16); - x2 = _mm256_srli_epi32(x2, 16); - x = _mm256_mullo_epi32(x, _mm256_set1_epi32(4225)); - x2 = _mm256_mullo_epi32(x2, _mm256_set1_epi32(4225)); - x = _mm256_add_epi32(y, x); - x2 = _mm256_add_epi32(y2, x2); - x = _mm256_shuffle_epi8(x, _mm256_set_epi8( - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0, - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0 - )); - x2 = _mm256_shuffle_epi8(x2, _mm256_set_epi8( - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0, - 15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0 - )); - x = _mm256_permute4x64_epi64(x, 0xd8); - x2 = _mm256_permute4x64_epi64(x2, 0xd8); - _mm256_storeu_si256((__m256i *) writing, _mm256_permute2f128_si256(x, x2, 0x31)); - _mm256_storeu_si256((__m256i *) out, _mm256_permute2f128_si256(x, x2, 0x20)); - reading += 32; - writing += 16; - out += 32; - } - r0 = R[52]; - r1 = R[53]; - r2 = r0 + r1 * (uint32)4225; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[26] = (uint16) r2; - - reading = (uint16 *) R; - writing = R; - i = 2; - while (i > 0) { - __m256i x, y; - --i; - if (!i) { - reading -= 6; - writing -= 3; - out -= 3; - } - x = _mm256_loadu_si256((__m256i *) reading); - y = x & _mm256_set1_epi32(65535); - x = _mm256_srli_epi32(x, 16); - x = _mm256_mullo_epi32(x, _mm256_set1_epi32(273)); - x = _mm256_add_epi32(y, x); - x = _mm256_shuffle_epi8(x, _mm256_set_epi8( - 12, 8, 4, 0, 12, 8, 4, 0, 14, 13, 10, 9, 6, 5, 2, 1, - 12, 8, 4, 0, 12, 8, 4, 0, 14, 13, 10, 9, 6, 5, 2, 1 - )); - x = _mm256_permute4x64_epi64(x, 0xd8); - _mm_storeu_si128((__m128i *) writing, _mm256_extractf128_si256(x, 0)); - s0 = (uint32) _mm256_extract_epi32(x, 4); - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 = (uint32) _mm256_extract_epi32(x, 6); - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - s0 >>= 8; - *out++ = (unsigned char) s0; - reading += 16; - writing += 8; - } - R[13] = R[26]; - - for (i = 0; i < 7; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)292; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - - for (i = 0; i < 3; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)334; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - R[3] = R[6]; - - for (i = 0; i < 2; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)436; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - - r0 = R[0]; - r1 = R[1]; - r2 = r0 + r1 * (uint32)743; - *out++ = (unsigned char) r2; - r2 >>= 8; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[0] = (uint16) r2; - - r0 = R[0]; - *out++ = (unsigned char) r0; -} diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_857x1723round.h b/src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_857x1723round.h deleted file mode 100644 index c6bcb415..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_857x1723round.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR857_AVX2_CRYPTO_ENCODE_857X1723ROUND_H -#define PQCLEAN_NTRULPR857_AVX2_CRYPTO_ENCODE_857X1723ROUND_H - -#include -#define PQCLEAN_NTRULPR857_AVX2_crypto_encode_857x1723round_STRBYTES 1152 -#define PQCLEAN_NTRULPR857_AVX2_crypto_encode_857x1723round_ITEMS 857 -#define PQCLEAN_NTRULPR857_AVX2_crypto_encode_857x1723round_ITEMBYTES 2 - -void PQCLEAN_NTRULPR857_AVX2_crypto_encode_857x1723round(unsigned char *out, const void *v); -#endif diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_857x3.c b/src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_857x3.c deleted file mode 100644 index c6b7d2dc..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_857x3.c +++ /dev/null @@ -1,64 +0,0 @@ -#include "crypto_encode_857x3.h" -#include -#define uint8 uint8_t - -#define p 857 -#define loops 7 -#define overshoot 10 - -static const union { - uint8 init[32]; - __m256i val; -} lobytes_buf = { .init = { - 255, 0, 255, 0, 255, 0, 255, 0, - 255, 0, 255, 0, 255, 0, 255, 0, - 255, 0, 255, 0, 255, 0, 255, 0, - 255, 0, 255, 0, 255, 0, 255, 0, - } -}; -#define lobytes (lobytes_buf.val) - -void PQCLEAN_NTRULPR857_AVX2_crypto_encode_857x3(unsigned char *s, const void *v) { - const uint8 *f = v; - int loop; - const uint8 *nextf = f + 128 - 4 * overshoot; - unsigned char *nexts = s + 32 - overshoot; - - for (loop = loops; loop > 0; --loop) { - __m256i f0 = _mm256_loadu_si256((const __m256i *) (f + 0)); - __m256i f1 = _mm256_loadu_si256((const __m256i *) (f + 32)); - __m256i f2 = _mm256_loadu_si256((const __m256i *) (f + 64)); - __m256i f3 = _mm256_loadu_si256((const __m256i *) (f + 96)); - f = nextf; - nextf += 128; - - __m256i a0 = _mm256_packus_epi16(f0 & lobytes, f1 & lobytes); - /* 0 2 4 6 8 10 12 14 32 34 36 38 40 42 44 46 */ - /* 16 18 20 22 24 26 28 30 48 50 52 54 56 58 60 62 */ - __m256i a1 = _mm256_packus_epi16(_mm256_srli_epi16(f0, 8), _mm256_srli_epi16(f1, 8)); - /* 1 3 ... */ - __m256i a2 = _mm256_packus_epi16(f2 & lobytes, f3 & lobytes); - __m256i a3 = _mm256_packus_epi16(_mm256_srli_epi16(f2, 8), _mm256_srli_epi16(f3, 8)); - - a0 = _mm256_add_epi8(a0, _mm256_slli_epi16(a1 & _mm256_set1_epi8(63), 2)); - a2 = _mm256_add_epi8(a2, _mm256_slli_epi16(a3 & _mm256_set1_epi8(63), 2)); - - __m256i b0 = _mm256_packus_epi16(a0 & lobytes, a2 & lobytes); - /* 0 4 8 12 32 36 40 44 64 68 72 76 96 100 104 108 */ - /* 16 20 24 28 48 52 56 60 80 84 88 92 112 116 120 124 */ - __m256i b2 = _mm256_packus_epi16(_mm256_srli_epi16(a0, 8), _mm256_srli_epi16(a2, 8)); - /* 2 6 ... */ - - b0 = _mm256_add_epi8(b0, _mm256_slli_epi16(b2 & _mm256_set1_epi8(15), 4)); - - b0 = _mm256_permutevar8x32_epi32(b0, _mm256_set_epi32(7, 3, 6, 2, 5, 1, 4, 0)); - - b0 = _mm256_add_epi8(b0, _mm256_set1_epi8(85)); - - _mm256_storeu_si256((__m256i *) s, b0); - s = nexts; - nexts += 32; - } - - *s++ = *f++ + 1; -} diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_857x3.h b/src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_857x3.h deleted file mode 100644 index b6ba7814..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_857x3.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR857_AVX2_CRYPTO_ENCODE_857X3_H -#define PQCLEAN_NTRULPR857_AVX2_CRYPTO_ENCODE_857X3_H - -#include -#define PQCLEAN_NTRULPR857_AVX2_crypto_encode_857x3_STRBYTES 215 -#define PQCLEAN_NTRULPR857_AVX2_crypto_encode_857x3_ITEMS 857 -#define PQCLEAN_NTRULPR857_AVX2_crypto_encode_857x3_ITEMBYTES 1 - -void PQCLEAN_NTRULPR857_AVX2_crypto_encode_857x3(unsigned char *s, const void *v); -#endif diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_857xint16.c b/src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_857xint16.c deleted file mode 100644 index 61cda598..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_857xint16.c +++ /dev/null @@ -1,13 +0,0 @@ -#include "crypto_encode_857xint16.h" - - -void PQCLEAN_NTRULPR857_AVX2_crypto_encode_857xint16(unsigned char *s, const void *v) { - const uint16_t *x = v; - int i; - - for (i = 0; i < 857; ++i) { - uint16_t u = *x++; - *s++ = (unsigned char) u; - *s++ = (unsigned char) (u >> 8); - } -} diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_857xint16.h b/src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_857xint16.h deleted file mode 100644 index fea51c59..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_encode_857xint16.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR857_AVX2_CRYPTO_ENCODE_857XINT16_H -#define PQCLEAN_NTRULPR857_AVX2_CRYPTO_ENCODE_857XINT16_H - -#include -#define PQCLEAN_NTRULPR857_AVX2_crypto_encode_857xint16_STRBYTES 1714 -#define PQCLEAN_NTRULPR857_AVX2_crypto_encode_857xint16_ITEMBYTES 2 -#define PQCLEAN_NTRULPR857_AVX2_crypto_encode_857xint16_ITEMS 857 - -void PQCLEAN_NTRULPR857_AVX2_crypto_encode_857xint16(unsigned char *s, const void *v); -#endif diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_sort_int32.c b/src/kem/ntru_prime/ntrulpr857/avx2/crypto_sort_int32.c deleted file mode 100644 index 0b82a5d1..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_sort_int32.c +++ /dev/null @@ -1,1215 +0,0 @@ -#include "crypto_sort_int32.h" -#include - -#define int32 int32_t - -typedef __m256i int32x8; -#define int32x8_load(z) _mm256_loadu_si256((__m256i *) (z)) -#define int32x8_store(z,i) _mm256_storeu_si256((__m256i *) (z),(i)) -#define int32x8_min _mm256_min_epi32 -#define int32x8_max _mm256_max_epi32 - -#define int32x8_MINMAX(a,b) \ - do { \ - int32x8 c = int32x8_min((a),(b)); \ - (b) = int32x8_max((a),(b)); \ - (a) = c; \ - } while(0) - -static inline void int32_MINMAX(int32 *a, int32 *b) { - int32 ab = *b ^ *a; - int32 c = (int32)((int64_t) * b - (int64_t) * a); - c ^= ab & (c ^ *b); - c >>= 31; - c &= ab; - *a ^= c; - *b ^= c; -} - -static void minmax_vector(int32 *x, int32 *y, long long n) { - if (n < 8) { - while (n > 0) { - int32_MINMAX(x, y); - ++x; - ++y; - --n; - } - return; - } - if (n & 7) { - int32x8 x0 = int32x8_load(x + n - 8); - int32x8 y0 = int32x8_load(y + n - 8); - int32x8_MINMAX(x0, y0); - int32x8_store(x + n - 8, x0); - int32x8_store(y + n - 8, y0); - n &= ~7; - } - do { - int32x8 x0 = int32x8_load(x); - int32x8 y0 = int32x8_load(y); - int32x8_MINMAX(x0, y0); - int32x8_store(x, x0); - int32x8_store(y, y0); - x += 8; - y += 8; - n -= 8; - } while (n); -} - -/* stages 8,4,2,1 of size-16 bitonic merging */ -static void merge16_finish(int32 *x, int32x8 x0, int32x8 x1, int flagdown) { - int32x8 b0, b1, c0, c1, mask; - - int32x8_MINMAX(x0, x1); - - b0 = _mm256_permute2x128_si256(x0, x1, 0x20); /* A0123B0123 */ - b1 = _mm256_permute2x128_si256(x0, x1, 0x31); /* A4567B4567 */ - - int32x8_MINMAX(b0, b1); - - c0 = _mm256_unpacklo_epi64(b0, b1); /* A0145B0145 */ - c1 = _mm256_unpackhi_epi64(b0, b1); /* A2367B2367 */ - - int32x8_MINMAX(c0, c1); - - b0 = _mm256_unpacklo_epi32(c0, c1); /* A0213B0213 */ - b1 = _mm256_unpackhi_epi32(c0, c1); /* A4657B4657 */ - - c0 = _mm256_unpacklo_epi64(b0, b1); /* A0246B0246 */ - c1 = _mm256_unpackhi_epi64(b0, b1); /* A1357B1357 */ - - int32x8_MINMAX(c0, c1); - - b0 = _mm256_unpacklo_epi32(c0, c1); /* A0123B0123 */ - b1 = _mm256_unpackhi_epi32(c0, c1); /* A4567B4567 */ - - x0 = _mm256_permute2x128_si256(b0, b1, 0x20); /* A01234567 */ - x1 = _mm256_permute2x128_si256(b0, b1, 0x31); /* A01234567 */ - - if (flagdown) { - mask = _mm256_set1_epi32(-1); - x0 ^= mask; - x1 ^= mask; - } - - int32x8_store(&x[0], x0); - int32x8_store(&x[8], x1); -} - -/* stages 64,32 of bitonic merging; n is multiple of 128 */ -static void int32_twostages_32(int32 *x, long long n) { - long long i; - - while (n > 0) { - for (i = 0; i < 32; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + 32]); - int32x8 x2 = int32x8_load(&x[i + 64]); - int32x8 x3 = int32x8_load(&x[i + 96]); - - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - - int32x8_store(&x[i], x0); - int32x8_store(&x[i + 32], x1); - int32x8_store(&x[i + 64], x2); - int32x8_store(&x[i + 96], x3); - } - x += 128; - n -= 128; - } -} - -/* stages 4q,2q,q of bitonic merging */ -static long long int32_threestages(int32 *x, long long n, long long q) { - long long k, i; - - for (k = 0; k + 8 * q <= n; k += 8 * q) { - for (i = k; i < k + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8 x4 = int32x8_load(&x[i + 4 * q]); - int32x8 x5 = int32x8_load(&x[i + 5 * q]); - int32x8 x6 = int32x8_load(&x[i + 6 * q]); - int32x8 x7 = int32x8_load(&x[i + 7 * q]); - - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - int32x8_store(&x[i + 4 * q], x4); - int32x8_store(&x[i + 5 * q], x5); - int32x8_store(&x[i + 6 * q], x6); - int32x8_store(&x[i + 7 * q], x7); - } - } - - return k; -} - -/* n is a power of 2; n >= 8; if n == 8 then flagdown */ -// NOLINTNEXTLINE(google-readability-function-size) -static void int32_sort_2power(int32 *x, long long n, int flagdown) { - long long p, q, i, j, k; - int32x8 mask; - - if (n == 8) { - int32 x0 = x[0]; - int32 x1 = x[1]; - int32 x2 = x[2]; - int32 x3 = x[3]; - int32 x4 = x[4]; - int32 x5 = x[5]; - int32 x6 = x[6]; - int32 x7 = x[7]; - - /* odd-even sort instead of bitonic sort */ - - int32_MINMAX(&x1, &x0); - int32_MINMAX(&x3, &x2); - int32_MINMAX(&x2, &x0); - int32_MINMAX(&x3, &x1); - int32_MINMAX(&x2, &x1); - - int32_MINMAX(&x5, &x4); - int32_MINMAX(&x7, &x6); - int32_MINMAX(&x6, &x4); - int32_MINMAX(&x7, &x5); - int32_MINMAX(&x6, &x5); - - int32_MINMAX(&x4, &x0); - int32_MINMAX(&x6, &x2); - int32_MINMAX(&x4, &x2); - - int32_MINMAX(&x5, &x1); - int32_MINMAX(&x7, &x3); - int32_MINMAX(&x5, &x3); - - int32_MINMAX(&x2, &x1); - int32_MINMAX(&x4, &x3); - int32_MINMAX(&x6, &x5); - - x[0] = x0; - x[1] = x1; - x[2] = x2; - x[3] = x3; - x[4] = x4; - x[5] = x5; - x[6] = x6; - x[7] = x7; - return; - } - - if (n == 16) { - int32x8 x0, x1, b0, b1, c0, c1; - - x0 = int32x8_load(&x[0]); - x1 = int32x8_load(&x[8]); - - mask = _mm256_set_epi32(0, 0, -1, -1, 0, 0, -1, -1); - - x0 ^= mask; /* A01234567 */ - x1 ^= mask; /* B01234567 */ - - b0 = _mm256_unpacklo_epi32(x0, x1); /* AB0AB1AB4AB5 */ - b1 = _mm256_unpackhi_epi32(x0, x1); /* AB2AB3AB6AB7 */ - - c0 = _mm256_unpacklo_epi64(b0, b1); /* AB0AB2AB4AB6 */ - c1 = _mm256_unpackhi_epi64(b0, b1); /* AB1AB3AB5AB7 */ - - int32x8_MINMAX(c0, c1); - - mask = _mm256_set_epi32(0, 0, -1, -1, -1, -1, 0, 0); - c0 ^= mask; - c1 ^= mask; - - b0 = _mm256_unpacklo_epi32(c0, c1); /* A01B01A45B45 */ - b1 = _mm256_unpackhi_epi32(c0, c1); /* A23B23A67B67 */ - - int32x8_MINMAX(b0, b1); - - x0 = _mm256_unpacklo_epi64(b0, b1); /* A01234567 */ - x1 = _mm256_unpackhi_epi64(b0, b1); /* B01234567 */ - - b0 = _mm256_unpacklo_epi32(x0, x1); /* AB0AB1AB4AB5 */ - b1 = _mm256_unpackhi_epi32(x0, x1); /* AB2AB3AB6AB7 */ - - c0 = _mm256_unpacklo_epi64(b0, b1); /* AB0AB2AB4AB6 */ - c1 = _mm256_unpackhi_epi64(b0, b1); /* AB1AB3AB5AB7 */ - - int32x8_MINMAX(c0, c1); - - b0 = _mm256_unpacklo_epi32(c0, c1); /* A01B01A45B45 */ - b1 = _mm256_unpackhi_epi32(c0, c1); /* A23B23A67B67 */ - - b0 ^= mask; - b1 ^= mask; - - c0 = _mm256_permute2x128_si256(b0, b1, 0x20); /* A01B01A23B23 */ - c1 = _mm256_permute2x128_si256(b0, b1, 0x31); /* A45B45A67B67 */ - - int32x8_MINMAX(c0, c1); - - b0 = _mm256_permute2x128_si256(c0, c1, 0x20); /* A01B01A45B45 */ - b1 = _mm256_permute2x128_si256(c0, c1, 0x31); /* A23B23A67B67 */ - - int32x8_MINMAX(b0, b1); - - x0 = _mm256_unpacklo_epi64(b0, b1); /* A01234567 */ - x1 = _mm256_unpackhi_epi64(b0, b1); /* B01234567 */ - - b0 = _mm256_unpacklo_epi32(x0, x1); /* AB0AB1AB4AB5 */ - b1 = _mm256_unpackhi_epi32(x0, x1); /* AB2AB3AB6AB7 */ - - c0 = _mm256_unpacklo_epi64(b0, b1); /* AB0AB2AB4AB6 */ - c1 = _mm256_unpackhi_epi64(b0, b1); /* AB1AB3AB5AB7 */ - - int32x8_MINMAX(c0, c1); - - b0 = _mm256_unpacklo_epi32(c0, c1); /* A01B01A45B45 */ - b1 = _mm256_unpackhi_epi32(c0, c1); /* A23B23A67B67 */ - - x0 = _mm256_unpacklo_epi64(b0, b1); /* A01234567 */ - x1 = _mm256_unpackhi_epi64(b0, b1); /* B01234567 */ - - mask = _mm256_set1_epi32(-1); - if (flagdown) { - x1 ^= mask; - } else { - x0 ^= mask; - } - - merge16_finish(x, x0, x1, flagdown); - return; - } - - if (n == 32) { - int32x8 x0, x1, x2, x3; - - int32_sort_2power(x, 16, 1); - int32_sort_2power(x + 16, 16, 0); - - x0 = int32x8_load(&x[0]); - x1 = int32x8_load(&x[8]); - x2 = int32x8_load(&x[16]); - x3 = int32x8_load(&x[24]); - - if (flagdown) { - mask = _mm256_set1_epi32(-1); - x0 ^= mask; - x1 ^= mask; - x2 ^= mask; - x3 ^= mask; - } - - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - - merge16_finish(x, x0, x1, flagdown); - merge16_finish(x + 16, x2, x3, flagdown); - return; - } - - p = n >> 3; - for (i = 0; i < p; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x2 = int32x8_load(&x[i + 2 * p]); - int32x8 x4 = int32x8_load(&x[i + 4 * p]); - int32x8 x6 = int32x8_load(&x[i + 6 * p]); - - /* odd-even stage instead of bitonic stage */ - - int32x8_MINMAX(x4, x0); - int32x8_MINMAX(x6, x2); - int32x8_MINMAX(x2, x0); - int32x8_MINMAX(x6, x4); - int32x8_MINMAX(x2, x4); - - int32x8_store(&x[i], x0); - int32x8_store(&x[i + 2 * p], x2); - int32x8_store(&x[i + 4 * p], x4); - int32x8_store(&x[i + 6 * p], x6); - - int32x8 x1 = int32x8_load(&x[i + p]); - int32x8 x3 = int32x8_load(&x[i + 3 * p]); - int32x8 x5 = int32x8_load(&x[i + 5 * p]); - int32x8 x7 = int32x8_load(&x[i + 7 * p]); - - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x3, x7); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x5, x3); - - int32x8_store(&x[i + p], x1); - int32x8_store(&x[i + 3 * p], x3); - int32x8_store(&x[i + 5 * p], x5); - int32x8_store(&x[i + 7 * p], x7); - } - - if (n >= 128) { - int flip, flipflip; - - mask = _mm256_set1_epi32(-1); - - for (j = 0; j < n; j += 32) { - int32x8 x0 = int32x8_load(&x[j]); - int32x8 x1 = int32x8_load(&x[j + 16]); - x0 ^= mask; - x1 ^= mask; - int32x8_store(&x[j], x0); - int32x8_store(&x[j + 16], x1); - } - - p = 8; - for (;;) { /* for p in [8, 16, ..., n/16] */ - q = p >> 1; - while (q >= 128) { - int32_threestages(x, n, q >> 2); - q >>= 3; - } - if (q == 64) { - int32_twostages_32(x, n); - q = 16; - } - if (q == 32) { - q = 8; - for (k = 0; k < n; k += 8 * q) { - for (i = k; i < k + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8 x4 = int32x8_load(&x[i + 4 * q]); - int32x8 x5 = int32x8_load(&x[i + 5 * q]); - int32x8 x6 = int32x8_load(&x[i + 6 * q]); - int32x8 x7 = int32x8_load(&x[i + 7 * q]); - - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - int32x8_store(&x[i + 4 * q], x4); - int32x8_store(&x[i + 5 * q], x5); - int32x8_store(&x[i + 6 * q], x6); - int32x8_store(&x[i + 7 * q], x7); - } - } - q = 4; - } - if (q == 16) { - q = 8; - for (k = 0; k < n; k += 4 * q) { - for (i = k; i < k + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - } - } - q = 4; - } - if (q == 8) { - for (k = 0; k < n; k += q + q) { - int32x8 x0 = int32x8_load(&x[k]); - int32x8 x1 = int32x8_load(&x[k + q]); - - int32x8_MINMAX(x0, x1); - - int32x8_store(&x[k], x0); - int32x8_store(&x[k + q], x1); - } - } - - q = n >> 3; - flip = 0; - if (p << 1 == q) { - flip = 1; - } - flipflip = 1 - flip; - for (j = 0; j < q; j += p + p) { - for (k = j; k < j + p + p; k += p) { - for (i = k; i < k + p; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8 x4 = int32x8_load(&x[i + 4 * q]); - int32x8 x5 = int32x8_load(&x[i + 5 * q]); - int32x8 x6 = int32x8_load(&x[i + 6 * q]); - int32x8 x7 = int32x8_load(&x[i + 7 * q]); - - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - - if (flip) { - x0 ^= mask; - x1 ^= mask; - x2 ^= mask; - x3 ^= mask; - x4 ^= mask; - x5 ^= mask; - x6 ^= mask; - x7 ^= mask; - } - - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - int32x8_store(&x[i + 4 * q], x4); - int32x8_store(&x[i + 5 * q], x5); - int32x8_store(&x[i + 6 * q], x6); - int32x8_store(&x[i + 7 * q], x7); - } - flip ^= 1; - } - flip ^= flipflip; - } - - if (p << 4 == n) { - break; - } - p <<= 1; - } - } - - for (p = 4; p >= 1; p >>= 1) { - int32 *z = x; - int32 *target = x + n; - if (p == 4) { - mask = _mm256_set_epi32(0, 0, 0, 0, -1, -1, -1, -1); - while (z != target) { - int32x8 x0 = int32x8_load(&z[0]); - int32x8 x1 = int32x8_load(&z[8]); - x0 ^= mask; - x1 ^= mask; - int32x8_store(&z[0], x0); - int32x8_store(&z[8], x1); - z += 16; - } - } else if (p == 2) { - mask = _mm256_set_epi32(0, 0, -1, -1, -1, -1, 0, 0); - while (z != target) { - int32x8 x0 = int32x8_load(&z[0]); - int32x8 x1 = int32x8_load(&z[8]); - x0 ^= mask; - x1 ^= mask; - int32x8 b0 = _mm256_permute2x128_si256(x0, x1, 0x20); - int32x8 b1 = _mm256_permute2x128_si256(x0, x1, 0x31); - int32x8_MINMAX(b0, b1); - int32x8 c0 = _mm256_permute2x128_si256(b0, b1, 0x20); - int32x8 c1 = _mm256_permute2x128_si256(b0, b1, 0x31); - int32x8_store(&z[0], c0); - int32x8_store(&z[8], c1); - z += 16; - } - } else { /* p == 1 */ - mask = _mm256_set_epi32(0, -1, -1, 0, 0, -1, -1, 0); - while (z != target) { - int32x8 x0 = int32x8_load(&z[0]); - int32x8 x1 = int32x8_load(&z[8]); - x0 ^= mask; - x1 ^= mask; - int32x8 b0 = _mm256_permute2x128_si256(x0, x1, 0x20); /* A0123B0123 */ - int32x8 b1 = _mm256_permute2x128_si256(x0, x1, 0x31); /* A4567B4567 */ - int32x8 c0 = _mm256_unpacklo_epi64(b0, b1); /* A0145B0145 */ - int32x8 c1 = _mm256_unpackhi_epi64(b0, b1); /* A2367B2367 */ - int32x8_MINMAX(c0, c1); - int32x8 d0 = _mm256_unpacklo_epi64(c0, c1); /* A0123B0123 */ - int32x8 d1 = _mm256_unpackhi_epi64(c0, c1); /* A4567B4567 */ - int32x8_MINMAX(d0, d1); - int32x8 e0 = _mm256_permute2x128_si256(d0, d1, 0x20); - int32x8 e1 = _mm256_permute2x128_si256(d0, d1, 0x31); - int32x8_store(&z[0], e0); - int32x8_store(&z[8], e1); - z += 16; - } - } - - q = n >> 4; - while (q >= 128 || q == 32) { - int32_threestages(x, n, q >> 2); - q >>= 3; - } - while (q >= 16) { - q >>= 1; - for (j = 0; j < n; j += 4 * q) { - for (k = j; k < j + q; k += 8) { - int32x8 x0 = int32x8_load(&x[k]); - int32x8 x1 = int32x8_load(&x[k + q]); - int32x8 x2 = int32x8_load(&x[k + 2 * q]); - int32x8 x3 = int32x8_load(&x[k + 3 * q]); - - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - - int32x8_store(&x[k], x0); - int32x8_store(&x[k + q], x1); - int32x8_store(&x[k + 2 * q], x2); - int32x8_store(&x[k + 3 * q], x3); - } - } - q >>= 1; - } - if (q == 8) { - for (j = 0; j < n; j += 2 * q) { - int32x8 x0 = int32x8_load(&x[j]); - int32x8 x1 = int32x8_load(&x[j + q]); - - int32x8_MINMAX(x0, x1); - - int32x8_store(&x[j], x0); - int32x8_store(&x[j + q], x1); - } - } - - q = n >> 3; - for (k = 0; k < q; k += 8) { - int32x8 x0 = int32x8_load(&x[k]); - int32x8 x1 = int32x8_load(&x[k + q]); - int32x8 x2 = int32x8_load(&x[k + 2 * q]); - int32x8 x3 = int32x8_load(&x[k + 3 * q]); - int32x8 x4 = int32x8_load(&x[k + 4 * q]); - int32x8 x5 = int32x8_load(&x[k + 5 * q]); - int32x8 x6 = int32x8_load(&x[k + 6 * q]); - int32x8 x7 = int32x8_load(&x[k + 7 * q]); - - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - - int32x8_store(&x[k], x0); - int32x8_store(&x[k + q], x1); - int32x8_store(&x[k + 2 * q], x2); - int32x8_store(&x[k + 3 * q], x3); - int32x8_store(&x[k + 4 * q], x4); - int32x8_store(&x[k + 5 * q], x5); - int32x8_store(&x[k + 6 * q], x6); - int32x8_store(&x[k + 7 * q], x7); - } - } - - /* everything is still masked with _mm256_set_epi32(0,-1,0,-1,0,-1,0,-1); */ - mask = _mm256_set1_epi32(-1); - - for (i = 0; i < n; i += 64) { - int32x8 a0 = int32x8_load(&x[i]); - int32x8 a1 = int32x8_load(&x[i + 8]); - int32x8 a2 = int32x8_load(&x[i + 16]); - int32x8 a3 = int32x8_load(&x[i + 24]); - int32x8 a4 = int32x8_load(&x[i + 32]); - int32x8 a5 = int32x8_load(&x[i + 40]); - int32x8 a6 = int32x8_load(&x[i + 48]); - int32x8 a7 = int32x8_load(&x[i + 56]); - - int32x8 b0 = _mm256_unpacklo_epi32(a0, a1); /* AB0AB1AB4AB5 */ - int32x8 b1 = _mm256_unpackhi_epi32(a0, a1); /* AB2AB3AB6AB7 */ - int32x8 b2 = _mm256_unpacklo_epi32(a2, a3); /* CD0CD1CD4CD5 */ - int32x8 b3 = _mm256_unpackhi_epi32(a2, a3); /* CD2CD3CD6CD7 */ - int32x8 b4 = _mm256_unpacklo_epi32(a4, a5); /* EF0EF1EF4EF5 */ - int32x8 b5 = _mm256_unpackhi_epi32(a4, a5); /* EF2EF3EF6EF7 */ - int32x8 b6 = _mm256_unpacklo_epi32(a6, a7); /* GH0GH1GH4GH5 */ - int32x8 b7 = _mm256_unpackhi_epi32(a6, a7); /* GH2GH3GH6GH7 */ - - int32x8 c0 = _mm256_unpacklo_epi64(b0, b2); /* ABCD0ABCD4 */ - int32x8 c1 = _mm256_unpacklo_epi64(b1, b3); /* ABCD2ABCD6 */ - int32x8 c2 = _mm256_unpackhi_epi64(b0, b2); /* ABCD1ABCD5 */ - int32x8 c3 = _mm256_unpackhi_epi64(b1, b3); /* ABCD3ABCD7 */ - int32x8 c4 = _mm256_unpacklo_epi64(b4, b6); /* EFGH0EFGH4 */ - int32x8 c5 = _mm256_unpacklo_epi64(b5, b7); /* EFGH2EFGH6 */ - int32x8 c6 = _mm256_unpackhi_epi64(b4, b6); /* EFGH1EFGH5 */ - int32x8 c7 = _mm256_unpackhi_epi64(b5, b7); /* EFGH3EFGH7 */ - - if (flagdown) { - c2 ^= mask; - c3 ^= mask; - c6 ^= mask; - c7 ^= mask; - } else { - c0 ^= mask; - c1 ^= mask; - c4 ^= mask; - c5 ^= mask; - } - - int32x8 d0 = _mm256_permute2x128_si256(c0, c4, 0x20); /* ABCDEFGH0 */ - int32x8 d1 = _mm256_permute2x128_si256(c2, c6, 0x20); /* ABCDEFGH1 */ - int32x8 d2 = _mm256_permute2x128_si256(c1, c5, 0x20); /* ABCDEFGH2 */ - int32x8 d3 = _mm256_permute2x128_si256(c3, c7, 0x20); /* ABCDEFGH5 */ - int32x8 d4 = _mm256_permute2x128_si256(c0, c4, 0x31); /* ABCDEFGH4 */ - int32x8 d5 = _mm256_permute2x128_si256(c2, c6, 0x31); /* ABCDEFGH3 */ - int32x8 d6 = _mm256_permute2x128_si256(c1, c5, 0x31); /* ABCDEFGH6 */ - int32x8 d7 = _mm256_permute2x128_si256(c3, c7, 0x31); /* ABCDEFGH7 */ - - int32x8_MINMAX(d0, d1); - int32x8_MINMAX(d2, d3); - int32x8_MINMAX(d4, d5); - int32x8_MINMAX(d6, d7); - int32x8_MINMAX(d0, d2); - int32x8_MINMAX(d1, d3); - int32x8_MINMAX(d4, d6); - int32x8_MINMAX(d5, d7); - int32x8_MINMAX(d0, d4); - int32x8_MINMAX(d1, d5); - int32x8_MINMAX(d2, d6); - int32x8_MINMAX(d3, d7); - - int32x8 e0 = _mm256_unpacklo_epi32(d0, d1); - int32x8 e1 = _mm256_unpackhi_epi32(d0, d1); - int32x8 e2 = _mm256_unpacklo_epi32(d2, d3); - int32x8 e3 = _mm256_unpackhi_epi32(d2, d3); - int32x8 e4 = _mm256_unpacklo_epi32(d4, d5); - int32x8 e5 = _mm256_unpackhi_epi32(d4, d5); - int32x8 e6 = _mm256_unpacklo_epi32(d6, d7); - int32x8 e7 = _mm256_unpackhi_epi32(d6, d7); - - int32x8 f0 = _mm256_unpacklo_epi64(e0, e2); - int32x8 f1 = _mm256_unpacklo_epi64(e1, e3); - int32x8 f2 = _mm256_unpackhi_epi64(e0, e2); - int32x8 f3 = _mm256_unpackhi_epi64(e1, e3); - int32x8 f4 = _mm256_unpacklo_epi64(e4, e6); - int32x8 f5 = _mm256_unpacklo_epi64(e5, e7); - int32x8 f6 = _mm256_unpackhi_epi64(e4, e6); - int32x8 f7 = _mm256_unpackhi_epi64(e5, e7); - - int32x8 g0 = _mm256_permute2x128_si256(f0, f4, 0x20); - int32x8 g1 = _mm256_permute2x128_si256(f2, f6, 0x20); - int32x8 g2 = _mm256_permute2x128_si256(f1, f5, 0x20); - int32x8 g3 = _mm256_permute2x128_si256(f3, f7, 0x20); - int32x8 g4 = _mm256_permute2x128_si256(f0, f4, 0x31); - int32x8 g5 = _mm256_permute2x128_si256(f2, f6, 0x31); - int32x8 g6 = _mm256_permute2x128_si256(f1, f5, 0x31); - int32x8 g7 = _mm256_permute2x128_si256(f3, f7, 0x31); - - int32x8_store(&x[i], g0); - int32x8_store(&x[i + 8], g1); - int32x8_store(&x[i + 16], g2); - int32x8_store(&x[i + 24], g3); - int32x8_store(&x[i + 32], g4); - int32x8_store(&x[i + 40], g5); - int32x8_store(&x[i + 48], g6); - int32x8_store(&x[i + 56], g7); - } - - q = n >> 4; - while (q >= 128 || q == 32) { - q >>= 2; - for (j = 0; j < n; j += 8 * q) { - for (i = j; i < j + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8 x4 = int32x8_load(&x[i + 4 * q]); - int32x8 x5 = int32x8_load(&x[i + 5 * q]); - int32x8 x6 = int32x8_load(&x[i + 6 * q]); - int32x8 x7 = int32x8_load(&x[i + 7 * q]); - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - int32x8_store(&x[i + 4 * q], x4); - int32x8_store(&x[i + 5 * q], x5); - int32x8_store(&x[i + 6 * q], x6); - int32x8_store(&x[i + 7 * q], x7); - } - } - q >>= 1; - } - while (q >= 16) { - q >>= 1; - for (j = 0; j < n; j += 4 * q) { - for (i = j; i < j + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - } - } - q >>= 1; - } - if (q == 8) { - for (j = 0; j < n; j += q + q) { - int32x8 x0 = int32x8_load(&x[j]); - int32x8 x1 = int32x8_load(&x[j + q]); - int32x8_MINMAX(x0, x1); - int32x8_store(&x[j], x0); - int32x8_store(&x[j + q], x1); - } - } - - q = n >> 3; - for (i = 0; i < q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8 x4 = int32x8_load(&x[i + 4 * q]); - int32x8 x5 = int32x8_load(&x[i + 5 * q]); - int32x8 x6 = int32x8_load(&x[i + 6 * q]); - int32x8 x7 = int32x8_load(&x[i + 7 * q]); - - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - - int32x8 b0 = _mm256_unpacklo_epi32(x0, x4); /* AE0AE1AE4AE5 */ - int32x8 b1 = _mm256_unpackhi_epi32(x0, x4); /* AE2AE3AE6AE7 */ - int32x8 b2 = _mm256_unpacklo_epi32(x1, x5); /* BF0BF1BF4BF5 */ - int32x8 b3 = _mm256_unpackhi_epi32(x1, x5); /* BF2BF3BF6BF7 */ - int32x8 b4 = _mm256_unpacklo_epi32(x2, x6); /* CG0CG1CG4CG5 */ - int32x8 b5 = _mm256_unpackhi_epi32(x2, x6); /* CG2CG3CG6CG7 */ - int32x8 b6 = _mm256_unpacklo_epi32(x3, x7); /* DH0DH1DH4DH5 */ - int32x8 b7 = _mm256_unpackhi_epi32(x3, x7); /* DH2DH3DH6DH7 */ - - int32x8 c0 = _mm256_unpacklo_epi64(b0, b4); /* AECG0AECG4 */ - int32x8 c1 = _mm256_unpacklo_epi64(b1, b5); /* AECG2AECG6 */ - int32x8 c2 = _mm256_unpackhi_epi64(b0, b4); /* AECG1AECG5 */ - int32x8 c3 = _mm256_unpackhi_epi64(b1, b5); /* AECG3AECG7 */ - int32x8 c4 = _mm256_unpacklo_epi64(b2, b6); /* BFDH0BFDH4 */ - int32x8 c5 = _mm256_unpacklo_epi64(b3, b7); /* BFDH2BFDH6 */ - int32x8 c6 = _mm256_unpackhi_epi64(b2, b6); /* BFDH1BFDH5 */ - int32x8 c7 = _mm256_unpackhi_epi64(b3, b7); /* BFDH3BFDH7 */ - - int32x8 d0 = _mm256_permute2x128_si256(c0, c4, 0x20); /* AECGBFDH0 */ - int32x8 d1 = _mm256_permute2x128_si256(c1, c5, 0x20); /* AECGBFDH2 */ - int32x8 d2 = _mm256_permute2x128_si256(c2, c6, 0x20); /* AECGBFDH1 */ - int32x8 d3 = _mm256_permute2x128_si256(c3, c7, 0x20); /* AECGBFDH3 */ - int32x8 d4 = _mm256_permute2x128_si256(c0, c4, 0x31); /* AECGBFDH4 */ - int32x8 d5 = _mm256_permute2x128_si256(c1, c5, 0x31); /* AECGBFDH6 */ - int32x8 d6 = _mm256_permute2x128_si256(c2, c6, 0x31); /* AECGBFDH5 */ - int32x8 d7 = _mm256_permute2x128_si256(c3, c7, 0x31); /* AECGBFDH7 */ - - if (flagdown) { - d0 ^= mask; - d1 ^= mask; - d2 ^= mask; - d3 ^= mask; - d4 ^= mask; - d5 ^= mask; - d6 ^= mask; - d7 ^= mask; - } - - int32x8_store(&x[i], d0); - int32x8_store(&x[i + q], d4); - int32x8_store(&x[i + 2 * q], d1); - int32x8_store(&x[i + 3 * q], d5); - int32x8_store(&x[i + 4 * q], d2); - int32x8_store(&x[i + 5 * q], d6); - int32x8_store(&x[i + 6 * q], d3); - int32x8_store(&x[i + 7 * q], d7); - } -} - -static void int32_sort(int32 *x, long long n) { - long long q, i, j; - - if (n <= 8) { - if (n == 8) { - int32_MINMAX(&x[0], &x[1]); - int32_MINMAX(&x[1], &x[2]); - int32_MINMAX(&x[2], &x[3]); - int32_MINMAX(&x[3], &x[4]); - int32_MINMAX(&x[4], &x[5]); - int32_MINMAX(&x[5], &x[6]); - int32_MINMAX(&x[6], &x[7]); - } - if (n >= 7) { - int32_MINMAX(&x[0], &x[1]); - int32_MINMAX(&x[1], &x[2]); - int32_MINMAX(&x[2], &x[3]); - int32_MINMAX(&x[3], &x[4]); - int32_MINMAX(&x[4], &x[5]); - int32_MINMAX(&x[5], &x[6]); - } - if (n >= 6) { - int32_MINMAX(&x[0], &x[1]); - int32_MINMAX(&x[1], &x[2]); - int32_MINMAX(&x[2], &x[3]); - int32_MINMAX(&x[3], &x[4]); - int32_MINMAX(&x[4], &x[5]); - } - if (n >= 5) { - int32_MINMAX(&x[0], &x[1]); - int32_MINMAX(&x[1], &x[2]); - int32_MINMAX(&x[2], &x[3]); - int32_MINMAX(&x[3], &x[4]); - } - if (n >= 4) { - int32_MINMAX(&x[0], &x[1]); - int32_MINMAX(&x[1], &x[2]); - int32_MINMAX(&x[2], &x[3]); - } - if (n >= 3) { - int32_MINMAX(&x[0], &x[1]); - int32_MINMAX(&x[1], &x[2]); - } - if (n >= 2) { - int32_MINMAX(&x[0], &x[1]); - } - return; - } - - if (!(n & (n - 1))) { - int32_sort_2power(x, n, 0); - return; - } - - q = 8; - while (q < n - q) { - q += q; - } - /* n > q >= 8 */ - - if (q <= 128) { /* n <= 256 */ - int32x8 y[32]; - for (i = q >> 3; i < q >> 2; ++i) { - y[i] = _mm256_set1_epi32(0x7fffffff); - } - for (i = 0; i < n; ++i) { - ((int32 *) y)[i] = x[i]; - } - int32_sort_2power((int32 *) y, 2 * q, 0); - for (i = 0; i < n; ++i) { - x[i] = ((int32 *) y)[i]; - } - return; - } - - int32_sort_2power(x, q, 1); - int32_sort(x + q, n - q); - - while (q >= 64) { - q >>= 2; - j = int32_threestages(x, n, q); - minmax_vector(x + j, x + j + 4 * q, n - 4 * q - j); - if (j + 4 * q <= n) { - for (i = j; i < j + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8 x2 = int32x8_load(&x[i + 2 * q]); - int32x8 x3 = int32x8_load(&x[i + 3 * q]); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - int32x8_store(&x[i + 2 * q], x2); - int32x8_store(&x[i + 3 * q], x3); - } - j += 4 * q; - } - minmax_vector(x + j, x + j + 2 * q, n - 2 * q - j); - if (j + 2 * q <= n) { - for (i = j; i < j + q; i += 8) { - int32x8 x0 = int32x8_load(&x[i]); - int32x8 x1 = int32x8_load(&x[i + q]); - int32x8_MINMAX(x0, x1); - int32x8_store(&x[i], x0); - int32x8_store(&x[i + q], x1); - } - j += 2 * q; - } - minmax_vector(x + j, x + j + q, n - q - j); - q >>= 1; - } - if (q == 32) { - j = 0; - for (; j + 64 <= n; j += 64) { - int32x8 x0 = int32x8_load(&x[j]); - int32x8 x1 = int32x8_load(&x[j + 8]); - int32x8 x2 = int32x8_load(&x[j + 16]); - int32x8 x3 = int32x8_load(&x[j + 24]); - int32x8 x4 = int32x8_load(&x[j + 32]); - int32x8 x5 = int32x8_load(&x[j + 40]); - int32x8 x6 = int32x8_load(&x[j + 48]); - int32x8 x7 = int32x8_load(&x[j + 56]); - int32x8_MINMAX(x0, x4); - int32x8_MINMAX(x1, x5); - int32x8_MINMAX(x2, x6); - int32x8_MINMAX(x3, x7); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x4, x6); - int32x8_MINMAX(x5, x7); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8_MINMAX(x4, x5); - int32x8_MINMAX(x6, x7); - int32x8 a0 = _mm256_permute2x128_si256(x0, x1, 0x20); - int32x8 a1 = _mm256_permute2x128_si256(x0, x1, 0x31); - int32x8 a2 = _mm256_permute2x128_si256(x2, x3, 0x20); - int32x8 a3 = _mm256_permute2x128_si256(x2, x3, 0x31); - int32x8 a4 = _mm256_permute2x128_si256(x4, x5, 0x20); - int32x8 a5 = _mm256_permute2x128_si256(x4, x5, 0x31); - int32x8 a6 = _mm256_permute2x128_si256(x6, x7, 0x20); - int32x8 a7 = _mm256_permute2x128_si256(x6, x7, 0x31); - int32x8_MINMAX(a0, a1); - int32x8_MINMAX(a2, a3); - int32x8_MINMAX(a4, a5); - int32x8_MINMAX(a6, a7); - int32x8 b0 = _mm256_permute2x128_si256(a0, a1, 0x20); - int32x8 b1 = _mm256_permute2x128_si256(a0, a1, 0x31); - int32x8 b2 = _mm256_permute2x128_si256(a2, a3, 0x20); - int32x8 b3 = _mm256_permute2x128_si256(a2, a3, 0x31); - int32x8 b4 = _mm256_permute2x128_si256(a4, a5, 0x20); - int32x8 b5 = _mm256_permute2x128_si256(a4, a5, 0x31); - int32x8 b6 = _mm256_permute2x128_si256(a6, a7, 0x20); - int32x8 b7 = _mm256_permute2x128_si256(a6, a7, 0x31); - int32x8 c0 = _mm256_unpacklo_epi64(b0, b1); - int32x8 c1 = _mm256_unpackhi_epi64(b0, b1); - int32x8 c2 = _mm256_unpacklo_epi64(b2, b3); - int32x8 c3 = _mm256_unpackhi_epi64(b2, b3); - int32x8 c4 = _mm256_unpacklo_epi64(b4, b5); - int32x8 c5 = _mm256_unpackhi_epi64(b4, b5); - int32x8 c6 = _mm256_unpacklo_epi64(b6, b7); - int32x8 c7 = _mm256_unpackhi_epi64(b6, b7); - int32x8_MINMAX(c0, c1); - int32x8_MINMAX(c2, c3); - int32x8_MINMAX(c4, c5); - int32x8_MINMAX(c6, c7); - int32x8 d0 = _mm256_unpacklo_epi32(c0, c1); - int32x8 d1 = _mm256_unpackhi_epi32(c0, c1); - int32x8 d2 = _mm256_unpacklo_epi32(c2, c3); - int32x8 d3 = _mm256_unpackhi_epi32(c2, c3); - int32x8 d4 = _mm256_unpacklo_epi32(c4, c5); - int32x8 d5 = _mm256_unpackhi_epi32(c4, c5); - int32x8 d6 = _mm256_unpacklo_epi32(c6, c7); - int32x8 d7 = _mm256_unpackhi_epi32(c6, c7); - int32x8 e0 = _mm256_unpacklo_epi64(d0, d1); - int32x8 e1 = _mm256_unpackhi_epi64(d0, d1); - int32x8 e2 = _mm256_unpacklo_epi64(d2, d3); - int32x8 e3 = _mm256_unpackhi_epi64(d2, d3); - int32x8 e4 = _mm256_unpacklo_epi64(d4, d5); - int32x8 e5 = _mm256_unpackhi_epi64(d4, d5); - int32x8 e6 = _mm256_unpacklo_epi64(d6, d7); - int32x8 e7 = _mm256_unpackhi_epi64(d6, d7); - int32x8_MINMAX(e0, e1); - int32x8_MINMAX(e2, e3); - int32x8_MINMAX(e4, e5); - int32x8_MINMAX(e6, e7); - int32x8 f0 = _mm256_unpacklo_epi32(e0, e1); - int32x8 f1 = _mm256_unpackhi_epi32(e0, e1); - int32x8 f2 = _mm256_unpacklo_epi32(e2, e3); - int32x8 f3 = _mm256_unpackhi_epi32(e2, e3); - int32x8 f4 = _mm256_unpacklo_epi32(e4, e5); - int32x8 f5 = _mm256_unpackhi_epi32(e4, e5); - int32x8 f6 = _mm256_unpacklo_epi32(e6, e7); - int32x8 f7 = _mm256_unpackhi_epi32(e6, e7); - int32x8_store(&x[j], f0); - int32x8_store(&x[j + 8], f1); - int32x8_store(&x[j + 16], f2); - int32x8_store(&x[j + 24], f3); - int32x8_store(&x[j + 32], f4); - int32x8_store(&x[j + 40], f5); - int32x8_store(&x[j + 48], f6); - int32x8_store(&x[j + 56], f7); - } - minmax_vector(x + j, x + j + 32, n - 32 - j); - goto continue16; - } - if (q == 16) { - j = 0; -continue16: - for (; j + 32 <= n; j += 32) { - int32x8 x0 = int32x8_load(&x[j]); - int32x8 x1 = int32x8_load(&x[j + 8]); - int32x8 x2 = int32x8_load(&x[j + 16]); - int32x8 x3 = int32x8_load(&x[j + 24]); - int32x8_MINMAX(x0, x2); - int32x8_MINMAX(x1, x3); - int32x8_MINMAX(x0, x1); - int32x8_MINMAX(x2, x3); - int32x8 a0 = _mm256_permute2x128_si256(x0, x1, 0x20); - int32x8 a1 = _mm256_permute2x128_si256(x0, x1, 0x31); - int32x8 a2 = _mm256_permute2x128_si256(x2, x3, 0x20); - int32x8 a3 = _mm256_permute2x128_si256(x2, x3, 0x31); - int32x8_MINMAX(a0, a1); - int32x8_MINMAX(a2, a3); - int32x8 b0 = _mm256_permute2x128_si256(a0, a1, 0x20); - int32x8 b1 = _mm256_permute2x128_si256(a0, a1, 0x31); - int32x8 b2 = _mm256_permute2x128_si256(a2, a3, 0x20); - int32x8 b3 = _mm256_permute2x128_si256(a2, a3, 0x31); - int32x8 c0 = _mm256_unpacklo_epi64(b0, b1); - int32x8 c1 = _mm256_unpackhi_epi64(b0, b1); - int32x8 c2 = _mm256_unpacklo_epi64(b2, b3); - int32x8 c3 = _mm256_unpackhi_epi64(b2, b3); - int32x8_MINMAX(c0, c1); - int32x8_MINMAX(c2, c3); - int32x8 d0 = _mm256_unpacklo_epi32(c0, c1); - int32x8 d1 = _mm256_unpackhi_epi32(c0, c1); - int32x8 d2 = _mm256_unpacklo_epi32(c2, c3); - int32x8 d3 = _mm256_unpackhi_epi32(c2, c3); - int32x8 e0 = _mm256_unpacklo_epi64(d0, d1); - int32x8 e1 = _mm256_unpackhi_epi64(d0, d1); - int32x8 e2 = _mm256_unpacklo_epi64(d2, d3); - int32x8 e3 = _mm256_unpackhi_epi64(d2, d3); - int32x8_MINMAX(e0, e1); - int32x8_MINMAX(e2, e3); - int32x8 f0 = _mm256_unpacklo_epi32(e0, e1); - int32x8 f1 = _mm256_unpackhi_epi32(e0, e1); - int32x8 f2 = _mm256_unpacklo_epi32(e2, e3); - int32x8 f3 = _mm256_unpackhi_epi32(e2, e3); - int32x8_store(&x[j], f0); - int32x8_store(&x[j + 8], f1); - int32x8_store(&x[j + 16], f2); - int32x8_store(&x[j + 24], f3); - } - minmax_vector(x + j, x + j + 16, n - 16 - j); - goto continue8; - } - /* q == 8 */ - j = 0; -continue8: - for (; j + 16 <= n; j += 16) { - int32x8 x0 = int32x8_load(&x[j]); - int32x8 x1 = int32x8_load(&x[j + 8]); - int32x8_MINMAX(x0, x1); - int32x8_store(&x[j], x0); - int32x8_store(&x[j + 8], x1); - int32x8 a0 = _mm256_permute2x128_si256(x0, x1, 0x20); /* x0123y0123 */ - int32x8 a1 = _mm256_permute2x128_si256(x0, x1, 0x31); /* x4567y4567 */ - int32x8_MINMAX(a0, a1); - int32x8 b0 = _mm256_permute2x128_si256(a0, a1, 0x20); /* x01234567 */ - int32x8 b1 = _mm256_permute2x128_si256(a0, a1, 0x31); /* y01234567 */ - int32x8 c0 = _mm256_unpacklo_epi64(b0, b1); /* x01y01x45y45 */ - int32x8 c1 = _mm256_unpackhi_epi64(b0, b1); /* x23y23x67y67 */ - int32x8_MINMAX(c0, c1); - int32x8 d0 = _mm256_unpacklo_epi32(c0, c1); /* x02x13x46x57 */ - int32x8 d1 = _mm256_unpackhi_epi32(c0, c1); /* y02y13y46y57 */ - int32x8 e0 = _mm256_unpacklo_epi64(d0, d1); /* x02y02x46y46 */ - int32x8 e1 = _mm256_unpackhi_epi64(d0, d1); /* x13y13x57y57 */ - int32x8_MINMAX(e0, e1); - int32x8 f0 = _mm256_unpacklo_epi32(e0, e1); /* x01234567 */ - int32x8 f1 = _mm256_unpackhi_epi32(e0, e1); /* y01234567 */ - int32x8_store(&x[j], f0); - int32x8_store(&x[j + 8], f1); - } - minmax_vector(x + j, x + j + 8, n - 8 - j); - if (j + 8 <= n) { - int32_MINMAX(&x[j], &x[j + 4]); - int32_MINMAX(&x[j + 1], &x[j + 5]); - int32_MINMAX(&x[j + 2], &x[j + 6]); - int32_MINMAX(&x[j + 3], &x[j + 7]); - int32_MINMAX(&x[j], &x[j + 2]); - int32_MINMAX(&x[j + 1], &x[j + 3]); - int32_MINMAX(&x[j], &x[j + 1]); - int32_MINMAX(&x[j + 2], &x[j + 3]); - int32_MINMAX(&x[j + 4], &x[j + 6]); - int32_MINMAX(&x[j + 5], &x[j + 7]); - int32_MINMAX(&x[j + 4], &x[j + 5]); - int32_MINMAX(&x[j + 6], &x[j + 7]); - j += 8; - } - minmax_vector(x + j, x + j + 4, n - 4 - j); - if (j + 4 <= n) { - int32_MINMAX(&x[j], &x[j + 2]); - int32_MINMAX(&x[j + 1], &x[j + 3]); - int32_MINMAX(&x[j], &x[j + 1]); - int32_MINMAX(&x[j + 2], &x[j + 3]); - j += 4; - } - if (j + 3 <= n) { - int32_MINMAX(&x[j], &x[j + 2]); - } - if (j + 2 <= n) { - int32_MINMAX(&x[j], &x[j + 1]); - } -} - -void PQCLEAN_NTRULPR857_AVX2_crypto_sort_int32(void *array, long long n) { - int32_sort(array, n); -} diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_sort_int32.h b/src/kem/ntru_prime/ntrulpr857/avx2/crypto_sort_int32.h deleted file mode 100644 index f01c01f2..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_sort_int32.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef PQCLEAN_NTRULPR857_AVX2_CRYPTO_SORT_INT32_H -#define PQCLEAN_NTRULPR857_AVX2_CRYPTO_SORT_INT32_H - -#include -#define PQCLEAN_NTRULPR857_AVX2_crypto_sort_int32_BYTES 4 - -void PQCLEAN_NTRULPR857_AVX2_crypto_sort_int32(void *array, long long n); -#endif diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_sort_uint32.c b/src/kem/ntru_prime/ntrulpr857/avx2/crypto_sort_uint32.c deleted file mode 100644 index a7814419..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_sort_uint32.c +++ /dev/null @@ -1,18 +0,0 @@ -#include "crypto_sort_int32.h" -#include "crypto_sort_uint32.h" - - -/* can save time by vectorizing xor loops */ -/* can save time by integrating xor loops with int32_sort */ - -void PQCLEAN_NTRULPR857_AVX2_crypto_sort_uint32(void *array, long long n) { - uint32_t *x = array; - long long j; - for (j = 0; j < n; ++j) { - x[j] ^= 0x80000000; - } - PQCLEAN_NTRULPR857_AVX2_crypto_sort_int32((int32_t *)array, n); - for (j = 0; j < n; ++j) { - x[j] ^= 0x80000000; - } -} diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_sort_uint32.h b/src/kem/ntru_prime/ntrulpr857/avx2/crypto_sort_uint32.h deleted file mode 100644 index 7d04400a..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_sort_uint32.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef PQCLEAN_NTRULPR857_AVX2_CRYPTO_SORT_UINT32_H -#define PQCLEAN_NTRULPR857_AVX2_CRYPTO_SORT_UINT32_H - -#include -#define PQCLEAN_NTRULPR857_AVX2_crypto_sort_uint32_BYTES 4 - -void PQCLEAN_NTRULPR857_AVX2_crypto_sort_uint32(void *array, long long n); -#endif diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_stream_aes256ctr.c b/src/kem/ntru_prime/ntrulpr857/avx2/crypto_stream_aes256ctr.c deleted file mode 100644 index 1d3eeaa9..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_stream_aes256ctr.c +++ /dev/null @@ -1,15 +0,0 @@ -#include "crypto_stream_aes256ctr.h" - - -int PQCLEAN_NTRULPR857_AVX2_crypto_stream_aes256ctr( - uint8_t *out, - size_t outlen, - const uint8_t nonce[AESCTR_NONCEBYTES], - const uint8_t key[AES256_KEYBYTES]) { - - aes256ctx state; - aes256_ctr_keyexp(&state, key); - aes256_ctr(out, outlen, nonce, &state); - aes256_ctx_release(&state); - return 0; -} diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_stream_aes256ctr.h b/src/kem/ntru_prime/ntrulpr857/avx2/crypto_stream_aes256ctr.h deleted file mode 100644 index 05ea1718..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_stream_aes256ctr.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef PQCLEAN_NTRULPR857_AVX2_CRYPTO_STREAM_AES256CTR_H -#define PQCLEAN_NTRULPR857_AVX2_CRYPTO_STREAM_AES256CTR_H -#include "aes.h" -#include -#include - - - -int PQCLEAN_NTRULPR857_AVX2_crypto_stream_aes256ctr( - uint8_t *out, - size_t outlen, - const uint8_t nonce[AESCTR_NONCEBYTES], - const uint8_t key[AES256_KEYBYTES]); - -#endif diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_verify_1312.c b/src/kem/ntru_prime/ntrulpr857/avx2/crypto_verify_1312.c deleted file mode 100644 index 53073a5e..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_verify_1312.c +++ /dev/null @@ -1,36 +0,0 @@ -#include "crypto_verify_1312.h" -#include - -int PQCLEAN_NTRULPR857_AVX2_crypto_verify_1312(const unsigned char *x, const unsigned char *y) { - __m256i diff = _mm256_set1_epi8(0); - unsigned int differentbits = 0; - int i = PQCLEAN_NTRULPR857_AVX2_crypto_verify_1312_BYTES; - - i -= 32; - for (;;) { - do { - __m256i x0 = _mm256_loadu_si256((__m256i *) x); - __m256i y0 = _mm256_loadu_si256((__m256i *) y); - diff |= x0 ^ y0; - i -= 32; - x += 32; - y += 32; - } while (i >= 0); - if (i <= -32) { - break; - } - x += i; - y += i; - } - - diff |= _mm256_srli_epi16(diff, 8); - diff |= _mm256_srli_epi32(diff, 16); - diff |= _mm256_srli_epi64(diff, 32); - - differentbits = (unsigned int) _mm256_extract_epi8(diff, 0); - differentbits |= (unsigned int) _mm256_extract_epi8(diff, 8); - differentbits |= (unsigned int) _mm256_extract_epi8(diff, 16); - differentbits |= (unsigned int) _mm256_extract_epi8(diff, 24); - - return (int) (1 & ((differentbits - 1) >> 8)) - 1; -} diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_verify_1312.h b/src/kem/ntru_prime/ntrulpr857/avx2/crypto_verify_1312.h deleted file mode 100644 index 3d1baf27..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/crypto_verify_1312.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef PQCLEAN_NTRULPR857_AVX2_CRYPTO_VERIFY_1312_H -#define PQCLEAN_NTRULPR857_AVX2_CRYPTO_VERIFY_1312_H - -#include -#define PQCLEAN_NTRULPR857_AVX2_crypto_verify_1312_BYTES 1312 - -int PQCLEAN_NTRULPR857_AVX2_crypto_verify_1312(const unsigned char *x, const unsigned char *y); -#endif diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/kem.c b/src/kem/ntru_prime/ntrulpr857/avx2/kem.c deleted file mode 100644 index 540b4528..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/kem.c +++ /dev/null @@ -1,287 +0,0 @@ -#include "api.h" -#include "crypto_sort_uint32.h" -#include "crypto_stream_aes256ctr.h" -#include "params.h" -#include "randombytes.h" -#include "sha2.h" - - - -#define int8 int8_t -#define int16 int16_t -#define int32 int32_t -#define uint16 uint16_t -#define uint32 uint32_t -#define uint64 uint64_t - -/* ----- masks */ - -/* return -1 if x<0; otherwise return 0 */ -static int int16_negative_mask(int16 x) { - uint16 u = (uint16) x; - u >>= 15; - return -(int) u; - /* alternative with gcc -fwrapv: */ - /* x>>15 compiles to CPU's arithmetic right shift */ -} - -/* ----- arithmetic mod 3 */ - -typedef int8 small; -/* F3 is always represented as -1,0,1 */ - -/* ----- arithmetic mod q */ - -#define q12 ((q-1)/2) -typedef int16 Fq; - -/* works for -14000000 < x < 14000000 if q in 4591, 4621, 5167 */ -/* assumes twos complement; use, e.g., gcc -fwrapv */ -static Fq Fq_freeze(int32 x) { - x -= (int32) (q * ((q18 * x) >> 18)); - x -= (int32) (q * ((q27 * x + 67108864) >> 27)); - return (Fq) x; -} - -/* works for all uint32 x */ -static Fq Fq_bigfreeze(uint32 x) { - x -= (uint32) (q * ((x * (uint64)q31) >> 31)); - x -= (uint32) (q * ((x * (uint64)q31) >> 31)); - x -= q; - x += (~(x >> 31) + 1) & (uint32)q; - return (Fq) x; -} - -/* ----- Top and Right */ - -static int8 Top(Fq C) { - return (int8) ((tau1 * (int32)(C + tau0) + 16384) >> 15); -} - -static Fq Right(int8 T) { - return Fq_freeze(tau3 * (int32)T - tau2); -} - -/* ----- polynomials mod q */ - -/* h = h*g in the ring Rq */ -static void Rq_mult_small(Fq *h, const small *g) { - crypto_encode_pxint16((unsigned char *) h, h); - crypto_core_mult((unsigned char *) h, (const unsigned char *) h, (const unsigned char *) g); - crypto_decode_pxint16(h, (const unsigned char *) h); -} - -/* ----- sorting to generate short polynomial */ - -static void Short_fromlist(small *out, const uint32 *in) { - uint32 L[ppadsort]; - int i; - - for (i = 0; i < w; ++i) { - L[i] = in[i] & (uint32) - 2; - } - for (i = w; i < p; ++i) { - L[i] = (in[i] & (uint32) - 3) | 1; - } - for (i = p; i < ppadsort; ++i) { - L[i] = 0xffffffff; - } - PQCLEAN_NTRULPR857_AVX2_crypto_sort_uint32(L, ppadsort); - for (i = 0; i < p; ++i) { - out[i] = (small) ((L[i] & 3) - 1); - } -} - -/* ----- underlying hash function */ - -#define Hash_bytes 32 - -static void Hash(unsigned char *out, const unsigned char *in, int inlen) { - unsigned char h[64]; - int i; - sha512(h, in, (size_t) inlen); - for (i = 0; i < 32; ++i) { - out[i] = h[i]; - } -} - -/* ----- higher-level randomness */ - -static void Short_random(small *out) { - uint32 L[p]; - - randombytes((unsigned char *) L, sizeof L); - crypto_decode_pxint32(L, (unsigned char *) L); - Short_fromlist(out, L); -} - -/* ----- Inputs, Generator */ - -typedef int8 Inputs[I]; /* passed by reference */ - -static const unsigned char aes_nonce[16] = {0}; - -/* G = Generator(pk) */ -static void Generator(Fq *G, const unsigned char *pk) { - uint32 L[p]; - int i; - - PQCLEAN_NTRULPR857_AVX2_crypto_stream_aes256ctr((unsigned char *) L, 4 * p, aes_nonce, pk); - crypto_decode_pxint32(L, (unsigned char *) L); - for (i = 0; i < p; ++i) { - G[i] = Fq_bigfreeze(L[i]) - q12; - } -} - -/* ----- NTRU LPRime */ - -#define Seeds_bytes 32 -#define Ciphertexts_bytes (Rounded_bytes+Top_bytes) -#define SecretKeys_bytes Small_bytes -#define PublicKeys_bytes (Seeds_bytes+Rounded_bytes) -#define Confirm_bytes 32 - -/* c,r_enc[1:] = Hide(r,pk,cache); cache is Hash4(pk) */ -static void Hide(unsigned char *c, unsigned char *r_enc, const Inputs r, const unsigned char *pk, const unsigned char *cache) { - small b[p]; - int i; - - Inputs_encode(r_enc + 1, r); - { - unsigned char h[Hash_bytes]; - uint32 L[p]; - { - unsigned char s[1 + Inputs_bytes]; - Inputs_encode(s + 1, r); - s[0] = 5; - Hash(h, s, sizeof s); - } - PQCLEAN_NTRULPR857_AVX2_crypto_stream_aes256ctr((unsigned char *) L, 4 * p, aes_nonce, h); - crypto_decode_pxint32(L, (unsigned char *) L); - Short_fromlist(b, L); - } - { - Fq bG[p]; - Generator(bG, pk); - Rq_mult_small(bG, b); - Round_and_encode(c, bG); - c += Rounded_bytes; - } - { - Fq bA[p]; - int8 T[I]; - Rounded_decode(bA, pk + Seeds_bytes); - Rq_mult_small(bA, b); - for (i = 0; i < I; ++i) { - T[i] = Top(Fq_freeze(bA[i] + r[i] * q12)); - } - Top_encode(c, T); - c += Top_bytes; - } - { - unsigned char x[1 + Inputs_bytes + Hash_bytes]; - for (i = 0; i < Inputs_bytes; ++i) { - x[1 + i] = r_enc[1 + i]; - } - for (i = 0; i < Hash_bytes; ++i) { - x[1 + Inputs_bytes + i] = cache[i]; - } - x[0] = 2; - Hash(c, x, sizeof x); - } -} - - -int PQCLEAN_NTRULPR857_AVX2_crypto_kem_keypair(unsigned char *pk, unsigned char *sk) { - Fq aG[p]; - int i; - randombytes(pk, Seeds_bytes); - Generator(aG, pk); - { - small a[p]; - Short_random(a); - Rq_mult_small(aG, a); - Small_encode(sk, a); - } - Round_and_encode(pk + Seeds_bytes, aG); - { - unsigned char sksave = sk[SecretKeys_bytes - 1]; - for (i = 0; i < PublicKeys_bytes; ++i) { - sk[SecretKeys_bytes + i] = pk[i]; - } - sk[SecretKeys_bytes - 1] = 4; - Hash(sk + SecretKeys_bytes + PublicKeys_bytes + Inputs_bytes, sk + SecretKeys_bytes - 1, 1 + PublicKeys_bytes); - sk[SecretKeys_bytes - 1] = sksave; - randombytes(sk + SecretKeys_bytes + PublicKeys_bytes, Inputs_bytes); - } - return 0; -} - -int PQCLEAN_NTRULPR857_AVX2_crypto_kem_enc(unsigned char *c, unsigned char *k, const unsigned char *pk) { - int i; - unsigned char cache[Hash_bytes]; - { - unsigned char y[1 + PublicKeys_bytes]; - for (i = 0; i < PublicKeys_bytes; ++i) { - y[1 + i] = pk[i]; - } - y[0] = 4; - Hash(cache, y, sizeof y); - } - Inputs r; - { - unsigned char s[Inputs_bytes]; - randombytes(s, sizeof s); - Inputs_decode(r, s); - } - { - unsigned char x[1 + Inputs_bytes + Ciphertexts_bytes + Confirm_bytes]; - Hide(c, x, r, pk, cache); - for (i = 0; i < Ciphertexts_bytes + Confirm_bytes; ++i) { - x[1 + Inputs_bytes + i] = c[i]; - } - x[0] = 1; - Hash(k, x, sizeof x); - } - return 0; -} - -int PQCLEAN_NTRULPR857_AVX2_crypto_kem_dec(unsigned char *k, const unsigned char *c, const unsigned char *sk) { - const unsigned char *pk = sk + SecretKeys_bytes; - const unsigned char *rho = pk + PublicKeys_bytes; - const unsigned char *cache = rho + Inputs_bytes; - Inputs r; - int i; - { - Fq aB[p]; - Rounded_decode(aB, c); - { - small a[p]; - Small_decode(a, sk); - Rq_mult_small(aB, a); - } - { - int8 T[I]; - Top_decode(T, c + Rounded_bytes); - for (i = 0; i < I; ++i) { - r[i] = (int8) - int16_negative_mask(Fq_freeze(Right(T[i]) - aB[i] + 4 * w + 1)); - } - } - } - { - unsigned char cnew[Ciphertexts_bytes + Confirm_bytes]; - int mask; - unsigned char x[1 + Inputs_bytes + Ciphertexts_bytes + Confirm_bytes]; - Hide(cnew, x, r, pk, cache); - mask = crypto_verify_clen(c, cnew); - for (i = 0; i < Inputs_bytes; ++i) { - x[1 + i] ^= (unsigned char) (mask & (x[1 + i] ^ rho[i])); - } - for (i = 0; i < Ciphertexts_bytes + Confirm_bytes; ++i) { - x[1 + Inputs_bytes + i] = c[i]; - } - x[0] = (unsigned char) (1 + mask); - Hash(k, x, sizeof x); - } - return 0; -} diff --git a/src/kem/ntru_prime/ntrulpr857/avx2/params.h b/src/kem/ntru_prime/ntrulpr857/avx2/params.h deleted file mode 100644 index 18baf311..00000000 --- a/src/kem/ntru_prime/ntrulpr857/avx2/params.h +++ /dev/null @@ -1,63 +0,0 @@ -#ifndef params_H -#define params_H -#include "crypto_core_multsntrup857.h" -#include "crypto_decode_256x16.h" -#include "crypto_decode_256x2.h" -#include "crypto_decode_857x1723.h" -#include "crypto_decode_857x3.h" -#include "crypto_decode_857xint16.h" -#include "crypto_decode_857xint32.h" -#include "crypto_encode_256x16.h" -#include "crypto_encode_256x2.h" -#include "crypto_encode_857x1723.h" -#include "crypto_encode_857x1723round.h" -#include "crypto_encode_857x3.h" -#include "crypto_encode_857xint16.h" -#include "crypto_sort_int32.h" -#include "crypto_sort_uint32.h" -#include "crypto_verify_1312.h" - - -#define p 857 -#define q 5167 -#define w 281 -#define tau0 2433 -#define tau1 101 -#define tau2 2265 -#define tau3 324 -#define I 256 - -#define ppadsort 857 - -#define q18 51 /* round(2^18/q) */ -#define q27 25976 /* round(2^27/q) */ -#define q31 415615 /* floor(2^31/q) */ - -#define crypto_verify_clen PQCLEAN_NTRULPR857_AVX2_crypto_verify_1312 - -#define Rounded_bytes PQCLEAN_NTRULPR857_AVX2_crypto_decode_857x1723_STRBYTES -#define Rounded_decode PQCLEAN_NTRULPR857_AVX2_crypto_decode_857x1723 - -#define Round_and_encode PQCLEAN_NTRULPR857_AVX2_crypto_encode_857x1723round - -#define Small_bytes PQCLEAN_NTRULPR857_AVX2_crypto_encode_857x3_STRBYTES -#define Small_encode PQCLEAN_NTRULPR857_AVX2_crypto_encode_857x3 -#define Small_decode PQCLEAN_NTRULPR857_AVX2_crypto_decode_857x3 - -#define Top_bytes PQCLEAN_NTRULPR857_AVX2_crypto_encode_256x16_STRBYTES -#define Top_encode PQCLEAN_NTRULPR857_AVX2_crypto_encode_256x16 -#define Top_decode PQCLEAN_NTRULPR857_AVX2_crypto_decode_256x16 - -#define Inputs_bytes PQCLEAN_NTRULPR857_AVX2_crypto_encode_256x2_STRBYTES -#define Inputs_encode PQCLEAN_NTRULPR857_AVX2_crypto_encode_256x2 -#define Inputs_decode PQCLEAN_NTRULPR857_AVX2_crypto_decode_256x2 - -#define crypto_decode_pxint32 PQCLEAN_NTRULPR857_AVX2_crypto_decode_857xint32 - -#define crypto_decode_pxint16 PQCLEAN_NTRULPR857_AVX2_crypto_decode_857xint16 - -#define crypto_encode_pxint16 PQCLEAN_NTRULPR857_AVX2_crypto_encode_857xint16 - -#define crypto_core_mult PQCLEAN_NTRULPR857_AVX2_crypto_core_multsntrup857 - -#endif diff --git a/src/kem/ntru_prime/ntrulpr857/clean/CMakeLists.txt b/src/kem/ntru_prime/ntrulpr857/clean/CMakeLists.txt deleted file mode 100644 index 81d05bb6..00000000 --- a/src/kem/ntru_prime/ntrulpr857/clean/CMakeLists.txt +++ /dev/null @@ -1,24 +0,0 @@ -set( - SRC_CLEAN_NTRULPR857 - crypto_core_multsntrup857.c - crypto_decode_256x16.c - crypto_decode_256x2.c - crypto_decode_857x1723.c - crypto_decode_857x3.c - crypto_decode_857xint16.c - crypto_decode_857xint32.c - crypto_encode_256x16.c - crypto_encode_256x2.c - crypto_encode_857x1723.c - crypto_encode_857x1723round.c - crypto_encode_857x3.c - crypto_encode_857xint16.c - crypto_sort_int32.c - crypto_sort_uint32.c - crypto_stream_aes256ctr.c - crypto_verify_1312.c - kem.c -) - -define_kem_alg(ntrulpr857_clean - PQCLEAN_NTRULPR857_CLEAN "${SRC_CLEAN_NTRULPR857}" "${CMAKE_CURRENT_SOURCE_DIR}") diff --git a/src/kem/ntru_prime/ntrulpr857/clean/api.h b/src/kem/ntru_prime/ntrulpr857/clean/api.h deleted file mode 100644 index 93134750..00000000 --- a/src/kem/ntru_prime/ntrulpr857/clean/api.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef PQCLEAN_NTRULPR857_CLEAN_API_H -#define PQCLEAN_NTRULPR857_CLEAN_API_H - - - -#define PQCLEAN_NTRULPR857_CLEAN_CRYPTO_ALGNAME "ntrulpr857" - -#define PQCLEAN_NTRULPR857_CLEAN_CRYPTO_SECRETKEYBYTES 1463 -#define PQCLEAN_NTRULPR857_CLEAN_CRYPTO_PUBLICKEYBYTES 1184 -#define PQCLEAN_NTRULPR857_CLEAN_CRYPTO_CIPHERTEXTBYTES 1312 -#define PQCLEAN_NTRULPR857_CLEAN_CRYPTO_BYTES 32 - -int PQCLEAN_NTRULPR857_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); -int PQCLEAN_NTRULPR857_CLEAN_crypto_kem_enc(unsigned char *c, unsigned char *k, const unsigned char *pk); -int PQCLEAN_NTRULPR857_CLEAN_crypto_kem_dec(unsigned char *k, const unsigned char *c, const unsigned char *sk); -#endif diff --git a/src/kem/ntru_prime/ntrulpr857/clean/crypto_core_multsntrup857.c b/src/kem/ntru_prime/ntrulpr857/clean/crypto_core_multsntrup857.c deleted file mode 100644 index 724c2ea9..00000000 --- a/src/kem/ntru_prime/ntrulpr857/clean/crypto_core_multsntrup857.c +++ /dev/null @@ -1,60 +0,0 @@ -#include "crypto_core_multsntrup857.h" -#include "params.h" - - -#define int8 int8_t -#define int16 int16_t -#define int32 int32_t -typedef int8 small; - -typedef int16 Fq; -/* always represented as -(q-1)/2...(q-1)/2 */ - -/* works for -14000000 < x < 14000000 if q in 4591, 4621, 5167 */ -static Fq Fq_freeze(int32 x) { - x -= q * ((q18 * x) >> 18); - x -= q * ((q27 * x + 67108864) >> 27); - return (Fq) x; -} - -int PQCLEAN_NTRULPR857_CLEAN_crypto_core_multsntrup857(unsigned char *outbytes, const unsigned char *inbytes, const unsigned char *kbytes) { - Fq f[p]; - small g[p]; - Fq fg[p + p - 1]; - int32 result; - int i, j; - - crypto_decode_pxint16(f, inbytes); - for (i = 0; i < p; ++i) { - f[i] = Fq_freeze(f[i]); - } - - for (i = 0; i < p; ++i) { - small gi = (small) kbytes[i]; - small gi0 = gi & 1; - g[i] = (small) (gi0 - (gi & (gi0 << 1))); - } - - for (i = 0; i < p; ++i) { - result = 0; - for (j = 0; j <= i; ++j) { - result += f[j] * (int32)g[i - j]; - } - fg[i] = Fq_freeze(result); - } - for (i = p; i < p + p - 1; ++i) { - result = 0; - for (j = i - p + 1; j < p; ++j) { - result += f[j] * (int32)g[i - j]; - } - fg[i] = Fq_freeze(result); - } - - for (i = p + p - 2; i >= p; --i) { - fg[i - p] = Fq_freeze(fg[i - p] + fg[i]); - fg[i - p + 1] = Fq_freeze(fg[i - p + 1] + fg[i]); - } - - crypto_encode_pxint16(outbytes, fg); - return 0; -} diff --git a/src/kem/ntru_prime/ntrulpr857/clean/crypto_core_multsntrup857.h b/src/kem/ntru_prime/ntrulpr857/clean/crypto_core_multsntrup857.h deleted file mode 100644 index cde1e9da..00000000 --- a/src/kem/ntru_prime/ntrulpr857/clean/crypto_core_multsntrup857.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef PQCLEAN_NTRULPR857_CLEAN_CRYPTO_CORE_MULTSNTRUP857_H -#define PQCLEAN_NTRULPR857_CLEAN_CRYPTO_CORE_MULTSNTRUP857_H - -#include -#define PQCLEAN_NTRULPR857_CLEAN_crypto_core_multsntrup857_OUTPUTBYTES 1714 -#define PQCLEAN_NTRULPR857_CLEAN_crypto_core_multsntrup857_INPUTBYTES 1714 -#define PQCLEAN_NTRULPR857_CLEAN_crypto_core_multsntrup857_KEYBYTES 857 -#define PQCLEAN_NTRULPR857_CLEAN_crypto_core_multsntrup857_CONSTBYTES 0 - -int PQCLEAN_NTRULPR857_CLEAN_crypto_core_multsntrup857(unsigned char *outbytes, const unsigned char *inbytes, const unsigned char *kbytes); -#endif diff --git a/src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_256x16.c b/src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_256x16.c deleted file mode 100644 index a43c7272..00000000 --- a/src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_256x16.c +++ /dev/null @@ -1,11 +0,0 @@ -#include "crypto_decode_256x16.h" - - -void PQCLEAN_NTRULPR857_CLEAN_crypto_decode_256x16(void *v, const unsigned char *s) { - unsigned char *T = v; - int i; - for (i = 0; i < 128; ++i) { - T[2 * i] = s[i] & 15; - T[2 * i + 1] = s[i] >> 4; - } -} diff --git a/src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_256x16.h b/src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_256x16.h deleted file mode 100644 index afdd8757..00000000 --- a/src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_256x16.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR857_CLEAN_CRYPTO_DECODE_256X16_H -#define PQCLEAN_NTRULPR857_CLEAN_CRYPTO_DECODE_256X16_H - -#include -#define PQCLEAN_NTRULPR857_CLEAN_crypto_decode_256x16_STRBYTES 128 -#define PQCLEAN_NTRULPR857_CLEAN_crypto_decode_256x16_ITEMS 256 -#define PQCLEAN_NTRULPR857_CLEAN_crypto_decode_256x16_ITEMBYTES 1 - -void PQCLEAN_NTRULPR857_CLEAN_crypto_decode_256x16(void *v, const unsigned char *s); -#endif diff --git a/src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_256x2.c b/src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_256x2.c deleted file mode 100644 index 80e8c85c..00000000 --- a/src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_256x2.c +++ /dev/null @@ -1,10 +0,0 @@ -#include "crypto_decode_256x2.h" - - -void PQCLEAN_NTRULPR857_CLEAN_crypto_decode_256x2(void *v, const unsigned char *s) { - unsigned char *r = v; - int i; - for (i = 0; i < 256; ++i) { - r[i] = 1 & (s[i >> 3] >> (i & 7)); - } -} diff --git a/src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_256x2.h b/src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_256x2.h deleted file mode 100644 index acf4e947..00000000 --- a/src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_256x2.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR857_CLEAN_CRYPTO_DECODE_256X2_H -#define PQCLEAN_NTRULPR857_CLEAN_CRYPTO_DECODE_256X2_H - -#include -#define PQCLEAN_NTRULPR857_CLEAN_crypto_decode_256x2_STRBYTES 32 -#define PQCLEAN_NTRULPR857_CLEAN_crypto_decode_256x2_ITEMS 256 -#define PQCLEAN_NTRULPR857_CLEAN_crypto_decode_256x2_ITEMBYTES 1 - -void PQCLEAN_NTRULPR857_CLEAN_crypto_decode_256x2(void *v, const unsigned char *s); -#endif diff --git a/src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_857x1723.c b/src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_857x1723.c deleted file mode 100644 index df7d76db..00000000 --- a/src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_857x1723.c +++ /dev/null @@ -1,202 +0,0 @@ -#include "crypto_decode_857x1723.h" - -/* auto-generated; do not edit */ - -#define int16 int16_t -#define uint16 uint16_t -#define uint32 uint32_t -#define uint64 uint64_t - -/* -CPU division instruction typically takes time depending on x. -This software is designed to take time independent of x. -Time still varies depending on m; user must ensure that m is constant. -Time also varies on CPUs where multiplication is variable-time. -There could be more CPU issues. -There could also be compiler issues. -*/ - -static void uint32_divmod_uint14(uint32 *q, uint16 *r, uint32 x, uint16 m) { - uint32 v = 0x80000000; - uint32 qpart; - uint32 mask; - - v /= m; - - /* caller guarantees m > 0 */ - /* caller guarantees m < 16384 */ - /* vm <= 2^31 <= vm+m-1 */ - /* xvm <= 2^31 x <= xvm+x(m-1) */ - - *q = 0; - - qpart = (uint32) ((x * (uint64)v) >> 31); - /* 2^31 qpart <= xv <= 2^31 qpart + 2^31-1 */ - /* 2^31 qpart m <= xvm <= 2^31 qpart m + (2^31-1)m */ - /* 2^31 qpart m <= 2^31 x <= 2^31 qpart m + (2^31-1)m + x(m-1) */ - /* 0 <= 2^31 newx <= (2^31-1)m + x(m-1) */ - /* 0 <= newx <= (1-1/2^31)m + x(m-1)/2^31 */ - /* 0 <= newx <= (1-1/2^31)(2^14-1) + (2^32-1)((2^14-1)-1)/2^31 */ - - x -= qpart * m; - *q += qpart; - /* x <= 49146 */ - - qpart = (uint32) ((x * (uint64)v) >> 31); - /* 0 <= newx <= (1-1/2^31)m + x(m-1)/2^31 */ - /* 0 <= newx <= m + 49146(2^14-1)/2^31 */ - /* 0 <= newx <= m + 0.4 */ - /* 0 <= newx <= m */ - - x -= qpart * m; - *q += qpart; - /* x <= m */ - - x -= m; - *q += 1; - mask = (~(x >> 31) + 1); - x += mask & (uint32)m; - *q += mask; - /* x < m */ - - *r = (uint16) x; -} - -static uint16 uint32_mod_uint14(uint32 x, uint16 m) { - uint32 q; - uint16 r; - uint32_divmod_uint14(&q, &r, x, m); - return r; -} - -void PQCLEAN_NTRULPR857_CLEAN_crypto_decode_857x1723(void *v, const unsigned char *s) { - int16 *R0 = v; - uint16 R1[429], R2[215], R3[108], R4[54], R5[27], R6[14], R7[7], R8[4], R9[2], R10[1]; - long long i; - uint16 r0; - uint32 r1, r2; - - s += PQCLEAN_NTRULPR857_CLEAN_crypto_decode_857x1723_STRBYTES; - r1 = 0; - r1 = (r1 << 8) | *--s; - r1 = uint32_mod_uint14(r1, 160); /* needed only for invalid inputs */ - R10[0] = (uint16) r1; - - r2 = R10[0]; - r2 = (r2 << 8) | *--s; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 743); - R9[0] = r0; - r1 = uint32_mod_uint14(r1, 14044); /* needed only for invalid inputs */ - R9[1] = (uint16) r1; - - r2 = R9[1]; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 436); - R8[2] = r0; - r1 = uint32_mod_uint14(r1, 8246); /* needed only for invalid inputs */ - R8[3] = (uint16) r1; - r2 = R9[0]; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 436); - R8[0] = r0; - r1 = uint32_mod_uint14(r1, 436); /* needed only for invalid inputs */ - R8[1] = (uint16) r1; - - R7[6] = R8[3]; - for (i = 2; i >= 0; --i) { - r2 = R8[i]; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 334); - R7[2 * i] = r0; - r1 = uint32_mod_uint14(r1, 334); /* needed only for invalid inputs */ - R7[2 * i + 1] = (uint16) r1; - } - - r2 = R7[6]; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 292); - R6[12] = r0; - r1 = uint32_mod_uint14(r1, 7229); /* needed only for invalid inputs */ - R6[13] = (uint16) r1; - for (i = 5; i >= 0; --i) { - r2 = R7[i]; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 292); - R6[2 * i] = r0; - r1 = uint32_mod_uint14(r1, 292); /* needed only for invalid inputs */ - R6[2 * i + 1] = (uint16) r1; - } - - R5[26] = R6[13]; - for (i = 12; i >= 0; --i) { - r2 = R6[i]; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 273); - R5[2 * i] = r0; - r1 = uint32_mod_uint14(r1, 273); /* needed only for invalid inputs */ - R5[2 * i + 1] = (uint16) r1; - } - - r2 = R5[26]; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 4225); - R4[52] = r0; - r1 = uint32_mod_uint14(r1, 438); /* needed only for invalid inputs */ - R4[53] = (uint16) r1; - for (i = 25; i >= 0; --i) { - r2 = R5[i]; - r2 = (r2 << 8) | *--s; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 4225); - R4[2 * i] = r0; - r1 = uint32_mod_uint14(r1, 4225); /* needed only for invalid inputs */ - R4[2 * i + 1] = (uint16) r1; - } - - r2 = R4[53]; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 65); - R3[106] = r0; - r1 = uint32_mod_uint14(r1, 1723); /* needed only for invalid inputs */ - R3[107] = (uint16) r1; - for (i = 52; i >= 0; --i) { - r2 = R4[i]; - uint32_divmod_uint14(&r1, &r0, r2, 65); - R3[2 * i] = r0; - r1 = uint32_mod_uint14(r1, 65); /* needed only for invalid inputs */ - R3[2 * i + 1] = (uint16) r1; - } - - R2[214] = R3[107]; - for (i = 106; i >= 0; --i) { - r2 = R3[i]; - r2 = (r2 << 8) | *--s; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 2053); - R2[2 * i] = r0; - r1 = uint32_mod_uint14(r1, 2053); /* needed only for invalid inputs */ - R2[2 * i + 1] = (uint16) r1; - } - - R1[428] = R2[214]; - for (i = 213; i >= 0; --i) { - r2 = R2[i]; - r2 = (r2 << 8) | *--s; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 11597); - R1[2 * i] = r0; - r1 = uint32_mod_uint14(r1, 11597); /* needed only for invalid inputs */ - R1[2 * i + 1] = (uint16) r1; - } - - R0[856] = (int16) (3 * R1[428] - 2583); - for (i = 427; i >= 0; --i) { - r2 = R1[i]; - r2 = (r2 << 8) | *--s; - uint32_divmod_uint14(&r1, &r0, r2, 1723); - R0[2 * i] = (int16) (3 * r0 - 2583); - r1 = uint32_mod_uint14(r1, 1723); /* needed only for invalid inputs */ - R0[2 * i + 1] = (int16) (3 * r1 - 2583); - } -} diff --git a/src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_857x1723.h b/src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_857x1723.h deleted file mode 100644 index e9c65aec..00000000 --- a/src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_857x1723.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR857_CLEAN_CRYPTO_DECODE_857X1723_H -#define PQCLEAN_NTRULPR857_CLEAN_CRYPTO_DECODE_857X1723_H - -#include -#define PQCLEAN_NTRULPR857_CLEAN_crypto_decode_857x1723_STRBYTES 1152 -#define PQCLEAN_NTRULPR857_CLEAN_crypto_decode_857x1723_ITEMS 857 -#define PQCLEAN_NTRULPR857_CLEAN_crypto_decode_857x1723_ITEMBYTES 2 - -void PQCLEAN_NTRULPR857_CLEAN_crypto_decode_857x1723(void *v, const unsigned char *s); -#endif diff --git a/src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_857x3.c b/src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_857x3.c deleted file mode 100644 index dead3ac3..00000000 --- a/src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_857x3.c +++ /dev/null @@ -1,24 +0,0 @@ -#include "crypto_decode_857x3.h" - -#define uint8 uint8_t - -#define p 857 - -void PQCLEAN_NTRULPR857_CLEAN_crypto_decode_857x3(void *v, const unsigned char *s) { - uint8 *f = v; - uint8 x; - int i; - - for (i = 0; i < p / 4; ++i) { - x = *s++; - *f++ = (uint8) ((x & 3) - 1); - x >>= 2; - *f++ = (uint8) ((x & 3) - 1); - x >>= 2; - *f++ = (uint8) ((x & 3) - 1); - x >>= 2; - *f++ = (uint8) ((x & 3) - 1); - } - x = *s++; - *f++ = (uint8) ((x & 3) - 1); -} diff --git a/src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_857x3.h b/src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_857x3.h deleted file mode 100644 index b7fd54cf..00000000 --- a/src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_857x3.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR857_CLEAN_CRYPTO_DECODE_857X3_H -#define PQCLEAN_NTRULPR857_CLEAN_CRYPTO_DECODE_857X3_H - -#include -#define PQCLEAN_NTRULPR857_CLEAN_crypto_decode_857x3_STRBYTES 215 -#define PQCLEAN_NTRULPR857_CLEAN_crypto_decode_857x3_ITEMS 857 -#define PQCLEAN_NTRULPR857_CLEAN_crypto_decode_857x3_ITEMBYTES 1 - -void PQCLEAN_NTRULPR857_CLEAN_crypto_decode_857x3(void *v, const unsigned char *s); -#endif diff --git a/src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_857xint16.c b/src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_857xint16.c deleted file mode 100644 index d8c620c1..00000000 --- a/src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_857xint16.c +++ /dev/null @@ -1,15 +0,0 @@ -#include "crypto_decode_857xint16.h" - - -void PQCLEAN_NTRULPR857_CLEAN_crypto_decode_857xint16(void *v, const unsigned char *s) { - uint16_t *x = v; - int i; - - for (i = 0; i < 857; ++i) { - uint16_t u0 = s[0]; - uint16_t u1 = s[1]; - *x = (uint16_t) (u0 | (u1 << 8)); - x += 1; - s += 2; - } -} diff --git a/src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_857xint16.h b/src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_857xint16.h deleted file mode 100644 index c774bd94..00000000 --- a/src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_857xint16.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR857_CLEAN_CRYPTO_DECODE_857XINT16_H -#define PQCLEAN_NTRULPR857_CLEAN_CRYPTO_DECODE_857XINT16_H - -#include -#define PQCLEAN_NTRULPR857_CLEAN_crypto_decode_857xint16_STRBYTES 1714 -#define PQCLEAN_NTRULPR857_CLEAN_crypto_decode_857xint16_ITEMBYTES 2 -#define PQCLEAN_NTRULPR857_CLEAN_crypto_decode_857xint16_ITEMS 857 - -void PQCLEAN_NTRULPR857_CLEAN_crypto_decode_857xint16(void *v, const unsigned char *s); -#endif diff --git a/src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_857xint32.c b/src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_857xint32.c deleted file mode 100644 index 3ad8731e..00000000 --- a/src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_857xint32.c +++ /dev/null @@ -1,20 +0,0 @@ -#include "crypto_decode_857xint32.h" - - -void PQCLEAN_NTRULPR857_CLEAN_crypto_decode_857xint32(void *v, const unsigned char *s) { - uint32_t *x = v; - int i; - - for (i = 0; i < 857; ++i) { - uint32_t u0 = s[0]; - uint32_t u1 = s[1]; - uint32_t u2 = s[2]; - uint32_t u3 = s[3]; - u1 <<= 8; - u2 <<= 16; - u3 <<= 24; - *x = u0 | u1 | u2 | u3; - x += 1; - s += 4; - } -} diff --git a/src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_857xint32.h b/src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_857xint32.h deleted file mode 100644 index 8beda2db..00000000 --- a/src/kem/ntru_prime/ntrulpr857/clean/crypto_decode_857xint32.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR857_CLEAN_CRYPTO_DECODE_857XINT32_H -#define PQCLEAN_NTRULPR857_CLEAN_CRYPTO_DECODE_857XINT32_H - -#include -#define PQCLEAN_NTRULPR857_CLEAN_crypto_decode_857xint32_STRBYTES 3428 -#define PQCLEAN_NTRULPR857_CLEAN_crypto_decode_857xint32_ITEMBYTES 4 -#define PQCLEAN_NTRULPR857_CLEAN_crypto_decode_857xint32_ITEMS 857 - -void PQCLEAN_NTRULPR857_CLEAN_crypto_decode_857xint32(void *v, const unsigned char *s); -#endif diff --git a/src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_256x16.c b/src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_256x16.c deleted file mode 100644 index 81f8c4d2..00000000 --- a/src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_256x16.c +++ /dev/null @@ -1,10 +0,0 @@ -#include "crypto_encode_256x16.h" - - -void PQCLEAN_NTRULPR857_CLEAN_crypto_encode_256x16(unsigned char *s, const void *v) { - const unsigned char *T = v; - int i; - for (i = 0; i < 128; ++i) { - s[i] = (unsigned char) (T[2 * i] + (T[2 * i + 1] << 4)); - } -} diff --git a/src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_256x16.h b/src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_256x16.h deleted file mode 100644 index 30213833..00000000 --- a/src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_256x16.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR857_CLEAN_CRYPTO_ENCODE_256X16_H -#define PQCLEAN_NTRULPR857_CLEAN_CRYPTO_ENCODE_256X16_H - -#include -#define PQCLEAN_NTRULPR857_CLEAN_crypto_encode_256x16_STRBYTES 128 -#define PQCLEAN_NTRULPR857_CLEAN_crypto_encode_256x16_ITEMS 256 -#define PQCLEAN_NTRULPR857_CLEAN_crypto_encode_256x16_ITEMBYTES 1 - -void PQCLEAN_NTRULPR857_CLEAN_crypto_encode_256x16(unsigned char *s, const void *v); -#endif diff --git a/src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_256x2.c b/src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_256x2.c deleted file mode 100644 index 8ce08dfe..00000000 --- a/src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_256x2.c +++ /dev/null @@ -1,13 +0,0 @@ -#include "crypto_encode_256x2.h" - - -void PQCLEAN_NTRULPR857_CLEAN_crypto_encode_256x2(unsigned char *s, const void *v) { - const unsigned char *r = v; - int i; - for (i = 0; i < 32; ++i) { - s[i] = 0; - } - for (i = 0; i < 256; ++i) { - s[i >> 3] |= (unsigned char) ((r[i] & 1) << (i & 7)); - } -} diff --git a/src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_256x2.h b/src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_256x2.h deleted file mode 100644 index 782cbf1f..00000000 --- a/src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_256x2.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR857_CLEAN_CRYPTO_ENCODE_256X2_H -#define PQCLEAN_NTRULPR857_CLEAN_CRYPTO_ENCODE_256X2_H - -#include -#define PQCLEAN_NTRULPR857_CLEAN_crypto_encode_256x2_STRBYTES 32 -#define PQCLEAN_NTRULPR857_CLEAN_crypto_encode_256x2_ITEMS 256 -#define PQCLEAN_NTRULPR857_CLEAN_crypto_encode_256x2_ITEMBYTES 1 - -void PQCLEAN_NTRULPR857_CLEAN_crypto_encode_256x2(unsigned char *s, const void *v); -#endif diff --git a/src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_857x1723.c b/src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_857x1723.c deleted file mode 100644 index 5fa2db62..00000000 --- a/src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_857x1723.c +++ /dev/null @@ -1,130 +0,0 @@ -#include "crypto_encode_857x1723.h" - -/* auto-generated; do not edit */ - -#define int16 int16_t -#define uint16 uint16_t -#define uint32 uint32_t - -void PQCLEAN_NTRULPR857_CLEAN_crypto_encode_857x1723(unsigned char *out, const void *v) { - const int16 *R0 = v; - /* XXX: caller could overlap R with input */ - uint16 R[429]; - long i; - uint16 r0, r1; - uint32 r2; - - for (i = 0; i < 428; ++i) { - r0 = (uint16) ((((R0[2 * i] + 2583) & 16383) * 10923) >> 15); - r1 = (uint16) ((((R0[2 * i + 1] + 2583) & 16383) * 10923) >> 15); - r2 = r0 + r1 * (uint32)1723; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - R[428] = (uint16) ((((R0[856] + 2583) & 16383) * 10923) >> 15); - - for (i = 0; i < 214; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)11597; - *out++ = (unsigned char) r2; - r2 >>= 8; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - R[214] = R[428]; - - for (i = 0; i < 107; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)2053; - *out++ = (unsigned char) r2; - r2 >>= 8; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - R[107] = R[214]; - - for (i = 0; i < 53; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)65; - R[i] = (uint16) r2; - } - r0 = R[106]; - r1 = R[107]; - r2 = r0 + r1 * (uint32)65; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[53] = (uint16) r2; - - for (i = 0; i < 26; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)4225; - *out++ = (unsigned char) r2; - r2 >>= 8; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - r0 = R[52]; - r1 = R[53]; - r2 = r0 + r1 * (uint32)4225; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[26] = (uint16) r2; - - for (i = 0; i < 13; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)273; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - R[13] = R[26]; - - for (i = 0; i < 7; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)292; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - - for (i = 0; i < 3; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)334; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - R[3] = R[6]; - - for (i = 0; i < 2; ++i) { - r0 = R[2 * i]; - r1 = R[2 * i + 1]; - r2 = r0 + r1 * (uint32)436; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[i] = (uint16) r2; - } - - r0 = R[0]; - r1 = R[1]; - r2 = r0 + r1 * (uint32)743; - *out++ = (unsigned char) r2; - r2 >>= 8; - *out++ = (unsigned char) r2; - r2 >>= 8; - R[0] = (uint16) r2; - - r0 = R[0]; - *out++ = (unsigned char) r0; -} diff --git a/src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_857x1723.h b/src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_857x1723.h deleted file mode 100644 index ce1754bc..00000000 --- a/src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_857x1723.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR857_CLEAN_CRYPTO_ENCODE_857X1723_H -#define PQCLEAN_NTRULPR857_CLEAN_CRYPTO_ENCODE_857X1723_H - -#include -#define PQCLEAN_NTRULPR857_CLEAN_crypto_encode_857x1723_STRBYTES 1152 -#define PQCLEAN_NTRULPR857_CLEAN_crypto_encode_857x1723_ITEMS 857 -#define PQCLEAN_NTRULPR857_CLEAN_crypto_encode_857x1723_ITEMBYTES 2 - -void PQCLEAN_NTRULPR857_CLEAN_crypto_encode_857x1723(unsigned char *out, const void *v); -#endif diff --git a/src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_857x1723round.c b/src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_857x1723round.c deleted file mode 100644 index 229bdc9d..00000000 --- a/src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_857x1723round.c +++ /dev/null @@ -1,17 +0,0 @@ -#include "crypto_encode_857x1723.h" -#include "crypto_encode_857x1723round.h" - -#define int16 int16_t - -#define p 857 - -void PQCLEAN_NTRULPR857_CLEAN_crypto_encode_857x1723round(unsigned char *out, const void *v) { - const int16 *a = v; - int16 x[p]; - int i; - - for (i = 0; i < p; ++i) { - x[i] = (int16) (3 * ((10923 * a[i] + 16384) >> 15)); - } - PQCLEAN_NTRULPR857_CLEAN_crypto_encode_857x1723(out, x); -} diff --git a/src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_857x1723round.h b/src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_857x1723round.h deleted file mode 100644 index 3dd8f78c..00000000 --- a/src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_857x1723round.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR857_CLEAN_CRYPTO_ENCODE_857X1723ROUND_H -#define PQCLEAN_NTRULPR857_CLEAN_CRYPTO_ENCODE_857X1723ROUND_H - -#include -#define PQCLEAN_NTRULPR857_CLEAN_crypto_encode_857x1723round_STRBYTES 1152 -#define PQCLEAN_NTRULPR857_CLEAN_crypto_encode_857x1723round_ITEMS 857 -#define PQCLEAN_NTRULPR857_CLEAN_crypto_encode_857x1723round_ITEMBYTES 2 - -void PQCLEAN_NTRULPR857_CLEAN_crypto_encode_857x1723round(unsigned char *out, const void *v); -#endif diff --git a/src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_857x3.c b/src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_857x3.c deleted file mode 100644 index b19644b4..00000000 --- a/src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_857x3.c +++ /dev/null @@ -1,21 +0,0 @@ -#include "crypto_encode_857x3.h" - -#define uint8 uint8_t - -#define p 857 - -void PQCLEAN_NTRULPR857_CLEAN_crypto_encode_857x3(unsigned char *s, const void *v) { - const uint8 *f = v; - uint8 x; - int i; - - for (i = 0; i < p / 4; ++i) { - x = *f++ + 1; - x += (*f++ + 1) << 2; - x += (*f++ + 1) << 4; - x += (*f++ + 1) << 6; - *s++ = x; - } - x = *f++ + 1; - *s++ = x; -} diff --git a/src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_857x3.h b/src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_857x3.h deleted file mode 100644 index e9fafe77..00000000 --- a/src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_857x3.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR857_CLEAN_CRYPTO_ENCODE_857X3_H -#define PQCLEAN_NTRULPR857_CLEAN_CRYPTO_ENCODE_857X3_H - -#include -#define PQCLEAN_NTRULPR857_CLEAN_crypto_encode_857x3_STRBYTES 215 -#define PQCLEAN_NTRULPR857_CLEAN_crypto_encode_857x3_ITEMS 857 -#define PQCLEAN_NTRULPR857_CLEAN_crypto_encode_857x3_ITEMBYTES 1 - -void PQCLEAN_NTRULPR857_CLEAN_crypto_encode_857x3(unsigned char *s, const void *v); -#endif diff --git a/src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_857xint16.c b/src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_857xint16.c deleted file mode 100644 index 64c559c7..00000000 --- a/src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_857xint16.c +++ /dev/null @@ -1,13 +0,0 @@ -#include "crypto_encode_857xint16.h" - - -void PQCLEAN_NTRULPR857_CLEAN_crypto_encode_857xint16(unsigned char *s, const void *v) { - const uint16_t *x = v; - int i; - - for (i = 0; i < 857; ++i) { - uint16_t u = *x++; - *s++ = (unsigned char) u; - *s++ = (unsigned char) (u >> 8); - } -} diff --git a/src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_857xint16.h b/src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_857xint16.h deleted file mode 100644 index a6364ad8..00000000 --- a/src/kem/ntru_prime/ntrulpr857/clean/crypto_encode_857xint16.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef PQCLEAN_NTRULPR857_CLEAN_CRYPTO_ENCODE_857XINT16_H -#define PQCLEAN_NTRULPR857_CLEAN_CRYPTO_ENCODE_857XINT16_H - -#include -#define PQCLEAN_NTRULPR857_CLEAN_crypto_encode_857xint16_STRBYTES 1714 -#define PQCLEAN_NTRULPR857_CLEAN_crypto_encode_857xint16_ITEMBYTES 2 -#define PQCLEAN_NTRULPR857_CLEAN_crypto_encode_857xint16_ITEMS 857 - -void PQCLEAN_NTRULPR857_CLEAN_crypto_encode_857xint16(unsigned char *s, const void *v); -#endif diff --git a/src/kem/ntru_prime/ntrulpr857/clean/crypto_sort_int32.c b/src/kem/ntru_prime/ntrulpr857/clean/crypto_sort_int32.c deleted file mode 100644 index 354d5803..00000000 --- a/src/kem/ntru_prime/ntrulpr857/clean/crypto_sort_int32.c +++ /dev/null @@ -1,84 +0,0 @@ -#include "crypto_sort_int32.h" -#include - -#define int32 int32_t - -#define int32_MINMAX(a,b) \ - do { \ - int32_t ab = (b) ^ (a); \ - int32_t c = (int32_t)((int64_t)(b) - (int64_t)(a)); \ - c ^= ab & (c ^ (b)); \ - c >>= 31; \ - c &= ab; \ - (a) ^= c; \ - (b) ^= c; \ - } while(0) - -/* assume 2 <= n <= 0x40000000 */ -void PQCLEAN_NTRULPR857_CLEAN_crypto_sort_int32(int32_t *x, long long n) { - int32 top, p, q, r, i; - long long j; - - top = 1; - while (top < n - top) { - top += top; - } - - for (p = top; p >= 1; p >>= 1) { - i = 0; - while (i + 2 * p <= n) { - for (j = i; j < i + p; ++j) { - int32_MINMAX(x[j], x[j + p]); - } - i += 2 * p; - } - for (j = i; j < n - p; ++j) { - int32_MINMAX(x[j], x[j + p]); - } - - i = 0; - j = 0; - for (q = top; q > p; q >>= 1) { - if (j != i) { - for (;;) { - if (j == n - q) { - goto done; - } - int32 a = x[j + p]; - for (r = q; r > p; r >>= 1) { - int32_MINMAX(a, x[j + r]); - } - x[j + p] = a; - ++j; - if (j == i + p) { - i += 2 * p; - break; - } - } - } - while (i + p <= n - q) { - for (j = i; j < i + p; ++j) { - int32 a = x[j + p]; - for (r = q; r > p; r >>= 1) { - int32_MINMAX(a, x[j + r]); - } - x[j + p] = a; - } - i += 2 * p; - } - /* now i + p > n - q */ - j = i; - while (j < n - q) { - int32 a = x[j + p]; - for (r = q; r > p; r >>= 1) { - int32_MINMAX(a, x[j + r]); - } - x[j + p] = a; - ++j; - } - -done: - ; - } - } -} diff --git a/src/kem/ntru_prime/ntrulpr857/clean/crypto_sort_int32.h b/src/kem/ntru_prime/ntrulpr857/clean/crypto_sort_int32.h deleted file mode 100644 index 5d5ce6d5..00000000 --- a/src/kem/ntru_prime/ntrulpr857/clean/crypto_sort_int32.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef PQCLEAN_NTRULPR857_CLEAN_CRYPTO_SORT_INT32_H -#define PQCLEAN_NTRULPR857_CLEAN_CRYPTO_SORT_INT32_H - -#include -#define PQCLEAN_NTRULPR857_CLEAN_crypto_sort_int32_BYTES 4 - -void PQCLEAN_NTRULPR857_CLEAN_crypto_sort_int32(int32_t *x, long long n); -#endif diff --git a/src/kem/ntru_prime/ntrulpr857/clean/crypto_sort_uint32.c b/src/kem/ntru_prime/ntrulpr857/clean/crypto_sort_uint32.c deleted file mode 100644 index 3b57e595..00000000 --- a/src/kem/ntru_prime/ntrulpr857/clean/crypto_sort_uint32.c +++ /dev/null @@ -1,18 +0,0 @@ -#include "crypto_sort_int32.h" -#include "crypto_sort_uint32.h" - - -/* can save time by vectorizing xor loops */ -/* can save time by integrating xor loops with int32_sort */ - -void PQCLEAN_NTRULPR857_CLEAN_crypto_sort_uint32(void *array, long long n) { - uint32_t *x = array; - long long j; - for (j = 0; j < n; ++j) { - x[j] ^= 0x80000000; - } - PQCLEAN_NTRULPR857_CLEAN_crypto_sort_int32((int32_t *)array, n); - for (j = 0; j < n; ++j) { - x[j] ^= 0x80000000; - } -} diff --git a/src/kem/ntru_prime/ntrulpr857/clean/crypto_sort_uint32.h b/src/kem/ntru_prime/ntrulpr857/clean/crypto_sort_uint32.h deleted file mode 100644 index 95e957c8..00000000 --- a/src/kem/ntru_prime/ntrulpr857/clean/crypto_sort_uint32.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef PQCLEAN_NTRULPR857_CLEAN_CRYPTO_SORT_UINT32_H -#define PQCLEAN_NTRULPR857_CLEAN_CRYPTO_SORT_UINT32_H - -#include -#define PQCLEAN_NTRULPR857_CLEAN_crypto_sort_uint32_BYTES 4 - -void PQCLEAN_NTRULPR857_CLEAN_crypto_sort_uint32(void *array, long long n); -#endif diff --git a/src/kem/ntru_prime/ntrulpr857/clean/crypto_stream_aes256ctr.c b/src/kem/ntru_prime/ntrulpr857/clean/crypto_stream_aes256ctr.c deleted file mode 100644 index ee3f9d76..00000000 --- a/src/kem/ntru_prime/ntrulpr857/clean/crypto_stream_aes256ctr.c +++ /dev/null @@ -1,15 +0,0 @@ -#include "crypto_stream_aes256ctr.h" - - -int PQCLEAN_NTRULPR857_CLEAN_crypto_stream_aes256ctr( - uint8_t *out, - size_t outlen, - const uint8_t nonce[AESCTR_NONCEBYTES], - const uint8_t key[AES256_KEYBYTES]) { - - aes256ctx state; - aes256_ctr_keyexp(&state, key); - aes256_ctr(out, outlen, nonce, &state); - aes256_ctx_release(&state); - return 0; -} diff --git a/src/kem/ntru_prime/ntrulpr857/clean/crypto_stream_aes256ctr.h b/src/kem/ntru_prime/ntrulpr857/clean/crypto_stream_aes256ctr.h deleted file mode 100644 index 409df71a..00000000 --- a/src/kem/ntru_prime/ntrulpr857/clean/crypto_stream_aes256ctr.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef PQCLEAN_NTRULPR857_CLEAN_CRYPTO_STREAM_AES256CTR_H -#define PQCLEAN_NTRULPR857_CLEAN_CRYPTO_STREAM_AES256CTR_H -#include "aes.h" -#include -#include - - - -int PQCLEAN_NTRULPR857_CLEAN_crypto_stream_aes256ctr( - uint8_t *out, - size_t outlen, - const uint8_t nonce[AESCTR_NONCEBYTES], - const uint8_t key[AES256_KEYBYTES]); - -#endif diff --git a/src/kem/ntru_prime/ntrulpr857/clean/crypto_verify_1312.c b/src/kem/ntru_prime/ntrulpr857/clean/crypto_verify_1312.c deleted file mode 100644 index 491e38e3..00000000 --- a/src/kem/ntru_prime/ntrulpr857/clean/crypto_verify_1312.c +++ /dev/null @@ -1,13 +0,0 @@ -#include "crypto_verify_1312.h" - - -int PQCLEAN_NTRULPR857_CLEAN_crypto_verify_1312(const unsigned char *x, const unsigned char *y) { - unsigned int differentbits = 0; - int i; - - for (i = 0; i < PQCLEAN_NTRULPR857_CLEAN_crypto_verify_1312_BYTES; ++i) { - differentbits |= x[i] ^ y[i]; - } - - return (int) (1 & ((differentbits - 1) >> 8)) - 1; -} diff --git a/src/kem/ntru_prime/ntrulpr857/clean/crypto_verify_1312.h b/src/kem/ntru_prime/ntrulpr857/clean/crypto_verify_1312.h deleted file mode 100644 index b1468aa6..00000000 --- a/src/kem/ntru_prime/ntrulpr857/clean/crypto_verify_1312.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef PQCLEAN_NTRULPR857_CLEAN_CRYPTO_VERIFY_1312_H -#define PQCLEAN_NTRULPR857_CLEAN_CRYPTO_VERIFY_1312_H - -#include -#define PQCLEAN_NTRULPR857_CLEAN_crypto_verify_1312_BYTES 1312 - -int PQCLEAN_NTRULPR857_CLEAN_crypto_verify_1312(const unsigned char *x, const unsigned char *y); -#endif diff --git a/src/kem/ntru_prime/ntrulpr857/clean/kem.c b/src/kem/ntru_prime/ntrulpr857/clean/kem.c deleted file mode 100644 index f07b1651..00000000 --- a/src/kem/ntru_prime/ntrulpr857/clean/kem.c +++ /dev/null @@ -1,287 +0,0 @@ -#include "api.h" -#include "crypto_sort_uint32.h" -#include "crypto_stream_aes256ctr.h" -#include "params.h" -#include "randombytes.h" -#include "sha2.h" - - - -#define int8 int8_t -#define int16 int16_t -#define int32 int32_t -#define uint16 uint16_t -#define uint32 uint32_t -#define uint64 uint64_t - -/* ----- masks */ - -/* return -1 if x<0; otherwise return 0 */ -static int int16_negative_mask(int16 x) { - uint16 u = (uint16) x; - u >>= 15; - return -(int) u; - /* alternative with gcc -fwrapv: */ - /* x>>15 compiles to CPU's arithmetic right shift */ -} - -/* ----- arithmetic mod 3 */ - -typedef int8 small; -/* F3 is always represented as -1,0,1 */ - -/* ----- arithmetic mod q */ - -#define q12 ((q-1)/2) -typedef int16 Fq; - -/* works for -14000000 < x < 14000000 if q in 4591, 4621, 5167 */ -/* assumes twos complement; use, e.g., gcc -fwrapv */ -static Fq Fq_freeze(int32 x) { - x -= (int32) (q * ((q18 * x) >> 18)); - x -= (int32) (q * ((q27 * x + 67108864) >> 27)); - return (Fq) x; -} - -/* works for all uint32 x */ -static Fq Fq_bigfreeze(uint32 x) { - x -= (uint32) (q * ((x * (uint64)q31) >> 31)); - x -= (uint32) (q * ((x * (uint64)q31) >> 31)); - x -= q; - x += (~(x >> 31) + 1) & (uint32)q; - return (Fq) x; -} - -/* ----- Top and Right */ - -static int8 Top(Fq C) { - return (int8) ((tau1 * (int32)(C + tau0) + 16384) >> 15); -} - -static Fq Right(int8 T) { - return Fq_freeze(tau3 * (int32)T - tau2); -} - -/* ----- polynomials mod q */ - -/* h = h*g in the ring Rq */ -static void Rq_mult_small(Fq *h, const small *g) { - crypto_encode_pxint16((unsigned char *) h, h); - crypto_core_mult((unsigned char *) h, (const unsigned char *) h, (const unsigned char *) g); - crypto_decode_pxint16(h, (const unsigned char *) h); -} - -/* ----- sorting to generate short polynomial */ - -static void Short_fromlist(small *out, const uint32 *in) { - uint32 L[ppadsort]; - int i; - - for (i = 0; i < w; ++i) { - L[i] = in[i] & (uint32) - 2; - } - for (i = w; i < p; ++i) { - L[i] = (in[i] & (uint32) - 3) | 1; - } - for (i = p; i < ppadsort; ++i) { - L[i] = 0xffffffff; - } - PQCLEAN_NTRULPR857_CLEAN_crypto_sort_uint32(L, ppadsort); - for (i = 0; i < p; ++i) { - out[i] = (small) ((L[i] & 3) - 1); - } -} - -/* ----- underlying hash function */ - -#define Hash_bytes 32 - -static void Hash(unsigned char *out, const unsigned char *in, int inlen) { - unsigned char h[64]; - int i; - sha512(h, in, (size_t) inlen); - for (i = 0; i < 32; ++i) { - out[i] = h[i]; - } -} - -/* ----- higher-level randomness */ - -static void Short_random(small *out) { - uint32 L[p]; - - randombytes((unsigned char *) L, sizeof L); - crypto_decode_pxint32(L, (unsigned char *) L); - Short_fromlist(out, L); -} - -/* ----- Inputs, Generator */ - -typedef int8 Inputs[I]; /* passed by reference */ - -static const unsigned char aes_nonce[16] = {0}; - -/* G = Generator(pk) */ -static void Generator(Fq *G, const unsigned char *pk) { - uint32 L[p]; - int i; - - PQCLEAN_NTRULPR857_CLEAN_crypto_stream_aes256ctr((unsigned char *) L, 4 * p, aes_nonce, pk); - crypto_decode_pxint32(L, (unsigned char *) L); - for (i = 0; i < p; ++i) { - G[i] = Fq_bigfreeze(L[i]) - q12; - } -} - -/* ----- NTRU LPRime */ - -#define Seeds_bytes 32 -#define Ciphertexts_bytes (Rounded_bytes+Top_bytes) -#define SecretKeys_bytes Small_bytes -#define PublicKeys_bytes (Seeds_bytes+Rounded_bytes) -#define Confirm_bytes 32 - -/* c,r_enc[1:] = Hide(r,pk,cache); cache is Hash4(pk) */ -static void Hide(unsigned char *c, unsigned char *r_enc, const Inputs r, const unsigned char *pk, const unsigned char *cache) { - small b[p]; - int i; - - Inputs_encode(r_enc + 1, r); - { - unsigned char h[Hash_bytes]; - uint32 L[p]; - { - unsigned char s[1 + Inputs_bytes]; - Inputs_encode(s + 1, r); - s[0] = 5; - Hash(h, s, sizeof s); - } - PQCLEAN_NTRULPR857_CLEAN_crypto_stream_aes256ctr((unsigned char *) L, 4 * p, aes_nonce, h); - crypto_decode_pxint32(L, (unsigned char *) L); - Short_fromlist(b, L); - } - { - Fq bG[p]; - Generator(bG, pk); - Rq_mult_small(bG, b); - Round_and_encode(c, bG); - c += Rounded_bytes; - } - { - Fq bA[p]; - int8 T[I]; - Rounded_decode(bA, pk + Seeds_bytes); - Rq_mult_small(bA, b); - for (i = 0; i < I; ++i) { - T[i] = Top(Fq_freeze(bA[i] + r[i] * q12)); - } - Top_encode(c, T); - c += Top_bytes; - } - { - unsigned char x[1 + Inputs_bytes + Hash_bytes]; - for (i = 0; i < Inputs_bytes; ++i) { - x[1 + i] = r_enc[1 + i]; - } - for (i = 0; i < Hash_bytes; ++i) { - x[1 + Inputs_bytes + i] = cache[i]; - } - x[0] = 2; - Hash(c, x, sizeof x); - } -} - - -int PQCLEAN_NTRULPR857_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk) { - Fq aG[p]; - int i; - randombytes(pk, Seeds_bytes); - Generator(aG, pk); - { - small a[p]; - Short_random(a); - Rq_mult_small(aG, a); - Small_encode(sk, a); - } - Round_and_encode(pk + Seeds_bytes, aG); - { - unsigned char sksave = sk[SecretKeys_bytes - 1]; - for (i = 0; i < PublicKeys_bytes; ++i) { - sk[SecretKeys_bytes + i] = pk[i]; - } - sk[SecretKeys_bytes - 1] = 4; - Hash(sk + SecretKeys_bytes + PublicKeys_bytes + Inputs_bytes, sk + SecretKeys_bytes - 1, 1 + PublicKeys_bytes); - sk[SecretKeys_bytes - 1] = sksave; - randombytes(sk + SecretKeys_bytes + PublicKeys_bytes, Inputs_bytes); - } - return 0; -} - -int PQCLEAN_NTRULPR857_CLEAN_crypto_kem_enc(unsigned char *c, unsigned char *k, const unsigned char *pk) { - int i; - unsigned char cache[Hash_bytes]; - { - unsigned char y[1 + PublicKeys_bytes]; - for (i = 0; i < PublicKeys_bytes; ++i) { - y[1 + i] = pk[i]; - } - y[0] = 4; - Hash(cache, y, sizeof y); - } - Inputs r; - { - unsigned char s[Inputs_bytes]; - randombytes(s, sizeof s); - Inputs_decode(r, s); - } - { - unsigned char x[1 + Inputs_bytes + Ciphertexts_bytes + Confirm_bytes]; - Hide(c, x, r, pk, cache); - for (i = 0; i < Ciphertexts_bytes + Confirm_bytes; ++i) { - x[1 + Inputs_bytes + i] = c[i]; - } - x[0] = 1; - Hash(k, x, sizeof x); - } - return 0; -} - -int PQCLEAN_NTRULPR857_CLEAN_crypto_kem_dec(unsigned char *k, const unsigned char *c, const unsigned char *sk) { - const unsigned char *pk = sk + SecretKeys_bytes; - const unsigned char *rho = pk + PublicKeys_bytes; - const unsigned char *cache = rho + Inputs_bytes; - Inputs r; - int i; - { - Fq aB[p]; - Rounded_decode(aB, c); - { - small a[p]; - Small_decode(a, sk); - Rq_mult_small(aB, a); - } - { - int8 T[I]; - Top_decode(T, c + Rounded_bytes); - for (i = 0; i < I; ++i) { - r[i] = (int8) - int16_negative_mask(Fq_freeze(Right(T[i]) - aB[i] + 4 * w + 1)); - } - } - } - { - unsigned char cnew[Ciphertexts_bytes + Confirm_bytes]; - int mask; - unsigned char x[1 + Inputs_bytes + Ciphertexts_bytes + Confirm_bytes]; - Hide(cnew, x, r, pk, cache); - mask = crypto_verify_clen(c, cnew); - for (i = 0; i < Inputs_bytes; ++i) { - x[1 + i] ^= (unsigned char) (mask & (x[1 + i] ^ rho[i])); - } - for (i = 0; i < Ciphertexts_bytes + Confirm_bytes; ++i) { - x[1 + Inputs_bytes + i] = c[i]; - } - x[0] = (unsigned char) (1 + mask); - Hash(k, x, sizeof x); - } - return 0; -} diff --git a/src/kem/ntru_prime/ntrulpr857/clean/params.h b/src/kem/ntru_prime/ntrulpr857/clean/params.h deleted file mode 100644 index 1244db89..00000000 --- a/src/kem/ntru_prime/ntrulpr857/clean/params.h +++ /dev/null @@ -1,65 +0,0 @@ -#ifndef params_H -#define params_H -#include "crypto_core_multsntrup857.h" -#include "crypto_decode_256x16.h" -#include "crypto_decode_256x2.h" -#include "crypto_decode_857x1723.h" -#include "crypto_decode_857x3.h" -#include "crypto_decode_857xint16.h" -#include "crypto_decode_857xint32.h" -#include "crypto_encode_256x16.h" -#include "crypto_encode_256x2.h" -#include "crypto_encode_857x1723.h" -#include "crypto_encode_857x1723round.h" -#include "crypto_encode_857x3.h" -#include "crypto_encode_857xint16.h" -#include "crypto_sort_int32.h" -#include "crypto_sort_uint32.h" -#include "crypto_verify_1312.h" - - -#define p 857 -#define q27 25976 /* closest integer to 2^27/q */ -#define q18 51 /* closest integer to 2^18/q */ -#define q 5167 -#define w 281 -#define tau0 2433 -#define tau1 101 -#define tau2 2265 -#define tau3 324 -#define I 256 - -#define ppadsort 857 - -#define q18 51 /* round(2^18/q) */ -#define q27 25976 /* round(2^27/q) */ -#define q31 415615 /* floor(2^31/q) */ - -#define crypto_verify_clen PQCLEAN_NTRULPR857_CLEAN_crypto_verify_1312 - -#define Rounded_bytes PQCLEAN_NTRULPR857_CLEAN_crypto_decode_857x1723_STRBYTES -#define Rounded_decode PQCLEAN_NTRULPR857_CLEAN_crypto_decode_857x1723 - -#define Round_and_encode PQCLEAN_NTRULPR857_CLEAN_crypto_encode_857x1723round - -#define Small_bytes PQCLEAN_NTRULPR857_CLEAN_crypto_encode_857x3_STRBYTES -#define Small_encode PQCLEAN_NTRULPR857_CLEAN_crypto_encode_857x3 -#define Small_decode PQCLEAN_NTRULPR857_CLEAN_crypto_decode_857x3 - -#define Top_bytes PQCLEAN_NTRULPR857_CLEAN_crypto_encode_256x16_STRBYTES -#define Top_encode PQCLEAN_NTRULPR857_CLEAN_crypto_encode_256x16 -#define Top_decode PQCLEAN_NTRULPR857_CLEAN_crypto_decode_256x16 - -#define Inputs_bytes PQCLEAN_NTRULPR857_CLEAN_crypto_encode_256x2_STRBYTES -#define Inputs_encode PQCLEAN_NTRULPR857_CLEAN_crypto_encode_256x2 -#define Inputs_decode PQCLEAN_NTRULPR857_CLEAN_crypto_decode_256x2 - -#define crypto_decode_pxint32 PQCLEAN_NTRULPR857_CLEAN_crypto_decode_857xint32 - -#define crypto_decode_pxint16 PQCLEAN_NTRULPR857_CLEAN_crypto_decode_857xint16 - -#define crypto_encode_pxint16 PQCLEAN_NTRULPR857_CLEAN_crypto_encode_857xint16 - -#define crypto_core_mult PQCLEAN_NTRULPR857_CLEAN_crypto_core_multsntrup857 - -#endif diff --git a/src/kem/saber/firesaber/avx2/CMakeLists.txt b/src/kem/saber/firesaber/avx2/CMakeLists.txt deleted file mode 100644 index 6be6885b..00000000 --- a/src/kem/saber/firesaber/avx2/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -set( - SRC_AVX2_FIRESABER - cbd.c - kem.c - pack_unpack.c - poly.c - poly_mul.c - SABER_indcpa.c - verify.c) - -define_kem_alg( - firesaber_avx2 - PQCLEAN_FIRESABER_AVX2 "${SRC_AVX2_FIRESABER}" "${CMAKE_CURRENT_SOURCE_DIR}") diff --git a/src/kem/saber/firesaber/avx2/SABER_indcpa.c b/src/kem/saber/firesaber/avx2/SABER_indcpa.c deleted file mode 100644 index 285a6625..00000000 --- a/src/kem/saber/firesaber/avx2/SABER_indcpa.c +++ /dev/null @@ -1,125 +0,0 @@ -#include "SABER_indcpa.h" -#include "SABER_params.h" -#include "fips202.h" -#include "pack_unpack.h" -#include "poly.h" -#include "randombytes.h" -#include -#include - -#define h1 (1 << (SABER_EQ - SABER_EP - 1)) -#define h2 ((1 << (SABER_EP - 2)) - (1 << (SABER_EP - SABER_ET - 1)) + (1 << (SABER_EQ - SABER_EP - 1))) - -void PQCLEAN_FIRESABER_AVX2_indcpa_kem_keypair(uint8_t pk[SABER_INDCPA_PUBLICKEYBYTES], uint8_t sk[SABER_INDCPA_SECRETKEYBYTES]) { - size_t i, j; - - poly A[SABER_L][SABER_L]; - poly *skpv1 = A[0]; // use first row of A to hold sk temporarily - toom4_points skpv1_eval[SABER_L]; - poly res[SABER_L]; - - uint8_t rand[SABER_NOISESEEDBYTES]; - uint8_t *seed_A = pk + SABER_POLYVECCOMPRESSEDBYTES; - - randombytes(seed_A, SABER_SEEDBYTES); - shake128(seed_A, SABER_SEEDBYTES, seed_A, SABER_SEEDBYTES); // for not revealing system RNG state - - randombytes(rand, SABER_NOISESEEDBYTES); - PQCLEAN_FIRESABER_AVX2_GenSecret(skpv1, rand); - PQCLEAN_FIRESABER_AVX2_POLVECq2BS(sk, skpv1); // pack secret key - - for (j = 0; j < SABER_L; j++) { - PQCLEAN_FIRESABER_AVX2_toom4_eval(&skpv1_eval[j], &skpv1[j]); - } - - PQCLEAN_FIRESABER_AVX2_GenMatrix(A, seed_A); // sample matrix A - PQCLEAN_FIRESABER_AVX2_MatrixVectorMul(res, (const poly (*)[SABER_L])A, (const toom4_points *)skpv1_eval, 1); // Matrix in transposed order - - // rounding - for (i = 0; i < SABER_L; i++) { - for (j = 0; j < SABER_N; j++) { - res[i].coeffs[j] += h1; - res[i].coeffs[j] >>= SABER_EQ - SABER_EP; - res[i].coeffs[j] &= SABER_Q - 1; - } - } - - PQCLEAN_FIRESABER_AVX2_POLVECp2BS(pk, res); // pack public key -} - - -void PQCLEAN_FIRESABER_AVX2_indcpa_kem_enc(uint8_t ciphertext[SABER_BYTES_CCA_DEC], const uint8_t m[SABER_KEYBYTES], const uint8_t noiseseed[SABER_NOISESEEDBYTES], const uint8_t pk[SABER_INDCPA_PUBLICKEYBYTES]) { - size_t i, j; - - poly A[SABER_L][SABER_L]; - poly res[SABER_L]; - toom4_points skpv1_eval[SABER_L]; - - poly *temp = A[0]; // re-use stack space - poly *vprime = &A[0][0]; - poly *message = &A[0][1]; - - const uint8_t *seed_A = pk + SABER_POLYVECCOMPRESSEDBYTES; - uint8_t *msk_c = ciphertext + SABER_POLYVECCOMPRESSEDBYTES; - - PQCLEAN_FIRESABER_AVX2_GenSecret(temp, noiseseed); - for (j = 0; j < SABER_L; j++) { - PQCLEAN_FIRESABER_AVX2_toom4_eval(&skpv1_eval[j], &temp[j]); - } - - PQCLEAN_FIRESABER_AVX2_GenMatrix(A, seed_A); - PQCLEAN_FIRESABER_AVX2_MatrixVectorMul(res, (const poly (*)[SABER_L])A, (const toom4_points *)skpv1_eval, 0); // 0 => not transposed - - // rounding - for (i = 0; i < SABER_L; i++) { //shift right EQ-EP bits - for (j = 0; j < SABER_N; j++) { - res[i].coeffs[j] += h1; - res[i].coeffs[j] >>= SABER_EQ - SABER_EP; - res[i].coeffs[j] &= SABER_Q - 1; - } - } - PQCLEAN_FIRESABER_AVX2_POLVECp2BS(ciphertext, res); - - // vector-vector scalar multiplication with mod p - PQCLEAN_FIRESABER_AVX2_BS2POLVECp(temp, pk); - PQCLEAN_FIRESABER_AVX2_InnerProd(vprime, temp, skpv1_eval); - PQCLEAN_FIRESABER_AVX2_BS2POLmsg(message, m); - - for (i = 0; i < SABER_N; i++) { - vprime->coeffs[i] += h1 - (message->coeffs[i] << (SABER_EP - 1)); - vprime->coeffs[i] &= SABER_P - 1; - vprime->coeffs[i] >>= SABER_EP - SABER_ET; - } - - PQCLEAN_FIRESABER_AVX2_POLT2BS(msk_c, vprime); -} - - -void PQCLEAN_FIRESABER_AVX2_indcpa_kem_dec(uint8_t m[SABER_KEYBYTES], const uint8_t sk[SABER_INDCPA_SECRETKEYBYTES], const uint8_t ciphertext[SABER_BYTES_CCA_DEC]) { - size_t i; - - poly temp[SABER_L]; - toom4_points sksv_eval[SABER_L]; - - const uint8_t *packed_cm = ciphertext + SABER_POLYVECCOMPRESSEDBYTES; - poly *v = &temp[0]; - poly *cm = &temp[1]; - - PQCLEAN_FIRESABER_AVX2_BS2POLVECq(temp, sk); - for (i = 0; i < SABER_L; i++) { - PQCLEAN_FIRESABER_AVX2_toom4_eval(&sksv_eval[i], &temp[i]); - } - - PQCLEAN_FIRESABER_AVX2_BS2POLVECp(temp, ciphertext); - PQCLEAN_FIRESABER_AVX2_InnerProd(v, temp, sksv_eval); - - PQCLEAN_FIRESABER_AVX2_BS2POLT(cm, packed_cm); - - for (i = 0; i < SABER_N; i++) { - v->coeffs[i] += h2 - (cm->coeffs[i] << (SABER_EP - SABER_ET)); - v->coeffs[i] &= SABER_P - 1; - v->coeffs[i] >>= SABER_EP - 1; - } - - PQCLEAN_FIRESABER_AVX2_POLmsg2BS(m, v); -} diff --git a/src/kem/saber/firesaber/avx2/SABER_indcpa.h b/src/kem/saber/firesaber/avx2/SABER_indcpa.h deleted file mode 100644 index 1b6c8311..00000000 --- a/src/kem/saber/firesaber/avx2/SABER_indcpa.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef INDCPA_H -#define INDCPA_H -#include "SABER_params.h" -#include - -void PQCLEAN_FIRESABER_AVX2_indcpa_kem_keypair(uint8_t pk[SABER_INDCPA_PUBLICKEYBYTES], uint8_t sk[SABER_INDCPA_SECRETKEYBYTES]); - -void PQCLEAN_FIRESABER_AVX2_indcpa_kem_enc(uint8_t ciphertext[SABER_BYTES_CCA_DEC], const uint8_t m[SABER_KEYBYTES], const uint8_t noiseseed[SABER_NOISESEEDBYTES], const uint8_t pk[SABER_INDCPA_PUBLICKEYBYTES]); - -void PQCLEAN_FIRESABER_AVX2_indcpa_kem_dec(uint8_t m[SABER_KEYBYTES], const uint8_t sk[SABER_INDCPA_SECRETKEYBYTES], const uint8_t ciphertext[SABER_BYTES_CCA_DEC]); - - -#endif diff --git a/src/kem/saber/firesaber/avx2/SABER_params.h b/src/kem/saber/firesaber/avx2/SABER_params.h deleted file mode 100644 index 6481efec..00000000 --- a/src/kem/saber/firesaber/avx2/SABER_params.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef PARAMS_H -#define PARAMS_H - - -/* Don't change anything below this line */ -#define SABER_L 4 -#define SABER_MU 6 -#define SABER_ET 6 - -#define SABER_N 256 - -#define SABER_EP 10 -#define SABER_P (1 << SABER_EP) - -#define SABER_EQ 13 -#define SABER_Q (1 << SABER_EQ) - -#define SABER_SEEDBYTES 32 -#define SABER_NOISESEEDBYTES 32 -#define SABER_KEYBYTES 32 -#define SABER_HASHBYTES 32 - -#define SABER_POLYCOINBYTES (SABER_MU * SABER_N / 8) - -#define SABER_POLYBYTES (SABER_EQ * SABER_N / 8) -#define SABER_POLYVECBYTES (SABER_L * SABER_POLYBYTES) - -#define SABER_POLYCOMPRESSEDBYTES (SABER_EP * SABER_N / 8) -#define SABER_POLYVECCOMPRESSEDBYTES (SABER_L * SABER_POLYCOMPRESSEDBYTES) - -#define SABER_SCALEBYTES_KEM (SABER_ET * SABER_N / 8) - -#define SABER_INDCPA_PUBLICKEYBYTES (SABER_POLYVECCOMPRESSEDBYTES + SABER_SEEDBYTES) -#define SABER_INDCPA_SECRETKEYBYTES (SABER_POLYVECBYTES) - -#define SABER_PUBLICKEYBYTES (SABER_INDCPA_PUBLICKEYBYTES) -#define SABER_SECRETKEYBYTES (SABER_INDCPA_SECRETKEYBYTES + SABER_INDCPA_PUBLICKEYBYTES + SABER_HASHBYTES + SABER_KEYBYTES) - -#define SABER_BYTES_CCA_DEC (SABER_POLYVECCOMPRESSEDBYTES + SABER_SCALEBYTES_KEM) - -#endif diff --git a/src/kem/saber/firesaber/avx2/api.h b/src/kem/saber/firesaber/avx2/api.h deleted file mode 100644 index cb5240dd..00000000 --- a/src/kem/saber/firesaber/avx2/api.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef PQCLEAN_FIRESABER_AVX2_API_H -#define PQCLEAN_FIRESABER_AVX2_API_H - - -#define PQCLEAN_FIRESABER_AVX2_CRYPTO_ALGNAME "FireSaber" -#define PQCLEAN_FIRESABER_AVX2_CRYPTO_BYTES 32 -#define PQCLEAN_FIRESABER_AVX2_CRYPTO_CIPHERTEXTBYTES 1472 -#define PQCLEAN_FIRESABER_AVX2_CRYPTO_PUBLICKEYBYTES 1312 -#define PQCLEAN_FIRESABER_AVX2_CRYPTO_SECRETKEYBYTES 3040 - -int PQCLEAN_FIRESABER_AVX2_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); - -int PQCLEAN_FIRESABER_AVX2_crypto_kem_enc(unsigned char *ct, unsigned char *k, const unsigned char *pk); - -int PQCLEAN_FIRESABER_AVX2_crypto_kem_dec(unsigned char *k, const unsigned char *ct, const unsigned char *sk); - - -#endif /* PQCLEAN_FIRESABER_AVX2_API_H */ diff --git a/src/kem/saber/firesaber/avx2/cbd.c b/src/kem/saber/firesaber/avx2/cbd.c deleted file mode 100644 index 0da0876f..00000000 --- a/src/kem/saber/firesaber/avx2/cbd.c +++ /dev/null @@ -1,48 +0,0 @@ -#include "SABER_params.h" -#include "api.h" -#include "cbd.h" -#include -/*--------------------------------------------------------------------- -This file has been adapted from the implementation -(available at, Public Domain https://github.com/pq-crystals/kyber) -of "CRYSTALS – Kyber: a CCA-secure module-lattice-based KEM" -by : Joppe Bos, Leo Ducas, Eike Kiltz, Tancrede Lepoint, -Vadim Lyubashevsky, John M. Schanck, Peter Schwabe & Damien stehle -----------------------------------------------------------------------*/ - - -static uint64_t load_littleendian(const uint8_t *x, int bytes) { - int i; - uint64_t r = x[0]; - for (i = 1; i < bytes; i++) { - r |= (uint64_t)x[i] << (8 * i); - } - return r; -} - -void PQCLEAN_FIRESABER_AVX2_cbd(uint16_t s[SABER_N], const uint8_t buf[SABER_POLYCOINBYTES]) { - uint32_t t, d, a[4], b[4]; - int i, j; - - for (i = 0; i < SABER_N / 4; i++) { - t = (uint32_t) load_littleendian(buf + 3 * i, 3); - d = 0; - for (j = 0; j < 3; j++) { - d += (t >> j) & 0x249249; - } - - a[0] = d & 0x7; - b[0] = (d >> 3) & 0x7; - a[1] = (d >> 6) & 0x7; - b[1] = (d >> 9) & 0x7; - a[2] = (d >> 12) & 0x7; - b[2] = (d >> 15) & 0x7; - a[3] = (d >> 18) & 0x7; - b[3] = (d >> 21); - - s[4 * i + 0] = (uint16_t)(a[0] - b[0]); - s[4 * i + 1] = (uint16_t)(a[1] - b[1]); - s[4 * i + 2] = (uint16_t)(a[2] - b[2]); - s[4 * i + 3] = (uint16_t)(a[3] - b[3]); - } -} diff --git a/src/kem/saber/firesaber/avx2/cbd.h b/src/kem/saber/firesaber/avx2/cbd.h deleted file mode 100644 index dba55d9d..00000000 --- a/src/kem/saber/firesaber/avx2/cbd.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef CBD_H -#define CBD_H -/*--------------------------------------------------------------------- -This file has been adapted from the implementation -(available at, Public Domain https://github.com/pq-crystals/kyber) -of "CRYSTALS – Kyber: a CCA-secure module-lattice-based KEM" -by : Joppe Bos, Leo Ducas, Eike Kiltz, Tancrede Lepoint, -Vadim Lyubashevsky, John M. Schanck, Peter Schwabe & Damien stehle -----------------------------------------------------------------------*/ -#include "SABER_params.h" -#include - -void PQCLEAN_FIRESABER_AVX2_cbd(uint16_t s[SABER_N], const uint8_t buf[SABER_POLYCOINBYTES]); - - -#endif diff --git a/src/kem/saber/firesaber/avx2/kem.c b/src/kem/saber/firesaber/avx2/kem.c deleted file mode 100644 index 92c19a7d..00000000 --- a/src/kem/saber/firesaber/avx2/kem.c +++ /dev/null @@ -1,77 +0,0 @@ -#include "SABER_indcpa.h" -#include "SABER_params.h" -#include "api.h" -#include "fips202.h" -#include "randombytes.h" -#include "verify.h" -#include -#include - - -int PQCLEAN_FIRESABER_AVX2_crypto_kem_keypair(uint8_t *pk, uint8_t *sk) { - size_t i; - - PQCLEAN_FIRESABER_AVX2_indcpa_kem_keypair(pk, sk); // sk[0:SABER_INDCPA_SECRETKEYBYTES-1] <-- sk - for (i = 0; i < SABER_INDCPA_PUBLICKEYBYTES; i++) { - sk[i + SABER_INDCPA_SECRETKEYBYTES] = pk[i]; // sk[SABER_INDCPA_SECRETKEYBYTES:SABER_INDCPA_SECRETKEYBYTES+SABER_INDCPA_SECRETKEYBYTES-1] <-- pk - } - - sha3_256(sk + SABER_SECRETKEYBYTES - 64, pk, SABER_INDCPA_PUBLICKEYBYTES); // Then hash(pk) is appended. - - randombytes(sk + SABER_SECRETKEYBYTES - SABER_KEYBYTES, SABER_KEYBYTES); // Remaining part of sk contains a pseudo-random number. - // This is output when check in PQCLEAN_FIRESABER_AVX2_crypto_kem_dec() fails. - return (0); -} - -int PQCLEAN_FIRESABER_AVX2_crypto_kem_enc(uint8_t *c, uint8_t *k, const uint8_t *pk) { - - uint8_t kr[64]; // Will contain key, coins - uint8_t buf[64]; - - randombytes(buf, 32); - - sha3_256(buf, buf, 32); // BUF[0:31] <-- random message (will be used as the key for client) Note: hash doesnot release system RNG output - - sha3_256(buf + 32, pk, SABER_INDCPA_PUBLICKEYBYTES); // BUF[32:63] <-- Hash(public key); Multitarget countermeasure for coins + contributory KEM - - sha3_512(kr, buf, 64); // kr[0:63] <-- Hash(buf[0:63]); - // K^ <-- kr[0:31] - // noiseseed (r) <-- kr[32:63]; - PQCLEAN_FIRESABER_AVX2_indcpa_kem_enc(c, buf, kr + 32, pk); // buf[0:31] contains message; kr[32:63] contains randomness r; - - sha3_256(kr + 32, c, SABER_BYTES_CCA_DEC); - - sha3_256(k, kr, 64); // hash concatenation of pre-k and h(c) to k - - return (0); -} - -int PQCLEAN_FIRESABER_AVX2_crypto_kem_dec(uint8_t *k, const uint8_t *c, const uint8_t *sk) { - size_t i; - uint8_t fail; - uint8_t cmp[SABER_BYTES_CCA_DEC]; - uint8_t buf[64]; - uint8_t kr[64]; // Will contain key, coins - const uint8_t *pk = sk + SABER_INDCPA_SECRETKEYBYTES; - - PQCLEAN_FIRESABER_AVX2_indcpa_kem_dec(buf, sk, c); // buf[0:31] <-- message - - // Multitarget countermeasure for coins + contributory KEM - for (i = 0; i < 32; i++) { // Save hash by storing h(pk) in sk - buf[32 + i] = sk[SABER_SECRETKEYBYTES - 64 + i]; - } - - sha3_512(kr, buf, 64); - - PQCLEAN_FIRESABER_AVX2_indcpa_kem_enc(cmp, buf, kr + 32, pk); - - fail = PQCLEAN_FIRESABER_AVX2_verify(c, cmp, SABER_BYTES_CCA_DEC); - - sha3_256(kr + 32, c, SABER_BYTES_CCA_DEC); // overwrite coins in kr with h(c) - - PQCLEAN_FIRESABER_AVX2_cmov(kr, sk + SABER_SECRETKEYBYTES - SABER_KEYBYTES, SABER_KEYBYTES, fail); - - sha3_256(k, kr, 64); // hash concatenation of pre-k and h(c) to k - - return (0); -} diff --git a/src/kem/saber/firesaber/avx2/pack_unpack.c b/src/kem/saber/firesaber/avx2/pack_unpack.c deleted file mode 100644 index d5e6b9ba..00000000 --- a/src/kem/saber/firesaber/avx2/pack_unpack.c +++ /dev/null @@ -1,151 +0,0 @@ -#include "SABER_params.h" -#include "pack_unpack.h" -#include "poly.h" -#include - -void PQCLEAN_FIRESABER_AVX2_POLT2BS(uint8_t bytes[SABER_SCALEBYTES_KEM], const poly *data) { - size_t j; - const uint16_t *in = data->coeffs; - uint8_t *out = bytes; - for (j = 0; j < SABER_N / 4; j++) { - out[0] = (uint8_t) ((in[0] & 0x3f) | (in[1] << 6)); - out[1] = (uint8_t) (((in[1] >> 2) & 0x0f) | (in[2] << 4)); - out[2] = (uint8_t) (((in[2] >> 4) & 0x03) | (in[3] << 2)); - in += 4; - out += 3; - } -} - -void PQCLEAN_FIRESABER_AVX2_BS2POLT(poly *data, const uint8_t bytes[SABER_SCALEBYTES_KEM]) { - /* This function does not reduce its output mod T */ - size_t j; - const uint8_t *in = bytes; - uint16_t *out = data->coeffs; - for (j = 0; j < SABER_N / 4; j++) { - out[0] = in[0]; - out[1] = (in[0] >> 6) | (in[1] << 2); - out[2] = (in[1] >> 4) | (in[2] << 4); - out[3] = (in[2] >> 2); - in += 3; - out += 4; - } -} - -static void POLq2BS(uint8_t bytes[SABER_POLYBYTES], const poly *data) { - size_t j; - const uint16_t *in = data->coeffs; - uint8_t *out = bytes; - for (j = 0; j < SABER_N / 8; j++) { - out[0] = (uint8_t) (in[0]); - out[1] = (uint8_t) (((in[0] >> 8) & 0x1f) | (in[1] << 5)); - out[2] = (uint8_t) (in[1] >> 3); - out[3] = (uint8_t) (((in[1] >> 11) & 0x03) | (in[2] << 2)); - out[4] = (uint8_t) (((in[2] >> 6) & 0x7f) | (in[3] << 7)); - out[5] = (uint8_t) (in[3] >> 1); - out[6] = (uint8_t) (((in[3] >> 9) & 0x0f) | (in[4] << 4)); - out[7] = (uint8_t) (in[4] >> 4); - out[8] = (uint8_t) (((in[4] >> 12) & 0x01) | (in[5] << 1)); - out[9] = (uint8_t) (((in[5] >> 7) & 0x3f) | (in[6] << 6)); - out[10] = (uint8_t) (in[6] >> 2); - out[11] = (uint8_t) (((in[6] >> 10) & 0x07) | (in[7] << 3)); - out[12] = (uint8_t) (in[7] >> 5); - in += 8; - out += 13; - } -} - -static void BS2POLq(poly *data, const uint8_t bytes[SABER_POLYBYTES]) { - /* This function does not reduce its output mod Q */ - size_t j; - const uint8_t *in = bytes; - uint16_t *out = data->coeffs; - for (j = 0; j < SABER_N / 8; j++) { - out[0] = (in[0]) | (in[1] << 8); - out[1] = (in[1] >> 5) | (in[2] << 3) | (in[3] << 11); - out[2] = (in[3] >> 2) | (in[4] << 6); - out[3] = (in[4] >> 7) | (in[5] << 1) | (in[6] << 9); - out[4] = (in[6] >> 4) | (in[7] << 4) | (in[8] << 12); - out[5] = (in[8] >> 1) | (in[9] << 7); - out[6] = (in[9] >> 6) | (in[10] << 2) | (in[11] << 10); - out[7] = (in[11] >> 3) | (in[12] << 5); - in += 13; - out += 8; - } -} - -static void POLp2BS(uint8_t bytes[SABER_POLYCOMPRESSEDBYTES], const poly *data) { - size_t j; - const uint16_t *in = data->coeffs; - uint8_t *out = bytes; - for (j = 0; j < SABER_N / 4; j++) { - out[0] = (uint8_t) (in[0]); - out[1] = (uint8_t) (((in[0] >> 8) & 0x03) | (in[1] << 2)); - out[2] = (uint8_t) (((in[1] >> 6) & 0x0f) | (in[2] << 4)); - out[3] = (uint8_t) (((in[2] >> 4) & 0x3f) | (in[3] << 6)); - out[4] = (uint8_t) (in[3] >> 2); - in += 4; - out += 5; - } -} - -static void BS2POLp(poly *data, const uint8_t bytes[SABER_POLYCOMPRESSEDBYTES]) { - size_t j; - const uint8_t *in = bytes; - uint16_t *out = data->coeffs; - for (j = 0; j < SABER_N / 4; j++) { - out[0] = in[0] | (in[1] << 8); - out[1] = (in[1] >> 2) | (in[2] << 6); - out[2] = (in[2] >> 4) | (in[3] << 4); - out[3] = (in[3] >> 6) | (in[4] << 2); - in += 5; - out += 4; - } -} - -void PQCLEAN_FIRESABER_AVX2_POLVECq2BS(uint8_t bytes[SABER_POLYVECBYTES], const poly data[SABER_L]) { - size_t i; - for (i = 0; i < SABER_L; i++) { - POLq2BS(bytes + i * SABER_POLYBYTES, &data[i]); - } -} - -void PQCLEAN_FIRESABER_AVX2_BS2POLVECq(poly data[SABER_L], const uint8_t bytes[SABER_POLYVECBYTES]) { - size_t i; - for (i = 0; i < SABER_L; i++) { - BS2POLq(&data[i], bytes + i * SABER_POLYBYTES); - } -} - -void PQCLEAN_FIRESABER_AVX2_POLVECp2BS(uint8_t bytes[SABER_POLYVECCOMPRESSEDBYTES], const poly data[SABER_L]) { - size_t i; - for (i = 0; i < SABER_L; i++) { - POLp2BS(bytes + i * SABER_POLYCOMPRESSEDBYTES, &data[i]); - } -} - -void PQCLEAN_FIRESABER_AVX2_BS2POLVECp(poly data[SABER_L], const uint8_t bytes[SABER_POLYVECCOMPRESSEDBYTES]) { - size_t i; - for (i = 0; i < SABER_L; i++) { - BS2POLp(&data[i], bytes + i * SABER_POLYCOMPRESSEDBYTES); - } -} - -void PQCLEAN_FIRESABER_AVX2_BS2POLmsg(poly *data, const uint8_t bytes[SABER_KEYBYTES]) { - size_t i, j; - for (j = 0; j < SABER_KEYBYTES; j++) { - for (i = 0; i < 8; i++) { - data->coeffs[j * 8 + i] = ((bytes[j] >> i) & 0x01); - } - } -} - -void PQCLEAN_FIRESABER_AVX2_POLmsg2BS(uint8_t bytes[SABER_KEYBYTES], const poly *data) { - size_t i, j; - memset(bytes, 0, SABER_KEYBYTES); - - for (j = 0; j < SABER_KEYBYTES; j++) { - for (i = 0; i < 8; i++) { - bytes[j] = bytes[j] | ((data->coeffs[j * 8 + i] & 0x01) << i); - } - } -} diff --git a/src/kem/saber/firesaber/avx2/pack_unpack.h b/src/kem/saber/firesaber/avx2/pack_unpack.h deleted file mode 100644 index eb6242be..00000000 --- a/src/kem/saber/firesaber/avx2/pack_unpack.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef PACK_UNPACK_H -#define PACK_UNPACK_H -#include "SABER_params.h" -#include "poly.h" -#include -#include - -void PQCLEAN_FIRESABER_AVX2_POLT2BS(uint8_t bytes[SABER_SCALEBYTES_KEM], const poly *data); - -void PQCLEAN_FIRESABER_AVX2_BS2POLT(poly *data, const uint8_t bytes[SABER_SCALEBYTES_KEM]); - - -void PQCLEAN_FIRESABER_AVX2_POLVECq2BS(uint8_t bytes[SABER_POLYVECBYTES], const poly data[SABER_L]); - -void PQCLEAN_FIRESABER_AVX2_POLVECp2BS(uint8_t bytes[SABER_POLYVECCOMPRESSEDBYTES], const poly data[SABER_L]); - - -void PQCLEAN_FIRESABER_AVX2_BS2POLVECq(poly data[SABER_L], const uint8_t bytes[SABER_POLYVECBYTES]); - -void PQCLEAN_FIRESABER_AVX2_BS2POLVECp(poly data[SABER_L], const uint8_t bytes[SABER_POLYVECCOMPRESSEDBYTES]); - - -void PQCLEAN_FIRESABER_AVX2_BS2POLmsg(poly *data, const uint8_t bytes[SABER_KEYBYTES]); - -void PQCLEAN_FIRESABER_AVX2_POLmsg2BS(uint8_t bytes[SABER_KEYBYTES], const poly *data); - - -#endif diff --git a/src/kem/saber/firesaber/avx2/poly.c b/src/kem/saber/firesaber/avx2/poly.c deleted file mode 100644 index 2a7fa836..00000000 --- a/src/kem/saber/firesaber/avx2/poly.c +++ /dev/null @@ -1,62 +0,0 @@ -#include "cbd.h" -#include "fips202.h" -#include "pack_unpack.h" -#include "poly.h" - - -void PQCLEAN_FIRESABER_AVX2_MatrixVectorMul(poly c[SABER_L], const poly A[SABER_L][SABER_L], const toom4_points s_eval[SABER_L], int transpose) { - size_t i, j; - toom4_points_product c_eval; - - if (transpose) { - for (i = 0; i < SABER_L; i++) { - PQCLEAN_FIRESABER_AVX2_toom4_mul_A_by_B_eval(&c_eval, &A[0][i], &s_eval[0], 0); - for (j = 1; j < SABER_L; j++) { - PQCLEAN_FIRESABER_AVX2_toom4_mul_A_by_B_eval(&c_eval, &A[j][i], &s_eval[j], 1); - } - PQCLEAN_FIRESABER_AVX2_toom4_interp(&c[i], &c_eval); - } - } else { - for (i = 0; i < SABER_L; i++) { - PQCLEAN_FIRESABER_AVX2_toom4_mul_A_by_B_eval(&c_eval, &A[i][0], &s_eval[0], 0); - for (j = 1; j < SABER_L; j++) { - PQCLEAN_FIRESABER_AVX2_toom4_mul_A_by_B_eval(&c_eval, &A[i][j], &s_eval[j], 1); - } - PQCLEAN_FIRESABER_AVX2_toom4_interp(&c[i], &c_eval); - } - } -} - -void PQCLEAN_FIRESABER_AVX2_InnerProd(poly *c, const poly b[SABER_L], const toom4_points s_eval[SABER_L]) { - size_t i; - toom4_points_product c_eval; //Holds results for 9 Karatsuba at a time - - PQCLEAN_FIRESABER_AVX2_toom4_mul_A_by_B_eval(&c_eval, &b[0], &s_eval[0], 0); - for (i = 1; i < SABER_L; i++) { - PQCLEAN_FIRESABER_AVX2_toom4_mul_A_by_B_eval(&c_eval, &b[i], &s_eval[i], 1); - } - - PQCLEAN_FIRESABER_AVX2_toom4_interp(c, &c_eval); -} - -void PQCLEAN_FIRESABER_AVX2_GenMatrix(poly A[SABER_L][SABER_L], const uint8_t seed[SABER_SEEDBYTES]) { - size_t i; - uint8_t buf[SABER_L * SABER_POLYVECBYTES]; - - shake128(buf, sizeof(buf), seed, SABER_SEEDBYTES); - - for (i = 0; i < SABER_L; i++) { - PQCLEAN_FIRESABER_AVX2_BS2POLVECq(A[i], buf + i * SABER_POLYVECBYTES); - } -} - -void PQCLEAN_FIRESABER_AVX2_GenSecret(poly s[SABER_L], const uint8_t seed[SABER_NOISESEEDBYTES]) { - size_t i; - uint8_t buf[SABER_L * SABER_POLYCOINBYTES]; - - shake128(buf, sizeof(buf), seed, SABER_NOISESEEDBYTES); - - for (i = 0; i < SABER_L; i++) { - PQCLEAN_FIRESABER_AVX2_cbd(s[i].coeffs, buf + i * SABER_POLYCOINBYTES); - } -} diff --git a/src/kem/saber/firesaber/avx2/poly.h b/src/kem/saber/firesaber/avx2/poly.h deleted file mode 100644 index 859fb95e..00000000 --- a/src/kem/saber/firesaber/avx2/poly.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef POLY_H -#define POLY_H -#include "SABER_params.h" -#include -#include - -typedef union { - uint16_t coeffs[SABER_N]; - __m256i dummy; -} poly; - -typedef union { - uint16_t coeffs[4 * SABER_N]; - __m256i dummy; -} toom4_points; - -typedef union { - uint16_t coeffs[8 * SABER_N]; - __m256i dummy; -} toom4_points_product; - -void PQCLEAN_FIRESABER_AVX2_MatrixVectorMul(poly c[SABER_L], const poly A[SABER_L][SABER_L], const toom4_points s_eval[SABER_L], int transpose); - -void PQCLEAN_FIRESABER_AVX2_InnerProd(poly *c, const poly b[SABER_L], const toom4_points s_eval[SABER_L]); - -void PQCLEAN_FIRESABER_AVX2_GenMatrix(poly a[SABER_L][SABER_L], const uint8_t seed[SABER_SEEDBYTES]); - -void PQCLEAN_FIRESABER_AVX2_GenSecret(poly s[SABER_L], const uint8_t seed[SABER_NOISESEEDBYTES]); - - -void PQCLEAN_FIRESABER_AVX2_toom4_interp(poly *res_avx, const toom4_points_product *c_eval); - -void PQCLEAN_FIRESABER_AVX2_toom4_eval(toom4_points *b_eval, const poly *b); - -void PQCLEAN_FIRESABER_AVX2_toom4_mul_A_by_B_eval(toom4_points_product *c_eval, const poly *a_avx, const toom4_points *b_eval, int accumulate); - - -#endif diff --git a/src/kem/saber/firesaber/avx2/poly_mul.c b/src/kem/saber/firesaber/avx2/poly_mul.c deleted file mode 100644 index 4d4ec959..00000000 --- a/src/kem/saber/firesaber/avx2/poly_mul.c +++ /dev/null @@ -1,1496 +0,0 @@ -#include "SABER_params.h" -#include "poly.h" - - -#define L (SABER_N / 64) - -/* 16 word parallel multiply */ -#define mul(a, b) _mm256_mullo_epi16((a), (b)) -/* 16 word parallel multiply and accumulate */ -#define mac(a, b, c) _mm256_add_epi16(_mm256_mullo_epi16((a), (b)), (c)) - -static void schoolbook16x16(__m256i *c, const __m256i *a, const __m256i *b) { - __m256i a0, a1, a2, a3; - __m256i b0, b1, b2, b3; - __m256i t0; - a0 = a[0]; - a1 = a[1]; - a2 = a[2]; - a3 = a[3]; - b0 = b[0]; - b1 = b[1]; - b2 = b[2]; - b3 = b[3]; - c[0] = mul(a0, b0); - t0 = mul(a0, b1); - c[1] = mac(a1, b0, t0); - t0 = mul(a0, b2); - t0 = mac(a1, b1, t0); - c[2] = mac(a2, b0, t0); - t0 = mul(a0, b3); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[3] = mac(a3, b0, t0); - t0 = mul(a1, b3); - t0 = mac(a2, b2, t0); - c[4] = mac(a3, b1, t0); - t0 = mul(a2, b3); - c[5] = mac(a3, b2, t0); - c[6] = mul(a3, b3); - b0 = b[4]; - b1 = b[5]; - b2 = b[6]; - b3 = b[7]; - c[4] = mac(a0, b0, c[4]); - t0 = mac(a0, b1, c[5]); - c[5] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[6]); - t0 = mac(a1, b1, t0); - c[6] = mac(a2, b0, t0); - t0 = mul(a0, b3); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[7] = mac(a3, b0, t0); - t0 = mul(a1, b3); - t0 = mac(a2, b2, t0); - c[8] = mac(a3, b1, t0); - t0 = mul(a2, b3); - c[9] = mac(a3, b2, t0); - c[10] = mul(a3, b3); - b0 = b[8]; - b1 = b[9]; - b2 = b[10]; - b3 = b[11]; - c[8] = mac(a0, b0, c[8]); - t0 = mac(a0, b1, c[9]); - c[9] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[10]); - t0 = mac(a1, b1, t0); - c[10] = mac(a2, b0, t0); - t0 = mul(a0, b3); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[11] = mac(a3, b0, t0); - t0 = mul(a1, b3); - t0 = mac(a2, b2, t0); - c[12] = mac(a3, b1, t0); - t0 = mul(a2, b3); - c[13] = mac(a3, b2, t0); - c[14] = mul(a3, b3); - b0 = b[12]; - b1 = b[13]; - b2 = b[14]; - b3 = b[15]; - c[12] = mac(a0, b0, c[12]); - t0 = mac(a0, b1, c[13]); - c[13] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[14]); - t0 = mac(a1, b1, t0); - c[14] = mac(a2, b0, t0); - t0 = mul(a0, b3); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[15] = mac(a3, b0, t0); - t0 = mul(a1, b3); - t0 = mac(a2, b2, t0); - c[16] = mac(a3, b1, t0); - t0 = mul(a2, b3); - c[17] = mac(a3, b2, t0); - c[18] = mul(a3, b3); - a0 = a[4]; - a1 = a[5]; - a2 = a[6]; - a3 = a[7]; - c[16] = mac(a0, b0, c[16]); - t0 = mac(a0, b1, c[17]); - c[17] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[18]); - t0 = mac(a1, b1, t0); - c[18] = mac(a2, b0, t0); - t0 = mul(a0, b3); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[19] = mac(a3, b0, t0); - t0 = mul(a1, b3); - t0 = mac(a2, b2, t0); - c[20] = mac(a3, b1, t0); - t0 = mul(a2, b3); - c[21] = mac(a3, b2, t0); - c[22] = mul(a3, b3); - b0 = b[8]; - b1 = b[9]; - b2 = b[10]; - b3 = b[11]; - c[12] = mac(a0, b0, c[12]); - t0 = mac(a0, b1, c[13]); - c[13] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[14]); - t0 = mac(a1, b1, t0); - c[14] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[15]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[15] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[16]); - t0 = mac(a2, b2, t0); - c[16] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[17]); - c[17] = mac(a3, b2, t0); - c[18] = mac(a3, b3, c[18]); - b0 = b[4]; - b1 = b[5]; - b2 = b[6]; - b3 = b[7]; - c[8] = mac(a0, b0, c[8]); - t0 = mac(a0, b1, c[9]); - c[9] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[10]); - t0 = mac(a1, b1, t0); - c[10] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[11]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[11] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[12]); - t0 = mac(a2, b2, t0); - c[12] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[13]); - c[13] = mac(a3, b2, t0); - c[14] = mac(a3, b3, c[14]); - b0 = b[0]; - b1 = b[1]; - b2 = b[2]; - b3 = b[3]; - c[4] = mac(a0, b0, c[4]); - t0 = mac(a0, b1, c[5]); - c[5] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[6]); - t0 = mac(a1, b1, t0); - c[6] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[7]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[7] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[8]); - t0 = mac(a2, b2, t0); - c[8] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[9]); - c[9] = mac(a3, b2, t0); - c[10] = mac(a3, b3, c[10]); - a0 = a[8]; - a1 = a[9]; - a2 = a[10]; - a3 = a[11]; - c[8] = mac(a0, b0, c[8]); - t0 = mac(a0, b1, c[9]); - c[9] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[10]); - t0 = mac(a1, b1, t0); - c[10] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[11]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[11] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[12]); - t0 = mac(a2, b2, t0); - c[12] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[13]); - c[13] = mac(a3, b2, t0); - c[14] = mac(a3, b3, c[14]); - b0 = b[4]; - b1 = b[5]; - b2 = b[6]; - b3 = b[7]; - c[12] = mac(a0, b0, c[12]); - t0 = mac(a0, b1, c[13]); - c[13] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[14]); - t0 = mac(a1, b1, t0); - c[14] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[15]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[15] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[16]); - t0 = mac(a2, b2, t0); - c[16] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[17]); - c[17] = mac(a3, b2, t0); - c[18] = mac(a3, b3, c[18]); - b0 = b[8]; - b1 = b[9]; - b2 = b[10]; - b3 = b[11]; - c[16] = mac(a0, b0, c[16]); - t0 = mac(a0, b1, c[17]); - c[17] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[18]); - t0 = mac(a1, b1, t0); - c[18] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[19]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[19] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[20]); - t0 = mac(a2, b2, t0); - c[20] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[21]); - c[21] = mac(a3, b2, t0); - c[22] = mac(a3, b3, c[22]); - b0 = b[12]; - b1 = b[13]; - b2 = b[14]; - b3 = b[15]; - c[20] = mac(a0, b0, c[20]); - t0 = mac(a0, b1, c[21]); - c[21] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[22]); - t0 = mac(a1, b1, t0); - c[22] = mac(a2, b0, t0); - t0 = mul(a0, b3); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[23] = mac(a3, b0, t0); - t0 = mul(a1, b3); - t0 = mac(a2, b2, t0); - c[24] = mac(a3, b1, t0); - t0 = mul(a2, b3); - c[25] = mac(a3, b2, t0); - c[26] = mul(a3, b3); - a0 = a[12]; - a1 = a[13]; - a2 = a[14]; - a3 = a[15]; - c[24] = mac(a0, b0, c[24]); - t0 = mac(a0, b1, c[25]); - c[25] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[26]); - t0 = mac(a1, b1, t0); - c[26] = mac(a2, b0, t0); - t0 = mul(a0, b3); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[27] = mac(a3, b0, t0); - t0 = mul(a1, b3); - t0 = mac(a2, b2, t0); - c[28] = mac(a3, b1, t0); - t0 = mul(a2, b3); - c[29] = mac(a3, b2, t0); - c[30] = mul(a3, b3); - b0 = b[8]; - b1 = b[9]; - b2 = b[10]; - b3 = b[11]; - c[20] = mac(a0, b0, c[20]); - t0 = mac(a0, b1, c[21]); - c[21] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[22]); - t0 = mac(a1, b1, t0); - c[22] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[23]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[23] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[24]); - t0 = mac(a2, b2, t0); - c[24] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[25]); - c[25] = mac(a3, b2, t0); - c[26] = mac(a3, b3, c[26]); - b0 = b[4]; - b1 = b[5]; - b2 = b[6]; - b3 = b[7]; - c[16] = mac(a0, b0, c[16]); - t0 = mac(a0, b1, c[17]); - c[17] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[18]); - t0 = mac(a1, b1, t0); - c[18] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[19]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[19] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[20]); - t0 = mac(a2, b2, t0); - c[20] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[21]); - c[21] = mac(a3, b2, t0); - c[22] = mac(a3, b3, c[22]); - b0 = b[0]; - b1 = b[1]; - b2 = b[2]; - b3 = b[3]; - c[12] = mac(a0, b0, c[12]); - t0 = mac(a0, b1, c[13]); - c[13] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[14]); - t0 = mac(a1, b1, t0); - c[14] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[15]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[15] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[16]); - t0 = mac(a2, b2, t0); - c[16] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[17]); - c[17] = mac(a3, b2, t0); - c[18] = mac(a3, b3, c[18]); - c[31] = _mm256_setzero_si256(); -} - -static void schoolbook16x16_acc(__m256i *c, const __m256i *a, const __m256i *b) { - __m256i a0, a1, a2, a3; - __m256i b0, b1, b2, b3; - __m256i t0; - a0 = a[0]; - a1 = a[1]; - a2 = a[2]; - a3 = a[3]; - b0 = b[0]; - b1 = b[1]; - b2 = b[2]; - b3 = b[3]; - c[0] = mac(a0, b0, c[0]); - t0 = mac(a0, b1, c[1]); - c[1] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[2]); - t0 = mac(a1, b1, t0); - c[2] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[3]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[3] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[4]); - t0 = mac(a2, b2, t0); - c[4] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[5]); - c[5] = mac(a3, b2, t0); - c[6] = mac(a3, b3, c[6]); - b0 = b[4]; - b1 = b[5]; - b2 = b[6]; - b3 = b[7]; - c[4] = mac(a0, b0, c[4]); - t0 = mac(a0, b1, c[5]); - c[5] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[6]); - t0 = mac(a1, b1, t0); - c[6] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[7]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[7] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[8]); - t0 = mac(a2, b2, t0); - c[8] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[9]); - c[9] = mac(a3, b2, t0); - c[10] = mac(a3, b3, c[10]); - b0 = b[8]; - b1 = b[9]; - b2 = b[10]; - b3 = b[11]; - c[8] = mac(a0, b0, c[8]); - t0 = mac(a0, b1, c[9]); - c[9] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[10]); - t0 = mac(a1, b1, t0); - c[10] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[11]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[11] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[12]); - t0 = mac(a2, b2, t0); - c[12] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[13]); - c[13] = mac(a3, b2, t0); - c[14] = mac(a3, b3, c[14]); - b0 = b[12]; - b1 = b[13]; - b2 = b[14]; - b3 = b[15]; - c[12] = mac(a0, b0, c[12]); - t0 = mac(a0, b1, c[13]); - c[13] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[14]); - t0 = mac(a1, b1, t0); - c[14] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[15]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[15] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[16]); - t0 = mac(a2, b2, t0); - c[16] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[17]); - c[17] = mac(a3, b2, t0); - c[18] = mac(a3, b3, c[18]); - a0 = a[4]; - a1 = a[5]; - a2 = a[6]; - a3 = a[7]; - c[16] = mac(a0, b0, c[16]); - t0 = mac(a0, b1, c[17]); - c[17] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[18]); - t0 = mac(a1, b1, t0); - c[18] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[19]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[19] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[20]); - t0 = mac(a2, b2, t0); - c[20] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[21]); - c[21] = mac(a3, b2, t0); - c[22] = mac(a3, b3, c[22]); - b0 = b[8]; - b1 = b[9]; - b2 = b[10]; - b3 = b[11]; - c[12] = mac(a0, b0, c[12]); - t0 = mac(a0, b1, c[13]); - c[13] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[14]); - t0 = mac(a1, b1, t0); - c[14] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[15]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[15] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[16]); - t0 = mac(a2, b2, t0); - c[16] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[17]); - c[17] = mac(a3, b2, t0); - c[18] = mac(a3, b3, c[18]); - b0 = b[4]; - b1 = b[5]; - b2 = b[6]; - b3 = b[7]; - c[8] = mac(a0, b0, c[8]); - t0 = mac(a0, b1, c[9]); - c[9] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[10]); - t0 = mac(a1, b1, t0); - c[10] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[11]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[11] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[12]); - t0 = mac(a2, b2, t0); - c[12] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[13]); - c[13] = mac(a3, b2, t0); - c[14] = mac(a3, b3, c[14]); - b0 = b[0]; - b1 = b[1]; - b2 = b[2]; - b3 = b[3]; - c[4] = mac(a0, b0, c[4]); - t0 = mac(a0, b1, c[5]); - c[5] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[6]); - t0 = mac(a1, b1, t0); - c[6] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[7]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[7] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[8]); - t0 = mac(a2, b2, t0); - c[8] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[9]); - c[9] = mac(a3, b2, t0); - c[10] = mac(a3, b3, c[10]); - a0 = a[8]; - a1 = a[9]; - a2 = a[10]; - a3 = a[11]; - c[8] = mac(a0, b0, c[8]); - t0 = mac(a0, b1, c[9]); - c[9] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[10]); - t0 = mac(a1, b1, t0); - c[10] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[11]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[11] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[12]); - t0 = mac(a2, b2, t0); - c[12] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[13]); - c[13] = mac(a3, b2, t0); - c[14] = mac(a3, b3, c[14]); - b0 = b[4]; - b1 = b[5]; - b2 = b[6]; - b3 = b[7]; - c[12] = mac(a0, b0, c[12]); - t0 = mac(a0, b1, c[13]); - c[13] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[14]); - t0 = mac(a1, b1, t0); - c[14] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[15]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[15] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[16]); - t0 = mac(a2, b2, t0); - c[16] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[17]); - c[17] = mac(a3, b2, t0); - c[18] = mac(a3, b3, c[18]); - b0 = b[8]; - b1 = b[9]; - b2 = b[10]; - b3 = b[11]; - c[16] = mac(a0, b0, c[16]); - t0 = mac(a0, b1, c[17]); - c[17] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[18]); - t0 = mac(a1, b1, t0); - c[18] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[19]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[19] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[20]); - t0 = mac(a2, b2, t0); - c[20] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[21]); - c[21] = mac(a3, b2, t0); - c[22] = mac(a3, b3, c[22]); - b0 = b[12]; - b1 = b[13]; - b2 = b[14]; - b3 = b[15]; - c[20] = mac(a0, b0, c[20]); - t0 = mac(a0, b1, c[21]); - c[21] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[22]); - t0 = mac(a1, b1, t0); - c[22] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[23]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[23] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[24]); - t0 = mac(a2, b2, t0); - c[24] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[25]); - c[25] = mac(a3, b2, t0); - c[26] = mac(a3, b3, c[26]); - a0 = a[12]; - a1 = a[13]; - a2 = a[14]; - a3 = a[15]; - c[24] = mac(a0, b0, c[24]); - t0 = mac(a0, b1, c[25]); - c[25] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[26]); - t0 = mac(a1, b1, t0); - c[26] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[27]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[27] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[28]); - t0 = mac(a2, b2, t0); - c[28] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[29]); - c[29] = mac(a3, b2, t0); - c[30] = mac(a3, b3, c[30]); - b0 = b[8]; - b1 = b[9]; - b2 = b[10]; - b3 = b[11]; - c[20] = mac(a0, b0, c[20]); - t0 = mac(a0, b1, c[21]); - c[21] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[22]); - t0 = mac(a1, b1, t0); - c[22] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[23]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[23] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[24]); - t0 = mac(a2, b2, t0); - c[24] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[25]); - c[25] = mac(a3, b2, t0); - c[26] = mac(a3, b3, c[26]); - b0 = b[4]; - b1 = b[5]; - b2 = b[6]; - b3 = b[7]; - c[16] = mac(a0, b0, c[16]); - t0 = mac(a0, b1, c[17]); - c[17] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[18]); - t0 = mac(a1, b1, t0); - c[18] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[19]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[19] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[20]); - t0 = mac(a2, b2, t0); - c[20] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[21]); - c[21] = mac(a3, b2, t0); - c[22] = mac(a3, b3, c[22]); - b0 = b[0]; - b1 = b[1]; - b2 = b[2]; - b3 = b[3]; - c[12] = mac(a0, b0, c[12]); - t0 = mac(a0, b1, c[13]); - c[13] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[14]); - t0 = mac(a1, b1, t0); - c[14] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[15]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[15] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[16]); - t0 = mac(a2, b2, t0); - c[16] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[17]); - c[17] = mac(a3, b2, t0); - c[18] = mac(a3, b3, c[18]); -} - - -static void transpose(__m256i *M) { - __m256i r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11; - __m256i temp, temp0, temp1, temp2; - - r0 = _mm256_unpacklo_epi16(M[0], M[1]); - r1 = _mm256_unpacklo_epi16(M[2], M[3]); - r2 = _mm256_unpacklo_epi16(M[4], M[5]); - r3 = _mm256_unpacklo_epi16(M[6], M[7]); - r4 = _mm256_unpacklo_epi16(M[8], M[9]); - r5 = _mm256_unpacklo_epi16(M[10], M[11]); - r6 = _mm256_unpacklo_epi16(M[12], M[13]); - r7 = _mm256_unpacklo_epi16(M[14], M[15]); - - temp = _mm256_unpacklo_epi32(r0, r1); - temp0 = _mm256_unpacklo_epi32(r2, r3); - temp1 = _mm256_unpacklo_epi32(r4, r5); - temp2 = _mm256_unpacklo_epi32(r6, r7); - - r8 = _mm256_unpackhi_epi32(r0, r1); - r9 = _mm256_unpackhi_epi32(r2, r3); - r10 = _mm256_unpackhi_epi32(r4, r5); - r11 = _mm256_unpackhi_epi32(r6, r7); - - r0 = _mm256_unpacklo_epi64(temp, temp0); - r2 = _mm256_unpackhi_epi64(temp, temp0); - r1 = _mm256_unpacklo_epi64(temp1, temp2); - r3 = _mm256_unpackhi_epi64(temp1, temp2); - - temp = _mm256_unpackhi_epi16(M[0], M[1]); - temp0 = _mm256_unpackhi_epi16(M[2], M[3]); - temp1 = _mm256_unpackhi_epi16(M[4], M[5]); - temp2 = _mm256_unpackhi_epi16(M[6], M[7]); - - r4 = _mm256_unpackhi_epi16(M[8], M[9]); - M[0] = _mm256_permute2f128_si256(r0, r1, 0x20); - M[8] = _mm256_permute2f128_si256(r0, r1, 0x31); - M[1] = _mm256_permute2f128_si256(r2, r3, 0x20); - M[9] = _mm256_permute2f128_si256(r2, r3, 0x31); - r5 = _mm256_unpackhi_epi16(M[10], M[11]); - r6 = _mm256_unpackhi_epi16(M[12], M[13]); - r7 = _mm256_unpackhi_epi16(M[14], M[15]); - - r0 = _mm256_unpacklo_epi64(r8, r9); - r1 = _mm256_unpacklo_epi64(r10, r11); - r2 = _mm256_unpackhi_epi64(r8, r9); - r3 = _mm256_unpackhi_epi64(r10, r11); - - M[3] = _mm256_permute2f128_si256(r2, r3, 0x20); - M[11] = _mm256_permute2f128_si256(r2, r3, 0x31); - M[2] = _mm256_permute2f128_si256(r0, r1, 0x20); - M[10] = _mm256_permute2f128_si256(r0, r1, 0x31); - - r0 = _mm256_unpacklo_epi32(temp, temp0); - r1 = _mm256_unpacklo_epi32(temp1, temp2); - r2 = _mm256_unpacklo_epi32(r4, r5); - r3 = _mm256_unpacklo_epi32(r6, r7); - - r8 = _mm256_unpacklo_epi64(r0, r1); - r10 = _mm256_unpackhi_epi64(r0, r1); - r9 = _mm256_unpacklo_epi64(r2, r3); - r11 = _mm256_unpackhi_epi64(r2, r3); - - M[4] = _mm256_permute2f128_si256(r8, r9, 0x20); - M[12] = _mm256_permute2f128_si256(r8, r9, 0x31); - M[5] = _mm256_permute2f128_si256(r10, r11, 0x20); - M[13] = _mm256_permute2f128_si256(r10, r11, 0x31); - - r0 = _mm256_unpackhi_epi32(temp, temp0); - r1 = _mm256_unpackhi_epi32(temp1, temp2); - r2 = _mm256_unpackhi_epi32(r4, r5); - r3 = _mm256_unpackhi_epi32(r6, r7); - - r4 = _mm256_unpacklo_epi64(r0, r1); - r6 = _mm256_unpackhi_epi64(r0, r1); - r5 = _mm256_unpacklo_epi64(r2, r3); - r7 = _mm256_unpackhi_epi64(r2, r3); - - M[6] = _mm256_permute2f128_si256(r4, r5, 0x20); - M[14] = _mm256_permute2f128_si256(r4, r5, 0x31); - M[7] = _mm256_permute2f128_si256(r6, r7, 0x20); - M[15] = _mm256_permute2f128_si256(r6, r7, 0x31); -} - -static void batch_64coefficient_multiplications(toom4_points_product *c_eval, const __m256i *a, const toom4_points *b_eval, int accumulate) { - toom4_points a_eval;// Holds evaluation (a & b) for 7 Karatsuba at a time - __m256i r0_avx, r1_avx, r2_avx, r3_avx; - __m256i *va = (__m256i *)a_eval.coeffs; - __m256i *vb = (__m256i *)b_eval->coeffs; - __m256i *vc = (__m256i *)c_eval->coeffs; - - //------------------AVX evaluation for 1st poly----------------------- - r0_avx = a[0 * L + 0]; - r1_avx = a[0 * L + 1]; - r2_avx = a[0 * L + 2]; - r3_avx = a[0 * L + 3]; - - va[0] = r0_avx; - va[1] = r1_avx; - va[2] = r2_avx; - va[3] = r3_avx; - va[4] = _mm256_add_epi16(r0_avx, r1_avx); - va[5] = _mm256_add_epi16(r2_avx, r3_avx); - va[6] = _mm256_add_epi16(r0_avx, r2_avx); - va[7] = _mm256_add_epi16(r1_avx, r3_avx); - va[8] = _mm256_add_epi16(va[6], va[7]); - //------------------AVX evaluation for 1st poly ends------------------ - - //------------------AVX evaluation for 2nd poly----------------------- - r0_avx = a[1 * L + 0]; - r1_avx = a[1 * L + 1]; - r2_avx = a[1 * L + 2]; - r3_avx = a[1 * L + 3]; - - va[0 + 9] = r0_avx; - va[1 + 9] = r1_avx; - va[2 + 9] = r2_avx; - va[3 + 9] = r3_avx; - va[4 + 9] = _mm256_add_epi16(r0_avx, r1_avx); - va[5 + 9] = _mm256_add_epi16(r2_avx, r3_avx); - va[6 + 9] = _mm256_add_epi16(r0_avx, r2_avx); - va[7 + 9] = _mm256_add_epi16(r1_avx, r3_avx); - va[8 + 9] = _mm256_add_epi16(va[6 + 9], va[7 + 9]); - //------------------AVX evaluation for 2nd poly ends------------------ - - //------------------AVX evaluation for 3rd poly----------------------- - r0_avx = a[2 * L + 0]; - r1_avx = a[2 * L + 1]; - r2_avx = a[2 * L + 2]; - r3_avx = a[2 * L + 3]; - - va[0 + 18] = r0_avx; - va[1 + 18] = r1_avx; - va[2 + 18] = r2_avx; - va[3 + 18] = r3_avx; - va[4 + 18] = _mm256_add_epi16(r0_avx, r1_avx); - va[5 + 18] = _mm256_add_epi16(r2_avx, r3_avx); - va[6 + 18] = _mm256_add_epi16(r0_avx, r2_avx); - va[7 + 18] = _mm256_add_epi16(r1_avx, r3_avx); - va[8 + 18] = _mm256_add_epi16(va[6 + 18], va[7 + 18]); - //------------------AVX evaluation for 3rd poly ends------------------ - - //------------------AVX evaluation for 4th poly----------------------- - r0_avx = a[3 * L + 0]; - r1_avx = a[3 * L + 1]; - r2_avx = a[3 * L + 2]; - r3_avx = a[3 * L + 3]; - - va[0 + 27] = r0_avx; - va[1 + 27] = r1_avx; - va[2 + 27] = r2_avx; - va[3 + 27] = r3_avx; - va[4 + 27] = _mm256_add_epi16(r0_avx, r1_avx); - va[5 + 27] = _mm256_add_epi16(r2_avx, r3_avx); - va[6 + 27] = _mm256_add_epi16(r0_avx, r2_avx); - va[7 + 27] = _mm256_add_epi16(r1_avx, r3_avx); - va[8 + 27] = _mm256_add_epi16(va[6 + 27], va[7 + 27]); - //------------------AVX evaluation for 4th poly ends------------------ - - //------------------AVX evaluation for 5th poly----------------------- - r0_avx = a[4 * L + 0]; - r1_avx = a[4 * L + 1]; - r2_avx = a[4 * L + 2]; - r3_avx = a[4 * L + 3]; - - va[0 + 36] = r0_avx; - va[1 + 36] = r1_avx; - va[2 + 36] = r2_avx; - va[3 + 36] = r3_avx; - va[4 + 36] = _mm256_add_epi16(r0_avx, r1_avx); - va[5 + 36] = _mm256_add_epi16(r2_avx, r3_avx); - va[6 + 36] = _mm256_add_epi16(r0_avx, r2_avx); - va[7 + 36] = _mm256_add_epi16(r1_avx, r3_avx); - va[8 + 36] = _mm256_add_epi16(va[6 + 36], va[7 + 36]); - //------------------AVX evaluation for 5th poly ends------------------ - - //------------------AVX evaluation for 6th poly----------------------- - r0_avx = a[5 * L + 0]; - r1_avx = a[5 * L + 1]; - r2_avx = a[5 * L + 2]; - r3_avx = a[5 * L + 3]; - - va[0 + 45] = r0_avx; - va[1 + 45] = r1_avx; - va[2 + 45] = r2_avx; - va[3 + 45] = r3_avx; - va[4 + 45] = _mm256_add_epi16(r0_avx, r1_avx); - va[5 + 45] = _mm256_add_epi16(r2_avx, r3_avx); - va[6 + 45] = _mm256_add_epi16(r0_avx, r2_avx); - va[7 + 45] = _mm256_add_epi16(r1_avx, r3_avx); - va[8 + 45] = _mm256_add_epi16(va[6 + 45], va[7 + 45]); - //------------------AVX evaluation for 6th poly ends------------------ - - //------------------AVX evaluation for 7th poly----------------------- - r0_avx = a[6 * L + 0]; - r1_avx = a[6 * L + 1]; - r2_avx = a[6 * L + 2]; - r3_avx = a[6 * L + 3]; - - va[0 + 54] = r0_avx; - va[1 + 54] = r1_avx; - va[2 + 54] = r2_avx; - va[3 + 54] = r3_avx; - va[4 + 54] = _mm256_add_epi16(r0_avx, r1_avx); - va[5 + 54] = _mm256_add_epi16(r2_avx, r3_avx); - va[6 + 54] = _mm256_add_epi16(r0_avx, r2_avx); - va[7 + 54] = _mm256_add_epi16(r1_avx, r3_avx); - va[8 + 54] = _mm256_add_epi16(va[6 + 54], va[7 + 54]); - //------------------AVX evaluation for 7th poly ends------------------ - - //-----------------Forward transposes-------------------------------------- - transpose(va); - transpose(va + 16); - transpose(va + 32); - transpose(va + 48); - //-----------------Forward transposes ends--------------------------------- - - if (accumulate == 0) { - schoolbook16x16(vc, va, vb); - schoolbook16x16(vc + 32, va + 16, vb + 16); - schoolbook16x16(vc + 64, va + 32, vb + 32); - schoolbook16x16(vc + 96, va + 48, vb + 48); - } else { - schoolbook16x16_acc(vc, va, vb); - schoolbook16x16_acc(vc + 32, va + 16, vb + 16); - schoolbook16x16_acc(vc + 64, va + 32, vb + 32); - schoolbook16x16_acc(vc + 96, va + 48, vb + 48); - } -} - -static void karatsuba_eval(__m256i *b_eval, const __m256i *b) { - __m256i r0_avx, r1_avx, r2_avx, r3_avx; - - //-------1st poly---------------------------------------------------- - r0_avx = b[0 * L + 0]; - r1_avx = b[0 * L + 1]; - r2_avx = b[0 * L + 2]; - r3_avx = b[0 * L + 3]; - - b_eval[0] = r0_avx; - b_eval[1] = r1_avx; - b_eval[2] = r2_avx; - b_eval[3] = r3_avx; - b_eval[4] = _mm256_add_epi16(r0_avx, r1_avx); - b_eval[5] = _mm256_add_epi16(r2_avx, r3_avx); - b_eval[6] = _mm256_add_epi16(r0_avx, r2_avx); - b_eval[7] = _mm256_add_epi16(r1_avx, r3_avx); - b_eval[8] = _mm256_add_epi16(b_eval[6], b_eval[7]); - - //-------2nd poly---------------------------------------------------- - r0_avx = b[1 * L + 0]; - r1_avx = b[1 * L + 1]; - r2_avx = b[1 * L + 2]; - r3_avx = b[1 * L + 3]; - - b_eval[0 + 9] = r0_avx; - b_eval[1 + 9] = r1_avx; - b_eval[2 + 9] = r2_avx; - b_eval[3 + 9] = r3_avx; - b_eval[4 + 9] = _mm256_add_epi16(r0_avx, r1_avx); - b_eval[5 + 9] = _mm256_add_epi16(r2_avx, r3_avx); - b_eval[6 + 9] = _mm256_add_epi16(r0_avx, r2_avx); - b_eval[7 + 9] = _mm256_add_epi16(r1_avx, r3_avx); - b_eval[8 + 9] = _mm256_add_epi16(b_eval[6 + 9], b_eval[7 + 9]); - - //-------3rd poly---------------------------------------------------- - r0_avx = b[2 * L + 0]; - r1_avx = b[2 * L + 1]; - r2_avx = b[2 * L + 2]; - r3_avx = b[2 * L + 3]; - - b_eval[0 + 18] = r0_avx; - b_eval[1 + 18] = r1_avx; - b_eval[2 + 18] = r2_avx; - b_eval[3 + 18] = r3_avx; - b_eval[4 + 18] = _mm256_add_epi16(r0_avx, r1_avx); - b_eval[5 + 18] = _mm256_add_epi16(r2_avx, r3_avx); - b_eval[6 + 18] = _mm256_add_epi16(r0_avx, r2_avx); - b_eval[7 + 18] = _mm256_add_epi16(r1_avx, r3_avx); - b_eval[8 + 18] = _mm256_add_epi16(b_eval[6 + 18], b_eval[7 + 18]); - - //-------4th poly---------------------------------------------------- - r0_avx = b[3 * L + 0]; - r1_avx = b[3 * L + 1]; - r2_avx = b[3 * L + 2]; - r3_avx = b[3 * L + 3]; - - b_eval[0 + 27] = r0_avx; - b_eval[1 + 27] = r1_avx; - b_eval[2 + 27] = r2_avx; - b_eval[3 + 27] = r3_avx; - b_eval[4 + 27] = _mm256_add_epi16(r0_avx, r1_avx); - b_eval[5 + 27] = _mm256_add_epi16(r2_avx, r3_avx); - b_eval[6 + 27] = _mm256_add_epi16(r0_avx, r2_avx); - b_eval[7 + 27] = _mm256_add_epi16(r1_avx, r3_avx); - b_eval[8 + 27] = _mm256_add_epi16(b_eval[6 + 27], b_eval[7 + 27]); - - //-------5th poly---------------------------------------------------- - r0_avx = b[4 * L + 0]; - r1_avx = b[4 * L + 1]; - r2_avx = b[4 * L + 2]; - r3_avx = b[4 * L + 3]; - - b_eval[0 + 36] = r0_avx; - b_eval[1 + 36] = r1_avx; - b_eval[2 + 36] = r2_avx; - b_eval[3 + 36] = r3_avx; - b_eval[4 + 36] = _mm256_add_epi16(r0_avx, r1_avx); - b_eval[5 + 36] = _mm256_add_epi16(r2_avx, r3_avx); - b_eval[6 + 36] = _mm256_add_epi16(r0_avx, r2_avx); - b_eval[7 + 36] = _mm256_add_epi16(r1_avx, r3_avx); - b_eval[8 + 36] = _mm256_add_epi16(b_eval[6 + 36], b_eval[7 + 36]); - - //-------6th poly---------------------------------------------------- - r0_avx = b[5 * L + 0]; - r1_avx = b[5 * L + 1]; - r2_avx = b[5 * L + 2]; - r3_avx = b[5 * L + 3]; - - b_eval[0 + 45] = r0_avx; - b_eval[1 + 45] = r1_avx; - b_eval[2 + 45] = r2_avx; - b_eval[3 + 45] = r3_avx; - b_eval[4 + 45] = _mm256_add_epi16(r0_avx, r1_avx); - b_eval[5 + 45] = _mm256_add_epi16(r2_avx, r3_avx); - b_eval[6 + 45] = _mm256_add_epi16(r0_avx, r2_avx); - b_eval[7 + 45] = _mm256_add_epi16(r1_avx, r3_avx); - b_eval[8 + 45] = _mm256_add_epi16(b_eval[6 + 45], b_eval[7 + 45]); - - //-------7th poly---------------------------------------------------- - r0_avx = b[6 * L + 0]; - r1_avx = b[6 * L + 1]; - r2_avx = b[6 * L + 2]; - r3_avx = b[6 * L + 3]; - - b_eval[0 + 54] = r0_avx; - b_eval[1 + 54] = r1_avx; - b_eval[2 + 54] = r2_avx; - b_eval[3 + 54] = r3_avx; - b_eval[4 + 54] = _mm256_add_epi16(r0_avx, r1_avx); - b_eval[5 + 54] = _mm256_add_epi16(r2_avx, r3_avx); - b_eval[6 + 54] = _mm256_add_epi16(r0_avx, r2_avx); - b_eval[7 + 54] = _mm256_add_epi16(r1_avx, r3_avx); - b_eval[8 + 54] = _mm256_add_epi16(b_eval[6 + 54], b_eval[7 + 54]); - - //--------------Evaluating B poly ends------------------------------- - transpose(b_eval); - transpose(b_eval + 16); - transpose(b_eval + 32); - transpose(b_eval + 48); -} - -static void karatsuba_interp(__m256i *result_final0, __m256i *result_final1, __m256i *result_final2, __m256i *result_final3, __m256i *result_final4, __m256i *result_final5, __m256i *result_final6, const __m256i *c_eval) { - __m256i res_avx0, res_avx1, res_avx2, res_avx3, res_avx4, res_avx5, res_avx6, res_avx7; // to hold each 64X64 poly mul results - __m256i temp, c6_avx, c7_avx, c8_avx, c20_avx, c21_avx, c22_avx, c23_avx, c24_avx; - - //------------------------AVX interpolation for 1st poly external------------------- - res_avx0 = c_eval[0]; - res_avx2 = c_eval[1]; - res_avx4 = c_eval[2]; - res_avx6 = c_eval[3]; - c6_avx = c_eval[6]; - c7_avx = c_eval[7]; - - c8_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[8], c6_avx), c7_avx); - - res_avx1 = c_eval[16]; - res_avx3 = c_eval[17]; - res_avx5 = c_eval[18]; - res_avx7 = c_eval[19]; - c22_avx = c_eval[22]; - c23_avx = c_eval[23]; - - c21_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[21], res_avx5), res_avx7); - c24_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[24], c22_avx), c23_avx); - c20_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[20], res_avx1), res_avx3); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[5], res_avx4), res_avx6); - res_avx5 = _mm256_add_epi16(res_avx5, temp); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[4], res_avx0), res_avx2); - res_avx1 = _mm256_add_epi16(res_avx1, temp); - c22_avx = _mm256_add_epi16(c22_avx, c8_avx); - res_avx6 = _mm256_add_epi16(res_avx6, c21_avx); - res_avx2 = _mm256_add_epi16(res_avx2, c20_avx); - c7_avx = _mm256_add_epi16(c7_avx, c24_avx); - c6_avx = _mm256_sub_epi16(_mm256_sub_epi16(c6_avx, res_avx0), res_avx4); - c22_avx = _mm256_sub_epi16(_mm256_sub_epi16(c22_avx, res_avx1), res_avx5); - c7_avx = _mm256_sub_epi16(_mm256_sub_epi16(c7_avx, res_avx2), res_avx6); - c23_avx = _mm256_sub_epi16(_mm256_sub_epi16(c23_avx, res_avx3), res_avx7); - - result_final0[0] = res_avx0; - result_final0[1] = res_avx1; - result_final0[2] = _mm256_add_epi16(res_avx2, c6_avx); - result_final0[3] = _mm256_add_epi16(res_avx3, c22_avx); - result_final0[4] = _mm256_add_epi16(res_avx4, c7_avx); - result_final0[5] = _mm256_add_epi16(res_avx5, c23_avx); - result_final0[6] = res_avx6; - result_final0[7] = res_avx7; - //------------------------AVX interpolation for 1st poly ends-------------- - - - //------------------------AVX interpolation for 2nd poly external------------------- - res_avx0 = c_eval[9]; //c_eval0 - res_avx2 = c_eval[10]; //c_eval1 - res_avx4 = c_eval[11]; //c_eval2 - res_avx6 = c_eval[12]; //c_eval3 - c6_avx = c_eval[15]; //c_eval6 - c7_avx = c_eval[32]; //c_eval7 - - c8_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[33], c6_avx), c7_avx); - - res_avx1 = c_eval[25]; //c_eval0 - res_avx3 = c_eval[26]; //c_eval1 - res_avx5 = c_eval[27]; //c_eval2 - res_avx7 = c_eval[28]; //c_eval3 - c22_avx = c_eval[31]; - c23_avx = c_eval[48]; - - c21_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[30], res_avx5), res_avx7); - c24_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[49], c22_avx), c23_avx); - c20_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[29], res_avx1), res_avx3); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[14], res_avx4), res_avx6); - res_avx5 = _mm256_add_epi16(res_avx5, temp); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[13], res_avx0), res_avx2); - res_avx1 = _mm256_add_epi16(res_avx1, temp); - c22_avx = _mm256_add_epi16(c22_avx, c8_avx); - res_avx6 = _mm256_add_epi16(res_avx6, c21_avx); - res_avx2 = _mm256_add_epi16(res_avx2, c20_avx); - c7_avx = _mm256_add_epi16(c7_avx, c24_avx); - c6_avx = _mm256_sub_epi16(_mm256_sub_epi16(c6_avx, res_avx0), res_avx4); - c22_avx = _mm256_sub_epi16(_mm256_sub_epi16(c22_avx, res_avx1), res_avx5); - c7_avx = _mm256_sub_epi16(_mm256_sub_epi16(c7_avx, res_avx2), res_avx6); - c23_avx = _mm256_sub_epi16(_mm256_sub_epi16(c23_avx, res_avx3), res_avx7); - - result_final1[0] = res_avx0; - result_final1[1] = res_avx1; - result_final1[2] = _mm256_add_epi16(res_avx2, c6_avx); - result_final1[3] = _mm256_add_epi16(res_avx3, c22_avx); - result_final1[4] = _mm256_add_epi16(res_avx4, c7_avx); - result_final1[5] = _mm256_add_epi16(res_avx5, c23_avx); - result_final1[6] = res_avx6; - result_final1[7] = res_avx7; - //------------------------AVX interpolation for 2nd poly ends-------------- - - //------------------------AVX interpolation for 3rd poly external------------------- - res_avx0 = c_eval[34]; //c_eval0 - res_avx2 = c_eval[35]; //c_eval1 - res_avx4 = c_eval[36]; - res_avx6 = c_eval[37]; - c6_avx = c_eval[40]; - c7_avx = c_eval[41]; - - c8_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[42], c6_avx), c7_avx); - - res_avx1 = c_eval[50]; //c_eval0 - res_avx3 = c_eval[51]; //c_eval1 - res_avx5 = c_eval[52]; - res_avx7 = c_eval[53]; - c22_avx = c_eval[56]; - c23_avx = c_eval[57]; - - c21_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[55], res_avx5), res_avx7); - c24_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[58], c22_avx), c23_avx); - c20_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[54], res_avx1), res_avx3); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[39], res_avx4), res_avx6); - res_avx5 = _mm256_add_epi16(res_avx5, temp); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[38], res_avx0), res_avx2); - res_avx1 = _mm256_add_epi16(res_avx1, temp); - c22_avx = _mm256_add_epi16(c22_avx, c8_avx); - res_avx6 = _mm256_add_epi16(res_avx6, c21_avx); - res_avx2 = _mm256_add_epi16(res_avx2, c20_avx); - c7_avx = _mm256_add_epi16(c7_avx, c24_avx); - c6_avx = _mm256_sub_epi16(_mm256_sub_epi16(c6_avx, res_avx0), res_avx4); - c22_avx = _mm256_sub_epi16(_mm256_sub_epi16(c22_avx, res_avx1), res_avx5); - c7_avx = _mm256_sub_epi16(_mm256_sub_epi16(c7_avx, res_avx2), res_avx6); - c23_avx = _mm256_sub_epi16(_mm256_sub_epi16(c23_avx, res_avx3), res_avx7); - - result_final2[0] = res_avx0; - result_final2[1] = res_avx1; - result_final2[2] = _mm256_add_epi16(res_avx2, c6_avx); - result_final2[3] = _mm256_add_epi16(res_avx3, c22_avx); - result_final2[4] = _mm256_add_epi16(res_avx4, c7_avx); - result_final2[5] = _mm256_add_epi16(res_avx5, c23_avx); - result_final2[6] = res_avx6; - result_final2[7] = res_avx7; - //------------------------AVX interpolation for 3rd poly ends-------------- - - //------------------------AVX interpolation for 4th poly external------------------- - res_avx0 = c_eval[43]; - res_avx2 = c_eval[44]; - res_avx4 = c_eval[45]; - res_avx6 = c_eval[46]; - c6_avx = c_eval[65]; - c7_avx = c_eval[66]; - - c8_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[67], c6_avx), c7_avx); - - res_avx1 = c_eval[59]; - res_avx3 = c_eval[60]; - res_avx5 = c_eval[61]; - res_avx7 = c_eval[62]; - c22_avx = c_eval[81]; - c23_avx = c_eval[82]; - - c21_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[80], res_avx5), res_avx7); - c24_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[83], c22_avx), c23_avx); - c20_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[63], res_avx1), res_avx3); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[64], res_avx4), res_avx6); - res_avx5 = _mm256_add_epi16(res_avx5, temp); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[47], res_avx0), res_avx2); - res_avx1 = _mm256_add_epi16(res_avx1, temp); - c22_avx = _mm256_add_epi16(c22_avx, c8_avx); - res_avx6 = _mm256_add_epi16(res_avx6, c21_avx); - res_avx2 = _mm256_add_epi16(res_avx2, c20_avx); - c7_avx = _mm256_add_epi16(c7_avx, c24_avx); - c6_avx = _mm256_sub_epi16(_mm256_sub_epi16(c6_avx, res_avx0), res_avx4); - c22_avx = _mm256_sub_epi16(_mm256_sub_epi16(c22_avx, res_avx1), res_avx5); - c7_avx = _mm256_sub_epi16(_mm256_sub_epi16(c7_avx, res_avx2), res_avx6); - c23_avx = _mm256_sub_epi16(_mm256_sub_epi16(c23_avx, res_avx3), res_avx7); - - result_final3[0] = res_avx0; - result_final3[1] = res_avx1; - result_final3[2] = _mm256_add_epi16(res_avx2, c6_avx); - result_final3[3] = _mm256_add_epi16(res_avx3, c22_avx); - result_final3[4] = _mm256_add_epi16(res_avx4, c7_avx); - result_final3[5] = _mm256_add_epi16(res_avx5, c23_avx); - result_final3[6] = res_avx6; - result_final3[7] = res_avx7; - //------------------------AVX interpolation for 4th poly ends-------------- - - //------------------------AVX interpolation for 5th poly external------------------- - res_avx0 = c_eval[68]; - res_avx2 = c_eval[69]; - res_avx4 = c_eval[70]; - res_avx6 = c_eval[71]; - c6_avx = c_eval[74]; - c7_avx = c_eval[75]; - - c8_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[76], c6_avx), c7_avx); - - res_avx1 = c_eval[84]; - res_avx3 = c_eval[85]; - res_avx5 = c_eval[86]; - res_avx7 = c_eval[87]; - c22_avx = c_eval[90]; - c23_avx = c_eval[91]; - - c21_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[89], res_avx5), res_avx7); - c24_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[92], c22_avx), c23_avx); - c20_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[88], res_avx1), res_avx3); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[73], res_avx4), res_avx6); - res_avx5 = _mm256_add_epi16(res_avx5, temp); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[72], res_avx0), res_avx2); - res_avx1 = _mm256_add_epi16(res_avx1, temp); - c22_avx = _mm256_add_epi16(c22_avx, c8_avx); - res_avx6 = _mm256_add_epi16(res_avx6, c21_avx); - res_avx2 = _mm256_add_epi16(res_avx2, c20_avx); - c7_avx = _mm256_add_epi16(c7_avx, c24_avx); - c6_avx = _mm256_sub_epi16(_mm256_sub_epi16(c6_avx, res_avx0), res_avx4); - c22_avx = _mm256_sub_epi16(_mm256_sub_epi16(c22_avx, res_avx1), res_avx5); - c7_avx = _mm256_sub_epi16(_mm256_sub_epi16(c7_avx, res_avx2), res_avx6); - c23_avx = _mm256_sub_epi16(_mm256_sub_epi16(c23_avx, res_avx3), res_avx7); - - result_final4[0] = res_avx0; - result_final4[1] = res_avx1; - result_final4[2] = _mm256_add_epi16(res_avx2, c6_avx); - result_final4[3] = _mm256_add_epi16(res_avx3, c22_avx); - result_final4[4] = _mm256_add_epi16(res_avx4, c7_avx); - result_final4[5] = _mm256_add_epi16(res_avx5, c23_avx); - result_final4[6] = res_avx6; - result_final4[7] = res_avx7; - //------------------------AVX interpolation for 5th poly ends-------------- - - //------------------------AVX interpolation for 6th poly external------------------- - res_avx0 = c_eval[77]; - res_avx2 = c_eval[78]; - res_avx4 = c_eval[79]; - res_avx6 = c_eval[96]; - c6_avx = c_eval[99]; - c7_avx = c_eval[100]; - - c8_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[101], c6_avx), c7_avx); - - res_avx1 = c_eval[93]; - res_avx3 = c_eval[94]; - res_avx5 = c_eval[95]; - res_avx7 = c_eval[112]; - c22_avx = c_eval[115]; - c23_avx = c_eval[116]; - - c21_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[114], res_avx5), res_avx7); - c24_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[117], c22_avx), c23_avx); - c20_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[113], res_avx1), res_avx3); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[98], res_avx4), res_avx6); - res_avx5 = _mm256_add_epi16(res_avx5, temp); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[97], res_avx0), res_avx2); - res_avx1 = _mm256_add_epi16(res_avx1, temp); - c22_avx = _mm256_add_epi16(c22_avx, c8_avx); - res_avx6 = _mm256_add_epi16(res_avx6, c21_avx); - res_avx2 = _mm256_add_epi16(res_avx2, c20_avx); - c7_avx = _mm256_add_epi16(c7_avx, c24_avx); - c6_avx = _mm256_sub_epi16(_mm256_sub_epi16(c6_avx, res_avx0), res_avx4); - c22_avx = _mm256_sub_epi16(_mm256_sub_epi16(c22_avx, res_avx1), res_avx5); - c7_avx = _mm256_sub_epi16(_mm256_sub_epi16(c7_avx, res_avx2), res_avx6); - c23_avx = _mm256_sub_epi16(_mm256_sub_epi16(c23_avx, res_avx3), res_avx7); - - result_final5[0] = res_avx0; - result_final5[1] = res_avx1; - result_final5[2] = _mm256_add_epi16(res_avx2, c6_avx); - result_final5[3] = _mm256_add_epi16(res_avx3, c22_avx); - result_final5[4] = _mm256_add_epi16(res_avx4, c7_avx); - result_final5[5] = _mm256_add_epi16(res_avx5, c23_avx); - result_final5[6] = res_avx6; - result_final5[7] = res_avx7; - //------------------------AVX interpolation for 6th poly ends-------------- - - //------------------------AVX interpolation for 7th poly external------------------- - res_avx0 = c_eval[102]; - res_avx2 = c_eval[103]; - res_avx4 = c_eval[104]; - res_avx6 = c_eval[105]; - c6_avx = c_eval[108]; - c7_avx = c_eval[109]; - - c8_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[110], c6_avx), c7_avx); - - res_avx1 = c_eval[118]; - res_avx3 = c_eval[119]; - res_avx5 = c_eval[120]; - res_avx7 = c_eval[121]; - c22_avx = c_eval[124]; - c23_avx = c_eval[125]; - - c21_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[123], res_avx5), res_avx7); - c24_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[126], c22_avx), c23_avx); - c20_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[122], res_avx1), res_avx3); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[107], res_avx4), res_avx6); - res_avx5 = _mm256_add_epi16(res_avx5, temp); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[106], res_avx0), res_avx2); - res_avx1 = _mm256_add_epi16(res_avx1, temp); - c22_avx = _mm256_add_epi16(c22_avx, c8_avx); - res_avx6 = _mm256_add_epi16(res_avx6, c21_avx); - res_avx2 = _mm256_add_epi16(res_avx2, c20_avx); - c7_avx = _mm256_add_epi16(c7_avx, c24_avx); - c6_avx = _mm256_sub_epi16(_mm256_sub_epi16(c6_avx, res_avx0), res_avx4); - c22_avx = _mm256_sub_epi16(_mm256_sub_epi16(c22_avx, res_avx1), res_avx5); - c7_avx = _mm256_sub_epi16(_mm256_sub_epi16(c7_avx, res_avx2), res_avx6); - c23_avx = _mm256_sub_epi16(_mm256_sub_epi16(c23_avx, res_avx3), res_avx7); - - result_final6[0] = res_avx0; - result_final6[1] = res_avx1; - result_final6[2] = _mm256_add_epi16(res_avx2, c6_avx); - result_final6[3] = _mm256_add_epi16(res_avx3, c22_avx); - result_final6[4] = _mm256_add_epi16(res_avx4, c7_avx); - result_final6[5] = _mm256_add_epi16(res_avx5, c23_avx); - result_final6[6] = res_avx6; - result_final6[7] = res_avx7; - //------------------------AVX interpolation for 7th poly ends-------------- -} - -void PQCLEAN_FIRESABER_AVX2_toom4_mul_A_by_B_eval(toom4_points_product *c_eval, const poly *a, const toom4_points *b_eval, int accumulate) { - size_t i; - __m256i r0_avx, r1_avx, r2_avx, r3_avx, r4_avx, r5_avx, r6_avx; - __m256i aw_avx[7 * L]; - __m256i *va = (__m256i *)a->coeffs; - - for (i = 0; i < L; i++) { - r0_avx = va[0 * L + i]; - r1_avx = va[1 * L + i]; - r2_avx = va[2 * L + i]; - r3_avx = va[3 * L + i]; - r4_avx = _mm256_add_epi16(r0_avx, r2_avx); - r5_avx = _mm256_add_epi16(r1_avx, r3_avx); - aw_avx[2 * L + i] = _mm256_add_epi16(r4_avx, r5_avx); - aw_avx[3 * L + i] = _mm256_sub_epi16(r4_avx, r5_avx); - r4_avx = _mm256_slli_epi16(r0_avx, 2); - r4_avx = _mm256_add_epi16(r4_avx, r2_avx); - r4_avx = _mm256_slli_epi16(r4_avx, 1); - r5_avx = _mm256_slli_epi16(r1_avx, 2); - r5_avx = _mm256_add_epi16(r5_avx, r3_avx); - aw_avx[4 * L + i] = _mm256_add_epi16(r4_avx, r5_avx); - aw_avx[5 * L + i] = _mm256_sub_epi16(r4_avx, r5_avx); - r4_avx = _mm256_slli_epi16(r3_avx, 3); - r6_avx = _mm256_slli_epi16(r2_avx, 2); - r4_avx = _mm256_add_epi16(r4_avx, r6_avx); - r6_avx = _mm256_slli_epi16(r1_avx, 1); - r4_avx = _mm256_add_epi16(r4_avx, r6_avx); - aw_avx[1 * L + i] = _mm256_add_epi16(r4_avx, r0_avx); - aw_avx[6 * L + i] = r0_avx; - aw_avx[0 * L + i] = r3_avx; - } - - batch_64coefficient_multiplications(c_eval, aw_avx, b_eval, accumulate); -} - -void PQCLEAN_FIRESABER_AVX2_toom4_eval(toom4_points *b_eval, const poly *b) { - size_t i; - __m256i bw_avx[7 * L]; - __m256i r0_avx, r1_avx, r2_avx, r3_avx, r4_avx, r5_avx, r6_avx; - __m256i *vb = (__m256i *)b->coeffs; - __m256i *vb_eval = (__m256i *)b_eval->coeffs; - - for (i = 0; i < L; i++) { - r0_avx = vb[0 * L + i]; - r1_avx = vb[1 * L + i]; - r2_avx = vb[2 * L + i]; - r3_avx = vb[3 * L + i]; - r4_avx = _mm256_add_epi16(r0_avx, r2_avx); - r5_avx = _mm256_add_epi16(r1_avx, r3_avx); - bw_avx[2 * L + i] = _mm256_add_epi16(r4_avx, r5_avx); - bw_avx[3 * L + i] = _mm256_sub_epi16(r4_avx, r5_avx); - r4_avx = _mm256_slli_epi16(r0_avx, 2); - r4_avx = _mm256_add_epi16(r4_avx, r2_avx); - r4_avx = _mm256_slli_epi16(r4_avx, 1); - r5_avx = _mm256_slli_epi16(r1_avx, 2); - r5_avx = _mm256_add_epi16(r5_avx, r3_avx); - bw_avx[4 * L + i] = _mm256_add_epi16(r4_avx, r5_avx); - bw_avx[5 * L + i] = _mm256_sub_epi16(r4_avx, r5_avx); - r4_avx = _mm256_slli_epi16(r3_avx, 3); - r6_avx = _mm256_slli_epi16(r2_avx, 2); - r4_avx = _mm256_add_epi16(r4_avx, r6_avx); - r6_avx = _mm256_slli_epi16(r1_avx, 1); - r4_avx = _mm256_add_epi16(r4_avx, r6_avx); - bw_avx[1 * L + i] = _mm256_add_epi16(r4_avx, r0_avx); - bw_avx[6 * L + i] = r0_avx; - bw_avx[0 * L + i] = r3_avx; - } - - karatsuba_eval(vb_eval, bw_avx); -} - - -void PQCLEAN_FIRESABER_AVX2_toom4_interp(poly *res, const toom4_points_product *c_eval) { - size_t i; - __m256i r0_avx, r1_avx, r2_avx, r3_avx, r4_avx, r5_avx, r6_avx, temp_avx; - __m256i w1_avx[2 * L], w2_avx[2 * L], w3_avx[2 * L], w4_avx[2 * L], w5_avx[2 * L], w6_avx[2 * L], w7_avx[2 * L]; - __m256i res_full[32]; - __m256i *vc = (__m256i *)c_eval->coeffs; - __m256i *vres = (__m256i *)res->coeffs; - - transpose(vc); - transpose(vc + 16); - transpose(vc + 32); - transpose(vc + 48); - transpose(vc + 64); - transpose(vc + 80); - transpose(vc + 96); - transpose(vc + 112); - - karatsuba_interp(w1_avx, w2_avx, w3_avx, w4_avx, w5_avx, w6_avx, w7_avx, vc); - - for (i = 0; i < 2 * L; i++) { - r0_avx = w1_avx[i]; - r1_avx = w2_avx[i]; - r2_avx = w3_avx[i]; - r3_avx = w4_avx[i]; - r4_avx = w5_avx[i]; - r5_avx = w6_avx[i]; - r6_avx = w7_avx[i]; - - r1_avx = _mm256_add_epi16(r1_avx, r4_avx); - r5_avx = _mm256_sub_epi16(r5_avx, r4_avx); - r3_avx = _mm256_sub_epi16(r3_avx, r2_avx); - r3_avx = _mm256_srli_epi16(r3_avx, 1); - r4_avx = _mm256_sub_epi16(r4_avx, r0_avx); - temp_avx = _mm256_slli_epi16(r6_avx, 6); - - r4_avx = _mm256_sub_epi16(r4_avx, temp_avx); - r4_avx = _mm256_slli_epi16(r4_avx, 1); - r4_avx = _mm256_add_epi16(r4_avx, r5_avx); - r2_avx = _mm256_add_epi16(r2_avx, r3_avx); - temp_avx = _mm256_slli_epi16(r2_avx, 6); - - r1_avx = _mm256_sub_epi16(r1_avx, temp_avx); - r1_avx = _mm256_sub_epi16(r1_avx, r2_avx); - r2_avx = _mm256_sub_epi16(r2_avx, r6_avx); - r2_avx = _mm256_sub_epi16(r2_avx, r0_avx); - temp_avx = _mm256_mullo_epi16(r2_avx, _mm256_set1_epi16(45)); - - r1_avx = _mm256_add_epi16(r1_avx, temp_avx); - temp_avx = _mm256_slli_epi16(r2_avx, 3); - - r4_avx = _mm256_sub_epi16(r4_avx, temp_avx); - r4_avx = _mm256_mullo_epi16(r4_avx, _mm256_set1_epi16(-21845)); // -21845 = 1/3 (mod 2^16) - r4_avx = _mm256_srli_epi16(r4_avx, 3); - r5_avx = _mm256_add_epi16(r5_avx, r1_avx); - temp_avx = _mm256_slli_epi16(r3_avx, 4); - - r1_avx = _mm256_add_epi16(r1_avx, temp_avx); - r1_avx = _mm256_mullo_epi16(r1_avx, _mm256_set1_epi16(-29127)); // -29127 = 1/9 (mod 2^16) - r1_avx = _mm256_srli_epi16(r1_avx, 1); - r3_avx = _mm256_add_epi16(r1_avx, r3_avx); - r3_avx = _mm256_sub_epi16(_mm256_set1_epi16(0), r3_avx); - temp_avx = _mm256_mullo_epi16(r1_avx, _mm256_set1_epi16(30)); - temp_avx = _mm256_sub_epi16(temp_avx, r5_avx); - temp_avx = _mm256_mullo_epi16(temp_avx, _mm256_set1_epi16(-4369)); // -4369 = 1/15 (mod 2^16) - - r5_avx = _mm256_srli_epi16(temp_avx, 2); - r2_avx = _mm256_sub_epi16(r2_avx, r4_avx); - r1_avx = _mm256_sub_epi16(r1_avx, r5_avx); - - if (i < L) { - res_full[0 * L + i] = r6_avx; - res_full[1 * L + i] = r5_avx; - res_full[2 * L + i] = r4_avx; - res_full[3 * L + i] = r3_avx; - res_full[4 * L + i] = r2_avx; - res_full[5 * L + i] = r1_avx; - res_full[6 * L + i] = r0_avx; - } else { - res_full[0 * L + i] = _mm256_add_epi16(res_full[0 * L + i], r6_avx); - res_full[1 * L + i] = _mm256_add_epi16(res_full[1 * L + i], r5_avx); - res_full[2 * L + i] = _mm256_add_epi16(res_full[2 * L + i], r4_avx); - res_full[3 * L + i] = _mm256_add_epi16(res_full[3 * L + i], r3_avx); - res_full[4 * L + i] = _mm256_add_epi16(res_full[4 * L + i], r2_avx); - res_full[5 * L + i] = _mm256_add_epi16(res_full[5 * L + i], r1_avx); - res_full[6 * L + i] = r0_avx; - } - } - - // Reduction by X^256 + 1 - for (i = 0; i < 16; i++) { - vres[i] = _mm256_sub_epi16(res_full[i], res_full[i + 16]); - } -} diff --git a/src/kem/saber/firesaber/avx2/verify.c b/src/kem/saber/firesaber/avx2/verify.c deleted file mode 100644 index d78e12e0..00000000 --- a/src/kem/saber/firesaber/avx2/verify.c +++ /dev/null @@ -1,35 +0,0 @@ -#include "verify.h" - -/*------------------------------------------------- -This file has been adapted from the implementation -(available at https://github.com/pq-crystals/kyber) of -"CRYSTALS – Kyber: a CCA-secure module-lattice-based KEM" - by : Joppe Bos, Leo Ducas, Eike Kiltz, Tancrede Lepoint, -Vadim Lyubashevsky, John M. Schanck, Peter Schwabe & Damien stehle -----------------------------------------------------*/ - - -/* returns 0 for equal strings, 1 for non-equal strings */ -uint8_t PQCLEAN_FIRESABER_AVX2_verify(const uint8_t *a, const uint8_t *b, size_t len) { - uint64_t r; - size_t i; - r = 0; - - for (i = 0; i < len; i++) { - r |= a[i] ^ b[i]; - } - - r = (~r + 1); // Two's complement - r >>= 63; - return (uint8_t) r; -} - -/* b = 1 means mov, b = 0 means don't mov*/ -void PQCLEAN_FIRESABER_AVX2_cmov(uint8_t *r, const uint8_t *x, size_t len, uint8_t b) { - size_t i; - - b = -b; - for (i = 0; i < len; i++) { - r[i] ^= b & (x[i] ^ r[i]); - } -} diff --git a/src/kem/saber/firesaber/avx2/verify.h b/src/kem/saber/firesaber/avx2/verify.h deleted file mode 100644 index 2ec50370..00000000 --- a/src/kem/saber/firesaber/avx2/verify.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef VERIFY_H -#define VERIFY_H -/*------------------------------------------------- -This file has been adapted from the implementation -(available at https://github.com/pq-crystals/kyber) of -"CRYSTALS – Kyber: a CCA-secure module-lattice-based KEM" - by : Joppe Bos, Leo Ducas, Eike Kiltz, Tancrede Lepoint, -Vadim Lyubashevsky, John M. Schanck, Peter Schwabe & Damien stehle -----------------------------------------------------*/ - -#include -#include - -/* returns 0 for equal strings, 1 for non-equal strings */ -uint8_t PQCLEAN_FIRESABER_AVX2_verify(const uint8_t *a, const uint8_t *b, size_t len); - - -/* b = 1 means mov, b = 0 means don't mov*/ -void PQCLEAN_FIRESABER_AVX2_cmov(uint8_t *r, const uint8_t *x, size_t len, uint8_t b); - - -#endif diff --git a/src/kem/saber/firesaber/clean/CMakeLists.txt b/src/kem/saber/firesaber/clean/CMakeLists.txt deleted file mode 100644 index bc26cec0..00000000 --- a/src/kem/saber/firesaber/clean/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -set( - SRC_CLEAN_FIRESABER - cbd.c - kem.c - pack_unpack.c - poly.c - poly_mul.c - SABER_indcpa.c - verify.c) - -define_kem_alg( - firesaber_clean - PQCLEAN_FIRESABER_CLEAN "${SRC_CLEAN_FIRESABER}" "${CMAKE_CURRENT_SOURCE_DIR}") diff --git a/src/kem/saber/firesaber/clean/SABER_indcpa.c b/src/kem/saber/firesaber/clean/SABER_indcpa.c deleted file mode 100644 index a9e7c141..00000000 --- a/src/kem/saber/firesaber/clean/SABER_indcpa.c +++ /dev/null @@ -1,113 +0,0 @@ -#include "SABER_indcpa.h" -#include "SABER_params.h" -#include "fips202.h" -#include "pack_unpack.h" -#include "poly.h" -#include "randombytes.h" -#include -#include - -#define h1 (1 << (SABER_EQ - SABER_EP - 1)) -#define h2 ((1 << (SABER_EP - 2)) - (1 << (SABER_EP - SABER_ET - 1)) + (1 << (SABER_EQ - SABER_EP - 1))) - -void PQCLEAN_FIRESABER_CLEAN_indcpa_kem_keypair(uint8_t pk[SABER_INDCPA_PUBLICKEYBYTES], uint8_t sk[SABER_INDCPA_SECRETKEYBYTES]) { - size_t i, j; - - poly A[SABER_L][SABER_L]; - poly s[SABER_L]; - poly res[SABER_L]; - - uint8_t rand[SABER_NOISESEEDBYTES]; - uint8_t *seed_A = pk + SABER_POLYVECCOMPRESSEDBYTES; - - randombytes(seed_A, SABER_SEEDBYTES); - shake128(seed_A, SABER_SEEDBYTES, seed_A, SABER_SEEDBYTES); // for not revealing system RNG state - - randombytes(rand, SABER_NOISESEEDBYTES); - PQCLEAN_FIRESABER_CLEAN_GenSecret(s, rand); - PQCLEAN_FIRESABER_CLEAN_POLVECq2BS(sk, s); - - PQCLEAN_FIRESABER_CLEAN_GenMatrix(A, seed_A); // sample matrix A - PQCLEAN_FIRESABER_CLEAN_MatrixVectorMul(res, (const poly (*)[SABER_L])A, (const poly *)s, 1); // Matrix in transposed order - - - // rounding - for (i = 0; i < SABER_L; i++) { - for (j = 0; j < SABER_N; j++) { - res[i].coeffs[j] += h1; - res[i].coeffs[j] >>= SABER_EQ - SABER_EP; - res[i].coeffs[j] &= SABER_Q - 1; - } - } - - PQCLEAN_FIRESABER_CLEAN_POLVECp2BS(pk, res); // pack public key -} - - -void PQCLEAN_FIRESABER_CLEAN_indcpa_kem_enc(uint8_t ciphertext[SABER_BYTES_CCA_DEC], const uint8_t m[SABER_KEYBYTES], const uint8_t noiseseed[SABER_NOISESEEDBYTES], const uint8_t pk[SABER_INDCPA_PUBLICKEYBYTES]) { - size_t i, j; - - poly A[SABER_L][SABER_L]; - poly res[SABER_L]; - poly s[SABER_L]; - poly *temp = A[0]; // re-use stack space - poly *vprime = &A[0][0]; - poly *message = &A[0][1]; - - const uint8_t *seed_A = pk + SABER_POLYVECCOMPRESSEDBYTES; - uint8_t *msk_c = ciphertext + SABER_POLYVECCOMPRESSEDBYTES; - - PQCLEAN_FIRESABER_CLEAN_GenSecret(s, noiseseed); - PQCLEAN_FIRESABER_CLEAN_GenMatrix(A, seed_A); - PQCLEAN_FIRESABER_CLEAN_MatrixVectorMul(res, (const poly (*)[SABER_L])A, (const poly *)s, 0); // 0 => not transposed - - - // rounding - for (i = 0; i < SABER_L; i++) { //shift right EQ-EP bits - for (j = 0; j < SABER_N; j++) { - res[i].coeffs[j] += h1; - res[i].coeffs[j] >>= SABER_EQ - SABER_EP; - res[i].coeffs[j] &= SABER_Q - 1; - } - } - PQCLEAN_FIRESABER_CLEAN_POLVECp2BS(ciphertext, res); - - // vector-vector scalar multiplication with mod p - PQCLEAN_FIRESABER_CLEAN_BS2POLVECp(temp, pk); - PQCLEAN_FIRESABER_CLEAN_InnerProd(vprime, temp, s); - PQCLEAN_FIRESABER_CLEAN_BS2POLmsg(message, m); - - for (i = 0; i < SABER_N; i++) { - vprime->coeffs[i] += h1 - (message->coeffs[i] << (SABER_EP - 1)); - vprime->coeffs[i] &= SABER_P - 1; - vprime->coeffs[i] >>= SABER_EP - SABER_ET; - } - - PQCLEAN_FIRESABER_CLEAN_POLT2BS(msk_c, vprime); -} - - -void PQCLEAN_FIRESABER_CLEAN_indcpa_kem_dec(uint8_t m[SABER_KEYBYTES], const uint8_t sk[SABER_INDCPA_SECRETKEYBYTES], const uint8_t ciphertext[SABER_BYTES_CCA_DEC]) { - size_t i; - - poly temp[SABER_L]; - poly s[SABER_L]; - - const uint8_t *packed_cm = ciphertext + SABER_POLYVECCOMPRESSEDBYTES; - poly *v = &temp[0]; - poly *cm = &temp[1]; - - PQCLEAN_FIRESABER_CLEAN_BS2POLVECq(s, sk); - PQCLEAN_FIRESABER_CLEAN_BS2POLVECp(temp, ciphertext); - PQCLEAN_FIRESABER_CLEAN_InnerProd(&temp[0], temp, s); - - PQCLEAN_FIRESABER_CLEAN_BS2POLT(cm, packed_cm); - - for (i = 0; i < SABER_N; i++) { - v->coeffs[i] += h2 - (cm->coeffs[i] << (SABER_EP - SABER_ET)); - v->coeffs[i] &= SABER_P - 1; - v->coeffs[i] >>= SABER_EP - 1; - } - - PQCLEAN_FIRESABER_CLEAN_POLmsg2BS(m, v); -} diff --git a/src/kem/saber/firesaber/clean/SABER_indcpa.h b/src/kem/saber/firesaber/clean/SABER_indcpa.h deleted file mode 100644 index cc009afe..00000000 --- a/src/kem/saber/firesaber/clean/SABER_indcpa.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef INDCPA_H -#define INDCPA_H -#include "SABER_params.h" -#include - -void PQCLEAN_FIRESABER_CLEAN_indcpa_kem_keypair(uint8_t pk[SABER_INDCPA_PUBLICKEYBYTES], uint8_t sk[SABER_INDCPA_SECRETKEYBYTES]); - -void PQCLEAN_FIRESABER_CLEAN_indcpa_kem_enc(uint8_t ciphertext[SABER_BYTES_CCA_DEC], const uint8_t m[SABER_KEYBYTES], const uint8_t noiseseed[SABER_NOISESEEDBYTES], const uint8_t pk[SABER_INDCPA_PUBLICKEYBYTES]); - -void PQCLEAN_FIRESABER_CLEAN_indcpa_kem_dec(uint8_t m[SABER_KEYBYTES], const uint8_t sk[SABER_INDCPA_SECRETKEYBYTES], const uint8_t ciphertext[SABER_BYTES_CCA_DEC]); - - -#endif diff --git a/src/kem/saber/firesaber/clean/SABER_params.h b/src/kem/saber/firesaber/clean/SABER_params.h deleted file mode 100644 index 6481efec..00000000 --- a/src/kem/saber/firesaber/clean/SABER_params.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef PARAMS_H -#define PARAMS_H - - -/* Don't change anything below this line */ -#define SABER_L 4 -#define SABER_MU 6 -#define SABER_ET 6 - -#define SABER_N 256 - -#define SABER_EP 10 -#define SABER_P (1 << SABER_EP) - -#define SABER_EQ 13 -#define SABER_Q (1 << SABER_EQ) - -#define SABER_SEEDBYTES 32 -#define SABER_NOISESEEDBYTES 32 -#define SABER_KEYBYTES 32 -#define SABER_HASHBYTES 32 - -#define SABER_POLYCOINBYTES (SABER_MU * SABER_N / 8) - -#define SABER_POLYBYTES (SABER_EQ * SABER_N / 8) -#define SABER_POLYVECBYTES (SABER_L * SABER_POLYBYTES) - -#define SABER_POLYCOMPRESSEDBYTES (SABER_EP * SABER_N / 8) -#define SABER_POLYVECCOMPRESSEDBYTES (SABER_L * SABER_POLYCOMPRESSEDBYTES) - -#define SABER_SCALEBYTES_KEM (SABER_ET * SABER_N / 8) - -#define SABER_INDCPA_PUBLICKEYBYTES (SABER_POLYVECCOMPRESSEDBYTES + SABER_SEEDBYTES) -#define SABER_INDCPA_SECRETKEYBYTES (SABER_POLYVECBYTES) - -#define SABER_PUBLICKEYBYTES (SABER_INDCPA_PUBLICKEYBYTES) -#define SABER_SECRETKEYBYTES (SABER_INDCPA_SECRETKEYBYTES + SABER_INDCPA_PUBLICKEYBYTES + SABER_HASHBYTES + SABER_KEYBYTES) - -#define SABER_BYTES_CCA_DEC (SABER_POLYVECCOMPRESSEDBYTES + SABER_SCALEBYTES_KEM) - -#endif diff --git a/src/kem/saber/firesaber/clean/api.h b/src/kem/saber/firesaber/clean/api.h deleted file mode 100644 index fdff18fa..00000000 --- a/src/kem/saber/firesaber/clean/api.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef PQCLEAN_FIRESABER_CLEAN_API_H -#define PQCLEAN_FIRESABER_CLEAN_API_H - - -#define PQCLEAN_FIRESABER_CLEAN_CRYPTO_ALGNAME "FireSaber" -#define PQCLEAN_FIRESABER_CLEAN_CRYPTO_BYTES 32 -#define PQCLEAN_FIRESABER_CLEAN_CRYPTO_CIPHERTEXTBYTES 1472 -#define PQCLEAN_FIRESABER_CLEAN_CRYPTO_PUBLICKEYBYTES 1312 -#define PQCLEAN_FIRESABER_CLEAN_CRYPTO_SECRETKEYBYTES 3040 - -int PQCLEAN_FIRESABER_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); - -int PQCLEAN_FIRESABER_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *k, const unsigned char *pk); - -int PQCLEAN_FIRESABER_CLEAN_crypto_kem_dec(unsigned char *k, const unsigned char *ct, const unsigned char *sk); - - -#endif /* PQCLEAN_FIRESABER_CLEAN_API_H */ diff --git a/src/kem/saber/firesaber/clean/cbd.c b/src/kem/saber/firesaber/clean/cbd.c deleted file mode 100644 index 28fbc61c..00000000 --- a/src/kem/saber/firesaber/clean/cbd.c +++ /dev/null @@ -1,48 +0,0 @@ -#include "SABER_params.h" -#include "api.h" -#include "cbd.h" -#include -/*--------------------------------------------------------------------- -This file has been adapted from the implementation -(available at, Public Domain https://github.com/pq-crystals/kyber) -of "CRYSTALS – Kyber: a CCA-secure module-lattice-based KEM" -by : Joppe Bos, Leo Ducas, Eike Kiltz, Tancrede Lepoint, -Vadim Lyubashevsky, John M. Schanck, Peter Schwabe & Damien stehle -----------------------------------------------------------------------*/ - - -static uint64_t load_littleendian(const uint8_t *x, int bytes) { - int i; - uint64_t r = x[0]; - for (i = 1; i < bytes; i++) { - r |= (uint64_t)x[i] << (8 * i); - } - return r; -} - -void PQCLEAN_FIRESABER_CLEAN_cbd(uint16_t s[SABER_N], const uint8_t buf[SABER_POLYCOINBYTES]) { - uint32_t t, d, a[4], b[4]; - int i, j; - - for (i = 0; i < SABER_N / 4; i++) { - t = (uint32_t) load_littleendian(buf + 3 * i, 3); - d = 0; - for (j = 0; j < 3; j++) { - d += (t >> j) & 0x249249; - } - - a[0] = d & 0x7; - b[0] = (d >> 3) & 0x7; - a[1] = (d >> 6) & 0x7; - b[1] = (d >> 9) & 0x7; - a[2] = (d >> 12) & 0x7; - b[2] = (d >> 15) & 0x7; - a[3] = (d >> 18) & 0x7; - b[3] = (d >> 21); - - s[4 * i + 0] = (uint16_t)(a[0] - b[0]); - s[4 * i + 1] = (uint16_t)(a[1] - b[1]); - s[4 * i + 2] = (uint16_t)(a[2] - b[2]); - s[4 * i + 3] = (uint16_t)(a[3] - b[3]); - } -} diff --git a/src/kem/saber/firesaber/clean/cbd.h b/src/kem/saber/firesaber/clean/cbd.h deleted file mode 100644 index 0fa18b02..00000000 --- a/src/kem/saber/firesaber/clean/cbd.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef CBD_H -#define CBD_H -/*--------------------------------------------------------------------- -This file has been adapted from the implementation -(available at, Public Domain https://github.com/pq-crystals/kyber) -of "CRYSTALS – Kyber: a CCA-secure module-lattice-based KEM" -by : Joppe Bos, Leo Ducas, Eike Kiltz, Tancrede Lepoint, -Vadim Lyubashevsky, John M. Schanck, Peter Schwabe & Damien stehle -----------------------------------------------------------------------*/ -#include "SABER_params.h" -#include - -void PQCLEAN_FIRESABER_CLEAN_cbd(uint16_t s[SABER_N], const uint8_t buf[SABER_POLYCOINBYTES]); - - -#endif diff --git a/src/kem/saber/firesaber/clean/kem.c b/src/kem/saber/firesaber/clean/kem.c deleted file mode 100644 index 2ffe4e75..00000000 --- a/src/kem/saber/firesaber/clean/kem.c +++ /dev/null @@ -1,77 +0,0 @@ -#include "SABER_indcpa.h" -#include "SABER_params.h" -#include "api.h" -#include "fips202.h" -#include "randombytes.h" -#include "verify.h" -#include -#include - - -int PQCLEAN_FIRESABER_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk) { - size_t i; - - PQCLEAN_FIRESABER_CLEAN_indcpa_kem_keypair(pk, sk); // sk[0:SABER_INDCPA_SECRETKEYBYTES-1] <-- sk - for (i = 0; i < SABER_INDCPA_PUBLICKEYBYTES; i++) { - sk[i + SABER_INDCPA_SECRETKEYBYTES] = pk[i]; // sk[SABER_INDCPA_SECRETKEYBYTES:SABER_INDCPA_SECRETKEYBYTES+SABER_INDCPA_SECRETKEYBYTES-1] <-- pk - } - - sha3_256(sk + SABER_SECRETKEYBYTES - 64, pk, SABER_INDCPA_PUBLICKEYBYTES); // Then hash(pk) is appended. - - randombytes(sk + SABER_SECRETKEYBYTES - SABER_KEYBYTES, SABER_KEYBYTES); // Remaining part of sk contains a pseudo-random number. - // This is output when check in PQCLEAN_FIRESABER_CLEAN_crypto_kem_dec() fails. - return (0); -} - -int PQCLEAN_FIRESABER_CLEAN_crypto_kem_enc(uint8_t *c, uint8_t *k, const uint8_t *pk) { - - uint8_t kr[64]; // Will contain key, coins - uint8_t buf[64]; - - randombytes(buf, 32); - - sha3_256(buf, buf, 32); // BUF[0:31] <-- random message (will be used as the key for client) Note: hash doesnot release system RNG output - - sha3_256(buf + 32, pk, SABER_INDCPA_PUBLICKEYBYTES); // BUF[32:63] <-- Hash(public key); Multitarget countermeasure for coins + contributory KEM - - sha3_512(kr, buf, 64); // kr[0:63] <-- Hash(buf[0:63]); - // K^ <-- kr[0:31] - // noiseseed (r) <-- kr[32:63]; - PQCLEAN_FIRESABER_CLEAN_indcpa_kem_enc(c, buf, kr + 32, pk); // buf[0:31] contains message; kr[32:63] contains randomness r; - - sha3_256(kr + 32, c, SABER_BYTES_CCA_DEC); - - sha3_256(k, kr, 64); // hash concatenation of pre-k and h(c) to k - - return (0); -} - -int PQCLEAN_FIRESABER_CLEAN_crypto_kem_dec(uint8_t *k, const uint8_t *c, const uint8_t *sk) { - size_t i; - uint8_t fail; - uint8_t cmp[SABER_BYTES_CCA_DEC]; - uint8_t buf[64]; - uint8_t kr[64]; // Will contain key, coins - const uint8_t *pk = sk + SABER_INDCPA_SECRETKEYBYTES; - - PQCLEAN_FIRESABER_CLEAN_indcpa_kem_dec(buf, sk, c); // buf[0:31] <-- message - - // Multitarget countermeasure for coins + contributory KEM - for (i = 0; i < 32; i++) { // Save hash by storing h(pk) in sk - buf[32 + i] = sk[SABER_SECRETKEYBYTES - 64 + i]; - } - - sha3_512(kr, buf, 64); - - PQCLEAN_FIRESABER_CLEAN_indcpa_kem_enc(cmp, buf, kr + 32, pk); - - fail = PQCLEAN_FIRESABER_CLEAN_verify(c, cmp, SABER_BYTES_CCA_DEC); - - sha3_256(kr + 32, c, SABER_BYTES_CCA_DEC); // overwrite coins in kr with h(c) - - PQCLEAN_FIRESABER_CLEAN_cmov(kr, sk + SABER_SECRETKEYBYTES - SABER_KEYBYTES, SABER_KEYBYTES, fail); - - sha3_256(k, kr, 64); // hash concatenation of pre-k and h(c) to k - - return (0); -} diff --git a/src/kem/saber/firesaber/clean/pack_unpack.c b/src/kem/saber/firesaber/clean/pack_unpack.c deleted file mode 100644 index 2d1538ae..00000000 --- a/src/kem/saber/firesaber/clean/pack_unpack.c +++ /dev/null @@ -1,151 +0,0 @@ -#include "SABER_params.h" -#include "pack_unpack.h" -#include "poly.h" -#include - -void PQCLEAN_FIRESABER_CLEAN_POLT2BS(uint8_t bytes[SABER_SCALEBYTES_KEM], const poly *data) { - size_t j; - const uint16_t *in = data->coeffs; - uint8_t *out = bytes; - for (j = 0; j < SABER_N / 4; j++) { - out[0] = (uint8_t) ((in[0] & 0x3f) | (in[1] << 6)); - out[1] = (uint8_t) (((in[1] >> 2) & 0x0f) | (in[2] << 4)); - out[2] = (uint8_t) (((in[2] >> 4) & 0x03) | (in[3] << 2)); - in += 4; - out += 3; - } -} - -void PQCLEAN_FIRESABER_CLEAN_BS2POLT(poly *data, const uint8_t bytes[SABER_SCALEBYTES_KEM]) { - /* This function does not reduce its output mod T */ - size_t j; - const uint8_t *in = bytes; - uint16_t *out = data->coeffs; - for (j = 0; j < SABER_N / 4; j++) { - out[0] = in[0]; - out[1] = (in[0] >> 6) | (in[1] << 2); - out[2] = (in[1] >> 4) | (in[2] << 4); - out[3] = (in[2] >> 2); - in += 3; - out += 4; - } -} - -static void POLq2BS(uint8_t bytes[SABER_POLYBYTES], const poly *data) { - size_t j; - const uint16_t *in = data->coeffs; - uint8_t *out = bytes; - for (j = 0; j < SABER_N / 8; j++) { - out[0] = (uint8_t) (in[0]); - out[1] = (uint8_t) (((in[0] >> 8) & 0x1f) | (in[1] << 5)); - out[2] = (uint8_t) (in[1] >> 3); - out[3] = (uint8_t) (((in[1] >> 11) & 0x03) | (in[2] << 2)); - out[4] = (uint8_t) (((in[2] >> 6) & 0x7f) | (in[3] << 7)); - out[5] = (uint8_t) (in[3] >> 1); - out[6] = (uint8_t) (((in[3] >> 9) & 0x0f) | (in[4] << 4)); - out[7] = (uint8_t) (in[4] >> 4); - out[8] = (uint8_t) (((in[4] >> 12) & 0x01) | (in[5] << 1)); - out[9] = (uint8_t) (((in[5] >> 7) & 0x3f) | (in[6] << 6)); - out[10] = (uint8_t) (in[6] >> 2); - out[11] = (uint8_t) (((in[6] >> 10) & 0x07) | (in[7] << 3)); - out[12] = (uint8_t) (in[7] >> 5); - in += 8; - out += 13; - } -} - -static void BS2POLq(poly *data, const uint8_t bytes[SABER_POLYBYTES]) { - /* This function does not reduce its output mod Q */ - size_t j; - const uint8_t *in = bytes; - uint16_t *out = data->coeffs; - for (j = 0; j < SABER_N / 8; j++) { - out[0] = (in[0]) | (in[1] << 8); - out[1] = (in[1] >> 5) | (in[2] << 3) | (in[3] << 11); - out[2] = (in[3] >> 2) | (in[4] << 6); - out[3] = (in[4] >> 7) | (in[5] << 1) | (in[6] << 9); - out[4] = (in[6] >> 4) | (in[7] << 4) | (in[8] << 12); - out[5] = (in[8] >> 1) | (in[9] << 7); - out[6] = (in[9] >> 6) | (in[10] << 2) | (in[11] << 10); - out[7] = (in[11] >> 3) | (in[12] << 5); - in += 13; - out += 8; - } -} - -static void POLp2BS(uint8_t bytes[SABER_POLYCOMPRESSEDBYTES], const poly *data) { - size_t j; - const uint16_t *in = data->coeffs; - uint8_t *out = bytes; - for (j = 0; j < SABER_N / 4; j++) { - out[0] = (uint8_t) (in[0]); - out[1] = (uint8_t) (((in[0] >> 8) & 0x03) | (in[1] << 2)); - out[2] = (uint8_t) (((in[1] >> 6) & 0x0f) | (in[2] << 4)); - out[3] = (uint8_t) (((in[2] >> 4) & 0x3f) | (in[3] << 6)); - out[4] = (uint8_t) (in[3] >> 2); - in += 4; - out += 5; - } -} - -static void BS2POLp(poly *data, const uint8_t bytes[SABER_POLYCOMPRESSEDBYTES]) { - size_t j; - const uint8_t *in = bytes; - uint16_t *out = data->coeffs; - for (j = 0; j < SABER_N / 4; j++) { - out[0] = in[0] | (in[1] << 8); - out[1] = (in[1] >> 2) | (in[2] << 6); - out[2] = (in[2] >> 4) | (in[3] << 4); - out[3] = (in[3] >> 6) | (in[4] << 2); - in += 5; - out += 4; - } -} - -void PQCLEAN_FIRESABER_CLEAN_POLVECq2BS(uint8_t bytes[SABER_POLYVECBYTES], const poly data[SABER_L]) { - size_t i; - for (i = 0; i < SABER_L; i++) { - POLq2BS(bytes + i * SABER_POLYBYTES, &data[i]); - } -} - -void PQCLEAN_FIRESABER_CLEAN_BS2POLVECq(poly data[SABER_L], const uint8_t bytes[SABER_POLYVECBYTES]) { - size_t i; - for (i = 0; i < SABER_L; i++) { - BS2POLq(&data[i], bytes + i * SABER_POLYBYTES); - } -} - -void PQCLEAN_FIRESABER_CLEAN_POLVECp2BS(uint8_t bytes[SABER_POLYVECCOMPRESSEDBYTES], const poly data[SABER_L]) { - size_t i; - for (i = 0; i < SABER_L; i++) { - POLp2BS(bytes + i * SABER_POLYCOMPRESSEDBYTES, &data[i]); - } -} - -void PQCLEAN_FIRESABER_CLEAN_BS2POLVECp(poly data[SABER_L], const uint8_t bytes[SABER_POLYVECCOMPRESSEDBYTES]) { - size_t i; - for (i = 0; i < SABER_L; i++) { - BS2POLp(&data[i], bytes + i * SABER_POLYCOMPRESSEDBYTES); - } -} - -void PQCLEAN_FIRESABER_CLEAN_BS2POLmsg(poly *data, const uint8_t bytes[SABER_KEYBYTES]) { - size_t i, j; - for (j = 0; j < SABER_KEYBYTES; j++) { - for (i = 0; i < 8; i++) { - data->coeffs[j * 8 + i] = ((bytes[j] >> i) & 0x01); - } - } -} - -void PQCLEAN_FIRESABER_CLEAN_POLmsg2BS(uint8_t bytes[SABER_KEYBYTES], const poly *data) { - size_t i, j; - memset(bytes, 0, SABER_KEYBYTES); - - for (j = 0; j < SABER_KEYBYTES; j++) { - for (i = 0; i < 8; i++) { - bytes[j] = bytes[j] | ((data->coeffs[j * 8 + i] & 0x01) << i); - } - } -} diff --git a/src/kem/saber/firesaber/clean/pack_unpack.h b/src/kem/saber/firesaber/clean/pack_unpack.h deleted file mode 100644 index 698cecb1..00000000 --- a/src/kem/saber/firesaber/clean/pack_unpack.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef PACK_UNPACK_H -#define PACK_UNPACK_H -#include "SABER_params.h" -#include "poly.h" -#include -#include - -void PQCLEAN_FIRESABER_CLEAN_POLT2BS(uint8_t bytes[SABER_SCALEBYTES_KEM], const poly *data); - -void PQCLEAN_FIRESABER_CLEAN_BS2POLT(poly *data, const uint8_t bytes[SABER_SCALEBYTES_KEM]); - - -void PQCLEAN_FIRESABER_CLEAN_POLVECq2BS(uint8_t bytes[SABER_POLYVECBYTES], const poly data[SABER_L]); - -void PQCLEAN_FIRESABER_CLEAN_POLVECp2BS(uint8_t bytes[SABER_POLYVECCOMPRESSEDBYTES], const poly data[SABER_L]); - - -void PQCLEAN_FIRESABER_CLEAN_BS2POLVECq(poly data[SABER_L], const uint8_t bytes[SABER_POLYVECBYTES]); - -void PQCLEAN_FIRESABER_CLEAN_BS2POLVECp(poly data[SABER_L], const uint8_t bytes[SABER_POLYVECCOMPRESSEDBYTES]); - - -void PQCLEAN_FIRESABER_CLEAN_BS2POLmsg(poly *data, const uint8_t bytes[SABER_KEYBYTES]); - -void PQCLEAN_FIRESABER_CLEAN_POLmsg2BS(uint8_t bytes[SABER_KEYBYTES], const poly *data); - - -#endif diff --git a/src/kem/saber/firesaber/clean/poly.c b/src/kem/saber/firesaber/clean/poly.c deleted file mode 100644 index 2ce0e871..00000000 --- a/src/kem/saber/firesaber/clean/poly.c +++ /dev/null @@ -1,57 +0,0 @@ -#include "api.h" -#include "cbd.h" -#include "fips202.h" -#include "pack_unpack.h" -#include "poly.h" -#include - -void PQCLEAN_FIRESABER_CLEAN_MatrixVectorMul(poly c[SABER_L], const poly A[SABER_L][SABER_L], const poly s[SABER_L], int16_t transpose) { - size_t i, j; - - if (transpose) { - for (i = 0; i < SABER_L; i++) { - PQCLEAN_FIRESABER_CLEAN_poly_mul(&c[i], &A[0][i], &s[0], 0); - for (j = 1; j < SABER_L; j++) { - PQCLEAN_FIRESABER_CLEAN_poly_mul(&c[i], &A[j][i], &s[j], 1); - } - } - } else { - for (i = 0; i < SABER_L; i++) { - PQCLEAN_FIRESABER_CLEAN_poly_mul(&c[i], &A[i][0], &s[0], 0); - for (j = 1; j < SABER_L; j++) { - PQCLEAN_FIRESABER_CLEAN_poly_mul(&c[i], &A[i][j], &s[j], 1); - } - } - } -} - -void PQCLEAN_FIRESABER_CLEAN_InnerProd(poly *c, const poly b[SABER_L], const poly s[SABER_L]) { - size_t i; - - PQCLEAN_FIRESABER_CLEAN_poly_mul(c, &b[0], &s[0], 0); - for (i = 1; i < SABER_L; i++) { - PQCLEAN_FIRESABER_CLEAN_poly_mul(c, &b[i], &s[i], 1); - } -} - -void PQCLEAN_FIRESABER_CLEAN_GenMatrix(poly A[SABER_L][SABER_L], const uint8_t seed[SABER_SEEDBYTES]) { - size_t i; - uint8_t buf[SABER_L * SABER_POLYVECBYTES]; - - shake128(buf, sizeof(buf), seed, SABER_SEEDBYTES); - - for (i = 0; i < SABER_L; i++) { - PQCLEAN_FIRESABER_CLEAN_BS2POLVECq(A[i], buf + i * SABER_POLYVECBYTES); - } -} - -void PQCLEAN_FIRESABER_CLEAN_GenSecret(poly s[SABER_L], const uint8_t seed[SABER_NOISESEEDBYTES]) { - size_t i; - uint8_t buf[SABER_L * SABER_POLYCOINBYTES]; - - shake128(buf, sizeof(buf), seed, SABER_NOISESEEDBYTES); - - for (i = 0; i < SABER_L; i++) { - PQCLEAN_FIRESABER_CLEAN_cbd(s[i].coeffs, buf + i * SABER_POLYCOINBYTES); - } -} diff --git a/src/kem/saber/firesaber/clean/poly.h b/src/kem/saber/firesaber/clean/poly.h deleted file mode 100644 index fdbbfa1f..00000000 --- a/src/kem/saber/firesaber/clean/poly.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef POLY_H -#define POLY_H -#include "SABER_params.h" -#include - -typedef union { - uint16_t coeffs[SABER_N]; -} poly; - - -void PQCLEAN_FIRESABER_CLEAN_MatrixVectorMul(poly c[SABER_L], const poly A[SABER_L][SABER_L], const poly s[SABER_L], int16_t transpose); - -void PQCLEAN_FIRESABER_CLEAN_InnerProd(poly *c, const poly b[SABER_L], const poly s[SABER_L]); - -void PQCLEAN_FIRESABER_CLEAN_GenMatrix(poly A[SABER_L][SABER_L], const uint8_t seed[SABER_SEEDBYTES]); - -void PQCLEAN_FIRESABER_CLEAN_GenSecret(poly s[SABER_L], const uint8_t seed[SABER_NOISESEEDBYTES]); - - -void PQCLEAN_FIRESABER_CLEAN_poly_mul(poly *c, const poly *a, const poly *b, int accumulate); - - -#endif diff --git a/src/kem/saber/firesaber/clean/poly_mul.c b/src/kem/saber/firesaber/clean/poly_mul.c deleted file mode 100644 index b57e04fb..00000000 --- a/src/kem/saber/firesaber/clean/poly_mul.c +++ /dev/null @@ -1,248 +0,0 @@ -#include "poly.h" -#include -#include - -#define SCHB_N 16 - -#define N_RES (SABER_N << 1) -#define N_SB (SABER_N >> 2) -#define N_SB_RES (2*N_SB-1) - -#define OVERFLOWING_MUL(X, Y) ((uint16_t)((uint32_t)(X) * (uint32_t)(Y))) - -#define KARATSUBA_N 64 -static void karatsuba_simple(uint16_t *result_final, const uint16_t *a_1, const uint16_t *b_1) { - uint16_t d01[KARATSUBA_N / 2 - 1]; - uint16_t d0123[KARATSUBA_N / 2 - 1]; - uint16_t d23[KARATSUBA_N / 2 - 1]; - uint16_t result_d01[KARATSUBA_N - 1]; - - size_t i, j; - - memset(result_d01, 0, (KARATSUBA_N - 1)*sizeof(uint16_t)); - memset(d01, 0, (KARATSUBA_N / 2 - 1)*sizeof(uint16_t)); - memset(d0123, 0, (KARATSUBA_N / 2 - 1)*sizeof(uint16_t)); - memset(d23, 0, (KARATSUBA_N / 2 - 1)*sizeof(uint16_t)); - memset(result_final, 0, (2 * KARATSUBA_N - 1)*sizeof(uint16_t)); - - uint16_t acc1, acc2, acc3, acc4, acc5, acc6, acc7, acc8, acc9, acc10; - - - for (i = 0; i < KARATSUBA_N / 4; i++) { - acc1 = a_1[i]; //a0 - acc2 = a_1[i + KARATSUBA_N / 4]; //a1 - acc3 = a_1[i + 2 * KARATSUBA_N / 4]; //a2 - acc4 = a_1[i + 3 * KARATSUBA_N / 4]; //a3 - for (j = 0; j < KARATSUBA_N / 4; j++) { - - acc5 = b_1[j]; //b0 - acc6 = b_1[j + KARATSUBA_N / 4]; //b1 - - result_final[i + j + 0 * KARATSUBA_N / 4] = - result_final[i + j + 0 * KARATSUBA_N / 4] + - OVERFLOWING_MUL(acc1, acc5); - result_final[i + j + 2 * KARATSUBA_N / 4] = - result_final[i + j + 2 * KARATSUBA_N / 4] + - OVERFLOWING_MUL(acc2, acc6); - - acc7 = acc5 + acc6; //b01 - acc8 = acc1 + acc2; //a01 - d01[i + j] = d01[i + j] + (uint16_t)(acc7 * (uint64_t)acc8); - //-------------------------------------------------------- - - acc7 = b_1[j + 2 * KARATSUBA_N / 4]; //b2 - acc8 = b_1[j + 3 * KARATSUBA_N / 4]; //b3 - result_final[i + j + 4 * KARATSUBA_N / 4] = - result_final[i + j + 4 * KARATSUBA_N / 4] + - OVERFLOWING_MUL(acc7, acc3); - - result_final[i + j + 6 * KARATSUBA_N / 4] = - result_final[i + j + 6 * KARATSUBA_N / 4] + - OVERFLOWING_MUL(acc8, acc4); - - acc9 = acc3 + acc4; - acc10 = acc7 + acc8; - d23[i + j] = d23[i + j] + OVERFLOWING_MUL(acc9, acc10); - //-------------------------------------------------------- - - acc5 = acc5 + acc7; //b02 - acc7 = acc1 + acc3; //a02 - result_d01[i + j + 0 * KARATSUBA_N / 4] = - result_d01[i + j + 0 * KARATSUBA_N / 4] + - OVERFLOWING_MUL(acc5, acc7); - - acc6 = acc6 + acc8; //b13 - acc8 = acc2 + acc4; - result_d01[i + j + 2 * KARATSUBA_N / 4] = - result_d01[i + j + 2 * KARATSUBA_N / 4] + - OVERFLOWING_MUL(acc6, acc8); - - acc5 = acc5 + acc6; - acc7 = acc7 + acc8; - d0123[i + j] = d0123[i + j] + OVERFLOWING_MUL(acc5, acc7); - } - } - - // 2nd last stage - - for (i = 0; i < KARATSUBA_N / 2 - 1; i++) { - d0123[i] = d0123[i] - result_d01[i + 0 * KARATSUBA_N / 4] - result_d01[i + 2 * KARATSUBA_N / 4]; - d01[i] = d01[i] - result_final[i + 0 * KARATSUBA_N / 4] - result_final[i + 2 * KARATSUBA_N / 4]; - d23[i] = d23[i] - result_final[i + 4 * KARATSUBA_N / 4] - result_final[i + 6 * KARATSUBA_N / 4]; - } - - for (i = 0; i < KARATSUBA_N / 2 - 1; i++) { - result_d01[i + 1 * KARATSUBA_N / 4] = result_d01[i + 1 * KARATSUBA_N / 4] + d0123[i]; - result_final[i + 1 * KARATSUBA_N / 4] = result_final[i + 1 * KARATSUBA_N / 4] + d01[i]; - result_final[i + 5 * KARATSUBA_N / 4] = result_final[i + 5 * KARATSUBA_N / 4] + d23[i]; - } - - // Last stage - for (i = 0; i < KARATSUBA_N - 1; i++) { - result_d01[i] = result_d01[i] - result_final[i] - result_final[i + KARATSUBA_N]; - } - - for (i = 0; i < KARATSUBA_N - 1; i++) { - result_final[i + 1 * KARATSUBA_N / 2] = result_final[i + 1 * KARATSUBA_N / 2] + result_d01[i]; - } - -} - - - -static void toom_cook_4way (uint16_t *result, const uint16_t *a1, const uint16_t *b1) { - uint16_t inv3 = 43691, inv9 = 36409, inv15 = 61167; - - uint16_t aw1[N_SB], aw2[N_SB], aw3[N_SB], aw4[N_SB], aw5[N_SB], aw6[N_SB], aw7[N_SB]; - uint16_t bw1[N_SB], bw2[N_SB], bw3[N_SB], bw4[N_SB], bw5[N_SB], bw6[N_SB], bw7[N_SB]; - uint16_t w1[N_SB_RES] = {0}, w2[N_SB_RES] = {0}, w3[N_SB_RES] = {0}, w4[N_SB_RES] = {0}, - w5[N_SB_RES] = {0}, w6[N_SB_RES] = {0}, w7[N_SB_RES] = {0}; - uint16_t r0, r1, r2, r3, r4, r5, r6, r7; - uint16_t *A0, *A1, *A2, *A3, *B0, *B1, *B2, *B3; - A0 = (uint16_t *)a1; - A1 = (uint16_t *)&a1[N_SB]; - A2 = (uint16_t *)&a1[2 * N_SB]; - A3 = (uint16_t *)&a1[3 * N_SB]; - B0 = (uint16_t *)b1; - B1 = (uint16_t *)&b1[N_SB]; - B2 = (uint16_t *)&b1[2 * N_SB]; - B3 = (uint16_t *)&b1[3 * N_SB]; - - uint16_t *C; - C = result; - - int i, j; - - // EVALUATION - for (j = 0; j < N_SB; ++j) { - r0 = A0[j]; - r1 = A1[j]; - r2 = A2[j]; - r3 = A3[j]; - r4 = r0 + r2; - r5 = r1 + r3; - r6 = r4 + r5; - r7 = r4 - r5; - aw3[j] = r6; - aw4[j] = r7; - r4 = ((r0 << 2) + r2) << 1; - r5 = (r1 << 2) + r3; - r6 = r4 + r5; - r7 = r4 - r5; - aw5[j] = r6; - aw6[j] = r7; - r4 = (r3 << 3) + (r2 << 2) + (r1 << 1) + r0; - aw2[j] = r4; - aw7[j] = r0; - aw1[j] = r3; - } - for (j = 0; j < N_SB; ++j) { - r0 = B0[j]; - r1 = B1[j]; - r2 = B2[j]; - r3 = B3[j]; - r4 = r0 + r2; - r5 = r1 + r3; - r6 = r4 + r5; - r7 = r4 - r5; - bw3[j] = r6; - bw4[j] = r7; - r4 = ((r0 << 2) + r2) << 1; - r5 = (r1 << 2) + r3; - r6 = r4 + r5; - r7 = r4 - r5; - bw5[j] = r6; - bw6[j] = r7; - r4 = (r3 << 3) + (r2 << 2) + (r1 << 1) + r0; - bw2[j] = r4; - bw7[j] = r0; - bw1[j] = r3; - } - - // MULTIPLICATION - - karatsuba_simple(w1, aw1, bw1); - karatsuba_simple(w2, aw2, bw2); - karatsuba_simple(w3, aw3, bw3); - karatsuba_simple(w4, aw4, bw4); - karatsuba_simple(w5, aw5, bw5); - karatsuba_simple(w6, aw6, bw6); - karatsuba_simple(w7, aw7, bw7); - - // INTERPOLATION - for (i = 0; i < N_SB_RES; ++i) { - r0 = w1[i]; - r1 = w2[i]; - r2 = w3[i]; - r3 = w4[i]; - r4 = w5[i]; - r5 = w6[i]; - r6 = w7[i]; - - r1 = r1 + r4; - r5 = r5 - r4; - r3 = ((r3 - r2) >> 1); - r4 = r4 - r0; - r4 = r4 - (r6 << 6); - r4 = (r4 << 1) + r5; - r2 = r2 + r3; - r1 = r1 - (r2 << 6) - r2; - r2 = r2 - r6; - r2 = r2 - r0; - r1 = r1 + 45 * r2; - r4 = (uint16_t)(((r4 - (r2 << 3)) * (uint32_t)inv3) >> 3); - r5 = r5 + r1; - r1 = (uint16_t)(((r1 + (r3 << 4)) * (uint32_t)inv9) >> 1); - r3 = -(r3 + r1); - r5 = (uint16_t)(((30 * r1 - r5) * (uint32_t)inv15) >> 2); - r2 = r2 - r4; - r1 = r1 - r5; - - C[i] += r6; - C[i + 64] += r5; - C[i + 128] += r4; - C[i + 192] += r3; - C[i + 256] += r2; - C[i + 320] += r1; - C[i + 384] += r0; - } -} - -/* res += a*b */ -void PQCLEAN_FIRESABER_CLEAN_poly_mul(poly *c, const poly *a, const poly *b, const int accumulate) { - uint16_t C[2 * SABER_N] = {0}; - size_t i; - - toom_cook_4way(C, a->coeffs, b->coeffs); - - /* reduction */ - if (accumulate == 0) { - for (i = SABER_N; i < 2 * SABER_N; i++) { - c->coeffs[i - SABER_N] = (C[i - SABER_N] - C[i]); - } - } else { - for (i = SABER_N; i < 2 * SABER_N; i++) { - c->coeffs[i - SABER_N] += (C[i - SABER_N] - C[i]); - } - } -} diff --git a/src/kem/saber/firesaber/clean/poly_mul.h b/src/kem/saber/firesaber/clean/poly_mul.h deleted file mode 100644 index b28b04f6..00000000 --- a/src/kem/saber/firesaber/clean/poly_mul.h +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/kem/saber/firesaber/clean/verify.c b/src/kem/saber/firesaber/clean/verify.c deleted file mode 100644 index 97a302a9..00000000 --- a/src/kem/saber/firesaber/clean/verify.c +++ /dev/null @@ -1,35 +0,0 @@ -#include "verify.h" - -/*------------------------------------------------- -This file has been adapted from the implementation -(available at https://github.com/pq-crystals/kyber) of -"CRYSTALS – Kyber: a CCA-secure module-lattice-based KEM" - by : Joppe Bos, Leo Ducas, Eike Kiltz, Tancrede Lepoint, -Vadim Lyubashevsky, John M. Schanck, Peter Schwabe & Damien stehle -----------------------------------------------------*/ - - -/* returns 0 for equal strings, 1 for non-equal strings */ -uint8_t PQCLEAN_FIRESABER_CLEAN_verify(const uint8_t *a, const uint8_t *b, size_t len) { - uint64_t r; - size_t i; - r = 0; - - for (i = 0; i < len; i++) { - r |= a[i] ^ b[i]; - } - - r = (~r + 1); // Two's complement - r >>= 63; - return (uint8_t) r; -} - -/* b = 1 means mov, b = 0 means don't mov*/ -void PQCLEAN_FIRESABER_CLEAN_cmov(uint8_t *r, const uint8_t *x, size_t len, uint8_t b) { - size_t i; - - b = -b; - for (i = 0; i < len; i++) { - r[i] ^= b & (x[i] ^ r[i]); - } -} diff --git a/src/kem/saber/firesaber/clean/verify.h b/src/kem/saber/firesaber/clean/verify.h deleted file mode 100644 index 1d5e4cb9..00000000 --- a/src/kem/saber/firesaber/clean/verify.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef VERIFY_H -#define VERIFY_H -/*------------------------------------------------- -This file has been adapted from the implementation -(available at https://github.com/pq-crystals/kyber) of -"CRYSTALS – Kyber: a CCA-secure module-lattice-based KEM" - by : Joppe Bos, Leo Ducas, Eike Kiltz, Tancrede Lepoint, -Vadim Lyubashevsky, John M. Schanck, Peter Schwabe & Damien stehle -----------------------------------------------------*/ - -#include -#include - -/* returns 0 for equal strings, 1 for non-equal strings */ -uint8_t PQCLEAN_FIRESABER_CLEAN_verify(const uint8_t *a, const uint8_t *b, size_t len); - - -/* b = 1 means mov, b = 0 means don't mov*/ -void PQCLEAN_FIRESABER_CLEAN_cmov(uint8_t *r, const uint8_t *x, size_t len, uint8_t b); - - -#endif diff --git a/src/kem/saber/lightsaber/avx2/CMakeLists.txt b/src/kem/saber/lightsaber/avx2/CMakeLists.txt deleted file mode 100644 index fd40c3c5..00000000 --- a/src/kem/saber/lightsaber/avx2/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -set( - SRC_AVX2_LIGHTSABER - cbd.c - kem.c - pack_unpack.c - poly.c - poly_mul.c - SABER_indcpa.c - verify.c) - -define_kem_alg( - lightsaber_avx2 - PQCLEAN_LIGHTSABER_AVX2 "${SRC_AVX2_LIGHTSABER}" "${CMAKE_CURRENT_SOURCE_DIR}") diff --git a/src/kem/saber/lightsaber/avx2/SABER_indcpa.c b/src/kem/saber/lightsaber/avx2/SABER_indcpa.c deleted file mode 100644 index 50f57221..00000000 --- a/src/kem/saber/lightsaber/avx2/SABER_indcpa.c +++ /dev/null @@ -1,125 +0,0 @@ -#include "SABER_indcpa.h" -#include "SABER_params.h" -#include "fips202.h" -#include "pack_unpack.h" -#include "poly.h" -#include "randombytes.h" -#include -#include - -#define h1 (1 << (SABER_EQ - SABER_EP - 1)) -#define h2 ((1 << (SABER_EP - 2)) - (1 << (SABER_EP - SABER_ET - 1)) + (1 << (SABER_EQ - SABER_EP - 1))) - -void PQCLEAN_LIGHTSABER_AVX2_indcpa_kem_keypair(uint8_t pk[SABER_INDCPA_PUBLICKEYBYTES], uint8_t sk[SABER_INDCPA_SECRETKEYBYTES]) { - size_t i, j; - - poly A[SABER_L][SABER_L]; - poly *skpv1 = A[0]; // use first row of A to hold sk temporarily - toom4_points skpv1_eval[SABER_L]; - poly res[SABER_L]; - - uint8_t rand[SABER_NOISESEEDBYTES]; - uint8_t *seed_A = pk + SABER_POLYVECCOMPRESSEDBYTES; - - randombytes(seed_A, SABER_SEEDBYTES); - shake128(seed_A, SABER_SEEDBYTES, seed_A, SABER_SEEDBYTES); // for not revealing system RNG state - - randombytes(rand, SABER_NOISESEEDBYTES); - PQCLEAN_LIGHTSABER_AVX2_GenSecret(skpv1, rand); - PQCLEAN_LIGHTSABER_AVX2_POLVECq2BS(sk, skpv1); // pack secret key - - for (j = 0; j < SABER_L; j++) { - PQCLEAN_LIGHTSABER_AVX2_toom4_eval(&skpv1_eval[j], &skpv1[j]); - } - - PQCLEAN_LIGHTSABER_AVX2_GenMatrix(A, seed_A); // sample matrix A - PQCLEAN_LIGHTSABER_AVX2_MatrixVectorMul(res, (const poly (*)[SABER_L])A, (const toom4_points *)skpv1_eval, 1); // Matrix in transposed order - - // rounding - for (i = 0; i < SABER_L; i++) { - for (j = 0; j < SABER_N; j++) { - res[i].coeffs[j] += h1; - res[i].coeffs[j] >>= SABER_EQ - SABER_EP; - res[i].coeffs[j] &= SABER_Q - 1; - } - } - - PQCLEAN_LIGHTSABER_AVX2_POLVECp2BS(pk, res); // pack public key -} - - -void PQCLEAN_LIGHTSABER_AVX2_indcpa_kem_enc(uint8_t ciphertext[SABER_BYTES_CCA_DEC], const uint8_t m[SABER_KEYBYTES], const uint8_t noiseseed[SABER_NOISESEEDBYTES], const uint8_t pk[SABER_INDCPA_PUBLICKEYBYTES]) { - size_t i, j; - - poly A[SABER_L][SABER_L]; - poly res[SABER_L]; - toom4_points skpv1_eval[SABER_L]; - - poly *temp = A[0]; // re-use stack space - poly *vprime = &A[0][0]; - poly *message = &A[0][1]; - - const uint8_t *seed_A = pk + SABER_POLYVECCOMPRESSEDBYTES; - uint8_t *msk_c = ciphertext + SABER_POLYVECCOMPRESSEDBYTES; - - PQCLEAN_LIGHTSABER_AVX2_GenSecret(temp, noiseseed); - for (j = 0; j < SABER_L; j++) { - PQCLEAN_LIGHTSABER_AVX2_toom4_eval(&skpv1_eval[j], &temp[j]); - } - - PQCLEAN_LIGHTSABER_AVX2_GenMatrix(A, seed_A); - PQCLEAN_LIGHTSABER_AVX2_MatrixVectorMul(res, (const poly (*)[SABER_L])A, (const toom4_points *)skpv1_eval, 0); // 0 => not transposed - - // rounding - for (i = 0; i < SABER_L; i++) { //shift right EQ-EP bits - for (j = 0; j < SABER_N; j++) { - res[i].coeffs[j] += h1; - res[i].coeffs[j] >>= SABER_EQ - SABER_EP; - res[i].coeffs[j] &= SABER_Q - 1; - } - } - PQCLEAN_LIGHTSABER_AVX2_POLVECp2BS(ciphertext, res); - - // vector-vector scalar multiplication with mod p - PQCLEAN_LIGHTSABER_AVX2_BS2POLVECp(temp, pk); - PQCLEAN_LIGHTSABER_AVX2_InnerProd(vprime, temp, skpv1_eval); - PQCLEAN_LIGHTSABER_AVX2_BS2POLmsg(message, m); - - for (i = 0; i < SABER_N; i++) { - vprime->coeffs[i] += h1 - (message->coeffs[i] << (SABER_EP - 1)); - vprime->coeffs[i] &= SABER_P - 1; - vprime->coeffs[i] >>= SABER_EP - SABER_ET; - } - - PQCLEAN_LIGHTSABER_AVX2_POLT2BS(msk_c, vprime); -} - - -void PQCLEAN_LIGHTSABER_AVX2_indcpa_kem_dec(uint8_t m[SABER_KEYBYTES], const uint8_t sk[SABER_INDCPA_SECRETKEYBYTES], const uint8_t ciphertext[SABER_BYTES_CCA_DEC]) { - size_t i; - - poly temp[SABER_L]; - toom4_points sksv_eval[SABER_L]; - - const uint8_t *packed_cm = ciphertext + SABER_POLYVECCOMPRESSEDBYTES; - poly *v = &temp[0]; - poly *cm = &temp[1]; - - PQCLEAN_LIGHTSABER_AVX2_BS2POLVECq(temp, sk); - for (i = 0; i < SABER_L; i++) { - PQCLEAN_LIGHTSABER_AVX2_toom4_eval(&sksv_eval[i], &temp[i]); - } - - PQCLEAN_LIGHTSABER_AVX2_BS2POLVECp(temp, ciphertext); - PQCLEAN_LIGHTSABER_AVX2_InnerProd(v, temp, sksv_eval); - - PQCLEAN_LIGHTSABER_AVX2_BS2POLT(cm, packed_cm); - - for (i = 0; i < SABER_N; i++) { - v->coeffs[i] += h2 - (cm->coeffs[i] << (SABER_EP - SABER_ET)); - v->coeffs[i] &= SABER_P - 1; - v->coeffs[i] >>= SABER_EP - 1; - } - - PQCLEAN_LIGHTSABER_AVX2_POLmsg2BS(m, v); -} diff --git a/src/kem/saber/lightsaber/avx2/SABER_indcpa.h b/src/kem/saber/lightsaber/avx2/SABER_indcpa.h deleted file mode 100644 index 61ee77ba..00000000 --- a/src/kem/saber/lightsaber/avx2/SABER_indcpa.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef INDCPA_H -#define INDCPA_H -#include "SABER_params.h" -#include - -void PQCLEAN_LIGHTSABER_AVX2_indcpa_kem_keypair(uint8_t pk[SABER_INDCPA_PUBLICKEYBYTES], uint8_t sk[SABER_INDCPA_SECRETKEYBYTES]); - -void PQCLEAN_LIGHTSABER_AVX2_indcpa_kem_enc(uint8_t ciphertext[SABER_BYTES_CCA_DEC], const uint8_t m[SABER_KEYBYTES], const uint8_t noiseseed[SABER_NOISESEEDBYTES], const uint8_t pk[SABER_INDCPA_PUBLICKEYBYTES]); - -void PQCLEAN_LIGHTSABER_AVX2_indcpa_kem_dec(uint8_t m[SABER_KEYBYTES], const uint8_t sk[SABER_INDCPA_SECRETKEYBYTES], const uint8_t ciphertext[SABER_BYTES_CCA_DEC]); - - -#endif diff --git a/src/kem/saber/lightsaber/avx2/SABER_params.h b/src/kem/saber/lightsaber/avx2/SABER_params.h deleted file mode 100644 index 8da6ec34..00000000 --- a/src/kem/saber/lightsaber/avx2/SABER_params.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef PARAMS_H -#define PARAMS_H - - -/* Don't change anything below this line */ -#define SABER_L 2 -#define SABER_MU 10 -#define SABER_ET 3 - -#define SABER_N 256 - -#define SABER_EP 10 -#define SABER_P (1 << SABER_EP) - -#define SABER_EQ 13 -#define SABER_Q (1 << SABER_EQ) - -#define SABER_SEEDBYTES 32 -#define SABER_NOISESEEDBYTES 32 -#define SABER_KEYBYTES 32 -#define SABER_HASHBYTES 32 - -#define SABER_POLYCOINBYTES (SABER_MU * SABER_N / 8) - -#define SABER_POLYBYTES (SABER_EQ * SABER_N / 8) -#define SABER_POLYVECBYTES (SABER_L * SABER_POLYBYTES) - -#define SABER_POLYCOMPRESSEDBYTES (SABER_EP * SABER_N / 8) -#define SABER_POLYVECCOMPRESSEDBYTES (SABER_L * SABER_POLYCOMPRESSEDBYTES) - -#define SABER_SCALEBYTES_KEM (SABER_ET * SABER_N / 8) - -#define SABER_INDCPA_PUBLICKEYBYTES (SABER_POLYVECCOMPRESSEDBYTES + SABER_SEEDBYTES) -#define SABER_INDCPA_SECRETKEYBYTES (SABER_POLYVECBYTES) - -#define SABER_PUBLICKEYBYTES (SABER_INDCPA_PUBLICKEYBYTES) -#define SABER_SECRETKEYBYTES (SABER_INDCPA_SECRETKEYBYTES + SABER_INDCPA_PUBLICKEYBYTES + SABER_HASHBYTES + SABER_KEYBYTES) - -#define SABER_BYTES_CCA_DEC (SABER_POLYVECCOMPRESSEDBYTES + SABER_SCALEBYTES_KEM) - -#endif diff --git a/src/kem/saber/lightsaber/avx2/api.h b/src/kem/saber/lightsaber/avx2/api.h deleted file mode 100644 index d1e2105b..00000000 --- a/src/kem/saber/lightsaber/avx2/api.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef PQCLEAN_LIGHTSABER_AVX2_API_H -#define PQCLEAN_LIGHTSABER_AVX2_API_H - - -#define PQCLEAN_LIGHTSABER_AVX2_CRYPTO_ALGNAME "LightSaber" -#define PQCLEAN_LIGHTSABER_AVX2_CRYPTO_BYTES 32 -#define PQCLEAN_LIGHTSABER_AVX2_CRYPTO_CIPHERTEXTBYTES 736 -#define PQCLEAN_LIGHTSABER_AVX2_CRYPTO_PUBLICKEYBYTES 672 -#define PQCLEAN_LIGHTSABER_AVX2_CRYPTO_SECRETKEYBYTES 1568 - -int PQCLEAN_LIGHTSABER_AVX2_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); - -int PQCLEAN_LIGHTSABER_AVX2_crypto_kem_enc(unsigned char *ct, unsigned char *k, const unsigned char *pk); - -int PQCLEAN_LIGHTSABER_AVX2_crypto_kem_dec(unsigned char *k, const unsigned char *ct, const unsigned char *sk); - - -#endif /* PQCLEAN_LIGHTSABER_AVX2_API_H */ diff --git a/src/kem/saber/lightsaber/avx2/cbd.c b/src/kem/saber/lightsaber/avx2/cbd.c deleted file mode 100644 index 5a61236f..00000000 --- a/src/kem/saber/lightsaber/avx2/cbd.c +++ /dev/null @@ -1,48 +0,0 @@ -#include "SABER_params.h" -#include "api.h" -#include "cbd.h" -#include -/*--------------------------------------------------------------------- -This file has been adapted from the implementation -(available at, Public Domain https://github.com/pq-crystals/kyber) -of "CRYSTALS – Kyber: a CCA-secure module-lattice-based KEM" -by : Joppe Bos, Leo Ducas, Eike Kiltz, Tancrede Lepoint, -Vadim Lyubashevsky, John M. Schanck, Peter Schwabe & Damien stehle -----------------------------------------------------------------------*/ - - -static uint64_t load_littleendian(const uint8_t *x, int bytes) { - int i; - uint64_t r = x[0]; - for (i = 1; i < bytes; i++) { - r |= (uint64_t)x[i] << (8 * i); - } - return r; -} - -void PQCLEAN_LIGHTSABER_AVX2_cbd(uint16_t s[SABER_N], const uint8_t buf[SABER_POLYCOINBYTES]) { - uint64_t t, d, a[4], b[4]; - int i, j; - - for (i = 0; i < SABER_N / 4; i++) { - t = load_littleendian(buf + 5 * i, 5); - d = 0; - for (j = 0; j < 5; j++) { - d += (t >> j) & 0x0842108421UL; - } - - a[0] = d & 0x1f; - b[0] = (d >> 5) & 0x1f; - a[1] = (d >> 10) & 0x1f; - b[1] = (d >> 15) & 0x1f; - a[2] = (d >> 20) & 0x1f; - b[2] = (d >> 25) & 0x1f; - a[3] = (d >> 30) & 0x1f; - b[3] = (d >> 35); - - s[4 * i + 0] = (uint16_t)(a[0] - b[0]); - s[4 * i + 1] = (uint16_t)(a[1] - b[1]); - s[4 * i + 2] = (uint16_t)(a[2] - b[2]); - s[4 * i + 3] = (uint16_t)(a[3] - b[3]); - } -} diff --git a/src/kem/saber/lightsaber/avx2/cbd.h b/src/kem/saber/lightsaber/avx2/cbd.h deleted file mode 100644 index 5be3a405..00000000 --- a/src/kem/saber/lightsaber/avx2/cbd.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef CBD_H -#define CBD_H -/*--------------------------------------------------------------------- -This file has been adapted from the implementation -(available at, Public Domain https://github.com/pq-crystals/kyber) -of "CRYSTALS – Kyber: a CCA-secure module-lattice-based KEM" -by : Joppe Bos, Leo Ducas, Eike Kiltz, Tancrede Lepoint, -Vadim Lyubashevsky, John M. Schanck, Peter Schwabe & Damien stehle -----------------------------------------------------------------------*/ -#include "SABER_params.h" -#include - -void PQCLEAN_LIGHTSABER_AVX2_cbd(uint16_t s[SABER_N], const uint8_t buf[SABER_POLYCOINBYTES]); - - -#endif diff --git a/src/kem/saber/lightsaber/avx2/kem.c b/src/kem/saber/lightsaber/avx2/kem.c deleted file mode 100644 index e60a2d51..00000000 --- a/src/kem/saber/lightsaber/avx2/kem.c +++ /dev/null @@ -1,77 +0,0 @@ -#include "SABER_indcpa.h" -#include "SABER_params.h" -#include "api.h" -#include "fips202.h" -#include "randombytes.h" -#include "verify.h" -#include -#include - - -int PQCLEAN_LIGHTSABER_AVX2_crypto_kem_keypair(uint8_t *pk, uint8_t *sk) { - size_t i; - - PQCLEAN_LIGHTSABER_AVX2_indcpa_kem_keypair(pk, sk); // sk[0:SABER_INDCPA_SECRETKEYBYTES-1] <-- sk - for (i = 0; i < SABER_INDCPA_PUBLICKEYBYTES; i++) { - sk[i + SABER_INDCPA_SECRETKEYBYTES] = pk[i]; // sk[SABER_INDCPA_SECRETKEYBYTES:SABER_INDCPA_SECRETKEYBYTES+SABER_INDCPA_SECRETKEYBYTES-1] <-- pk - } - - sha3_256(sk + SABER_SECRETKEYBYTES - 64, pk, SABER_INDCPA_PUBLICKEYBYTES); // Then hash(pk) is appended. - - randombytes(sk + SABER_SECRETKEYBYTES - SABER_KEYBYTES, SABER_KEYBYTES); // Remaining part of sk contains a pseudo-random number. - // This is output when check in PQCLEAN_LIGHTSABER_AVX2_crypto_kem_dec() fails. - return (0); -} - -int PQCLEAN_LIGHTSABER_AVX2_crypto_kem_enc(uint8_t *c, uint8_t *k, const uint8_t *pk) { - - uint8_t kr[64]; // Will contain key, coins - uint8_t buf[64]; - - randombytes(buf, 32); - - sha3_256(buf, buf, 32); // BUF[0:31] <-- random message (will be used as the key for client) Note: hash doesnot release system RNG output - - sha3_256(buf + 32, pk, SABER_INDCPA_PUBLICKEYBYTES); // BUF[32:63] <-- Hash(public key); Multitarget countermeasure for coins + contributory KEM - - sha3_512(kr, buf, 64); // kr[0:63] <-- Hash(buf[0:63]); - // K^ <-- kr[0:31] - // noiseseed (r) <-- kr[32:63]; - PQCLEAN_LIGHTSABER_AVX2_indcpa_kem_enc(c, buf, kr + 32, pk); // buf[0:31] contains message; kr[32:63] contains randomness r; - - sha3_256(kr + 32, c, SABER_BYTES_CCA_DEC); - - sha3_256(k, kr, 64); // hash concatenation of pre-k and h(c) to k - - return (0); -} - -int PQCLEAN_LIGHTSABER_AVX2_crypto_kem_dec(uint8_t *k, const uint8_t *c, const uint8_t *sk) { - size_t i; - uint8_t fail; - uint8_t cmp[SABER_BYTES_CCA_DEC]; - uint8_t buf[64]; - uint8_t kr[64]; // Will contain key, coins - const uint8_t *pk = sk + SABER_INDCPA_SECRETKEYBYTES; - - PQCLEAN_LIGHTSABER_AVX2_indcpa_kem_dec(buf, sk, c); // buf[0:31] <-- message - - // Multitarget countermeasure for coins + contributory KEM - for (i = 0; i < 32; i++) { // Save hash by storing h(pk) in sk - buf[32 + i] = sk[SABER_SECRETKEYBYTES - 64 + i]; - } - - sha3_512(kr, buf, 64); - - PQCLEAN_LIGHTSABER_AVX2_indcpa_kem_enc(cmp, buf, kr + 32, pk); - - fail = PQCLEAN_LIGHTSABER_AVX2_verify(c, cmp, SABER_BYTES_CCA_DEC); - - sha3_256(kr + 32, c, SABER_BYTES_CCA_DEC); // overwrite coins in kr with h(c) - - PQCLEAN_LIGHTSABER_AVX2_cmov(kr, sk + SABER_SECRETKEYBYTES - SABER_KEYBYTES, SABER_KEYBYTES, fail); - - sha3_256(k, kr, 64); // hash concatenation of pre-k and h(c) to k - - return (0); -} diff --git a/src/kem/saber/lightsaber/avx2/pack_unpack.c b/src/kem/saber/lightsaber/avx2/pack_unpack.c deleted file mode 100644 index 08f7a9d9..00000000 --- a/src/kem/saber/lightsaber/avx2/pack_unpack.c +++ /dev/null @@ -1,155 +0,0 @@ -#include "SABER_params.h" -#include "pack_unpack.h" -#include "poly.h" -#include - -void PQCLEAN_LIGHTSABER_AVX2_POLT2BS(uint8_t bytes[SABER_SCALEBYTES_KEM], const poly *data) { - size_t j; - const uint16_t *in = data->coeffs; - uint8_t *out = bytes; - for (j = 0; j < SABER_N / 8; j++) { - out[0] = (uint8_t) ((in[0] & 0x7) | ((in[1] & 0x7) << 3) | (in[2] << 6)); - out[1] = (uint8_t) (((in[2] >> 2) & 0x01) | ((in[3] & 0x7) << 1) | ((in[4] & 0x7) << 4) | (in[5] << 7)); - out[2] = (uint8_t) (((in[5] >> 1) & 0x03) | ((in[6] & 0x7) << 2) | (in[7] << 5)); - in += 8; - out += 3; - } -} - -void PQCLEAN_LIGHTSABER_AVX2_BS2POLT(poly *data, const uint8_t bytes[SABER_SCALEBYTES_KEM]) { - /* This function does not reduce its output mod T */ - size_t j; - const uint8_t *in = bytes; - uint16_t *out = data->coeffs; - for (j = 0; j < SABER_N / 8; j++) { - out[0] = in[0]; - out[1] = in[0] >> 3; - out[2] = (in[0] >> 6) | (in[1] << 2); - out[3] = in[1] >> 1; - out[4] = in[1] >> 4; - out[5] = (in[1] >> 7) | (in[2] << 1); - out[6] = in[2] >> 2; - out[7] = in[2] >> 5; - in += 3; - out += 8; - } -} - -static void POLq2BS(uint8_t bytes[SABER_POLYBYTES], const poly *data) { - size_t j; - const uint16_t *in = data->coeffs; - uint8_t *out = bytes; - for (j = 0; j < SABER_N / 8; j++) { - out[0] = (uint8_t) (in[0]); - out[1] = (uint8_t) (((in[0] >> 8) & 0x1f) | (in[1] << 5)); - out[2] = (uint8_t) (in[1] >> 3); - out[3] = (uint8_t) (((in[1] >> 11) & 0x03) | (in[2] << 2)); - out[4] = (uint8_t) (((in[2] >> 6) & 0x7f) | (in[3] << 7)); - out[5] = (uint8_t) (in[3] >> 1); - out[6] = (uint8_t) (((in[3] >> 9) & 0x0f) | (in[4] << 4)); - out[7] = (uint8_t) (in[4] >> 4); - out[8] = (uint8_t) (((in[4] >> 12) & 0x01) | (in[5] << 1)); - out[9] = (uint8_t) (((in[5] >> 7) & 0x3f) | (in[6] << 6)); - out[10] = (uint8_t) (in[6] >> 2); - out[11] = (uint8_t) (((in[6] >> 10) & 0x07) | (in[7] << 3)); - out[12] = (uint8_t) (in[7] >> 5); - in += 8; - out += 13; - } -} - -static void BS2POLq(poly *data, const uint8_t bytes[SABER_POLYBYTES]) { - /* This function does not reduce its output mod Q */ - size_t j; - const uint8_t *in = bytes; - uint16_t *out = data->coeffs; - for (j = 0; j < SABER_N / 8; j++) { - out[0] = (in[0]) | (in[1] << 8); - out[1] = (in[1] >> 5) | (in[2] << 3) | (in[3] << 11); - out[2] = (in[3] >> 2) | (in[4] << 6); - out[3] = (in[4] >> 7) | (in[5] << 1) | (in[6] << 9); - out[4] = (in[6] >> 4) | (in[7] << 4) | (in[8] << 12); - out[5] = (in[8] >> 1) | (in[9] << 7); - out[6] = (in[9] >> 6) | (in[10] << 2) | (in[11] << 10); - out[7] = (in[11] >> 3) | (in[12] << 5); - in += 13; - out += 8; - } -} - -static void POLp2BS(uint8_t bytes[SABER_POLYCOMPRESSEDBYTES], const poly *data) { - size_t j; - const uint16_t *in = data->coeffs; - uint8_t *out = bytes; - for (j = 0; j < SABER_N / 4; j++) { - out[0] = (uint8_t) (in[0]); - out[1] = (uint8_t) (((in[0] >> 8) & 0x03) | (in[1] << 2)); - out[2] = (uint8_t) (((in[1] >> 6) & 0x0f) | (in[2] << 4)); - out[3] = (uint8_t) (((in[2] >> 4) & 0x3f) | (in[3] << 6)); - out[4] = (uint8_t) (in[3] >> 2); - in += 4; - out += 5; - } -} - -static void BS2POLp(poly *data, const uint8_t bytes[SABER_POLYCOMPRESSEDBYTES]) { - size_t j; - const uint8_t *in = bytes; - uint16_t *out = data->coeffs; - for (j = 0; j < SABER_N / 4; j++) { - out[0] = in[0] | (in[1] << 8); - out[1] = (in[1] >> 2) | (in[2] << 6); - out[2] = (in[2] >> 4) | (in[3] << 4); - out[3] = (in[3] >> 6) | (in[4] << 2); - in += 5; - out += 4; - } -} - -void PQCLEAN_LIGHTSABER_AVX2_POLVECq2BS(uint8_t bytes[SABER_POLYVECBYTES], const poly data[SABER_L]) { - size_t i; - for (i = 0; i < SABER_L; i++) { - POLq2BS(bytes + i * SABER_POLYBYTES, &data[i]); - } -} - -void PQCLEAN_LIGHTSABER_AVX2_BS2POLVECq(poly data[SABER_L], const uint8_t bytes[SABER_POLYVECBYTES]) { - size_t i; - for (i = 0; i < SABER_L; i++) { - BS2POLq(&data[i], bytes + i * SABER_POLYBYTES); - } -} - -void PQCLEAN_LIGHTSABER_AVX2_POLVECp2BS(uint8_t bytes[SABER_POLYVECCOMPRESSEDBYTES], const poly data[SABER_L]) { - size_t i; - for (i = 0; i < SABER_L; i++) { - POLp2BS(bytes + i * SABER_POLYCOMPRESSEDBYTES, &data[i]); - } -} - -void PQCLEAN_LIGHTSABER_AVX2_BS2POLVECp(poly data[SABER_L], const uint8_t bytes[SABER_POLYVECCOMPRESSEDBYTES]) { - size_t i; - for (i = 0; i < SABER_L; i++) { - BS2POLp(&data[i], bytes + i * SABER_POLYCOMPRESSEDBYTES); - } -} - -void PQCLEAN_LIGHTSABER_AVX2_BS2POLmsg(poly *data, const uint8_t bytes[SABER_KEYBYTES]) { - size_t i, j; - for (j = 0; j < SABER_KEYBYTES; j++) { - for (i = 0; i < 8; i++) { - data->coeffs[j * 8 + i] = ((bytes[j] >> i) & 0x01); - } - } -} - -void PQCLEAN_LIGHTSABER_AVX2_POLmsg2BS(uint8_t bytes[SABER_KEYBYTES], const poly *data) { - size_t i, j; - memset(bytes, 0, SABER_KEYBYTES); - - for (j = 0; j < SABER_KEYBYTES; j++) { - for (i = 0; i < 8; i++) { - bytes[j] = bytes[j] | ((data->coeffs[j * 8 + i] & 0x01) << i); - } - } -} diff --git a/src/kem/saber/lightsaber/avx2/pack_unpack.h b/src/kem/saber/lightsaber/avx2/pack_unpack.h deleted file mode 100644 index 2ba7822b..00000000 --- a/src/kem/saber/lightsaber/avx2/pack_unpack.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef PACK_UNPACK_H -#define PACK_UNPACK_H -#include "SABER_params.h" -#include "poly.h" -#include -#include - -void PQCLEAN_LIGHTSABER_AVX2_POLT2BS(uint8_t bytes[SABER_SCALEBYTES_KEM], const poly *data); - -void PQCLEAN_LIGHTSABER_AVX2_BS2POLT(poly *data, const uint8_t bytes[SABER_SCALEBYTES_KEM]); - - -void PQCLEAN_LIGHTSABER_AVX2_POLVECq2BS(uint8_t bytes[SABER_POLYVECBYTES], const poly data[SABER_L]); - -void PQCLEAN_LIGHTSABER_AVX2_POLVECp2BS(uint8_t bytes[SABER_POLYVECCOMPRESSEDBYTES], const poly data[SABER_L]); - - -void PQCLEAN_LIGHTSABER_AVX2_BS2POLVECq(poly data[SABER_L], const uint8_t bytes[SABER_POLYVECBYTES]); - -void PQCLEAN_LIGHTSABER_AVX2_BS2POLVECp(poly data[SABER_L], const uint8_t bytes[SABER_POLYVECCOMPRESSEDBYTES]); - - -void PQCLEAN_LIGHTSABER_AVX2_BS2POLmsg(poly *data, const uint8_t bytes[SABER_KEYBYTES]); - -void PQCLEAN_LIGHTSABER_AVX2_POLmsg2BS(uint8_t bytes[SABER_KEYBYTES], const poly *data); - - -#endif diff --git a/src/kem/saber/lightsaber/avx2/poly.c b/src/kem/saber/lightsaber/avx2/poly.c deleted file mode 100644 index 56227f6f..00000000 --- a/src/kem/saber/lightsaber/avx2/poly.c +++ /dev/null @@ -1,62 +0,0 @@ -#include "cbd.h" -#include "fips202.h" -#include "pack_unpack.h" -#include "poly.h" - - -void PQCLEAN_LIGHTSABER_AVX2_MatrixVectorMul(poly c[SABER_L], const poly A[SABER_L][SABER_L], const toom4_points s_eval[SABER_L], int transpose) { - size_t i, j; - toom4_points_product c_eval; - - if (transpose) { - for (i = 0; i < SABER_L; i++) { - PQCLEAN_LIGHTSABER_AVX2_toom4_mul_A_by_B_eval(&c_eval, &A[0][i], &s_eval[0], 0); - for (j = 1; j < SABER_L; j++) { - PQCLEAN_LIGHTSABER_AVX2_toom4_mul_A_by_B_eval(&c_eval, &A[j][i], &s_eval[j], 1); - } - PQCLEAN_LIGHTSABER_AVX2_toom4_interp(&c[i], &c_eval); - } - } else { - for (i = 0; i < SABER_L; i++) { - PQCLEAN_LIGHTSABER_AVX2_toom4_mul_A_by_B_eval(&c_eval, &A[i][0], &s_eval[0], 0); - for (j = 1; j < SABER_L; j++) { - PQCLEAN_LIGHTSABER_AVX2_toom4_mul_A_by_B_eval(&c_eval, &A[i][j], &s_eval[j], 1); - } - PQCLEAN_LIGHTSABER_AVX2_toom4_interp(&c[i], &c_eval); - } - } -} - -void PQCLEAN_LIGHTSABER_AVX2_InnerProd(poly *c, const poly b[SABER_L], const toom4_points s_eval[SABER_L]) { - size_t i; - toom4_points_product c_eval; //Holds results for 9 Karatsuba at a time - - PQCLEAN_LIGHTSABER_AVX2_toom4_mul_A_by_B_eval(&c_eval, &b[0], &s_eval[0], 0); - for (i = 1; i < SABER_L; i++) { - PQCLEAN_LIGHTSABER_AVX2_toom4_mul_A_by_B_eval(&c_eval, &b[i], &s_eval[i], 1); - } - - PQCLEAN_LIGHTSABER_AVX2_toom4_interp(c, &c_eval); -} - -void PQCLEAN_LIGHTSABER_AVX2_GenMatrix(poly A[SABER_L][SABER_L], const uint8_t seed[SABER_SEEDBYTES]) { - size_t i; - uint8_t buf[SABER_L * SABER_POLYVECBYTES]; - - shake128(buf, sizeof(buf), seed, SABER_SEEDBYTES); - - for (i = 0; i < SABER_L; i++) { - PQCLEAN_LIGHTSABER_AVX2_BS2POLVECq(A[i], buf + i * SABER_POLYVECBYTES); - } -} - -void PQCLEAN_LIGHTSABER_AVX2_GenSecret(poly s[SABER_L], const uint8_t seed[SABER_NOISESEEDBYTES]) { - size_t i; - uint8_t buf[SABER_L * SABER_POLYCOINBYTES]; - - shake128(buf, sizeof(buf), seed, SABER_NOISESEEDBYTES); - - for (i = 0; i < SABER_L; i++) { - PQCLEAN_LIGHTSABER_AVX2_cbd(s[i].coeffs, buf + i * SABER_POLYCOINBYTES); - } -} diff --git a/src/kem/saber/lightsaber/avx2/poly.h b/src/kem/saber/lightsaber/avx2/poly.h deleted file mode 100644 index 2e7b2a11..00000000 --- a/src/kem/saber/lightsaber/avx2/poly.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef POLY_H -#define POLY_H -#include "SABER_params.h" -#include -#include - -typedef union { - uint16_t coeffs[SABER_N]; - __m256i dummy; -} poly; - -typedef union { - uint16_t coeffs[4 * SABER_N]; - __m256i dummy; -} toom4_points; - -typedef union { - uint16_t coeffs[8 * SABER_N]; - __m256i dummy; -} toom4_points_product; - -void PQCLEAN_LIGHTSABER_AVX2_MatrixVectorMul(poly c[SABER_L], const poly A[SABER_L][SABER_L], const toom4_points s_eval[SABER_L], int transpose); - -void PQCLEAN_LIGHTSABER_AVX2_InnerProd(poly *c, const poly b[SABER_L], const toom4_points s_eval[SABER_L]); - -void PQCLEAN_LIGHTSABER_AVX2_GenMatrix(poly a[SABER_L][SABER_L], const uint8_t seed[SABER_SEEDBYTES]); - -void PQCLEAN_LIGHTSABER_AVX2_GenSecret(poly s[SABER_L], const uint8_t seed[SABER_NOISESEEDBYTES]); - - -void PQCLEAN_LIGHTSABER_AVX2_toom4_interp(poly *res_avx, const toom4_points_product *c_eval); - -void PQCLEAN_LIGHTSABER_AVX2_toom4_eval(toom4_points *b_eval, const poly *b); - -void PQCLEAN_LIGHTSABER_AVX2_toom4_mul_A_by_B_eval(toom4_points_product *c_eval, const poly *a_avx, const toom4_points *b_eval, int accumulate); - - -#endif diff --git a/src/kem/saber/lightsaber/avx2/poly_mul.c b/src/kem/saber/lightsaber/avx2/poly_mul.c deleted file mode 100644 index 51504491..00000000 --- a/src/kem/saber/lightsaber/avx2/poly_mul.c +++ /dev/null @@ -1,1496 +0,0 @@ -#include "SABER_params.h" -#include "poly.h" - - -#define L (SABER_N / 64) - -/* 16 word parallel multiply */ -#define mul(a, b) _mm256_mullo_epi16((a), (b)) -/* 16 word parallel multiply and accumulate */ -#define mac(a, b, c) _mm256_add_epi16(_mm256_mullo_epi16((a), (b)), (c)) - -static void schoolbook16x16(__m256i *c, const __m256i *a, const __m256i *b) { - __m256i a0, a1, a2, a3; - __m256i b0, b1, b2, b3; - __m256i t0; - a0 = a[0]; - a1 = a[1]; - a2 = a[2]; - a3 = a[3]; - b0 = b[0]; - b1 = b[1]; - b2 = b[2]; - b3 = b[3]; - c[0] = mul(a0, b0); - t0 = mul(a0, b1); - c[1] = mac(a1, b0, t0); - t0 = mul(a0, b2); - t0 = mac(a1, b1, t0); - c[2] = mac(a2, b0, t0); - t0 = mul(a0, b3); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[3] = mac(a3, b0, t0); - t0 = mul(a1, b3); - t0 = mac(a2, b2, t0); - c[4] = mac(a3, b1, t0); - t0 = mul(a2, b3); - c[5] = mac(a3, b2, t0); - c[6] = mul(a3, b3); - b0 = b[4]; - b1 = b[5]; - b2 = b[6]; - b3 = b[7]; - c[4] = mac(a0, b0, c[4]); - t0 = mac(a0, b1, c[5]); - c[5] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[6]); - t0 = mac(a1, b1, t0); - c[6] = mac(a2, b0, t0); - t0 = mul(a0, b3); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[7] = mac(a3, b0, t0); - t0 = mul(a1, b3); - t0 = mac(a2, b2, t0); - c[8] = mac(a3, b1, t0); - t0 = mul(a2, b3); - c[9] = mac(a3, b2, t0); - c[10] = mul(a3, b3); - b0 = b[8]; - b1 = b[9]; - b2 = b[10]; - b3 = b[11]; - c[8] = mac(a0, b0, c[8]); - t0 = mac(a0, b1, c[9]); - c[9] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[10]); - t0 = mac(a1, b1, t0); - c[10] = mac(a2, b0, t0); - t0 = mul(a0, b3); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[11] = mac(a3, b0, t0); - t0 = mul(a1, b3); - t0 = mac(a2, b2, t0); - c[12] = mac(a3, b1, t0); - t0 = mul(a2, b3); - c[13] = mac(a3, b2, t0); - c[14] = mul(a3, b3); - b0 = b[12]; - b1 = b[13]; - b2 = b[14]; - b3 = b[15]; - c[12] = mac(a0, b0, c[12]); - t0 = mac(a0, b1, c[13]); - c[13] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[14]); - t0 = mac(a1, b1, t0); - c[14] = mac(a2, b0, t0); - t0 = mul(a0, b3); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[15] = mac(a3, b0, t0); - t0 = mul(a1, b3); - t0 = mac(a2, b2, t0); - c[16] = mac(a3, b1, t0); - t0 = mul(a2, b3); - c[17] = mac(a3, b2, t0); - c[18] = mul(a3, b3); - a0 = a[4]; - a1 = a[5]; - a2 = a[6]; - a3 = a[7]; - c[16] = mac(a0, b0, c[16]); - t0 = mac(a0, b1, c[17]); - c[17] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[18]); - t0 = mac(a1, b1, t0); - c[18] = mac(a2, b0, t0); - t0 = mul(a0, b3); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[19] = mac(a3, b0, t0); - t0 = mul(a1, b3); - t0 = mac(a2, b2, t0); - c[20] = mac(a3, b1, t0); - t0 = mul(a2, b3); - c[21] = mac(a3, b2, t0); - c[22] = mul(a3, b3); - b0 = b[8]; - b1 = b[9]; - b2 = b[10]; - b3 = b[11]; - c[12] = mac(a0, b0, c[12]); - t0 = mac(a0, b1, c[13]); - c[13] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[14]); - t0 = mac(a1, b1, t0); - c[14] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[15]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[15] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[16]); - t0 = mac(a2, b2, t0); - c[16] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[17]); - c[17] = mac(a3, b2, t0); - c[18] = mac(a3, b3, c[18]); - b0 = b[4]; - b1 = b[5]; - b2 = b[6]; - b3 = b[7]; - c[8] = mac(a0, b0, c[8]); - t0 = mac(a0, b1, c[9]); - c[9] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[10]); - t0 = mac(a1, b1, t0); - c[10] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[11]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[11] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[12]); - t0 = mac(a2, b2, t0); - c[12] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[13]); - c[13] = mac(a3, b2, t0); - c[14] = mac(a3, b3, c[14]); - b0 = b[0]; - b1 = b[1]; - b2 = b[2]; - b3 = b[3]; - c[4] = mac(a0, b0, c[4]); - t0 = mac(a0, b1, c[5]); - c[5] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[6]); - t0 = mac(a1, b1, t0); - c[6] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[7]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[7] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[8]); - t0 = mac(a2, b2, t0); - c[8] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[9]); - c[9] = mac(a3, b2, t0); - c[10] = mac(a3, b3, c[10]); - a0 = a[8]; - a1 = a[9]; - a2 = a[10]; - a3 = a[11]; - c[8] = mac(a0, b0, c[8]); - t0 = mac(a0, b1, c[9]); - c[9] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[10]); - t0 = mac(a1, b1, t0); - c[10] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[11]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[11] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[12]); - t0 = mac(a2, b2, t0); - c[12] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[13]); - c[13] = mac(a3, b2, t0); - c[14] = mac(a3, b3, c[14]); - b0 = b[4]; - b1 = b[5]; - b2 = b[6]; - b3 = b[7]; - c[12] = mac(a0, b0, c[12]); - t0 = mac(a0, b1, c[13]); - c[13] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[14]); - t0 = mac(a1, b1, t0); - c[14] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[15]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[15] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[16]); - t0 = mac(a2, b2, t0); - c[16] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[17]); - c[17] = mac(a3, b2, t0); - c[18] = mac(a3, b3, c[18]); - b0 = b[8]; - b1 = b[9]; - b2 = b[10]; - b3 = b[11]; - c[16] = mac(a0, b0, c[16]); - t0 = mac(a0, b1, c[17]); - c[17] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[18]); - t0 = mac(a1, b1, t0); - c[18] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[19]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[19] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[20]); - t0 = mac(a2, b2, t0); - c[20] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[21]); - c[21] = mac(a3, b2, t0); - c[22] = mac(a3, b3, c[22]); - b0 = b[12]; - b1 = b[13]; - b2 = b[14]; - b3 = b[15]; - c[20] = mac(a0, b0, c[20]); - t0 = mac(a0, b1, c[21]); - c[21] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[22]); - t0 = mac(a1, b1, t0); - c[22] = mac(a2, b0, t0); - t0 = mul(a0, b3); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[23] = mac(a3, b0, t0); - t0 = mul(a1, b3); - t0 = mac(a2, b2, t0); - c[24] = mac(a3, b1, t0); - t0 = mul(a2, b3); - c[25] = mac(a3, b2, t0); - c[26] = mul(a3, b3); - a0 = a[12]; - a1 = a[13]; - a2 = a[14]; - a3 = a[15]; - c[24] = mac(a0, b0, c[24]); - t0 = mac(a0, b1, c[25]); - c[25] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[26]); - t0 = mac(a1, b1, t0); - c[26] = mac(a2, b0, t0); - t0 = mul(a0, b3); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[27] = mac(a3, b0, t0); - t0 = mul(a1, b3); - t0 = mac(a2, b2, t0); - c[28] = mac(a3, b1, t0); - t0 = mul(a2, b3); - c[29] = mac(a3, b2, t0); - c[30] = mul(a3, b3); - b0 = b[8]; - b1 = b[9]; - b2 = b[10]; - b3 = b[11]; - c[20] = mac(a0, b0, c[20]); - t0 = mac(a0, b1, c[21]); - c[21] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[22]); - t0 = mac(a1, b1, t0); - c[22] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[23]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[23] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[24]); - t0 = mac(a2, b2, t0); - c[24] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[25]); - c[25] = mac(a3, b2, t0); - c[26] = mac(a3, b3, c[26]); - b0 = b[4]; - b1 = b[5]; - b2 = b[6]; - b3 = b[7]; - c[16] = mac(a0, b0, c[16]); - t0 = mac(a0, b1, c[17]); - c[17] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[18]); - t0 = mac(a1, b1, t0); - c[18] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[19]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[19] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[20]); - t0 = mac(a2, b2, t0); - c[20] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[21]); - c[21] = mac(a3, b2, t0); - c[22] = mac(a3, b3, c[22]); - b0 = b[0]; - b1 = b[1]; - b2 = b[2]; - b3 = b[3]; - c[12] = mac(a0, b0, c[12]); - t0 = mac(a0, b1, c[13]); - c[13] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[14]); - t0 = mac(a1, b1, t0); - c[14] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[15]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[15] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[16]); - t0 = mac(a2, b2, t0); - c[16] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[17]); - c[17] = mac(a3, b2, t0); - c[18] = mac(a3, b3, c[18]); - c[31] = _mm256_setzero_si256(); -} - -static void schoolbook16x16_acc(__m256i *c, const __m256i *a, const __m256i *b) { - __m256i a0, a1, a2, a3; - __m256i b0, b1, b2, b3; - __m256i t0; - a0 = a[0]; - a1 = a[1]; - a2 = a[2]; - a3 = a[3]; - b0 = b[0]; - b1 = b[1]; - b2 = b[2]; - b3 = b[3]; - c[0] = mac(a0, b0, c[0]); - t0 = mac(a0, b1, c[1]); - c[1] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[2]); - t0 = mac(a1, b1, t0); - c[2] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[3]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[3] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[4]); - t0 = mac(a2, b2, t0); - c[4] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[5]); - c[5] = mac(a3, b2, t0); - c[6] = mac(a3, b3, c[6]); - b0 = b[4]; - b1 = b[5]; - b2 = b[6]; - b3 = b[7]; - c[4] = mac(a0, b0, c[4]); - t0 = mac(a0, b1, c[5]); - c[5] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[6]); - t0 = mac(a1, b1, t0); - c[6] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[7]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[7] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[8]); - t0 = mac(a2, b2, t0); - c[8] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[9]); - c[9] = mac(a3, b2, t0); - c[10] = mac(a3, b3, c[10]); - b0 = b[8]; - b1 = b[9]; - b2 = b[10]; - b3 = b[11]; - c[8] = mac(a0, b0, c[8]); - t0 = mac(a0, b1, c[9]); - c[9] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[10]); - t0 = mac(a1, b1, t0); - c[10] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[11]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[11] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[12]); - t0 = mac(a2, b2, t0); - c[12] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[13]); - c[13] = mac(a3, b2, t0); - c[14] = mac(a3, b3, c[14]); - b0 = b[12]; - b1 = b[13]; - b2 = b[14]; - b3 = b[15]; - c[12] = mac(a0, b0, c[12]); - t0 = mac(a0, b1, c[13]); - c[13] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[14]); - t0 = mac(a1, b1, t0); - c[14] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[15]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[15] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[16]); - t0 = mac(a2, b2, t0); - c[16] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[17]); - c[17] = mac(a3, b2, t0); - c[18] = mac(a3, b3, c[18]); - a0 = a[4]; - a1 = a[5]; - a2 = a[6]; - a3 = a[7]; - c[16] = mac(a0, b0, c[16]); - t0 = mac(a0, b1, c[17]); - c[17] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[18]); - t0 = mac(a1, b1, t0); - c[18] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[19]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[19] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[20]); - t0 = mac(a2, b2, t0); - c[20] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[21]); - c[21] = mac(a3, b2, t0); - c[22] = mac(a3, b3, c[22]); - b0 = b[8]; - b1 = b[9]; - b2 = b[10]; - b3 = b[11]; - c[12] = mac(a0, b0, c[12]); - t0 = mac(a0, b1, c[13]); - c[13] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[14]); - t0 = mac(a1, b1, t0); - c[14] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[15]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[15] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[16]); - t0 = mac(a2, b2, t0); - c[16] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[17]); - c[17] = mac(a3, b2, t0); - c[18] = mac(a3, b3, c[18]); - b0 = b[4]; - b1 = b[5]; - b2 = b[6]; - b3 = b[7]; - c[8] = mac(a0, b0, c[8]); - t0 = mac(a0, b1, c[9]); - c[9] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[10]); - t0 = mac(a1, b1, t0); - c[10] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[11]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[11] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[12]); - t0 = mac(a2, b2, t0); - c[12] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[13]); - c[13] = mac(a3, b2, t0); - c[14] = mac(a3, b3, c[14]); - b0 = b[0]; - b1 = b[1]; - b2 = b[2]; - b3 = b[3]; - c[4] = mac(a0, b0, c[4]); - t0 = mac(a0, b1, c[5]); - c[5] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[6]); - t0 = mac(a1, b1, t0); - c[6] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[7]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[7] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[8]); - t0 = mac(a2, b2, t0); - c[8] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[9]); - c[9] = mac(a3, b2, t0); - c[10] = mac(a3, b3, c[10]); - a0 = a[8]; - a1 = a[9]; - a2 = a[10]; - a3 = a[11]; - c[8] = mac(a0, b0, c[8]); - t0 = mac(a0, b1, c[9]); - c[9] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[10]); - t0 = mac(a1, b1, t0); - c[10] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[11]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[11] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[12]); - t0 = mac(a2, b2, t0); - c[12] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[13]); - c[13] = mac(a3, b2, t0); - c[14] = mac(a3, b3, c[14]); - b0 = b[4]; - b1 = b[5]; - b2 = b[6]; - b3 = b[7]; - c[12] = mac(a0, b0, c[12]); - t0 = mac(a0, b1, c[13]); - c[13] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[14]); - t0 = mac(a1, b1, t0); - c[14] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[15]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[15] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[16]); - t0 = mac(a2, b2, t0); - c[16] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[17]); - c[17] = mac(a3, b2, t0); - c[18] = mac(a3, b3, c[18]); - b0 = b[8]; - b1 = b[9]; - b2 = b[10]; - b3 = b[11]; - c[16] = mac(a0, b0, c[16]); - t0 = mac(a0, b1, c[17]); - c[17] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[18]); - t0 = mac(a1, b1, t0); - c[18] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[19]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[19] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[20]); - t0 = mac(a2, b2, t0); - c[20] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[21]); - c[21] = mac(a3, b2, t0); - c[22] = mac(a3, b3, c[22]); - b0 = b[12]; - b1 = b[13]; - b2 = b[14]; - b3 = b[15]; - c[20] = mac(a0, b0, c[20]); - t0 = mac(a0, b1, c[21]); - c[21] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[22]); - t0 = mac(a1, b1, t0); - c[22] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[23]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[23] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[24]); - t0 = mac(a2, b2, t0); - c[24] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[25]); - c[25] = mac(a3, b2, t0); - c[26] = mac(a3, b3, c[26]); - a0 = a[12]; - a1 = a[13]; - a2 = a[14]; - a3 = a[15]; - c[24] = mac(a0, b0, c[24]); - t0 = mac(a0, b1, c[25]); - c[25] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[26]); - t0 = mac(a1, b1, t0); - c[26] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[27]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[27] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[28]); - t0 = mac(a2, b2, t0); - c[28] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[29]); - c[29] = mac(a3, b2, t0); - c[30] = mac(a3, b3, c[30]); - b0 = b[8]; - b1 = b[9]; - b2 = b[10]; - b3 = b[11]; - c[20] = mac(a0, b0, c[20]); - t0 = mac(a0, b1, c[21]); - c[21] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[22]); - t0 = mac(a1, b1, t0); - c[22] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[23]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[23] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[24]); - t0 = mac(a2, b2, t0); - c[24] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[25]); - c[25] = mac(a3, b2, t0); - c[26] = mac(a3, b3, c[26]); - b0 = b[4]; - b1 = b[5]; - b2 = b[6]; - b3 = b[7]; - c[16] = mac(a0, b0, c[16]); - t0 = mac(a0, b1, c[17]); - c[17] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[18]); - t0 = mac(a1, b1, t0); - c[18] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[19]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[19] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[20]); - t0 = mac(a2, b2, t0); - c[20] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[21]); - c[21] = mac(a3, b2, t0); - c[22] = mac(a3, b3, c[22]); - b0 = b[0]; - b1 = b[1]; - b2 = b[2]; - b3 = b[3]; - c[12] = mac(a0, b0, c[12]); - t0 = mac(a0, b1, c[13]); - c[13] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[14]); - t0 = mac(a1, b1, t0); - c[14] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[15]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[15] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[16]); - t0 = mac(a2, b2, t0); - c[16] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[17]); - c[17] = mac(a3, b2, t0); - c[18] = mac(a3, b3, c[18]); -} - - -static void transpose(__m256i *M) { - __m256i r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11; - __m256i temp, temp0, temp1, temp2; - - r0 = _mm256_unpacklo_epi16(M[0], M[1]); - r1 = _mm256_unpacklo_epi16(M[2], M[3]); - r2 = _mm256_unpacklo_epi16(M[4], M[5]); - r3 = _mm256_unpacklo_epi16(M[6], M[7]); - r4 = _mm256_unpacklo_epi16(M[8], M[9]); - r5 = _mm256_unpacklo_epi16(M[10], M[11]); - r6 = _mm256_unpacklo_epi16(M[12], M[13]); - r7 = _mm256_unpacklo_epi16(M[14], M[15]); - - temp = _mm256_unpacklo_epi32(r0, r1); - temp0 = _mm256_unpacklo_epi32(r2, r3); - temp1 = _mm256_unpacklo_epi32(r4, r5); - temp2 = _mm256_unpacklo_epi32(r6, r7); - - r8 = _mm256_unpackhi_epi32(r0, r1); - r9 = _mm256_unpackhi_epi32(r2, r3); - r10 = _mm256_unpackhi_epi32(r4, r5); - r11 = _mm256_unpackhi_epi32(r6, r7); - - r0 = _mm256_unpacklo_epi64(temp, temp0); - r2 = _mm256_unpackhi_epi64(temp, temp0); - r1 = _mm256_unpacklo_epi64(temp1, temp2); - r3 = _mm256_unpackhi_epi64(temp1, temp2); - - temp = _mm256_unpackhi_epi16(M[0], M[1]); - temp0 = _mm256_unpackhi_epi16(M[2], M[3]); - temp1 = _mm256_unpackhi_epi16(M[4], M[5]); - temp2 = _mm256_unpackhi_epi16(M[6], M[7]); - - r4 = _mm256_unpackhi_epi16(M[8], M[9]); - M[0] = _mm256_permute2f128_si256(r0, r1, 0x20); - M[8] = _mm256_permute2f128_si256(r0, r1, 0x31); - M[1] = _mm256_permute2f128_si256(r2, r3, 0x20); - M[9] = _mm256_permute2f128_si256(r2, r3, 0x31); - r5 = _mm256_unpackhi_epi16(M[10], M[11]); - r6 = _mm256_unpackhi_epi16(M[12], M[13]); - r7 = _mm256_unpackhi_epi16(M[14], M[15]); - - r0 = _mm256_unpacklo_epi64(r8, r9); - r1 = _mm256_unpacklo_epi64(r10, r11); - r2 = _mm256_unpackhi_epi64(r8, r9); - r3 = _mm256_unpackhi_epi64(r10, r11); - - M[3] = _mm256_permute2f128_si256(r2, r3, 0x20); - M[11] = _mm256_permute2f128_si256(r2, r3, 0x31); - M[2] = _mm256_permute2f128_si256(r0, r1, 0x20); - M[10] = _mm256_permute2f128_si256(r0, r1, 0x31); - - r0 = _mm256_unpacklo_epi32(temp, temp0); - r1 = _mm256_unpacklo_epi32(temp1, temp2); - r2 = _mm256_unpacklo_epi32(r4, r5); - r3 = _mm256_unpacklo_epi32(r6, r7); - - r8 = _mm256_unpacklo_epi64(r0, r1); - r10 = _mm256_unpackhi_epi64(r0, r1); - r9 = _mm256_unpacklo_epi64(r2, r3); - r11 = _mm256_unpackhi_epi64(r2, r3); - - M[4] = _mm256_permute2f128_si256(r8, r9, 0x20); - M[12] = _mm256_permute2f128_si256(r8, r9, 0x31); - M[5] = _mm256_permute2f128_si256(r10, r11, 0x20); - M[13] = _mm256_permute2f128_si256(r10, r11, 0x31); - - r0 = _mm256_unpackhi_epi32(temp, temp0); - r1 = _mm256_unpackhi_epi32(temp1, temp2); - r2 = _mm256_unpackhi_epi32(r4, r5); - r3 = _mm256_unpackhi_epi32(r6, r7); - - r4 = _mm256_unpacklo_epi64(r0, r1); - r6 = _mm256_unpackhi_epi64(r0, r1); - r5 = _mm256_unpacklo_epi64(r2, r3); - r7 = _mm256_unpackhi_epi64(r2, r3); - - M[6] = _mm256_permute2f128_si256(r4, r5, 0x20); - M[14] = _mm256_permute2f128_si256(r4, r5, 0x31); - M[7] = _mm256_permute2f128_si256(r6, r7, 0x20); - M[15] = _mm256_permute2f128_si256(r6, r7, 0x31); -} - -static void batch_64coefficient_multiplications(toom4_points_product *c_eval, const __m256i *a, const toom4_points *b_eval, int accumulate) { - toom4_points a_eval;// Holds evaluation (a & b) for 7 Karatsuba at a time - __m256i r0_avx, r1_avx, r2_avx, r3_avx; - __m256i *va = (__m256i *)a_eval.coeffs; - __m256i *vb = (__m256i *)b_eval->coeffs; - __m256i *vc = (__m256i *)c_eval->coeffs; - - //------------------AVX evaluation for 1st poly----------------------- - r0_avx = a[0 * L + 0]; - r1_avx = a[0 * L + 1]; - r2_avx = a[0 * L + 2]; - r3_avx = a[0 * L + 3]; - - va[0] = r0_avx; - va[1] = r1_avx; - va[2] = r2_avx; - va[3] = r3_avx; - va[4] = _mm256_add_epi16(r0_avx, r1_avx); - va[5] = _mm256_add_epi16(r2_avx, r3_avx); - va[6] = _mm256_add_epi16(r0_avx, r2_avx); - va[7] = _mm256_add_epi16(r1_avx, r3_avx); - va[8] = _mm256_add_epi16(va[6], va[7]); - //------------------AVX evaluation for 1st poly ends------------------ - - //------------------AVX evaluation for 2nd poly----------------------- - r0_avx = a[1 * L + 0]; - r1_avx = a[1 * L + 1]; - r2_avx = a[1 * L + 2]; - r3_avx = a[1 * L + 3]; - - va[0 + 9] = r0_avx; - va[1 + 9] = r1_avx; - va[2 + 9] = r2_avx; - va[3 + 9] = r3_avx; - va[4 + 9] = _mm256_add_epi16(r0_avx, r1_avx); - va[5 + 9] = _mm256_add_epi16(r2_avx, r3_avx); - va[6 + 9] = _mm256_add_epi16(r0_avx, r2_avx); - va[7 + 9] = _mm256_add_epi16(r1_avx, r3_avx); - va[8 + 9] = _mm256_add_epi16(va[6 + 9], va[7 + 9]); - //------------------AVX evaluation for 2nd poly ends------------------ - - //------------------AVX evaluation for 3rd poly----------------------- - r0_avx = a[2 * L + 0]; - r1_avx = a[2 * L + 1]; - r2_avx = a[2 * L + 2]; - r3_avx = a[2 * L + 3]; - - va[0 + 18] = r0_avx; - va[1 + 18] = r1_avx; - va[2 + 18] = r2_avx; - va[3 + 18] = r3_avx; - va[4 + 18] = _mm256_add_epi16(r0_avx, r1_avx); - va[5 + 18] = _mm256_add_epi16(r2_avx, r3_avx); - va[6 + 18] = _mm256_add_epi16(r0_avx, r2_avx); - va[7 + 18] = _mm256_add_epi16(r1_avx, r3_avx); - va[8 + 18] = _mm256_add_epi16(va[6 + 18], va[7 + 18]); - //------------------AVX evaluation for 3rd poly ends------------------ - - //------------------AVX evaluation for 4th poly----------------------- - r0_avx = a[3 * L + 0]; - r1_avx = a[3 * L + 1]; - r2_avx = a[3 * L + 2]; - r3_avx = a[3 * L + 3]; - - va[0 + 27] = r0_avx; - va[1 + 27] = r1_avx; - va[2 + 27] = r2_avx; - va[3 + 27] = r3_avx; - va[4 + 27] = _mm256_add_epi16(r0_avx, r1_avx); - va[5 + 27] = _mm256_add_epi16(r2_avx, r3_avx); - va[6 + 27] = _mm256_add_epi16(r0_avx, r2_avx); - va[7 + 27] = _mm256_add_epi16(r1_avx, r3_avx); - va[8 + 27] = _mm256_add_epi16(va[6 + 27], va[7 + 27]); - //------------------AVX evaluation for 4th poly ends------------------ - - //------------------AVX evaluation for 5th poly----------------------- - r0_avx = a[4 * L + 0]; - r1_avx = a[4 * L + 1]; - r2_avx = a[4 * L + 2]; - r3_avx = a[4 * L + 3]; - - va[0 + 36] = r0_avx; - va[1 + 36] = r1_avx; - va[2 + 36] = r2_avx; - va[3 + 36] = r3_avx; - va[4 + 36] = _mm256_add_epi16(r0_avx, r1_avx); - va[5 + 36] = _mm256_add_epi16(r2_avx, r3_avx); - va[6 + 36] = _mm256_add_epi16(r0_avx, r2_avx); - va[7 + 36] = _mm256_add_epi16(r1_avx, r3_avx); - va[8 + 36] = _mm256_add_epi16(va[6 + 36], va[7 + 36]); - //------------------AVX evaluation for 5th poly ends------------------ - - //------------------AVX evaluation for 6th poly----------------------- - r0_avx = a[5 * L + 0]; - r1_avx = a[5 * L + 1]; - r2_avx = a[5 * L + 2]; - r3_avx = a[5 * L + 3]; - - va[0 + 45] = r0_avx; - va[1 + 45] = r1_avx; - va[2 + 45] = r2_avx; - va[3 + 45] = r3_avx; - va[4 + 45] = _mm256_add_epi16(r0_avx, r1_avx); - va[5 + 45] = _mm256_add_epi16(r2_avx, r3_avx); - va[6 + 45] = _mm256_add_epi16(r0_avx, r2_avx); - va[7 + 45] = _mm256_add_epi16(r1_avx, r3_avx); - va[8 + 45] = _mm256_add_epi16(va[6 + 45], va[7 + 45]); - //------------------AVX evaluation for 6th poly ends------------------ - - //------------------AVX evaluation for 7th poly----------------------- - r0_avx = a[6 * L + 0]; - r1_avx = a[6 * L + 1]; - r2_avx = a[6 * L + 2]; - r3_avx = a[6 * L + 3]; - - va[0 + 54] = r0_avx; - va[1 + 54] = r1_avx; - va[2 + 54] = r2_avx; - va[3 + 54] = r3_avx; - va[4 + 54] = _mm256_add_epi16(r0_avx, r1_avx); - va[5 + 54] = _mm256_add_epi16(r2_avx, r3_avx); - va[6 + 54] = _mm256_add_epi16(r0_avx, r2_avx); - va[7 + 54] = _mm256_add_epi16(r1_avx, r3_avx); - va[8 + 54] = _mm256_add_epi16(va[6 + 54], va[7 + 54]); - //------------------AVX evaluation for 7th poly ends------------------ - - //-----------------Forward transposes-------------------------------------- - transpose(va); - transpose(va + 16); - transpose(va + 32); - transpose(va + 48); - //-----------------Forward transposes ends--------------------------------- - - if (accumulate == 0) { - schoolbook16x16(vc, va, vb); - schoolbook16x16(vc + 32, va + 16, vb + 16); - schoolbook16x16(vc + 64, va + 32, vb + 32); - schoolbook16x16(vc + 96, va + 48, vb + 48); - } else { - schoolbook16x16_acc(vc, va, vb); - schoolbook16x16_acc(vc + 32, va + 16, vb + 16); - schoolbook16x16_acc(vc + 64, va + 32, vb + 32); - schoolbook16x16_acc(vc + 96, va + 48, vb + 48); - } -} - -static void karatsuba_eval(__m256i *b_eval, const __m256i *b) { - __m256i r0_avx, r1_avx, r2_avx, r3_avx; - - //-------1st poly---------------------------------------------------- - r0_avx = b[0 * L + 0]; - r1_avx = b[0 * L + 1]; - r2_avx = b[0 * L + 2]; - r3_avx = b[0 * L + 3]; - - b_eval[0] = r0_avx; - b_eval[1] = r1_avx; - b_eval[2] = r2_avx; - b_eval[3] = r3_avx; - b_eval[4] = _mm256_add_epi16(r0_avx, r1_avx); - b_eval[5] = _mm256_add_epi16(r2_avx, r3_avx); - b_eval[6] = _mm256_add_epi16(r0_avx, r2_avx); - b_eval[7] = _mm256_add_epi16(r1_avx, r3_avx); - b_eval[8] = _mm256_add_epi16(b_eval[6], b_eval[7]); - - //-------2nd poly---------------------------------------------------- - r0_avx = b[1 * L + 0]; - r1_avx = b[1 * L + 1]; - r2_avx = b[1 * L + 2]; - r3_avx = b[1 * L + 3]; - - b_eval[0 + 9] = r0_avx; - b_eval[1 + 9] = r1_avx; - b_eval[2 + 9] = r2_avx; - b_eval[3 + 9] = r3_avx; - b_eval[4 + 9] = _mm256_add_epi16(r0_avx, r1_avx); - b_eval[5 + 9] = _mm256_add_epi16(r2_avx, r3_avx); - b_eval[6 + 9] = _mm256_add_epi16(r0_avx, r2_avx); - b_eval[7 + 9] = _mm256_add_epi16(r1_avx, r3_avx); - b_eval[8 + 9] = _mm256_add_epi16(b_eval[6 + 9], b_eval[7 + 9]); - - //-------3rd poly---------------------------------------------------- - r0_avx = b[2 * L + 0]; - r1_avx = b[2 * L + 1]; - r2_avx = b[2 * L + 2]; - r3_avx = b[2 * L + 3]; - - b_eval[0 + 18] = r0_avx; - b_eval[1 + 18] = r1_avx; - b_eval[2 + 18] = r2_avx; - b_eval[3 + 18] = r3_avx; - b_eval[4 + 18] = _mm256_add_epi16(r0_avx, r1_avx); - b_eval[5 + 18] = _mm256_add_epi16(r2_avx, r3_avx); - b_eval[6 + 18] = _mm256_add_epi16(r0_avx, r2_avx); - b_eval[7 + 18] = _mm256_add_epi16(r1_avx, r3_avx); - b_eval[8 + 18] = _mm256_add_epi16(b_eval[6 + 18], b_eval[7 + 18]); - - //-------4th poly---------------------------------------------------- - r0_avx = b[3 * L + 0]; - r1_avx = b[3 * L + 1]; - r2_avx = b[3 * L + 2]; - r3_avx = b[3 * L + 3]; - - b_eval[0 + 27] = r0_avx; - b_eval[1 + 27] = r1_avx; - b_eval[2 + 27] = r2_avx; - b_eval[3 + 27] = r3_avx; - b_eval[4 + 27] = _mm256_add_epi16(r0_avx, r1_avx); - b_eval[5 + 27] = _mm256_add_epi16(r2_avx, r3_avx); - b_eval[6 + 27] = _mm256_add_epi16(r0_avx, r2_avx); - b_eval[7 + 27] = _mm256_add_epi16(r1_avx, r3_avx); - b_eval[8 + 27] = _mm256_add_epi16(b_eval[6 + 27], b_eval[7 + 27]); - - //-------5th poly---------------------------------------------------- - r0_avx = b[4 * L + 0]; - r1_avx = b[4 * L + 1]; - r2_avx = b[4 * L + 2]; - r3_avx = b[4 * L + 3]; - - b_eval[0 + 36] = r0_avx; - b_eval[1 + 36] = r1_avx; - b_eval[2 + 36] = r2_avx; - b_eval[3 + 36] = r3_avx; - b_eval[4 + 36] = _mm256_add_epi16(r0_avx, r1_avx); - b_eval[5 + 36] = _mm256_add_epi16(r2_avx, r3_avx); - b_eval[6 + 36] = _mm256_add_epi16(r0_avx, r2_avx); - b_eval[7 + 36] = _mm256_add_epi16(r1_avx, r3_avx); - b_eval[8 + 36] = _mm256_add_epi16(b_eval[6 + 36], b_eval[7 + 36]); - - //-------6th poly---------------------------------------------------- - r0_avx = b[5 * L + 0]; - r1_avx = b[5 * L + 1]; - r2_avx = b[5 * L + 2]; - r3_avx = b[5 * L + 3]; - - b_eval[0 + 45] = r0_avx; - b_eval[1 + 45] = r1_avx; - b_eval[2 + 45] = r2_avx; - b_eval[3 + 45] = r3_avx; - b_eval[4 + 45] = _mm256_add_epi16(r0_avx, r1_avx); - b_eval[5 + 45] = _mm256_add_epi16(r2_avx, r3_avx); - b_eval[6 + 45] = _mm256_add_epi16(r0_avx, r2_avx); - b_eval[7 + 45] = _mm256_add_epi16(r1_avx, r3_avx); - b_eval[8 + 45] = _mm256_add_epi16(b_eval[6 + 45], b_eval[7 + 45]); - - //-------7th poly---------------------------------------------------- - r0_avx = b[6 * L + 0]; - r1_avx = b[6 * L + 1]; - r2_avx = b[6 * L + 2]; - r3_avx = b[6 * L + 3]; - - b_eval[0 + 54] = r0_avx; - b_eval[1 + 54] = r1_avx; - b_eval[2 + 54] = r2_avx; - b_eval[3 + 54] = r3_avx; - b_eval[4 + 54] = _mm256_add_epi16(r0_avx, r1_avx); - b_eval[5 + 54] = _mm256_add_epi16(r2_avx, r3_avx); - b_eval[6 + 54] = _mm256_add_epi16(r0_avx, r2_avx); - b_eval[7 + 54] = _mm256_add_epi16(r1_avx, r3_avx); - b_eval[8 + 54] = _mm256_add_epi16(b_eval[6 + 54], b_eval[7 + 54]); - - //--------------Evaluating B poly ends------------------------------- - transpose(b_eval); - transpose(b_eval + 16); - transpose(b_eval + 32); - transpose(b_eval + 48); -} - -static void karatsuba_interp(__m256i *result_final0, __m256i *result_final1, __m256i *result_final2, __m256i *result_final3, __m256i *result_final4, __m256i *result_final5, __m256i *result_final6, const __m256i *c_eval) { - __m256i res_avx0, res_avx1, res_avx2, res_avx3, res_avx4, res_avx5, res_avx6, res_avx7; // to hold each 64X64 poly mul results - __m256i temp, c6_avx, c7_avx, c8_avx, c20_avx, c21_avx, c22_avx, c23_avx, c24_avx; - - //------------------------AVX interpolation for 1st poly external------------------- - res_avx0 = c_eval[0]; - res_avx2 = c_eval[1]; - res_avx4 = c_eval[2]; - res_avx6 = c_eval[3]; - c6_avx = c_eval[6]; - c7_avx = c_eval[7]; - - c8_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[8], c6_avx), c7_avx); - - res_avx1 = c_eval[16]; - res_avx3 = c_eval[17]; - res_avx5 = c_eval[18]; - res_avx7 = c_eval[19]; - c22_avx = c_eval[22]; - c23_avx = c_eval[23]; - - c21_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[21], res_avx5), res_avx7); - c24_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[24], c22_avx), c23_avx); - c20_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[20], res_avx1), res_avx3); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[5], res_avx4), res_avx6); - res_avx5 = _mm256_add_epi16(res_avx5, temp); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[4], res_avx0), res_avx2); - res_avx1 = _mm256_add_epi16(res_avx1, temp); - c22_avx = _mm256_add_epi16(c22_avx, c8_avx); - res_avx6 = _mm256_add_epi16(res_avx6, c21_avx); - res_avx2 = _mm256_add_epi16(res_avx2, c20_avx); - c7_avx = _mm256_add_epi16(c7_avx, c24_avx); - c6_avx = _mm256_sub_epi16(_mm256_sub_epi16(c6_avx, res_avx0), res_avx4); - c22_avx = _mm256_sub_epi16(_mm256_sub_epi16(c22_avx, res_avx1), res_avx5); - c7_avx = _mm256_sub_epi16(_mm256_sub_epi16(c7_avx, res_avx2), res_avx6); - c23_avx = _mm256_sub_epi16(_mm256_sub_epi16(c23_avx, res_avx3), res_avx7); - - result_final0[0] = res_avx0; - result_final0[1] = res_avx1; - result_final0[2] = _mm256_add_epi16(res_avx2, c6_avx); - result_final0[3] = _mm256_add_epi16(res_avx3, c22_avx); - result_final0[4] = _mm256_add_epi16(res_avx4, c7_avx); - result_final0[5] = _mm256_add_epi16(res_avx5, c23_avx); - result_final0[6] = res_avx6; - result_final0[7] = res_avx7; - //------------------------AVX interpolation for 1st poly ends-------------- - - - //------------------------AVX interpolation for 2nd poly external------------------- - res_avx0 = c_eval[9]; //c_eval0 - res_avx2 = c_eval[10]; //c_eval1 - res_avx4 = c_eval[11]; //c_eval2 - res_avx6 = c_eval[12]; //c_eval3 - c6_avx = c_eval[15]; //c_eval6 - c7_avx = c_eval[32]; //c_eval7 - - c8_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[33], c6_avx), c7_avx); - - res_avx1 = c_eval[25]; //c_eval0 - res_avx3 = c_eval[26]; //c_eval1 - res_avx5 = c_eval[27]; //c_eval2 - res_avx7 = c_eval[28]; //c_eval3 - c22_avx = c_eval[31]; - c23_avx = c_eval[48]; - - c21_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[30], res_avx5), res_avx7); - c24_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[49], c22_avx), c23_avx); - c20_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[29], res_avx1), res_avx3); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[14], res_avx4), res_avx6); - res_avx5 = _mm256_add_epi16(res_avx5, temp); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[13], res_avx0), res_avx2); - res_avx1 = _mm256_add_epi16(res_avx1, temp); - c22_avx = _mm256_add_epi16(c22_avx, c8_avx); - res_avx6 = _mm256_add_epi16(res_avx6, c21_avx); - res_avx2 = _mm256_add_epi16(res_avx2, c20_avx); - c7_avx = _mm256_add_epi16(c7_avx, c24_avx); - c6_avx = _mm256_sub_epi16(_mm256_sub_epi16(c6_avx, res_avx0), res_avx4); - c22_avx = _mm256_sub_epi16(_mm256_sub_epi16(c22_avx, res_avx1), res_avx5); - c7_avx = _mm256_sub_epi16(_mm256_sub_epi16(c7_avx, res_avx2), res_avx6); - c23_avx = _mm256_sub_epi16(_mm256_sub_epi16(c23_avx, res_avx3), res_avx7); - - result_final1[0] = res_avx0; - result_final1[1] = res_avx1; - result_final1[2] = _mm256_add_epi16(res_avx2, c6_avx); - result_final1[3] = _mm256_add_epi16(res_avx3, c22_avx); - result_final1[4] = _mm256_add_epi16(res_avx4, c7_avx); - result_final1[5] = _mm256_add_epi16(res_avx5, c23_avx); - result_final1[6] = res_avx6; - result_final1[7] = res_avx7; - //------------------------AVX interpolation for 2nd poly ends-------------- - - //------------------------AVX interpolation for 3rd poly external------------------- - res_avx0 = c_eval[34]; //c_eval0 - res_avx2 = c_eval[35]; //c_eval1 - res_avx4 = c_eval[36]; - res_avx6 = c_eval[37]; - c6_avx = c_eval[40]; - c7_avx = c_eval[41]; - - c8_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[42], c6_avx), c7_avx); - - res_avx1 = c_eval[50]; //c_eval0 - res_avx3 = c_eval[51]; //c_eval1 - res_avx5 = c_eval[52]; - res_avx7 = c_eval[53]; - c22_avx = c_eval[56]; - c23_avx = c_eval[57]; - - c21_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[55], res_avx5), res_avx7); - c24_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[58], c22_avx), c23_avx); - c20_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[54], res_avx1), res_avx3); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[39], res_avx4), res_avx6); - res_avx5 = _mm256_add_epi16(res_avx5, temp); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[38], res_avx0), res_avx2); - res_avx1 = _mm256_add_epi16(res_avx1, temp); - c22_avx = _mm256_add_epi16(c22_avx, c8_avx); - res_avx6 = _mm256_add_epi16(res_avx6, c21_avx); - res_avx2 = _mm256_add_epi16(res_avx2, c20_avx); - c7_avx = _mm256_add_epi16(c7_avx, c24_avx); - c6_avx = _mm256_sub_epi16(_mm256_sub_epi16(c6_avx, res_avx0), res_avx4); - c22_avx = _mm256_sub_epi16(_mm256_sub_epi16(c22_avx, res_avx1), res_avx5); - c7_avx = _mm256_sub_epi16(_mm256_sub_epi16(c7_avx, res_avx2), res_avx6); - c23_avx = _mm256_sub_epi16(_mm256_sub_epi16(c23_avx, res_avx3), res_avx7); - - result_final2[0] = res_avx0; - result_final2[1] = res_avx1; - result_final2[2] = _mm256_add_epi16(res_avx2, c6_avx); - result_final2[3] = _mm256_add_epi16(res_avx3, c22_avx); - result_final2[4] = _mm256_add_epi16(res_avx4, c7_avx); - result_final2[5] = _mm256_add_epi16(res_avx5, c23_avx); - result_final2[6] = res_avx6; - result_final2[7] = res_avx7; - //------------------------AVX interpolation for 3rd poly ends-------------- - - //------------------------AVX interpolation for 4th poly external------------------- - res_avx0 = c_eval[43]; - res_avx2 = c_eval[44]; - res_avx4 = c_eval[45]; - res_avx6 = c_eval[46]; - c6_avx = c_eval[65]; - c7_avx = c_eval[66]; - - c8_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[67], c6_avx), c7_avx); - - res_avx1 = c_eval[59]; - res_avx3 = c_eval[60]; - res_avx5 = c_eval[61]; - res_avx7 = c_eval[62]; - c22_avx = c_eval[81]; - c23_avx = c_eval[82]; - - c21_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[80], res_avx5), res_avx7); - c24_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[83], c22_avx), c23_avx); - c20_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[63], res_avx1), res_avx3); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[64], res_avx4), res_avx6); - res_avx5 = _mm256_add_epi16(res_avx5, temp); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[47], res_avx0), res_avx2); - res_avx1 = _mm256_add_epi16(res_avx1, temp); - c22_avx = _mm256_add_epi16(c22_avx, c8_avx); - res_avx6 = _mm256_add_epi16(res_avx6, c21_avx); - res_avx2 = _mm256_add_epi16(res_avx2, c20_avx); - c7_avx = _mm256_add_epi16(c7_avx, c24_avx); - c6_avx = _mm256_sub_epi16(_mm256_sub_epi16(c6_avx, res_avx0), res_avx4); - c22_avx = _mm256_sub_epi16(_mm256_sub_epi16(c22_avx, res_avx1), res_avx5); - c7_avx = _mm256_sub_epi16(_mm256_sub_epi16(c7_avx, res_avx2), res_avx6); - c23_avx = _mm256_sub_epi16(_mm256_sub_epi16(c23_avx, res_avx3), res_avx7); - - result_final3[0] = res_avx0; - result_final3[1] = res_avx1; - result_final3[2] = _mm256_add_epi16(res_avx2, c6_avx); - result_final3[3] = _mm256_add_epi16(res_avx3, c22_avx); - result_final3[4] = _mm256_add_epi16(res_avx4, c7_avx); - result_final3[5] = _mm256_add_epi16(res_avx5, c23_avx); - result_final3[6] = res_avx6; - result_final3[7] = res_avx7; - //------------------------AVX interpolation for 4th poly ends-------------- - - //------------------------AVX interpolation for 5th poly external------------------- - res_avx0 = c_eval[68]; - res_avx2 = c_eval[69]; - res_avx4 = c_eval[70]; - res_avx6 = c_eval[71]; - c6_avx = c_eval[74]; - c7_avx = c_eval[75]; - - c8_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[76], c6_avx), c7_avx); - - res_avx1 = c_eval[84]; - res_avx3 = c_eval[85]; - res_avx5 = c_eval[86]; - res_avx7 = c_eval[87]; - c22_avx = c_eval[90]; - c23_avx = c_eval[91]; - - c21_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[89], res_avx5), res_avx7); - c24_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[92], c22_avx), c23_avx); - c20_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[88], res_avx1), res_avx3); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[73], res_avx4), res_avx6); - res_avx5 = _mm256_add_epi16(res_avx5, temp); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[72], res_avx0), res_avx2); - res_avx1 = _mm256_add_epi16(res_avx1, temp); - c22_avx = _mm256_add_epi16(c22_avx, c8_avx); - res_avx6 = _mm256_add_epi16(res_avx6, c21_avx); - res_avx2 = _mm256_add_epi16(res_avx2, c20_avx); - c7_avx = _mm256_add_epi16(c7_avx, c24_avx); - c6_avx = _mm256_sub_epi16(_mm256_sub_epi16(c6_avx, res_avx0), res_avx4); - c22_avx = _mm256_sub_epi16(_mm256_sub_epi16(c22_avx, res_avx1), res_avx5); - c7_avx = _mm256_sub_epi16(_mm256_sub_epi16(c7_avx, res_avx2), res_avx6); - c23_avx = _mm256_sub_epi16(_mm256_sub_epi16(c23_avx, res_avx3), res_avx7); - - result_final4[0] = res_avx0; - result_final4[1] = res_avx1; - result_final4[2] = _mm256_add_epi16(res_avx2, c6_avx); - result_final4[3] = _mm256_add_epi16(res_avx3, c22_avx); - result_final4[4] = _mm256_add_epi16(res_avx4, c7_avx); - result_final4[5] = _mm256_add_epi16(res_avx5, c23_avx); - result_final4[6] = res_avx6; - result_final4[7] = res_avx7; - //------------------------AVX interpolation for 5th poly ends-------------- - - //------------------------AVX interpolation for 6th poly external------------------- - res_avx0 = c_eval[77]; - res_avx2 = c_eval[78]; - res_avx4 = c_eval[79]; - res_avx6 = c_eval[96]; - c6_avx = c_eval[99]; - c7_avx = c_eval[100]; - - c8_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[101], c6_avx), c7_avx); - - res_avx1 = c_eval[93]; - res_avx3 = c_eval[94]; - res_avx5 = c_eval[95]; - res_avx7 = c_eval[112]; - c22_avx = c_eval[115]; - c23_avx = c_eval[116]; - - c21_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[114], res_avx5), res_avx7); - c24_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[117], c22_avx), c23_avx); - c20_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[113], res_avx1), res_avx3); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[98], res_avx4), res_avx6); - res_avx5 = _mm256_add_epi16(res_avx5, temp); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[97], res_avx0), res_avx2); - res_avx1 = _mm256_add_epi16(res_avx1, temp); - c22_avx = _mm256_add_epi16(c22_avx, c8_avx); - res_avx6 = _mm256_add_epi16(res_avx6, c21_avx); - res_avx2 = _mm256_add_epi16(res_avx2, c20_avx); - c7_avx = _mm256_add_epi16(c7_avx, c24_avx); - c6_avx = _mm256_sub_epi16(_mm256_sub_epi16(c6_avx, res_avx0), res_avx4); - c22_avx = _mm256_sub_epi16(_mm256_sub_epi16(c22_avx, res_avx1), res_avx5); - c7_avx = _mm256_sub_epi16(_mm256_sub_epi16(c7_avx, res_avx2), res_avx6); - c23_avx = _mm256_sub_epi16(_mm256_sub_epi16(c23_avx, res_avx3), res_avx7); - - result_final5[0] = res_avx0; - result_final5[1] = res_avx1; - result_final5[2] = _mm256_add_epi16(res_avx2, c6_avx); - result_final5[3] = _mm256_add_epi16(res_avx3, c22_avx); - result_final5[4] = _mm256_add_epi16(res_avx4, c7_avx); - result_final5[5] = _mm256_add_epi16(res_avx5, c23_avx); - result_final5[6] = res_avx6; - result_final5[7] = res_avx7; - //------------------------AVX interpolation for 6th poly ends-------------- - - //------------------------AVX interpolation for 7th poly external------------------- - res_avx0 = c_eval[102]; - res_avx2 = c_eval[103]; - res_avx4 = c_eval[104]; - res_avx6 = c_eval[105]; - c6_avx = c_eval[108]; - c7_avx = c_eval[109]; - - c8_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[110], c6_avx), c7_avx); - - res_avx1 = c_eval[118]; - res_avx3 = c_eval[119]; - res_avx5 = c_eval[120]; - res_avx7 = c_eval[121]; - c22_avx = c_eval[124]; - c23_avx = c_eval[125]; - - c21_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[123], res_avx5), res_avx7); - c24_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[126], c22_avx), c23_avx); - c20_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[122], res_avx1), res_avx3); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[107], res_avx4), res_avx6); - res_avx5 = _mm256_add_epi16(res_avx5, temp); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[106], res_avx0), res_avx2); - res_avx1 = _mm256_add_epi16(res_avx1, temp); - c22_avx = _mm256_add_epi16(c22_avx, c8_avx); - res_avx6 = _mm256_add_epi16(res_avx6, c21_avx); - res_avx2 = _mm256_add_epi16(res_avx2, c20_avx); - c7_avx = _mm256_add_epi16(c7_avx, c24_avx); - c6_avx = _mm256_sub_epi16(_mm256_sub_epi16(c6_avx, res_avx0), res_avx4); - c22_avx = _mm256_sub_epi16(_mm256_sub_epi16(c22_avx, res_avx1), res_avx5); - c7_avx = _mm256_sub_epi16(_mm256_sub_epi16(c7_avx, res_avx2), res_avx6); - c23_avx = _mm256_sub_epi16(_mm256_sub_epi16(c23_avx, res_avx3), res_avx7); - - result_final6[0] = res_avx0; - result_final6[1] = res_avx1; - result_final6[2] = _mm256_add_epi16(res_avx2, c6_avx); - result_final6[3] = _mm256_add_epi16(res_avx3, c22_avx); - result_final6[4] = _mm256_add_epi16(res_avx4, c7_avx); - result_final6[5] = _mm256_add_epi16(res_avx5, c23_avx); - result_final6[6] = res_avx6; - result_final6[7] = res_avx7; - //------------------------AVX interpolation for 7th poly ends-------------- -} - -void PQCLEAN_LIGHTSABER_AVX2_toom4_mul_A_by_B_eval(toom4_points_product *c_eval, const poly *a, const toom4_points *b_eval, int accumulate) { - size_t i; - __m256i r0_avx, r1_avx, r2_avx, r3_avx, r4_avx, r5_avx, r6_avx; - __m256i aw_avx[7 * L]; - __m256i *va = (__m256i *)a->coeffs; - - for (i = 0; i < L; i++) { - r0_avx = va[0 * L + i]; - r1_avx = va[1 * L + i]; - r2_avx = va[2 * L + i]; - r3_avx = va[3 * L + i]; - r4_avx = _mm256_add_epi16(r0_avx, r2_avx); - r5_avx = _mm256_add_epi16(r1_avx, r3_avx); - aw_avx[2 * L + i] = _mm256_add_epi16(r4_avx, r5_avx); - aw_avx[3 * L + i] = _mm256_sub_epi16(r4_avx, r5_avx); - r4_avx = _mm256_slli_epi16(r0_avx, 2); - r4_avx = _mm256_add_epi16(r4_avx, r2_avx); - r4_avx = _mm256_slli_epi16(r4_avx, 1); - r5_avx = _mm256_slli_epi16(r1_avx, 2); - r5_avx = _mm256_add_epi16(r5_avx, r3_avx); - aw_avx[4 * L + i] = _mm256_add_epi16(r4_avx, r5_avx); - aw_avx[5 * L + i] = _mm256_sub_epi16(r4_avx, r5_avx); - r4_avx = _mm256_slli_epi16(r3_avx, 3); - r6_avx = _mm256_slli_epi16(r2_avx, 2); - r4_avx = _mm256_add_epi16(r4_avx, r6_avx); - r6_avx = _mm256_slli_epi16(r1_avx, 1); - r4_avx = _mm256_add_epi16(r4_avx, r6_avx); - aw_avx[1 * L + i] = _mm256_add_epi16(r4_avx, r0_avx); - aw_avx[6 * L + i] = r0_avx; - aw_avx[0 * L + i] = r3_avx; - } - - batch_64coefficient_multiplications(c_eval, aw_avx, b_eval, accumulate); -} - -void PQCLEAN_LIGHTSABER_AVX2_toom4_eval(toom4_points *b_eval, const poly *b) { - size_t i; - __m256i bw_avx[7 * L]; - __m256i r0_avx, r1_avx, r2_avx, r3_avx, r4_avx, r5_avx, r6_avx; - __m256i *vb = (__m256i *)b->coeffs; - __m256i *vb_eval = (__m256i *)b_eval->coeffs; - - for (i = 0; i < L; i++) { - r0_avx = vb[0 * L + i]; - r1_avx = vb[1 * L + i]; - r2_avx = vb[2 * L + i]; - r3_avx = vb[3 * L + i]; - r4_avx = _mm256_add_epi16(r0_avx, r2_avx); - r5_avx = _mm256_add_epi16(r1_avx, r3_avx); - bw_avx[2 * L + i] = _mm256_add_epi16(r4_avx, r5_avx); - bw_avx[3 * L + i] = _mm256_sub_epi16(r4_avx, r5_avx); - r4_avx = _mm256_slli_epi16(r0_avx, 2); - r4_avx = _mm256_add_epi16(r4_avx, r2_avx); - r4_avx = _mm256_slli_epi16(r4_avx, 1); - r5_avx = _mm256_slli_epi16(r1_avx, 2); - r5_avx = _mm256_add_epi16(r5_avx, r3_avx); - bw_avx[4 * L + i] = _mm256_add_epi16(r4_avx, r5_avx); - bw_avx[5 * L + i] = _mm256_sub_epi16(r4_avx, r5_avx); - r4_avx = _mm256_slli_epi16(r3_avx, 3); - r6_avx = _mm256_slli_epi16(r2_avx, 2); - r4_avx = _mm256_add_epi16(r4_avx, r6_avx); - r6_avx = _mm256_slli_epi16(r1_avx, 1); - r4_avx = _mm256_add_epi16(r4_avx, r6_avx); - bw_avx[1 * L + i] = _mm256_add_epi16(r4_avx, r0_avx); - bw_avx[6 * L + i] = r0_avx; - bw_avx[0 * L + i] = r3_avx; - } - - karatsuba_eval(vb_eval, bw_avx); -} - - -void PQCLEAN_LIGHTSABER_AVX2_toom4_interp(poly *res, const toom4_points_product *c_eval) { - size_t i; - __m256i r0_avx, r1_avx, r2_avx, r3_avx, r4_avx, r5_avx, r6_avx, temp_avx; - __m256i w1_avx[2 * L], w2_avx[2 * L], w3_avx[2 * L], w4_avx[2 * L], w5_avx[2 * L], w6_avx[2 * L], w7_avx[2 * L]; - __m256i res_full[32]; - __m256i *vc = (__m256i *)c_eval->coeffs; - __m256i *vres = (__m256i *)res->coeffs; - - transpose(vc); - transpose(vc + 16); - transpose(vc + 32); - transpose(vc + 48); - transpose(vc + 64); - transpose(vc + 80); - transpose(vc + 96); - transpose(vc + 112); - - karatsuba_interp(w1_avx, w2_avx, w3_avx, w4_avx, w5_avx, w6_avx, w7_avx, vc); - - for (i = 0; i < 2 * L; i++) { - r0_avx = w1_avx[i]; - r1_avx = w2_avx[i]; - r2_avx = w3_avx[i]; - r3_avx = w4_avx[i]; - r4_avx = w5_avx[i]; - r5_avx = w6_avx[i]; - r6_avx = w7_avx[i]; - - r1_avx = _mm256_add_epi16(r1_avx, r4_avx); - r5_avx = _mm256_sub_epi16(r5_avx, r4_avx); - r3_avx = _mm256_sub_epi16(r3_avx, r2_avx); - r3_avx = _mm256_srli_epi16(r3_avx, 1); - r4_avx = _mm256_sub_epi16(r4_avx, r0_avx); - temp_avx = _mm256_slli_epi16(r6_avx, 6); - - r4_avx = _mm256_sub_epi16(r4_avx, temp_avx); - r4_avx = _mm256_slli_epi16(r4_avx, 1); - r4_avx = _mm256_add_epi16(r4_avx, r5_avx); - r2_avx = _mm256_add_epi16(r2_avx, r3_avx); - temp_avx = _mm256_slli_epi16(r2_avx, 6); - - r1_avx = _mm256_sub_epi16(r1_avx, temp_avx); - r1_avx = _mm256_sub_epi16(r1_avx, r2_avx); - r2_avx = _mm256_sub_epi16(r2_avx, r6_avx); - r2_avx = _mm256_sub_epi16(r2_avx, r0_avx); - temp_avx = _mm256_mullo_epi16(r2_avx, _mm256_set1_epi16(45)); - - r1_avx = _mm256_add_epi16(r1_avx, temp_avx); - temp_avx = _mm256_slli_epi16(r2_avx, 3); - - r4_avx = _mm256_sub_epi16(r4_avx, temp_avx); - r4_avx = _mm256_mullo_epi16(r4_avx, _mm256_set1_epi16(-21845)); // -21845 = 1/3 (mod 2^16) - r4_avx = _mm256_srli_epi16(r4_avx, 3); - r5_avx = _mm256_add_epi16(r5_avx, r1_avx); - temp_avx = _mm256_slli_epi16(r3_avx, 4); - - r1_avx = _mm256_add_epi16(r1_avx, temp_avx); - r1_avx = _mm256_mullo_epi16(r1_avx, _mm256_set1_epi16(-29127)); // -29127 = 1/9 (mod 2^16) - r1_avx = _mm256_srli_epi16(r1_avx, 1); - r3_avx = _mm256_add_epi16(r1_avx, r3_avx); - r3_avx = _mm256_sub_epi16(_mm256_set1_epi16(0), r3_avx); - temp_avx = _mm256_mullo_epi16(r1_avx, _mm256_set1_epi16(30)); - temp_avx = _mm256_sub_epi16(temp_avx, r5_avx); - temp_avx = _mm256_mullo_epi16(temp_avx, _mm256_set1_epi16(-4369)); // -4369 = 1/15 (mod 2^16) - - r5_avx = _mm256_srli_epi16(temp_avx, 2); - r2_avx = _mm256_sub_epi16(r2_avx, r4_avx); - r1_avx = _mm256_sub_epi16(r1_avx, r5_avx); - - if (i < L) { - res_full[0 * L + i] = r6_avx; - res_full[1 * L + i] = r5_avx; - res_full[2 * L + i] = r4_avx; - res_full[3 * L + i] = r3_avx; - res_full[4 * L + i] = r2_avx; - res_full[5 * L + i] = r1_avx; - res_full[6 * L + i] = r0_avx; - } else { - res_full[0 * L + i] = _mm256_add_epi16(res_full[0 * L + i], r6_avx); - res_full[1 * L + i] = _mm256_add_epi16(res_full[1 * L + i], r5_avx); - res_full[2 * L + i] = _mm256_add_epi16(res_full[2 * L + i], r4_avx); - res_full[3 * L + i] = _mm256_add_epi16(res_full[3 * L + i], r3_avx); - res_full[4 * L + i] = _mm256_add_epi16(res_full[4 * L + i], r2_avx); - res_full[5 * L + i] = _mm256_add_epi16(res_full[5 * L + i], r1_avx); - res_full[6 * L + i] = r0_avx; - } - } - - // Reduction by X^256 + 1 - for (i = 0; i < 16; i++) { - vres[i] = _mm256_sub_epi16(res_full[i], res_full[i + 16]); - } -} diff --git a/src/kem/saber/lightsaber/avx2/verify.c b/src/kem/saber/lightsaber/avx2/verify.c deleted file mode 100644 index c2e5dc72..00000000 --- a/src/kem/saber/lightsaber/avx2/verify.c +++ /dev/null @@ -1,35 +0,0 @@ -#include "verify.h" - -/*------------------------------------------------- -This file has been adapted from the implementation -(available at https://github.com/pq-crystals/kyber) of -"CRYSTALS – Kyber: a CCA-secure module-lattice-based KEM" - by : Joppe Bos, Leo Ducas, Eike Kiltz, Tancrede Lepoint, -Vadim Lyubashevsky, John M. Schanck, Peter Schwabe & Damien stehle -----------------------------------------------------*/ - - -/* returns 0 for equal strings, 1 for non-equal strings */ -uint8_t PQCLEAN_LIGHTSABER_AVX2_verify(const uint8_t *a, const uint8_t *b, size_t len) { - uint64_t r; - size_t i; - r = 0; - - for (i = 0; i < len; i++) { - r |= a[i] ^ b[i]; - } - - r = (~r + 1); // Two's complement - r >>= 63; - return (uint8_t) r; -} - -/* b = 1 means mov, b = 0 means don't mov*/ -void PQCLEAN_LIGHTSABER_AVX2_cmov(uint8_t *r, const uint8_t *x, size_t len, uint8_t b) { - size_t i; - - b = -b; - for (i = 0; i < len; i++) { - r[i] ^= b & (x[i] ^ r[i]); - } -} diff --git a/src/kem/saber/lightsaber/avx2/verify.h b/src/kem/saber/lightsaber/avx2/verify.h deleted file mode 100644 index f57ee9bc..00000000 --- a/src/kem/saber/lightsaber/avx2/verify.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef VERIFY_H -#define VERIFY_H -/*------------------------------------------------- -This file has been adapted from the implementation -(available at https://github.com/pq-crystals/kyber) of -"CRYSTALS – Kyber: a CCA-secure module-lattice-based KEM" - by : Joppe Bos, Leo Ducas, Eike Kiltz, Tancrede Lepoint, -Vadim Lyubashevsky, John M. Schanck, Peter Schwabe & Damien stehle -----------------------------------------------------*/ - -#include -#include - -/* returns 0 for equal strings, 1 for non-equal strings */ -uint8_t PQCLEAN_LIGHTSABER_AVX2_verify(const uint8_t *a, const uint8_t *b, size_t len); - - -/* b = 1 means mov, b = 0 means don't mov*/ -void PQCLEAN_LIGHTSABER_AVX2_cmov(uint8_t *r, const uint8_t *x, size_t len, uint8_t b); - - -#endif diff --git a/src/kem/saber/lightsaber/clean/CMakeLists.txt b/src/kem/saber/lightsaber/clean/CMakeLists.txt deleted file mode 100644 index 897aacc1..00000000 --- a/src/kem/saber/lightsaber/clean/CMakeLists.txt +++ /dev/null @@ -1,14 +0,0 @@ - -set( - SRC_CLEAN_LIGHTSABER - cbd.c - kem.c - pack_unpack.c - poly.c - poly_mul.c - SABER_indcpa.c - verify.c) - -define_kem_alg( - lightsaber_clean - PQCLEAN_LIGHTSABER_CLEAN "${SRC_CLEAN_LIGHTSABER}" "${CMAKE_CURRENT_SOURCE_DIR}") diff --git a/src/kem/saber/lightsaber/clean/SABER_indcpa.c b/src/kem/saber/lightsaber/clean/SABER_indcpa.c deleted file mode 100644 index fac58484..00000000 --- a/src/kem/saber/lightsaber/clean/SABER_indcpa.c +++ /dev/null @@ -1,113 +0,0 @@ -#include "SABER_indcpa.h" -#include "SABER_params.h" -#include "fips202.h" -#include "pack_unpack.h" -#include "poly.h" -#include "randombytes.h" -#include -#include - -#define h1 (1 << (SABER_EQ - SABER_EP - 1)) -#define h2 ((1 << (SABER_EP - 2)) - (1 << (SABER_EP - SABER_ET - 1)) + (1 << (SABER_EQ - SABER_EP - 1))) - -void PQCLEAN_LIGHTSABER_CLEAN_indcpa_kem_keypair(uint8_t pk[SABER_INDCPA_PUBLICKEYBYTES], uint8_t sk[SABER_INDCPA_SECRETKEYBYTES]) { - size_t i, j; - - poly A[SABER_L][SABER_L]; - poly s[SABER_L]; - poly res[SABER_L]; - - uint8_t rand[SABER_NOISESEEDBYTES]; - uint8_t *seed_A = pk + SABER_POLYVECCOMPRESSEDBYTES; - - randombytes(seed_A, SABER_SEEDBYTES); - shake128(seed_A, SABER_SEEDBYTES, seed_A, SABER_SEEDBYTES); // for not revealing system RNG state - - randombytes(rand, SABER_NOISESEEDBYTES); - PQCLEAN_LIGHTSABER_CLEAN_GenSecret(s, rand); - PQCLEAN_LIGHTSABER_CLEAN_POLVECq2BS(sk, s); - - PQCLEAN_LIGHTSABER_CLEAN_GenMatrix(A, seed_A); // sample matrix A - PQCLEAN_LIGHTSABER_CLEAN_MatrixVectorMul(res, (const poly (*)[SABER_L])A, (const poly *)s, 1); // Matrix in transposed order - - - // rounding - for (i = 0; i < SABER_L; i++) { - for (j = 0; j < SABER_N; j++) { - res[i].coeffs[j] += h1; - res[i].coeffs[j] >>= SABER_EQ - SABER_EP; - res[i].coeffs[j] &= SABER_Q - 1; - } - } - - PQCLEAN_LIGHTSABER_CLEAN_POLVECp2BS(pk, res); // pack public key -} - - -void PQCLEAN_LIGHTSABER_CLEAN_indcpa_kem_enc(uint8_t ciphertext[SABER_BYTES_CCA_DEC], const uint8_t m[SABER_KEYBYTES], const uint8_t noiseseed[SABER_NOISESEEDBYTES], const uint8_t pk[SABER_INDCPA_PUBLICKEYBYTES]) { - size_t i, j; - - poly A[SABER_L][SABER_L]; - poly res[SABER_L]; - poly s[SABER_L]; - poly *temp = A[0]; // re-use stack space - poly *vprime = &A[0][0]; - poly *message = &A[0][1]; - - const uint8_t *seed_A = pk + SABER_POLYVECCOMPRESSEDBYTES; - uint8_t *msk_c = ciphertext + SABER_POLYVECCOMPRESSEDBYTES; - - PQCLEAN_LIGHTSABER_CLEAN_GenSecret(s, noiseseed); - PQCLEAN_LIGHTSABER_CLEAN_GenMatrix(A, seed_A); - PQCLEAN_LIGHTSABER_CLEAN_MatrixVectorMul(res, (const poly (*)[SABER_L])A, (const poly *)s, 0); // 0 => not transposed - - - // rounding - for (i = 0; i < SABER_L; i++) { //shift right EQ-EP bits - for (j = 0; j < SABER_N; j++) { - res[i].coeffs[j] += h1; - res[i].coeffs[j] >>= SABER_EQ - SABER_EP; - res[i].coeffs[j] &= SABER_Q - 1; - } - } - PQCLEAN_LIGHTSABER_CLEAN_POLVECp2BS(ciphertext, res); - - // vector-vector scalar multiplication with mod p - PQCLEAN_LIGHTSABER_CLEAN_BS2POLVECp(temp, pk); - PQCLEAN_LIGHTSABER_CLEAN_InnerProd(vprime, temp, s); - PQCLEAN_LIGHTSABER_CLEAN_BS2POLmsg(message, m); - - for (i = 0; i < SABER_N; i++) { - vprime->coeffs[i] += h1 - (message->coeffs[i] << (SABER_EP - 1)); - vprime->coeffs[i] &= SABER_P - 1; - vprime->coeffs[i] >>= SABER_EP - SABER_ET; - } - - PQCLEAN_LIGHTSABER_CLEAN_POLT2BS(msk_c, vprime); -} - - -void PQCLEAN_LIGHTSABER_CLEAN_indcpa_kem_dec(uint8_t m[SABER_KEYBYTES], const uint8_t sk[SABER_INDCPA_SECRETKEYBYTES], const uint8_t ciphertext[SABER_BYTES_CCA_DEC]) { - size_t i; - - poly temp[SABER_L]; - poly s[SABER_L]; - - const uint8_t *packed_cm = ciphertext + SABER_POLYVECCOMPRESSEDBYTES; - poly *v = &temp[0]; - poly *cm = &temp[1]; - - PQCLEAN_LIGHTSABER_CLEAN_BS2POLVECq(s, sk); - PQCLEAN_LIGHTSABER_CLEAN_BS2POLVECp(temp, ciphertext); - PQCLEAN_LIGHTSABER_CLEAN_InnerProd(&temp[0], temp, s); - - PQCLEAN_LIGHTSABER_CLEAN_BS2POLT(cm, packed_cm); - - for (i = 0; i < SABER_N; i++) { - v->coeffs[i] += h2 - (cm->coeffs[i] << (SABER_EP - SABER_ET)); - v->coeffs[i] &= SABER_P - 1; - v->coeffs[i] >>= SABER_EP - 1; - } - - PQCLEAN_LIGHTSABER_CLEAN_POLmsg2BS(m, v); -} diff --git a/src/kem/saber/lightsaber/clean/SABER_indcpa.h b/src/kem/saber/lightsaber/clean/SABER_indcpa.h deleted file mode 100644 index df8906ab..00000000 --- a/src/kem/saber/lightsaber/clean/SABER_indcpa.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef INDCPA_H -#define INDCPA_H -#include "SABER_params.h" -#include - -void PQCLEAN_LIGHTSABER_CLEAN_indcpa_kem_keypair(uint8_t pk[SABER_INDCPA_PUBLICKEYBYTES], uint8_t sk[SABER_INDCPA_SECRETKEYBYTES]); - -void PQCLEAN_LIGHTSABER_CLEAN_indcpa_kem_enc(uint8_t ciphertext[SABER_BYTES_CCA_DEC], const uint8_t m[SABER_KEYBYTES], const uint8_t noiseseed[SABER_NOISESEEDBYTES], const uint8_t pk[SABER_INDCPA_PUBLICKEYBYTES]); - -void PQCLEAN_LIGHTSABER_CLEAN_indcpa_kem_dec(uint8_t m[SABER_KEYBYTES], const uint8_t sk[SABER_INDCPA_SECRETKEYBYTES], const uint8_t ciphertext[SABER_BYTES_CCA_DEC]); - - -#endif diff --git a/src/kem/saber/lightsaber/clean/SABER_params.h b/src/kem/saber/lightsaber/clean/SABER_params.h deleted file mode 100644 index 8da6ec34..00000000 --- a/src/kem/saber/lightsaber/clean/SABER_params.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef PARAMS_H -#define PARAMS_H - - -/* Don't change anything below this line */ -#define SABER_L 2 -#define SABER_MU 10 -#define SABER_ET 3 - -#define SABER_N 256 - -#define SABER_EP 10 -#define SABER_P (1 << SABER_EP) - -#define SABER_EQ 13 -#define SABER_Q (1 << SABER_EQ) - -#define SABER_SEEDBYTES 32 -#define SABER_NOISESEEDBYTES 32 -#define SABER_KEYBYTES 32 -#define SABER_HASHBYTES 32 - -#define SABER_POLYCOINBYTES (SABER_MU * SABER_N / 8) - -#define SABER_POLYBYTES (SABER_EQ * SABER_N / 8) -#define SABER_POLYVECBYTES (SABER_L * SABER_POLYBYTES) - -#define SABER_POLYCOMPRESSEDBYTES (SABER_EP * SABER_N / 8) -#define SABER_POLYVECCOMPRESSEDBYTES (SABER_L * SABER_POLYCOMPRESSEDBYTES) - -#define SABER_SCALEBYTES_KEM (SABER_ET * SABER_N / 8) - -#define SABER_INDCPA_PUBLICKEYBYTES (SABER_POLYVECCOMPRESSEDBYTES + SABER_SEEDBYTES) -#define SABER_INDCPA_SECRETKEYBYTES (SABER_POLYVECBYTES) - -#define SABER_PUBLICKEYBYTES (SABER_INDCPA_PUBLICKEYBYTES) -#define SABER_SECRETKEYBYTES (SABER_INDCPA_SECRETKEYBYTES + SABER_INDCPA_PUBLICKEYBYTES + SABER_HASHBYTES + SABER_KEYBYTES) - -#define SABER_BYTES_CCA_DEC (SABER_POLYVECCOMPRESSEDBYTES + SABER_SCALEBYTES_KEM) - -#endif diff --git a/src/kem/saber/lightsaber/clean/api.h b/src/kem/saber/lightsaber/clean/api.h deleted file mode 100644 index 2e39ae02..00000000 --- a/src/kem/saber/lightsaber/clean/api.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef PQCLEAN_LIGHTSABER_CLEAN_API_H -#define PQCLEAN_LIGHTSABER_CLEAN_API_H - - -#define PQCLEAN_LIGHTSABER_CLEAN_CRYPTO_ALGNAME "LightSaber" -#define PQCLEAN_LIGHTSABER_CLEAN_CRYPTO_BYTES 32 -#define PQCLEAN_LIGHTSABER_CLEAN_CRYPTO_CIPHERTEXTBYTES 736 -#define PQCLEAN_LIGHTSABER_CLEAN_CRYPTO_PUBLICKEYBYTES 672 -#define PQCLEAN_LIGHTSABER_CLEAN_CRYPTO_SECRETKEYBYTES 1568 - -int PQCLEAN_LIGHTSABER_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); - -int PQCLEAN_LIGHTSABER_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *k, const unsigned char *pk); - -int PQCLEAN_LIGHTSABER_CLEAN_crypto_kem_dec(unsigned char *k, const unsigned char *ct, const unsigned char *sk); - - -#endif /* PQCLEAN_LIGHTSABER_CLEAN_API_H */ diff --git a/src/kem/saber/lightsaber/clean/cbd.c b/src/kem/saber/lightsaber/clean/cbd.c deleted file mode 100644 index 7e3f2be2..00000000 --- a/src/kem/saber/lightsaber/clean/cbd.c +++ /dev/null @@ -1,48 +0,0 @@ -#include "SABER_params.h" -#include "api.h" -#include "cbd.h" -#include -/*--------------------------------------------------------------------- -This file has been adapted from the implementation -(available at, Public Domain https://github.com/pq-crystals/kyber) -of "CRYSTALS – Kyber: a CCA-secure module-lattice-based KEM" -by : Joppe Bos, Leo Ducas, Eike Kiltz, Tancrede Lepoint, -Vadim Lyubashevsky, John M. Schanck, Peter Schwabe & Damien stehle -----------------------------------------------------------------------*/ - - -static uint64_t load_littleendian(const uint8_t *x, int bytes) { - int i; - uint64_t r = x[0]; - for (i = 1; i < bytes; i++) { - r |= (uint64_t)x[i] << (8 * i); - } - return r; -} - -void PQCLEAN_LIGHTSABER_CLEAN_cbd(uint16_t s[SABER_N], const uint8_t buf[SABER_POLYCOINBYTES]) { - uint64_t t, d, a[4], b[4]; - int i, j; - - for (i = 0; i < SABER_N / 4; i++) { - t = load_littleendian(buf + 5 * i, 5); - d = 0; - for (j = 0; j < 5; j++) { - d += (t >> j) & 0x0842108421UL; - } - - a[0] = d & 0x1f; - b[0] = (d >> 5) & 0x1f; - a[1] = (d >> 10) & 0x1f; - b[1] = (d >> 15) & 0x1f; - a[2] = (d >> 20) & 0x1f; - b[2] = (d >> 25) & 0x1f; - a[3] = (d >> 30) & 0x1f; - b[3] = (d >> 35); - - s[4 * i + 0] = (uint16_t)(a[0] - b[0]); - s[4 * i + 1] = (uint16_t)(a[1] - b[1]); - s[4 * i + 2] = (uint16_t)(a[2] - b[2]); - s[4 * i + 3] = (uint16_t)(a[3] - b[3]); - } -} diff --git a/src/kem/saber/lightsaber/clean/cbd.h b/src/kem/saber/lightsaber/clean/cbd.h deleted file mode 100644 index dffd4dc5..00000000 --- a/src/kem/saber/lightsaber/clean/cbd.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef CBD_H -#define CBD_H -/*--------------------------------------------------------------------- -This file has been adapted from the implementation -(available at, Public Domain https://github.com/pq-crystals/kyber) -of "CRYSTALS – Kyber: a CCA-secure module-lattice-based KEM" -by : Joppe Bos, Leo Ducas, Eike Kiltz, Tancrede Lepoint, -Vadim Lyubashevsky, John M. Schanck, Peter Schwabe & Damien stehle -----------------------------------------------------------------------*/ -#include "SABER_params.h" -#include - -void PQCLEAN_LIGHTSABER_CLEAN_cbd(uint16_t s[SABER_N], const uint8_t buf[SABER_POLYCOINBYTES]); - - -#endif diff --git a/src/kem/saber/lightsaber/clean/kem.c b/src/kem/saber/lightsaber/clean/kem.c deleted file mode 100644 index d0a67736..00000000 --- a/src/kem/saber/lightsaber/clean/kem.c +++ /dev/null @@ -1,77 +0,0 @@ -#include "SABER_indcpa.h" -#include "SABER_params.h" -#include "api.h" -#include "fips202.h" -#include "randombytes.h" -#include "verify.h" -#include -#include - - -int PQCLEAN_LIGHTSABER_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk) { - size_t i; - - PQCLEAN_LIGHTSABER_CLEAN_indcpa_kem_keypair(pk, sk); // sk[0:SABER_INDCPA_SECRETKEYBYTES-1] <-- sk - for (i = 0; i < SABER_INDCPA_PUBLICKEYBYTES; i++) { - sk[i + SABER_INDCPA_SECRETKEYBYTES] = pk[i]; // sk[SABER_INDCPA_SECRETKEYBYTES:SABER_INDCPA_SECRETKEYBYTES+SABER_INDCPA_SECRETKEYBYTES-1] <-- pk - } - - sha3_256(sk + SABER_SECRETKEYBYTES - 64, pk, SABER_INDCPA_PUBLICKEYBYTES); // Then hash(pk) is appended. - - randombytes(sk + SABER_SECRETKEYBYTES - SABER_KEYBYTES, SABER_KEYBYTES); // Remaining part of sk contains a pseudo-random number. - // This is output when check in PQCLEAN_LIGHTSABER_CLEAN_crypto_kem_dec() fails. - return (0); -} - -int PQCLEAN_LIGHTSABER_CLEAN_crypto_kem_enc(uint8_t *c, uint8_t *k, const uint8_t *pk) { - - uint8_t kr[64]; // Will contain key, coins - uint8_t buf[64]; - - randombytes(buf, 32); - - sha3_256(buf, buf, 32); // BUF[0:31] <-- random message (will be used as the key for client) Note: hash doesnot release system RNG output - - sha3_256(buf + 32, pk, SABER_INDCPA_PUBLICKEYBYTES); // BUF[32:63] <-- Hash(public key); Multitarget countermeasure for coins + contributory KEM - - sha3_512(kr, buf, 64); // kr[0:63] <-- Hash(buf[0:63]); - // K^ <-- kr[0:31] - // noiseseed (r) <-- kr[32:63]; - PQCLEAN_LIGHTSABER_CLEAN_indcpa_kem_enc(c, buf, kr + 32, pk); // buf[0:31] contains message; kr[32:63] contains randomness r; - - sha3_256(kr + 32, c, SABER_BYTES_CCA_DEC); - - sha3_256(k, kr, 64); // hash concatenation of pre-k and h(c) to k - - return (0); -} - -int PQCLEAN_LIGHTSABER_CLEAN_crypto_kem_dec(uint8_t *k, const uint8_t *c, const uint8_t *sk) { - size_t i; - uint8_t fail; - uint8_t cmp[SABER_BYTES_CCA_DEC]; - uint8_t buf[64]; - uint8_t kr[64]; // Will contain key, coins - const uint8_t *pk = sk + SABER_INDCPA_SECRETKEYBYTES; - - PQCLEAN_LIGHTSABER_CLEAN_indcpa_kem_dec(buf, sk, c); // buf[0:31] <-- message - - // Multitarget countermeasure for coins + contributory KEM - for (i = 0; i < 32; i++) { // Save hash by storing h(pk) in sk - buf[32 + i] = sk[SABER_SECRETKEYBYTES - 64 + i]; - } - - sha3_512(kr, buf, 64); - - PQCLEAN_LIGHTSABER_CLEAN_indcpa_kem_enc(cmp, buf, kr + 32, pk); - - fail = PQCLEAN_LIGHTSABER_CLEAN_verify(c, cmp, SABER_BYTES_CCA_DEC); - - sha3_256(kr + 32, c, SABER_BYTES_CCA_DEC); // overwrite coins in kr with h(c) - - PQCLEAN_LIGHTSABER_CLEAN_cmov(kr, sk + SABER_SECRETKEYBYTES - SABER_KEYBYTES, SABER_KEYBYTES, fail); - - sha3_256(k, kr, 64); // hash concatenation of pre-k and h(c) to k - - return (0); -} diff --git a/src/kem/saber/lightsaber/clean/pack_unpack.c b/src/kem/saber/lightsaber/clean/pack_unpack.c deleted file mode 100644 index 106a62d4..00000000 --- a/src/kem/saber/lightsaber/clean/pack_unpack.c +++ /dev/null @@ -1,155 +0,0 @@ -#include "SABER_params.h" -#include "pack_unpack.h" -#include "poly.h" -#include - -void PQCLEAN_LIGHTSABER_CLEAN_POLT2BS(uint8_t bytes[SABER_SCALEBYTES_KEM], const poly *data) { - size_t j; - const uint16_t *in = data->coeffs; - uint8_t *out = bytes; - for (j = 0; j < SABER_N / 8; j++) { - out[0] = (uint8_t) ((in[0] & 0x7) | ((in[1] & 0x7) << 3) | (in[2] << 6)); - out[1] = (uint8_t) (((in[2] >> 2) & 0x01) | ((in[3] & 0x7) << 1) | ((in[4] & 0x7) << 4) | (in[5] << 7)); - out[2] = (uint8_t) (((in[5] >> 1) & 0x03) | ((in[6] & 0x7) << 2) | (in[7] << 5)); - in += 8; - out += 3; - } -} - -void PQCLEAN_LIGHTSABER_CLEAN_BS2POLT(poly *data, const uint8_t bytes[SABER_SCALEBYTES_KEM]) { - /* This function does not reduce its output mod T */ - size_t j; - const uint8_t *in = bytes; - uint16_t *out = data->coeffs; - for (j = 0; j < SABER_N / 8; j++) { - out[0] = in[0]; - out[1] = in[0] >> 3; - out[2] = (in[0] >> 6) | (in[1] << 2); - out[3] = in[1] >> 1; - out[4] = in[1] >> 4; - out[5] = (in[1] >> 7) | (in[2] << 1); - out[6] = in[2] >> 2; - out[7] = in[2] >> 5; - in += 3; - out += 8; - } -} - -static void POLq2BS(uint8_t bytes[SABER_POLYBYTES], const poly *data) { - size_t j; - const uint16_t *in = data->coeffs; - uint8_t *out = bytes; - for (j = 0; j < SABER_N / 8; j++) { - out[0] = (uint8_t) (in[0]); - out[1] = (uint8_t) (((in[0] >> 8) & 0x1f) | (in[1] << 5)); - out[2] = (uint8_t) (in[1] >> 3); - out[3] = (uint8_t) (((in[1] >> 11) & 0x03) | (in[2] << 2)); - out[4] = (uint8_t) (((in[2] >> 6) & 0x7f) | (in[3] << 7)); - out[5] = (uint8_t) (in[3] >> 1); - out[6] = (uint8_t) (((in[3] >> 9) & 0x0f) | (in[4] << 4)); - out[7] = (uint8_t) (in[4] >> 4); - out[8] = (uint8_t) (((in[4] >> 12) & 0x01) | (in[5] << 1)); - out[9] = (uint8_t) (((in[5] >> 7) & 0x3f) | (in[6] << 6)); - out[10] = (uint8_t) (in[6] >> 2); - out[11] = (uint8_t) (((in[6] >> 10) & 0x07) | (in[7] << 3)); - out[12] = (uint8_t) (in[7] >> 5); - in += 8; - out += 13; - } -} - -static void BS2POLq(poly *data, const uint8_t bytes[SABER_POLYBYTES]) { - /* This function does not reduce its output mod Q */ - size_t j; - const uint8_t *in = bytes; - uint16_t *out = data->coeffs; - for (j = 0; j < SABER_N / 8; j++) { - out[0] = (in[0]) | (in[1] << 8); - out[1] = (in[1] >> 5) | (in[2] << 3) | (in[3] << 11); - out[2] = (in[3] >> 2) | (in[4] << 6); - out[3] = (in[4] >> 7) | (in[5] << 1) | (in[6] << 9); - out[4] = (in[6] >> 4) | (in[7] << 4) | (in[8] << 12); - out[5] = (in[8] >> 1) | (in[9] << 7); - out[6] = (in[9] >> 6) | (in[10] << 2) | (in[11] << 10); - out[7] = (in[11] >> 3) | (in[12] << 5); - in += 13; - out += 8; - } -} - -static void POLp2BS(uint8_t bytes[SABER_POLYCOMPRESSEDBYTES], const poly *data) { - size_t j; - const uint16_t *in = data->coeffs; - uint8_t *out = bytes; - for (j = 0; j < SABER_N / 4; j++) { - out[0] = (uint8_t) (in[0]); - out[1] = (uint8_t) (((in[0] >> 8) & 0x03) | (in[1] << 2)); - out[2] = (uint8_t) (((in[1] >> 6) & 0x0f) | (in[2] << 4)); - out[3] = (uint8_t) (((in[2] >> 4) & 0x3f) | (in[3] << 6)); - out[4] = (uint8_t) (in[3] >> 2); - in += 4; - out += 5; - } -} - -static void BS2POLp(poly *data, const uint8_t bytes[SABER_POLYCOMPRESSEDBYTES]) { - size_t j; - const uint8_t *in = bytes; - uint16_t *out = data->coeffs; - for (j = 0; j < SABER_N / 4; j++) { - out[0] = in[0] | (in[1] << 8); - out[1] = (in[1] >> 2) | (in[2] << 6); - out[2] = (in[2] >> 4) | (in[3] << 4); - out[3] = (in[3] >> 6) | (in[4] << 2); - in += 5; - out += 4; - } -} - -void PQCLEAN_LIGHTSABER_CLEAN_POLVECq2BS(uint8_t bytes[SABER_POLYVECBYTES], const poly data[SABER_L]) { - size_t i; - for (i = 0; i < SABER_L; i++) { - POLq2BS(bytes + i * SABER_POLYBYTES, &data[i]); - } -} - -void PQCLEAN_LIGHTSABER_CLEAN_BS2POLVECq(poly data[SABER_L], const uint8_t bytes[SABER_POLYVECBYTES]) { - size_t i; - for (i = 0; i < SABER_L; i++) { - BS2POLq(&data[i], bytes + i * SABER_POLYBYTES); - } -} - -void PQCLEAN_LIGHTSABER_CLEAN_POLVECp2BS(uint8_t bytes[SABER_POLYVECCOMPRESSEDBYTES], const poly data[SABER_L]) { - size_t i; - for (i = 0; i < SABER_L; i++) { - POLp2BS(bytes + i * SABER_POLYCOMPRESSEDBYTES, &data[i]); - } -} - -void PQCLEAN_LIGHTSABER_CLEAN_BS2POLVECp(poly data[SABER_L], const uint8_t bytes[SABER_POLYVECCOMPRESSEDBYTES]) { - size_t i; - for (i = 0; i < SABER_L; i++) { - BS2POLp(&data[i], bytes + i * SABER_POLYCOMPRESSEDBYTES); - } -} - -void PQCLEAN_LIGHTSABER_CLEAN_BS2POLmsg(poly *data, const uint8_t bytes[SABER_KEYBYTES]) { - size_t i, j; - for (j = 0; j < SABER_KEYBYTES; j++) { - for (i = 0; i < 8; i++) { - data->coeffs[j * 8 + i] = ((bytes[j] >> i) & 0x01); - } - } -} - -void PQCLEAN_LIGHTSABER_CLEAN_POLmsg2BS(uint8_t bytes[SABER_KEYBYTES], const poly *data) { - size_t i, j; - memset(bytes, 0, SABER_KEYBYTES); - - for (j = 0; j < SABER_KEYBYTES; j++) { - for (i = 0; i < 8; i++) { - bytes[j] = bytes[j] | ((data->coeffs[j * 8 + i] & 0x01) << i); - } - } -} diff --git a/src/kem/saber/lightsaber/clean/pack_unpack.h b/src/kem/saber/lightsaber/clean/pack_unpack.h deleted file mode 100644 index 0eda3392..00000000 --- a/src/kem/saber/lightsaber/clean/pack_unpack.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef PACK_UNPACK_H -#define PACK_UNPACK_H -#include "SABER_params.h" -#include "poly.h" -#include -#include - -void PQCLEAN_LIGHTSABER_CLEAN_POLT2BS(uint8_t bytes[SABER_SCALEBYTES_KEM], const poly *data); - -void PQCLEAN_LIGHTSABER_CLEAN_BS2POLT(poly *data, const uint8_t bytes[SABER_SCALEBYTES_KEM]); - - -void PQCLEAN_LIGHTSABER_CLEAN_POLVECq2BS(uint8_t bytes[SABER_POLYVECBYTES], const poly data[SABER_L]); - -void PQCLEAN_LIGHTSABER_CLEAN_POLVECp2BS(uint8_t bytes[SABER_POLYVECCOMPRESSEDBYTES], const poly data[SABER_L]); - - -void PQCLEAN_LIGHTSABER_CLEAN_BS2POLVECq(poly data[SABER_L], const uint8_t bytes[SABER_POLYVECBYTES]); - -void PQCLEAN_LIGHTSABER_CLEAN_BS2POLVECp(poly data[SABER_L], const uint8_t bytes[SABER_POLYVECCOMPRESSEDBYTES]); - - -void PQCLEAN_LIGHTSABER_CLEAN_BS2POLmsg(poly *data, const uint8_t bytes[SABER_KEYBYTES]); - -void PQCLEAN_LIGHTSABER_CLEAN_POLmsg2BS(uint8_t bytes[SABER_KEYBYTES], const poly *data); - - -#endif diff --git a/src/kem/saber/lightsaber/clean/poly.c b/src/kem/saber/lightsaber/clean/poly.c deleted file mode 100644 index e5be857f..00000000 --- a/src/kem/saber/lightsaber/clean/poly.c +++ /dev/null @@ -1,57 +0,0 @@ -#include "api.h" -#include "cbd.h" -#include "fips202.h" -#include "pack_unpack.h" -#include "poly.h" -#include - -void PQCLEAN_LIGHTSABER_CLEAN_MatrixVectorMul(poly c[SABER_L], const poly A[SABER_L][SABER_L], const poly s[SABER_L], int16_t transpose) { - size_t i, j; - - if (transpose) { - for (i = 0; i < SABER_L; i++) { - PQCLEAN_LIGHTSABER_CLEAN_poly_mul(&c[i], &A[0][i], &s[0], 0); - for (j = 1; j < SABER_L; j++) { - PQCLEAN_LIGHTSABER_CLEAN_poly_mul(&c[i], &A[j][i], &s[j], 1); - } - } - } else { - for (i = 0; i < SABER_L; i++) { - PQCLEAN_LIGHTSABER_CLEAN_poly_mul(&c[i], &A[i][0], &s[0], 0); - for (j = 1; j < SABER_L; j++) { - PQCLEAN_LIGHTSABER_CLEAN_poly_mul(&c[i], &A[i][j], &s[j], 1); - } - } - } -} - -void PQCLEAN_LIGHTSABER_CLEAN_InnerProd(poly *c, const poly b[SABER_L], const poly s[SABER_L]) { - size_t i; - - PQCLEAN_LIGHTSABER_CLEAN_poly_mul(c, &b[0], &s[0], 0); - for (i = 1; i < SABER_L; i++) { - PQCLEAN_LIGHTSABER_CLEAN_poly_mul(c, &b[i], &s[i], 1); - } -} - -void PQCLEAN_LIGHTSABER_CLEAN_GenMatrix(poly A[SABER_L][SABER_L], const uint8_t seed[SABER_SEEDBYTES]) { - size_t i; - uint8_t buf[SABER_L * SABER_POLYVECBYTES]; - - shake128(buf, sizeof(buf), seed, SABER_SEEDBYTES); - - for (i = 0; i < SABER_L; i++) { - PQCLEAN_LIGHTSABER_CLEAN_BS2POLVECq(A[i], buf + i * SABER_POLYVECBYTES); - } -} - -void PQCLEAN_LIGHTSABER_CLEAN_GenSecret(poly s[SABER_L], const uint8_t seed[SABER_NOISESEEDBYTES]) { - size_t i; - uint8_t buf[SABER_L * SABER_POLYCOINBYTES]; - - shake128(buf, sizeof(buf), seed, SABER_NOISESEEDBYTES); - - for (i = 0; i < SABER_L; i++) { - PQCLEAN_LIGHTSABER_CLEAN_cbd(s[i].coeffs, buf + i * SABER_POLYCOINBYTES); - } -} diff --git a/src/kem/saber/lightsaber/clean/poly.h b/src/kem/saber/lightsaber/clean/poly.h deleted file mode 100644 index be074e43..00000000 --- a/src/kem/saber/lightsaber/clean/poly.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef POLY_H -#define POLY_H -#include "SABER_params.h" -#include - -typedef union { - uint16_t coeffs[SABER_N]; -} poly; - - -void PQCLEAN_LIGHTSABER_CLEAN_MatrixVectorMul(poly c[SABER_L], const poly A[SABER_L][SABER_L], const poly s[SABER_L], int16_t transpose); - -void PQCLEAN_LIGHTSABER_CLEAN_InnerProd(poly *c, const poly b[SABER_L], const poly s[SABER_L]); - -void PQCLEAN_LIGHTSABER_CLEAN_GenMatrix(poly A[SABER_L][SABER_L], const uint8_t seed[SABER_SEEDBYTES]); - -void PQCLEAN_LIGHTSABER_CLEAN_GenSecret(poly s[SABER_L], const uint8_t seed[SABER_NOISESEEDBYTES]); - - -void PQCLEAN_LIGHTSABER_CLEAN_poly_mul(poly *c, const poly *a, const poly *b, int accumulate); - - -#endif diff --git a/src/kem/saber/lightsaber/clean/poly_mul.c b/src/kem/saber/lightsaber/clean/poly_mul.c deleted file mode 100644 index d82d8585..00000000 --- a/src/kem/saber/lightsaber/clean/poly_mul.c +++ /dev/null @@ -1,248 +0,0 @@ -#include "poly.h" -#include -#include - -#define SCHB_N 16 - -#define N_RES (SABER_N << 1) -#define N_SB (SABER_N >> 2) -#define N_SB_RES (2*N_SB-1) - -#define OVERFLOWING_MUL(X, Y) ((uint16_t)((uint32_t)(X) * (uint32_t)(Y))) - -#define KARATSUBA_N 64 -static void karatsuba_simple(uint16_t *result_final, const uint16_t *a_1, const uint16_t *b_1) { - uint16_t d01[KARATSUBA_N / 2 - 1]; - uint16_t d0123[KARATSUBA_N / 2 - 1]; - uint16_t d23[KARATSUBA_N / 2 - 1]; - uint16_t result_d01[KARATSUBA_N - 1]; - - size_t i, j; - - memset(result_d01, 0, (KARATSUBA_N - 1)*sizeof(uint16_t)); - memset(d01, 0, (KARATSUBA_N / 2 - 1)*sizeof(uint16_t)); - memset(d0123, 0, (KARATSUBA_N / 2 - 1)*sizeof(uint16_t)); - memset(d23, 0, (KARATSUBA_N / 2 - 1)*sizeof(uint16_t)); - memset(result_final, 0, (2 * KARATSUBA_N - 1)*sizeof(uint16_t)); - - uint16_t acc1, acc2, acc3, acc4, acc5, acc6, acc7, acc8, acc9, acc10; - - - for (i = 0; i < KARATSUBA_N / 4; i++) { - acc1 = a_1[i]; //a0 - acc2 = a_1[i + KARATSUBA_N / 4]; //a1 - acc3 = a_1[i + 2 * KARATSUBA_N / 4]; //a2 - acc4 = a_1[i + 3 * KARATSUBA_N / 4]; //a3 - for (j = 0; j < KARATSUBA_N / 4; j++) { - - acc5 = b_1[j]; //b0 - acc6 = b_1[j + KARATSUBA_N / 4]; //b1 - - result_final[i + j + 0 * KARATSUBA_N / 4] = - result_final[i + j + 0 * KARATSUBA_N / 4] + - OVERFLOWING_MUL(acc1, acc5); - result_final[i + j + 2 * KARATSUBA_N / 4] = - result_final[i + j + 2 * KARATSUBA_N / 4] + - OVERFLOWING_MUL(acc2, acc6); - - acc7 = acc5 + acc6; //b01 - acc8 = acc1 + acc2; //a01 - d01[i + j] = d01[i + j] + (uint16_t)(acc7 * (uint64_t)acc8); - //-------------------------------------------------------- - - acc7 = b_1[j + 2 * KARATSUBA_N / 4]; //b2 - acc8 = b_1[j + 3 * KARATSUBA_N / 4]; //b3 - result_final[i + j + 4 * KARATSUBA_N / 4] = - result_final[i + j + 4 * KARATSUBA_N / 4] + - OVERFLOWING_MUL(acc7, acc3); - - result_final[i + j + 6 * KARATSUBA_N / 4] = - result_final[i + j + 6 * KARATSUBA_N / 4] + - OVERFLOWING_MUL(acc8, acc4); - - acc9 = acc3 + acc4; - acc10 = acc7 + acc8; - d23[i + j] = d23[i + j] + OVERFLOWING_MUL(acc9, acc10); - //-------------------------------------------------------- - - acc5 = acc5 + acc7; //b02 - acc7 = acc1 + acc3; //a02 - result_d01[i + j + 0 * KARATSUBA_N / 4] = - result_d01[i + j + 0 * KARATSUBA_N / 4] + - OVERFLOWING_MUL(acc5, acc7); - - acc6 = acc6 + acc8; //b13 - acc8 = acc2 + acc4; - result_d01[i + j + 2 * KARATSUBA_N / 4] = - result_d01[i + j + 2 * KARATSUBA_N / 4] + - OVERFLOWING_MUL(acc6, acc8); - - acc5 = acc5 + acc6; - acc7 = acc7 + acc8; - d0123[i + j] = d0123[i + j] + OVERFLOWING_MUL(acc5, acc7); - } - } - - // 2nd last stage - - for (i = 0; i < KARATSUBA_N / 2 - 1; i++) { - d0123[i] = d0123[i] - result_d01[i + 0 * KARATSUBA_N / 4] - result_d01[i + 2 * KARATSUBA_N / 4]; - d01[i] = d01[i] - result_final[i + 0 * KARATSUBA_N / 4] - result_final[i + 2 * KARATSUBA_N / 4]; - d23[i] = d23[i] - result_final[i + 4 * KARATSUBA_N / 4] - result_final[i + 6 * KARATSUBA_N / 4]; - } - - for (i = 0; i < KARATSUBA_N / 2 - 1; i++) { - result_d01[i + 1 * KARATSUBA_N / 4] = result_d01[i + 1 * KARATSUBA_N / 4] + d0123[i]; - result_final[i + 1 * KARATSUBA_N / 4] = result_final[i + 1 * KARATSUBA_N / 4] + d01[i]; - result_final[i + 5 * KARATSUBA_N / 4] = result_final[i + 5 * KARATSUBA_N / 4] + d23[i]; - } - - // Last stage - for (i = 0; i < KARATSUBA_N - 1; i++) { - result_d01[i] = result_d01[i] - result_final[i] - result_final[i + KARATSUBA_N]; - } - - for (i = 0; i < KARATSUBA_N - 1; i++) { - result_final[i + 1 * KARATSUBA_N / 2] = result_final[i + 1 * KARATSUBA_N / 2] + result_d01[i]; - } - -} - - - -static void toom_cook_4way (uint16_t *result, const uint16_t *a1, const uint16_t *b1) { - uint16_t inv3 = 43691, inv9 = 36409, inv15 = 61167; - - uint16_t aw1[N_SB], aw2[N_SB], aw3[N_SB], aw4[N_SB], aw5[N_SB], aw6[N_SB], aw7[N_SB]; - uint16_t bw1[N_SB], bw2[N_SB], bw3[N_SB], bw4[N_SB], bw5[N_SB], bw6[N_SB], bw7[N_SB]; - uint16_t w1[N_SB_RES] = {0}, w2[N_SB_RES] = {0}, w3[N_SB_RES] = {0}, w4[N_SB_RES] = {0}, - w5[N_SB_RES] = {0}, w6[N_SB_RES] = {0}, w7[N_SB_RES] = {0}; - uint16_t r0, r1, r2, r3, r4, r5, r6, r7; - uint16_t *A0, *A1, *A2, *A3, *B0, *B1, *B2, *B3; - A0 = (uint16_t *)a1; - A1 = (uint16_t *)&a1[N_SB]; - A2 = (uint16_t *)&a1[2 * N_SB]; - A3 = (uint16_t *)&a1[3 * N_SB]; - B0 = (uint16_t *)b1; - B1 = (uint16_t *)&b1[N_SB]; - B2 = (uint16_t *)&b1[2 * N_SB]; - B3 = (uint16_t *)&b1[3 * N_SB]; - - uint16_t *C; - C = result; - - int i, j; - - // EVALUATION - for (j = 0; j < N_SB; ++j) { - r0 = A0[j]; - r1 = A1[j]; - r2 = A2[j]; - r3 = A3[j]; - r4 = r0 + r2; - r5 = r1 + r3; - r6 = r4 + r5; - r7 = r4 - r5; - aw3[j] = r6; - aw4[j] = r7; - r4 = ((r0 << 2) + r2) << 1; - r5 = (r1 << 2) + r3; - r6 = r4 + r5; - r7 = r4 - r5; - aw5[j] = r6; - aw6[j] = r7; - r4 = (r3 << 3) + (r2 << 2) + (r1 << 1) + r0; - aw2[j] = r4; - aw7[j] = r0; - aw1[j] = r3; - } - for (j = 0; j < N_SB; ++j) { - r0 = B0[j]; - r1 = B1[j]; - r2 = B2[j]; - r3 = B3[j]; - r4 = r0 + r2; - r5 = r1 + r3; - r6 = r4 + r5; - r7 = r4 - r5; - bw3[j] = r6; - bw4[j] = r7; - r4 = ((r0 << 2) + r2) << 1; - r5 = (r1 << 2) + r3; - r6 = r4 + r5; - r7 = r4 - r5; - bw5[j] = r6; - bw6[j] = r7; - r4 = (r3 << 3) + (r2 << 2) + (r1 << 1) + r0; - bw2[j] = r4; - bw7[j] = r0; - bw1[j] = r3; - } - - // MULTIPLICATION - - karatsuba_simple(w1, aw1, bw1); - karatsuba_simple(w2, aw2, bw2); - karatsuba_simple(w3, aw3, bw3); - karatsuba_simple(w4, aw4, bw4); - karatsuba_simple(w5, aw5, bw5); - karatsuba_simple(w6, aw6, bw6); - karatsuba_simple(w7, aw7, bw7); - - // INTERPOLATION - for (i = 0; i < N_SB_RES; ++i) { - r0 = w1[i]; - r1 = w2[i]; - r2 = w3[i]; - r3 = w4[i]; - r4 = w5[i]; - r5 = w6[i]; - r6 = w7[i]; - - r1 = r1 + r4; - r5 = r5 - r4; - r3 = ((r3 - r2) >> 1); - r4 = r4 - r0; - r4 = r4 - (r6 << 6); - r4 = (r4 << 1) + r5; - r2 = r2 + r3; - r1 = r1 - (r2 << 6) - r2; - r2 = r2 - r6; - r2 = r2 - r0; - r1 = r1 + 45 * r2; - r4 = (uint16_t)(((r4 - (r2 << 3)) * (uint32_t)inv3) >> 3); - r5 = r5 + r1; - r1 = (uint16_t)(((r1 + (r3 << 4)) * (uint32_t)inv9) >> 1); - r3 = -(r3 + r1); - r5 = (uint16_t)(((30 * r1 - r5) * (uint32_t)inv15) >> 2); - r2 = r2 - r4; - r1 = r1 - r5; - - C[i] += r6; - C[i + 64] += r5; - C[i + 128] += r4; - C[i + 192] += r3; - C[i + 256] += r2; - C[i + 320] += r1; - C[i + 384] += r0; - } -} - -/* res += a*b */ -void PQCLEAN_LIGHTSABER_CLEAN_poly_mul(poly *c, const poly *a, const poly *b, const int accumulate) { - uint16_t C[2 * SABER_N] = {0}; - size_t i; - - toom_cook_4way(C, a->coeffs, b->coeffs); - - /* reduction */ - if (accumulate == 0) { - for (i = SABER_N; i < 2 * SABER_N; i++) { - c->coeffs[i - SABER_N] = (C[i - SABER_N] - C[i]); - } - } else { - for (i = SABER_N; i < 2 * SABER_N; i++) { - c->coeffs[i - SABER_N] += (C[i - SABER_N] - C[i]); - } - } -} diff --git a/src/kem/saber/lightsaber/clean/poly_mul.h b/src/kem/saber/lightsaber/clean/poly_mul.h deleted file mode 100644 index b28b04f6..00000000 --- a/src/kem/saber/lightsaber/clean/poly_mul.h +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/kem/saber/lightsaber/clean/verify.c b/src/kem/saber/lightsaber/clean/verify.c deleted file mode 100644 index 05e564da..00000000 --- a/src/kem/saber/lightsaber/clean/verify.c +++ /dev/null @@ -1,35 +0,0 @@ -#include "verify.h" - -/*------------------------------------------------- -This file has been adapted from the implementation -(available at https://github.com/pq-crystals/kyber) of -"CRYSTALS – Kyber: a CCA-secure module-lattice-based KEM" - by : Joppe Bos, Leo Ducas, Eike Kiltz, Tancrede Lepoint, -Vadim Lyubashevsky, John M. Schanck, Peter Schwabe & Damien stehle -----------------------------------------------------*/ - - -/* returns 0 for equal strings, 1 for non-equal strings */ -uint8_t PQCLEAN_LIGHTSABER_CLEAN_verify(const uint8_t *a, const uint8_t *b, size_t len) { - uint64_t r; - size_t i; - r = 0; - - for (i = 0; i < len; i++) { - r |= a[i] ^ b[i]; - } - - r = (~r + 1); // Two's complement - r >>= 63; - return (uint8_t) r; -} - -/* b = 1 means mov, b = 0 means don't mov*/ -void PQCLEAN_LIGHTSABER_CLEAN_cmov(uint8_t *r, const uint8_t *x, size_t len, uint8_t b) { - size_t i; - - b = -b; - for (i = 0; i < len; i++) { - r[i] ^= b & (x[i] ^ r[i]); - } -} diff --git a/src/kem/saber/lightsaber/clean/verify.h b/src/kem/saber/lightsaber/clean/verify.h deleted file mode 100644 index 4f538e6f..00000000 --- a/src/kem/saber/lightsaber/clean/verify.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef VERIFY_H -#define VERIFY_H -/*------------------------------------------------- -This file has been adapted from the implementation -(available at https://github.com/pq-crystals/kyber) of -"CRYSTALS – Kyber: a CCA-secure module-lattice-based KEM" - by : Joppe Bos, Leo Ducas, Eike Kiltz, Tancrede Lepoint, -Vadim Lyubashevsky, John M. Schanck, Peter Schwabe & Damien stehle -----------------------------------------------------*/ - -#include -#include - -/* returns 0 for equal strings, 1 for non-equal strings */ -uint8_t PQCLEAN_LIGHTSABER_CLEAN_verify(const uint8_t *a, const uint8_t *b, size_t len); - - -/* b = 1 means mov, b = 0 means don't mov*/ -void PQCLEAN_LIGHTSABER_CLEAN_cmov(uint8_t *r, const uint8_t *x, size_t len, uint8_t b); - - -#endif diff --git a/src/kem/saber/saber/avx2/CMakeLists.txt b/src/kem/saber/saber/avx2/CMakeLists.txt deleted file mode 100644 index 6ad6825a..00000000 --- a/src/kem/saber/saber/avx2/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -set( - SRC_AVX2_SABER - cbd.c - kem.c - pack_unpack.c - poly.c - poly_mul.c - SABER_indcpa.c - verify.c) - -define_kem_alg( - saber_avx2 - PQCLEAN_SABER_AVX2 "${SRC_AVX2_SABER}" "${CMAKE_CURRENT_SOURCE_DIR}") diff --git a/src/kem/saber/saber/avx2/SABER_indcpa.c b/src/kem/saber/saber/avx2/SABER_indcpa.c deleted file mode 100644 index e01eb650..00000000 --- a/src/kem/saber/saber/avx2/SABER_indcpa.c +++ /dev/null @@ -1,125 +0,0 @@ -#include "SABER_indcpa.h" -#include "SABER_params.h" -#include "fips202.h" -#include "pack_unpack.h" -#include "poly.h" -#include "randombytes.h" -#include -#include - -#define h1 (1 << (SABER_EQ - SABER_EP - 1)) -#define h2 ((1 << (SABER_EP - 2)) - (1 << (SABER_EP - SABER_ET - 1)) + (1 << (SABER_EQ - SABER_EP - 1))) - -void PQCLEAN_SABER_AVX2_indcpa_kem_keypair(uint8_t pk[SABER_INDCPA_PUBLICKEYBYTES], uint8_t sk[SABER_INDCPA_SECRETKEYBYTES]) { - size_t i, j; - - poly A[SABER_L][SABER_L]; - poly *skpv1 = A[0]; // use first row of A to hold sk temporarily - toom4_points skpv1_eval[SABER_L]; - poly res[SABER_L]; - - uint8_t rand[SABER_NOISESEEDBYTES]; - uint8_t *seed_A = pk + SABER_POLYVECCOMPRESSEDBYTES; - - randombytes(seed_A, SABER_SEEDBYTES); - shake128(seed_A, SABER_SEEDBYTES, seed_A, SABER_SEEDBYTES); // for not revealing system RNG state - - randombytes(rand, SABER_NOISESEEDBYTES); - PQCLEAN_SABER_AVX2_GenSecret(skpv1, rand); - PQCLEAN_SABER_AVX2_POLVECq2BS(sk, skpv1); // pack secret key - - for (j = 0; j < SABER_L; j++) { - PQCLEAN_SABER_AVX2_toom4_eval(&skpv1_eval[j], &skpv1[j]); - } - - PQCLEAN_SABER_AVX2_GenMatrix(A, seed_A); // sample matrix A - PQCLEAN_SABER_AVX2_MatrixVectorMul(res, (const poly (*)[SABER_L])A, (const toom4_points *)skpv1_eval, 1); // Matrix in transposed order - - // rounding - for (i = 0; i < SABER_L; i++) { - for (j = 0; j < SABER_N; j++) { - res[i].coeffs[j] += h1; - res[i].coeffs[j] >>= SABER_EQ - SABER_EP; - res[i].coeffs[j] &= SABER_Q - 1; - } - } - - PQCLEAN_SABER_AVX2_POLVECp2BS(pk, res); // pack public key -} - - -void PQCLEAN_SABER_AVX2_indcpa_kem_enc(uint8_t ciphertext[SABER_BYTES_CCA_DEC], const uint8_t m[SABER_KEYBYTES], const uint8_t noiseseed[SABER_NOISESEEDBYTES], const uint8_t pk[SABER_INDCPA_PUBLICKEYBYTES]) { - size_t i, j; - - poly A[SABER_L][SABER_L]; - poly res[SABER_L]; - toom4_points skpv1_eval[SABER_L]; - - poly *temp = A[0]; // re-use stack space - poly *vprime = &A[0][0]; - poly *message = &A[0][1]; - - const uint8_t *seed_A = pk + SABER_POLYVECCOMPRESSEDBYTES; - uint8_t *msk_c = ciphertext + SABER_POLYVECCOMPRESSEDBYTES; - - PQCLEAN_SABER_AVX2_GenSecret(temp, noiseseed); - for (j = 0; j < SABER_L; j++) { - PQCLEAN_SABER_AVX2_toom4_eval(&skpv1_eval[j], &temp[j]); - } - - PQCLEAN_SABER_AVX2_GenMatrix(A, seed_A); - PQCLEAN_SABER_AVX2_MatrixVectorMul(res, (const poly (*)[SABER_L])A, (const toom4_points *)skpv1_eval, 0); // 0 => not transposed - - // rounding - for (i = 0; i < SABER_L; i++) { //shift right EQ-EP bits - for (j = 0; j < SABER_N; j++) { - res[i].coeffs[j] += h1; - res[i].coeffs[j] >>= SABER_EQ - SABER_EP; - res[i].coeffs[j] &= SABER_Q - 1; - } - } - PQCLEAN_SABER_AVX2_POLVECp2BS(ciphertext, res); - - // vector-vector scalar multiplication with mod p - PQCLEAN_SABER_AVX2_BS2POLVECp(temp, pk); - PQCLEAN_SABER_AVX2_InnerProd(vprime, temp, skpv1_eval); - PQCLEAN_SABER_AVX2_BS2POLmsg(message, m); - - for (i = 0; i < SABER_N; i++) { - vprime->coeffs[i] += h1 - (message->coeffs[i] << (SABER_EP - 1)); - vprime->coeffs[i] &= SABER_P - 1; - vprime->coeffs[i] >>= SABER_EP - SABER_ET; - } - - PQCLEAN_SABER_AVX2_POLT2BS(msk_c, vprime); -} - - -void PQCLEAN_SABER_AVX2_indcpa_kem_dec(uint8_t m[SABER_KEYBYTES], const uint8_t sk[SABER_INDCPA_SECRETKEYBYTES], const uint8_t ciphertext[SABER_BYTES_CCA_DEC]) { - size_t i; - - poly temp[SABER_L]; - toom4_points sksv_eval[SABER_L]; - - const uint8_t *packed_cm = ciphertext + SABER_POLYVECCOMPRESSEDBYTES; - poly *v = &temp[0]; - poly *cm = &temp[1]; - - PQCLEAN_SABER_AVX2_BS2POLVECq(temp, sk); - for (i = 0; i < SABER_L; i++) { - PQCLEAN_SABER_AVX2_toom4_eval(&sksv_eval[i], &temp[i]); - } - - PQCLEAN_SABER_AVX2_BS2POLVECp(temp, ciphertext); - PQCLEAN_SABER_AVX2_InnerProd(v, temp, sksv_eval); - - PQCLEAN_SABER_AVX2_BS2POLT(cm, packed_cm); - - for (i = 0; i < SABER_N; i++) { - v->coeffs[i] += h2 - (cm->coeffs[i] << (SABER_EP - SABER_ET)); - v->coeffs[i] &= SABER_P - 1; - v->coeffs[i] >>= SABER_EP - 1; - } - - PQCLEAN_SABER_AVX2_POLmsg2BS(m, v); -} diff --git a/src/kem/saber/saber/avx2/SABER_indcpa.h b/src/kem/saber/saber/avx2/SABER_indcpa.h deleted file mode 100644 index acdda606..00000000 --- a/src/kem/saber/saber/avx2/SABER_indcpa.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef INDCPA_H -#define INDCPA_H -#include "SABER_params.h" -#include - -void PQCLEAN_SABER_AVX2_indcpa_kem_keypair(uint8_t pk[SABER_INDCPA_PUBLICKEYBYTES], uint8_t sk[SABER_INDCPA_SECRETKEYBYTES]); - -void PQCLEAN_SABER_AVX2_indcpa_kem_enc(uint8_t ciphertext[SABER_BYTES_CCA_DEC], const uint8_t m[SABER_KEYBYTES], const uint8_t noiseseed[SABER_NOISESEEDBYTES], const uint8_t pk[SABER_INDCPA_PUBLICKEYBYTES]); - -void PQCLEAN_SABER_AVX2_indcpa_kem_dec(uint8_t m[SABER_KEYBYTES], const uint8_t sk[SABER_INDCPA_SECRETKEYBYTES], const uint8_t ciphertext[SABER_BYTES_CCA_DEC]); - - -#endif diff --git a/src/kem/saber/saber/avx2/SABER_params.h b/src/kem/saber/saber/avx2/SABER_params.h deleted file mode 100644 index d1a5ddd7..00000000 --- a/src/kem/saber/saber/avx2/SABER_params.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef PARAMS_H -#define PARAMS_H - - -/* Don't change anything below this line */ -#define SABER_L 3 -#define SABER_MU 8 -#define SABER_ET 4 - -#define SABER_N 256 - -#define SABER_EP 10 -#define SABER_P (1 << SABER_EP) - -#define SABER_EQ 13 -#define SABER_Q (1 << SABER_EQ) - -#define SABER_SEEDBYTES 32 -#define SABER_NOISESEEDBYTES 32 -#define SABER_KEYBYTES 32 -#define SABER_HASHBYTES 32 - -#define SABER_POLYCOINBYTES (SABER_MU * SABER_N / 8) - -#define SABER_POLYBYTES (SABER_EQ * SABER_N / 8) -#define SABER_POLYVECBYTES (SABER_L * SABER_POLYBYTES) - -#define SABER_POLYCOMPRESSEDBYTES (SABER_EP * SABER_N / 8) -#define SABER_POLYVECCOMPRESSEDBYTES (SABER_L * SABER_POLYCOMPRESSEDBYTES) - -#define SABER_SCALEBYTES_KEM (SABER_ET * SABER_N / 8) - -#define SABER_INDCPA_PUBLICKEYBYTES (SABER_POLYVECCOMPRESSEDBYTES + SABER_SEEDBYTES) -#define SABER_INDCPA_SECRETKEYBYTES (SABER_POLYVECBYTES) - -#define SABER_PUBLICKEYBYTES (SABER_INDCPA_PUBLICKEYBYTES) -#define SABER_SECRETKEYBYTES (SABER_INDCPA_SECRETKEYBYTES + SABER_INDCPA_PUBLICKEYBYTES + SABER_HASHBYTES + SABER_KEYBYTES) - -#define SABER_BYTES_CCA_DEC (SABER_POLYVECCOMPRESSEDBYTES + SABER_SCALEBYTES_KEM) - -#endif diff --git a/src/kem/saber/saber/avx2/api.h b/src/kem/saber/saber/avx2/api.h deleted file mode 100644 index 20bf0df3..00000000 --- a/src/kem/saber/saber/avx2/api.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef PQCLEAN_SABER_AVX2_API_H -#define PQCLEAN_SABER_AVX2_API_H - - -#define PQCLEAN_SABER_AVX2_CRYPTO_ALGNAME "Saber" -#define PQCLEAN_SABER_AVX2_CRYPTO_BYTES 32 -#define PQCLEAN_SABER_AVX2_CRYPTO_CIPHERTEXTBYTES 1088 -#define PQCLEAN_SABER_AVX2_CRYPTO_PUBLICKEYBYTES 992 -#define PQCLEAN_SABER_AVX2_CRYPTO_SECRETKEYBYTES 2304 - -int PQCLEAN_SABER_AVX2_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); - -int PQCLEAN_SABER_AVX2_crypto_kem_enc(unsigned char *ct, unsigned char *k, const unsigned char *pk); - -int PQCLEAN_SABER_AVX2_crypto_kem_dec(unsigned char *k, const unsigned char *ct, const unsigned char *sk); - - -#endif /* PQCLEAN_SABER_AVX2_API_H */ diff --git a/src/kem/saber/saber/avx2/cbd.c b/src/kem/saber/saber/avx2/cbd.c deleted file mode 100644 index 53335375..00000000 --- a/src/kem/saber/saber/avx2/cbd.c +++ /dev/null @@ -1,48 +0,0 @@ -#include "SABER_params.h" -#include "api.h" -#include "cbd.h" -#include -/*--------------------------------------------------------------------- -This file has been adapted from the implementation -(available at, Public Domain https://github.com/pq-crystals/kyber) -of "CRYSTALS – Kyber: a CCA-secure module-lattice-based KEM" -by : Joppe Bos, Leo Ducas, Eike Kiltz, Tancrede Lepoint, -Vadim Lyubashevsky, John M. Schanck, Peter Schwabe & Damien stehle -----------------------------------------------------------------------*/ - - -static uint64_t load_littleendian(const uint8_t *x, int bytes) { - int i; - uint64_t r = x[0]; - for (i = 1; i < bytes; i++) { - r |= (uint64_t)x[i] << (8 * i); - } - return r; -} - -void PQCLEAN_SABER_AVX2_cbd(uint16_t s[SABER_N], const uint8_t buf[SABER_POLYCOINBYTES]) { - uint32_t t, d, a[4], b[4]; - int i, j; - - for (i = 0; i < SABER_N / 4; i++) { - t = (uint32_t) load_littleendian(buf + 4 * i, 4); - d = 0; - for (j = 0; j < 4; j++) { - d += (t >> j) & 0x11111111; - } - - a[0] = d & 0xf; - b[0] = (d >> 4) & 0xf; - a[1] = (d >> 8) & 0xf; - b[1] = (d >> 12) & 0xf; - a[2] = (d >> 16) & 0xf; - b[2] = (d >> 20) & 0xf; - a[3] = (d >> 24) & 0xf; - b[3] = (d >> 28); - - s[4 * i + 0] = (uint16_t)(a[0] - b[0]); - s[4 * i + 1] = (uint16_t)(a[1] - b[1]); - s[4 * i + 2] = (uint16_t)(a[2] - b[2]); - s[4 * i + 3] = (uint16_t)(a[3] - b[3]); - } -} diff --git a/src/kem/saber/saber/avx2/cbd.h b/src/kem/saber/saber/avx2/cbd.h deleted file mode 100644 index afe84bf3..00000000 --- a/src/kem/saber/saber/avx2/cbd.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef CBD_H -#define CBD_H -/*--------------------------------------------------------------------- -This file has been adapted from the implementation -(available at, Public Domain https://github.com/pq-crystals/kyber) -of "CRYSTALS – Kyber: a CCA-secure module-lattice-based KEM" -by : Joppe Bos, Leo Ducas, Eike Kiltz, Tancrede Lepoint, -Vadim Lyubashevsky, John M. Schanck, Peter Schwabe & Damien stehle -----------------------------------------------------------------------*/ -#include "SABER_params.h" -#include - -void PQCLEAN_SABER_AVX2_cbd(uint16_t s[SABER_N], const uint8_t buf[SABER_POLYCOINBYTES]); - - -#endif diff --git a/src/kem/saber/saber/avx2/kem.c b/src/kem/saber/saber/avx2/kem.c deleted file mode 100644 index e47e985f..00000000 --- a/src/kem/saber/saber/avx2/kem.c +++ /dev/null @@ -1,77 +0,0 @@ -#include "SABER_indcpa.h" -#include "SABER_params.h" -#include "api.h" -#include "fips202.h" -#include "randombytes.h" -#include "verify.h" -#include -#include - - -int PQCLEAN_SABER_AVX2_crypto_kem_keypair(uint8_t *pk, uint8_t *sk) { - size_t i; - - PQCLEAN_SABER_AVX2_indcpa_kem_keypair(pk, sk); // sk[0:SABER_INDCPA_SECRETKEYBYTES-1] <-- sk - for (i = 0; i < SABER_INDCPA_PUBLICKEYBYTES; i++) { - sk[i + SABER_INDCPA_SECRETKEYBYTES] = pk[i]; // sk[SABER_INDCPA_SECRETKEYBYTES:SABER_INDCPA_SECRETKEYBYTES+SABER_INDCPA_SECRETKEYBYTES-1] <-- pk - } - - sha3_256(sk + SABER_SECRETKEYBYTES - 64, pk, SABER_INDCPA_PUBLICKEYBYTES); // Then hash(pk) is appended. - - randombytes(sk + SABER_SECRETKEYBYTES - SABER_KEYBYTES, SABER_KEYBYTES); // Remaining part of sk contains a pseudo-random number. - // This is output when check in PQCLEAN_SABER_AVX2_crypto_kem_dec() fails. - return (0); -} - -int PQCLEAN_SABER_AVX2_crypto_kem_enc(uint8_t *c, uint8_t *k, const uint8_t *pk) { - - uint8_t kr[64]; // Will contain key, coins - uint8_t buf[64]; - - randombytes(buf, 32); - - sha3_256(buf, buf, 32); // BUF[0:31] <-- random message (will be used as the key for client) Note: hash doesnot release system RNG output - - sha3_256(buf + 32, pk, SABER_INDCPA_PUBLICKEYBYTES); // BUF[32:63] <-- Hash(public key); Multitarget countermeasure for coins + contributory KEM - - sha3_512(kr, buf, 64); // kr[0:63] <-- Hash(buf[0:63]); - // K^ <-- kr[0:31] - // noiseseed (r) <-- kr[32:63]; - PQCLEAN_SABER_AVX2_indcpa_kem_enc(c, buf, kr + 32, pk); // buf[0:31] contains message; kr[32:63] contains randomness r; - - sha3_256(kr + 32, c, SABER_BYTES_CCA_DEC); - - sha3_256(k, kr, 64); // hash concatenation of pre-k and h(c) to k - - return (0); -} - -int PQCLEAN_SABER_AVX2_crypto_kem_dec(uint8_t *k, const uint8_t *c, const uint8_t *sk) { - size_t i; - uint8_t fail; - uint8_t cmp[SABER_BYTES_CCA_DEC]; - uint8_t buf[64]; - uint8_t kr[64]; // Will contain key, coins - const uint8_t *pk = sk + SABER_INDCPA_SECRETKEYBYTES; - - PQCLEAN_SABER_AVX2_indcpa_kem_dec(buf, sk, c); // buf[0:31] <-- message - - // Multitarget countermeasure for coins + contributory KEM - for (i = 0; i < 32; i++) { // Save hash by storing h(pk) in sk - buf[32 + i] = sk[SABER_SECRETKEYBYTES - 64 + i]; - } - - sha3_512(kr, buf, 64); - - PQCLEAN_SABER_AVX2_indcpa_kem_enc(cmp, buf, kr + 32, pk); - - fail = PQCLEAN_SABER_AVX2_verify(c, cmp, SABER_BYTES_CCA_DEC); - - sha3_256(kr + 32, c, SABER_BYTES_CCA_DEC); // overwrite coins in kr with h(c) - - PQCLEAN_SABER_AVX2_cmov(kr, sk + SABER_SECRETKEYBYTES - SABER_KEYBYTES, SABER_KEYBYTES, fail); - - sha3_256(k, kr, 64); // hash concatenation of pre-k and h(c) to k - - return (0); -} diff --git a/src/kem/saber/saber/avx2/pack_unpack.c b/src/kem/saber/saber/avx2/pack_unpack.c deleted file mode 100644 index f9315d5d..00000000 --- a/src/kem/saber/saber/avx2/pack_unpack.c +++ /dev/null @@ -1,147 +0,0 @@ -#include "SABER_params.h" -#include "pack_unpack.h" -#include "poly.h" -#include - -void PQCLEAN_SABER_AVX2_POLT2BS(uint8_t bytes[SABER_SCALEBYTES_KEM], const poly *data) { - size_t j; - const uint16_t *in = data->coeffs; - uint8_t *out = bytes; - for (j = 0; j < SABER_N / 2; j++) { - out[0] = (uint8_t) ((in[0] & 0x0f) | (in[1] << 4)); - in += 2; - out += 1; - } -} - -void PQCLEAN_SABER_AVX2_BS2POLT(poly *data, const uint8_t bytes[SABER_SCALEBYTES_KEM]) { - /* This function does not reduce its output mod T */ - size_t j; - const uint8_t *in = bytes; - uint16_t *out = data->coeffs; - for (j = 0; j < SABER_N / 2; j++) { - out[0] = in[0]; - out[1] = in[0] >> 4; - in += 1; - out += 2; - } -} - -static void POLq2BS(uint8_t bytes[SABER_POLYBYTES], const poly *data) { - size_t j; - const uint16_t *in = data->coeffs; - uint8_t *out = bytes; - for (j = 0; j < SABER_N / 8; j++) { - out[0] = (uint8_t) (in[0]); - out[1] = (uint8_t) (((in[0] >> 8) & 0x1f) | (in[1] << 5)); - out[2] = (uint8_t) (in[1] >> 3); - out[3] = (uint8_t) (((in[1] >> 11) & 0x03) | (in[2] << 2)); - out[4] = (uint8_t) (((in[2] >> 6) & 0x7f) | (in[3] << 7)); - out[5] = (uint8_t) (in[3] >> 1); - out[6] = (uint8_t) (((in[3] >> 9) & 0x0f) | (in[4] << 4)); - out[7] = (uint8_t) (in[4] >> 4); - out[8] = (uint8_t) (((in[4] >> 12) & 0x01) | (in[5] << 1)); - out[9] = (uint8_t) (((in[5] >> 7) & 0x3f) | (in[6] << 6)); - out[10] = (uint8_t) (in[6] >> 2); - out[11] = (uint8_t) (((in[6] >> 10) & 0x07) | (in[7] << 3)); - out[12] = (uint8_t) (in[7] >> 5); - in += 8; - out += 13; - } -} - -static void BS2POLq(poly *data, const uint8_t bytes[SABER_POLYBYTES]) { - /* This function does not reduce its output mod Q */ - size_t j; - const uint8_t *in = bytes; - uint16_t *out = data->coeffs; - for (j = 0; j < SABER_N / 8; j++) { - out[0] = (in[0]) | (in[1] << 8); - out[1] = (in[1] >> 5) | (in[2] << 3) | (in[3] << 11); - out[2] = (in[3] >> 2) | (in[4] << 6); - out[3] = (in[4] >> 7) | (in[5] << 1) | (in[6] << 9); - out[4] = (in[6] >> 4) | (in[7] << 4) | (in[8] << 12); - out[5] = (in[8] >> 1) | (in[9] << 7); - out[6] = (in[9] >> 6) | (in[10] << 2) | (in[11] << 10); - out[7] = (in[11] >> 3) | (in[12] << 5); - in += 13; - out += 8; - } -} - -static void POLp2BS(uint8_t bytes[SABER_POLYCOMPRESSEDBYTES], const poly *data) { - size_t j; - const uint16_t *in = data->coeffs; - uint8_t *out = bytes; - for (j = 0; j < SABER_N / 4; j++) { - out[0] = (uint8_t) (in[0]); - out[1] = (uint8_t) (((in[0] >> 8) & 0x03) | (in[1] << 2)); - out[2] = (uint8_t) (((in[1] >> 6) & 0x0f) | (in[2] << 4)); - out[3] = (uint8_t) (((in[2] >> 4) & 0x3f) | (in[3] << 6)); - out[4] = (uint8_t) (in[3] >> 2); - in += 4; - out += 5; - } -} - -static void BS2POLp(poly *data, const uint8_t bytes[SABER_POLYCOMPRESSEDBYTES]) { - size_t j; - const uint8_t *in = bytes; - uint16_t *out = data->coeffs; - for (j = 0; j < SABER_N / 4; j++) { - out[0] = in[0] | (in[1] << 8); - out[1] = (in[1] >> 2) | (in[2] << 6); - out[2] = (in[2] >> 4) | (in[3] << 4); - out[3] = (in[3] >> 6) | (in[4] << 2); - in += 5; - out += 4; - } -} - -void PQCLEAN_SABER_AVX2_POLVECq2BS(uint8_t bytes[SABER_POLYVECBYTES], const poly data[SABER_L]) { - size_t i; - for (i = 0; i < SABER_L; i++) { - POLq2BS(bytes + i * SABER_POLYBYTES, &data[i]); - } -} - -void PQCLEAN_SABER_AVX2_BS2POLVECq(poly data[SABER_L], const uint8_t bytes[SABER_POLYVECBYTES]) { - size_t i; - for (i = 0; i < SABER_L; i++) { - BS2POLq(&data[i], bytes + i * SABER_POLYBYTES); - } -} - -void PQCLEAN_SABER_AVX2_POLVECp2BS(uint8_t bytes[SABER_POLYVECCOMPRESSEDBYTES], const poly data[SABER_L]) { - size_t i; - for (i = 0; i < SABER_L; i++) { - POLp2BS(bytes + i * SABER_POLYCOMPRESSEDBYTES, &data[i]); - } -} - -void PQCLEAN_SABER_AVX2_BS2POLVECp(poly data[SABER_L], const uint8_t bytes[SABER_POLYVECCOMPRESSEDBYTES]) { - size_t i; - for (i = 0; i < SABER_L; i++) { - BS2POLp(&data[i], bytes + i * SABER_POLYCOMPRESSEDBYTES); - } -} - -void PQCLEAN_SABER_AVX2_BS2POLmsg(poly *data, const uint8_t bytes[SABER_KEYBYTES]) { - size_t i, j; - for (j = 0; j < SABER_KEYBYTES; j++) { - for (i = 0; i < 8; i++) { - data->coeffs[j * 8 + i] = ((bytes[j] >> i) & 0x01); - } - } -} - -void PQCLEAN_SABER_AVX2_POLmsg2BS(uint8_t bytes[SABER_KEYBYTES], const poly *data) { - size_t i, j; - memset(bytes, 0, SABER_KEYBYTES); - - for (j = 0; j < SABER_KEYBYTES; j++) { - for (i = 0; i < 8; i++) { - bytes[j] = bytes[j] | ((data->coeffs[j * 8 + i] & 0x01) << i); - } - } -} diff --git a/src/kem/saber/saber/avx2/pack_unpack.h b/src/kem/saber/saber/avx2/pack_unpack.h deleted file mode 100644 index 0965bbcd..00000000 --- a/src/kem/saber/saber/avx2/pack_unpack.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef PACK_UNPACK_H -#define PACK_UNPACK_H -#include "SABER_params.h" -#include "poly.h" -#include -#include - -void PQCLEAN_SABER_AVX2_POLT2BS(uint8_t bytes[SABER_SCALEBYTES_KEM], const poly *data); - -void PQCLEAN_SABER_AVX2_BS2POLT(poly *data, const uint8_t bytes[SABER_SCALEBYTES_KEM]); - - -void PQCLEAN_SABER_AVX2_POLVECq2BS(uint8_t bytes[SABER_POLYVECBYTES], const poly data[SABER_L]); - -void PQCLEAN_SABER_AVX2_POLVECp2BS(uint8_t bytes[SABER_POLYVECCOMPRESSEDBYTES], const poly data[SABER_L]); - - -void PQCLEAN_SABER_AVX2_BS2POLVECq(poly data[SABER_L], const uint8_t bytes[SABER_POLYVECBYTES]); - -void PQCLEAN_SABER_AVX2_BS2POLVECp(poly data[SABER_L], const uint8_t bytes[SABER_POLYVECCOMPRESSEDBYTES]); - - -void PQCLEAN_SABER_AVX2_BS2POLmsg(poly *data, const uint8_t bytes[SABER_KEYBYTES]); - -void PQCLEAN_SABER_AVX2_POLmsg2BS(uint8_t bytes[SABER_KEYBYTES], const poly *data); - - -#endif diff --git a/src/kem/saber/saber/avx2/poly.c b/src/kem/saber/saber/avx2/poly.c deleted file mode 100644 index 1bc268b6..00000000 --- a/src/kem/saber/saber/avx2/poly.c +++ /dev/null @@ -1,62 +0,0 @@ -#include "cbd.h" -#include "fips202.h" -#include "pack_unpack.h" -#include "poly.h" - - -void PQCLEAN_SABER_AVX2_MatrixVectorMul(poly c[SABER_L], const poly A[SABER_L][SABER_L], const toom4_points s_eval[SABER_L], int transpose) { - size_t i, j; - toom4_points_product c_eval; - - if (transpose) { - for (i = 0; i < SABER_L; i++) { - PQCLEAN_SABER_AVX2_toom4_mul_A_by_B_eval(&c_eval, &A[0][i], &s_eval[0], 0); - for (j = 1; j < SABER_L; j++) { - PQCLEAN_SABER_AVX2_toom4_mul_A_by_B_eval(&c_eval, &A[j][i], &s_eval[j], 1); - } - PQCLEAN_SABER_AVX2_toom4_interp(&c[i], &c_eval); - } - } else { - for (i = 0; i < SABER_L; i++) { - PQCLEAN_SABER_AVX2_toom4_mul_A_by_B_eval(&c_eval, &A[i][0], &s_eval[0], 0); - for (j = 1; j < SABER_L; j++) { - PQCLEAN_SABER_AVX2_toom4_mul_A_by_B_eval(&c_eval, &A[i][j], &s_eval[j], 1); - } - PQCLEAN_SABER_AVX2_toom4_interp(&c[i], &c_eval); - } - } -} - -void PQCLEAN_SABER_AVX2_InnerProd(poly *c, const poly b[SABER_L], const toom4_points s_eval[SABER_L]) { - size_t i; - toom4_points_product c_eval; //Holds results for 9 Karatsuba at a time - - PQCLEAN_SABER_AVX2_toom4_mul_A_by_B_eval(&c_eval, &b[0], &s_eval[0], 0); - for (i = 1; i < SABER_L; i++) { - PQCLEAN_SABER_AVX2_toom4_mul_A_by_B_eval(&c_eval, &b[i], &s_eval[i], 1); - } - - PQCLEAN_SABER_AVX2_toom4_interp(c, &c_eval); -} - -void PQCLEAN_SABER_AVX2_GenMatrix(poly A[SABER_L][SABER_L], const uint8_t seed[SABER_SEEDBYTES]) { - size_t i; - uint8_t buf[SABER_L * SABER_POLYVECBYTES]; - - shake128(buf, sizeof(buf), seed, SABER_SEEDBYTES); - - for (i = 0; i < SABER_L; i++) { - PQCLEAN_SABER_AVX2_BS2POLVECq(A[i], buf + i * SABER_POLYVECBYTES); - } -} - -void PQCLEAN_SABER_AVX2_GenSecret(poly s[SABER_L], const uint8_t seed[SABER_NOISESEEDBYTES]) { - size_t i; - uint8_t buf[SABER_L * SABER_POLYCOINBYTES]; - - shake128(buf, sizeof(buf), seed, SABER_NOISESEEDBYTES); - - for (i = 0; i < SABER_L; i++) { - PQCLEAN_SABER_AVX2_cbd(s[i].coeffs, buf + i * SABER_POLYCOINBYTES); - } -} diff --git a/src/kem/saber/saber/avx2/poly.h b/src/kem/saber/saber/avx2/poly.h deleted file mode 100644 index 188e31e7..00000000 --- a/src/kem/saber/saber/avx2/poly.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef POLY_H -#define POLY_H -#include "SABER_params.h" -#include -#include - -typedef union { - uint16_t coeffs[SABER_N]; - __m256i dummy; -} poly; - -typedef union { - uint16_t coeffs[4 * SABER_N]; - __m256i dummy; -} toom4_points; - -typedef union { - uint16_t coeffs[8 * SABER_N]; - __m256i dummy; -} toom4_points_product; - -void PQCLEAN_SABER_AVX2_MatrixVectorMul(poly c[SABER_L], const poly A[SABER_L][SABER_L], const toom4_points s_eval[SABER_L], int transpose); - -void PQCLEAN_SABER_AVX2_InnerProd(poly *c, const poly b[SABER_L], const toom4_points s_eval[SABER_L]); - -void PQCLEAN_SABER_AVX2_GenMatrix(poly a[SABER_L][SABER_L], const uint8_t seed[SABER_SEEDBYTES]); - -void PQCLEAN_SABER_AVX2_GenSecret(poly s[SABER_L], const uint8_t seed[SABER_NOISESEEDBYTES]); - - -void PQCLEAN_SABER_AVX2_toom4_interp(poly *res_avx, const toom4_points_product *c_eval); - -void PQCLEAN_SABER_AVX2_toom4_eval(toom4_points *b_eval, const poly *b); - -void PQCLEAN_SABER_AVX2_toom4_mul_A_by_B_eval(toom4_points_product *c_eval, const poly *a_avx, const toom4_points *b_eval, int accumulate); - - -#endif diff --git a/src/kem/saber/saber/avx2/poly_mul.c b/src/kem/saber/saber/avx2/poly_mul.c deleted file mode 100644 index 2090e64f..00000000 --- a/src/kem/saber/saber/avx2/poly_mul.c +++ /dev/null @@ -1,1496 +0,0 @@ -#include "SABER_params.h" -#include "poly.h" - - -#define L (SABER_N / 64) - -/* 16 word parallel multiply */ -#define mul(a, b) _mm256_mullo_epi16((a), (b)) -/* 16 word parallel multiply and accumulate */ -#define mac(a, b, c) _mm256_add_epi16(_mm256_mullo_epi16((a), (b)), (c)) - -static void schoolbook16x16(__m256i *c, const __m256i *a, const __m256i *b) { - __m256i a0, a1, a2, a3; - __m256i b0, b1, b2, b3; - __m256i t0; - a0 = a[0]; - a1 = a[1]; - a2 = a[2]; - a3 = a[3]; - b0 = b[0]; - b1 = b[1]; - b2 = b[2]; - b3 = b[3]; - c[0] = mul(a0, b0); - t0 = mul(a0, b1); - c[1] = mac(a1, b0, t0); - t0 = mul(a0, b2); - t0 = mac(a1, b1, t0); - c[2] = mac(a2, b0, t0); - t0 = mul(a0, b3); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[3] = mac(a3, b0, t0); - t0 = mul(a1, b3); - t0 = mac(a2, b2, t0); - c[4] = mac(a3, b1, t0); - t0 = mul(a2, b3); - c[5] = mac(a3, b2, t0); - c[6] = mul(a3, b3); - b0 = b[4]; - b1 = b[5]; - b2 = b[6]; - b3 = b[7]; - c[4] = mac(a0, b0, c[4]); - t0 = mac(a0, b1, c[5]); - c[5] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[6]); - t0 = mac(a1, b1, t0); - c[6] = mac(a2, b0, t0); - t0 = mul(a0, b3); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[7] = mac(a3, b0, t0); - t0 = mul(a1, b3); - t0 = mac(a2, b2, t0); - c[8] = mac(a3, b1, t0); - t0 = mul(a2, b3); - c[9] = mac(a3, b2, t0); - c[10] = mul(a3, b3); - b0 = b[8]; - b1 = b[9]; - b2 = b[10]; - b3 = b[11]; - c[8] = mac(a0, b0, c[8]); - t0 = mac(a0, b1, c[9]); - c[9] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[10]); - t0 = mac(a1, b1, t0); - c[10] = mac(a2, b0, t0); - t0 = mul(a0, b3); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[11] = mac(a3, b0, t0); - t0 = mul(a1, b3); - t0 = mac(a2, b2, t0); - c[12] = mac(a3, b1, t0); - t0 = mul(a2, b3); - c[13] = mac(a3, b2, t0); - c[14] = mul(a3, b3); - b0 = b[12]; - b1 = b[13]; - b2 = b[14]; - b3 = b[15]; - c[12] = mac(a0, b0, c[12]); - t0 = mac(a0, b1, c[13]); - c[13] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[14]); - t0 = mac(a1, b1, t0); - c[14] = mac(a2, b0, t0); - t0 = mul(a0, b3); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[15] = mac(a3, b0, t0); - t0 = mul(a1, b3); - t0 = mac(a2, b2, t0); - c[16] = mac(a3, b1, t0); - t0 = mul(a2, b3); - c[17] = mac(a3, b2, t0); - c[18] = mul(a3, b3); - a0 = a[4]; - a1 = a[5]; - a2 = a[6]; - a3 = a[7]; - c[16] = mac(a0, b0, c[16]); - t0 = mac(a0, b1, c[17]); - c[17] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[18]); - t0 = mac(a1, b1, t0); - c[18] = mac(a2, b0, t0); - t0 = mul(a0, b3); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[19] = mac(a3, b0, t0); - t0 = mul(a1, b3); - t0 = mac(a2, b2, t0); - c[20] = mac(a3, b1, t0); - t0 = mul(a2, b3); - c[21] = mac(a3, b2, t0); - c[22] = mul(a3, b3); - b0 = b[8]; - b1 = b[9]; - b2 = b[10]; - b3 = b[11]; - c[12] = mac(a0, b0, c[12]); - t0 = mac(a0, b1, c[13]); - c[13] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[14]); - t0 = mac(a1, b1, t0); - c[14] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[15]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[15] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[16]); - t0 = mac(a2, b2, t0); - c[16] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[17]); - c[17] = mac(a3, b2, t0); - c[18] = mac(a3, b3, c[18]); - b0 = b[4]; - b1 = b[5]; - b2 = b[6]; - b3 = b[7]; - c[8] = mac(a0, b0, c[8]); - t0 = mac(a0, b1, c[9]); - c[9] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[10]); - t0 = mac(a1, b1, t0); - c[10] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[11]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[11] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[12]); - t0 = mac(a2, b2, t0); - c[12] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[13]); - c[13] = mac(a3, b2, t0); - c[14] = mac(a3, b3, c[14]); - b0 = b[0]; - b1 = b[1]; - b2 = b[2]; - b3 = b[3]; - c[4] = mac(a0, b0, c[4]); - t0 = mac(a0, b1, c[5]); - c[5] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[6]); - t0 = mac(a1, b1, t0); - c[6] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[7]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[7] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[8]); - t0 = mac(a2, b2, t0); - c[8] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[9]); - c[9] = mac(a3, b2, t0); - c[10] = mac(a3, b3, c[10]); - a0 = a[8]; - a1 = a[9]; - a2 = a[10]; - a3 = a[11]; - c[8] = mac(a0, b0, c[8]); - t0 = mac(a0, b1, c[9]); - c[9] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[10]); - t0 = mac(a1, b1, t0); - c[10] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[11]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[11] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[12]); - t0 = mac(a2, b2, t0); - c[12] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[13]); - c[13] = mac(a3, b2, t0); - c[14] = mac(a3, b3, c[14]); - b0 = b[4]; - b1 = b[5]; - b2 = b[6]; - b3 = b[7]; - c[12] = mac(a0, b0, c[12]); - t0 = mac(a0, b1, c[13]); - c[13] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[14]); - t0 = mac(a1, b1, t0); - c[14] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[15]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[15] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[16]); - t0 = mac(a2, b2, t0); - c[16] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[17]); - c[17] = mac(a3, b2, t0); - c[18] = mac(a3, b3, c[18]); - b0 = b[8]; - b1 = b[9]; - b2 = b[10]; - b3 = b[11]; - c[16] = mac(a0, b0, c[16]); - t0 = mac(a0, b1, c[17]); - c[17] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[18]); - t0 = mac(a1, b1, t0); - c[18] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[19]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[19] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[20]); - t0 = mac(a2, b2, t0); - c[20] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[21]); - c[21] = mac(a3, b2, t0); - c[22] = mac(a3, b3, c[22]); - b0 = b[12]; - b1 = b[13]; - b2 = b[14]; - b3 = b[15]; - c[20] = mac(a0, b0, c[20]); - t0 = mac(a0, b1, c[21]); - c[21] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[22]); - t0 = mac(a1, b1, t0); - c[22] = mac(a2, b0, t0); - t0 = mul(a0, b3); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[23] = mac(a3, b0, t0); - t0 = mul(a1, b3); - t0 = mac(a2, b2, t0); - c[24] = mac(a3, b1, t0); - t0 = mul(a2, b3); - c[25] = mac(a3, b2, t0); - c[26] = mul(a3, b3); - a0 = a[12]; - a1 = a[13]; - a2 = a[14]; - a3 = a[15]; - c[24] = mac(a0, b0, c[24]); - t0 = mac(a0, b1, c[25]); - c[25] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[26]); - t0 = mac(a1, b1, t0); - c[26] = mac(a2, b0, t0); - t0 = mul(a0, b3); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[27] = mac(a3, b0, t0); - t0 = mul(a1, b3); - t0 = mac(a2, b2, t0); - c[28] = mac(a3, b1, t0); - t0 = mul(a2, b3); - c[29] = mac(a3, b2, t0); - c[30] = mul(a3, b3); - b0 = b[8]; - b1 = b[9]; - b2 = b[10]; - b3 = b[11]; - c[20] = mac(a0, b0, c[20]); - t0 = mac(a0, b1, c[21]); - c[21] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[22]); - t0 = mac(a1, b1, t0); - c[22] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[23]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[23] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[24]); - t0 = mac(a2, b2, t0); - c[24] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[25]); - c[25] = mac(a3, b2, t0); - c[26] = mac(a3, b3, c[26]); - b0 = b[4]; - b1 = b[5]; - b2 = b[6]; - b3 = b[7]; - c[16] = mac(a0, b0, c[16]); - t0 = mac(a0, b1, c[17]); - c[17] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[18]); - t0 = mac(a1, b1, t0); - c[18] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[19]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[19] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[20]); - t0 = mac(a2, b2, t0); - c[20] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[21]); - c[21] = mac(a3, b2, t0); - c[22] = mac(a3, b3, c[22]); - b0 = b[0]; - b1 = b[1]; - b2 = b[2]; - b3 = b[3]; - c[12] = mac(a0, b0, c[12]); - t0 = mac(a0, b1, c[13]); - c[13] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[14]); - t0 = mac(a1, b1, t0); - c[14] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[15]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[15] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[16]); - t0 = mac(a2, b2, t0); - c[16] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[17]); - c[17] = mac(a3, b2, t0); - c[18] = mac(a3, b3, c[18]); - c[31] = _mm256_setzero_si256(); -} - -static void schoolbook16x16_acc(__m256i *c, const __m256i *a, const __m256i *b) { - __m256i a0, a1, a2, a3; - __m256i b0, b1, b2, b3; - __m256i t0; - a0 = a[0]; - a1 = a[1]; - a2 = a[2]; - a3 = a[3]; - b0 = b[0]; - b1 = b[1]; - b2 = b[2]; - b3 = b[3]; - c[0] = mac(a0, b0, c[0]); - t0 = mac(a0, b1, c[1]); - c[1] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[2]); - t0 = mac(a1, b1, t0); - c[2] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[3]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[3] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[4]); - t0 = mac(a2, b2, t0); - c[4] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[5]); - c[5] = mac(a3, b2, t0); - c[6] = mac(a3, b3, c[6]); - b0 = b[4]; - b1 = b[5]; - b2 = b[6]; - b3 = b[7]; - c[4] = mac(a0, b0, c[4]); - t0 = mac(a0, b1, c[5]); - c[5] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[6]); - t0 = mac(a1, b1, t0); - c[6] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[7]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[7] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[8]); - t0 = mac(a2, b2, t0); - c[8] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[9]); - c[9] = mac(a3, b2, t0); - c[10] = mac(a3, b3, c[10]); - b0 = b[8]; - b1 = b[9]; - b2 = b[10]; - b3 = b[11]; - c[8] = mac(a0, b0, c[8]); - t0 = mac(a0, b1, c[9]); - c[9] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[10]); - t0 = mac(a1, b1, t0); - c[10] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[11]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[11] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[12]); - t0 = mac(a2, b2, t0); - c[12] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[13]); - c[13] = mac(a3, b2, t0); - c[14] = mac(a3, b3, c[14]); - b0 = b[12]; - b1 = b[13]; - b2 = b[14]; - b3 = b[15]; - c[12] = mac(a0, b0, c[12]); - t0 = mac(a0, b1, c[13]); - c[13] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[14]); - t0 = mac(a1, b1, t0); - c[14] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[15]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[15] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[16]); - t0 = mac(a2, b2, t0); - c[16] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[17]); - c[17] = mac(a3, b2, t0); - c[18] = mac(a3, b3, c[18]); - a0 = a[4]; - a1 = a[5]; - a2 = a[6]; - a3 = a[7]; - c[16] = mac(a0, b0, c[16]); - t0 = mac(a0, b1, c[17]); - c[17] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[18]); - t0 = mac(a1, b1, t0); - c[18] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[19]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[19] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[20]); - t0 = mac(a2, b2, t0); - c[20] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[21]); - c[21] = mac(a3, b2, t0); - c[22] = mac(a3, b3, c[22]); - b0 = b[8]; - b1 = b[9]; - b2 = b[10]; - b3 = b[11]; - c[12] = mac(a0, b0, c[12]); - t0 = mac(a0, b1, c[13]); - c[13] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[14]); - t0 = mac(a1, b1, t0); - c[14] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[15]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[15] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[16]); - t0 = mac(a2, b2, t0); - c[16] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[17]); - c[17] = mac(a3, b2, t0); - c[18] = mac(a3, b3, c[18]); - b0 = b[4]; - b1 = b[5]; - b2 = b[6]; - b3 = b[7]; - c[8] = mac(a0, b0, c[8]); - t0 = mac(a0, b1, c[9]); - c[9] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[10]); - t0 = mac(a1, b1, t0); - c[10] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[11]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[11] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[12]); - t0 = mac(a2, b2, t0); - c[12] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[13]); - c[13] = mac(a3, b2, t0); - c[14] = mac(a3, b3, c[14]); - b0 = b[0]; - b1 = b[1]; - b2 = b[2]; - b3 = b[3]; - c[4] = mac(a0, b0, c[4]); - t0 = mac(a0, b1, c[5]); - c[5] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[6]); - t0 = mac(a1, b1, t0); - c[6] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[7]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[7] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[8]); - t0 = mac(a2, b2, t0); - c[8] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[9]); - c[9] = mac(a3, b2, t0); - c[10] = mac(a3, b3, c[10]); - a0 = a[8]; - a1 = a[9]; - a2 = a[10]; - a3 = a[11]; - c[8] = mac(a0, b0, c[8]); - t0 = mac(a0, b1, c[9]); - c[9] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[10]); - t0 = mac(a1, b1, t0); - c[10] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[11]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[11] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[12]); - t0 = mac(a2, b2, t0); - c[12] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[13]); - c[13] = mac(a3, b2, t0); - c[14] = mac(a3, b3, c[14]); - b0 = b[4]; - b1 = b[5]; - b2 = b[6]; - b3 = b[7]; - c[12] = mac(a0, b0, c[12]); - t0 = mac(a0, b1, c[13]); - c[13] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[14]); - t0 = mac(a1, b1, t0); - c[14] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[15]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[15] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[16]); - t0 = mac(a2, b2, t0); - c[16] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[17]); - c[17] = mac(a3, b2, t0); - c[18] = mac(a3, b3, c[18]); - b0 = b[8]; - b1 = b[9]; - b2 = b[10]; - b3 = b[11]; - c[16] = mac(a0, b0, c[16]); - t0 = mac(a0, b1, c[17]); - c[17] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[18]); - t0 = mac(a1, b1, t0); - c[18] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[19]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[19] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[20]); - t0 = mac(a2, b2, t0); - c[20] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[21]); - c[21] = mac(a3, b2, t0); - c[22] = mac(a3, b3, c[22]); - b0 = b[12]; - b1 = b[13]; - b2 = b[14]; - b3 = b[15]; - c[20] = mac(a0, b0, c[20]); - t0 = mac(a0, b1, c[21]); - c[21] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[22]); - t0 = mac(a1, b1, t0); - c[22] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[23]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[23] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[24]); - t0 = mac(a2, b2, t0); - c[24] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[25]); - c[25] = mac(a3, b2, t0); - c[26] = mac(a3, b3, c[26]); - a0 = a[12]; - a1 = a[13]; - a2 = a[14]; - a3 = a[15]; - c[24] = mac(a0, b0, c[24]); - t0 = mac(a0, b1, c[25]); - c[25] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[26]); - t0 = mac(a1, b1, t0); - c[26] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[27]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[27] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[28]); - t0 = mac(a2, b2, t0); - c[28] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[29]); - c[29] = mac(a3, b2, t0); - c[30] = mac(a3, b3, c[30]); - b0 = b[8]; - b1 = b[9]; - b2 = b[10]; - b3 = b[11]; - c[20] = mac(a0, b0, c[20]); - t0 = mac(a0, b1, c[21]); - c[21] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[22]); - t0 = mac(a1, b1, t0); - c[22] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[23]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[23] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[24]); - t0 = mac(a2, b2, t0); - c[24] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[25]); - c[25] = mac(a3, b2, t0); - c[26] = mac(a3, b3, c[26]); - b0 = b[4]; - b1 = b[5]; - b2 = b[6]; - b3 = b[7]; - c[16] = mac(a0, b0, c[16]); - t0 = mac(a0, b1, c[17]); - c[17] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[18]); - t0 = mac(a1, b1, t0); - c[18] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[19]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[19] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[20]); - t0 = mac(a2, b2, t0); - c[20] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[21]); - c[21] = mac(a3, b2, t0); - c[22] = mac(a3, b3, c[22]); - b0 = b[0]; - b1 = b[1]; - b2 = b[2]; - b3 = b[3]; - c[12] = mac(a0, b0, c[12]); - t0 = mac(a0, b1, c[13]); - c[13] = mac(a1, b0, t0); - t0 = mac(a0, b2, c[14]); - t0 = mac(a1, b1, t0); - c[14] = mac(a2, b0, t0); - t0 = mac(a0, b3, c[15]); - t0 = mac(a1, b2, t0); - t0 = mac(a2, b1, t0); - c[15] = mac(a3, b0, t0); - t0 = mac(a1, b3, c[16]); - t0 = mac(a2, b2, t0); - c[16] = mac(a3, b1, t0); - t0 = mac(a2, b3, c[17]); - c[17] = mac(a3, b2, t0); - c[18] = mac(a3, b3, c[18]); -} - - -static void transpose(__m256i *M) { - __m256i r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11; - __m256i temp, temp0, temp1, temp2; - - r0 = _mm256_unpacklo_epi16(M[0], M[1]); - r1 = _mm256_unpacklo_epi16(M[2], M[3]); - r2 = _mm256_unpacklo_epi16(M[4], M[5]); - r3 = _mm256_unpacklo_epi16(M[6], M[7]); - r4 = _mm256_unpacklo_epi16(M[8], M[9]); - r5 = _mm256_unpacklo_epi16(M[10], M[11]); - r6 = _mm256_unpacklo_epi16(M[12], M[13]); - r7 = _mm256_unpacklo_epi16(M[14], M[15]); - - temp = _mm256_unpacklo_epi32(r0, r1); - temp0 = _mm256_unpacklo_epi32(r2, r3); - temp1 = _mm256_unpacklo_epi32(r4, r5); - temp2 = _mm256_unpacklo_epi32(r6, r7); - - r8 = _mm256_unpackhi_epi32(r0, r1); - r9 = _mm256_unpackhi_epi32(r2, r3); - r10 = _mm256_unpackhi_epi32(r4, r5); - r11 = _mm256_unpackhi_epi32(r6, r7); - - r0 = _mm256_unpacklo_epi64(temp, temp0); - r2 = _mm256_unpackhi_epi64(temp, temp0); - r1 = _mm256_unpacklo_epi64(temp1, temp2); - r3 = _mm256_unpackhi_epi64(temp1, temp2); - - temp = _mm256_unpackhi_epi16(M[0], M[1]); - temp0 = _mm256_unpackhi_epi16(M[2], M[3]); - temp1 = _mm256_unpackhi_epi16(M[4], M[5]); - temp2 = _mm256_unpackhi_epi16(M[6], M[7]); - - r4 = _mm256_unpackhi_epi16(M[8], M[9]); - M[0] = _mm256_permute2f128_si256(r0, r1, 0x20); - M[8] = _mm256_permute2f128_si256(r0, r1, 0x31); - M[1] = _mm256_permute2f128_si256(r2, r3, 0x20); - M[9] = _mm256_permute2f128_si256(r2, r3, 0x31); - r5 = _mm256_unpackhi_epi16(M[10], M[11]); - r6 = _mm256_unpackhi_epi16(M[12], M[13]); - r7 = _mm256_unpackhi_epi16(M[14], M[15]); - - r0 = _mm256_unpacklo_epi64(r8, r9); - r1 = _mm256_unpacklo_epi64(r10, r11); - r2 = _mm256_unpackhi_epi64(r8, r9); - r3 = _mm256_unpackhi_epi64(r10, r11); - - M[3] = _mm256_permute2f128_si256(r2, r3, 0x20); - M[11] = _mm256_permute2f128_si256(r2, r3, 0x31); - M[2] = _mm256_permute2f128_si256(r0, r1, 0x20); - M[10] = _mm256_permute2f128_si256(r0, r1, 0x31); - - r0 = _mm256_unpacklo_epi32(temp, temp0); - r1 = _mm256_unpacklo_epi32(temp1, temp2); - r2 = _mm256_unpacklo_epi32(r4, r5); - r3 = _mm256_unpacklo_epi32(r6, r7); - - r8 = _mm256_unpacklo_epi64(r0, r1); - r10 = _mm256_unpackhi_epi64(r0, r1); - r9 = _mm256_unpacklo_epi64(r2, r3); - r11 = _mm256_unpackhi_epi64(r2, r3); - - M[4] = _mm256_permute2f128_si256(r8, r9, 0x20); - M[12] = _mm256_permute2f128_si256(r8, r9, 0x31); - M[5] = _mm256_permute2f128_si256(r10, r11, 0x20); - M[13] = _mm256_permute2f128_si256(r10, r11, 0x31); - - r0 = _mm256_unpackhi_epi32(temp, temp0); - r1 = _mm256_unpackhi_epi32(temp1, temp2); - r2 = _mm256_unpackhi_epi32(r4, r5); - r3 = _mm256_unpackhi_epi32(r6, r7); - - r4 = _mm256_unpacklo_epi64(r0, r1); - r6 = _mm256_unpackhi_epi64(r0, r1); - r5 = _mm256_unpacklo_epi64(r2, r3); - r7 = _mm256_unpackhi_epi64(r2, r3); - - M[6] = _mm256_permute2f128_si256(r4, r5, 0x20); - M[14] = _mm256_permute2f128_si256(r4, r5, 0x31); - M[7] = _mm256_permute2f128_si256(r6, r7, 0x20); - M[15] = _mm256_permute2f128_si256(r6, r7, 0x31); -} - -static void batch_64coefficient_multiplications(toom4_points_product *c_eval, const __m256i *a, const toom4_points *b_eval, int accumulate) { - toom4_points a_eval;// Holds evaluation (a & b) for 7 Karatsuba at a time - __m256i r0_avx, r1_avx, r2_avx, r3_avx; - __m256i *va = (__m256i *)a_eval.coeffs; - __m256i *vb = (__m256i *)b_eval->coeffs; - __m256i *vc = (__m256i *)c_eval->coeffs; - - //------------------AVX evaluation for 1st poly----------------------- - r0_avx = a[0 * L + 0]; - r1_avx = a[0 * L + 1]; - r2_avx = a[0 * L + 2]; - r3_avx = a[0 * L + 3]; - - va[0] = r0_avx; - va[1] = r1_avx; - va[2] = r2_avx; - va[3] = r3_avx; - va[4] = _mm256_add_epi16(r0_avx, r1_avx); - va[5] = _mm256_add_epi16(r2_avx, r3_avx); - va[6] = _mm256_add_epi16(r0_avx, r2_avx); - va[7] = _mm256_add_epi16(r1_avx, r3_avx); - va[8] = _mm256_add_epi16(va[6], va[7]); - //------------------AVX evaluation for 1st poly ends------------------ - - //------------------AVX evaluation for 2nd poly----------------------- - r0_avx = a[1 * L + 0]; - r1_avx = a[1 * L + 1]; - r2_avx = a[1 * L + 2]; - r3_avx = a[1 * L + 3]; - - va[0 + 9] = r0_avx; - va[1 + 9] = r1_avx; - va[2 + 9] = r2_avx; - va[3 + 9] = r3_avx; - va[4 + 9] = _mm256_add_epi16(r0_avx, r1_avx); - va[5 + 9] = _mm256_add_epi16(r2_avx, r3_avx); - va[6 + 9] = _mm256_add_epi16(r0_avx, r2_avx); - va[7 + 9] = _mm256_add_epi16(r1_avx, r3_avx); - va[8 + 9] = _mm256_add_epi16(va[6 + 9], va[7 + 9]); - //------------------AVX evaluation for 2nd poly ends------------------ - - //------------------AVX evaluation for 3rd poly----------------------- - r0_avx = a[2 * L + 0]; - r1_avx = a[2 * L + 1]; - r2_avx = a[2 * L + 2]; - r3_avx = a[2 * L + 3]; - - va[0 + 18] = r0_avx; - va[1 + 18] = r1_avx; - va[2 + 18] = r2_avx; - va[3 + 18] = r3_avx; - va[4 + 18] = _mm256_add_epi16(r0_avx, r1_avx); - va[5 + 18] = _mm256_add_epi16(r2_avx, r3_avx); - va[6 + 18] = _mm256_add_epi16(r0_avx, r2_avx); - va[7 + 18] = _mm256_add_epi16(r1_avx, r3_avx); - va[8 + 18] = _mm256_add_epi16(va[6 + 18], va[7 + 18]); - //------------------AVX evaluation for 3rd poly ends------------------ - - //------------------AVX evaluation for 4th poly----------------------- - r0_avx = a[3 * L + 0]; - r1_avx = a[3 * L + 1]; - r2_avx = a[3 * L + 2]; - r3_avx = a[3 * L + 3]; - - va[0 + 27] = r0_avx; - va[1 + 27] = r1_avx; - va[2 + 27] = r2_avx; - va[3 + 27] = r3_avx; - va[4 + 27] = _mm256_add_epi16(r0_avx, r1_avx); - va[5 + 27] = _mm256_add_epi16(r2_avx, r3_avx); - va[6 + 27] = _mm256_add_epi16(r0_avx, r2_avx); - va[7 + 27] = _mm256_add_epi16(r1_avx, r3_avx); - va[8 + 27] = _mm256_add_epi16(va[6 + 27], va[7 + 27]); - //------------------AVX evaluation for 4th poly ends------------------ - - //------------------AVX evaluation for 5th poly----------------------- - r0_avx = a[4 * L + 0]; - r1_avx = a[4 * L + 1]; - r2_avx = a[4 * L + 2]; - r3_avx = a[4 * L + 3]; - - va[0 + 36] = r0_avx; - va[1 + 36] = r1_avx; - va[2 + 36] = r2_avx; - va[3 + 36] = r3_avx; - va[4 + 36] = _mm256_add_epi16(r0_avx, r1_avx); - va[5 + 36] = _mm256_add_epi16(r2_avx, r3_avx); - va[6 + 36] = _mm256_add_epi16(r0_avx, r2_avx); - va[7 + 36] = _mm256_add_epi16(r1_avx, r3_avx); - va[8 + 36] = _mm256_add_epi16(va[6 + 36], va[7 + 36]); - //------------------AVX evaluation for 5th poly ends------------------ - - //------------------AVX evaluation for 6th poly----------------------- - r0_avx = a[5 * L + 0]; - r1_avx = a[5 * L + 1]; - r2_avx = a[5 * L + 2]; - r3_avx = a[5 * L + 3]; - - va[0 + 45] = r0_avx; - va[1 + 45] = r1_avx; - va[2 + 45] = r2_avx; - va[3 + 45] = r3_avx; - va[4 + 45] = _mm256_add_epi16(r0_avx, r1_avx); - va[5 + 45] = _mm256_add_epi16(r2_avx, r3_avx); - va[6 + 45] = _mm256_add_epi16(r0_avx, r2_avx); - va[7 + 45] = _mm256_add_epi16(r1_avx, r3_avx); - va[8 + 45] = _mm256_add_epi16(va[6 + 45], va[7 + 45]); - //------------------AVX evaluation for 6th poly ends------------------ - - //------------------AVX evaluation for 7th poly----------------------- - r0_avx = a[6 * L + 0]; - r1_avx = a[6 * L + 1]; - r2_avx = a[6 * L + 2]; - r3_avx = a[6 * L + 3]; - - va[0 + 54] = r0_avx; - va[1 + 54] = r1_avx; - va[2 + 54] = r2_avx; - va[3 + 54] = r3_avx; - va[4 + 54] = _mm256_add_epi16(r0_avx, r1_avx); - va[5 + 54] = _mm256_add_epi16(r2_avx, r3_avx); - va[6 + 54] = _mm256_add_epi16(r0_avx, r2_avx); - va[7 + 54] = _mm256_add_epi16(r1_avx, r3_avx); - va[8 + 54] = _mm256_add_epi16(va[6 + 54], va[7 + 54]); - //------------------AVX evaluation for 7th poly ends------------------ - - //-----------------Forward transposes-------------------------------------- - transpose(va); - transpose(va + 16); - transpose(va + 32); - transpose(va + 48); - //-----------------Forward transposes ends--------------------------------- - - if (accumulate == 0) { - schoolbook16x16(vc, va, vb); - schoolbook16x16(vc + 32, va + 16, vb + 16); - schoolbook16x16(vc + 64, va + 32, vb + 32); - schoolbook16x16(vc + 96, va + 48, vb + 48); - } else { - schoolbook16x16_acc(vc, va, vb); - schoolbook16x16_acc(vc + 32, va + 16, vb + 16); - schoolbook16x16_acc(vc + 64, va + 32, vb + 32); - schoolbook16x16_acc(vc + 96, va + 48, vb + 48); - } -} - -static void karatsuba_eval(__m256i *b_eval, const __m256i *b) { - __m256i r0_avx, r1_avx, r2_avx, r3_avx; - - //-------1st poly---------------------------------------------------- - r0_avx = b[0 * L + 0]; - r1_avx = b[0 * L + 1]; - r2_avx = b[0 * L + 2]; - r3_avx = b[0 * L + 3]; - - b_eval[0] = r0_avx; - b_eval[1] = r1_avx; - b_eval[2] = r2_avx; - b_eval[3] = r3_avx; - b_eval[4] = _mm256_add_epi16(r0_avx, r1_avx); - b_eval[5] = _mm256_add_epi16(r2_avx, r3_avx); - b_eval[6] = _mm256_add_epi16(r0_avx, r2_avx); - b_eval[7] = _mm256_add_epi16(r1_avx, r3_avx); - b_eval[8] = _mm256_add_epi16(b_eval[6], b_eval[7]); - - //-------2nd poly---------------------------------------------------- - r0_avx = b[1 * L + 0]; - r1_avx = b[1 * L + 1]; - r2_avx = b[1 * L + 2]; - r3_avx = b[1 * L + 3]; - - b_eval[0 + 9] = r0_avx; - b_eval[1 + 9] = r1_avx; - b_eval[2 + 9] = r2_avx; - b_eval[3 + 9] = r3_avx; - b_eval[4 + 9] = _mm256_add_epi16(r0_avx, r1_avx); - b_eval[5 + 9] = _mm256_add_epi16(r2_avx, r3_avx); - b_eval[6 + 9] = _mm256_add_epi16(r0_avx, r2_avx); - b_eval[7 + 9] = _mm256_add_epi16(r1_avx, r3_avx); - b_eval[8 + 9] = _mm256_add_epi16(b_eval[6 + 9], b_eval[7 + 9]); - - //-------3rd poly---------------------------------------------------- - r0_avx = b[2 * L + 0]; - r1_avx = b[2 * L + 1]; - r2_avx = b[2 * L + 2]; - r3_avx = b[2 * L + 3]; - - b_eval[0 + 18] = r0_avx; - b_eval[1 + 18] = r1_avx; - b_eval[2 + 18] = r2_avx; - b_eval[3 + 18] = r3_avx; - b_eval[4 + 18] = _mm256_add_epi16(r0_avx, r1_avx); - b_eval[5 + 18] = _mm256_add_epi16(r2_avx, r3_avx); - b_eval[6 + 18] = _mm256_add_epi16(r0_avx, r2_avx); - b_eval[7 + 18] = _mm256_add_epi16(r1_avx, r3_avx); - b_eval[8 + 18] = _mm256_add_epi16(b_eval[6 + 18], b_eval[7 + 18]); - - //-------4th poly---------------------------------------------------- - r0_avx = b[3 * L + 0]; - r1_avx = b[3 * L + 1]; - r2_avx = b[3 * L + 2]; - r3_avx = b[3 * L + 3]; - - b_eval[0 + 27] = r0_avx; - b_eval[1 + 27] = r1_avx; - b_eval[2 + 27] = r2_avx; - b_eval[3 + 27] = r3_avx; - b_eval[4 + 27] = _mm256_add_epi16(r0_avx, r1_avx); - b_eval[5 + 27] = _mm256_add_epi16(r2_avx, r3_avx); - b_eval[6 + 27] = _mm256_add_epi16(r0_avx, r2_avx); - b_eval[7 + 27] = _mm256_add_epi16(r1_avx, r3_avx); - b_eval[8 + 27] = _mm256_add_epi16(b_eval[6 + 27], b_eval[7 + 27]); - - //-------5th poly---------------------------------------------------- - r0_avx = b[4 * L + 0]; - r1_avx = b[4 * L + 1]; - r2_avx = b[4 * L + 2]; - r3_avx = b[4 * L + 3]; - - b_eval[0 + 36] = r0_avx; - b_eval[1 + 36] = r1_avx; - b_eval[2 + 36] = r2_avx; - b_eval[3 + 36] = r3_avx; - b_eval[4 + 36] = _mm256_add_epi16(r0_avx, r1_avx); - b_eval[5 + 36] = _mm256_add_epi16(r2_avx, r3_avx); - b_eval[6 + 36] = _mm256_add_epi16(r0_avx, r2_avx); - b_eval[7 + 36] = _mm256_add_epi16(r1_avx, r3_avx); - b_eval[8 + 36] = _mm256_add_epi16(b_eval[6 + 36], b_eval[7 + 36]); - - //-------6th poly---------------------------------------------------- - r0_avx = b[5 * L + 0]; - r1_avx = b[5 * L + 1]; - r2_avx = b[5 * L + 2]; - r3_avx = b[5 * L + 3]; - - b_eval[0 + 45] = r0_avx; - b_eval[1 + 45] = r1_avx; - b_eval[2 + 45] = r2_avx; - b_eval[3 + 45] = r3_avx; - b_eval[4 + 45] = _mm256_add_epi16(r0_avx, r1_avx); - b_eval[5 + 45] = _mm256_add_epi16(r2_avx, r3_avx); - b_eval[6 + 45] = _mm256_add_epi16(r0_avx, r2_avx); - b_eval[7 + 45] = _mm256_add_epi16(r1_avx, r3_avx); - b_eval[8 + 45] = _mm256_add_epi16(b_eval[6 + 45], b_eval[7 + 45]); - - //-------7th poly---------------------------------------------------- - r0_avx = b[6 * L + 0]; - r1_avx = b[6 * L + 1]; - r2_avx = b[6 * L + 2]; - r3_avx = b[6 * L + 3]; - - b_eval[0 + 54] = r0_avx; - b_eval[1 + 54] = r1_avx; - b_eval[2 + 54] = r2_avx; - b_eval[3 + 54] = r3_avx; - b_eval[4 + 54] = _mm256_add_epi16(r0_avx, r1_avx); - b_eval[5 + 54] = _mm256_add_epi16(r2_avx, r3_avx); - b_eval[6 + 54] = _mm256_add_epi16(r0_avx, r2_avx); - b_eval[7 + 54] = _mm256_add_epi16(r1_avx, r3_avx); - b_eval[8 + 54] = _mm256_add_epi16(b_eval[6 + 54], b_eval[7 + 54]); - - //--------------Evaluating B poly ends------------------------------- - transpose(b_eval); - transpose(b_eval + 16); - transpose(b_eval + 32); - transpose(b_eval + 48); -} - -static void karatsuba_interp(__m256i *result_final0, __m256i *result_final1, __m256i *result_final2, __m256i *result_final3, __m256i *result_final4, __m256i *result_final5, __m256i *result_final6, const __m256i *c_eval) { - __m256i res_avx0, res_avx1, res_avx2, res_avx3, res_avx4, res_avx5, res_avx6, res_avx7; // to hold each 64X64 poly mul results - __m256i temp, c6_avx, c7_avx, c8_avx, c20_avx, c21_avx, c22_avx, c23_avx, c24_avx; - - //------------------------AVX interpolation for 1st poly external------------------- - res_avx0 = c_eval[0]; - res_avx2 = c_eval[1]; - res_avx4 = c_eval[2]; - res_avx6 = c_eval[3]; - c6_avx = c_eval[6]; - c7_avx = c_eval[7]; - - c8_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[8], c6_avx), c7_avx); - - res_avx1 = c_eval[16]; - res_avx3 = c_eval[17]; - res_avx5 = c_eval[18]; - res_avx7 = c_eval[19]; - c22_avx = c_eval[22]; - c23_avx = c_eval[23]; - - c21_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[21], res_avx5), res_avx7); - c24_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[24], c22_avx), c23_avx); - c20_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[20], res_avx1), res_avx3); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[5], res_avx4), res_avx6); - res_avx5 = _mm256_add_epi16(res_avx5, temp); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[4], res_avx0), res_avx2); - res_avx1 = _mm256_add_epi16(res_avx1, temp); - c22_avx = _mm256_add_epi16(c22_avx, c8_avx); - res_avx6 = _mm256_add_epi16(res_avx6, c21_avx); - res_avx2 = _mm256_add_epi16(res_avx2, c20_avx); - c7_avx = _mm256_add_epi16(c7_avx, c24_avx); - c6_avx = _mm256_sub_epi16(_mm256_sub_epi16(c6_avx, res_avx0), res_avx4); - c22_avx = _mm256_sub_epi16(_mm256_sub_epi16(c22_avx, res_avx1), res_avx5); - c7_avx = _mm256_sub_epi16(_mm256_sub_epi16(c7_avx, res_avx2), res_avx6); - c23_avx = _mm256_sub_epi16(_mm256_sub_epi16(c23_avx, res_avx3), res_avx7); - - result_final0[0] = res_avx0; - result_final0[1] = res_avx1; - result_final0[2] = _mm256_add_epi16(res_avx2, c6_avx); - result_final0[3] = _mm256_add_epi16(res_avx3, c22_avx); - result_final0[4] = _mm256_add_epi16(res_avx4, c7_avx); - result_final0[5] = _mm256_add_epi16(res_avx5, c23_avx); - result_final0[6] = res_avx6; - result_final0[7] = res_avx7; - //------------------------AVX interpolation for 1st poly ends-------------- - - - //------------------------AVX interpolation for 2nd poly external------------------- - res_avx0 = c_eval[9]; //c_eval0 - res_avx2 = c_eval[10]; //c_eval1 - res_avx4 = c_eval[11]; //c_eval2 - res_avx6 = c_eval[12]; //c_eval3 - c6_avx = c_eval[15]; //c_eval6 - c7_avx = c_eval[32]; //c_eval7 - - c8_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[33], c6_avx), c7_avx); - - res_avx1 = c_eval[25]; //c_eval0 - res_avx3 = c_eval[26]; //c_eval1 - res_avx5 = c_eval[27]; //c_eval2 - res_avx7 = c_eval[28]; //c_eval3 - c22_avx = c_eval[31]; - c23_avx = c_eval[48]; - - c21_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[30], res_avx5), res_avx7); - c24_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[49], c22_avx), c23_avx); - c20_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[29], res_avx1), res_avx3); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[14], res_avx4), res_avx6); - res_avx5 = _mm256_add_epi16(res_avx5, temp); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[13], res_avx0), res_avx2); - res_avx1 = _mm256_add_epi16(res_avx1, temp); - c22_avx = _mm256_add_epi16(c22_avx, c8_avx); - res_avx6 = _mm256_add_epi16(res_avx6, c21_avx); - res_avx2 = _mm256_add_epi16(res_avx2, c20_avx); - c7_avx = _mm256_add_epi16(c7_avx, c24_avx); - c6_avx = _mm256_sub_epi16(_mm256_sub_epi16(c6_avx, res_avx0), res_avx4); - c22_avx = _mm256_sub_epi16(_mm256_sub_epi16(c22_avx, res_avx1), res_avx5); - c7_avx = _mm256_sub_epi16(_mm256_sub_epi16(c7_avx, res_avx2), res_avx6); - c23_avx = _mm256_sub_epi16(_mm256_sub_epi16(c23_avx, res_avx3), res_avx7); - - result_final1[0] = res_avx0; - result_final1[1] = res_avx1; - result_final1[2] = _mm256_add_epi16(res_avx2, c6_avx); - result_final1[3] = _mm256_add_epi16(res_avx3, c22_avx); - result_final1[4] = _mm256_add_epi16(res_avx4, c7_avx); - result_final1[5] = _mm256_add_epi16(res_avx5, c23_avx); - result_final1[6] = res_avx6; - result_final1[7] = res_avx7; - //------------------------AVX interpolation for 2nd poly ends-------------- - - //------------------------AVX interpolation for 3rd poly external------------------- - res_avx0 = c_eval[34]; //c_eval0 - res_avx2 = c_eval[35]; //c_eval1 - res_avx4 = c_eval[36]; - res_avx6 = c_eval[37]; - c6_avx = c_eval[40]; - c7_avx = c_eval[41]; - - c8_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[42], c6_avx), c7_avx); - - res_avx1 = c_eval[50]; //c_eval0 - res_avx3 = c_eval[51]; //c_eval1 - res_avx5 = c_eval[52]; - res_avx7 = c_eval[53]; - c22_avx = c_eval[56]; - c23_avx = c_eval[57]; - - c21_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[55], res_avx5), res_avx7); - c24_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[58], c22_avx), c23_avx); - c20_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[54], res_avx1), res_avx3); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[39], res_avx4), res_avx6); - res_avx5 = _mm256_add_epi16(res_avx5, temp); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[38], res_avx0), res_avx2); - res_avx1 = _mm256_add_epi16(res_avx1, temp); - c22_avx = _mm256_add_epi16(c22_avx, c8_avx); - res_avx6 = _mm256_add_epi16(res_avx6, c21_avx); - res_avx2 = _mm256_add_epi16(res_avx2, c20_avx); - c7_avx = _mm256_add_epi16(c7_avx, c24_avx); - c6_avx = _mm256_sub_epi16(_mm256_sub_epi16(c6_avx, res_avx0), res_avx4); - c22_avx = _mm256_sub_epi16(_mm256_sub_epi16(c22_avx, res_avx1), res_avx5); - c7_avx = _mm256_sub_epi16(_mm256_sub_epi16(c7_avx, res_avx2), res_avx6); - c23_avx = _mm256_sub_epi16(_mm256_sub_epi16(c23_avx, res_avx3), res_avx7); - - result_final2[0] = res_avx0; - result_final2[1] = res_avx1; - result_final2[2] = _mm256_add_epi16(res_avx2, c6_avx); - result_final2[3] = _mm256_add_epi16(res_avx3, c22_avx); - result_final2[4] = _mm256_add_epi16(res_avx4, c7_avx); - result_final2[5] = _mm256_add_epi16(res_avx5, c23_avx); - result_final2[6] = res_avx6; - result_final2[7] = res_avx7; - //------------------------AVX interpolation for 3rd poly ends-------------- - - //------------------------AVX interpolation for 4th poly external------------------- - res_avx0 = c_eval[43]; - res_avx2 = c_eval[44]; - res_avx4 = c_eval[45]; - res_avx6 = c_eval[46]; - c6_avx = c_eval[65]; - c7_avx = c_eval[66]; - - c8_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[67], c6_avx), c7_avx); - - res_avx1 = c_eval[59]; - res_avx3 = c_eval[60]; - res_avx5 = c_eval[61]; - res_avx7 = c_eval[62]; - c22_avx = c_eval[81]; - c23_avx = c_eval[82]; - - c21_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[80], res_avx5), res_avx7); - c24_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[83], c22_avx), c23_avx); - c20_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[63], res_avx1), res_avx3); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[64], res_avx4), res_avx6); - res_avx5 = _mm256_add_epi16(res_avx5, temp); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[47], res_avx0), res_avx2); - res_avx1 = _mm256_add_epi16(res_avx1, temp); - c22_avx = _mm256_add_epi16(c22_avx, c8_avx); - res_avx6 = _mm256_add_epi16(res_avx6, c21_avx); - res_avx2 = _mm256_add_epi16(res_avx2, c20_avx); - c7_avx = _mm256_add_epi16(c7_avx, c24_avx); - c6_avx = _mm256_sub_epi16(_mm256_sub_epi16(c6_avx, res_avx0), res_avx4); - c22_avx = _mm256_sub_epi16(_mm256_sub_epi16(c22_avx, res_avx1), res_avx5); - c7_avx = _mm256_sub_epi16(_mm256_sub_epi16(c7_avx, res_avx2), res_avx6); - c23_avx = _mm256_sub_epi16(_mm256_sub_epi16(c23_avx, res_avx3), res_avx7); - - result_final3[0] = res_avx0; - result_final3[1] = res_avx1; - result_final3[2] = _mm256_add_epi16(res_avx2, c6_avx); - result_final3[3] = _mm256_add_epi16(res_avx3, c22_avx); - result_final3[4] = _mm256_add_epi16(res_avx4, c7_avx); - result_final3[5] = _mm256_add_epi16(res_avx5, c23_avx); - result_final3[6] = res_avx6; - result_final3[7] = res_avx7; - //------------------------AVX interpolation for 4th poly ends-------------- - - //------------------------AVX interpolation for 5th poly external------------------- - res_avx0 = c_eval[68]; - res_avx2 = c_eval[69]; - res_avx4 = c_eval[70]; - res_avx6 = c_eval[71]; - c6_avx = c_eval[74]; - c7_avx = c_eval[75]; - - c8_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[76], c6_avx), c7_avx); - - res_avx1 = c_eval[84]; - res_avx3 = c_eval[85]; - res_avx5 = c_eval[86]; - res_avx7 = c_eval[87]; - c22_avx = c_eval[90]; - c23_avx = c_eval[91]; - - c21_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[89], res_avx5), res_avx7); - c24_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[92], c22_avx), c23_avx); - c20_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[88], res_avx1), res_avx3); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[73], res_avx4), res_avx6); - res_avx5 = _mm256_add_epi16(res_avx5, temp); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[72], res_avx0), res_avx2); - res_avx1 = _mm256_add_epi16(res_avx1, temp); - c22_avx = _mm256_add_epi16(c22_avx, c8_avx); - res_avx6 = _mm256_add_epi16(res_avx6, c21_avx); - res_avx2 = _mm256_add_epi16(res_avx2, c20_avx); - c7_avx = _mm256_add_epi16(c7_avx, c24_avx); - c6_avx = _mm256_sub_epi16(_mm256_sub_epi16(c6_avx, res_avx0), res_avx4); - c22_avx = _mm256_sub_epi16(_mm256_sub_epi16(c22_avx, res_avx1), res_avx5); - c7_avx = _mm256_sub_epi16(_mm256_sub_epi16(c7_avx, res_avx2), res_avx6); - c23_avx = _mm256_sub_epi16(_mm256_sub_epi16(c23_avx, res_avx3), res_avx7); - - result_final4[0] = res_avx0; - result_final4[1] = res_avx1; - result_final4[2] = _mm256_add_epi16(res_avx2, c6_avx); - result_final4[3] = _mm256_add_epi16(res_avx3, c22_avx); - result_final4[4] = _mm256_add_epi16(res_avx4, c7_avx); - result_final4[5] = _mm256_add_epi16(res_avx5, c23_avx); - result_final4[6] = res_avx6; - result_final4[7] = res_avx7; - //------------------------AVX interpolation for 5th poly ends-------------- - - //------------------------AVX interpolation for 6th poly external------------------- - res_avx0 = c_eval[77]; - res_avx2 = c_eval[78]; - res_avx4 = c_eval[79]; - res_avx6 = c_eval[96]; - c6_avx = c_eval[99]; - c7_avx = c_eval[100]; - - c8_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[101], c6_avx), c7_avx); - - res_avx1 = c_eval[93]; - res_avx3 = c_eval[94]; - res_avx5 = c_eval[95]; - res_avx7 = c_eval[112]; - c22_avx = c_eval[115]; - c23_avx = c_eval[116]; - - c21_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[114], res_avx5), res_avx7); - c24_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[117], c22_avx), c23_avx); - c20_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[113], res_avx1), res_avx3); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[98], res_avx4), res_avx6); - res_avx5 = _mm256_add_epi16(res_avx5, temp); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[97], res_avx0), res_avx2); - res_avx1 = _mm256_add_epi16(res_avx1, temp); - c22_avx = _mm256_add_epi16(c22_avx, c8_avx); - res_avx6 = _mm256_add_epi16(res_avx6, c21_avx); - res_avx2 = _mm256_add_epi16(res_avx2, c20_avx); - c7_avx = _mm256_add_epi16(c7_avx, c24_avx); - c6_avx = _mm256_sub_epi16(_mm256_sub_epi16(c6_avx, res_avx0), res_avx4); - c22_avx = _mm256_sub_epi16(_mm256_sub_epi16(c22_avx, res_avx1), res_avx5); - c7_avx = _mm256_sub_epi16(_mm256_sub_epi16(c7_avx, res_avx2), res_avx6); - c23_avx = _mm256_sub_epi16(_mm256_sub_epi16(c23_avx, res_avx3), res_avx7); - - result_final5[0] = res_avx0; - result_final5[1] = res_avx1; - result_final5[2] = _mm256_add_epi16(res_avx2, c6_avx); - result_final5[3] = _mm256_add_epi16(res_avx3, c22_avx); - result_final5[4] = _mm256_add_epi16(res_avx4, c7_avx); - result_final5[5] = _mm256_add_epi16(res_avx5, c23_avx); - result_final5[6] = res_avx6; - result_final5[7] = res_avx7; - //------------------------AVX interpolation for 6th poly ends-------------- - - //------------------------AVX interpolation for 7th poly external------------------- - res_avx0 = c_eval[102]; - res_avx2 = c_eval[103]; - res_avx4 = c_eval[104]; - res_avx6 = c_eval[105]; - c6_avx = c_eval[108]; - c7_avx = c_eval[109]; - - c8_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[110], c6_avx), c7_avx); - - res_avx1 = c_eval[118]; - res_avx3 = c_eval[119]; - res_avx5 = c_eval[120]; - res_avx7 = c_eval[121]; - c22_avx = c_eval[124]; - c23_avx = c_eval[125]; - - c21_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[123], res_avx5), res_avx7); - c24_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[126], c22_avx), c23_avx); - c20_avx = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[122], res_avx1), res_avx3); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[107], res_avx4), res_avx6); - res_avx5 = _mm256_add_epi16(res_avx5, temp); - temp = _mm256_sub_epi16(_mm256_sub_epi16(c_eval[106], res_avx0), res_avx2); - res_avx1 = _mm256_add_epi16(res_avx1, temp); - c22_avx = _mm256_add_epi16(c22_avx, c8_avx); - res_avx6 = _mm256_add_epi16(res_avx6, c21_avx); - res_avx2 = _mm256_add_epi16(res_avx2, c20_avx); - c7_avx = _mm256_add_epi16(c7_avx, c24_avx); - c6_avx = _mm256_sub_epi16(_mm256_sub_epi16(c6_avx, res_avx0), res_avx4); - c22_avx = _mm256_sub_epi16(_mm256_sub_epi16(c22_avx, res_avx1), res_avx5); - c7_avx = _mm256_sub_epi16(_mm256_sub_epi16(c7_avx, res_avx2), res_avx6); - c23_avx = _mm256_sub_epi16(_mm256_sub_epi16(c23_avx, res_avx3), res_avx7); - - result_final6[0] = res_avx0; - result_final6[1] = res_avx1; - result_final6[2] = _mm256_add_epi16(res_avx2, c6_avx); - result_final6[3] = _mm256_add_epi16(res_avx3, c22_avx); - result_final6[4] = _mm256_add_epi16(res_avx4, c7_avx); - result_final6[5] = _mm256_add_epi16(res_avx5, c23_avx); - result_final6[6] = res_avx6; - result_final6[7] = res_avx7; - //------------------------AVX interpolation for 7th poly ends-------------- -} - -void PQCLEAN_SABER_AVX2_toom4_mul_A_by_B_eval(toom4_points_product *c_eval, const poly *a, const toom4_points *b_eval, int accumulate) { - size_t i; - __m256i r0_avx, r1_avx, r2_avx, r3_avx, r4_avx, r5_avx, r6_avx; - __m256i aw_avx[7 * L]; - __m256i *va = (__m256i *)a->coeffs; - - for (i = 0; i < L; i++) { - r0_avx = va[0 * L + i]; - r1_avx = va[1 * L + i]; - r2_avx = va[2 * L + i]; - r3_avx = va[3 * L + i]; - r4_avx = _mm256_add_epi16(r0_avx, r2_avx); - r5_avx = _mm256_add_epi16(r1_avx, r3_avx); - aw_avx[2 * L + i] = _mm256_add_epi16(r4_avx, r5_avx); - aw_avx[3 * L + i] = _mm256_sub_epi16(r4_avx, r5_avx); - r4_avx = _mm256_slli_epi16(r0_avx, 2); - r4_avx = _mm256_add_epi16(r4_avx, r2_avx); - r4_avx = _mm256_slli_epi16(r4_avx, 1); - r5_avx = _mm256_slli_epi16(r1_avx, 2); - r5_avx = _mm256_add_epi16(r5_avx, r3_avx); - aw_avx[4 * L + i] = _mm256_add_epi16(r4_avx, r5_avx); - aw_avx[5 * L + i] = _mm256_sub_epi16(r4_avx, r5_avx); - r4_avx = _mm256_slli_epi16(r3_avx, 3); - r6_avx = _mm256_slli_epi16(r2_avx, 2); - r4_avx = _mm256_add_epi16(r4_avx, r6_avx); - r6_avx = _mm256_slli_epi16(r1_avx, 1); - r4_avx = _mm256_add_epi16(r4_avx, r6_avx); - aw_avx[1 * L + i] = _mm256_add_epi16(r4_avx, r0_avx); - aw_avx[6 * L + i] = r0_avx; - aw_avx[0 * L + i] = r3_avx; - } - - batch_64coefficient_multiplications(c_eval, aw_avx, b_eval, accumulate); -} - -void PQCLEAN_SABER_AVX2_toom4_eval(toom4_points *b_eval, const poly *b) { - size_t i; - __m256i bw_avx[7 * L]; - __m256i r0_avx, r1_avx, r2_avx, r3_avx, r4_avx, r5_avx, r6_avx; - __m256i *vb = (__m256i *)b->coeffs; - __m256i *vb_eval = (__m256i *)b_eval->coeffs; - - for (i = 0; i < L; i++) { - r0_avx = vb[0 * L + i]; - r1_avx = vb[1 * L + i]; - r2_avx = vb[2 * L + i]; - r3_avx = vb[3 * L + i]; - r4_avx = _mm256_add_epi16(r0_avx, r2_avx); - r5_avx = _mm256_add_epi16(r1_avx, r3_avx); - bw_avx[2 * L + i] = _mm256_add_epi16(r4_avx, r5_avx); - bw_avx[3 * L + i] = _mm256_sub_epi16(r4_avx, r5_avx); - r4_avx = _mm256_slli_epi16(r0_avx, 2); - r4_avx = _mm256_add_epi16(r4_avx, r2_avx); - r4_avx = _mm256_slli_epi16(r4_avx, 1); - r5_avx = _mm256_slli_epi16(r1_avx, 2); - r5_avx = _mm256_add_epi16(r5_avx, r3_avx); - bw_avx[4 * L + i] = _mm256_add_epi16(r4_avx, r5_avx); - bw_avx[5 * L + i] = _mm256_sub_epi16(r4_avx, r5_avx); - r4_avx = _mm256_slli_epi16(r3_avx, 3); - r6_avx = _mm256_slli_epi16(r2_avx, 2); - r4_avx = _mm256_add_epi16(r4_avx, r6_avx); - r6_avx = _mm256_slli_epi16(r1_avx, 1); - r4_avx = _mm256_add_epi16(r4_avx, r6_avx); - bw_avx[1 * L + i] = _mm256_add_epi16(r4_avx, r0_avx); - bw_avx[6 * L + i] = r0_avx; - bw_avx[0 * L + i] = r3_avx; - } - - karatsuba_eval(vb_eval, bw_avx); -} - - -void PQCLEAN_SABER_AVX2_toom4_interp(poly *res, const toom4_points_product *c_eval) { - size_t i; - __m256i r0_avx, r1_avx, r2_avx, r3_avx, r4_avx, r5_avx, r6_avx, temp_avx; - __m256i w1_avx[2 * L], w2_avx[2 * L], w3_avx[2 * L], w4_avx[2 * L], w5_avx[2 * L], w6_avx[2 * L], w7_avx[2 * L]; - __m256i res_full[32]; - __m256i *vc = (__m256i *)c_eval->coeffs; - __m256i *vres = (__m256i *)res->coeffs; - - transpose(vc); - transpose(vc + 16); - transpose(vc + 32); - transpose(vc + 48); - transpose(vc + 64); - transpose(vc + 80); - transpose(vc + 96); - transpose(vc + 112); - - karatsuba_interp(w1_avx, w2_avx, w3_avx, w4_avx, w5_avx, w6_avx, w7_avx, vc); - - for (i = 0; i < 2 * L; i++) { - r0_avx = w1_avx[i]; - r1_avx = w2_avx[i]; - r2_avx = w3_avx[i]; - r3_avx = w4_avx[i]; - r4_avx = w5_avx[i]; - r5_avx = w6_avx[i]; - r6_avx = w7_avx[i]; - - r1_avx = _mm256_add_epi16(r1_avx, r4_avx); - r5_avx = _mm256_sub_epi16(r5_avx, r4_avx); - r3_avx = _mm256_sub_epi16(r3_avx, r2_avx); - r3_avx = _mm256_srli_epi16(r3_avx, 1); - r4_avx = _mm256_sub_epi16(r4_avx, r0_avx); - temp_avx = _mm256_slli_epi16(r6_avx, 6); - - r4_avx = _mm256_sub_epi16(r4_avx, temp_avx); - r4_avx = _mm256_slli_epi16(r4_avx, 1); - r4_avx = _mm256_add_epi16(r4_avx, r5_avx); - r2_avx = _mm256_add_epi16(r2_avx, r3_avx); - temp_avx = _mm256_slli_epi16(r2_avx, 6); - - r1_avx = _mm256_sub_epi16(r1_avx, temp_avx); - r1_avx = _mm256_sub_epi16(r1_avx, r2_avx); - r2_avx = _mm256_sub_epi16(r2_avx, r6_avx); - r2_avx = _mm256_sub_epi16(r2_avx, r0_avx); - temp_avx = _mm256_mullo_epi16(r2_avx, _mm256_set1_epi16(45)); - - r1_avx = _mm256_add_epi16(r1_avx, temp_avx); - temp_avx = _mm256_slli_epi16(r2_avx, 3); - - r4_avx = _mm256_sub_epi16(r4_avx, temp_avx); - r4_avx = _mm256_mullo_epi16(r4_avx, _mm256_set1_epi16(-21845)); // -21845 = 1/3 (mod 2^16) - r4_avx = _mm256_srli_epi16(r4_avx, 3); - r5_avx = _mm256_add_epi16(r5_avx, r1_avx); - temp_avx = _mm256_slli_epi16(r3_avx, 4); - - r1_avx = _mm256_add_epi16(r1_avx, temp_avx); - r1_avx = _mm256_mullo_epi16(r1_avx, _mm256_set1_epi16(-29127)); // -29127 = 1/9 (mod 2^16) - r1_avx = _mm256_srli_epi16(r1_avx, 1); - r3_avx = _mm256_add_epi16(r1_avx, r3_avx); - r3_avx = _mm256_sub_epi16(_mm256_set1_epi16(0), r3_avx); - temp_avx = _mm256_mullo_epi16(r1_avx, _mm256_set1_epi16(30)); - temp_avx = _mm256_sub_epi16(temp_avx, r5_avx); - temp_avx = _mm256_mullo_epi16(temp_avx, _mm256_set1_epi16(-4369)); // -4369 = 1/15 (mod 2^16) - - r5_avx = _mm256_srli_epi16(temp_avx, 2); - r2_avx = _mm256_sub_epi16(r2_avx, r4_avx); - r1_avx = _mm256_sub_epi16(r1_avx, r5_avx); - - if (i < L) { - res_full[0 * L + i] = r6_avx; - res_full[1 * L + i] = r5_avx; - res_full[2 * L + i] = r4_avx; - res_full[3 * L + i] = r3_avx; - res_full[4 * L + i] = r2_avx; - res_full[5 * L + i] = r1_avx; - res_full[6 * L + i] = r0_avx; - } else { - res_full[0 * L + i] = _mm256_add_epi16(res_full[0 * L + i], r6_avx); - res_full[1 * L + i] = _mm256_add_epi16(res_full[1 * L + i], r5_avx); - res_full[2 * L + i] = _mm256_add_epi16(res_full[2 * L + i], r4_avx); - res_full[3 * L + i] = _mm256_add_epi16(res_full[3 * L + i], r3_avx); - res_full[4 * L + i] = _mm256_add_epi16(res_full[4 * L + i], r2_avx); - res_full[5 * L + i] = _mm256_add_epi16(res_full[5 * L + i], r1_avx); - res_full[6 * L + i] = r0_avx; - } - } - - // Reduction by X^256 + 1 - for (i = 0; i < 16; i++) { - vres[i] = _mm256_sub_epi16(res_full[i], res_full[i + 16]); - } -} diff --git a/src/kem/saber/saber/avx2/verify.c b/src/kem/saber/saber/avx2/verify.c deleted file mode 100644 index fe089639..00000000 --- a/src/kem/saber/saber/avx2/verify.c +++ /dev/null @@ -1,35 +0,0 @@ -#include "verify.h" - -/*------------------------------------------------- -This file has been adapted from the implementation -(available at https://github.com/pq-crystals/kyber) of -"CRYSTALS – Kyber: a CCA-secure module-lattice-based KEM" - by : Joppe Bos, Leo Ducas, Eike Kiltz, Tancrede Lepoint, -Vadim Lyubashevsky, John M. Schanck, Peter Schwabe & Damien stehle -----------------------------------------------------*/ - - -/* returns 0 for equal strings, 1 for non-equal strings */ -uint8_t PQCLEAN_SABER_AVX2_verify(const uint8_t *a, const uint8_t *b, size_t len) { - uint64_t r; - size_t i; - r = 0; - - for (i = 0; i < len; i++) { - r |= a[i] ^ b[i]; - } - - r = (~r + 1); // Two's complement - r >>= 63; - return (uint8_t) r; -} - -/* b = 1 means mov, b = 0 means don't mov*/ -void PQCLEAN_SABER_AVX2_cmov(uint8_t *r, const uint8_t *x, size_t len, uint8_t b) { - size_t i; - - b = -b; - for (i = 0; i < len; i++) { - r[i] ^= b & (x[i] ^ r[i]); - } -} diff --git a/src/kem/saber/saber/avx2/verify.h b/src/kem/saber/saber/avx2/verify.h deleted file mode 100644 index 32edf5d0..00000000 --- a/src/kem/saber/saber/avx2/verify.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef VERIFY_H -#define VERIFY_H -/*------------------------------------------------- -This file has been adapted from the implementation -(available at https://github.com/pq-crystals/kyber) of -"CRYSTALS – Kyber: a CCA-secure module-lattice-based KEM" - by : Joppe Bos, Leo Ducas, Eike Kiltz, Tancrede Lepoint, -Vadim Lyubashevsky, John M. Schanck, Peter Schwabe & Damien stehle -----------------------------------------------------*/ - -#include -#include - -/* returns 0 for equal strings, 1 for non-equal strings */ -uint8_t PQCLEAN_SABER_AVX2_verify(const uint8_t *a, const uint8_t *b, size_t len); - - -/* b = 1 means mov, b = 0 means don't mov*/ -void PQCLEAN_SABER_AVX2_cmov(uint8_t *r, const uint8_t *x, size_t len, uint8_t b); - - -#endif diff --git a/src/kem/saber/saber/clean/CMakeLists.txt b/src/kem/saber/saber/clean/CMakeLists.txt deleted file mode 100644 index 7f4bac9f..00000000 --- a/src/kem/saber/saber/clean/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -set( - SRC_CLEAN_SABER - cbd.c - kem.c - pack_unpack.c - poly.c - poly_mul.c - SABER_indcpa.c - verify.c) - -define_kem_alg( - saber_clean - PQCLEAN_SABER_CLEAN "${SRC_CLEAN_SABER}" "${CMAKE_CURRENT_SOURCE_DIR}") diff --git a/src/kem/saber/saber/clean/SABER_indcpa.c b/src/kem/saber/saber/clean/SABER_indcpa.c deleted file mode 100644 index 3cc2367c..00000000 --- a/src/kem/saber/saber/clean/SABER_indcpa.c +++ /dev/null @@ -1,113 +0,0 @@ -#include "SABER_indcpa.h" -#include "SABER_params.h" -#include "fips202.h" -#include "pack_unpack.h" -#include "poly.h" -#include "randombytes.h" -#include -#include - -#define h1 (1 << (SABER_EQ - SABER_EP - 1)) -#define h2 ((1 << (SABER_EP - 2)) - (1 << (SABER_EP - SABER_ET - 1)) + (1 << (SABER_EQ - SABER_EP - 1))) - -void PQCLEAN_SABER_CLEAN_indcpa_kem_keypair(uint8_t pk[SABER_INDCPA_PUBLICKEYBYTES], uint8_t sk[SABER_INDCPA_SECRETKEYBYTES]) { - size_t i, j; - - poly A[SABER_L][SABER_L]; - poly s[SABER_L]; - poly res[SABER_L]; - - uint8_t rand[SABER_NOISESEEDBYTES]; - uint8_t *seed_A = pk + SABER_POLYVECCOMPRESSEDBYTES; - - randombytes(seed_A, SABER_SEEDBYTES); - shake128(seed_A, SABER_SEEDBYTES, seed_A, SABER_SEEDBYTES); // for not revealing system RNG state - - randombytes(rand, SABER_NOISESEEDBYTES); - PQCLEAN_SABER_CLEAN_GenSecret(s, rand); - PQCLEAN_SABER_CLEAN_POLVECq2BS(sk, s); - - PQCLEAN_SABER_CLEAN_GenMatrix(A, seed_A); // sample matrix A - PQCLEAN_SABER_CLEAN_MatrixVectorMul(res, (const poly (*)[SABER_L])A, (const poly *)s, 1); // Matrix in transposed order - - - // rounding - for (i = 0; i < SABER_L; i++) { - for (j = 0; j < SABER_N; j++) { - res[i].coeffs[j] += h1; - res[i].coeffs[j] >>= SABER_EQ - SABER_EP; - res[i].coeffs[j] &= SABER_Q - 1; - } - } - - PQCLEAN_SABER_CLEAN_POLVECp2BS(pk, res); // pack public key -} - - -void PQCLEAN_SABER_CLEAN_indcpa_kem_enc(uint8_t ciphertext[SABER_BYTES_CCA_DEC], const uint8_t m[SABER_KEYBYTES], const uint8_t noiseseed[SABER_NOISESEEDBYTES], const uint8_t pk[SABER_INDCPA_PUBLICKEYBYTES]) { - size_t i, j; - - poly A[SABER_L][SABER_L]; - poly res[SABER_L]; - poly s[SABER_L]; - poly *temp = A[0]; // re-use stack space - poly *vprime = &A[0][0]; - poly *message = &A[0][1]; - - const uint8_t *seed_A = pk + SABER_POLYVECCOMPRESSEDBYTES; - uint8_t *msk_c = ciphertext + SABER_POLYVECCOMPRESSEDBYTES; - - PQCLEAN_SABER_CLEAN_GenSecret(s, noiseseed); - PQCLEAN_SABER_CLEAN_GenMatrix(A, seed_A); - PQCLEAN_SABER_CLEAN_MatrixVectorMul(res, (const poly (*)[SABER_L])A, (const poly *)s, 0); // 0 => not transposed - - - // rounding - for (i = 0; i < SABER_L; i++) { //shift right EQ-EP bits - for (j = 0; j < SABER_N; j++) { - res[i].coeffs[j] += h1; - res[i].coeffs[j] >>= SABER_EQ - SABER_EP; - res[i].coeffs[j] &= SABER_Q - 1; - } - } - PQCLEAN_SABER_CLEAN_POLVECp2BS(ciphertext, res); - - // vector-vector scalar multiplication with mod p - PQCLEAN_SABER_CLEAN_BS2POLVECp(temp, pk); - PQCLEAN_SABER_CLEAN_InnerProd(vprime, temp, s); - PQCLEAN_SABER_CLEAN_BS2POLmsg(message, m); - - for (i = 0; i < SABER_N; i++) { - vprime->coeffs[i] += h1 - (message->coeffs[i] << (SABER_EP - 1)); - vprime->coeffs[i] &= SABER_P - 1; - vprime->coeffs[i] >>= SABER_EP - SABER_ET; - } - - PQCLEAN_SABER_CLEAN_POLT2BS(msk_c, vprime); -} - - -void PQCLEAN_SABER_CLEAN_indcpa_kem_dec(uint8_t m[SABER_KEYBYTES], const uint8_t sk[SABER_INDCPA_SECRETKEYBYTES], const uint8_t ciphertext[SABER_BYTES_CCA_DEC]) { - size_t i; - - poly temp[SABER_L]; - poly s[SABER_L]; - - const uint8_t *packed_cm = ciphertext + SABER_POLYVECCOMPRESSEDBYTES; - poly *v = &temp[0]; - poly *cm = &temp[1]; - - PQCLEAN_SABER_CLEAN_BS2POLVECq(s, sk); - PQCLEAN_SABER_CLEAN_BS2POLVECp(temp, ciphertext); - PQCLEAN_SABER_CLEAN_InnerProd(&temp[0], temp, s); - - PQCLEAN_SABER_CLEAN_BS2POLT(cm, packed_cm); - - for (i = 0; i < SABER_N; i++) { - v->coeffs[i] += h2 - (cm->coeffs[i] << (SABER_EP - SABER_ET)); - v->coeffs[i] &= SABER_P - 1; - v->coeffs[i] >>= SABER_EP - 1; - } - - PQCLEAN_SABER_CLEAN_POLmsg2BS(m, v); -} diff --git a/src/kem/saber/saber/clean/SABER_indcpa.h b/src/kem/saber/saber/clean/SABER_indcpa.h deleted file mode 100644 index a5e89e96..00000000 --- a/src/kem/saber/saber/clean/SABER_indcpa.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef INDCPA_H -#define INDCPA_H -#include "SABER_params.h" -#include - -void PQCLEAN_SABER_CLEAN_indcpa_kem_keypair(uint8_t pk[SABER_INDCPA_PUBLICKEYBYTES], uint8_t sk[SABER_INDCPA_SECRETKEYBYTES]); - -void PQCLEAN_SABER_CLEAN_indcpa_kem_enc(uint8_t ciphertext[SABER_BYTES_CCA_DEC], const uint8_t m[SABER_KEYBYTES], const uint8_t noiseseed[SABER_NOISESEEDBYTES], const uint8_t pk[SABER_INDCPA_PUBLICKEYBYTES]); - -void PQCLEAN_SABER_CLEAN_indcpa_kem_dec(uint8_t m[SABER_KEYBYTES], const uint8_t sk[SABER_INDCPA_SECRETKEYBYTES], const uint8_t ciphertext[SABER_BYTES_CCA_DEC]); - - -#endif diff --git a/src/kem/saber/saber/clean/SABER_params.h b/src/kem/saber/saber/clean/SABER_params.h deleted file mode 100644 index d1a5ddd7..00000000 --- a/src/kem/saber/saber/clean/SABER_params.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef PARAMS_H -#define PARAMS_H - - -/* Don't change anything below this line */ -#define SABER_L 3 -#define SABER_MU 8 -#define SABER_ET 4 - -#define SABER_N 256 - -#define SABER_EP 10 -#define SABER_P (1 << SABER_EP) - -#define SABER_EQ 13 -#define SABER_Q (1 << SABER_EQ) - -#define SABER_SEEDBYTES 32 -#define SABER_NOISESEEDBYTES 32 -#define SABER_KEYBYTES 32 -#define SABER_HASHBYTES 32 - -#define SABER_POLYCOINBYTES (SABER_MU * SABER_N / 8) - -#define SABER_POLYBYTES (SABER_EQ * SABER_N / 8) -#define SABER_POLYVECBYTES (SABER_L * SABER_POLYBYTES) - -#define SABER_POLYCOMPRESSEDBYTES (SABER_EP * SABER_N / 8) -#define SABER_POLYVECCOMPRESSEDBYTES (SABER_L * SABER_POLYCOMPRESSEDBYTES) - -#define SABER_SCALEBYTES_KEM (SABER_ET * SABER_N / 8) - -#define SABER_INDCPA_PUBLICKEYBYTES (SABER_POLYVECCOMPRESSEDBYTES + SABER_SEEDBYTES) -#define SABER_INDCPA_SECRETKEYBYTES (SABER_POLYVECBYTES) - -#define SABER_PUBLICKEYBYTES (SABER_INDCPA_PUBLICKEYBYTES) -#define SABER_SECRETKEYBYTES (SABER_INDCPA_SECRETKEYBYTES + SABER_INDCPA_PUBLICKEYBYTES + SABER_HASHBYTES + SABER_KEYBYTES) - -#define SABER_BYTES_CCA_DEC (SABER_POLYVECCOMPRESSEDBYTES + SABER_SCALEBYTES_KEM) - -#endif diff --git a/src/kem/saber/saber/clean/api.h b/src/kem/saber/saber/clean/api.h deleted file mode 100644 index 7448d46d..00000000 --- a/src/kem/saber/saber/clean/api.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef PQCLEAN_SABER_CLEAN_API_H -#define PQCLEAN_SABER_CLEAN_API_H - - -#define PQCLEAN_SABER_CLEAN_CRYPTO_ALGNAME "Saber" -#define PQCLEAN_SABER_CLEAN_CRYPTO_BYTES 32 -#define PQCLEAN_SABER_CLEAN_CRYPTO_CIPHERTEXTBYTES 1088 -#define PQCLEAN_SABER_CLEAN_CRYPTO_PUBLICKEYBYTES 992 -#define PQCLEAN_SABER_CLEAN_CRYPTO_SECRETKEYBYTES 2304 - -int PQCLEAN_SABER_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); - -int PQCLEAN_SABER_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *k, const unsigned char *pk); - -int PQCLEAN_SABER_CLEAN_crypto_kem_dec(unsigned char *k, const unsigned char *ct, const unsigned char *sk); - - -#endif /* PQCLEAN_SABER_CLEAN_API_H */ diff --git a/src/kem/saber/saber/clean/cbd.c b/src/kem/saber/saber/clean/cbd.c deleted file mode 100644 index b8dee33b..00000000 --- a/src/kem/saber/saber/clean/cbd.c +++ /dev/null @@ -1,48 +0,0 @@ -#include "SABER_params.h" -#include "api.h" -#include "cbd.h" -#include -/*--------------------------------------------------------------------- -This file has been adapted from the implementation -(available at, Public Domain https://github.com/pq-crystals/kyber) -of "CRYSTALS – Kyber: a CCA-secure module-lattice-based KEM" -by : Joppe Bos, Leo Ducas, Eike Kiltz, Tancrede Lepoint, -Vadim Lyubashevsky, John M. Schanck, Peter Schwabe & Damien stehle -----------------------------------------------------------------------*/ - - -static uint64_t load_littleendian(const uint8_t *x, int bytes) { - int i; - uint64_t r = x[0]; - for (i = 1; i < bytes; i++) { - r |= (uint64_t)x[i] << (8 * i); - } - return r; -} - -void PQCLEAN_SABER_CLEAN_cbd(uint16_t s[SABER_N], const uint8_t buf[SABER_POLYCOINBYTES]) { - uint32_t t, d, a[4], b[4]; - int i, j; - - for (i = 0; i < SABER_N / 4; i++) { - t = (uint32_t) load_littleendian(buf + 4 * i, 4); - d = 0; - for (j = 0; j < 4; j++) { - d += (t >> j) & 0x11111111; - } - - a[0] = d & 0xf; - b[0] = (d >> 4) & 0xf; - a[1] = (d >> 8) & 0xf; - b[1] = (d >> 12) & 0xf; - a[2] = (d >> 16) & 0xf; - b[2] = (d >> 20) & 0xf; - a[3] = (d >> 24) & 0xf; - b[3] = (d >> 28); - - s[4 * i + 0] = (uint16_t)(a[0] - b[0]); - s[4 * i + 1] = (uint16_t)(a[1] - b[1]); - s[4 * i + 2] = (uint16_t)(a[2] - b[2]); - s[4 * i + 3] = (uint16_t)(a[3] - b[3]); - } -} diff --git a/src/kem/saber/saber/clean/cbd.h b/src/kem/saber/saber/clean/cbd.h deleted file mode 100644 index 88b0b0b5..00000000 --- a/src/kem/saber/saber/clean/cbd.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef CBD_H -#define CBD_H -/*--------------------------------------------------------------------- -This file has been adapted from the implementation -(available at, Public Domain https://github.com/pq-crystals/kyber) -of "CRYSTALS – Kyber: a CCA-secure module-lattice-based KEM" -by : Joppe Bos, Leo Ducas, Eike Kiltz, Tancrede Lepoint, -Vadim Lyubashevsky, John M. Schanck, Peter Schwabe & Damien stehle -----------------------------------------------------------------------*/ -#include "SABER_params.h" -#include - -void PQCLEAN_SABER_CLEAN_cbd(uint16_t s[SABER_N], const uint8_t buf[SABER_POLYCOINBYTES]); - - -#endif diff --git a/src/kem/saber/saber/clean/kem.c b/src/kem/saber/saber/clean/kem.c deleted file mode 100644 index 6a7f20c4..00000000 --- a/src/kem/saber/saber/clean/kem.c +++ /dev/null @@ -1,77 +0,0 @@ -#include "SABER_indcpa.h" -#include "SABER_params.h" -#include "api.h" -#include "fips202.h" -#include "randombytes.h" -#include "verify.h" -#include -#include - - -int PQCLEAN_SABER_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk) { - size_t i; - - PQCLEAN_SABER_CLEAN_indcpa_kem_keypair(pk, sk); // sk[0:SABER_INDCPA_SECRETKEYBYTES-1] <-- sk - for (i = 0; i < SABER_INDCPA_PUBLICKEYBYTES; i++) { - sk[i + SABER_INDCPA_SECRETKEYBYTES] = pk[i]; // sk[SABER_INDCPA_SECRETKEYBYTES:SABER_INDCPA_SECRETKEYBYTES+SABER_INDCPA_SECRETKEYBYTES-1] <-- pk - } - - sha3_256(sk + SABER_SECRETKEYBYTES - 64, pk, SABER_INDCPA_PUBLICKEYBYTES); // Then hash(pk) is appended. - - randombytes(sk + SABER_SECRETKEYBYTES - SABER_KEYBYTES, SABER_KEYBYTES); // Remaining part of sk contains a pseudo-random number. - // This is output when check in PQCLEAN_SABER_CLEAN_crypto_kem_dec() fails. - return (0); -} - -int PQCLEAN_SABER_CLEAN_crypto_kem_enc(uint8_t *c, uint8_t *k, const uint8_t *pk) { - - uint8_t kr[64]; // Will contain key, coins - uint8_t buf[64]; - - randombytes(buf, 32); - - sha3_256(buf, buf, 32); // BUF[0:31] <-- random message (will be used as the key for client) Note: hash doesnot release system RNG output - - sha3_256(buf + 32, pk, SABER_INDCPA_PUBLICKEYBYTES); // BUF[32:63] <-- Hash(public key); Multitarget countermeasure for coins + contributory KEM - - sha3_512(kr, buf, 64); // kr[0:63] <-- Hash(buf[0:63]); - // K^ <-- kr[0:31] - // noiseseed (r) <-- kr[32:63]; - PQCLEAN_SABER_CLEAN_indcpa_kem_enc(c, buf, kr + 32, pk); // buf[0:31] contains message; kr[32:63] contains randomness r; - - sha3_256(kr + 32, c, SABER_BYTES_CCA_DEC); - - sha3_256(k, kr, 64); // hash concatenation of pre-k and h(c) to k - - return (0); -} - -int PQCLEAN_SABER_CLEAN_crypto_kem_dec(uint8_t *k, const uint8_t *c, const uint8_t *sk) { - size_t i; - uint8_t fail; - uint8_t cmp[SABER_BYTES_CCA_DEC]; - uint8_t buf[64]; - uint8_t kr[64]; // Will contain key, coins - const uint8_t *pk = sk + SABER_INDCPA_SECRETKEYBYTES; - - PQCLEAN_SABER_CLEAN_indcpa_kem_dec(buf, sk, c); // buf[0:31] <-- message - - // Multitarget countermeasure for coins + contributory KEM - for (i = 0; i < 32; i++) { // Save hash by storing h(pk) in sk - buf[32 + i] = sk[SABER_SECRETKEYBYTES - 64 + i]; - } - - sha3_512(kr, buf, 64); - - PQCLEAN_SABER_CLEAN_indcpa_kem_enc(cmp, buf, kr + 32, pk); - - fail = PQCLEAN_SABER_CLEAN_verify(c, cmp, SABER_BYTES_CCA_DEC); - - sha3_256(kr + 32, c, SABER_BYTES_CCA_DEC); // overwrite coins in kr with h(c) - - PQCLEAN_SABER_CLEAN_cmov(kr, sk + SABER_SECRETKEYBYTES - SABER_KEYBYTES, SABER_KEYBYTES, fail); - - sha3_256(k, kr, 64); // hash concatenation of pre-k and h(c) to k - - return (0); -} diff --git a/src/kem/saber/saber/clean/pack_unpack.c b/src/kem/saber/saber/clean/pack_unpack.c deleted file mode 100644 index 89a98951..00000000 --- a/src/kem/saber/saber/clean/pack_unpack.c +++ /dev/null @@ -1,147 +0,0 @@ -#include "SABER_params.h" -#include "pack_unpack.h" -#include "poly.h" -#include - -void PQCLEAN_SABER_CLEAN_POLT2BS(uint8_t bytes[SABER_SCALEBYTES_KEM], const poly *data) { - size_t j; - const uint16_t *in = data->coeffs; - uint8_t *out = bytes; - for (j = 0; j < SABER_N / 2; j++) { - out[0] = (uint8_t) ((in[0] & 0x0f) | (in[1] << 4)); - in += 2; - out += 1; - } -} - -void PQCLEAN_SABER_CLEAN_BS2POLT(poly *data, const uint8_t bytes[SABER_SCALEBYTES_KEM]) { - /* This function does not reduce its output mod T */ - size_t j; - const uint8_t *in = bytes; - uint16_t *out = data->coeffs; - for (j = 0; j < SABER_N / 2; j++) { - out[0] = in[0]; - out[1] = in[0] >> 4; - in += 1; - out += 2; - } -} - -static void POLq2BS(uint8_t bytes[SABER_POLYBYTES], const poly *data) { - size_t j; - const uint16_t *in = data->coeffs; - uint8_t *out = bytes; - for (j = 0; j < SABER_N / 8; j++) { - out[0] = (uint8_t) (in[0]); - out[1] = (uint8_t) (((in[0] >> 8) & 0x1f) | (in[1] << 5)); - out[2] = (uint8_t) (in[1] >> 3); - out[3] = (uint8_t) (((in[1] >> 11) & 0x03) | (in[2] << 2)); - out[4] = (uint8_t) (((in[2] >> 6) & 0x7f) | (in[3] << 7)); - out[5] = (uint8_t) (in[3] >> 1); - out[6] = (uint8_t) (((in[3] >> 9) & 0x0f) | (in[4] << 4)); - out[7] = (uint8_t) (in[4] >> 4); - out[8] = (uint8_t) (((in[4] >> 12) & 0x01) | (in[5] << 1)); - out[9] = (uint8_t) (((in[5] >> 7) & 0x3f) | (in[6] << 6)); - out[10] = (uint8_t) (in[6] >> 2); - out[11] = (uint8_t) (((in[6] >> 10) & 0x07) | (in[7] << 3)); - out[12] = (uint8_t) (in[7] >> 5); - in += 8; - out += 13; - } -} - -static void BS2POLq(poly *data, const uint8_t bytes[SABER_POLYBYTES]) { - /* This function does not reduce its output mod Q */ - size_t j; - const uint8_t *in = bytes; - uint16_t *out = data->coeffs; - for (j = 0; j < SABER_N / 8; j++) { - out[0] = (in[0]) | (in[1] << 8); - out[1] = (in[1] >> 5) | (in[2] << 3) | (in[3] << 11); - out[2] = (in[3] >> 2) | (in[4] << 6); - out[3] = (in[4] >> 7) | (in[5] << 1) | (in[6] << 9); - out[4] = (in[6] >> 4) | (in[7] << 4) | (in[8] << 12); - out[5] = (in[8] >> 1) | (in[9] << 7); - out[6] = (in[9] >> 6) | (in[10] << 2) | (in[11] << 10); - out[7] = (in[11] >> 3) | (in[12] << 5); - in += 13; - out += 8; - } -} - -static void POLp2BS(uint8_t bytes[SABER_POLYCOMPRESSEDBYTES], const poly *data) { - size_t j; - const uint16_t *in = data->coeffs; - uint8_t *out = bytes; - for (j = 0; j < SABER_N / 4; j++) { - out[0] = (uint8_t) (in[0]); - out[1] = (uint8_t) (((in[0] >> 8) & 0x03) | (in[1] << 2)); - out[2] = (uint8_t) (((in[1] >> 6) & 0x0f) | (in[2] << 4)); - out[3] = (uint8_t) (((in[2] >> 4) & 0x3f) | (in[3] << 6)); - out[4] = (uint8_t) (in[3] >> 2); - in += 4; - out += 5; - } -} - -static void BS2POLp(poly *data, const uint8_t bytes[SABER_POLYCOMPRESSEDBYTES]) { - size_t j; - const uint8_t *in = bytes; - uint16_t *out = data->coeffs; - for (j = 0; j < SABER_N / 4; j++) { - out[0] = in[0] | (in[1] << 8); - out[1] = (in[1] >> 2) | (in[2] << 6); - out[2] = (in[2] >> 4) | (in[3] << 4); - out[3] = (in[3] >> 6) | (in[4] << 2); - in += 5; - out += 4; - } -} - -void PQCLEAN_SABER_CLEAN_POLVECq2BS(uint8_t bytes[SABER_POLYVECBYTES], const poly data[SABER_L]) { - size_t i; - for (i = 0; i < SABER_L; i++) { - POLq2BS(bytes + i * SABER_POLYBYTES, &data[i]); - } -} - -void PQCLEAN_SABER_CLEAN_BS2POLVECq(poly data[SABER_L], const uint8_t bytes[SABER_POLYVECBYTES]) { - size_t i; - for (i = 0; i < SABER_L; i++) { - BS2POLq(&data[i], bytes + i * SABER_POLYBYTES); - } -} - -void PQCLEAN_SABER_CLEAN_POLVECp2BS(uint8_t bytes[SABER_POLYVECCOMPRESSEDBYTES], const poly data[SABER_L]) { - size_t i; - for (i = 0; i < SABER_L; i++) { - POLp2BS(bytes + i * SABER_POLYCOMPRESSEDBYTES, &data[i]); - } -} - -void PQCLEAN_SABER_CLEAN_BS2POLVECp(poly data[SABER_L], const uint8_t bytes[SABER_POLYVECCOMPRESSEDBYTES]) { - size_t i; - for (i = 0; i < SABER_L; i++) { - BS2POLp(&data[i], bytes + i * SABER_POLYCOMPRESSEDBYTES); - } -} - -void PQCLEAN_SABER_CLEAN_BS2POLmsg(poly *data, const uint8_t bytes[SABER_KEYBYTES]) { - size_t i, j; - for (j = 0; j < SABER_KEYBYTES; j++) { - for (i = 0; i < 8; i++) { - data->coeffs[j * 8 + i] = ((bytes[j] >> i) & 0x01); - } - } -} - -void PQCLEAN_SABER_CLEAN_POLmsg2BS(uint8_t bytes[SABER_KEYBYTES], const poly *data) { - size_t i, j; - memset(bytes, 0, SABER_KEYBYTES); - - for (j = 0; j < SABER_KEYBYTES; j++) { - for (i = 0; i < 8; i++) { - bytes[j] = bytes[j] | ((data->coeffs[j * 8 + i] & 0x01) << i); - } - } -} diff --git a/src/kem/saber/saber/clean/pack_unpack.h b/src/kem/saber/saber/clean/pack_unpack.h deleted file mode 100644 index fc6a3abf..00000000 --- a/src/kem/saber/saber/clean/pack_unpack.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef PACK_UNPACK_H -#define PACK_UNPACK_H -#include "SABER_params.h" -#include "poly.h" -#include -#include - -void PQCLEAN_SABER_CLEAN_POLT2BS(uint8_t bytes[SABER_SCALEBYTES_KEM], const poly *data); - -void PQCLEAN_SABER_CLEAN_BS2POLT(poly *data, const uint8_t bytes[SABER_SCALEBYTES_KEM]); - - -void PQCLEAN_SABER_CLEAN_POLVECq2BS(uint8_t bytes[SABER_POLYVECBYTES], const poly data[SABER_L]); - -void PQCLEAN_SABER_CLEAN_POLVECp2BS(uint8_t bytes[SABER_POLYVECCOMPRESSEDBYTES], const poly data[SABER_L]); - - -void PQCLEAN_SABER_CLEAN_BS2POLVECq(poly data[SABER_L], const uint8_t bytes[SABER_POLYVECBYTES]); - -void PQCLEAN_SABER_CLEAN_BS2POLVECp(poly data[SABER_L], const uint8_t bytes[SABER_POLYVECCOMPRESSEDBYTES]); - - -void PQCLEAN_SABER_CLEAN_BS2POLmsg(poly *data, const uint8_t bytes[SABER_KEYBYTES]); - -void PQCLEAN_SABER_CLEAN_POLmsg2BS(uint8_t bytes[SABER_KEYBYTES], const poly *data); - - -#endif diff --git a/src/kem/saber/saber/clean/poly.c b/src/kem/saber/saber/clean/poly.c deleted file mode 100644 index 588d0c99..00000000 --- a/src/kem/saber/saber/clean/poly.c +++ /dev/null @@ -1,57 +0,0 @@ -#include "api.h" -#include "cbd.h" -#include "fips202.h" -#include "pack_unpack.h" -#include "poly.h" -#include - -void PQCLEAN_SABER_CLEAN_MatrixVectorMul(poly c[SABER_L], const poly A[SABER_L][SABER_L], const poly s[SABER_L], int16_t transpose) { - size_t i, j; - - if (transpose) { - for (i = 0; i < SABER_L; i++) { - PQCLEAN_SABER_CLEAN_poly_mul(&c[i], &A[0][i], &s[0], 0); - for (j = 1; j < SABER_L; j++) { - PQCLEAN_SABER_CLEAN_poly_mul(&c[i], &A[j][i], &s[j], 1); - } - } - } else { - for (i = 0; i < SABER_L; i++) { - PQCLEAN_SABER_CLEAN_poly_mul(&c[i], &A[i][0], &s[0], 0); - for (j = 1; j < SABER_L; j++) { - PQCLEAN_SABER_CLEAN_poly_mul(&c[i], &A[i][j], &s[j], 1); - } - } - } -} - -void PQCLEAN_SABER_CLEAN_InnerProd(poly *c, const poly b[SABER_L], const poly s[SABER_L]) { - size_t i; - - PQCLEAN_SABER_CLEAN_poly_mul(c, &b[0], &s[0], 0); - for (i = 1; i < SABER_L; i++) { - PQCLEAN_SABER_CLEAN_poly_mul(c, &b[i], &s[i], 1); - } -} - -void PQCLEAN_SABER_CLEAN_GenMatrix(poly A[SABER_L][SABER_L], const uint8_t seed[SABER_SEEDBYTES]) { - size_t i; - uint8_t buf[SABER_L * SABER_POLYVECBYTES]; - - shake128(buf, sizeof(buf), seed, SABER_SEEDBYTES); - - for (i = 0; i < SABER_L; i++) { - PQCLEAN_SABER_CLEAN_BS2POLVECq(A[i], buf + i * SABER_POLYVECBYTES); - } -} - -void PQCLEAN_SABER_CLEAN_GenSecret(poly s[SABER_L], const uint8_t seed[SABER_NOISESEEDBYTES]) { - size_t i; - uint8_t buf[SABER_L * SABER_POLYCOINBYTES]; - - shake128(buf, sizeof(buf), seed, SABER_NOISESEEDBYTES); - - for (i = 0; i < SABER_L; i++) { - PQCLEAN_SABER_CLEAN_cbd(s[i].coeffs, buf + i * SABER_POLYCOINBYTES); - } -} diff --git a/src/kem/saber/saber/clean/poly.h b/src/kem/saber/saber/clean/poly.h deleted file mode 100644 index d365b489..00000000 --- a/src/kem/saber/saber/clean/poly.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef POLY_H -#define POLY_H -#include "SABER_params.h" -#include - -typedef union { - uint16_t coeffs[SABER_N]; -} poly; - - -void PQCLEAN_SABER_CLEAN_MatrixVectorMul(poly c[SABER_L], const poly A[SABER_L][SABER_L], const poly s[SABER_L], int16_t transpose); - -void PQCLEAN_SABER_CLEAN_InnerProd(poly *c, const poly b[SABER_L], const poly s[SABER_L]); - -void PQCLEAN_SABER_CLEAN_GenMatrix(poly A[SABER_L][SABER_L], const uint8_t seed[SABER_SEEDBYTES]); - -void PQCLEAN_SABER_CLEAN_GenSecret(poly s[SABER_L], const uint8_t seed[SABER_NOISESEEDBYTES]); - - -void PQCLEAN_SABER_CLEAN_poly_mul(poly *c, const poly *a, const poly *b, int accumulate); - - -#endif diff --git a/src/kem/saber/saber/clean/poly_mul.c b/src/kem/saber/saber/clean/poly_mul.c deleted file mode 100644 index 0e03ff99..00000000 --- a/src/kem/saber/saber/clean/poly_mul.c +++ /dev/null @@ -1,248 +0,0 @@ -#include "poly.h" -#include -#include - -#define SCHB_N 16 - -#define N_RES (SABER_N << 1) -#define N_SB (SABER_N >> 2) -#define N_SB_RES (2*N_SB-1) - -#define OVERFLOWING_MUL(X, Y) ((uint16_t)((uint32_t)(X) * (uint32_t)(Y))) - -#define KARATSUBA_N 64 -static void karatsuba_simple(uint16_t *result_final, const uint16_t *a_1, const uint16_t *b_1) { - uint16_t d01[KARATSUBA_N / 2 - 1]; - uint16_t d0123[KARATSUBA_N / 2 - 1]; - uint16_t d23[KARATSUBA_N / 2 - 1]; - uint16_t result_d01[KARATSUBA_N - 1]; - - size_t i, j; - - memset(result_d01, 0, (KARATSUBA_N - 1)*sizeof(uint16_t)); - memset(d01, 0, (KARATSUBA_N / 2 - 1)*sizeof(uint16_t)); - memset(d0123, 0, (KARATSUBA_N / 2 - 1)*sizeof(uint16_t)); - memset(d23, 0, (KARATSUBA_N / 2 - 1)*sizeof(uint16_t)); - memset(result_final, 0, (2 * KARATSUBA_N - 1)*sizeof(uint16_t)); - - uint16_t acc1, acc2, acc3, acc4, acc5, acc6, acc7, acc8, acc9, acc10; - - - for (i = 0; i < KARATSUBA_N / 4; i++) { - acc1 = a_1[i]; //a0 - acc2 = a_1[i + KARATSUBA_N / 4]; //a1 - acc3 = a_1[i + 2 * KARATSUBA_N / 4]; //a2 - acc4 = a_1[i + 3 * KARATSUBA_N / 4]; //a3 - for (j = 0; j < KARATSUBA_N / 4; j++) { - - acc5 = b_1[j]; //b0 - acc6 = b_1[j + KARATSUBA_N / 4]; //b1 - - result_final[i + j + 0 * KARATSUBA_N / 4] = - result_final[i + j + 0 * KARATSUBA_N / 4] + - OVERFLOWING_MUL(acc1, acc5); - result_final[i + j + 2 * KARATSUBA_N / 4] = - result_final[i + j + 2 * KARATSUBA_N / 4] + - OVERFLOWING_MUL(acc2, acc6); - - acc7 = acc5 + acc6; //b01 - acc8 = acc1 + acc2; //a01 - d01[i + j] = d01[i + j] + (uint16_t)(acc7 * (uint64_t)acc8); - //-------------------------------------------------------- - - acc7 = b_1[j + 2 * KARATSUBA_N / 4]; //b2 - acc8 = b_1[j + 3 * KARATSUBA_N / 4]; //b3 - result_final[i + j + 4 * KARATSUBA_N / 4] = - result_final[i + j + 4 * KARATSUBA_N / 4] + - OVERFLOWING_MUL(acc7, acc3); - - result_final[i + j + 6 * KARATSUBA_N / 4] = - result_final[i + j + 6 * KARATSUBA_N / 4] + - OVERFLOWING_MUL(acc8, acc4); - - acc9 = acc3 + acc4; - acc10 = acc7 + acc8; - d23[i + j] = d23[i + j] + OVERFLOWING_MUL(acc9, acc10); - //-------------------------------------------------------- - - acc5 = acc5 + acc7; //b02 - acc7 = acc1 + acc3; //a02 - result_d01[i + j + 0 * KARATSUBA_N / 4] = - result_d01[i + j + 0 * KARATSUBA_N / 4] + - OVERFLOWING_MUL(acc5, acc7); - - acc6 = acc6 + acc8; //b13 - acc8 = acc2 + acc4; - result_d01[i + j + 2 * KARATSUBA_N / 4] = - result_d01[i + j + 2 * KARATSUBA_N / 4] + - OVERFLOWING_MUL(acc6, acc8); - - acc5 = acc5 + acc6; - acc7 = acc7 + acc8; - d0123[i + j] = d0123[i + j] + OVERFLOWING_MUL(acc5, acc7); - } - } - - // 2nd last stage - - for (i = 0; i < KARATSUBA_N / 2 - 1; i++) { - d0123[i] = d0123[i] - result_d01[i + 0 * KARATSUBA_N / 4] - result_d01[i + 2 * KARATSUBA_N / 4]; - d01[i] = d01[i] - result_final[i + 0 * KARATSUBA_N / 4] - result_final[i + 2 * KARATSUBA_N / 4]; - d23[i] = d23[i] - result_final[i + 4 * KARATSUBA_N / 4] - result_final[i + 6 * KARATSUBA_N / 4]; - } - - for (i = 0; i < KARATSUBA_N / 2 - 1; i++) { - result_d01[i + 1 * KARATSUBA_N / 4] = result_d01[i + 1 * KARATSUBA_N / 4] + d0123[i]; - result_final[i + 1 * KARATSUBA_N / 4] = result_final[i + 1 * KARATSUBA_N / 4] + d01[i]; - result_final[i + 5 * KARATSUBA_N / 4] = result_final[i + 5 * KARATSUBA_N / 4] + d23[i]; - } - - // Last stage - for (i = 0; i < KARATSUBA_N - 1; i++) { - result_d01[i] = result_d01[i] - result_final[i] - result_final[i + KARATSUBA_N]; - } - - for (i = 0; i < KARATSUBA_N - 1; i++) { - result_final[i + 1 * KARATSUBA_N / 2] = result_final[i + 1 * KARATSUBA_N / 2] + result_d01[i]; - } - -} - - - -static void toom_cook_4way (uint16_t *result, const uint16_t *a1, const uint16_t *b1) { - uint16_t inv3 = 43691, inv9 = 36409, inv15 = 61167; - - uint16_t aw1[N_SB], aw2[N_SB], aw3[N_SB], aw4[N_SB], aw5[N_SB], aw6[N_SB], aw7[N_SB]; - uint16_t bw1[N_SB], bw2[N_SB], bw3[N_SB], bw4[N_SB], bw5[N_SB], bw6[N_SB], bw7[N_SB]; - uint16_t w1[N_SB_RES] = {0}, w2[N_SB_RES] = {0}, w3[N_SB_RES] = {0}, w4[N_SB_RES] = {0}, - w5[N_SB_RES] = {0}, w6[N_SB_RES] = {0}, w7[N_SB_RES] = {0}; - uint16_t r0, r1, r2, r3, r4, r5, r6, r7; - uint16_t *A0, *A1, *A2, *A3, *B0, *B1, *B2, *B3; - A0 = (uint16_t *)a1; - A1 = (uint16_t *)&a1[N_SB]; - A2 = (uint16_t *)&a1[2 * N_SB]; - A3 = (uint16_t *)&a1[3 * N_SB]; - B0 = (uint16_t *)b1; - B1 = (uint16_t *)&b1[N_SB]; - B2 = (uint16_t *)&b1[2 * N_SB]; - B3 = (uint16_t *)&b1[3 * N_SB]; - - uint16_t *C; - C = result; - - int i, j; - - // EVALUATION - for (j = 0; j < N_SB; ++j) { - r0 = A0[j]; - r1 = A1[j]; - r2 = A2[j]; - r3 = A3[j]; - r4 = r0 + r2; - r5 = r1 + r3; - r6 = r4 + r5; - r7 = r4 - r5; - aw3[j] = r6; - aw4[j] = r7; - r4 = ((r0 << 2) + r2) << 1; - r5 = (r1 << 2) + r3; - r6 = r4 + r5; - r7 = r4 - r5; - aw5[j] = r6; - aw6[j] = r7; - r4 = (r3 << 3) + (r2 << 2) + (r1 << 1) + r0; - aw2[j] = r4; - aw7[j] = r0; - aw1[j] = r3; - } - for (j = 0; j < N_SB; ++j) { - r0 = B0[j]; - r1 = B1[j]; - r2 = B2[j]; - r3 = B3[j]; - r4 = r0 + r2; - r5 = r1 + r3; - r6 = r4 + r5; - r7 = r4 - r5; - bw3[j] = r6; - bw4[j] = r7; - r4 = ((r0 << 2) + r2) << 1; - r5 = (r1 << 2) + r3; - r6 = r4 + r5; - r7 = r4 - r5; - bw5[j] = r6; - bw6[j] = r7; - r4 = (r3 << 3) + (r2 << 2) + (r1 << 1) + r0; - bw2[j] = r4; - bw7[j] = r0; - bw1[j] = r3; - } - - // MULTIPLICATION - - karatsuba_simple(w1, aw1, bw1); - karatsuba_simple(w2, aw2, bw2); - karatsuba_simple(w3, aw3, bw3); - karatsuba_simple(w4, aw4, bw4); - karatsuba_simple(w5, aw5, bw5); - karatsuba_simple(w6, aw6, bw6); - karatsuba_simple(w7, aw7, bw7); - - // INTERPOLATION - for (i = 0; i < N_SB_RES; ++i) { - r0 = w1[i]; - r1 = w2[i]; - r2 = w3[i]; - r3 = w4[i]; - r4 = w5[i]; - r5 = w6[i]; - r6 = w7[i]; - - r1 = r1 + r4; - r5 = r5 - r4; - r3 = ((r3 - r2) >> 1); - r4 = r4 - r0; - r4 = r4 - (r6 << 6); - r4 = (r4 << 1) + r5; - r2 = r2 + r3; - r1 = r1 - (r2 << 6) - r2; - r2 = r2 - r6; - r2 = r2 - r0; - r1 = r1 + 45 * r2; - r4 = (uint16_t)(((r4 - (r2 << 3)) * (uint32_t)inv3) >> 3); - r5 = r5 + r1; - r1 = (uint16_t)(((r1 + (r3 << 4)) * (uint32_t)inv9) >> 1); - r3 = -(r3 + r1); - r5 = (uint16_t)(((30 * r1 - r5) * (uint32_t)inv15) >> 2); - r2 = r2 - r4; - r1 = r1 - r5; - - C[i] += r6; - C[i + 64] += r5; - C[i + 128] += r4; - C[i + 192] += r3; - C[i + 256] += r2; - C[i + 320] += r1; - C[i + 384] += r0; - } -} - -/* res += a*b */ -void PQCLEAN_SABER_CLEAN_poly_mul(poly *c, const poly *a, const poly *b, const int accumulate) { - uint16_t C[2 * SABER_N] = {0}; - size_t i; - - toom_cook_4way(C, a->coeffs, b->coeffs); - - /* reduction */ - if (accumulate == 0) { - for (i = SABER_N; i < 2 * SABER_N; i++) { - c->coeffs[i - SABER_N] = (C[i - SABER_N] - C[i]); - } - } else { - for (i = SABER_N; i < 2 * SABER_N; i++) { - c->coeffs[i - SABER_N] += (C[i - SABER_N] - C[i]); - } - } -} diff --git a/src/kem/saber/saber/clean/poly_mul.h b/src/kem/saber/saber/clean/poly_mul.h deleted file mode 100644 index b28b04f6..00000000 --- a/src/kem/saber/saber/clean/poly_mul.h +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/kem/saber/saber/clean/verify.c b/src/kem/saber/saber/clean/verify.c deleted file mode 100644 index 72f4dd34..00000000 --- a/src/kem/saber/saber/clean/verify.c +++ /dev/null @@ -1,35 +0,0 @@ -#include "verify.h" - -/*------------------------------------------------- -This file has been adapted from the implementation -(available at https://github.com/pq-crystals/kyber) of -"CRYSTALS – Kyber: a CCA-secure module-lattice-based KEM" - by : Joppe Bos, Leo Ducas, Eike Kiltz, Tancrede Lepoint, -Vadim Lyubashevsky, John M. Schanck, Peter Schwabe & Damien stehle -----------------------------------------------------*/ - - -/* returns 0 for equal strings, 1 for non-equal strings */ -uint8_t PQCLEAN_SABER_CLEAN_verify(const uint8_t *a, const uint8_t *b, size_t len) { - uint64_t r; - size_t i; - r = 0; - - for (i = 0; i < len; i++) { - r |= a[i] ^ b[i]; - } - - r = (~r + 1); // Two's complement - r >>= 63; - return (uint8_t) r; -} - -/* b = 1 means mov, b = 0 means don't mov*/ -void PQCLEAN_SABER_CLEAN_cmov(uint8_t *r, const uint8_t *x, size_t len, uint8_t b) { - size_t i; - - b = -b; - for (i = 0; i < len; i++) { - r[i] ^= b & (x[i] ^ r[i]); - } -} diff --git a/src/kem/saber/saber/clean/verify.h b/src/kem/saber/saber/clean/verify.h deleted file mode 100644 index f88fe396..00000000 --- a/src/kem/saber/saber/clean/verify.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef VERIFY_H -#define VERIFY_H -/*------------------------------------------------- -This file has been adapted from the implementation -(available at https://github.com/pq-crystals/kyber) of -"CRYSTALS – Kyber: a CCA-secure module-lattice-based KEM" - by : Joppe Bos, Leo Ducas, Eike Kiltz, Tancrede Lepoint, -Vadim Lyubashevsky, John M. Schanck, Peter Schwabe & Damien stehle -----------------------------------------------------*/ - -#include -#include - -/* returns 0 for equal strings, 1 for non-equal strings */ -uint8_t PQCLEAN_SABER_CLEAN_verify(const uint8_t *a, const uint8_t *b, size_t len); - - -/* b = 1 means mov, b = 0 means don't mov*/ -void PQCLEAN_SABER_CLEAN_cmov(uint8_t *r, const uint8_t *x, size_t len, uint8_t b); - - -#endif diff --git a/test/katrunner/src/main.rs b/test/katrunner/src/main.rs index dc1a107d..fb1ead2f 100644 --- a/test/katrunner/src/main.rs +++ b/test/katrunner/src/main.rs @@ -282,23 +282,9 @@ const KATS: &'static[Register] = &[ REG_SIGN!(PQC_ALG_SIG_SPHINCSSHAKE256256SROBUST,"round3/sphincs/sphincs-shake256-256s-robust/PQCsignKAT_128.rsp"), // KEM Schemes - REG_KEM!(PQC_ALG_KEM_FRODOKEM640SHAKE, "round3/frodokem/PQCkemKAT_19888_shake.rsp"), - REG_KEM!(PQC_ALG_KEM_FRODOKEM976SHAKE, "round3/frodokem/PQCkemKAT_31296_shake.rsp"), - REG_KEM!(PQC_ALG_KEM_FRODOKEM1344SHAKE, "round3/frodokem/PQCkemKAT_43088_shake.rsp"), REG_KEM!(PQC_ALG_KEM_KYBER768, "round3/kyber/kyber768/PQCkemKAT_2400.rsp"), REG_KEM!(PQC_ALG_KEM_KYBER1024, "round3/kyber/kyber1024/PQCkemKAT_3168.rsp"), REG_KEM!(PQC_ALG_KEM_KYBER512, "round3/kyber/kyber512/PQCkemKAT_1632.rsp"), - REG_KEM!(PQC_ALG_KEM_NTRUHPS4096821, "round3/ntru/ntruhps4096821/PQCkemKAT_1590.rsp"), - REG_KEM!(PQC_ALG_KEM_NTRUHPS2048509, "round3/ntru/ntruhps2048509/PQCkemKAT_935.rsp"), - REG_KEM!(PQC_ALG_KEM_NTRUHRSS701, "round3/ntru/ntruhrss701/PQCkemKAT_1450.rsp"), - REG_KEM!(PQC_ALG_KEM_NTRUHPS2048677, "round3/ntru/ntruhps2048677/PQCkemKAT_1234.rsp"), - // For some reason NTRUL doesn't pass the tests (keygeneration) - //REG_KEM!(PQC_ALG_KEM_NTRULPR761, "round3/ntrup/ntrulpr761/kat_kem.rsp"), - //REG_KEM!(PQC_ALG_KEM_NTRULPR653, "round3/ntrup/ntrulpr653/kat_kem.rsp"), - //REG_KEM!(PQC_ALG_KEM_NTRULPR857, "round3/ntrup/ntrulpr857/kat_kem.rsp"), - REG_KEM!(PQC_ALG_KEM_LIGHTSABER, "round3/saber/LightSaber/PQCkemKAT_1568.rsp"), - REG_KEM!(PQC_ALG_KEM_FIRESABER, "round3/saber/FireSaber/PQCkemKAT_3040.rsp"), - REG_KEM!(PQC_ALG_KEM_SABER, "round3/saber/Saber/PQCkemKAT_2304.rsp"), REG_KEM!(PQC_ALG_KEM_HQCRMRS128, "round3/hqc/hqc-128/hqc-128_kat.rsp"), REG_KEM!(PQC_ALG_KEM_HQCRMRS192, "round3/hqc/hqc-192/hqc-192_kat.rsp"), REG_KEM!(PQC_ALG_KEM_HQCRMRS256, "round3/hqc/hqc-256/hqc-256_kat.rsp"),