From f37f0f3e8529b55f771d97eee5a954f6257e91ee Mon Sep 17 00:00:00 2001 From: "John M. Schanck" Date: Mon, 24 Aug 2020 08:58:55 -0400 Subject: [PATCH] Update NTRU and add AVX2 NTRU implementations --- crypto_kem/ntruhps2048509/META.yml | 17 +- crypto_kem/ntruhps2048509/avx2/LICENSE | 1 + crypto_kem/ntruhps2048509/avx2/Makefile | 24 + crypto_kem/ntruhps2048509/avx2/api.h | 19 + crypto_kem/ntruhps2048509/avx2/cmov.c | 11 + crypto_kem/ntruhps2048509/avx2/cmov.h | 10 + .../ntruhps2048509/avx2/crypto_sort_int32.c | 1215 ++ .../ntruhps2048509/avx2/crypto_sort_int32.h | 11 + crypto_kem/ntruhps2048509/avx2/kem.c | 68 + crypto_kem/ntruhps2048509/avx2/owcpa.c | 160 + crypto_kem/ntruhps2048509/avx2/owcpa.h | 22 + crypto_kem/ntruhps2048509/avx2/pack3.c | 46 + crypto_kem/ntruhps2048509/avx2/packq.c | 93 + crypto_kem/ntruhps2048509/avx2/params.h | 37 + crypto_kem/ntruhps2048509/avx2/poly.c | 67 + crypto_kem/ntruhps2048509/avx2/poly.h | 41 + crypto_kem/ntruhps2048509/avx2/poly_lift.c | 11 + .../ntruhps2048509/avx2/poly_mod_3_Phi_n.s | 676 + .../ntruhps2048509/avx2/poly_mod_q_Phi_n.s | 80 + crypto_kem/ntruhps2048509/avx2/poly_r2_inv.c | 80 + crypto_kem/ntruhps2048509/avx2/poly_r2_inv.h | 20 + crypto_kem/ntruhps2048509/avx2/poly_r2_mul.s | 285 + crypto_kem/ntruhps2048509/avx2/poly_rq_mul.s | 5625 ++++++ .../ntruhps2048509/avx2/poly_rq_to_s3.s | 955 + crypto_kem/ntruhps2048509/avx2/poly_s3_inv.c | 463 + crypto_kem/ntruhps2048509/avx2/sample.c | 46 + crypto_kem/ntruhps2048509/avx2/sample.h | 15 + crypto_kem/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 + crypto_kem/ntruhps2048509/clean/Makefile | 4 +- .../clean/Makefile.Microsoft_nmake | 2 +- crypto_kem/ntruhps2048509/clean/api.h | 2 +- crypto_kem/ntruhps2048509/clean/cmov.c | 11 + crypto_kem/ntruhps2048509/clean/cmov.h | 10 + crypto_kem/ntruhps2048509/clean/crypto_sort.c | 50 - crypto_kem/ntruhps2048509/clean/crypto_sort.h | 6 - .../ntruhps2048509/clean/crypto_sort_int32.c | 86 + .../ntruhps2048509/clean/crypto_sort_int32.h | 11 + crypto_kem/ntruhps2048509/clean/kem.c | 6 +- crypto_kem/ntruhps2048509/clean/owcpa.c | 1 + crypto_kem/ntruhps2048509/clean/pack3.c | 1 - crypto_kem/ntruhps2048509/clean/packq.c | 14 +- crypto_kem/ntruhps2048509/clean/params.h | 1 + crypto_kem/ntruhps2048509/clean/poly.h | 8 +- crypto_kem/ntruhps2048509/clean/poly_lift.c | 1 + crypto_kem/ntruhps2048509/clean/poly_r2_inv.c | 150 +- crypto_kem/ntruhps2048509/clean/poly_s3_inv.c | 167 +- crypto_kem/ntruhps2048509/clean/sample.c | 15 +- crypto_kem/ntruhps2048509/clean/sample.h | 3 +- crypto_kem/ntruhps2048509/clean/verify.c | 29 - crypto_kem/ntruhps2048509/clean/verify.h | 12 - crypto_kem/ntruhps2048677/META.yml | 17 +- crypto_kem/ntruhps2048677/avx2/LICENSE | 1 + crypto_kem/ntruhps2048677/avx2/Makefile | 24 + crypto_kem/ntruhps2048677/avx2/api.h | 19 + crypto_kem/ntruhps2048677/avx2/cmov.c | 11 + crypto_kem/ntruhps2048677/avx2/cmov.h | 10 + .../ntruhps2048677/avx2/crypto_sort_int32.c | 1215 ++ .../ntruhps2048677/avx2/crypto_sort_int32.h | 11 + crypto_kem/ntruhps2048677/avx2/kem.c | 68 + crypto_kem/ntruhps2048677/avx2/owcpa.c | 160 + crypto_kem/ntruhps2048677/avx2/owcpa.h | 22 + crypto_kem/ntruhps2048677/avx2/pack3.c | 46 + crypto_kem/ntruhps2048677/avx2/packq.c | 93 + crypto_kem/ntruhps2048677/avx2/params.h | 37 + crypto_kem/ntruhps2048677/avx2/poly.c | 67 + crypto_kem/ntruhps2048677/avx2/poly.h | 41 + crypto_kem/ntruhps2048677/avx2/poly_lift.c | 11 + .../ntruhps2048677/avx2/poly_mod_3_Phi_n.s | 928 + .../ntruhps2048677/avx2/poly_mod_q_Phi_n.s | 104 + crypto_kem/ntruhps2048677/avx2/poly_r2_inv.c | 73 + crypto_kem/ntruhps2048677/avx2/poly_r2_inv.h | 23 + crypto_kem/ntruhps2048677/avx2/poly_r2_mul.s | 466 + crypto_kem/ntruhps2048677/avx2/poly_rq_mul.s | 8010 ++++++++ .../ntruhps2048677/avx2/poly_rq_to_s3.s | 1255 ++ crypto_kem/ntruhps2048677/avx2/poly_s3_inv.c | 569 + crypto_kem/ntruhps2048677/avx2/sample.c | 46 + crypto_kem/ntruhps2048677/avx2/sample.h | 15 + crypto_kem/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 + crypto_kem/ntruhps2048677/clean/Makefile | 6 +- .../clean/Makefile.Microsoft_nmake | 2 +- crypto_kem/ntruhps2048677/clean/api.h | 2 +- crypto_kem/ntruhps2048677/clean/cmov.c | 11 + crypto_kem/ntruhps2048677/clean/cmov.h | 10 + crypto_kem/ntruhps2048677/clean/crypto_sort.c | 50 - crypto_kem/ntruhps2048677/clean/crypto_sort.h | 6 - .../ntruhps2048677/clean/crypto_sort_int32.c | 86 + .../ntruhps2048677/clean/crypto_sort_int32.h | 11 + crypto_kem/ntruhps2048677/clean/kem.c | 6 +- crypto_kem/ntruhps2048677/clean/owcpa.c | 1 + crypto_kem/ntruhps2048677/clean/pack3.c | 1 - crypto_kem/ntruhps2048677/clean/packq.c | 14 +- crypto_kem/ntruhps2048677/clean/params.h | 1 + crypto_kem/ntruhps2048677/clean/poly.h | 8 +- crypto_kem/ntruhps2048677/clean/poly_lift.c | 1 + crypto_kem/ntruhps2048677/clean/poly_r2_inv.c | 150 +- crypto_kem/ntruhps2048677/clean/poly_s3_inv.c | 167 +- crypto_kem/ntruhps2048677/clean/sample.c | 15 +- crypto_kem/ntruhps2048677/clean/sample.h | 3 +- crypto_kem/ntruhps2048677/clean/verify.c | 29 - crypto_kem/ntruhps2048677/clean/verify.h | 12 - crypto_kem/ntruhps4096821/META.yml | 17 +- crypto_kem/ntruhps4096821/avx2/LICENSE | 1 + crypto_kem/ntruhps4096821/avx2/Makefile | 24 + crypto_kem/ntruhps4096821/avx2/api.h | 19 + crypto_kem/ntruhps4096821/avx2/cmov.c | 11 + crypto_kem/ntruhps4096821/avx2/cmov.h | 10 + .../ntruhps4096821/avx2/crypto_sort_int32.c | 1215 ++ .../ntruhps4096821/avx2/crypto_sort_int32.h | 11 + crypto_kem/ntruhps4096821/avx2/kem.c | 68 + crypto_kem/ntruhps4096821/avx2/owcpa.c | 160 + crypto_kem/ntruhps4096821/avx2/owcpa.h | 22 + crypto_kem/ntruhps4096821/avx2/pack3.c | 32 + crypto_kem/ntruhps4096821/avx2/packq.c | 36 + crypto_kem/ntruhps4096821/avx2/params.h | 37 + crypto_kem/ntruhps4096821/avx2/poly.c | 67 + crypto_kem/ntruhps4096821/avx2/poly.h | 41 + crypto_kem/ntruhps4096821/avx2/poly_lift.c | 11 + .../ntruhps4096821/avx2/poly_mod_3_Phi_n.s | 1064 + .../ntruhps4096821/avx2/poly_mod_q_Phi_n.s | 120 + crypto_kem/ntruhps4096821/avx2/poly_r2_inv.c | 89 + crypto_kem/ntruhps4096821/avx2/poly_r2_inv.h | 21 + crypto_kem/ntruhps4096821/avx2/poly_r2_mul.s | 748 + crypto_kem/ntruhps4096821/avx2/poly_rq_mul.s | 10893 +++++++++++ .../ntruhps4096821/avx2/poly_rq_to_s3.s | 1455 ++ crypto_kem/ntruhps4096821/avx2/poly_s3_inv.c | 685 + crypto_kem/ntruhps4096821/avx2/sample.c | 46 + crypto_kem/ntruhps4096821/avx2/sample.h | 15 + crypto_kem/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 ++ crypto_kem/ntruhps4096821/clean/Makefile | 6 +- .../clean/Makefile.Microsoft_nmake | 2 +- crypto_kem/ntruhps4096821/clean/api.h | 2 +- crypto_kem/ntruhps4096821/clean/cmov.c | 11 + crypto_kem/ntruhps4096821/clean/cmov.h | 10 + crypto_kem/ntruhps4096821/clean/crypto_sort.c | 50 - crypto_kem/ntruhps4096821/clean/crypto_sort.h | 6 - .../ntruhps4096821/clean/crypto_sort_int32.c | 86 + .../ntruhps4096821/clean/crypto_sort_int32.h | 11 + crypto_kem/ntruhps4096821/clean/kem.c | 6 +- crypto_kem/ntruhps4096821/clean/owcpa.c | 1 + crypto_kem/ntruhps4096821/clean/pack3.c | 1 - crypto_kem/ntruhps4096821/clean/params.h | 1 + crypto_kem/ntruhps4096821/clean/poly.h | 8 +- crypto_kem/ntruhps4096821/clean/poly_lift.c | 1 + crypto_kem/ntruhps4096821/clean/poly_r2_inv.c | 150 +- crypto_kem/ntruhps4096821/clean/poly_s3_inv.c | 167 +- crypto_kem/ntruhps4096821/clean/sample.c | 15 +- crypto_kem/ntruhps4096821/clean/sample.h | 3 +- crypto_kem/ntruhps4096821/clean/verify.c | 29 - crypto_kem/ntruhps4096821/clean/verify.h | 12 - crypto_kem/ntruhrss701/META.yml | 17 +- crypto_kem/ntruhrss701/avx2/LICENSE | 1 + crypto_kem/ntruhrss701/avx2/Makefile | 24 + crypto_kem/ntruhrss701/avx2/api.h | 19 + crypto_kem/ntruhrss701/avx2/cmov.c | 11 + crypto_kem/ntruhrss701/avx2/cmov.h | 10 + crypto_kem/ntruhrss701/avx2/kem.c | 68 + crypto_kem/ntruhrss701/avx2/owcpa.c | 142 + crypto_kem/ntruhrss701/avx2/owcpa.h | 22 + crypto_kem/ntruhrss701/avx2/pack3.c | 32 + crypto_kem/ntruhrss701/avx2/packq.c | 98 + crypto_kem/ntruhrss701/avx2/params.h | 35 + crypto_kem/ntruhrss701/avx2/poly.c | 67 + crypto_kem/ntruhrss701/avx2/poly.h | 41 + .../ntruhrss701/avx2/poly_mod_3_Phi_n.s | 901 + .../ntruhrss701/avx2/poly_mod_q_Phi_n.s | 104 + crypto_kem/ntruhrss701/avx2/poly_r2_inv.c | 73 + crypto_kem/ntruhrss701/avx2/poly_r2_inv.h | 22 + crypto_kem/ntruhrss701/avx2/poly_r2_mul.s | 466 + crypto_kem/ntruhrss701/avx2/poly_rq_mul.s | 8457 ++++++++ .../ntruhrss701/avx2/poly_rq_mul_x_minus_1.s | 277 + crypto_kem/ntruhrss701/avx2/poly_rq_to_s3.s | 1255 ++ crypto_kem/ntruhrss701/avx2/poly_s3_inv.s | 5449 ++++++ crypto_kem/ntruhrss701/avx2/poly_s3_to_rq.s | 3118 +++ crypto_kem/ntruhrss701/avx2/sample.c | 46 + crypto_kem/ntruhrss701/avx2/sample.h | 15 + crypto_kem/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 +++++ .../ntruhrss701/avx2/vec32_sample_iid.s | 1042 + crypto_kem/ntruhrss701/clean/Makefile | 6 +- .../clean/Makefile.Microsoft_nmake | 2 +- crypto_kem/ntruhrss701/clean/api.h | 2 +- crypto_kem/ntruhrss701/clean/cmov.c | 11 + crypto_kem/ntruhrss701/clean/cmov.h | 10 + crypto_kem/ntruhrss701/clean/kem.c | 6 +- crypto_kem/ntruhrss701/clean/owcpa.c | 1 + crypto_kem/ntruhrss701/clean/pack3.c | 1 - crypto_kem/ntruhrss701/clean/params.h | 1 + crypto_kem/ntruhrss701/clean/poly.h | 8 +- crypto_kem/ntruhrss701/clean/poly_lift.c | 19 +- crypto_kem/ntruhrss701/clean/poly_r2_inv.c | 150 +- crypto_kem/ntruhrss701/clean/poly_s3_inv.c | 167 +- crypto_kem/ntruhrss701/clean/sample.c | 6 +- crypto_kem/ntruhrss701/clean/sample.h | 3 +- crypto_kem/ntruhrss701/clean/verify.c | 29 - crypto_kem/ntruhrss701/clean/verify.h | 12 - 234 files changed, 247870 insertions(+), 1304 deletions(-) create mode 100644 crypto_kem/ntruhps2048509/avx2/LICENSE create mode 100644 crypto_kem/ntruhps2048509/avx2/Makefile create mode 100644 crypto_kem/ntruhps2048509/avx2/api.h create mode 100644 crypto_kem/ntruhps2048509/avx2/cmov.c create mode 100644 crypto_kem/ntruhps2048509/avx2/cmov.h create mode 100644 crypto_kem/ntruhps2048509/avx2/crypto_sort_int32.c create mode 100644 crypto_kem/ntruhps2048509/avx2/crypto_sort_int32.h create mode 100644 crypto_kem/ntruhps2048509/avx2/kem.c create mode 100644 crypto_kem/ntruhps2048509/avx2/owcpa.c create mode 100644 crypto_kem/ntruhps2048509/avx2/owcpa.h create mode 100644 crypto_kem/ntruhps2048509/avx2/pack3.c create mode 100644 crypto_kem/ntruhps2048509/avx2/packq.c create mode 100644 crypto_kem/ntruhps2048509/avx2/params.h create mode 100644 crypto_kem/ntruhps2048509/avx2/poly.c create mode 100644 crypto_kem/ntruhps2048509/avx2/poly.h create mode 100644 crypto_kem/ntruhps2048509/avx2/poly_lift.c create mode 100644 crypto_kem/ntruhps2048509/avx2/poly_mod_3_Phi_n.s create mode 100644 crypto_kem/ntruhps2048509/avx2/poly_mod_q_Phi_n.s create mode 100644 crypto_kem/ntruhps2048509/avx2/poly_r2_inv.c create mode 100644 crypto_kem/ntruhps2048509/avx2/poly_r2_inv.h create mode 100644 crypto_kem/ntruhps2048509/avx2/poly_r2_mul.s create mode 100644 crypto_kem/ntruhps2048509/avx2/poly_rq_mul.s create mode 100644 crypto_kem/ntruhps2048509/avx2/poly_rq_to_s3.s create mode 100644 crypto_kem/ntruhps2048509/avx2/poly_s3_inv.c create mode 100644 crypto_kem/ntruhps2048509/avx2/sample.c create mode 100644 crypto_kem/ntruhps2048509/avx2/sample.h create mode 100644 crypto_kem/ntruhps2048509/avx2/sample_iid.c create mode 100644 crypto_kem/ntruhps2048509/avx2/square_126_509_shufbytes.s create mode 100644 crypto_kem/ntruhps2048509/avx2/square_15_509_shufbytes.s create mode 100644 crypto_kem/ntruhps2048509/avx2/square_1_509_patience.s create mode 100644 crypto_kem/ntruhps2048509/avx2/square_252_509_shufbytes.s create mode 100644 crypto_kem/ntruhps2048509/avx2/square_30_509_shufbytes.s create mode 100644 crypto_kem/ntruhps2048509/avx2/square_3_509_patience.s create mode 100644 crypto_kem/ntruhps2048509/avx2/square_63_509_shufbytes.s create mode 100644 crypto_kem/ntruhps2048509/avx2/square_6_509_patience.s create mode 100644 crypto_kem/ntruhps2048509/avx2/vec32_sample_iid.s create mode 100644 crypto_kem/ntruhps2048509/clean/cmov.c create mode 100644 crypto_kem/ntruhps2048509/clean/cmov.h delete mode 100644 crypto_kem/ntruhps2048509/clean/crypto_sort.c delete mode 100644 crypto_kem/ntruhps2048509/clean/crypto_sort.h create mode 100644 crypto_kem/ntruhps2048509/clean/crypto_sort_int32.c create mode 100644 crypto_kem/ntruhps2048509/clean/crypto_sort_int32.h delete mode 100644 crypto_kem/ntruhps2048509/clean/verify.c delete mode 100644 crypto_kem/ntruhps2048509/clean/verify.h create mode 100644 crypto_kem/ntruhps2048677/avx2/LICENSE create mode 100644 crypto_kem/ntruhps2048677/avx2/Makefile create mode 100644 crypto_kem/ntruhps2048677/avx2/api.h create mode 100644 crypto_kem/ntruhps2048677/avx2/cmov.c create mode 100644 crypto_kem/ntruhps2048677/avx2/cmov.h create mode 100644 crypto_kem/ntruhps2048677/avx2/crypto_sort_int32.c create mode 100644 crypto_kem/ntruhps2048677/avx2/crypto_sort_int32.h create mode 100644 crypto_kem/ntruhps2048677/avx2/kem.c create mode 100644 crypto_kem/ntruhps2048677/avx2/owcpa.c create mode 100644 crypto_kem/ntruhps2048677/avx2/owcpa.h create mode 100644 crypto_kem/ntruhps2048677/avx2/pack3.c create mode 100644 crypto_kem/ntruhps2048677/avx2/packq.c create mode 100644 crypto_kem/ntruhps2048677/avx2/params.h create mode 100644 crypto_kem/ntruhps2048677/avx2/poly.c create mode 100644 crypto_kem/ntruhps2048677/avx2/poly.h create mode 100644 crypto_kem/ntruhps2048677/avx2/poly_lift.c create mode 100644 crypto_kem/ntruhps2048677/avx2/poly_mod_3_Phi_n.s create mode 100644 crypto_kem/ntruhps2048677/avx2/poly_mod_q_Phi_n.s create mode 100644 crypto_kem/ntruhps2048677/avx2/poly_r2_inv.c create mode 100644 crypto_kem/ntruhps2048677/avx2/poly_r2_inv.h create mode 100644 crypto_kem/ntruhps2048677/avx2/poly_r2_mul.s create mode 100644 crypto_kem/ntruhps2048677/avx2/poly_rq_mul.s create mode 100644 crypto_kem/ntruhps2048677/avx2/poly_rq_to_s3.s create mode 100644 crypto_kem/ntruhps2048677/avx2/poly_s3_inv.c create mode 100644 crypto_kem/ntruhps2048677/avx2/sample.c create mode 100644 crypto_kem/ntruhps2048677/avx2/sample.h create mode 100644 crypto_kem/ntruhps2048677/avx2/sample_iid.c create mode 100644 crypto_kem/ntruhps2048677/avx2/square_10_677_shufbytes.s create mode 100644 crypto_kem/ntruhps2048677/avx2/square_168_677_shufbytes.s create mode 100644 crypto_kem/ntruhps2048677/avx2/square_1_677_patience.s create mode 100644 crypto_kem/ntruhps2048677/avx2/square_21_677_shufbytes.s create mode 100644 crypto_kem/ntruhps2048677/avx2/square_2_677_patience.s create mode 100644 crypto_kem/ntruhps2048677/avx2/square_336_677_shufbytes.s create mode 100644 crypto_kem/ntruhps2048677/avx2/square_3_677_patience.s create mode 100644 crypto_kem/ntruhps2048677/avx2/square_42_677_shufbytes.s create mode 100644 crypto_kem/ntruhps2048677/avx2/square_5_677_patience.s create mode 100644 crypto_kem/ntruhps2048677/avx2/square_84_677_shufbytes.s create mode 100644 crypto_kem/ntruhps2048677/avx2/vec32_sample_iid.s create mode 100644 crypto_kem/ntruhps2048677/clean/cmov.c create mode 100644 crypto_kem/ntruhps2048677/clean/cmov.h delete mode 100644 crypto_kem/ntruhps2048677/clean/crypto_sort.c delete mode 100644 crypto_kem/ntruhps2048677/clean/crypto_sort.h create mode 100644 crypto_kem/ntruhps2048677/clean/crypto_sort_int32.c create mode 100644 crypto_kem/ntruhps2048677/clean/crypto_sort_int32.h delete mode 100644 crypto_kem/ntruhps2048677/clean/verify.c delete mode 100644 crypto_kem/ntruhps2048677/clean/verify.h create mode 100644 crypto_kem/ntruhps4096821/avx2/LICENSE create mode 100644 crypto_kem/ntruhps4096821/avx2/Makefile create mode 100644 crypto_kem/ntruhps4096821/avx2/api.h create mode 100644 crypto_kem/ntruhps4096821/avx2/cmov.c create mode 100644 crypto_kem/ntruhps4096821/avx2/cmov.h create mode 100644 crypto_kem/ntruhps4096821/avx2/crypto_sort_int32.c create mode 100644 crypto_kem/ntruhps4096821/avx2/crypto_sort_int32.h create mode 100644 crypto_kem/ntruhps4096821/avx2/kem.c create mode 100644 crypto_kem/ntruhps4096821/avx2/owcpa.c create mode 100644 crypto_kem/ntruhps4096821/avx2/owcpa.h create mode 100644 crypto_kem/ntruhps4096821/avx2/pack3.c create mode 100644 crypto_kem/ntruhps4096821/avx2/packq.c create mode 100644 crypto_kem/ntruhps4096821/avx2/params.h create mode 100644 crypto_kem/ntruhps4096821/avx2/poly.c create mode 100644 crypto_kem/ntruhps4096821/avx2/poly.h create mode 100644 crypto_kem/ntruhps4096821/avx2/poly_lift.c create mode 100644 crypto_kem/ntruhps4096821/avx2/poly_mod_3_Phi_n.s create mode 100644 crypto_kem/ntruhps4096821/avx2/poly_mod_q_Phi_n.s create mode 100644 crypto_kem/ntruhps4096821/avx2/poly_r2_inv.c create mode 100644 crypto_kem/ntruhps4096821/avx2/poly_r2_inv.h create mode 100644 crypto_kem/ntruhps4096821/avx2/poly_r2_mul.s create mode 100644 crypto_kem/ntruhps4096821/avx2/poly_rq_mul.s create mode 100644 crypto_kem/ntruhps4096821/avx2/poly_rq_to_s3.s create mode 100644 crypto_kem/ntruhps4096821/avx2/poly_s3_inv.c create mode 100644 crypto_kem/ntruhps4096821/avx2/sample.c create mode 100644 crypto_kem/ntruhps4096821/avx2/sample.h create mode 100644 crypto_kem/ntruhps4096821/avx2/sample_iid.c create mode 100644 crypto_kem/ntruhps4096821/avx2/square_102_821_shufbytes.s create mode 100644 crypto_kem/ntruhps4096821/avx2/square_12_821_shufbytes.s create mode 100644 crypto_kem/ntruhps4096821/avx2/square_1_821_patience.s create mode 100644 crypto_kem/ntruhps4096821/avx2/square_204_821_shufbytes.s create mode 100644 crypto_kem/ntruhps4096821/avx2/square_24_821_shufbytes.s create mode 100644 crypto_kem/ntruhps4096821/avx2/square_3_821_patience.s create mode 100644 crypto_kem/ntruhps4096821/avx2/square_408_821_shufbytes.s create mode 100644 crypto_kem/ntruhps4096821/avx2/square_51_821_shufbytes.s create mode 100644 crypto_kem/ntruhps4096821/avx2/square_6_821_patience.s create mode 100644 crypto_kem/ntruhps4096821/avx2/vec32_sample_iid.s create mode 100644 crypto_kem/ntruhps4096821/clean/cmov.c create mode 100644 crypto_kem/ntruhps4096821/clean/cmov.h delete mode 100644 crypto_kem/ntruhps4096821/clean/crypto_sort.c delete mode 100644 crypto_kem/ntruhps4096821/clean/crypto_sort.h create mode 100644 crypto_kem/ntruhps4096821/clean/crypto_sort_int32.c create mode 100644 crypto_kem/ntruhps4096821/clean/crypto_sort_int32.h delete mode 100644 crypto_kem/ntruhps4096821/clean/verify.c delete mode 100644 crypto_kem/ntruhps4096821/clean/verify.h create mode 100644 crypto_kem/ntruhrss701/avx2/LICENSE create mode 100644 crypto_kem/ntruhrss701/avx2/Makefile create mode 100644 crypto_kem/ntruhrss701/avx2/api.h create mode 100644 crypto_kem/ntruhrss701/avx2/cmov.c create mode 100644 crypto_kem/ntruhrss701/avx2/cmov.h create mode 100644 crypto_kem/ntruhrss701/avx2/kem.c create mode 100644 crypto_kem/ntruhrss701/avx2/owcpa.c create mode 100644 crypto_kem/ntruhrss701/avx2/owcpa.h create mode 100644 crypto_kem/ntruhrss701/avx2/pack3.c create mode 100644 crypto_kem/ntruhrss701/avx2/packq.c create mode 100644 crypto_kem/ntruhrss701/avx2/params.h create mode 100644 crypto_kem/ntruhrss701/avx2/poly.c create mode 100644 crypto_kem/ntruhrss701/avx2/poly.h create mode 100644 crypto_kem/ntruhrss701/avx2/poly_mod_3_Phi_n.s create mode 100644 crypto_kem/ntruhrss701/avx2/poly_mod_q_Phi_n.s create mode 100644 crypto_kem/ntruhrss701/avx2/poly_r2_inv.c create mode 100644 crypto_kem/ntruhrss701/avx2/poly_r2_inv.h create mode 100644 crypto_kem/ntruhrss701/avx2/poly_r2_mul.s create mode 100644 crypto_kem/ntruhrss701/avx2/poly_rq_mul.s create mode 100644 crypto_kem/ntruhrss701/avx2/poly_rq_mul_x_minus_1.s create mode 100644 crypto_kem/ntruhrss701/avx2/poly_rq_to_s3.s create mode 100644 crypto_kem/ntruhrss701/avx2/poly_s3_inv.s create mode 100644 crypto_kem/ntruhrss701/avx2/poly_s3_to_rq.s create mode 100644 crypto_kem/ntruhrss701/avx2/sample.c create mode 100644 crypto_kem/ntruhrss701/avx2/sample.h create mode 100644 crypto_kem/ntruhrss701/avx2/sample_iid.c create mode 100644 crypto_kem/ntruhrss701/avx2/square_12_701_shufbytes.s create mode 100644 crypto_kem/ntruhrss701/avx2/square_15_701_shufbytes.s create mode 100644 crypto_kem/ntruhrss701/avx2/square_168_701_shufbytes.s create mode 100644 crypto_kem/ntruhrss701/avx2/square_1_701_patience.s create mode 100644 crypto_kem/ntruhrss701/avx2/square_27_701_shufbytes.s create mode 100644 crypto_kem/ntruhrss701/avx2/square_336_701_shufbytes.s create mode 100644 crypto_kem/ntruhrss701/avx2/square_3_701_patience.s create mode 100644 crypto_kem/ntruhrss701/avx2/square_42_701_shufbytes.s create mode 100644 crypto_kem/ntruhrss701/avx2/square_6_701_patience.s create mode 100644 crypto_kem/ntruhrss701/avx2/square_84_701_shufbytes.s create mode 100644 crypto_kem/ntruhrss701/avx2/vec32_sample_iid.s create mode 100644 crypto_kem/ntruhrss701/clean/cmov.c create mode 100644 crypto_kem/ntruhrss701/clean/cmov.h delete mode 100644 crypto_kem/ntruhrss701/clean/verify.c delete mode 100644 crypto_kem/ntruhrss701/clean/verify.h diff --git a/crypto_kem/ntruhps2048509/META.yml b/crypto_kem/ntruhps2048509/META.yml index bb2d543c..2da9d2d5 100644 --- a/crypto_kem/ntruhps2048509/META.yml +++ b/crypto_kem/ntruhps2048509/META.yml @@ -1,4 +1,4 @@ -name: NTRU-HPS2048509 +name: ntruhps2048509 type: kem claimed-nist-level: 1 claimed-security: IND-CCA2 @@ -15,9 +15,22 @@ auxiliary-submitters: - Jeffrey Hoffstein - Andreas Hülsing - Joost Rijneveld + - Tsunekazu Saito - Peter Schwabe - William Whyte + - Keita Xagawa + - Takashi Yamakawa - Zhenfei Zhang implementations: - name: clean - version: https://github.com/jschanck/ntru/tree/485dde03 reference implementation + version: https://github.com/jschanck/ntru/tree/4699d70a reference implementation + - name: avx2 + version: https://github.com/jschanck/ntru/tree/4699d70a avx2 implementation + supported_platforms: + - architecture: x86_64 + operating_systems: + - Linux + - Darwin + required_flags: + - avx2 + - bmi2 diff --git a/crypto_kem/ntruhps2048509/avx2/LICENSE b/crypto_kem/ntruhps2048509/avx2/LICENSE new file mode 100644 index 00000000..d5d21fff --- /dev/null +++ b/crypto_kem/ntruhps2048509/avx2/LICENSE @@ -0,0 +1 @@ +Public Domain diff --git a/crypto_kem/ntruhps2048509/avx2/Makefile b/crypto_kem/ntruhps2048509/avx2/Makefile new file mode 100644 index 00000000..a3096677 --- /dev/null +++ b/crypto_kem/ntruhps2048509/avx2/Makefile @@ -0,0 +1,24 @@ +# This Makefile can be used with GNU Make or BSD Make + +LIB=libntruhps2048509_avx2.a +HEADERS=api.h cmov.h crypto_sort_int32.h owcpa.h params.h poly.h poly_r2_inv.h sample.h +OBJECTS=cmov.o crypto_sort_int32.o kem.o owcpa.o pack3.o packq.o poly.o poly_lift.o poly_r2_inv.o poly_s3_inv.o sample.o sample_iid.o \ + square_1_509_patience.o square_3_509_patience.o square_6_509_patience.o square_15_509_shufbytes.o square_30_509_shufbytes.o square_63_509_shufbytes.o square_126_509_shufbytes.o square_252_509_shufbytes.o \ + poly_mod_3_Phi_n.o poly_mod_q_Phi_n.o poly_r2_mul.o poly_rq_mul.o poly_rq_to_s3.o vec32_sample_iid.o + +CFLAGS=-O3 -mavx2 -mbmi2 -Wall -Wextra -Wpedantic -Wvla -Werror -Wredundant-decls -Wmissing-prototypes -std=c99 -I../../../common $(EXTRAFLAGS) + +all: $(LIB) + +%.o: %.s $(HEADERS) + $(AS) -o $@ $< + +%.o: %.c $(HEADERS) + $(CC) $(CFLAGS) -c -o $@ $< + +$(LIB): $(OBJECTS) + $(AR) -r $@ $(OBJECTS) + +clean: + $(RM) $(OBJECTS) + $(RM) $(LIB) diff --git a/crypto_kem/ntruhps2048509/avx2/api.h b/crypto_kem/ntruhps2048509/avx2/api.h new file mode 100644 index 00000000..09b4de76 --- /dev/null +++ b/crypto_kem/ntruhps2048509/avx2/api.h @@ -0,0 +1,19 @@ +#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/crypto_kem/ntruhps2048509/avx2/cmov.c b/crypto_kem/ntruhps2048509/avx2/cmov.c new file mode 100644 index 00000000..f87eb23f --- /dev/null +++ b/crypto_kem/ntruhps2048509/avx2/cmov.c @@ -0,0 +1,11 @@ +#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/crypto_kem/ntruhps2048509/avx2/cmov.h b/crypto_kem/ntruhps2048509/avx2/cmov.h new file mode 100644 index 00000000..fbb079c0 --- /dev/null +++ b/crypto_kem/ntruhps2048509/avx2/cmov.h @@ -0,0 +1,10 @@ +#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/crypto_kem/ntruhps2048509/avx2/crypto_sort_int32.c b/crypto_kem/ntruhps2048509/avx2/crypto_sort_int32.c new file mode 100644 index 00000000..12c5ea15 --- /dev/null +++ b/crypto_kem/ntruhps2048509/avx2/crypto_sort_int32.c @@ -0,0 +1,1215 @@ +// 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 = (p << 1 == q); + flipflip = !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/crypto_kem/ntruhps2048509/avx2/crypto_sort_int32.h b/crypto_kem/ntruhps2048509/avx2/crypto_sort_int32.h new file mode 100644 index 00000000..5a121e16 --- /dev/null +++ b/crypto_kem/ntruhps2048509/avx2/crypto_sort_int32.h @@ -0,0 +1,11 @@ +#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/crypto_kem/ntruhps2048509/avx2/kem.c b/crypto_kem/ntruhps2048509/avx2/kem.c new file mode 100644 index 00000000..035ba0f3 --- /dev/null +++ b/crypto_kem/ntruhps2048509/avx2/kem.c @@ -0,0 +1,68 @@ +#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 = 0; + + /* Check that unused bits of last byte of ciphertext are zero */ + fail |= c[NTRU_CIPHERTEXTBYTES - 1] & (0xff << (8 - (7 & (NTRU_LOGQ * NTRU_PACK_DEG)))); + + 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/crypto_kem/ntruhps2048509/avx2/owcpa.c b/crypto_kem/ntruhps2048509/avx2/owcpa.c new file mode 100644 index 00000000..cad75af6 --- /dev/null +++ b/crypto_kem/ntruhps2048509/avx2/owcpa.c @@ -0,0 +1,160 @@ +#include "owcpa.h" +#include "poly.h" +#include "sample.h" + +static int owcpa_check_r(const poly *r) { + /* Check that r is in message space. */ + /* Note: Assumes that r has coefficients in {0, 1, ..., q-1} */ + int i; + uint64_t t = 0; + uint16_t c; + for (i = 0; i < NTRU_N; i++) { + c = MODQ(r->coeffs[i] + 1); + t |= c & (NTRU_Q - 4); /* 0 if c is in {0,1,2,3} */ + t |= (c + 1) & 0x4; /* 0 if c is in {0,1,2} */ + } + t |= MODQ(r->coeffs[NTRU_N - 1]); /* Coefficient n-1 must be zero */ + t = (~t + 1); // two's complement + t >>= 63; + return (int) t; +} + +static int owcpa_check_m(const poly *m) { + /* Check that m is in message space. */ + /* Note: Assumes that m has coefficients in {0,1,2}. */ + int i; + uint64_t t = 0; + uint16_t p1 = 0; + uint16_t m1 = 0; + for (i = 0; i < NTRU_N; i++) { + p1 += m->coeffs[i] & 0x01; + m1 += (m->coeffs[i] & 0x02) >> 1; + } + /* Need p1 = m1 and p1 + m1 = NTRU_WEIGHT */ + t |= p1 ^ m1; + t |= (p1 + m1) ^ NTRU_WEIGHT; + t = (~t + 1); // two's complement + t >>= 63; + return (int) t; +} + +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); + + /* NOTE: 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 = 0; + 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/crypto_kem/ntruhps2048509/avx2/owcpa.h b/crypto_kem/ntruhps2048509/avx2/owcpa.h new file mode 100644 index 00000000..eb981749 --- /dev/null +++ b/crypto_kem/ntruhps2048509/avx2/owcpa.h @@ -0,0 +1,22 @@ +#ifndef OWCPA_H +#define OWCPA_H + +#include "params.h" +#include "poly.h" + +void PQCLEAN_NTRUHPS2048509_AVX2_owcpa_samplemsg(unsigned char msg[NTRU_OWCPA_MSGBYTES], + const unsigned char seed[NTRU_SEEDBYTES]); + +void PQCLEAN_NTRUHPS2048509_AVX2_owcpa_keypair(unsigned char *pk, + unsigned char *sk, + const unsigned char seed[NTRU_SEEDBYTES]); + +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/crypto_kem/ntruhps2048509/avx2/pack3.c b/crypto_kem/ntruhps2048509/avx2/pack3.c new file mode 100644 index 00000000..bb0ecde1 --- /dev/null +++ b/crypto_kem/ntruhps2048509/avx2/pack3.c @@ -0,0 +1,46 @@ +#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/crypto_kem/ntruhps2048509/avx2/packq.c b/crypto_kem/ntruhps2048509/avx2/packq.c new file mode 100644 index 00000000..74b438aa --- /dev/null +++ b/crypto_kem/ntruhps2048509/avx2/packq.c @@ -0,0 +1,93 @@ +#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/crypto_kem/ntruhps2048509/avx2/params.h b/crypto_kem/ntruhps2048509/avx2/params.h new file mode 100644 index 00000000..4f461494 --- /dev/null +++ b/crypto_kem/ntruhps2048509/avx2/params.h @@ -0,0 +1,37 @@ +#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/crypto_kem/ntruhps2048509/avx2/poly.c b/crypto_kem/ntruhps2048509/avx2/poly.c new file mode 100644 index 00000000..b4f1e3db --- /dev/null +++ b/crypto_kem/ntruhps2048509/avx2/poly.c @@ -0,0 +1,67 @@ +#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) { + PQCLEAN_NTRUHPS2048509_AVX2_poly_Rq_mul(r, a, b); + 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/crypto_kem/ntruhps2048509/avx2/poly.h b/crypto_kem/ntruhps2048509/avx2/poly.h new file mode 100644 index 00000000..61631def --- /dev/null +++ b/crypto_kem/ntruhps2048509/avx2/poly.h @@ -0,0 +1,41 @@ +#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/crypto_kem/ntruhps2048509/avx2/poly_lift.c b/crypto_kem/ntruhps2048509/avx2/poly_lift.c new file mode 100644 index 00000000..0a71c537 --- /dev/null +++ b/crypto_kem/ntruhps2048509/avx2/poly_lift.c @@ -0,0 +1,11 @@ +#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/crypto_kem/ntruhps2048509/avx2/poly_mod_3_Phi_n.s b/crypto_kem/ntruhps2048509/avx2/poly_mod_3_Phi_n.s new file mode 100644 index 00000000..a7b9af04 --- /dev/null +++ b/crypto_kem/ntruhps2048509/avx2/poly_mod_3_Phi_n.s @@ -0,0 +1,676 @@ +.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/crypto_kem/ntruhps2048509/avx2/poly_mod_q_Phi_n.s b/crypto_kem/ntruhps2048509/avx2/poly_mod_q_Phi_n.s new file mode 100644 index 00000000..5cccff8d --- /dev/null +++ b/crypto_kem/ntruhps2048509/avx2/poly_mod_q_Phi_n.s @@ -0,0 +1,80 @@ +.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/crypto_kem/ntruhps2048509/avx2/poly_r2_inv.c b/crypto_kem/ntruhps2048509/avx2/poly_r2_inv.c new file mode 100644 index 00000000..435a88e6 --- /dev/null +++ b/crypto_kem/ntruhps2048509/avx2/poly_r2_inv.c @@ -0,0 +1,80 @@ +#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/crypto_kem/ntruhps2048509/avx2/poly_r2_inv.h b/crypto_kem/ntruhps2048509/avx2/poly_r2_inv.h new file mode 100644 index 00000000..2499a631 --- /dev/null +++ b/crypto_kem/ntruhps2048509/avx2/poly_r2_inv.h @@ -0,0 +1,20 @@ +#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/crypto_kem/ntruhps2048509/avx2/poly_r2_mul.s b/crypto_kem/ntruhps2048509/avx2/poly_r2_mul.s new file mode 100644 index 00000000..435f1c5a --- /dev/null +++ b/crypto_kem/ntruhps2048509/avx2/poly_r2_mul.s @@ -0,0 +1,285 @@ +.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/crypto_kem/ntruhps2048509/avx2/poly_rq_mul.s b/crypto_kem/ntruhps2048509/avx2/poly_rq_mul.s new file mode 100644 index 00000000..39f8a16d --- /dev/null +++ b/crypto_kem/ntruhps2048509/avx2/poly_rq_mul.s @@ -0,0 +1,5625 @@ +.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 +mask_mod2048: +.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 +.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) +vpand mask_mod2048(%rip), %ymm11, %ymm11 +vmovdqa %ymm11, 0(%rdi) +vpand mask_mod2048(%rip), %ymm6, %ymm6 +vmovdqa %ymm6, 256(%rdi) +vpand mask_mod2048(%rip), %ymm3, %ymm3 +vmovdqa %ymm3, 512(%rdi) +vpand mask_mod2048(%rip), %ymm4, %ymm4 +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) +vpand mask_mod2048(%rip), %ymm5, %ymm5 +vmovdqa %ymm5, 64(%rdi) +vpand mask_mod2048(%rip), %ymm6, %ymm6 +vmovdqa %ymm6, 320(%rdi) +vpand mask_mod2048(%rip), %ymm10, %ymm10 +vmovdqa %ymm10, 576(%rdi) +vpand mask_mod2048(%rip), %ymm9, %ymm9 +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) +vpand mask_mod2048(%rip), %ymm11, %ymm11 +vmovdqa %ymm11, 128(%rdi) +vpand mask_mod2048(%rip), %ymm6, %ymm6 +vmovdqa %ymm6, 384(%rdi) +vpand mask_mod2048(%rip), %ymm8, %ymm8 +vmovdqa %ymm8, 640(%rdi) +vpand mask_mod2048(%rip), %ymm7, %ymm7 +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) +vpand mask_mod2048(%rip), %ymm5, %ymm5 +vmovdqa %ymm5, 192(%rdi) +vpand mask_mod2048(%rip), %ymm6, %ymm6 +vmovdqa %ymm6, 448(%rdi) +vpand mask_mod2048(%rip), %ymm4, %ymm4 +vmovdqa %ymm4, 704(%rdi) +vpand mask_mod2048(%rip), %ymm3, %ymm3 +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 +vpand mask_mod2048(%rip), %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) +vpand mask_mod2048(%rip), %ymm11, %ymm11 +vmovdqa %ymm11, 256(%rdi) +vpand mask_mod2048(%rip), %ymm6, %ymm6 +vmovdqa %ymm6, 512(%rdi) +vpand mask_mod2048(%rip), %ymm9, %ymm9 +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 +vpand mask_mod2048(%rip), %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) +vpand mask_mod2048(%rip), %ymm5, %ymm5 +vmovdqa %ymm5, 320(%rdi) +vpand mask_mod2048(%rip), %ymm6, %ymm6 +vmovdqa %ymm6, 576(%rdi) +vpand mask_mod2048(%rip), %ymm7, %ymm7 +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 +vpand mask_mod2048(%rip), %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) +vpand mask_mod2048(%rip), %ymm11, %ymm11 +vmovdqa %ymm11, 384(%rdi) +vpand mask_mod2048(%rip), %ymm6, %ymm6 +vmovdqa %ymm6, 640(%rdi) +vpand mask_mod2048(%rip), %ymm3, %ymm3 +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 +vpand mask_mod2048(%rip), %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) +vpand mask_mod2048(%rip), %ymm5, %ymm5 +vmovdqa %ymm5, 448(%rdi) +vpand mask_mod2048(%rip), %ymm6, %ymm6 +vmovdqa %ymm6, 704(%rdi) +vpand mask_mod2048(%rip), %ymm10, %ymm10 +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) +vpand mask_mod2048(%rip), %ymm11, %ymm11 +vmovdqa %ymm11, 32(%rdi) +vpand mask_mod2048(%rip), %ymm6, %ymm6 +vmovdqa %ymm6, 288(%rdi) +vpand mask_mod2048(%rip), %ymm2, %ymm2 +vmovdqa %ymm2, 544(%rdi) +vpand mask_mod2048(%rip), %ymm9, %ymm9 +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) +vpand mask_mod2048(%rip), %ymm5, %ymm5 +vmovdqa %ymm5, 96(%rdi) +vpand mask_mod2048(%rip), %ymm6, %ymm6 +vmovdqa %ymm6, 352(%rdi) +vpand mask_mod2048(%rip), %ymm8, %ymm8 +vmovdqa %ymm8, 608(%rdi) +vpand mask_mod2048(%rip), %ymm3, %ymm3 +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) +vpand mask_mod2048(%rip), %ymm11, %ymm11 +vmovdqa %ymm11, 160(%rdi) +vpand mask_mod2048(%rip), %ymm6, %ymm6 +vmovdqa %ymm6, 416(%rdi) +vpand mask_mod2048(%rip), %ymm4, %ymm4 +vmovdqa %ymm4, 672(%rdi) +vpand mask_mod2048(%rip), %ymm10, %ymm10 +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) +vpand mask_mod2048(%rip), %ymm5, %ymm5 +vmovdqa %ymm5, 224(%rdi) +vextracti128 $1, %ymm5, %xmm5 +vpshufb shufmin5_mask3(%rip), %ymm5, %ymm5 +vmovdqa %xmm5, 1792(%rsp) +vpand mask_mod2048(%rip), %ymm6, %ymm6 +vmovdqa %ymm6, 480(%rdi) +vextracti128 $1, %ymm6, %xmm6 +vpshufb shufmin5_mask3(%rip), %ymm6, %ymm6 +vmovdqa %xmm6, 1824(%rsp) +vpand mask_mod2048(%rip), %ymm9, %ymm9 +vmovdqa %ymm9, 736(%rdi) +vextracti128 $1, %ymm9, %xmm9 +vpshufb shufmin5_mask3(%rip), %ymm9, %ymm9 +vmovdqa %xmm9, 1856(%rsp) +vpand mask_mod2048(%rip), %ymm2, %ymm2 +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 +vpand mask_mod2048(%rip), %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) +vpand mask_mod2048(%rip), %ymm11, %ymm11 +vmovdqa %ymm11, 288(%rdi) +vpand mask_mod2048(%rip), %ymm6, %ymm6 +vmovdqa %ymm6, 544(%rdi) +vpand mask_mod2048(%rip), %ymm3, %ymm3 +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 +vpand mask_mod2048(%rip), %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) +vpand mask_mod2048(%rip), %ymm5, %ymm5 +vmovdqa %ymm5, 352(%rdi) +vpand mask_mod2048(%rip), %ymm6, %ymm6 +vmovdqa %ymm6, 608(%rdi) +vpand mask_mod2048(%rip), %ymm10, %ymm10 +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 +vpand mask_mod2048(%rip), %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) +vpand mask_mod2048(%rip), %ymm11, %ymm11 +vmovdqa %ymm11, 416(%rdi) +vpand mask_mod2048(%rip), %ymm6, %ymm6 +vmovdqa %ymm6, 672(%rdi) +vpand mask_mod2048(%rip), %ymm2, %ymm2 +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 +vpand mask_mod2048(%rip), %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) +vpand mask_mod2048(%rip), %ymm5, %ymm5 +vmovdqa %ymm5, 480(%rdi) +vpand mask_mod2048(%rip), %ymm6, %ymm6 +vmovdqa %ymm6, 736(%rdi) +vpand mask_mod2048(%rip), %ymm8, %ymm8 +vmovdqa %ymm8, 992(%rdi) +vmovdqa 0(%rdi), %ymm11 +vpaddw 1888(%rsp), %ymm11, %ymm11 +vpaddw 2816(%rsp), %ymm11, %ymm11 +vpand mask_mod2048(%rip), %ymm11, %ymm11 +vmovdqa %ymm11, 0(%rdi) +vmovdqa 256(%rdi), %ymm11 +vpaddw 2528(%rsp), %ymm11, %ymm11 +vpaddw 2848(%rsp), %ymm11, %ymm11 +vpand mask_mod2048(%rip), %ymm11, %ymm11 +vmovdqa %ymm11, 256(%rdi) +vmovdqa 512(%rdi), %ymm11 +vpaddw 2784(%rsp), %ymm11, %ymm11 +vpaddw 2880(%rsp), %ymm11, %ymm11 +vpand mask_mod2048(%rip), %ymm11, %ymm11 +vmovdqa %ymm11, 512(%rdi) +vmovdqa 64(%rdi), %ymm11 +vpaddw 2048(%rsp), %ymm11, %ymm11 +vpaddw 1920(%rsp), %ymm11, %ymm11 +vpand mask_mod2048(%rip), %ymm11, %ymm11 +vmovdqa %ymm11, 64(%rdi) +vmovdqa 320(%rdi), %ymm11 +vpaddw 2304(%rsp), %ymm11, %ymm11 +vpand mask_mod2048(%rip), %ymm11, %ymm11 +vmovdqa %ymm11, 320(%rdi) +vmovdqa 576(%rdi), %ymm11 +vpaddw 2560(%rsp), %ymm11, %ymm11 +vpand mask_mod2048(%rip), %ymm11, %ymm11 +vmovdqa %ymm11, 576(%rdi) +vmovdqa 128(%rdi), %ymm11 +vpaddw 2080(%rsp), %ymm11, %ymm11 +vpaddw 1952(%rsp), %ymm11, %ymm11 +vpand mask_mod2048(%rip), %ymm11, %ymm11 +vmovdqa %ymm11, 128(%rdi) +vmovdqa 384(%rdi), %ymm11 +vpaddw 2336(%rsp), %ymm11, %ymm11 +vpand mask_mod2048(%rip), %ymm11, %ymm11 +vmovdqa %ymm11, 384(%rdi) +vmovdqa 640(%rdi), %ymm11 +vpaddw 2592(%rsp), %ymm11, %ymm11 +vpand mask_mod2048(%rip), %ymm11, %ymm11 +vmovdqa %ymm11, 640(%rdi) +vmovdqa 192(%rdi), %ymm11 +vpaddw 2112(%rsp), %ymm11, %ymm11 +vpaddw 1984(%rsp), %ymm11, %ymm11 +vpand mask_mod2048(%rip), %ymm11, %ymm11 +vmovdqa %ymm11, 192(%rdi) +vmovdqa 448(%rdi), %ymm11 +vpaddw 2368(%rsp), %ymm11, %ymm11 +vpand mask_mod2048(%rip), %ymm11, %ymm11 +vmovdqa %ymm11, 448(%rdi) +vmovdqa 704(%rdi), %ymm11 +vpaddw 2624(%rsp), %ymm11, %ymm11 +vpand mask_mod2048(%rip), %ymm11, %ymm11 +vmovdqa %ymm11, 704(%rdi) +vmovdqa 256(%rdi), %ymm11 +vpaddw 2144(%rsp), %ymm11, %ymm11 +vpand mask_mod2048(%rip), %ymm11, %ymm11 +vmovdqa %ymm11, 256(%rdi) +vmovdqa 512(%rdi), %ymm11 +vpaddw 2400(%rsp), %ymm11, %ymm11 +vpand mask_mod2048(%rip), %ymm11, %ymm11 +vmovdqa %ymm11, 512(%rdi) +vmovdqa 768(%rdi), %ymm11 +vpaddw 2656(%rsp), %ymm11, %ymm11 +vpand mask_mod2048(%rip), %ymm11, %ymm11 +vmovdqa %ymm11, 768(%rdi) +vmovdqa 320(%rdi), %ymm11 +vpaddw 2176(%rsp), %ymm11, %ymm11 +vpand mask_mod2048(%rip), %ymm11, %ymm11 +vmovdqa %ymm11, 320(%rdi) +vmovdqa 576(%rdi), %ymm11 +vpaddw 2432(%rsp), %ymm11, %ymm11 +vpand mask_mod2048(%rip), %ymm11, %ymm11 +vmovdqa %ymm11, 576(%rdi) +vmovdqa 832(%rdi), %ymm11 +vpaddw 2688(%rsp), %ymm11, %ymm11 +vpand mask_mod2048(%rip), %ymm11, %ymm11 +vmovdqa %ymm11, 832(%rdi) +vmovdqa 384(%rdi), %ymm11 +vpaddw 2208(%rsp), %ymm11, %ymm11 +vpand mask_mod2048(%rip), %ymm11, %ymm11 +vmovdqa %ymm11, 384(%rdi) +vmovdqa 640(%rdi), %ymm11 +vpaddw 2464(%rsp), %ymm11, %ymm11 +vpand mask_mod2048(%rip), %ymm11, %ymm11 +vmovdqa %ymm11, 640(%rdi) +vmovdqa 896(%rdi), %ymm11 +vpaddw 2720(%rsp), %ymm11, %ymm11 +vpand mask_mod2048(%rip), %ymm11, %ymm11 +vmovdqa %ymm11, 896(%rdi) +vmovdqa 448(%rdi), %ymm11 +vpaddw 2240(%rsp), %ymm11, %ymm11 +vpand mask_mod2048(%rip), %ymm11, %ymm11 +vmovdqa %ymm11, 448(%rdi) +vmovdqa 704(%rdi), %ymm11 +vpaddw 2496(%rsp), %ymm11, %ymm11 +vpand mask_mod2048(%rip), %ymm11, %ymm11 +vmovdqa %ymm11, 704(%rdi) +vmovdqa 960(%rdi), %ymm11 +vpaddw 2752(%rsp), %ymm11, %ymm11 +vpand mask_mod2048(%rip), %ymm11, %ymm11 +vmovdqa %ymm11, 960(%rdi) +mov %r8, %rsp +pop %r12 +ret diff --git a/crypto_kem/ntruhps2048509/avx2/poly_rq_to_s3.s b/crypto_kem/ntruhps2048509/avx2/poly_rq_to_s3.s new file mode 100644 index 00000000..72f37da9 --- /dev/null +++ b/crypto_kem/ntruhps2048509/avx2/poly_rq_to_s3.s @@ -0,0 +1,955 @@ +.data +.p2align 5 +const_3_repeating: +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +shuf_b8_to_low_doubleword: +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +mask_modq: +.word 2047 +.word 2047 +.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 const_3_repeating(%rip), %ymm3 +vmovdqa mask_modq(%rip), %ymm6 +vmovdqa 992(%rsi), %ymm4 +vpand %ymm6, %ymm4, %ymm4 +vpsrlw $10, %ymm4, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm4 +vpsrlw $8, %ymm4, %ymm5 +vpand mask_ff(%rip), %ymm4, %ymm4 +vpaddw %ymm5, %ymm4, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm4 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm4, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm4 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm4, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm4 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm4, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm4 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm4, %ymm5 +vpsllw $1, %ymm5, %ymm4 +vextracti128 $1, %ymm4, %xmm4 +vpshufb shuf_b8_to_low_doubleword(%rip), %ymm4, %ymm4 +vinserti128 $1, %xmm4, %ymm4, %ymm4 +vmovdqa 0(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 0(%rdi) +vmovdqa 32(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 32(%rdi) +vmovdqa 64(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 64(%rdi) +vmovdqa 96(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 96(%rdi) +vmovdqa 128(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 128(%rdi) +vmovdqa 160(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 160(%rdi) +vmovdqa 192(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 192(%rdi) +vmovdqa 224(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 224(%rdi) +vmovdqa 256(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 256(%rdi) +vmovdqa 288(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 288(%rdi) +vmovdqa 320(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 320(%rdi) +vmovdqa 352(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 352(%rdi) +vmovdqa 384(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 384(%rdi) +vmovdqa 416(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 416(%rdi) +vmovdqa 448(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 448(%rdi) +vmovdqa 480(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 480(%rdi) +vmovdqa 512(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 512(%rdi) +vmovdqa 544(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 544(%rdi) +vmovdqa 576(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 576(%rdi) +vmovdqa 608(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 608(%rdi) +vmovdqa 640(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 640(%rdi) +vmovdqa 672(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 672(%rdi) +vmovdqa 704(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 704(%rdi) +vmovdqa 736(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 736(%rdi) +vmovdqa 768(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 768(%rdi) +vmovdqa 800(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 800(%rdi) +vmovdqa 832(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 832(%rdi) +vmovdqa 864(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 864(%rdi) +vmovdqa 896(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 896(%rdi) +vmovdqa 928(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 928(%rdi) +vmovdqa 960(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 960(%rdi) +vmovdqa 992(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 992(%rdi) +ret diff --git a/crypto_kem/ntruhps2048509/avx2/poly_s3_inv.c b/crypto_kem/ntruhps2048509/avx2/poly_s3_inv.c new file mode 100644 index 00000000..774b356e --- /dev/null +++ b/crypto_kem/ntruhps2048509/avx2/poly_s3_inv.c @@ -0,0 +1,463 @@ +#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/crypto_kem/ntruhps2048509/avx2/sample.c b/crypto_kem/ntruhps2048509/avx2/sample.c new file mode 100644 index 00000000..e9b5d826 --- /dev/null +++ b/crypto_kem/ntruhps2048509/avx2/sample.c @@ -0,0 +1,46 @@ +#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); +} + + +#include "crypto_sort_int32.h" +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] << 15) + ((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/crypto_kem/ntruhps2048509/avx2/sample.h b/crypto_kem/ntruhps2048509/avx2/sample.h new file mode 100644 index 00000000..0ff71465 --- /dev/null +++ b/crypto_kem/ntruhps2048509/avx2/sample.h @@ -0,0 +1,15 @@ +#ifndef SAMPLE_H +#define SAMPLE_H + +#include "params.h" +#include "poly.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/crypto_kem/ntruhps2048509/avx2/sample_iid.c b/crypto_kem/ntruhps2048509/avx2/sample_iid.c new file mode 100644 index 00000000..49650e7d --- /dev/null +++ b/crypto_kem/ntruhps2048509/avx2/sample_iid.c @@ -0,0 +1,21 @@ +#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/crypto_kem/ntruhps2048509/avx2/square_126_509_shufbytes.s b/crypto_kem/ntruhps2048509/avx2/square_126_509_shufbytes.s new file mode 100644 index 00000000..0b5240f7 --- /dev/null +++ b/crypto_kem/ntruhps2048509/avx2/square_126_509_shufbytes.s @@ -0,0 +1,2854 @@ +.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/crypto_kem/ntruhps2048509/avx2/square_15_509_shufbytes.s b/crypto_kem/ntruhps2048509/avx2/square_15_509_shufbytes.s new file mode 100644 index 00000000..1d8150f2 --- /dev/null +++ b/crypto_kem/ntruhps2048509/avx2/square_15_509_shufbytes.s @@ -0,0 +1,5125 @@ +.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/crypto_kem/ntruhps2048509/avx2/square_1_509_patience.s b/crypto_kem/ntruhps2048509/avx2/square_1_509_patience.s new file mode 100644 index 00000000..7f00ea04 --- /dev/null +++ b/crypto_kem/ntruhps2048509/avx2/square_1_509_patience.s @@ -0,0 +1,109 @@ +.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/crypto_kem/ntruhps2048509/avx2/square_252_509_shufbytes.s b/crypto_kem/ntruhps2048509/avx2/square_252_509_shufbytes.s new file mode 100644 index 00000000..d4b94ca2 --- /dev/null +++ b/crypto_kem/ntruhps2048509/avx2/square_252_509_shufbytes.s @@ -0,0 +1,3992 @@ +.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/crypto_kem/ntruhps2048509/avx2/square_30_509_shufbytes.s b/crypto_kem/ntruhps2048509/avx2/square_30_509_shufbytes.s new file mode 100644 index 00000000..c83a1a07 --- /dev/null +++ b/crypto_kem/ntruhps2048509/avx2/square_30_509_shufbytes.s @@ -0,0 +1,4316 @@ +.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/crypto_kem/ntruhps2048509/avx2/square_3_509_patience.s b/crypto_kem/ntruhps2048509/avx2/square_3_509_patience.s new file mode 100644 index 00000000..470b69e2 --- /dev/null +++ b/crypto_kem/ntruhps2048509/avx2/square_3_509_patience.s @@ -0,0 +1,272 @@ +.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/crypto_kem/ntruhps2048509/avx2/square_63_509_shufbytes.s b/crypto_kem/ntruhps2048509/avx2/square_63_509_shufbytes.s new file mode 100644 index 00000000..9f90cb1b --- /dev/null +++ b/crypto_kem/ntruhps2048509/avx2/square_63_509_shufbytes.s @@ -0,0 +1,4186 @@ +.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/crypto_kem/ntruhps2048509/avx2/square_6_509_patience.s b/crypto_kem/ntruhps2048509/avx2/square_6_509_patience.s new file mode 100644 index 00000000..8bb3005e --- /dev/null +++ b/crypto_kem/ntruhps2048509/avx2/square_6_509_patience.s @@ -0,0 +1,296 @@ +.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/crypto_kem/ntruhps2048509/avx2/vec32_sample_iid.s b/crypto_kem/ntruhps2048509/avx2/vec32_sample_iid.s new file mode 100644 index 00000000..580c5eb7 --- /dev/null +++ b/crypto_kem/ntruhps2048509/avx2/vec32_sample_iid.s @@ -0,0 +1,784 @@ +.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/crypto_kem/ntruhps2048509/clean/Makefile b/crypto_kem/ntruhps2048509/clean/Makefile index 6d8334f5..951364a3 100644 --- a/crypto_kem/ntruhps2048509/clean/Makefile +++ b/crypto_kem/ntruhps2048509/clean/Makefile @@ -1,8 +1,8 @@ # This Makefile can be used with GNU Make or BSD Make LIB=libntruhps2048509_clean.a -HEADERS=api.h crypto_sort.h owcpa.h params.h poly.h sample.h verify.h -OBJECTS=crypto_sort.o kem.o owcpa.o pack3.o packq.o poly.o poly_lift.o poly_mod.o poly_r2_inv.o poly_rq_mul.o poly_s3_inv.o sample.o sample_iid.o verify.o +HEADERS=api.h cmov.h crypto_sort_int32.h owcpa.h params.h poly.h sample.h +OBJECTS=cmov.o crypto_sort_int32.o kem.o owcpa.o pack3.o packq.o poly.o poly_lift.o poly_mod.o poly_r2_inv.o poly_rq_mul.o poly_s3_inv.o sample.o sample_iid.o CFLAGS=-O3 -Wall -Wextra -Wpedantic -Wvla -Werror -Wredundant-decls -Wmissing-prototypes -std=c99 -I../../../common $(EXTRAFLAGS) diff --git a/crypto_kem/ntruhps2048509/clean/Makefile.Microsoft_nmake b/crypto_kem/ntruhps2048509/clean/Makefile.Microsoft_nmake index cf072b31..de1a363d 100644 --- a/crypto_kem/ntruhps2048509/clean/Makefile.Microsoft_nmake +++ b/crypto_kem/ntruhps2048509/clean/Makefile.Microsoft_nmake @@ -2,7 +2,7 @@ # nmake /f Makefile.Microsoft_nmake LIBRARY=libntruhps2048509_clean.lib -OBJECTS=crypto_sort.obj kem.obj owcpa.obj pack3.obj packq.obj poly.obj poly_lift.obj poly_mod.obj poly_r2_inv.obj poly_rq_mul.obj poly_s3_inv.obj sample.obj sample_iid.obj verify.obj +OBJECTS=cmov.obj crypto_sort_int32.obj kem.obj owcpa.obj pack3.obj packq.obj poly.obj poly_lift.obj poly_mod.obj poly_r2_inv.obj poly_rq_mul.obj poly_s3_inv.obj sample.obj sample_iid.obj CFLAGS=/nologo /O2 /I ..\..\..\common /W4 /WX diff --git a/crypto_kem/ntruhps2048509/clean/api.h b/crypto_kem/ntruhps2048509/clean/api.h index 0ea0d3a7..50fe48d3 100644 --- a/crypto_kem/ntruhps2048509/clean/api.h +++ b/crypto_kem/ntruhps2048509/clean/api.h @@ -8,7 +8,7 @@ #define PQCLEAN_NTRUHPS2048509_CLEAN_CRYPTO_CIPHERTEXTBYTES 699 #define PQCLEAN_NTRUHPS2048509_CLEAN_CRYPTO_BYTES 32 -#define PQCLEAN_NTRUHPS2048509_CLEAN_CRYPTO_ALGNAME "NTRU-HPS2048509" +#define PQCLEAN_NTRUHPS2048509_CLEAN_CRYPTO_ALGNAME "ntruhps2048509" int PQCLEAN_NTRUHPS2048509_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk); diff --git a/crypto_kem/ntruhps2048509/clean/cmov.c b/crypto_kem/ntruhps2048509/clean/cmov.c new file mode 100644 index 00000000..6676796b --- /dev/null +++ b/crypto_kem/ntruhps2048509/clean/cmov.c @@ -0,0 +1,11 @@ +#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/crypto_kem/ntruhps2048509/clean/cmov.h b/crypto_kem/ntruhps2048509/clean/cmov.h new file mode 100644 index 00000000..11706220 --- /dev/null +++ b/crypto_kem/ntruhps2048509/clean/cmov.h @@ -0,0 +1,10 @@ +#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/crypto_kem/ntruhps2048509/clean/crypto_sort.c b/crypto_kem/ntruhps2048509/clean/crypto_sort.c deleted file mode 100644 index 6b12bba3..00000000 --- a/crypto_kem/ntruhps2048509/clean/crypto_sort.c +++ /dev/null @@ -1,50 +0,0 @@ -// XXX: Temporary placeholder for a faster sort. -// Copied from supercop-20190110/crypto_sort/int32/portable3 - -#include - -#include "crypto_sort.h" - -#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) - -void PQCLEAN_NTRUHPS2048509_CLEAN_crypto_sort(void *array, long long n) { - long long top, p, q, r, i; - int32_t *x = array; - - if (n < 2) { - return; - } - top = 1; - while (top < n - top) { - top += top; - } - - for (p = top; p > 0; p >>= 1) { - for (i = 0; i < n - p; ++i) { - if (!(i & p)) { - int32_MINMAX(x[i], x[i + p]); - } - } - i = 0; - for (q = top; q > p; q >>= 1) { - for (; i < n - q; ++i) { - if (!(i & p)) { - int32_t a = x[i + p]; - for (r = q; r > p; r >>= 1) { - int32_MINMAX(a, x[i + r]); - } - x[i + p] = a; - } - } - } - } -} diff --git a/crypto_kem/ntruhps2048509/clean/crypto_sort.h b/crypto_kem/ntruhps2048509/clean/crypto_sort.h deleted file mode 100644 index b3f45896..00000000 --- a/crypto_kem/ntruhps2048509/clean/crypto_sort.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef CRYPTO_SORT -#define CRYPTO_SORT - -void PQCLEAN_NTRUHPS2048509_CLEAN_crypto_sort(void *array, long long n); - -#endif diff --git a/crypto_kem/ntruhps2048509/clean/crypto_sort_int32.c b/crypto_kem/ntruhps2048509/clean/crypto_sort_int32.c new file mode 100644 index 00000000..97b47545 --- /dev/null +++ b/crypto_kem/ntruhps2048509/clean/crypto_sort_int32.c @@ -0,0 +1,86 @@ +// 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/crypto_kem/ntruhps2048509/clean/crypto_sort_int32.h b/crypto_kem/ntruhps2048509/clean/crypto_sort_int32.h new file mode 100644 index 00000000..c571e6ab --- /dev/null +++ b/crypto_kem/ntruhps2048509/clean/crypto_sort_int32.h @@ -0,0 +1,11 @@ +#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/crypto_kem/ntruhps2048509/clean/kem.c b/crypto_kem/ntruhps2048509/clean/kem.c index c4934cb5..3b2f41b9 100644 --- a/crypto_kem/ntruhps2048509/clean/kem.c +++ b/crypto_kem/ntruhps2048509/clean/kem.c @@ -1,12 +1,10 @@ -#include - #include "api.h" +#include "cmov.h" #include "fips202.h" #include "owcpa.h" #include "params.h" #include "randombytes.h" #include "sample.h" -#include "verify.h" // API FUNCTIONS int PQCLEAN_NTRUHPS2048509_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk) { @@ -51,7 +49,7 @@ int PQCLEAN_NTRUHPS2048509_CLEAN_crypto_kem_dec(uint8_t *k, const uint8_t *c, co 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. */ + /* See comment in PQCLEAN_NTRUHPS2048509_CLEAN_owcpa_dec for details. */ sha3_256(k, rm, NTRU_OWCPA_MSGBYTES); diff --git a/crypto_kem/ntruhps2048509/clean/owcpa.c b/crypto_kem/ntruhps2048509/clean/owcpa.c index 31c2e02c..1a187bf6 100644 --- a/crypto_kem/ntruhps2048509/clean/owcpa.c +++ b/crypto_kem/ntruhps2048509/clean/owcpa.c @@ -59,6 +59,7 @@ void PQCLEAN_NTRUHPS2048509_CLEAN_owcpa_keypair(unsigned char *pk, 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]; diff --git a/crypto_kem/ntruhps2048509/clean/pack3.c b/crypto_kem/ntruhps2048509/clean/pack3.c index cf1873fb..a6607bf1 100644 --- a/crypto_kem/ntruhps2048509/clean/pack3.c +++ b/crypto_kem/ntruhps2048509/clean/pack3.c @@ -19,7 +19,6 @@ void PQCLEAN_NTRUHPS2048509_CLEAN_poly_S3_tobytes(unsigned char msg[NTRU_OWCPA_M 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]) { diff --git a/crypto_kem/ntruhps2048509/clean/packq.c b/crypto_kem/ntruhps2048509/clean/packq.c index 9f99167b..25986be7 100644 --- a/crypto_kem/ntruhps2048509/clean/packq.c +++ b/crypto_kem/ntruhps2048509/clean/packq.c @@ -29,7 +29,6 @@ void PQCLEAN_NTRUHPS2048509_CLEAN_poly_Sq_tobytes(unsigned char *r, const poly * 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. @@ -61,19 +60,18 @@ void PQCLEAN_NTRUHPS2048509_CLEAN_poly_Sq_frombytes(poly *r, const unsigned char 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] = (unsigned char) (a[11 * i + 0] >> 0) | (((uint16_t)a[11 * i + 1] & 0x07) << 8); - r->coeffs[8 * i + 1] = (unsigned char) (a[11 * i + 1] >> 3) | (((uint16_t)a[11 * i + 2] & 0x3f) << 5); - r->coeffs[8 * i + 2] = (unsigned char) (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] = (unsigned char) (a[11 * i + 4] >> 1) | (((uint16_t)a[11 * i + 5] & 0x0f) << 7); + 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] = (unsigned char) (a[11 * i + 0] >> 0) | (((uint16_t)a[11 * i + 1] & 0x07) << 8); - r->coeffs[8 * i + 1] = (unsigned char) (a[11 * i + 1] >> 3) | (((uint16_t)a[11 * i + 2] & 0x3f) << 5); + 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; diff --git a/crypto_kem/ntruhps2048509/clean/params.h b/crypto_kem/ntruhps2048509/clean/params.h index 42354594..4f461494 100644 --- a/crypto_kem/ntruhps2048509/clean/params.h +++ b/crypto_kem/ntruhps2048509/clean/params.h @@ -5,6 +5,7 @@ #define NTRU_N 509 #define NTRU_LOGQ 11 + /* Do not modify below this line */ #define PAD32(X) ((((X) + 31)/32)*32) diff --git a/crypto_kem/ntruhps2048509/clean/poly.h b/crypto_kem/ntruhps2048509/clean/poly.h index d6045cc7..66830976 100644 --- a/crypto_kem/ntruhps2048509/clean/poly.h +++ b/crypto_kem/ntruhps2048509/clean/poly.h @@ -1,16 +1,13 @@ #ifndef POLY_H #define POLY_H -#include - #include "params.h" +#include + #define MODQ(X) ((X) & (NTRU_Q-1)) typedef struct { - // round to nearest multiple of 32 to make it easier to load into vector - // registers without having to do bound checks -#define NTRU_N_32 PAD32(NTRU_N) uint16_t coeffs[NTRU_N]; } poly; @@ -38,5 +35,4 @@ 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/crypto_kem/ntruhps2048509/clean/poly_lift.c b/crypto_kem/ntruhps2048509/clean/poly_lift.c index dfceb6ed..0f8aab77 100644 --- a/crypto_kem/ntruhps2048509/clean/poly_lift.c +++ b/crypto_kem/ntruhps2048509/clean/poly_lift.c @@ -8,3 +8,4 @@ void PQCLEAN_NTRUHPS2048509_CLEAN_poly_lift(poly *r, const poly *a) { PQCLEAN_NTRUHPS2048509_CLEAN_poly_Z3_to_Zq(r); } + diff --git a/crypto_kem/ntruhps2048509/clean/poly_r2_inv.c b/crypto_kem/ntruhps2048509/clean/poly_r2_inv.c index e7d327d2..030d6621 100644 --- a/crypto_kem/ntruhps2048509/clean/poly_r2_inv.c +++ b/crypto_kem/ntruhps2048509/clean/poly_r2_inv.c @@ -1,113 +1,69 @@ +/* Based on supercop-20200702/crypto_core/invhrss701/simpler/core.c */ + #include "poly.h" -#include "verify.h" -#define POLY_R2_ADD(I,A,B,S) \ - for ((I)=0; (I)coeffs[i] ^ b->coeffs[i]) & swap; - a->coeffs[i] ^= t; - b->coeffs[i] ^= t; - } -} - -static inline void poly_divx(poly *a, int s) { - int i; - - for (i = 1; i < NTRU_N; i++) { - a->coeffs[i - 1] = (unsigned char) ((s * a->coeffs[i]) | (!s * a->coeffs[i - 1])); - } - a->coeffs[NTRU_N - 1] = (!s * a->coeffs[NTRU_N - 1]); -} - -static inline void poly_mulx(poly *a, int s) { - int i; - - for (i = 1; i < NTRU_N; i++) { - a->coeffs[NTRU_N - i] = (unsigned char) ((s * a->coeffs[NTRU_N - i - 1]) | (!s * a->coeffs[NTRU_N - i])); - } - a->coeffs[0] = (!s * a->coeffs[0]); +/* return -1 if x<0 and y<0; otherwise return 0 */ +static inline int both_negative_mask(int x, int y) { + return (x & y) >> 15; } void PQCLEAN_NTRUHPS2048509_CLEAN_poly_R2_inv(poly *r, const poly *a) { - /* Schroeppel--Orman--O'Malley--Spatscheck - * "Almost Inverse" algorithm as described - * by Silverman in NTRU Tech Report #14 */ - // with several modifications to make it run in constant-time - int i, j; - int k = 0; - uint16_t degf = NTRU_N - 1; - uint16_t degg = NTRU_N - 1; - int sign, t, swap; - int16_t done = 0; - poly b, f, g; - poly *c = r; // save some stack space - poly *temp_r = &f; + poly f, g, v, w; + int i, loop, delta; + int sign, swap, t; - /* b(X) := 1 */ - for (i = 1; i < NTRU_N; i++) { - b.coeffs[i] = 0; + for (i = 0; i < NTRU_N; ++i) { + v.coeffs[i] = 0; } - b.coeffs[0] = 1; - - /* c(X) := 0 */ - for (i = 0; i < NTRU_N; i++) { - c->coeffs[i] = 0; + for (i = 0; i < NTRU_N; ++i) { + w.coeffs[i] = 0; } + w.coeffs[0] = 1; - /* f(X) := a(X) */ - for (i = 0; i < NTRU_N; i++) { - f.coeffs[i] = a->coeffs[i] & 1; + for (i = 0; i < NTRU_N; ++i) { + f.coeffs[i] = 1; } - - /* g(X) := 1 + X + X^2 + ... + X^{N-1} */ - for (i = 0; i < NTRU_N; i++) { - g.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; - for (j = 0; j < 2 * (NTRU_N - 1) - 1; j++) { - sign = f.coeffs[0]; - swap = sign & !done & ((degf - degg) >> 15); + delta = 1; - cswappoly(&f, &g, swap); - cswappoly(&b, c, swap); - t = (degf ^ degg) & (-swap); - degf ^= t; - degg ^= t; - - POLY_R2_ADD(i, f, g, sign * (!done)); - POLY_R2_ADD(i, b, (*c), sign * (!done)); - - poly_divx(&f, !done); - poly_mulx(c, !done); - degf -= !done; - k += !done; - - done = 1 - (((uint16_t) - degf) >> 15); - } - - k = k - NTRU_N * ((uint16_t)(NTRU_N - k - 1) >> 15); - - /* Return X^{N-k} * b(X) */ - /* This is a k-coefficient rotation. We do this by looking at the binary - representation of k, rotating for every power of 2, and performing a cmov - if the respective bit is set. */ - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = b.coeffs[i]; - } - - for (i = 0; i < 10; i++) { - for (j = 0; j < NTRU_N; j++) { - temp_r->coeffs[j] = r->coeffs[(j + (1 << i)) % NTRU_N]; + 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]; } - PQCLEAN_NTRUHPS2048509_CLEAN_cmov((unsigned char *) & (r->coeffs), - (unsigned char *) & (temp_r->coeffs), sizeof(uint16_t) * NTRU_N, k & 1); - k >>= 1; + v.coeffs[0] = 0; + + sign = g.coeffs[0] & f.coeffs[0]; + swap = both_negative_mask(-delta, -(int) 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/crypto_kem/ntruhps2048509/clean/poly_s3_inv.c b/crypto_kem/ntruhps2048509/clean/poly_s3_inv.c index 8fb5a21f..e6b85690 100644 --- a/crypto_kem/ntruhps2048509/clean/poly_s3_inv.c +++ b/crypto_kem/ntruhps2048509/clean/poly_s3_inv.c @@ -1,137 +1,78 @@ +/* Based on supercop-20200702/crypto_core/invhrss701/simpler/core.c */ + #include "poly.h" -#include "verify.h" -static uint16_t mod3(uint16_t a) { - uint16_t r; +static inline uint8_t mod3(uint8_t a) { /* a between 0 and 9 */ 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); + a = (a >> 2) + (a & 3); /* between 0 and 4 */ + t = a - 3; + c = t >> 5; + return t ^ (c & (a ^ t)); } -#define POLY_S3_FMADD(I,A,B,S) \ - for ((I)=0; (I)coeffs[i] ^ b->coeffs[i]) & swap; - a->coeffs[i] ^= t; - b->coeffs[i] ^= t; - } -} - -static inline void poly_divx(poly *a, int s) { - int i; - - for (i = 1; i < NTRU_N; i++) { - a->coeffs[i - 1] = (unsigned char) ((s * a->coeffs[i]) | (!s * a->coeffs[i - 1])); - } - a->coeffs[NTRU_N - 1] = (!s * a->coeffs[NTRU_N - 1]); -} - -static inline void poly_mulx(poly *a, int s) { - int i; - - for (i = 1; i < NTRU_N; i++) { - a->coeffs[NTRU_N - i] = (unsigned char) ((s * a->coeffs[NTRU_N - i - 1]) | (!s * a->coeffs[NTRU_N - i])); - } - a->coeffs[0] = (!s * a->coeffs[0]); +/* return -1 if x<0 and y<0; otherwise return 0 */ +static inline int both_negative_mask(int x, int y) { + return (x & y) >> 15; } void PQCLEAN_NTRUHPS2048509_CLEAN_poly_S3_inv(poly *r, const poly *a) { - /* Schroeppel--Orman--O'Malley--Spatscheck - * "Almost Inverse" algorithm as described - * by Silverman in NTRU Tech Report #14 */ - // with several modifications to make it run in constant-time - int i, j; - uint16_t k = 0; - uint16_t degf = NTRU_N - 1; - uint16_t degg = NTRU_N - 1; - int sign, fsign = 0, t, swap; - int16_t done = 0; - poly b, c, f, g; - poly *temp_r = &f; + poly f, g, v, w; + int i, loop, delta; + int sign, swap, t; - /* b(X) := 1 */ - for (i = 1; i < NTRU_N; i++) { - b.coeffs[i] = 0; + for (i = 0; i < NTRU_N; ++i) { + v.coeffs[i] = 0; } - b.coeffs[0] = 1; - - /* c(X) := 0 */ - for (i = 0; i < NTRU_N; i++) { - c.coeffs[i] = 0; + for (i = 0; i < NTRU_N; ++i) { + w.coeffs[i] = 0; } + w.coeffs[0] = 1; - /* f(X) := a(X) */ - for (i = 0; i < NTRU_N; i++) { - f.coeffs[i] = a->coeffs[i]; + for (i = 0; i < NTRU_N; ++i) { + f.coeffs[i] = 1; } - - /* g(X) := 1 + X + X^2 + ... + X^{N-1} */ - for (i = 0; i < NTRU_N; i++) { - g.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; - for (j = 0; j < 2 * (NTRU_N - 1) - 1; j++) { sign = mod3(2 * g.coeffs[0] * f.coeffs[0]); - swap = (((sign & 2) >> 1) | sign) & !done & ((degf - degg) >> 15); + swap = both_negative_mask(-delta, -(int) g.coeffs[0]); + delta ^= swap & (delta ^ -delta); + delta += 1; - cswappoly(&f, &g, swap); - cswappoly(&b, &c, swap); - t = (degf ^ degg) & (-swap); - degf ^= t; - degg ^= t; - - for (i = 0; i < NTRU_N; i++) { - f.coeffs[i] = mod3(f.coeffs[i] + ((uint16_t) (sign * (!done))) * g.coeffs[i]); - } - for (i = 0; i < NTRU_N; i++) { - b.coeffs[i] = mod3(b.coeffs[i] + ((uint16_t) (sign * (!done))) * c.coeffs[i]); + 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; } - poly_divx(&f, !done); - poly_mulx(&c, !done); - degf -= !done; - k += !done; - - done = 1 - (((uint16_t) - degf) >> 15); - } - - fsign = f.coeffs[0]; - k = k - NTRU_N * ((uint16_t)(NTRU_N - k - 1) >> 15); - - /* Return X^{N-k} * b(X) */ - /* This is a k-coefficient rotation. We do this by looking at the binary - representation of k, rotating for every power of 2, and performing a cmov - if the respective bit is set. */ - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = mod3((uint16_t) fsign * b.coeffs[i]); - } - - for (i = 0; i < 10; i++) { - for (j = 0; j < NTRU_N; j++) { - temp_r->coeffs[j] = r->coeffs[(j + (1 << i)) % NTRU_N]; + for (i = 0; i < NTRU_N; ++i) { + g.coeffs[i] = mod3(g.coeffs[i] + sign * f.coeffs[i]); } - PQCLEAN_NTRUHPS2048509_CLEAN_cmov((unsigned char *) & (r->coeffs), - (unsigned char *) & (temp_r->coeffs), sizeof(uint16_t) * NTRU_N, k & 1); - k >>= 1; + for (i = 0; i < NTRU_N; ++i) { + w.coeffs[i] = mod3(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; } - /* Reduce modulo Phi_n */ - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = mod3(r->coeffs[i] + 2 * r->coeffs[NTRU_N - 1]); + sign = f.coeffs[0]; + for (i = 0; i < NTRU_N - 1; ++i) { + r->coeffs[i] = mod3(sign * v.coeffs[NTRU_N - 2 - i]); } + r->coeffs[NTRU_N - 1] = 0; } diff --git a/crypto_kem/ntruhps2048509/clean/sample.c b/crypto_kem/ntruhps2048509/clean/sample.c index da829217..63a9a4c7 100644 --- a/crypto_kem/ntruhps2048509/clean/sample.c +++ b/crypto_kem/ntruhps2048509/clean/sample.c @@ -1,27 +1,30 @@ -#include "crypto_sort.h" #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); } + +#include "crypto_sort_int32.h" 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) - uint32_t s[NTRU_N - 1]; + 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 + 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] << 15) + ((uint32_t) u[15 * i + 14] << 24); } @@ -33,7 +36,7 @@ void PQCLEAN_NTRUHPS2048509_CLEAN_sample_fixed_type(poly *r, const unsigned char s[i] |= 2; } - PQCLEAN_NTRUHPS2048509_CLEAN_crypto_sort(s, NTRU_N - 1); + 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)); diff --git a/crypto_kem/ntruhps2048509/clean/sample.h b/crypto_kem/ntruhps2048509/clean/sample.h index 7561610a..ba7609e6 100644 --- a/crypto_kem/ntruhps2048509/clean/sample.h +++ b/crypto_kem/ntruhps2048509/clean/sample.h @@ -1,8 +1,6 @@ #ifndef SAMPLE_H #define SAMPLE_H -#include - #include "params.h" #include "poly.h" @@ -13,4 +11,5 @@ void PQCLEAN_NTRUHPS2048509_CLEAN_sample_iid(poly *r, const unsigned char unifor void PQCLEAN_NTRUHPS2048509_CLEAN_sample_fixed_type(poly *r, const unsigned char uniformbytes[NTRU_SAMPLE_FT_BYTES]); + #endif diff --git a/crypto_kem/ntruhps2048509/clean/verify.c b/crypto_kem/ntruhps2048509/clean/verify.c deleted file mode 100644 index 10c771d4..00000000 --- a/crypto_kem/ntruhps2048509/clean/verify.c +++ /dev/null @@ -1,29 +0,0 @@ -#include -#include - -#include "verify.h" - -/* returns 0 for equal strings, 1 for non-equal strings */ -unsigned char PQCLEAN_NTRUHPS2048509_CLEAN_verify(const unsigned char *a, const unsigned char *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 (unsigned char)r; -} - -/* 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); // Two's complement - for (i = 0; i < len; i++) { - r[i] ^= b & (x[i] ^ r[i]); - } -} diff --git a/crypto_kem/ntruhps2048509/clean/verify.h b/crypto_kem/ntruhps2048509/clean/verify.h deleted file mode 100644 index d102125d..00000000 --- a/crypto_kem/ntruhps2048509/clean/verify.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef VERIFY_H -#define VERIFY_H - -#include - -/* returns 0 for equal strings, 1 for non-equal strings */ -unsigned char PQCLEAN_NTRUHPS2048509_CLEAN_verify(const unsigned char *a, const unsigned char *b, size_t len); - -/* 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); - -#endif diff --git a/crypto_kem/ntruhps2048677/META.yml b/crypto_kem/ntruhps2048677/META.yml index 392668ff..8f3c9c9c 100644 --- a/crypto_kem/ntruhps2048677/META.yml +++ b/crypto_kem/ntruhps2048677/META.yml @@ -1,4 +1,4 @@ -name: NTRU-HPS2048677 +name: ntruhps2048677 type: kem claimed-nist-level: 3 claimed-security: IND-CCA2 @@ -15,9 +15,22 @@ auxiliary-submitters: - Jeffrey Hoffstein - Andreas Hülsing - Joost Rijneveld + - Tsunekazu Saito - Peter Schwabe - William Whyte + - Keita Xagawa + - Takashi Yamakawa - Zhenfei Zhang implementations: - name: clean - version: https://github.com/jschanck/ntru/tree/485dde03 reference implementation + version: https://github.com/jschanck/ntru/tree/4699d70a reference implementation + - name: avx2 + version: https://github.com/jschanck/ntru/tree/4699d70a avx2 implementation + supported_platforms: + - architecture: x86_64 + operating_systems: + - Linux + - Darwin + required_flags: + - avx2 + - bmi2 diff --git a/crypto_kem/ntruhps2048677/avx2/LICENSE b/crypto_kem/ntruhps2048677/avx2/LICENSE new file mode 100644 index 00000000..d5d21fff --- /dev/null +++ b/crypto_kem/ntruhps2048677/avx2/LICENSE @@ -0,0 +1 @@ +Public Domain diff --git a/crypto_kem/ntruhps2048677/avx2/Makefile b/crypto_kem/ntruhps2048677/avx2/Makefile new file mode 100644 index 00000000..fe375685 --- /dev/null +++ b/crypto_kem/ntruhps2048677/avx2/Makefile @@ -0,0 +1,24 @@ +# This Makefile can be used with GNU Make or BSD Make + +LIB=libntruhps2048677_avx2.a +HEADERS=api.h cmov.h crypto_sort_int32.h owcpa.h params.h poly.h poly_r2_inv.h sample.h +OBJECTS=cmov.o crypto_sort_int32.o kem.o owcpa.o pack3.o packq.o poly.o poly_lift.o poly_r2_inv.o poly_s3_inv.o sample.o sample_iid.o \ + square_1_677_patience.o square_2_677_patience.o square_3_677_patience.o square_5_677_patience.o square_10_677_shufbytes.o square_21_677_shufbytes.o square_42_677_shufbytes.o square_84_677_shufbytes.o square_168_677_shufbytes.o square_336_677_shufbytes.o \ + poly_mod_3_Phi_n.o poly_mod_q_Phi_n.o poly_r2_mul.o poly_rq_mul.o poly_rq_to_s3.o vec32_sample_iid.o + +CFLAGS=-O3 -mavx2 -mbmi2 -Wall -Wextra -Wpedantic -Wvla -Werror -Wredundant-decls -Wmissing-prototypes -std=c99 -I../../../common $(EXTRAFLAGS) + +all: $(LIB) + +%.o: %.s $(HEADERS) + $(AS) -o $@ $< + +%.o: %.c $(HEADERS) + $(CC) $(CFLAGS) -c -o $@ $< + +$(LIB): $(OBJECTS) + $(AR) -r $@ $(OBJECTS) + +clean: + $(RM) $(OBJECTS) + $(RM) $(LIB) diff --git a/crypto_kem/ntruhps2048677/avx2/api.h b/crypto_kem/ntruhps2048677/avx2/api.h new file mode 100644 index 00000000..1b3fb609 --- /dev/null +++ b/crypto_kem/ntruhps2048677/avx2/api.h @@ -0,0 +1,19 @@ +#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/crypto_kem/ntruhps2048677/avx2/cmov.c b/crypto_kem/ntruhps2048677/avx2/cmov.c new file mode 100644 index 00000000..d975076b --- /dev/null +++ b/crypto_kem/ntruhps2048677/avx2/cmov.c @@ -0,0 +1,11 @@ +#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/crypto_kem/ntruhps2048677/avx2/cmov.h b/crypto_kem/ntruhps2048677/avx2/cmov.h new file mode 100644 index 00000000..00700645 --- /dev/null +++ b/crypto_kem/ntruhps2048677/avx2/cmov.h @@ -0,0 +1,10 @@ +#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/crypto_kem/ntruhps2048677/avx2/crypto_sort_int32.c b/crypto_kem/ntruhps2048677/avx2/crypto_sort_int32.c new file mode 100644 index 00000000..e9a81a7f --- /dev/null +++ b/crypto_kem/ntruhps2048677/avx2/crypto_sort_int32.c @@ -0,0 +1,1215 @@ +// 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 = (p << 1 == q); + flipflip = !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/crypto_kem/ntruhps2048677/avx2/crypto_sort_int32.h b/crypto_kem/ntruhps2048677/avx2/crypto_sort_int32.h new file mode 100644 index 00000000..12f221b0 --- /dev/null +++ b/crypto_kem/ntruhps2048677/avx2/crypto_sort_int32.h @@ -0,0 +1,11 @@ +#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/crypto_kem/ntruhps2048677/avx2/kem.c b/crypto_kem/ntruhps2048677/avx2/kem.c new file mode 100644 index 00000000..067490b4 --- /dev/null +++ b/crypto_kem/ntruhps2048677/avx2/kem.c @@ -0,0 +1,68 @@ +#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 = 0; + + /* Check that unused bits of last byte of ciphertext are zero */ + fail |= c[NTRU_CIPHERTEXTBYTES - 1] & (0xff << (8 - (7 & (NTRU_LOGQ * NTRU_PACK_DEG)))); + + 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/crypto_kem/ntruhps2048677/avx2/owcpa.c b/crypto_kem/ntruhps2048677/avx2/owcpa.c new file mode 100644 index 00000000..a8e80311 --- /dev/null +++ b/crypto_kem/ntruhps2048677/avx2/owcpa.c @@ -0,0 +1,160 @@ +#include "owcpa.h" +#include "poly.h" +#include "sample.h" + +static int owcpa_check_r(const poly *r) { + /* Check that r is in message space. */ + /* Note: Assumes that r has coefficients in {0, 1, ..., q-1} */ + int i; + uint64_t t = 0; + uint16_t c; + for (i = 0; i < NTRU_N; i++) { + c = MODQ(r->coeffs[i] + 1); + t |= c & (NTRU_Q - 4); /* 0 if c is in {0,1,2,3} */ + t |= (c + 1) & 0x4; /* 0 if c is in {0,1,2} */ + } + t |= MODQ(r->coeffs[NTRU_N - 1]); /* Coefficient n-1 must be zero */ + t = (~t + 1); // two's complement + t >>= 63; + return (int) t; +} + +static int owcpa_check_m(const poly *m) { + /* Check that m is in message space. */ + /* Note: Assumes that m has coefficients in {0,1,2}. */ + int i; + uint64_t t = 0; + uint16_t p1 = 0; + uint16_t m1 = 0; + for (i = 0; i < NTRU_N; i++) { + p1 += m->coeffs[i] & 0x01; + m1 += (m->coeffs[i] & 0x02) >> 1; + } + /* Need p1 = m1 and p1 + m1 = NTRU_WEIGHT */ + t |= p1 ^ m1; + t |= (p1 + m1) ^ NTRU_WEIGHT; + t = (~t + 1); // two's complement + t >>= 63; + return (int) t; +} + +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); + + /* NOTE: 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 = 0; + 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/crypto_kem/ntruhps2048677/avx2/owcpa.h b/crypto_kem/ntruhps2048677/avx2/owcpa.h new file mode 100644 index 00000000..6a38bd56 --- /dev/null +++ b/crypto_kem/ntruhps2048677/avx2/owcpa.h @@ -0,0 +1,22 @@ +#ifndef OWCPA_H +#define OWCPA_H + +#include "params.h" +#include "poly.h" + +void PQCLEAN_NTRUHPS2048677_AVX2_owcpa_samplemsg(unsigned char msg[NTRU_OWCPA_MSGBYTES], + const unsigned char seed[NTRU_SEEDBYTES]); + +void PQCLEAN_NTRUHPS2048677_AVX2_owcpa_keypair(unsigned char *pk, + unsigned char *sk, + const unsigned char seed[NTRU_SEEDBYTES]); + +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/crypto_kem/ntruhps2048677/avx2/pack3.c b/crypto_kem/ntruhps2048677/avx2/pack3.c new file mode 100644 index 00000000..95becec4 --- /dev/null +++ b/crypto_kem/ntruhps2048677/avx2/pack3.c @@ -0,0 +1,46 @@ +#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/crypto_kem/ntruhps2048677/avx2/packq.c b/crypto_kem/ntruhps2048677/avx2/packq.c new file mode 100644 index 00000000..b07d2b70 --- /dev/null +++ b/crypto_kem/ntruhps2048677/avx2/packq.c @@ -0,0 +1,93 @@ +#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/crypto_kem/ntruhps2048677/avx2/params.h b/crypto_kem/ntruhps2048677/avx2/params.h new file mode 100644 index 00000000..0ef8ab54 --- /dev/null +++ b/crypto_kem/ntruhps2048677/avx2/params.h @@ -0,0 +1,37 @@ +#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/crypto_kem/ntruhps2048677/avx2/poly.c b/crypto_kem/ntruhps2048677/avx2/poly.c new file mode 100644 index 00000000..19b02dab --- /dev/null +++ b/crypto_kem/ntruhps2048677/avx2/poly.c @@ -0,0 +1,67 @@ +#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) { + PQCLEAN_NTRUHPS2048677_AVX2_poly_Rq_mul(r, a, b); + 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/crypto_kem/ntruhps2048677/avx2/poly.h b/crypto_kem/ntruhps2048677/avx2/poly.h new file mode 100644 index 00000000..63aeaf89 --- /dev/null +++ b/crypto_kem/ntruhps2048677/avx2/poly.h @@ -0,0 +1,41 @@ +#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/crypto_kem/ntruhps2048677/avx2/poly_lift.c b/crypto_kem/ntruhps2048677/avx2/poly_lift.c new file mode 100644 index 00000000..95416711 --- /dev/null +++ b/crypto_kem/ntruhps2048677/avx2/poly_lift.c @@ -0,0 +1,11 @@ +#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/crypto_kem/ntruhps2048677/avx2/poly_mod_3_Phi_n.s b/crypto_kem/ntruhps2048677/avx2/poly_mod_3_Phi_n.s new file mode 100644 index 00000000..90c58f1b --- /dev/null +++ b/crypto_kem/ntruhps2048677/avx2/poly_mod_3_Phi_n.s @@ -0,0 +1,928 @@ +.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/crypto_kem/ntruhps2048677/avx2/poly_mod_q_Phi_n.s b/crypto_kem/ntruhps2048677/avx2/poly_mod_q_Phi_n.s new file mode 100644 index 00000000..27bba636 --- /dev/null +++ b/crypto_kem/ntruhps2048677/avx2/poly_mod_q_Phi_n.s @@ -0,0 +1,104 @@ +.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/crypto_kem/ntruhps2048677/avx2/poly_r2_inv.c b/crypto_kem/ntruhps2048677/avx2/poly_r2_inv.c new file mode 100644 index 00000000..aedd8827 --- /dev/null +++ b/crypto_kem/ntruhps2048677/avx2/poly_r2_inv.c @@ -0,0 +1,73 @@ +#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/crypto_kem/ntruhps2048677/avx2/poly_r2_inv.h b/crypto_kem/ntruhps2048677/avx2/poly_r2_inv.h new file mode 100644 index 00000000..a7104cc6 --- /dev/null +++ b/crypto_kem/ntruhps2048677/avx2/poly_r2_inv.h @@ -0,0 +1,23 @@ +#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/crypto_kem/ntruhps2048677/avx2/poly_r2_mul.s b/crypto_kem/ntruhps2048677/avx2/poly_r2_mul.s new file mode 100644 index 00000000..b745f715 --- /dev/null +++ b/crypto_kem/ntruhps2048677/avx2/poly_r2_mul.s @@ -0,0 +1,466 @@ +.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/crypto_kem/ntruhps2048677/avx2/poly_rq_mul.s b/crypto_kem/ntruhps2048677/avx2/poly_rq_mul.s new file mode 100644 index 00000000..2eb3fcb1 --- /dev/null +++ b/crypto_kem/ntruhps2048677/avx2/poly_rq_mul.s @@ -0,0 +1,8010 @@ +.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 +mask_mod2048: +.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 +.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 +vpand mask_mod2048(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 0(%rdi) +vmovdqu 352(%rdi), %ymm9 +vpaddw %ymm9, %ymm6, %ymm9 +vpand mask_mod2048(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 352(%rdi) +vmovdqu 704(%rdi), %ymm9 +vpaddw %ymm9, %ymm3, %ymm9 +vpand mask_mod2048(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 704(%rdi) +vmovdqu 1056(%rdi), %ymm9 +vpaddw %ymm9, %ymm4, %ymm9 +vpand mask_mod2048(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 1056(%rdi) +vmovdqu 54(%rdi), %ymm9 +vpaddw %ymm9, %ymm7, %ymm9 +vpand mask_mod2048(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 54(%rdi) +vmovdqu 406(%rdi), %ymm9 +vpaddw %ymm9, %ymm8, %ymm9 +vpand mask_mod2048(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 406(%rdi) +vmovdqu 758(%rdi), %ymm9 +vpaddw %ymm9, %ymm5, %ymm9 +vpand mask_mod2048(%rip), %ymm9, %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 +vpand mask_mod2048(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 88(%rdi) +vmovdqu 440(%rdi), %ymm7 +vpaddw %ymm7, %ymm6, %ymm7 +vpand mask_mod2048(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 440(%rdi) +vmovdqu 792(%rdi), %ymm7 +vpaddw %ymm7, %ymm10, %ymm7 +vpand mask_mod2048(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 792(%rdi) +vmovdqu 1144(%rdi), %ymm7 +vpaddw %ymm7, %ymm9, %ymm7 +vpand mask_mod2048(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 1144(%rdi) +vmovdqu 142(%rdi), %ymm7 +vpaddw %ymm7, %ymm3, %ymm7 +vpand mask_mod2048(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 142(%rdi) +vmovdqu 494(%rdi), %ymm7 +vpaddw %ymm7, %ymm4, %ymm7 +vpand mask_mod2048(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 494(%rdi) +vmovdqu 846(%rdi), %ymm7 +vpaddw %ymm7, %ymm11, %ymm7 +vpand mask_mod2048(%rip), %ymm7, %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 +vpand mask_mod2048(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 176(%rdi) +vmovdqu 528(%rdi), %ymm3 +vpaddw %ymm3, %ymm6, %ymm3 +vpand mask_mod2048(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 528(%rdi) +vmovdqu 880(%rdi), %ymm3 +vpaddw %ymm3, %ymm8, %ymm3 +vpand mask_mod2048(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 880(%rdi) +vmovdqu 1232(%rdi), %ymm3 +vpaddw %ymm3, %ymm7, %ymm3 +vpand mask_mod2048(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 1232(%rdi) +vmovdqu 230(%rdi), %ymm3 +vpaddw %ymm3, %ymm10, %ymm3 +vpand mask_mod2048(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 230(%rdi) +vmovdqu 582(%rdi), %ymm3 +vpaddw %ymm3, %ymm9, %ymm3 +vpand mask_mod2048(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 582(%rdi) +vmovdqu 934(%rdi), %ymm3 +vpaddw %ymm3, %ymm5, %ymm3 +vpand mask_mod2048(%rip), %ymm3, %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 +vpand mask_mod2048(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 264(%rdi) +vmovdqu 616(%rdi), %ymm10 +vpaddw %ymm10, %ymm6, %ymm10 +vpand mask_mod2048(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 616(%rdi) +vmovdqu 968(%rdi), %ymm10 +vpaddw %ymm10, %ymm4, %ymm10 +vpand mask_mod2048(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 968(%rdi) +vmovdqu 1320(%rdi), %ymm10 +vpaddw %ymm10, %ymm3, %ymm10 +vpand mask_mod2048(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 1320(%rdi) +vmovdqu 318(%rdi), %ymm10 +vpaddw %ymm10, %ymm8, %ymm10 +vpand mask_mod2048(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 318(%rdi) +vmovdqu 670(%rdi), %ymm10 +vpaddw %ymm10, %ymm7, %ymm10 +vpand mask_mod2048(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 670(%rdi) +vmovdqu 1022(%rdi), %ymm10 +vpaddw %ymm10, %ymm11, %ymm10 +vpand mask_mod2048(%rip), %ymm10, %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 +vpand mask_mod2048(%rip), %ymm8, %ymm8 +vmovdqu %ymm8, 352(%rdi) +vmovdqu 704(%rdi), %ymm8 +vpaddw %ymm8, %ymm6, %ymm8 +vpand mask_mod2048(%rip), %ymm8, %ymm8 +vmovdqu %ymm8, 704(%rdi) +vmovdqu 1056(%rdi), %ymm8 +vpaddw %ymm8, %ymm9, %ymm8 +vpand mask_mod2048(%rip), %ymm8, %ymm8 +vmovdqu %ymm8, 1056(%rdi) +vmovdqu 54(%rdi), %ymm8 +vpaddw %ymm8, %ymm10, %ymm8 +vpand mask_mod2048(%rip), %ymm8, %ymm8 +vmovdqu %ymm8, 54(%rdi) +vmovdqu 406(%rdi), %ymm8 +vpaddw %ymm8, %ymm4, %ymm8 +vpand mask_mod2048(%rip), %ymm8, %ymm8 +vmovdqu %ymm8, 406(%rdi) +vmovdqu 758(%rdi), %ymm8 +vpaddw %ymm8, %ymm3, %ymm8 +vpand mask_mod2048(%rip), %ymm8, %ymm8 +vmovdqu %ymm8, 758(%rdi) +vmovdqu 1110(%rdi), %ymm8 +vpaddw %ymm8, %ymm5, %ymm8 +vpand mask_mod2048(%rip), %ymm8, %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 +vpand mask_mod2048(%rip), %ymm4, %ymm4 +vmovdqu %ymm4, 440(%rdi) +vmovdqu 792(%rdi), %ymm4 +vpaddw %ymm4, %ymm6, %ymm4 +vpand mask_mod2048(%rip), %ymm4, %ymm4 +vmovdqu %ymm4, 792(%rdi) +vmovdqu 1144(%rdi), %ymm4 +vpaddw %ymm4, %ymm7, %ymm4 +vpand mask_mod2048(%rip), %ymm4, %ymm4 +vmovdqu %ymm4, 1144(%rdi) +vmovdqu 142(%rdi), %ymm4 +vpaddw %ymm4, %ymm8, %ymm4 +vpand mask_mod2048(%rip), %ymm4, %ymm4 +vmovdqu %ymm4, 142(%rdi) +vmovdqu 494(%rdi), %ymm4 +vpaddw %ymm4, %ymm9, %ymm4 +vpand mask_mod2048(%rip), %ymm4, %ymm4 +vmovdqu %ymm4, 494(%rdi) +vmovdqu 846(%rdi), %ymm4 +vpaddw %ymm4, %ymm10, %ymm4 +vpand mask_mod2048(%rip), %ymm4, %ymm4 +vmovdqu %ymm4, 846(%rdi) +vmovdqu 1198(%rdi), %ymm4 +vpaddw %ymm4, %ymm11, %ymm4 +vpand mask_mod2048(%rip), %ymm4, %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 +vpand mask_mod2048(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 528(%rdi) +vmovdqu 880(%rdi), %ymm9 +vpaddw %ymm9, %ymm6, %ymm9 +vpand mask_mod2048(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 880(%rdi) +vmovdqu 1232(%rdi), %ymm9 +vpaddw %ymm9, %ymm3, %ymm9 +vpand mask_mod2048(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 1232(%rdi) +vmovdqu 230(%rdi), %ymm9 +vpaddw %ymm9, %ymm4, %ymm9 +vpand mask_mod2048(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 230(%rdi) +vmovdqu 582(%rdi), %ymm9 +vpaddw %ymm9, %ymm7, %ymm9 +vpand mask_mod2048(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 582(%rdi) +vmovdqu 934(%rdi), %ymm9 +vpaddw %ymm9, %ymm8, %ymm9 +vpand mask_mod2048(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 934(%rdi) +vmovdqu 1286(%rdi), %ymm9 +vpaddw %ymm9, %ymm5, %ymm9 +vpand mask_mod2048(%rip), %ymm9, %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 +vpand mask_mod2048(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 616(%rdi) +vmovdqu 968(%rdi), %ymm7 +vpaddw %ymm7, %ymm6, %ymm7 +vpand mask_mod2048(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 968(%rdi) +vmovdqu 1320(%rdi), %ymm7 +vpaddw %ymm7, %ymm10, %ymm7 +vpand mask_mod2048(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 1320(%rdi) +vmovdqu 318(%rdi), %ymm7 +vpaddw %ymm7, %ymm9, %ymm7 +vpand mask_mod2048(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 318(%rdi) +vmovdqu 670(%rdi), %ymm7 +vpaddw %ymm7, %ymm3, %ymm7 +vpand mask_mod2048(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 670(%rdi) +vmovdqu 1022(%rdi), %ymm7 +vpaddw %ymm7, %ymm4, %ymm7 +vpand mask_mod2048(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 1022(%rdi) +vmovdqu 1374(%rdi), %ymm7 +vpaddw %ymm7, %ymm11, %ymm7 +vpand mask_mod2048(%rip), %ymm7, %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 +vpand mask_mod2048(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 32(%rdi) +vmovdqu 384(%rdi), %ymm3 +vpaddw %ymm3, %ymm6, %ymm3 +vpand mask_mod2048(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 384(%rdi) +vmovdqu 736(%rdi), %ymm3 +vpaddw %ymm3, %ymm8, %ymm3 +vpand mask_mod2048(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 736(%rdi) +vmovdqu 1088(%rdi), %ymm3 +vpaddw %ymm3, %ymm7, %ymm3 +vpand mask_mod2048(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 1088(%rdi) +vmovdqu 86(%rdi), %ymm3 +vpaddw %ymm3, %ymm10, %ymm3 +vpand mask_mod2048(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 86(%rdi) +vmovdqu 438(%rdi), %ymm3 +vpaddw %ymm3, %ymm9, %ymm3 +vpand mask_mod2048(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 438(%rdi) +vmovdqu 790(%rdi), %ymm3 +vpaddw %ymm3, %ymm5, %ymm3 +vpand mask_mod2048(%rip), %ymm3, %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 +vpand mask_mod2048(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 120(%rdi) +vmovdqu 472(%rdi), %ymm10 +vpaddw %ymm10, %ymm6, %ymm10 +vpand mask_mod2048(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 472(%rdi) +vmovdqu 824(%rdi), %ymm10 +vpaddw %ymm10, %ymm4, %ymm10 +vpand mask_mod2048(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 824(%rdi) +vmovdqu 1176(%rdi), %ymm10 +vpaddw %ymm10, %ymm3, %ymm10 +vpand mask_mod2048(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 1176(%rdi) +vmovdqu 174(%rdi), %ymm10 +vpaddw %ymm10, %ymm8, %ymm10 +vpand mask_mod2048(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 174(%rdi) +vmovdqu 526(%rdi), %ymm10 +vpaddw %ymm10, %ymm7, %ymm10 +vpand mask_mod2048(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 526(%rdi) +vmovdqu 878(%rdi), %ymm10 +vpaddw %ymm10, %ymm11, %ymm10 +vpand mask_mod2048(%rip), %ymm10, %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 +vpand mask_mod2048(%rip), %ymm8, %ymm8 +vmovdqu %ymm8, 208(%rdi) +vmovdqu 560(%rdi), %ymm8 +vpaddw %ymm8, %ymm6, %ymm8 +vpand mask_mod2048(%rip), %ymm8, %ymm8 +vmovdqu %ymm8, 560(%rdi) +vmovdqu 912(%rdi), %ymm8 +vpaddw %ymm8, %ymm9, %ymm8 +vpand mask_mod2048(%rip), %ymm8, %ymm8 +vmovdqu %ymm8, 912(%rdi) +vmovdqu 1264(%rdi), %ymm8 +vpaddw %ymm8, %ymm10, %ymm8 +vpand mask_mod2048(%rip), %ymm8, %ymm8 +vmovdqu %ymm8, 1264(%rdi) +vmovdqu 262(%rdi), %ymm8 +vpaddw %ymm8, %ymm4, %ymm8 +vpand mask_mod2048(%rip), %ymm8, %ymm8 +vmovdqu %ymm8, 262(%rdi) +vmovdqu 614(%rdi), %ymm8 +vpaddw %ymm8, %ymm3, %ymm8 +vpand mask_mod2048(%rip), %ymm8, %ymm8 +vmovdqu %ymm8, 614(%rdi) +vmovdqu 966(%rdi), %ymm8 +vpaddw %ymm8, %ymm5, %ymm8 +vpand mask_mod2048(%rip), %ymm8, %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 +vpand mask_mod2048(%rip), %ymm4, %ymm4 +vmovdqu %ymm4, 296(%rdi) +vmovdqu 648(%rdi), %ymm4 +vpaddw %ymm4, %ymm6, %ymm4 +vpand mask_mod2048(%rip), %ymm4, %ymm4 +vmovdqu %ymm4, 648(%rdi) +vmovdqu 1000(%rdi), %ymm4 +vpaddw %ymm4, %ymm7, %ymm4 +vpand mask_mod2048(%rip), %ymm4, %ymm4 +vmovdqu %ymm4, 1000(%rdi) +vmovdqu 1352(%rdi), %ymm4 +vpand mask_1_15(%rip), %ymm8, %ymm3 +vpaddw %ymm4, %ymm3, %ymm4 +vpand mask_mod2048(%rip), %ymm4, %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 +vpand mask_mod2048(%rip), %ymm4, %ymm4 +vmovdqu %ymm4, 0(%rdi) +vmovdqu 350(%rdi), %ymm4 +vpaddw %ymm4, %ymm9, %ymm4 +vpand mask_mod2048(%rip), %ymm4, %ymm4 +vmovdqu %ymm4, 350(%rdi) +vmovdqu 702(%rdi), %ymm4 +vpaddw %ymm4, %ymm10, %ymm4 +vpand mask_mod2048(%rip), %ymm4, %ymm4 +vmovdqu %ymm4, 702(%rdi) +vmovdqu 1054(%rdi), %ymm4 +vpaddw %ymm4, %ymm11, %ymm4 +vpand mask_mod2048(%rip), %ymm4, %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 +vpand mask_mod2048(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 384(%rdi) +vmovdqu 736(%rdi), %ymm9 +vpaddw %ymm9, %ymm6, %ymm9 +vpand mask_mod2048(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 736(%rdi) +vmovdqu 1088(%rdi), %ymm9 +vpaddw %ymm9, %ymm3, %ymm9 +vpand mask_mod2048(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 1088(%rdi) +vmovdqu 86(%rdi), %ymm9 +vpaddw %ymm9, %ymm4, %ymm9 +vpand mask_mod2048(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 86(%rdi) +vmovdqu 438(%rdi), %ymm9 +vpaddw %ymm9, %ymm7, %ymm9 +vpand mask_mod2048(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 438(%rdi) +vmovdqu 790(%rdi), %ymm9 +vpaddw %ymm9, %ymm8, %ymm9 +vpand mask_mod2048(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 790(%rdi) +vmovdqu 1142(%rdi), %ymm9 +vpaddw %ymm9, %ymm5, %ymm9 +vpand mask_mod2048(%rip), %ymm9, %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 +vpand mask_mod2048(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 472(%rdi) +vmovdqu 824(%rdi), %ymm7 +vpaddw %ymm7, %ymm6, %ymm7 +vpand mask_mod2048(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 824(%rdi) +vmovdqu 1176(%rdi), %ymm7 +vpaddw %ymm7, %ymm10, %ymm7 +vpand mask_mod2048(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 1176(%rdi) +vmovdqu 174(%rdi), %ymm7 +vpaddw %ymm7, %ymm9, %ymm7 +vpand mask_mod2048(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 174(%rdi) +vmovdqu 526(%rdi), %ymm7 +vpaddw %ymm7, %ymm3, %ymm7 +vpand mask_mod2048(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 526(%rdi) +vmovdqu 878(%rdi), %ymm7 +vpaddw %ymm7, %ymm4, %ymm7 +vpand mask_mod2048(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 878(%rdi) +vmovdqu 1230(%rdi), %ymm7 +vpaddw %ymm7, %ymm11, %ymm7 +vpand mask_mod2048(%rip), %ymm7, %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 +vpand mask_mod2048(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 560(%rdi) +vmovdqu 912(%rdi), %ymm3 +vpaddw %ymm3, %ymm6, %ymm3 +vpand mask_mod2048(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 912(%rdi) +vmovdqu 1264(%rdi), %ymm3 +vpaddw %ymm3, %ymm8, %ymm3 +vpand mask_mod2048(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 1264(%rdi) +vmovdqu 262(%rdi), %ymm3 +vpaddw %ymm3, %ymm7, %ymm3 +vpand mask_mod2048(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 262(%rdi) +vmovdqu 614(%rdi), %ymm3 +vpaddw %ymm3, %ymm10, %ymm3 +vpand mask_mod2048(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 614(%rdi) +vmovdqu 966(%rdi), %ymm3 +vpaddw %ymm3, %ymm9, %ymm3 +vpand mask_mod2048(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 966(%rdi) +vmovdqu 1318(%rdi), %ymm3 +vpaddw %ymm3, %ymm5, %ymm3 +vpand mask_mod2048(%rip), %ymm3, %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 +vpand mask_mod2048(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 648(%rdi) +vmovdqu 1000(%rdi), %ymm10 +vpaddw %ymm10, %ymm6, %ymm10 +vpand mask_mod2048(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 1000(%rdi) +vmovdqu 1352(%rdi), %ymm10 +vpand mask_1_15(%rip), %ymm4, %ymm9 +vpaddw %ymm10, %ymm9, %ymm10 +vpand mask_mod2048(%rip), %ymm10, %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 +vpand mask_mod2048(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 0(%rdi) +vmovdqu 350(%rdi), %ymm10 +vpaddw %ymm10, %ymm3, %ymm10 +vpand mask_mod2048(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 350(%rdi) +vmovdqu 702(%rdi), %ymm10 +vpaddw %ymm10, %ymm8, %ymm10 +vpand mask_mod2048(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 702(%rdi) +vmovdqu 1054(%rdi), %ymm10 +vpaddw %ymm10, %ymm7, %ymm10 +vpand mask_mod2048(%rip), %ymm10, %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 +vpand mask_mod2048(%rip), %ymm8, %ymm8 +vmovdqu %xmm8, 64(%rdi) +vextracti128 $1, %ymm8, %xmm8 +vmovq %xmm8, 80(%rdi) +vmovdqu 416(%rdi), %ymm8 +vpaddw %ymm8, %ymm6, %ymm8 +vpand mask_mod2048(%rip), %ymm8, %ymm8 +vmovdqu %xmm8, 416(%rdi) +vextracti128 $1, %ymm8, %xmm8 +vmovq %xmm8, 432(%rdi) +vmovdqu 768(%rdi), %ymm8 +vpaddw %ymm8, %ymm9, %ymm8 +vpand mask_mod2048(%rip), %ymm8, %ymm8 +vmovdqu %xmm8, 768(%rdi) +vextracti128 $1, %ymm8, %xmm8 +vmovq %xmm8, 784(%rdi) +vmovdqu 1120(%rdi), %ymm8 +vpaddw %ymm8, %ymm10, %ymm8 +vpand mask_mod2048(%rip), %ymm8, %ymm8 +vmovdqu %xmm8, 1120(%rdi) +vextracti128 $1, %ymm8, %xmm8 +vmovq %xmm8, 1136(%rdi) +vmovdqu 118(%rdi), %ymm8 +vpaddw %ymm8, %ymm4, %ymm8 +vpand mask_mod2048(%rip), %ymm8, %ymm8 +vmovdqu %xmm8, 118(%rdi) +vextracti128 $1, %ymm8, %xmm8 +vmovq %xmm8, 134(%rdi) +vmovdqu 470(%rdi), %ymm8 +vpaddw %ymm8, %ymm3, %ymm8 +vpand mask_mod2048(%rip), %ymm8, %ymm8 +vmovdqu %xmm8, 470(%rdi) +vextracti128 $1, %ymm8, %xmm8 +vmovq %xmm8, 486(%rdi) +vmovdqu 822(%rdi), %ymm8 +vpaddw %ymm8, %ymm5, %ymm8 +vpand mask_mod2048(%rip), %ymm8, %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 +vpand mask_mod2048(%rip), %ymm4, %ymm4 +vmovdqu %xmm4, 152(%rdi) +vextracti128 $1, %ymm4, %xmm4 +vmovq %xmm4, 168(%rdi) +vmovdqu 504(%rdi), %ymm4 +vpaddw %ymm4, %ymm6, %ymm4 +vpand mask_mod2048(%rip), %ymm4, %ymm4 +vmovdqu %xmm4, 504(%rdi) +vextracti128 $1, %ymm4, %xmm4 +vmovq %xmm4, 520(%rdi) +vmovdqu 856(%rdi), %ymm4 +vpaddw %ymm4, %ymm7, %ymm4 +vpand mask_mod2048(%rip), %ymm4, %ymm4 +vmovdqu %xmm4, 856(%rdi) +vextracti128 $1, %ymm4, %xmm4 +vmovq %xmm4, 872(%rdi) +vmovdqu 1208(%rdi), %ymm4 +vpaddw %ymm4, %ymm8, %ymm4 +vpand mask_mod2048(%rip), %ymm4, %ymm4 +vmovdqu %xmm4, 1208(%rdi) +vextracti128 $1, %ymm4, %xmm4 +vmovq %xmm4, 1224(%rdi) +vmovdqu 206(%rdi), %ymm4 +vpaddw %ymm4, %ymm9, %ymm4 +vpand mask_mod2048(%rip), %ymm4, %ymm4 +vmovdqu %xmm4, 206(%rdi) +vextracti128 $1, %ymm4, %xmm4 +vmovq %xmm4, 222(%rdi) +vmovdqu 558(%rdi), %ymm4 +vpaddw %ymm4, %ymm10, %ymm4 +vpand mask_mod2048(%rip), %ymm4, %ymm4 +vmovdqu %xmm4, 558(%rdi) +vextracti128 $1, %ymm4, %xmm4 +vmovq %xmm4, 574(%rdi) +vmovdqu 910(%rdi), %ymm4 +vpaddw %ymm4, %ymm11, %ymm4 +vpand mask_mod2048(%rip), %ymm4, %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 +vpand mask_mod2048(%rip), %ymm9, %ymm9 +vmovdqu %xmm9, 240(%rdi) +vextracti128 $1, %ymm9, %xmm9 +vmovq %xmm9, 256(%rdi) +vmovdqu 592(%rdi), %ymm9 +vpaddw %ymm9, %ymm6, %ymm9 +vpand mask_mod2048(%rip), %ymm9, %ymm9 +vmovdqu %xmm9, 592(%rdi) +vextracti128 $1, %ymm9, %xmm9 +vmovq %xmm9, 608(%rdi) +vmovdqu 944(%rdi), %ymm9 +vpaddw %ymm9, %ymm3, %ymm9 +vpand mask_mod2048(%rip), %ymm9, %ymm9 +vmovdqu %xmm9, 944(%rdi) +vextracti128 $1, %ymm9, %xmm9 +vmovq %xmm9, 960(%rdi) +vmovdqu 1296(%rdi), %ymm9 +vpaddw %ymm9, %ymm4, %ymm9 +vpand mask_mod2048(%rip), %ymm9, %ymm9 +vmovdqu %xmm9, 1296(%rdi) +vextracti128 $1, %ymm9, %xmm9 +vmovq %xmm9, 1312(%rdi) +vmovdqu 294(%rdi), %ymm9 +vpaddw %ymm9, %ymm7, %ymm9 +vpand mask_mod2048(%rip), %ymm9, %ymm9 +vmovdqu %xmm9, 294(%rdi) +vextracti128 $1, %ymm9, %xmm9 +vmovq %xmm9, 310(%rdi) +vmovdqu 646(%rdi), %ymm9 +vpaddw %ymm9, %ymm8, %ymm9 +vpand mask_mod2048(%rip), %ymm9, %ymm9 +vmovdqu %xmm9, 646(%rdi) +vextracti128 $1, %ymm9, %xmm9 +vmovq %xmm9, 662(%rdi) +vmovdqu 998(%rdi), %ymm9 +vpaddw %ymm9, %ymm5, %ymm9 +vpand mask_mod2048(%rip), %ymm9, %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 +vpand mask_mod2048(%rip), %ymm7, %ymm7 +vmovdqu %xmm7, 328(%rdi) +vextracti128 $1, %ymm7, %xmm7 +vmovq %xmm7, 344(%rdi) +vmovdqu 680(%rdi), %ymm7 +vpaddw %ymm7, %ymm6, %ymm7 +vpand mask_mod2048(%rip), %ymm7, %ymm7 +vmovdqu %xmm7, 680(%rdi) +vextracti128 $1, %ymm7, %xmm7 +vmovq %xmm7, 696(%rdi) +vmovdqu 1032(%rdi), %ymm7 +vpaddw %ymm7, %ymm10, %ymm7 +vpand mask_mod2048(%rip), %ymm7, %ymm7 +vmovdqu %xmm7, 1032(%rdi) +vextracti128 $1, %ymm7, %xmm7 +vmovq %xmm7, 1048(%rdi) +vmovdqu 30(%rdi), %ymm7 +vpaddw %ymm7, %ymm9, %ymm7 +vpand mask_mod2048(%rip), %ymm7, %ymm7 +vmovdqu %xmm7, 30(%rdi) +vextracti128 $1, %ymm7, %xmm7 +vmovq %xmm7, 46(%rdi) +vmovdqu 382(%rdi), %ymm7 +vpaddw %ymm7, %ymm3, %ymm7 +vpand mask_mod2048(%rip), %ymm7, %ymm7 +vmovdqu %xmm7, 382(%rdi) +vextracti128 $1, %ymm7, %xmm7 +vmovq %xmm7, 398(%rdi) +vmovdqu 734(%rdi), %ymm7 +vpaddw %ymm7, %ymm4, %ymm7 +vpand mask_mod2048(%rip), %ymm7, %ymm7 +vmovdqu %xmm7, 734(%rdi) +vextracti128 $1, %ymm7, %xmm7 +vmovq %xmm7, 750(%rdi) +vmovdqu 1086(%rdi), %ymm7 +vpaddw %ymm7, %ymm11, %ymm7 +vpand mask_mod2048(%rip), %ymm7, %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 +vpand mask_mod2048(%rip), %ymm3, %ymm3 +vmovdqu %xmm3, 416(%rdi) +vextracti128 $1, %ymm3, %xmm3 +vmovq %xmm3, 432(%rdi) +vmovdqu 768(%rdi), %ymm3 +vpaddw %ymm3, %ymm6, %ymm3 +vpand mask_mod2048(%rip), %ymm3, %ymm3 +vmovdqu %xmm3, 768(%rdi) +vextracti128 $1, %ymm3, %xmm3 +vmovq %xmm3, 784(%rdi) +vmovdqu 1120(%rdi), %ymm3 +vpaddw %ymm3, %ymm8, %ymm3 +vpand mask_mod2048(%rip), %ymm3, %ymm3 +vmovdqu %xmm3, 1120(%rdi) +vextracti128 $1, %ymm3, %xmm3 +vmovq %xmm3, 1136(%rdi) +vmovdqu 118(%rdi), %ymm3 +vpaddw %ymm3, %ymm7, %ymm3 +vpand mask_mod2048(%rip), %ymm3, %ymm3 +vmovdqu %xmm3, 118(%rdi) +vextracti128 $1, %ymm3, %xmm3 +vmovq %xmm3, 134(%rdi) +vmovdqu 470(%rdi), %ymm3 +vpaddw %ymm3, %ymm10, %ymm3 +vpand mask_mod2048(%rip), %ymm3, %ymm3 +vmovdqu %xmm3, 470(%rdi) +vextracti128 $1, %ymm3, %xmm3 +vmovq %xmm3, 486(%rdi) +vmovdqu 822(%rdi), %ymm3 +vpaddw %ymm3, %ymm9, %ymm3 +vpand mask_mod2048(%rip), %ymm3, %ymm3 +vmovdqu %xmm3, 822(%rdi) +vextracti128 $1, %ymm3, %xmm3 +vmovq %xmm3, 838(%rdi) +vmovdqu 1174(%rdi), %ymm3 +vpaddw %ymm3, %ymm5, %ymm3 +vpand mask_mod2048(%rip), %ymm3, %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 +vpand mask_mod2048(%rip), %ymm10, %ymm10 +vmovdqu %xmm10, 504(%rdi) +vextracti128 $1, %ymm10, %xmm10 +vmovq %xmm10, 520(%rdi) +vmovdqu 856(%rdi), %ymm10 +vpaddw %ymm10, %ymm6, %ymm10 +vpand mask_mod2048(%rip), %ymm10, %ymm10 +vmovdqu %xmm10, 856(%rdi) +vextracti128 $1, %ymm10, %xmm10 +vmovq %xmm10, 872(%rdi) +vmovdqu 1208(%rdi), %ymm10 +vpaddw %ymm10, %ymm4, %ymm10 +vpand mask_mod2048(%rip), %ymm10, %ymm10 +vmovdqu %xmm10, 1208(%rdi) +vextracti128 $1, %ymm10, %xmm10 +vmovq %xmm10, 1224(%rdi) +vmovdqu 206(%rdi), %ymm10 +vpaddw %ymm10, %ymm3, %ymm10 +vpand mask_mod2048(%rip), %ymm10, %ymm10 +vmovdqu %xmm10, 206(%rdi) +vextracti128 $1, %ymm10, %xmm10 +vmovq %xmm10, 222(%rdi) +vmovdqu 558(%rdi), %ymm10 +vpaddw %ymm10, %ymm8, %ymm10 +vpand mask_mod2048(%rip), %ymm10, %ymm10 +vmovdqu %xmm10, 558(%rdi) +vextracti128 $1, %ymm10, %xmm10 +vmovq %xmm10, 574(%rdi) +vmovdqu 910(%rdi), %ymm10 +vpaddw %ymm10, %ymm7, %ymm10 +vpand mask_mod2048(%rip), %ymm10, %ymm10 +vmovdqu %xmm10, 910(%rdi) +vextracti128 $1, %ymm10, %xmm10 +vmovq %xmm10, 926(%rdi) +vmovdqu 1262(%rdi), %ymm10 +vpaddw %ymm10, %ymm11, %ymm10 +vpand mask_mod2048(%rip), %ymm10, %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 +vpand mask_mod2048(%rip), %ymm8, %ymm8 +vmovdqu %xmm8, 592(%rdi) +vextracti128 $1, %ymm8, %xmm8 +vmovq %xmm8, 608(%rdi) +vmovdqu 944(%rdi), %ymm8 +vpaddw %ymm8, %ymm6, %ymm8 +vpand mask_mod2048(%rip), %ymm8, %ymm8 +vmovdqu %xmm8, 944(%rdi) +vextracti128 $1, %ymm8, %xmm8 +vmovq %xmm8, 960(%rdi) +vmovdqu 1296(%rdi), %ymm8 +vpaddw %ymm8, %ymm9, %ymm8 +vpand mask_mod2048(%rip), %ymm8, %ymm8 +vmovdqu %xmm8, 1296(%rdi) +vextracti128 $1, %ymm8, %xmm8 +vmovq %xmm8, 1312(%rdi) +vmovdqu 294(%rdi), %ymm8 +vpaddw %ymm8, %ymm10, %ymm8 +vpand mask_mod2048(%rip), %ymm8, %ymm8 +vmovdqu %xmm8, 294(%rdi) +vextracti128 $1, %ymm8, %xmm8 +vmovq %xmm8, 310(%rdi) +vmovdqu 646(%rdi), %ymm8 +vpaddw %ymm8, %ymm4, %ymm8 +vpand mask_mod2048(%rip), %ymm8, %ymm8 +vmovdqu %xmm8, 646(%rdi) +vextracti128 $1, %ymm8, %xmm8 +vmovq %xmm8, 662(%rdi) +vmovdqu 998(%rdi), %ymm8 +vpaddw %ymm8, %ymm3, %ymm8 +vpand mask_mod2048(%rip), %ymm8, %ymm8 +vmovdqu %xmm8, 998(%rdi) +vextracti128 $1, %ymm8, %xmm8 +vmovq %xmm8, 1014(%rdi) +vmovdqu 1350(%rdi), %ymm8 +vpaddw %ymm8, %ymm5, %ymm8 +vpand mask_mod2048(%rip), %ymm8, %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 +vpand mask_mod2048(%rip), %ymm4, %ymm4 +vmovdqu %xmm4, 680(%rdi) +vextracti128 $1, %ymm4, %xmm4 +vmovq %xmm4, 696(%rdi) +vmovdqu 1032(%rdi), %ymm4 +vpaddw %ymm4, %ymm6, %ymm4 +vpand mask_mod2048(%rip), %ymm4, %ymm4 +vmovdqu %xmm4, 1032(%rdi) +vextracti128 $1, %ymm4, %xmm4 +vmovq %xmm4, 1048(%rdi) +vmovdqu 30(%rdi), %ymm4 +vpaddw %ymm4, %ymm7, %ymm4 +vpand mask_mod2048(%rip), %ymm4, %ymm4 +vmovdqu %xmm4, 30(%rdi) +vextracti128 $1, %ymm4, %xmm4 +vmovq %xmm4, 46(%rdi) +vmovdqu 382(%rdi), %ymm4 +vpaddw %ymm4, %ymm8, %ymm4 +vpand mask_mod2048(%rip), %ymm4, %ymm4 +vmovdqu %xmm4, 382(%rdi) +vextracti128 $1, %ymm4, %xmm4 +vmovq %xmm4, 398(%rdi) +vmovdqu 734(%rdi), %ymm4 +vpaddw %ymm4, %ymm9, %ymm4 +vpand mask_mod2048(%rip), %ymm4, %ymm4 +vmovdqu %xmm4, 734(%rdi) +vextracti128 $1, %ymm4, %xmm4 +vmovq %xmm4, 750(%rdi) +vmovdqu 1086(%rdi), %ymm4 +vpaddw %ymm4, %ymm10, %ymm4 +vpand mask_mod2048(%rip), %ymm4, %ymm4 +vmovdqu %xmm4, 1086(%rdi) +vextracti128 $1, %ymm4, %xmm4 +vmovq %xmm4, 1102(%rdi) +mov %r8, %rsp +pop %r12 +ret diff --git a/crypto_kem/ntruhps2048677/avx2/poly_rq_to_s3.s b/crypto_kem/ntruhps2048677/avx2/poly_rq_to_s3.s new file mode 100644 index 00000000..1ba8a698 --- /dev/null +++ b/crypto_kem/ntruhps2048677/avx2/poly_rq_to_s3.s @@ -0,0 +1,1255 @@ +.data +.p2align 5 +const_3_repeating: +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +shuf_b8_to_low_doubleword: +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +mask_modq: +.word 2047 +.word 2047 +.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 const_3_repeating(%rip), %ymm3 +vmovdqa mask_modq(%rip), %ymm6 +vmovdqa 1376(%rsi), %ymm4 +vpand %ymm6, %ymm4, %ymm4 +vpsrlw $10, %ymm4, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm4 +vpsrlw $8, %ymm4, %ymm5 +vpand mask_ff(%rip), %ymm4, %ymm4 +vpaddw %ymm5, %ymm4, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm4 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm4, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm4 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm4, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm4 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm4, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm4 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm4, %ymm5 +vpsllw $1, %ymm5, %ymm4 +vextracti128 $1, %ymm4, %xmm4 +vpshufb shuf_b8_to_low_doubleword(%rip), %ymm4, %ymm4 +vinserti128 $1, %xmm4, %ymm4, %ymm4 +vmovdqa 0(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 0(%rdi) +vmovdqa 32(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 32(%rdi) +vmovdqa 64(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 64(%rdi) +vmovdqa 96(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 96(%rdi) +vmovdqa 128(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 128(%rdi) +vmovdqa 160(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 160(%rdi) +vmovdqa 192(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 192(%rdi) +vmovdqa 224(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 224(%rdi) +vmovdqa 256(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 256(%rdi) +vmovdqa 288(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 288(%rdi) +vmovdqa 320(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 320(%rdi) +vmovdqa 352(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 352(%rdi) +vmovdqa 384(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 384(%rdi) +vmovdqa 416(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 416(%rdi) +vmovdqa 448(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 448(%rdi) +vmovdqa 480(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 480(%rdi) +vmovdqa 512(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 512(%rdi) +vmovdqa 544(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 544(%rdi) +vmovdqa 576(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 576(%rdi) +vmovdqa 608(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 608(%rdi) +vmovdqa 640(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 640(%rdi) +vmovdqa 672(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 672(%rdi) +vmovdqa 704(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 704(%rdi) +vmovdqa 736(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 736(%rdi) +vmovdqa 768(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 768(%rdi) +vmovdqa 800(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 800(%rdi) +vmovdqa 832(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 832(%rdi) +vmovdqa 864(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 864(%rdi) +vmovdqa 896(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 896(%rdi) +vmovdqa 928(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 928(%rdi) +vmovdqa 960(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 960(%rdi) +vmovdqa 992(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 992(%rdi) +vmovdqa 1024(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1024(%rdi) +vmovdqa 1056(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1056(%rdi) +vmovdqa 1088(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1088(%rdi) +vmovdqa 1120(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1120(%rdi) +vmovdqa 1152(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1152(%rdi) +vmovdqa 1184(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1184(%rdi) +vmovdqa 1216(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1216(%rdi) +vmovdqa 1248(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1248(%rdi) +vmovdqa 1280(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1280(%rdi) +vmovdqa 1312(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1312(%rdi) +vmovdqa 1344(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1344(%rdi) +vmovdqa 1376(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $10, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $11, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1376(%rdi) +ret diff --git a/crypto_kem/ntruhps2048677/avx2/poly_s3_inv.c b/crypto_kem/ntruhps2048677/avx2/poly_s3_inv.c new file mode 100644 index 00000000..4c41f74e --- /dev/null +++ b/crypto_kem/ntruhps2048677/avx2/poly_s3_inv.c @@ -0,0 +1,569 @@ +#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/crypto_kem/ntruhps2048677/avx2/sample.c b/crypto_kem/ntruhps2048677/avx2/sample.c new file mode 100644 index 00000000..92629019 --- /dev/null +++ b/crypto_kem/ntruhps2048677/avx2/sample.c @@ -0,0 +1,46 @@ +#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); +} + + +#include "crypto_sort_int32.h" +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] << 15) + ((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/crypto_kem/ntruhps2048677/avx2/sample.h b/crypto_kem/ntruhps2048677/avx2/sample.h new file mode 100644 index 00000000..aa423e20 --- /dev/null +++ b/crypto_kem/ntruhps2048677/avx2/sample.h @@ -0,0 +1,15 @@ +#ifndef SAMPLE_H +#define SAMPLE_H + +#include "params.h" +#include "poly.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/crypto_kem/ntruhps2048677/avx2/sample_iid.c b/crypto_kem/ntruhps2048677/avx2/sample_iid.c new file mode 100644 index 00000000..63e23528 --- /dev/null +++ b/crypto_kem/ntruhps2048677/avx2/sample_iid.c @@ -0,0 +1,21 @@ +#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/crypto_kem/ntruhps2048677/avx2/square_10_677_shufbytes.s b/crypto_kem/ntruhps2048677/avx2/square_10_677_shufbytes.s new file mode 100644 index 00000000..4b620d00 --- /dev/null +++ b/crypto_kem/ntruhps2048677/avx2/square_10_677_shufbytes.s @@ -0,0 +1,7189 @@ +.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/crypto_kem/ntruhps2048677/avx2/square_168_677_shufbytes.s b/crypto_kem/ntruhps2048677/avx2/square_168_677_shufbytes.s new file mode 100644 index 00000000..e6d0ceb7 --- /dev/null +++ b/crypto_kem/ntruhps2048677/avx2/square_168_677_shufbytes.s @@ -0,0 +1,7312 @@ +.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/crypto_kem/ntruhps2048677/avx2/square_1_677_patience.s b/crypto_kem/ntruhps2048677/avx2/square_1_677_patience.s new file mode 100644 index 00000000..c3dece86 --- /dev/null +++ b/crypto_kem/ntruhps2048677/avx2/square_1_677_patience.s @@ -0,0 +1,134 @@ +.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/crypto_kem/ntruhps2048677/avx2/square_21_677_shufbytes.s b/crypto_kem/ntruhps2048677/avx2/square_21_677_shufbytes.s new file mode 100644 index 00000000..3d357c1b --- /dev/null +++ b/crypto_kem/ntruhps2048677/avx2/square_21_677_shufbytes.s @@ -0,0 +1,6580 @@ +.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/crypto_kem/ntruhps2048677/avx2/square_2_677_patience.s b/crypto_kem/ntruhps2048677/avx2/square_2_677_patience.s new file mode 100644 index 00000000..74e32bf6 --- /dev/null +++ b/crypto_kem/ntruhps2048677/avx2/square_2_677_patience.s @@ -0,0 +1,235 @@ +.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/crypto_kem/ntruhps2048677/avx2/square_336_677_shufbytes.s b/crypto_kem/ntruhps2048677/avx2/square_336_677_shufbytes.s new file mode 100644 index 00000000..62cdb964 --- /dev/null +++ b/crypto_kem/ntruhps2048677/avx2/square_336_677_shufbytes.s @@ -0,0 +1,6450 @@ +.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/crypto_kem/ntruhps2048677/avx2/square_3_677_patience.s b/crypto_kem/ntruhps2048677/avx2/square_3_677_patience.s new file mode 100644 index 00000000..aa7c1bd8 --- /dev/null +++ b/crypto_kem/ntruhps2048677/avx2/square_3_677_patience.s @@ -0,0 +1,452 @@ +.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/crypto_kem/ntruhps2048677/avx2/square_42_677_shufbytes.s b/crypto_kem/ntruhps2048677/avx2/square_42_677_shufbytes.s new file mode 100644 index 00000000..e34a0d6d --- /dev/null +++ b/crypto_kem/ntruhps2048677/avx2/square_42_677_shufbytes.s @@ -0,0 +1,8477 @@ +.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/crypto_kem/ntruhps2048677/avx2/square_5_677_patience.s b/crypto_kem/ntruhps2048677/avx2/square_5_677_patience.s new file mode 100644 index 00000000..320e1670 --- /dev/null +++ b/crypto_kem/ntruhps2048677/avx2/square_5_677_patience.s @@ -0,0 +1,1478 @@ +.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/crypto_kem/ntruhps2048677/avx2/square_84_677_shufbytes.s b/crypto_kem/ntruhps2048677/avx2/square_84_677_shufbytes.s new file mode 100644 index 00000000..5a0134b6 --- /dev/null +++ b/crypto_kem/ntruhps2048677/avx2/square_84_677_shufbytes.s @@ -0,0 +1,6940 @@ +.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/crypto_kem/ntruhps2048677/avx2/vec32_sample_iid.s b/crypto_kem/ntruhps2048677/avx2/vec32_sample_iid.s new file mode 100644 index 00000000..f3af1d16 --- /dev/null +++ b/crypto_kem/ntruhps2048677/avx2/vec32_sample_iid.s @@ -0,0 +1,1066 @@ +.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/crypto_kem/ntruhps2048677/clean/Makefile b/crypto_kem/ntruhps2048677/clean/Makefile index f65abed9..95872bf7 100644 --- a/crypto_kem/ntruhps2048677/clean/Makefile +++ b/crypto_kem/ntruhps2048677/clean/Makefile @@ -1,10 +1,10 @@ # This Makefile can be used with GNU Make or BSD Make LIB=libntruhps2048677_clean.a -HEADERS=api.h crypto_sort.h owcpa.h params.h poly.h sample.h verify.h -OBJECTS=crypto_sort.o kem.o owcpa.o pack3.o packq.o poly.o poly_lift.o poly_mod.o poly_r2_inv.o poly_rq_mul.o poly_s3_inv.o sample.o sample_iid.o verify.o +HEADERS=api.h cmov.h crypto_sort_int32.h owcpa.h params.h poly.h sample.h +OBJECTS=cmov.o crypto_sort_int32.o kem.o owcpa.o pack3.o packq.o poly.o poly_lift.o poly_mod.o poly_r2_inv.o poly_rq_mul.o poly_s3_inv.o sample.o sample_iid.o -CFLAGS=-O3 -Wall -Wextra -Wpedantic -Werror -Wmissing-prototypes -Wredundant-decls -std=c99 -I../../../common $(EXTRAFLAGS) +CFLAGS=-O3 -Wall -Wextra -Wpedantic -Wvla -Werror -Wredundant-decls -Wmissing-prototypes -std=c99 -I../../../common $(EXTRAFLAGS) all: $(LIB) diff --git a/crypto_kem/ntruhps2048677/clean/Makefile.Microsoft_nmake b/crypto_kem/ntruhps2048677/clean/Makefile.Microsoft_nmake index 2205be99..e687f2d3 100644 --- a/crypto_kem/ntruhps2048677/clean/Makefile.Microsoft_nmake +++ b/crypto_kem/ntruhps2048677/clean/Makefile.Microsoft_nmake @@ -2,7 +2,7 @@ # nmake /f Makefile.Microsoft_nmake LIBRARY=libntruhps2048677_clean.lib -OBJECTS=crypto_sort.obj kem.obj owcpa.obj pack3.obj packq.obj poly.obj poly_lift.obj poly_mod.obj poly_r2_inv.obj poly_rq_mul.obj poly_s3_inv.obj sample.obj sample_iid.obj verify.obj +OBJECTS=cmov.obj crypto_sort_int32.obj kem.obj owcpa.obj pack3.obj packq.obj poly.obj poly_lift.obj poly_mod.obj poly_r2_inv.obj poly_rq_mul.obj poly_s3_inv.obj sample.obj sample_iid.obj CFLAGS=/nologo /O2 /I ..\..\..\common /W4 /WX diff --git a/crypto_kem/ntruhps2048677/clean/api.h b/crypto_kem/ntruhps2048677/clean/api.h index 6a2042b5..f186494e 100644 --- a/crypto_kem/ntruhps2048677/clean/api.h +++ b/crypto_kem/ntruhps2048677/clean/api.h @@ -8,7 +8,7 @@ #define PQCLEAN_NTRUHPS2048677_CLEAN_CRYPTO_CIPHERTEXTBYTES 930 #define PQCLEAN_NTRUHPS2048677_CLEAN_CRYPTO_BYTES 32 -#define PQCLEAN_NTRUHPS2048677_CLEAN_CRYPTO_ALGNAME "NTRU-HPS2048677" +#define PQCLEAN_NTRUHPS2048677_CLEAN_CRYPTO_ALGNAME "ntruhps2048677" int PQCLEAN_NTRUHPS2048677_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk); diff --git a/crypto_kem/ntruhps2048677/clean/cmov.c b/crypto_kem/ntruhps2048677/clean/cmov.c new file mode 100644 index 00000000..30bf1e30 --- /dev/null +++ b/crypto_kem/ntruhps2048677/clean/cmov.c @@ -0,0 +1,11 @@ +#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/crypto_kem/ntruhps2048677/clean/cmov.h b/crypto_kem/ntruhps2048677/clean/cmov.h new file mode 100644 index 00000000..5e65aaf9 --- /dev/null +++ b/crypto_kem/ntruhps2048677/clean/cmov.h @@ -0,0 +1,10 @@ +#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/crypto_kem/ntruhps2048677/clean/crypto_sort.c b/crypto_kem/ntruhps2048677/clean/crypto_sort.c deleted file mode 100644 index 1cb88c95..00000000 --- a/crypto_kem/ntruhps2048677/clean/crypto_sort.c +++ /dev/null @@ -1,50 +0,0 @@ -// XXX: Temporary placeholder for a faster sort. -// Copied from supercop-20190110/crypto_sort/int32/portable3 - -#include - -#include "crypto_sort.h" - -#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) - -void PQCLEAN_NTRUHPS2048677_CLEAN_crypto_sort(void *array, long long n) { - long long top, p, q, r, i; - int32_t *x = array; - - if (n < 2) { - return; - } - top = 1; - while (top < n - top) { - top += top; - } - - for (p = top; p > 0; p >>= 1) { - for (i = 0; i < n - p; ++i) { - if (!(i & p)) { - int32_MINMAX(x[i], x[i + p]); - } - } - i = 0; - for (q = top; q > p; q >>= 1) { - for (; i < n - q; ++i) { - if (!(i & p)) { - int32_t a = x[i + p]; - for (r = q; r > p; r >>= 1) { - int32_MINMAX(a, x[i + r]); - } - x[i + p] = a; - } - } - } - } -} diff --git a/crypto_kem/ntruhps2048677/clean/crypto_sort.h b/crypto_kem/ntruhps2048677/clean/crypto_sort.h deleted file mode 100644 index ac07efb6..00000000 --- a/crypto_kem/ntruhps2048677/clean/crypto_sort.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef CRYPTO_SORT -#define CRYPTO_SORT - -void PQCLEAN_NTRUHPS2048677_CLEAN_crypto_sort(void *array, long long n); - -#endif diff --git a/crypto_kem/ntruhps2048677/clean/crypto_sort_int32.c b/crypto_kem/ntruhps2048677/clean/crypto_sort_int32.c new file mode 100644 index 00000000..99b31d1c --- /dev/null +++ b/crypto_kem/ntruhps2048677/clean/crypto_sort_int32.c @@ -0,0 +1,86 @@ +// 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/crypto_kem/ntruhps2048677/clean/crypto_sort_int32.h b/crypto_kem/ntruhps2048677/clean/crypto_sort_int32.h new file mode 100644 index 00000000..1fa89e4b --- /dev/null +++ b/crypto_kem/ntruhps2048677/clean/crypto_sort_int32.h @@ -0,0 +1,11 @@ +#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/crypto_kem/ntruhps2048677/clean/kem.c b/crypto_kem/ntruhps2048677/clean/kem.c index 0d12da94..250d8f32 100644 --- a/crypto_kem/ntruhps2048677/clean/kem.c +++ b/crypto_kem/ntruhps2048677/clean/kem.c @@ -1,12 +1,10 @@ -#include - #include "api.h" +#include "cmov.h" #include "fips202.h" #include "owcpa.h" #include "params.h" #include "randombytes.h" #include "sample.h" -#include "verify.h" // API FUNCTIONS int PQCLEAN_NTRUHPS2048677_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk) { @@ -51,7 +49,7 @@ int PQCLEAN_NTRUHPS2048677_CLEAN_crypto_kem_dec(uint8_t *k, const uint8_t *c, co 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. */ + /* See comment in PQCLEAN_NTRUHPS2048677_CLEAN_owcpa_dec for details. */ sha3_256(k, rm, NTRU_OWCPA_MSGBYTES); diff --git a/crypto_kem/ntruhps2048677/clean/owcpa.c b/crypto_kem/ntruhps2048677/clean/owcpa.c index e1b5eda2..cc310da0 100644 --- a/crypto_kem/ntruhps2048677/clean/owcpa.c +++ b/crypto_kem/ntruhps2048677/clean/owcpa.c @@ -59,6 +59,7 @@ void PQCLEAN_NTRUHPS2048677_CLEAN_owcpa_keypair(unsigned char *pk, 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]; diff --git a/crypto_kem/ntruhps2048677/clean/pack3.c b/crypto_kem/ntruhps2048677/clean/pack3.c index 8ae65ee1..dac82872 100644 --- a/crypto_kem/ntruhps2048677/clean/pack3.c +++ b/crypto_kem/ntruhps2048677/clean/pack3.c @@ -19,7 +19,6 @@ void PQCLEAN_NTRUHPS2048677_CLEAN_poly_S3_tobytes(unsigned char msg[NTRU_OWCPA_M 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]) { diff --git a/crypto_kem/ntruhps2048677/clean/packq.c b/crypto_kem/ntruhps2048677/clean/packq.c index ede8ec09..1b60c3af 100644 --- a/crypto_kem/ntruhps2048677/clean/packq.c +++ b/crypto_kem/ntruhps2048677/clean/packq.c @@ -29,7 +29,6 @@ void PQCLEAN_NTRUHPS2048677_CLEAN_poly_Sq_tobytes(unsigned char *r, const poly * 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. @@ -61,19 +60,18 @@ void PQCLEAN_NTRUHPS2048677_CLEAN_poly_Sq_frombytes(poly *r, const unsigned char 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] = (unsigned char) (a[11 * i + 0] >> 0) | (((uint16_t)a[11 * i + 1] & 0x07) << 8); - r->coeffs[8 * i + 1] = (unsigned char) (a[11 * i + 1] >> 3) | (((uint16_t)a[11 * i + 2] & 0x3f) << 5); - r->coeffs[8 * i + 2] = (unsigned char) (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] = (unsigned char) (a[11 * i + 4] >> 1) | (((uint16_t)a[11 * i + 5] & 0x0f) << 7); + 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] = (unsigned char) (a[11 * i + 0] >> 0) | (((uint16_t)a[11 * i + 1] & 0x07) << 8); - r->coeffs[8 * i + 1] = (unsigned char) (a[11 * i + 1] >> 3) | (((uint16_t)a[11 * i + 2] & 0x3f) << 5); + 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; diff --git a/crypto_kem/ntruhps2048677/clean/params.h b/crypto_kem/ntruhps2048677/clean/params.h index 2fab214a..0ef8ab54 100644 --- a/crypto_kem/ntruhps2048677/clean/params.h +++ b/crypto_kem/ntruhps2048677/clean/params.h @@ -5,6 +5,7 @@ #define NTRU_N 677 #define NTRU_LOGQ 11 + /* Do not modify below this line */ #define PAD32(X) ((((X) + 31)/32)*32) diff --git a/crypto_kem/ntruhps2048677/clean/poly.h b/crypto_kem/ntruhps2048677/clean/poly.h index 54876069..97e2f6e1 100644 --- a/crypto_kem/ntruhps2048677/clean/poly.h +++ b/crypto_kem/ntruhps2048677/clean/poly.h @@ -1,16 +1,13 @@ #ifndef POLY_H #define POLY_H -#include - #include "params.h" +#include + #define MODQ(X) ((X) & (NTRU_Q-1)) typedef struct { - // round to nearest multiple of 32 to make it easier to load into vector - // registers without having to do bound checks -#define NTRU_N_32 PAD32(NTRU_N) uint16_t coeffs[NTRU_N]; } poly; @@ -38,5 +35,4 @@ 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/crypto_kem/ntruhps2048677/clean/poly_lift.c b/crypto_kem/ntruhps2048677/clean/poly_lift.c index b49109e4..d2d23683 100644 --- a/crypto_kem/ntruhps2048677/clean/poly_lift.c +++ b/crypto_kem/ntruhps2048677/clean/poly_lift.c @@ -8,3 +8,4 @@ void PQCLEAN_NTRUHPS2048677_CLEAN_poly_lift(poly *r, const poly *a) { PQCLEAN_NTRUHPS2048677_CLEAN_poly_Z3_to_Zq(r); } + diff --git a/crypto_kem/ntruhps2048677/clean/poly_r2_inv.c b/crypto_kem/ntruhps2048677/clean/poly_r2_inv.c index 124fbaaa..8be864d8 100644 --- a/crypto_kem/ntruhps2048677/clean/poly_r2_inv.c +++ b/crypto_kem/ntruhps2048677/clean/poly_r2_inv.c @@ -1,113 +1,69 @@ +/* Based on supercop-20200702/crypto_core/invhrss701/simpler/core.c */ + #include "poly.h" -#include "verify.h" -#define POLY_R2_ADD(I,A,B,S) \ - for ((I)=0; (I)coeffs[i] ^ b->coeffs[i]) & swap; - a->coeffs[i] ^= t; - b->coeffs[i] ^= t; - } -} - -static inline void poly_divx(poly *a, int s) { - int i; - - for (i = 1; i < NTRU_N; i++) { - a->coeffs[i - 1] = (unsigned char) ((s * a->coeffs[i]) | (!s * a->coeffs[i - 1])); - } - a->coeffs[NTRU_N - 1] = (!s * a->coeffs[NTRU_N - 1]); -} - -static inline void poly_mulx(poly *a, int s) { - int i; - - for (i = 1; i < NTRU_N; i++) { - a->coeffs[NTRU_N - i] = (unsigned char) ((s * a->coeffs[NTRU_N - i - 1]) | (!s * a->coeffs[NTRU_N - i])); - } - a->coeffs[0] = (!s * a->coeffs[0]); +/* return -1 if x<0 and y<0; otherwise return 0 */ +static inline int both_negative_mask(int x, int y) { + return (x & y) >> 15; } void PQCLEAN_NTRUHPS2048677_CLEAN_poly_R2_inv(poly *r, const poly *a) { - /* Schroeppel--Orman--O'Malley--Spatscheck - * "Almost Inverse" algorithm as described - * by Silverman in NTRU Tech Report #14 */ - // with several modifications to make it run in constant-time - int i, j; - int k = 0; - uint16_t degf = NTRU_N - 1; - uint16_t degg = NTRU_N - 1; - int sign, t, swap; - int16_t done = 0; - poly b, f, g; - poly *c = r; // save some stack space - poly *temp_r = &f; + poly f, g, v, w; + int i, loop, delta; + int sign, swap, t; - /* b(X) := 1 */ - for (i = 1; i < NTRU_N; i++) { - b.coeffs[i] = 0; + for (i = 0; i < NTRU_N; ++i) { + v.coeffs[i] = 0; } - b.coeffs[0] = 1; - - /* c(X) := 0 */ - for (i = 0; i < NTRU_N; i++) { - c->coeffs[i] = 0; + for (i = 0; i < NTRU_N; ++i) { + w.coeffs[i] = 0; } + w.coeffs[0] = 1; - /* f(X) := a(X) */ - for (i = 0; i < NTRU_N; i++) { - f.coeffs[i] = a->coeffs[i] & 1; + for (i = 0; i < NTRU_N; ++i) { + f.coeffs[i] = 1; } - - /* g(X) := 1 + X + X^2 + ... + X^{N-1} */ - for (i = 0; i < NTRU_N; i++) { - g.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; - for (j = 0; j < 2 * (NTRU_N - 1) - 1; j++) { - sign = f.coeffs[0]; - swap = sign & !done & ((degf - degg) >> 15); + delta = 1; - cswappoly(&f, &g, swap); - cswappoly(&b, c, swap); - t = (degf ^ degg) & (-swap); - degf ^= t; - degg ^= t; - - POLY_R2_ADD(i, f, g, sign * (!done)); - POLY_R2_ADD(i, b, (*c), sign * (!done)); - - poly_divx(&f, !done); - poly_mulx(c, !done); - degf -= !done; - k += !done; - - done = 1 - (((uint16_t) - degf) >> 15); - } - - k = k - NTRU_N * ((uint16_t)(NTRU_N - k - 1) >> 15); - - /* Return X^{N-k} * b(X) */ - /* This is a k-coefficient rotation. We do this by looking at the binary - representation of k, rotating for every power of 2, and performing a cmov - if the respective bit is set. */ - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = b.coeffs[i]; - } - - for (i = 0; i < 10; i++) { - for (j = 0; j < NTRU_N; j++) { - temp_r->coeffs[j] = r->coeffs[(j + (1 << i)) % NTRU_N]; + 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]; } - PQCLEAN_NTRUHPS2048677_CLEAN_cmov((unsigned char *) & (r->coeffs), - (unsigned char *) & (temp_r->coeffs), sizeof(uint16_t) * NTRU_N, k & 1); - k >>= 1; + v.coeffs[0] = 0; + + sign = g.coeffs[0] & f.coeffs[0]; + swap = both_negative_mask(-delta, -(int) 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/crypto_kem/ntruhps2048677/clean/poly_s3_inv.c b/crypto_kem/ntruhps2048677/clean/poly_s3_inv.c index d935eb0e..099a80d4 100644 --- a/crypto_kem/ntruhps2048677/clean/poly_s3_inv.c +++ b/crypto_kem/ntruhps2048677/clean/poly_s3_inv.c @@ -1,137 +1,78 @@ +/* Based on supercop-20200702/crypto_core/invhrss701/simpler/core.c */ + #include "poly.h" -#include "verify.h" -static uint16_t mod3(uint16_t a) { - uint16_t r; +static inline uint8_t mod3(uint8_t a) { /* a between 0 and 9 */ 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); + a = (a >> 2) + (a & 3); /* between 0 and 4 */ + t = a - 3; + c = t >> 5; + return t ^ (c & (a ^ t)); } -#define POLY_S3_FMADD(I,A,B,S) \ - for ((I)=0; (I)coeffs[i] ^ b->coeffs[i]) & swap; - a->coeffs[i] ^= t; - b->coeffs[i] ^= t; - } -} - -static inline void poly_divx(poly *a, int s) { - int i; - - for (i = 1; i < NTRU_N; i++) { - a->coeffs[i - 1] = (unsigned char) ((s * a->coeffs[i]) | (!s * a->coeffs[i - 1])); - } - a->coeffs[NTRU_N - 1] = (!s * a->coeffs[NTRU_N - 1]); -} - -static inline void poly_mulx(poly *a, int s) { - int i; - - for (i = 1; i < NTRU_N; i++) { - a->coeffs[NTRU_N - i] = (unsigned char) ((s * a->coeffs[NTRU_N - i - 1]) | (!s * a->coeffs[NTRU_N - i])); - } - a->coeffs[0] = (!s * a->coeffs[0]); +/* return -1 if x<0 and y<0; otherwise return 0 */ +static inline int both_negative_mask(int x, int y) { + return (x & y) >> 15; } void PQCLEAN_NTRUHPS2048677_CLEAN_poly_S3_inv(poly *r, const poly *a) { - /* Schroeppel--Orman--O'Malley--Spatscheck - * "Almost Inverse" algorithm as described - * by Silverman in NTRU Tech Report #14 */ - // with several modifications to make it run in constant-time - int i, j; - uint16_t k = 0; - uint16_t degf = NTRU_N - 1; - uint16_t degg = NTRU_N - 1; - int sign, fsign = 0, t, swap; - int16_t done = 0; - poly b, c, f, g; - poly *temp_r = &f; + poly f, g, v, w; + int i, loop, delta; + int sign, swap, t; - /* b(X) := 1 */ - for (i = 1; i < NTRU_N; i++) { - b.coeffs[i] = 0; + for (i = 0; i < NTRU_N; ++i) { + v.coeffs[i] = 0; } - b.coeffs[0] = 1; - - /* c(X) := 0 */ - for (i = 0; i < NTRU_N; i++) { - c.coeffs[i] = 0; + for (i = 0; i < NTRU_N; ++i) { + w.coeffs[i] = 0; } + w.coeffs[0] = 1; - /* f(X) := a(X) */ - for (i = 0; i < NTRU_N; i++) { - f.coeffs[i] = a->coeffs[i]; + for (i = 0; i < NTRU_N; ++i) { + f.coeffs[i] = 1; } - - /* g(X) := 1 + X + X^2 + ... + X^{N-1} */ - for (i = 0; i < NTRU_N; i++) { - g.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; - for (j = 0; j < 2 * (NTRU_N - 1) - 1; j++) { sign = mod3(2 * g.coeffs[0] * f.coeffs[0]); - swap = (((sign & 2) >> 1) | sign) & !done & ((degf - degg) >> 15); + swap = both_negative_mask(-delta, -(int) g.coeffs[0]); + delta ^= swap & (delta ^ -delta); + delta += 1; - cswappoly(&f, &g, swap); - cswappoly(&b, &c, swap); - t = (degf ^ degg) & (-swap); - degf ^= t; - degg ^= t; - - for (i = 0; i < NTRU_N; i++) { - f.coeffs[i] = mod3(f.coeffs[i] + ((uint16_t) (sign * (!done))) * g.coeffs[i]); - } - for (i = 0; i < NTRU_N; i++) { - b.coeffs[i] = mod3(b.coeffs[i] + ((uint16_t) (sign * (!done))) * c.coeffs[i]); + 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; } - poly_divx(&f, !done); - poly_mulx(&c, !done); - degf -= !done; - k += !done; - - done = 1 - (((uint16_t) - degf) >> 15); - } - - fsign = f.coeffs[0]; - k = k - NTRU_N * ((uint16_t)(NTRU_N - k - 1) >> 15); - - /* Return X^{N-k} * b(X) */ - /* This is a k-coefficient rotation. We do this by looking at the binary - representation of k, rotating for every power of 2, and performing a cmov - if the respective bit is set. */ - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = mod3((uint16_t) fsign * b.coeffs[i]); - } - - for (i = 0; i < 10; i++) { - for (j = 0; j < NTRU_N; j++) { - temp_r->coeffs[j] = r->coeffs[(j + (1 << i)) % NTRU_N]; + for (i = 0; i < NTRU_N; ++i) { + g.coeffs[i] = mod3(g.coeffs[i] + sign * f.coeffs[i]); } - PQCLEAN_NTRUHPS2048677_CLEAN_cmov((unsigned char *) & (r->coeffs), - (unsigned char *) & (temp_r->coeffs), sizeof(uint16_t) * NTRU_N, k & 1); - k >>= 1; + for (i = 0; i < NTRU_N; ++i) { + w.coeffs[i] = mod3(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; } - /* Reduce modulo Phi_n */ - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = mod3(r->coeffs[i] + 2 * r->coeffs[NTRU_N - 1]); + sign = f.coeffs[0]; + for (i = 0; i < NTRU_N - 1; ++i) { + r->coeffs[i] = mod3(sign * v.coeffs[NTRU_N - 2 - i]); } + r->coeffs[NTRU_N - 1] = 0; } diff --git a/crypto_kem/ntruhps2048677/clean/sample.c b/crypto_kem/ntruhps2048677/clean/sample.c index 1ad42233..f5505177 100644 --- a/crypto_kem/ntruhps2048677/clean/sample.c +++ b/crypto_kem/ntruhps2048677/clean/sample.c @@ -1,27 +1,30 @@ -#include "crypto_sort.h" #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); } + +#include "crypto_sort_int32.h" 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) - uint32_t s[NTRU_N - 1]; + 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 + 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] << 15) + ((uint32_t) u[15 * i + 14] << 24); } @@ -33,7 +36,7 @@ void PQCLEAN_NTRUHPS2048677_CLEAN_sample_fixed_type(poly *r, const unsigned char s[i] |= 2; } - PQCLEAN_NTRUHPS2048677_CLEAN_crypto_sort(s, NTRU_N - 1); + 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)); diff --git a/crypto_kem/ntruhps2048677/clean/sample.h b/crypto_kem/ntruhps2048677/clean/sample.h index 93155fc4..c32b1001 100644 --- a/crypto_kem/ntruhps2048677/clean/sample.h +++ b/crypto_kem/ntruhps2048677/clean/sample.h @@ -1,8 +1,6 @@ #ifndef SAMPLE_H #define SAMPLE_H -#include - #include "params.h" #include "poly.h" @@ -13,4 +11,5 @@ void PQCLEAN_NTRUHPS2048677_CLEAN_sample_iid(poly *r, const unsigned char unifor void PQCLEAN_NTRUHPS2048677_CLEAN_sample_fixed_type(poly *r, const unsigned char uniformbytes[NTRU_SAMPLE_FT_BYTES]); + #endif diff --git a/crypto_kem/ntruhps2048677/clean/verify.c b/crypto_kem/ntruhps2048677/clean/verify.c deleted file mode 100644 index 6c3e0a2d..00000000 --- a/crypto_kem/ntruhps2048677/clean/verify.c +++ /dev/null @@ -1,29 +0,0 @@ -#include -#include - -#include "verify.h" - -/* returns 0 for equal strings, 1 for non-equal strings */ -unsigned char PQCLEAN_NTRUHPS2048677_CLEAN_verify(const unsigned char *a, const unsigned char *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 (unsigned char)r; -} - -/* 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); // Two's complement - for (i = 0; i < len; i++) { - r[i] ^= b & (x[i] ^ r[i]); - } -} diff --git a/crypto_kem/ntruhps2048677/clean/verify.h b/crypto_kem/ntruhps2048677/clean/verify.h deleted file mode 100644 index 10a101f9..00000000 --- a/crypto_kem/ntruhps2048677/clean/verify.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef VERIFY_H -#define VERIFY_H - -#include - -/* returns 0 for equal strings, 1 for non-equal strings */ -unsigned char PQCLEAN_NTRUHPS2048677_CLEAN_verify(const unsigned char *a, const unsigned char *b, size_t len); - -/* 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); - -#endif diff --git a/crypto_kem/ntruhps4096821/META.yml b/crypto_kem/ntruhps4096821/META.yml index 7ad64ded..96c97793 100644 --- a/crypto_kem/ntruhps4096821/META.yml +++ b/crypto_kem/ntruhps4096821/META.yml @@ -1,4 +1,4 @@ -name: NTRU-HPS4096821 +name: ntruhps4096821 type: kem claimed-nist-level: 5 claimed-security: IND-CCA2 @@ -15,9 +15,22 @@ auxiliary-submitters: - Jeffrey Hoffstein - Andreas Hülsing - Joost Rijneveld + - Tsunekazu Saito - Peter Schwabe - William Whyte + - Keita Xagawa + - Takashi Yamakawa - Zhenfei Zhang implementations: - name: clean - version: https://github.com/jschanck/ntru/tree/485dde03 reference implementation + version: https://github.com/jschanck/ntru/tree/4699d70a reference implementation + - name: avx2 + version: https://github.com/jschanck/ntru/tree/4699d70a avx2 implementation + supported_platforms: + - architecture: x86_64 + operating_systems: + - Linux + - Darwin + required_flags: + - avx2 + - bmi2 diff --git a/crypto_kem/ntruhps4096821/avx2/LICENSE b/crypto_kem/ntruhps4096821/avx2/LICENSE new file mode 100644 index 00000000..d5d21fff --- /dev/null +++ b/crypto_kem/ntruhps4096821/avx2/LICENSE @@ -0,0 +1 @@ +Public Domain diff --git a/crypto_kem/ntruhps4096821/avx2/Makefile b/crypto_kem/ntruhps4096821/avx2/Makefile new file mode 100644 index 00000000..cb39c2a2 --- /dev/null +++ b/crypto_kem/ntruhps4096821/avx2/Makefile @@ -0,0 +1,24 @@ +# This Makefile can be used with GNU Make or BSD Make + +LIB=libntruhps4096821_avx2.a +HEADERS=api.h cmov.h crypto_sort_int32.h owcpa.h params.h poly.h poly_r2_inv.h sample.h +OBJECTS=cmov.o crypto_sort_int32.o kem.o owcpa.o pack3.o packq.o poly.o poly_lift.o poly_r2_inv.o poly_s3_inv.o sample.o sample_iid.o \ + square_1_821_patience.o square_3_821_patience.o square_6_821_patience.o square_12_821_shufbytes.o square_24_821_shufbytes.o square_51_821_shufbytes.o square_102_821_shufbytes.o square_204_821_shufbytes.o square_408_821_shufbytes.o \ + poly_mod_3_Phi_n.o poly_mod_q_Phi_n.o poly_r2_mul.o poly_rq_mul.o poly_rq_to_s3.o vec32_sample_iid.o + +CFLAGS=-O3 -mavx2 -mbmi2 -Wall -Wextra -Wpedantic -Wvla -Werror -Wredundant-decls -Wmissing-prototypes -std=c99 -I../../../common $(EXTRAFLAGS) + +all: $(LIB) + +%.o: %.s $(HEADERS) + $(AS) -o $@ $< + +%.o: %.c $(HEADERS) + $(CC) $(CFLAGS) -c -o $@ $< + +$(LIB): $(OBJECTS) + $(AR) -r $@ $(OBJECTS) + +clean: + $(RM) $(OBJECTS) + $(RM) $(LIB) diff --git a/crypto_kem/ntruhps4096821/avx2/api.h b/crypto_kem/ntruhps4096821/avx2/api.h new file mode 100644 index 00000000..1aa6af6b --- /dev/null +++ b/crypto_kem/ntruhps4096821/avx2/api.h @@ -0,0 +1,19 @@ +#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/crypto_kem/ntruhps4096821/avx2/cmov.c b/crypto_kem/ntruhps4096821/avx2/cmov.c new file mode 100644 index 00000000..a03811f8 --- /dev/null +++ b/crypto_kem/ntruhps4096821/avx2/cmov.c @@ -0,0 +1,11 @@ +#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/crypto_kem/ntruhps4096821/avx2/cmov.h b/crypto_kem/ntruhps4096821/avx2/cmov.h new file mode 100644 index 00000000..efa8639f --- /dev/null +++ b/crypto_kem/ntruhps4096821/avx2/cmov.h @@ -0,0 +1,10 @@ +#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/crypto_kem/ntruhps4096821/avx2/crypto_sort_int32.c b/crypto_kem/ntruhps4096821/avx2/crypto_sort_int32.c new file mode 100644 index 00000000..47b06efd --- /dev/null +++ b/crypto_kem/ntruhps4096821/avx2/crypto_sort_int32.c @@ -0,0 +1,1215 @@ +// 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 = (p << 1 == q); + flipflip = !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/crypto_kem/ntruhps4096821/avx2/crypto_sort_int32.h b/crypto_kem/ntruhps4096821/avx2/crypto_sort_int32.h new file mode 100644 index 00000000..63d91ade --- /dev/null +++ b/crypto_kem/ntruhps4096821/avx2/crypto_sort_int32.h @@ -0,0 +1,11 @@ +#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/crypto_kem/ntruhps4096821/avx2/kem.c b/crypto_kem/ntruhps4096821/avx2/kem.c new file mode 100644 index 00000000..c3500df7 --- /dev/null +++ b/crypto_kem/ntruhps4096821/avx2/kem.c @@ -0,0 +1,68 @@ +#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 = 0; + + /* Check that unused bits of last byte of ciphertext are zero */ + fail |= c[NTRU_CIPHERTEXTBYTES - 1] & (0xff << (8 - (7 & (NTRU_LOGQ * NTRU_PACK_DEG)))); + + 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/crypto_kem/ntruhps4096821/avx2/owcpa.c b/crypto_kem/ntruhps4096821/avx2/owcpa.c new file mode 100644 index 00000000..163787e7 --- /dev/null +++ b/crypto_kem/ntruhps4096821/avx2/owcpa.c @@ -0,0 +1,160 @@ +#include "owcpa.h" +#include "poly.h" +#include "sample.h" + +static int owcpa_check_r(const poly *r) { + /* Check that r is in message space. */ + /* Note: Assumes that r has coefficients in {0, 1, ..., q-1} */ + int i; + uint64_t t = 0; + uint16_t c; + for (i = 0; i < NTRU_N; i++) { + c = MODQ(r->coeffs[i] + 1); + t |= c & (NTRU_Q - 4); /* 0 if c is in {0,1,2,3} */ + t |= (c + 1) & 0x4; /* 0 if c is in {0,1,2} */ + } + t |= MODQ(r->coeffs[NTRU_N - 1]); /* Coefficient n-1 must be zero */ + t = (~t + 1); // two's complement + t >>= 63; + return (int) t; +} + +static int owcpa_check_m(const poly *m) { + /* Check that m is in message space. */ + /* Note: Assumes that m has coefficients in {0,1,2}. */ + int i; + uint64_t t = 0; + uint16_t p1 = 0; + uint16_t m1 = 0; + for (i = 0; i < NTRU_N; i++) { + p1 += m->coeffs[i] & 0x01; + m1 += (m->coeffs[i] & 0x02) >> 1; + } + /* Need p1 = m1 and p1 + m1 = NTRU_WEIGHT */ + t |= p1 ^ m1; + t |= (p1 + m1) ^ NTRU_WEIGHT; + t = (~t + 1); // two's complement + t >>= 63; + return (int) t; +} + +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); + + /* NOTE: 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 = 0; + 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/crypto_kem/ntruhps4096821/avx2/owcpa.h b/crypto_kem/ntruhps4096821/avx2/owcpa.h new file mode 100644 index 00000000..2640ac5f --- /dev/null +++ b/crypto_kem/ntruhps4096821/avx2/owcpa.h @@ -0,0 +1,22 @@ +#ifndef OWCPA_H +#define OWCPA_H + +#include "params.h" +#include "poly.h" + +void PQCLEAN_NTRUHPS4096821_AVX2_owcpa_samplemsg(unsigned char msg[NTRU_OWCPA_MSGBYTES], + const unsigned char seed[NTRU_SEEDBYTES]); + +void PQCLEAN_NTRUHPS4096821_AVX2_owcpa_keypair(unsigned char *pk, + unsigned char *sk, + const unsigned char seed[NTRU_SEEDBYTES]); + +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/crypto_kem/ntruhps4096821/avx2/pack3.c b/crypto_kem/ntruhps4096821/avx2/pack3.c new file mode 100644 index 00000000..df9ec285 --- /dev/null +++ b/crypto_kem/ntruhps4096821/avx2/pack3.c @@ -0,0 +1,32 @@ +#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/crypto_kem/ntruhps4096821/avx2/packq.c b/crypto_kem/ntruhps4096821/avx2/packq.c new file mode 100644 index 00000000..dccacc72 --- /dev/null +++ b/crypto_kem/ntruhps4096821/avx2/packq.c @@ -0,0 +1,36 @@ +#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/crypto_kem/ntruhps4096821/avx2/params.h b/crypto_kem/ntruhps4096821/avx2/params.h new file mode 100644 index 00000000..f09b48fa --- /dev/null +++ b/crypto_kem/ntruhps4096821/avx2/params.h @@ -0,0 +1,37 @@ +#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/crypto_kem/ntruhps4096821/avx2/poly.c b/crypto_kem/ntruhps4096821/avx2/poly.c new file mode 100644 index 00000000..5170087b --- /dev/null +++ b/crypto_kem/ntruhps4096821/avx2/poly.c @@ -0,0 +1,67 @@ +#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) { + PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_mul(r, a, b); + 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/crypto_kem/ntruhps4096821/avx2/poly.h b/crypto_kem/ntruhps4096821/avx2/poly.h new file mode 100644 index 00000000..c904137a --- /dev/null +++ b/crypto_kem/ntruhps4096821/avx2/poly.h @@ -0,0 +1,41 @@ +#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/crypto_kem/ntruhps4096821/avx2/poly_lift.c b/crypto_kem/ntruhps4096821/avx2/poly_lift.c new file mode 100644 index 00000000..b89ed1c4 --- /dev/null +++ b/crypto_kem/ntruhps4096821/avx2/poly_lift.c @@ -0,0 +1,11 @@ +#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/crypto_kem/ntruhps4096821/avx2/poly_mod_3_Phi_n.s b/crypto_kem/ntruhps4096821/avx2/poly_mod_3_Phi_n.s new file mode 100644 index 00000000..235edaa4 --- /dev/null +++ b/crypto_kem/ntruhps4096821/avx2/poly_mod_3_Phi_n.s @@ -0,0 +1,1064 @@ +.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/crypto_kem/ntruhps4096821/avx2/poly_mod_q_Phi_n.s b/crypto_kem/ntruhps4096821/avx2/poly_mod_q_Phi_n.s new file mode 100644 index 00000000..2519db6b --- /dev/null +++ b/crypto_kem/ntruhps4096821/avx2/poly_mod_q_Phi_n.s @@ -0,0 +1,120 @@ +.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/crypto_kem/ntruhps4096821/avx2/poly_r2_inv.c b/crypto_kem/ntruhps4096821/avx2/poly_r2_inv.c new file mode 100644 index 00000000..8cce5ee7 --- /dev/null +++ b/crypto_kem/ntruhps4096821/avx2/poly_r2_inv.c @@ -0,0 +1,89 @@ +#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/crypto_kem/ntruhps4096821/avx2/poly_r2_inv.h b/crypto_kem/ntruhps4096821/avx2/poly_r2_inv.h new file mode 100644 index 00000000..811f5ae6 --- /dev/null +++ b/crypto_kem/ntruhps4096821/avx2/poly_r2_inv.h @@ -0,0 +1,21 @@ +#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/crypto_kem/ntruhps4096821/avx2/poly_r2_mul.s b/crypto_kem/ntruhps4096821/avx2/poly_r2_mul.s new file mode 100644 index 00000000..33681d86 --- /dev/null +++ b/crypto_kem/ntruhps4096821/avx2/poly_r2_mul.s @@ -0,0 +1,748 @@ +.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/crypto_kem/ntruhps4096821/avx2/poly_rq_mul.s b/crypto_kem/ntruhps4096821/avx2/poly_rq_mul.s new file mode 100644 index 00000000..adebfb92 --- /dev/null +++ b/crypto_kem/ntruhps4096821/avx2/poly_rq_mul.s @@ -0,0 +1,10893 @@ +.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 +mask_mod4096: +.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 +.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 +vpand mask_mod4096(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 0(%rdi) +vmovdqu 416(%rdi), %ymm9 +vpaddw %ymm9, %ymm6, %ymm9 +vpand mask_mod4096(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 416(%rdi) +vmovdqu 832(%rdi), %ymm9 +vpaddw %ymm9, %ymm3, %ymm9 +vpand mask_mod4096(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 832(%rdi) +vmovdqu 1248(%rdi), %ymm9 +vpaddw %ymm9, %ymm4, %ymm9 +vpand mask_mod4096(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 1248(%rdi) +vmovdqu 22(%rdi), %ymm9 +vpaddw %ymm9, %ymm7, %ymm9 +vpand mask_mod4096(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 22(%rdi) +vmovdqu 438(%rdi), %ymm9 +vpaddw %ymm9, %ymm8, %ymm9 +vpand mask_mod4096(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 438(%rdi) +vmovdqu 854(%rdi), %ymm9 +vpaddw %ymm9, %ymm5, %ymm9 +vpand mask_mod4096(%rip), %ymm9, %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 +vpand mask_mod4096(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 104(%rdi) +vmovdqu 520(%rdi), %ymm7 +vpaddw %ymm7, %ymm6, %ymm7 +vpand mask_mod4096(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 520(%rdi) +vmovdqu 936(%rdi), %ymm7 +vpaddw %ymm7, %ymm10, %ymm7 +vpand mask_mod4096(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 936(%rdi) +vmovdqu 1352(%rdi), %ymm7 +vpaddw %ymm7, %ymm9, %ymm7 +vpand mask_mod4096(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 1352(%rdi) +vmovdqu 126(%rdi), %ymm7 +vpaddw %ymm7, %ymm3, %ymm7 +vpand mask_mod4096(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 126(%rdi) +vmovdqu 542(%rdi), %ymm7 +vpaddw %ymm7, %ymm4, %ymm7 +vpand mask_mod4096(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 542(%rdi) +vmovdqu 958(%rdi), %ymm7 +vpaddw %ymm7, %ymm11, %ymm7 +vpand mask_mod4096(%rip), %ymm7, %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 +vpand mask_mod4096(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 208(%rdi) +vmovdqu 624(%rdi), %ymm3 +vpaddw %ymm3, %ymm6, %ymm3 +vpand mask_mod4096(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 624(%rdi) +vmovdqu 1040(%rdi), %ymm3 +vpaddw %ymm3, %ymm8, %ymm3 +vpand mask_mod4096(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 1040(%rdi) +vmovdqu 1456(%rdi), %ymm3 +vpaddw %ymm3, %ymm7, %ymm3 +vpand mask_mod4096(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 1456(%rdi) +vmovdqu 230(%rdi), %ymm3 +vpaddw %ymm3, %ymm10, %ymm3 +vpand mask_mod4096(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 230(%rdi) +vmovdqu 646(%rdi), %ymm3 +vpaddw %ymm3, %ymm9, %ymm3 +vpand mask_mod4096(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 646(%rdi) +vmovdqu 1062(%rdi), %ymm3 +vpaddw %ymm3, %ymm5, %ymm3 +vpand mask_mod4096(%rip), %ymm3, %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 +vpand mask_mod4096(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 312(%rdi) +vmovdqu 728(%rdi), %ymm10 +vpaddw %ymm10, %ymm6, %ymm10 +vpand mask_mod4096(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 728(%rdi) +vmovdqu 1144(%rdi), %ymm10 +vpaddw %ymm10, %ymm4, %ymm10 +vpand mask_mod4096(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 1144(%rdi) +vmovdqu 1560(%rdi), %ymm10 +vpaddw %ymm10, %ymm3, %ymm10 +vpand mask_mod4096(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 1560(%rdi) +vmovdqu 334(%rdi), %ymm10 +vpaddw %ymm10, %ymm8, %ymm10 +vpand mask_mod4096(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 334(%rdi) +vmovdqu 750(%rdi), %ymm10 +vpaddw %ymm10, %ymm7, %ymm10 +vpand mask_mod4096(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 750(%rdi) +vmovdqu 1166(%rdi), %ymm10 +vpaddw %ymm10, %ymm11, %ymm10 +vpand mask_mod4096(%rip), %ymm10, %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 +vpand mask_mod4096(%rip), %ymm8, %ymm8 +vmovdqu %ymm8, 416(%rdi) +vmovdqu 832(%rdi), %ymm8 +vpaddw %ymm8, %ymm6, %ymm8 +vpand mask_mod4096(%rip), %ymm8, %ymm8 +vmovdqu %ymm8, 832(%rdi) +vmovdqu 1248(%rdi), %ymm8 +vpaddw %ymm8, %ymm9, %ymm8 +vpand mask_mod4096(%rip), %ymm8, %ymm8 +vmovdqu %ymm8, 1248(%rdi) +vmovdqu 22(%rdi), %ymm8 +vpaddw %ymm8, %ymm10, %ymm8 +vpand mask_mod4096(%rip), %ymm8, %ymm8 +vmovdqu %ymm8, 22(%rdi) +vmovdqu 438(%rdi), %ymm8 +vpaddw %ymm8, %ymm4, %ymm8 +vpand mask_mod4096(%rip), %ymm8, %ymm8 +vmovdqu %ymm8, 438(%rdi) +vmovdqu 854(%rdi), %ymm8 +vpaddw %ymm8, %ymm3, %ymm8 +vpand mask_mod4096(%rip), %ymm8, %ymm8 +vmovdqu %ymm8, 854(%rdi) +vmovdqu 1270(%rdi), %ymm8 +vpaddw %ymm8, %ymm5, %ymm8 +vpand mask_mod4096(%rip), %ymm8, %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 +vpand mask_mod4096(%rip), %ymm4, %ymm4 +vmovdqu %ymm4, 520(%rdi) +vmovdqu 936(%rdi), %ymm4 +vpaddw %ymm4, %ymm6, %ymm4 +vpand mask_mod4096(%rip), %ymm4, %ymm4 +vmovdqu %ymm4, 936(%rdi) +vmovdqu 1352(%rdi), %ymm4 +vpaddw %ymm4, %ymm7, %ymm4 +vpand mask_mod4096(%rip), %ymm4, %ymm4 +vmovdqu %ymm4, 1352(%rdi) +vmovdqu 126(%rdi), %ymm4 +vpaddw %ymm4, %ymm8, %ymm4 +vpand mask_mod4096(%rip), %ymm4, %ymm4 +vmovdqu %ymm4, 126(%rdi) +vmovdqu 542(%rdi), %ymm4 +vpaddw %ymm4, %ymm9, %ymm4 +vpand mask_mod4096(%rip), %ymm4, %ymm4 +vmovdqu %ymm4, 542(%rdi) +vmovdqu 958(%rdi), %ymm4 +vpaddw %ymm4, %ymm10, %ymm4 +vpand mask_mod4096(%rip), %ymm4, %ymm4 +vmovdqu %ymm4, 958(%rdi) +vmovdqu 1374(%rdi), %ymm4 +vpaddw %ymm4, %ymm11, %ymm4 +vpand mask_mod4096(%rip), %ymm4, %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 +vpand mask_mod4096(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 624(%rdi) +vmovdqu 1040(%rdi), %ymm9 +vpaddw %ymm9, %ymm6, %ymm9 +vpand mask_mod4096(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 1040(%rdi) +vmovdqu 1456(%rdi), %ymm9 +vpaddw %ymm9, %ymm3, %ymm9 +vpand mask_mod4096(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 1456(%rdi) +vmovdqu 230(%rdi), %ymm9 +vpaddw %ymm9, %ymm4, %ymm9 +vpand mask_mod4096(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 230(%rdi) +vmovdqu 646(%rdi), %ymm9 +vpaddw %ymm9, %ymm7, %ymm9 +vpand mask_mod4096(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 646(%rdi) +vmovdqu 1062(%rdi), %ymm9 +vpaddw %ymm9, %ymm8, %ymm9 +vpand mask_mod4096(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 1062(%rdi) +vmovdqu 1478(%rdi), %ymm9 +vpaddw %ymm9, %ymm5, %ymm9 +vpand mask_mod4096(%rip), %ymm9, %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 +vpand mask_mod4096(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 728(%rdi) +vmovdqu 1144(%rdi), %ymm7 +vpaddw %ymm7, %ymm6, %ymm7 +vpand mask_mod4096(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 1144(%rdi) +vmovdqu 1560(%rdi), %ymm7 +vpaddw %ymm7, %ymm10, %ymm7 +vpand mask_mod4096(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 1560(%rdi) +vmovdqu 334(%rdi), %ymm7 +vpaddw %ymm7, %ymm9, %ymm7 +vpand mask_mod4096(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 334(%rdi) +vmovdqu 750(%rdi), %ymm7 +vpaddw %ymm7, %ymm3, %ymm7 +vpand mask_mod4096(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 750(%rdi) +vmovdqu 1166(%rdi), %ymm7 +vpaddw %ymm7, %ymm4, %ymm7 +vpand mask_mod4096(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 1166(%rdi) +vmovdqu 1582(%rdi), %ymm7 +vpaddw %ymm7, %ymm11, %ymm7 +vpand mask_mod4096(%rip), %ymm7, %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 +vpand mask_mod4096(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 32(%rdi) +vmovdqu 448(%rdi), %ymm3 +vpaddw %ymm3, %ymm6, %ymm3 +vpand mask_mod4096(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 448(%rdi) +vmovdqu 864(%rdi), %ymm3 +vpaddw %ymm3, %ymm8, %ymm3 +vpand mask_mod4096(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 864(%rdi) +vmovdqu 1280(%rdi), %ymm3 +vpaddw %ymm3, %ymm7, %ymm3 +vpand mask_mod4096(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 1280(%rdi) +vmovdqu 54(%rdi), %ymm3 +vpaddw %ymm3, %ymm10, %ymm3 +vpand mask_mod4096(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 54(%rdi) +vmovdqu 470(%rdi), %ymm3 +vpaddw %ymm3, %ymm9, %ymm3 +vpand mask_mod4096(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 470(%rdi) +vmovdqu 886(%rdi), %ymm3 +vpaddw %ymm3, %ymm5, %ymm3 +vpand mask_mod4096(%rip), %ymm3, %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 +vpand mask_mod4096(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 136(%rdi) +vmovdqu 552(%rdi), %ymm10 +vpaddw %ymm10, %ymm6, %ymm10 +vpand mask_mod4096(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 552(%rdi) +vmovdqu 968(%rdi), %ymm10 +vpaddw %ymm10, %ymm4, %ymm10 +vpand mask_mod4096(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 968(%rdi) +vmovdqu 1384(%rdi), %ymm10 +vpaddw %ymm10, %ymm3, %ymm10 +vpand mask_mod4096(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 1384(%rdi) +vmovdqu 158(%rdi), %ymm10 +vpaddw %ymm10, %ymm8, %ymm10 +vpand mask_mod4096(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 158(%rdi) +vmovdqu 574(%rdi), %ymm10 +vpaddw %ymm10, %ymm7, %ymm10 +vpand mask_mod4096(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 574(%rdi) +vmovdqu 990(%rdi), %ymm10 +vpaddw %ymm10, %ymm11, %ymm10 +vpand mask_mod4096(%rip), %ymm10, %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 +vpand mask_mod4096(%rip), %ymm8, %ymm8 +vmovdqu %ymm8, 240(%rdi) +vmovdqu 656(%rdi), %ymm8 +vpaddw %ymm8, %ymm6, %ymm8 +vpand mask_mod4096(%rip), %ymm8, %ymm8 +vmovdqu %ymm8, 656(%rdi) +vmovdqu 1072(%rdi), %ymm8 +vpaddw %ymm8, %ymm9, %ymm8 +vpand mask_mod4096(%rip), %ymm8, %ymm8 +vmovdqu %ymm8, 1072(%rdi) +vmovdqu 1488(%rdi), %ymm8 +vpaddw %ymm8, %ymm10, %ymm8 +vpand mask_mod4096(%rip), %ymm8, %ymm8 +vmovdqu %ymm8, 1488(%rdi) +vmovdqu 262(%rdi), %ymm8 +vpaddw %ymm8, %ymm4, %ymm8 +vpand mask_mod4096(%rip), %ymm8, %ymm8 +vmovdqu %ymm8, 262(%rdi) +vmovdqu 678(%rdi), %ymm8 +vpaddw %ymm8, %ymm3, %ymm8 +vpand mask_mod4096(%rip), %ymm8, %ymm8 +vmovdqu %ymm8, 678(%rdi) +vmovdqu 1094(%rdi), %ymm8 +vpaddw %ymm8, %ymm5, %ymm8 +vpand mask_mod4096(%rip), %ymm8, %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 +vpand mask_mod4096(%rip), %ymm4, %ymm4 +vmovdqu %ymm4, 344(%rdi) +vmovdqu 760(%rdi), %ymm4 +vpaddw %ymm4, %ymm6, %ymm4 +vpand mask_mod4096(%rip), %ymm4, %ymm4 +vmovdqu %ymm4, 760(%rdi) +vmovdqu 1176(%rdi), %ymm4 +vpaddw %ymm4, %ymm7, %ymm4 +vpand mask_mod4096(%rip), %ymm4, %ymm4 +vmovdqu %ymm4, 1176(%rdi) +vmovdqu 1592(%rdi), %ymm4 +vpaddw %ymm4, %ymm8, %ymm4 +vpand mask_mod4096(%rip), %ymm4, %ymm4 +vmovdqu %ymm4, 1592(%rdi) +vmovdqu 366(%rdi), %ymm4 +vpaddw %ymm4, %ymm9, %ymm4 +vpand mask_mod4096(%rip), %ymm4, %ymm4 +vmovdqu %ymm4, 366(%rdi) +vmovdqu 782(%rdi), %ymm4 +vpaddw %ymm4, %ymm10, %ymm4 +vpand mask_mod4096(%rip), %ymm4, %ymm4 +vmovdqu %ymm4, 782(%rdi) +vmovdqu 1198(%rdi), %ymm4 +vpaddw %ymm4, %ymm11, %ymm4 +vpand mask_mod4096(%rip), %ymm4, %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 +vpand mask_mod4096(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 448(%rdi) +vmovdqu 864(%rdi), %ymm9 +vpaddw %ymm9, %ymm6, %ymm9 +vpand mask_mod4096(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 864(%rdi) +vmovdqu 1280(%rdi), %ymm9 +vpaddw %ymm9, %ymm3, %ymm9 +vpand mask_mod4096(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 1280(%rdi) +vmovdqu 54(%rdi), %ymm9 +vpaddw %ymm9, %ymm4, %ymm9 +vpand mask_mod4096(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 54(%rdi) +vmovdqu 470(%rdi), %ymm9 +vpaddw %ymm9, %ymm7, %ymm9 +vpand mask_mod4096(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 470(%rdi) +vmovdqu 886(%rdi), %ymm9 +vpaddw %ymm9, %ymm8, %ymm9 +vpand mask_mod4096(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 886(%rdi) +vmovdqu 1302(%rdi), %ymm9 +vpaddw %ymm9, %ymm5, %ymm9 +vpand mask_mod4096(%rip), %ymm9, %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 +vpand mask_mod4096(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 552(%rdi) +vmovdqu 968(%rdi), %ymm7 +vpaddw %ymm7, %ymm6, %ymm7 +vpand mask_mod4096(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 968(%rdi) +vmovdqu 1384(%rdi), %ymm7 +vpaddw %ymm7, %ymm10, %ymm7 +vpand mask_mod4096(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 1384(%rdi) +vmovdqu 158(%rdi), %ymm7 +vpaddw %ymm7, %ymm9, %ymm7 +vpand mask_mod4096(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 158(%rdi) +vmovdqu 574(%rdi), %ymm7 +vpaddw %ymm7, %ymm3, %ymm7 +vpand mask_mod4096(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 574(%rdi) +vmovdqu 990(%rdi), %ymm7 +vpaddw %ymm7, %ymm4, %ymm7 +vpand mask_mod4096(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 990(%rdi) +vmovdqu 1406(%rdi), %ymm7 +vpaddw %ymm7, %ymm11, %ymm7 +vpand mask_mod4096(%rip), %ymm7, %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 +vpand mask_mod4096(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 656(%rdi) +vmovdqu 1072(%rdi), %ymm3 +vpaddw %ymm3, %ymm6, %ymm3 +vpand mask_mod4096(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 1072(%rdi) +vmovdqu 1488(%rdi), %ymm3 +vpaddw %ymm3, %ymm8, %ymm3 +vpand mask_mod4096(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 1488(%rdi) +vmovdqu 262(%rdi), %ymm3 +vpaddw %ymm3, %ymm7, %ymm3 +vpand mask_mod4096(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 262(%rdi) +vmovdqu 678(%rdi), %ymm3 +vpaddw %ymm3, %ymm10, %ymm3 +vpand mask_mod4096(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 678(%rdi) +vmovdqu 1094(%rdi), %ymm3 +vpaddw %ymm3, %ymm9, %ymm3 +vpand mask_mod4096(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 1094(%rdi) +vmovdqu 1510(%rdi), %ymm3 +vpaddw %ymm3, %ymm5, %ymm3 +vpand mask_mod4096(%rip), %ymm3, %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 +vpand mask_mod4096(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 760(%rdi) +vmovdqu 1176(%rdi), %ymm10 +vpaddw %ymm10, %ymm6, %ymm10 +vpand mask_mod4096(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 1176(%rdi) +vmovdqu 1592(%rdi), %ymm10 +vpaddw %ymm10, %ymm4, %ymm10 +vpand mask_mod4096(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 1592(%rdi) +vmovdqu 366(%rdi), %ymm10 +vpaddw %ymm10, %ymm3, %ymm10 +vpand mask_mod4096(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 366(%rdi) +vmovdqu 782(%rdi), %ymm10 +vpaddw %ymm10, %ymm8, %ymm10 +vpand mask_mod4096(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 782(%rdi) +vmovdqu 1198(%rdi), %ymm10 +vpaddw %ymm10, %ymm7, %ymm10 +vpand mask_mod4096(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 1198(%rdi) +vmovdqu 1614(%rdi), %ymm10 +vpaddw %ymm10, %ymm11, %ymm10 +vpand mask_mod4096(%rip), %ymm10, %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 +vpand mask_mod4096(%rip), %ymm8, %ymm8 +vmovdqu %ymm8, 64(%rdi) +vmovdqu 480(%rdi), %ymm8 +vpaddw %ymm8, %ymm6, %ymm8 +vpand mask_mod4096(%rip), %ymm8, %ymm8 +vmovdqu %ymm8, 480(%rdi) +vmovdqu 896(%rdi), %ymm8 +vpaddw %ymm8, %ymm9, %ymm8 +vpand mask_mod4096(%rip), %ymm8, %ymm8 +vmovdqu %ymm8, 896(%rdi) +vmovdqu 1312(%rdi), %ymm8 +vpaddw %ymm8, %ymm10, %ymm8 +vpand mask_mod4096(%rip), %ymm8, %ymm8 +vmovdqu %ymm8, 1312(%rdi) +vmovdqu 86(%rdi), %ymm8 +vpaddw %ymm8, %ymm4, %ymm8 +vpand mask_mod4096(%rip), %ymm8, %ymm8 +vmovdqu %ymm8, 86(%rdi) +vmovdqu 502(%rdi), %ymm8 +vpaddw %ymm8, %ymm3, %ymm8 +vpand mask_mod4096(%rip), %ymm8, %ymm8 +vmovdqu %ymm8, 502(%rdi) +vmovdqu 918(%rdi), %ymm8 +vpaddw %ymm8, %ymm5, %ymm8 +vpand mask_mod4096(%rip), %ymm8, %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 +vpand mask_mod4096(%rip), %ymm4, %ymm4 +vmovdqu %ymm4, 168(%rdi) +vmovdqu 584(%rdi), %ymm4 +vpaddw %ymm4, %ymm6, %ymm4 +vpand mask_mod4096(%rip), %ymm4, %ymm4 +vmovdqu %ymm4, 584(%rdi) +vmovdqu 1000(%rdi), %ymm4 +vpaddw %ymm4, %ymm7, %ymm4 +vpand mask_mod4096(%rip), %ymm4, %ymm4 +vmovdqu %ymm4, 1000(%rdi) +vmovdqu 1416(%rdi), %ymm4 +vpaddw %ymm4, %ymm8, %ymm4 +vpand mask_mod4096(%rip), %ymm4, %ymm4 +vmovdqu %ymm4, 1416(%rdi) +vmovdqu 190(%rdi), %ymm4 +vpaddw %ymm4, %ymm9, %ymm4 +vpand mask_mod4096(%rip), %ymm4, %ymm4 +vmovdqu %ymm4, 190(%rdi) +vmovdqu 606(%rdi), %ymm4 +vpaddw %ymm4, %ymm10, %ymm4 +vpand mask_mod4096(%rip), %ymm4, %ymm4 +vmovdqu %ymm4, 606(%rdi) +vmovdqu 1022(%rdi), %ymm4 +vpaddw %ymm4, %ymm11, %ymm4 +vpand mask_mod4096(%rip), %ymm4, %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 +vpand mask_mod4096(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 272(%rdi) +vmovdqu 688(%rdi), %ymm9 +vpaddw %ymm9, %ymm6, %ymm9 +vpand mask_mod4096(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 688(%rdi) +vmovdqu 1104(%rdi), %ymm9 +vpaddw %ymm9, %ymm3, %ymm9 +vpand mask_mod4096(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 1104(%rdi) +vmovdqu 1520(%rdi), %ymm9 +vpaddw %ymm9, %ymm4, %ymm9 +vpand mask_mod4096(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 1520(%rdi) +vmovdqu 294(%rdi), %ymm9 +vpaddw %ymm9, %ymm7, %ymm9 +vpand mask_mod4096(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 294(%rdi) +vmovdqu 710(%rdi), %ymm9 +vpaddw %ymm9, %ymm8, %ymm9 +vpand mask_mod4096(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 710(%rdi) +vmovdqu 1126(%rdi), %ymm9 +vpaddw %ymm9, %ymm5, %ymm9 +vpand mask_mod4096(%rip), %ymm9, %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 +vpand mask_mod4096(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 376(%rdi) +vmovdqu 792(%rdi), %ymm7 +vpaddw %ymm7, %ymm6, %ymm7 +vpand mask_mod4096(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 792(%rdi) +vmovdqu 1208(%rdi), %ymm7 +vpaddw %ymm7, %ymm10, %ymm7 +vpand mask_mod4096(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 1208(%rdi) +vmovdqu 1624(%rdi), %ymm7 +vpand mask_9_7(%rip), %ymm9, %ymm8 +vpaddw %ymm7, %ymm8, %ymm7 +vpand mask_mod4096(%rip), %ymm7, %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 +vpand mask_mod4096(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 0(%rdi) +vmovdqu 398(%rdi), %ymm7 +vpaddw %ymm7, %ymm3, %ymm7 +vpand mask_mod4096(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 398(%rdi) +vmovdqu 814(%rdi), %ymm7 +vpaddw %ymm7, %ymm4, %ymm7 +vpand mask_mod4096(%rip), %ymm7, %ymm7 +vmovdqu %ymm7, 814(%rdi) +vmovdqu 1230(%rdi), %ymm7 +vpaddw %ymm7, %ymm11, %ymm7 +vpand mask_mod4096(%rip), %ymm7, %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 +vpand mask_mod4096(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 480(%rdi) +vmovdqu 896(%rdi), %ymm3 +vpaddw %ymm3, %ymm6, %ymm3 +vpand mask_mod4096(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 896(%rdi) +vmovdqu 1312(%rdi), %ymm3 +vpaddw %ymm3, %ymm8, %ymm3 +vpand mask_mod4096(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 1312(%rdi) +vmovdqu 86(%rdi), %ymm3 +vpaddw %ymm3, %ymm7, %ymm3 +vpand mask_mod4096(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 86(%rdi) +vmovdqu 502(%rdi), %ymm3 +vpaddw %ymm3, %ymm10, %ymm3 +vpand mask_mod4096(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 502(%rdi) +vmovdqu 918(%rdi), %ymm3 +vpaddw %ymm3, %ymm9, %ymm3 +vpand mask_mod4096(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 918(%rdi) +vmovdqu 1334(%rdi), %ymm3 +vpaddw %ymm3, %ymm5, %ymm3 +vpand mask_mod4096(%rip), %ymm3, %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 +vpand mask_mod4096(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 584(%rdi) +vmovdqu 1000(%rdi), %ymm10 +vpaddw %ymm10, %ymm6, %ymm10 +vpand mask_mod4096(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 1000(%rdi) +vmovdqu 1416(%rdi), %ymm10 +vpaddw %ymm10, %ymm4, %ymm10 +vpand mask_mod4096(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 1416(%rdi) +vmovdqu 190(%rdi), %ymm10 +vpaddw %ymm10, %ymm3, %ymm10 +vpand mask_mod4096(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 190(%rdi) +vmovdqu 606(%rdi), %ymm10 +vpaddw %ymm10, %ymm8, %ymm10 +vpand mask_mod4096(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 606(%rdi) +vmovdqu 1022(%rdi), %ymm10 +vpaddw %ymm10, %ymm7, %ymm10 +vpand mask_mod4096(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 1022(%rdi) +vmovdqu 1438(%rdi), %ymm10 +vpaddw %ymm10, %ymm11, %ymm10 +vpand mask_mod4096(%rip), %ymm10, %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 +vpand mask_mod4096(%rip), %ymm8, %ymm8 +vmovdqu %ymm8, 688(%rdi) +vmovdqu 1104(%rdi), %ymm8 +vpaddw %ymm8, %ymm6, %ymm8 +vpand mask_mod4096(%rip), %ymm8, %ymm8 +vmovdqu %ymm8, 1104(%rdi) +vmovdqu 1520(%rdi), %ymm8 +vpaddw %ymm8, %ymm9, %ymm8 +vpand mask_mod4096(%rip), %ymm8, %ymm8 +vmovdqu %ymm8, 1520(%rdi) +vmovdqu 294(%rdi), %ymm8 +vpaddw %ymm8, %ymm10, %ymm8 +vpand mask_mod4096(%rip), %ymm8, %ymm8 +vmovdqu %ymm8, 294(%rdi) +vmovdqu 710(%rdi), %ymm8 +vpaddw %ymm8, %ymm4, %ymm8 +vpand mask_mod4096(%rip), %ymm8, %ymm8 +vmovdqu %ymm8, 710(%rdi) +vmovdqu 1126(%rdi), %ymm8 +vpaddw %ymm8, %ymm3, %ymm8 +vpand mask_mod4096(%rip), %ymm8, %ymm8 +vmovdqu %ymm8, 1126(%rdi) +vmovdqu 1542(%rdi), %ymm8 +vpaddw %ymm8, %ymm5, %ymm8 +vpand mask_mod4096(%rip), %ymm8, %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 +vpand mask_mod4096(%rip), %ymm4, %ymm4 +vmovdqu %ymm4, 792(%rdi) +vmovdqu 1208(%rdi), %ymm4 +vpaddw %ymm4, %ymm6, %ymm4 +vpand mask_mod4096(%rip), %ymm4, %ymm4 +vmovdqu %ymm4, 1208(%rdi) +vmovdqu 1624(%rdi), %ymm4 +vpand mask_9_7(%rip), %ymm7, %ymm3 +vpaddw %ymm4, %ymm3, %ymm4 +vpand mask_mod4096(%rip), %ymm4, %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 +vpand mask_mod4096(%rip), %ymm4, %ymm4 +vmovdqu %ymm4, 0(%rdi) +vmovdqu 398(%rdi), %ymm4 +vpaddw %ymm4, %ymm8, %ymm4 +vpand mask_mod4096(%rip), %ymm4, %ymm4 +vmovdqu %ymm4, 398(%rdi) +vmovdqu 814(%rdi), %ymm4 +vpaddw %ymm4, %ymm9, %ymm4 +vpand mask_mod4096(%rip), %ymm4, %ymm4 +vmovdqu %ymm4, 814(%rdi) +vmovdqu 1230(%rdi), %ymm4 +vpaddw %ymm4, %ymm10, %ymm4 +vpand mask_mod4096(%rip), %ymm4, %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 +vpand mask_mod4096(%rip), %ymm9, %ymm9 +vmovq %xmm9, 96(%rdi) +vmovdqu 512(%rdi), %ymm9 +vpaddw %ymm9, %ymm6, %ymm9 +vpand mask_mod4096(%rip), %ymm9, %ymm9 +vmovq %xmm9, 512(%rdi) +vmovdqu 928(%rdi), %ymm9 +vpaddw %ymm9, %ymm3, %ymm9 +vpand mask_mod4096(%rip), %ymm9, %ymm9 +vmovq %xmm9, 928(%rdi) +vmovdqu 1344(%rdi), %ymm9 +vpaddw %ymm9, %ymm4, %ymm9 +vpand mask_mod4096(%rip), %ymm9, %ymm9 +vmovq %xmm9, 1344(%rdi) +vmovdqu 118(%rdi), %ymm9 +vpaddw %ymm9, %ymm7, %ymm9 +vpand mask_mod4096(%rip), %ymm9, %ymm9 +vmovq %xmm9, 118(%rdi) +vmovdqu 534(%rdi), %ymm9 +vpaddw %ymm9, %ymm8, %ymm9 +vpand mask_mod4096(%rip), %ymm9, %ymm9 +vmovq %xmm9, 534(%rdi) +vmovdqu 950(%rdi), %ymm9 +vpaddw %ymm9, %ymm5, %ymm9 +vpand mask_mod4096(%rip), %ymm9, %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 +vpand mask_mod4096(%rip), %ymm7, %ymm7 +vmovq %xmm7, 200(%rdi) +vmovdqu 616(%rdi), %ymm7 +vpaddw %ymm7, %ymm6, %ymm7 +vpand mask_mod4096(%rip), %ymm7, %ymm7 +vmovq %xmm7, 616(%rdi) +vmovdqu 1032(%rdi), %ymm7 +vpaddw %ymm7, %ymm10, %ymm7 +vpand mask_mod4096(%rip), %ymm7, %ymm7 +vmovq %xmm7, 1032(%rdi) +vmovdqu 1448(%rdi), %ymm7 +vpaddw %ymm7, %ymm9, %ymm7 +vpand mask_mod4096(%rip), %ymm7, %ymm7 +vmovq %xmm7, 1448(%rdi) +vmovdqu 222(%rdi), %ymm7 +vpaddw %ymm7, %ymm3, %ymm7 +vpand mask_mod4096(%rip), %ymm7, %ymm7 +vmovq %xmm7, 222(%rdi) +vmovdqu 638(%rdi), %ymm7 +vpaddw %ymm7, %ymm4, %ymm7 +vpand mask_mod4096(%rip), %ymm7, %ymm7 +vmovq %xmm7, 638(%rdi) +vmovdqu 1054(%rdi), %ymm7 +vpaddw %ymm7, %ymm11, %ymm7 +vpand mask_mod4096(%rip), %ymm7, %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 +vpand mask_mod4096(%rip), %ymm3, %ymm3 +vmovq %xmm3, 304(%rdi) +vmovdqu 720(%rdi), %ymm3 +vpaddw %ymm3, %ymm6, %ymm3 +vpand mask_mod4096(%rip), %ymm3, %ymm3 +vmovq %xmm3, 720(%rdi) +vmovdqu 1136(%rdi), %ymm3 +vpaddw %ymm3, %ymm8, %ymm3 +vpand mask_mod4096(%rip), %ymm3, %ymm3 +vmovq %xmm3, 1136(%rdi) +vmovdqu 1552(%rdi), %ymm3 +vpaddw %ymm3, %ymm7, %ymm3 +vpand mask_mod4096(%rip), %ymm3, %ymm3 +vmovq %xmm3, 1552(%rdi) +vmovdqu 326(%rdi), %ymm3 +vpaddw %ymm3, %ymm10, %ymm3 +vpand mask_mod4096(%rip), %ymm3, %ymm3 +vmovq %xmm3, 326(%rdi) +vmovdqu 742(%rdi), %ymm3 +vpaddw %ymm3, %ymm9, %ymm3 +vpand mask_mod4096(%rip), %ymm3, %ymm3 +vmovq %xmm3, 742(%rdi) +vmovdqu 1158(%rdi), %ymm3 +vpaddw %ymm3, %ymm5, %ymm3 +vpand mask_mod4096(%rip), %ymm3, %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 +vpand mask_mod4096(%rip), %ymm10, %ymm10 +vmovq %xmm10, 408(%rdi) +vmovdqu 824(%rdi), %ymm10 +vpaddw %ymm10, %ymm6, %ymm10 +vpand mask_mod4096(%rip), %ymm10, %ymm10 +vmovq %xmm10, 824(%rdi) +vmovdqu 1240(%rdi), %ymm10 +vpaddw %ymm10, %ymm4, %ymm10 +vpand mask_mod4096(%rip), %ymm10, %ymm10 +vmovq %xmm10, 1240(%rdi) +vmovdqu 14(%rdi), %ymm10 +vpaddw %ymm10, %ymm3, %ymm10 +vpand mask_mod4096(%rip), %ymm10, %ymm10 +vmovq %xmm10, 14(%rdi) +vmovdqu 430(%rdi), %ymm10 +vpaddw %ymm10, %ymm8, %ymm10 +vpand mask_mod4096(%rip), %ymm10, %ymm10 +vmovq %xmm10, 430(%rdi) +vmovdqu 846(%rdi), %ymm10 +vpaddw %ymm10, %ymm7, %ymm10 +vpand mask_mod4096(%rip), %ymm10, %ymm10 +vmovq %xmm10, 846(%rdi) +vmovdqu 1262(%rdi), %ymm10 +vpaddw %ymm10, %ymm11, %ymm10 +vpand mask_mod4096(%rip), %ymm10, %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 +vpand mask_mod4096(%rip), %ymm8, %ymm8 +vmovq %xmm8, 512(%rdi) +vmovdqu 928(%rdi), %ymm8 +vpaddw %ymm8, %ymm6, %ymm8 +vpand mask_mod4096(%rip), %ymm8, %ymm8 +vmovq %xmm8, 928(%rdi) +vmovdqu 1344(%rdi), %ymm8 +vpaddw %ymm8, %ymm9, %ymm8 +vpand mask_mod4096(%rip), %ymm8, %ymm8 +vmovq %xmm8, 1344(%rdi) +vmovdqu 118(%rdi), %ymm8 +vpaddw %ymm8, %ymm10, %ymm8 +vpand mask_mod4096(%rip), %ymm8, %ymm8 +vmovq %xmm8, 118(%rdi) +vmovdqu 534(%rdi), %ymm8 +vpaddw %ymm8, %ymm4, %ymm8 +vpand mask_mod4096(%rip), %ymm8, %ymm8 +vmovq %xmm8, 534(%rdi) +vmovdqu 950(%rdi), %ymm8 +vpaddw %ymm8, %ymm3, %ymm8 +vpand mask_mod4096(%rip), %ymm8, %ymm8 +vmovq %xmm8, 950(%rdi) +vmovdqu 1366(%rdi), %ymm8 +vpaddw %ymm8, %ymm5, %ymm8 +vpand mask_mod4096(%rip), %ymm8, %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 +vpand mask_mod4096(%rip), %ymm4, %ymm4 +vmovq %xmm4, 616(%rdi) +vmovdqu 1032(%rdi), %ymm4 +vpaddw %ymm4, %ymm6, %ymm4 +vpand mask_mod4096(%rip), %ymm4, %ymm4 +vmovq %xmm4, 1032(%rdi) +vmovdqu 1448(%rdi), %ymm4 +vpaddw %ymm4, %ymm7, %ymm4 +vpand mask_mod4096(%rip), %ymm4, %ymm4 +vmovq %xmm4, 1448(%rdi) +vmovdqu 222(%rdi), %ymm4 +vpaddw %ymm4, %ymm8, %ymm4 +vpand mask_mod4096(%rip), %ymm4, %ymm4 +vmovq %xmm4, 222(%rdi) +vmovdqu 638(%rdi), %ymm4 +vpaddw %ymm4, %ymm9, %ymm4 +vpand mask_mod4096(%rip), %ymm4, %ymm4 +vmovq %xmm4, 638(%rdi) +vmovdqu 1054(%rdi), %ymm4 +vpaddw %ymm4, %ymm10, %ymm4 +vpand mask_mod4096(%rip), %ymm4, %ymm4 +vmovq %xmm4, 1054(%rdi) +vmovdqu 1470(%rdi), %ymm4 +vpaddw %ymm4, %ymm11, %ymm4 +vpand mask_mod4096(%rip), %ymm4, %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 +vpand mask_mod4096(%rip), %ymm9, %ymm9 +vmovq %xmm9, 720(%rdi) +vmovdqu 1136(%rdi), %ymm9 +vpaddw %ymm9, %ymm6, %ymm9 +vpand mask_mod4096(%rip), %ymm9, %ymm9 +vmovq %xmm9, 1136(%rdi) +vmovdqu 1552(%rdi), %ymm9 +vpaddw %ymm9, %ymm3, %ymm9 +vpand mask_mod4096(%rip), %ymm9, %ymm9 +vmovq %xmm9, 1552(%rdi) +vmovdqu 326(%rdi), %ymm9 +vpaddw %ymm9, %ymm4, %ymm9 +vpand mask_mod4096(%rip), %ymm9, %ymm9 +vmovq %xmm9, 326(%rdi) +vmovdqu 742(%rdi), %ymm9 +vpaddw %ymm9, %ymm7, %ymm9 +vpand mask_mod4096(%rip), %ymm9, %ymm9 +vmovq %xmm9, 742(%rdi) +vmovdqu 1158(%rdi), %ymm9 +vpaddw %ymm9, %ymm8, %ymm9 +vpand mask_mod4096(%rip), %ymm9, %ymm9 +vmovq %xmm9, 1158(%rdi) +vmovdqu 1574(%rdi), %ymm9 +vpaddw %ymm9, %ymm5, %ymm9 +vpand mask_mod4096(%rip), %ymm9, %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 +vpand mask_mod4096(%rip), %ymm7, %ymm7 +vmovq %xmm7, 824(%rdi) +vmovdqu 1240(%rdi), %ymm7 +vpaddw %ymm7, %ymm6, %ymm7 +vpand mask_mod4096(%rip), %ymm7, %ymm7 +vmovq %xmm7, 1240(%rdi) +vmovdqu 14(%rdi), %ymm7 +vpaddw %ymm7, %ymm10, %ymm7 +vpand mask_mod4096(%rip), %ymm7, %ymm7 +vmovq %xmm7, 14(%rdi) +vmovdqu 430(%rdi), %ymm7 +vpaddw %ymm7, %ymm9, %ymm7 +vpand mask_mod4096(%rip), %ymm7, %ymm7 +vmovq %xmm7, 430(%rdi) +vmovdqu 846(%rdi), %ymm7 +vpaddw %ymm7, %ymm3, %ymm7 +vpand mask_mod4096(%rip), %ymm7, %ymm7 +vmovq %xmm7, 846(%rdi) +vmovdqu 1262(%rdi), %ymm7 +vpaddw %ymm7, %ymm4, %ymm7 +vpand mask_mod4096(%rip), %ymm7, %ymm7 +vmovq %xmm7, 1262(%rdi) +mov %r8, %rsp +pop %r12 +ret diff --git a/crypto_kem/ntruhps4096821/avx2/poly_rq_to_s3.s b/crypto_kem/ntruhps4096821/avx2/poly_rq_to_s3.s new file mode 100644 index 00000000..0f8d30a3 --- /dev/null +++ b/crypto_kem/ntruhps4096821/avx2/poly_rq_to_s3.s @@ -0,0 +1,1455 @@ +.data +.p2align 5 +const_3_repeating: +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +shuf_b8_to_low_doubleword: +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +mask_modq: +.word 4095 +.word 4095 +.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 const_3_repeating(%rip), %ymm3 +vmovdqa mask_modq(%rip), %ymm6 +vmovdqa 1632(%rsi), %ymm4 +vpand %ymm6, %ymm4, %ymm4 +vpsrlw $11, %ymm4, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm4 +vpsrlw $8, %ymm4, %ymm5 +vpand mask_ff(%rip), %ymm4, %ymm4 +vpaddw %ymm5, %ymm4, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm4 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm4, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm4 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm4, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm4 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm4, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm4 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm4, %ymm5 +vpsllw $1, %ymm5, %ymm4 +vextracti128 $1, %ymm4, %xmm4 +vpshufb shuf_b8_to_low_doubleword(%rip), %ymm4, %ymm4 +vinserti128 $1, %xmm4, %ymm4, %ymm4 +vmovdqa 0(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 0(%rdi) +vmovdqa 32(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 32(%rdi) +vmovdqa 64(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 64(%rdi) +vmovdqa 96(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 96(%rdi) +vmovdqa 128(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 128(%rdi) +vmovdqa 160(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 160(%rdi) +vmovdqa 192(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 192(%rdi) +vmovdqa 224(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 224(%rdi) +vmovdqa 256(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 256(%rdi) +vmovdqa 288(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 288(%rdi) +vmovdqa 320(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 320(%rdi) +vmovdqa 352(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 352(%rdi) +vmovdqa 384(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 384(%rdi) +vmovdqa 416(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 416(%rdi) +vmovdqa 448(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 448(%rdi) +vmovdqa 480(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 480(%rdi) +vmovdqa 512(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 512(%rdi) +vmovdqa 544(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 544(%rdi) +vmovdqa 576(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 576(%rdi) +vmovdqa 608(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 608(%rdi) +vmovdqa 640(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 640(%rdi) +vmovdqa 672(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 672(%rdi) +vmovdqa 704(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 704(%rdi) +vmovdqa 736(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 736(%rdi) +vmovdqa 768(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 768(%rdi) +vmovdqa 800(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 800(%rdi) +vmovdqa 832(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 832(%rdi) +vmovdqa 864(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 864(%rdi) +vmovdqa 896(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 896(%rdi) +vmovdqa 928(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 928(%rdi) +vmovdqa 960(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 960(%rdi) +vmovdqa 992(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 992(%rdi) +vmovdqa 1024(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1024(%rdi) +vmovdqa 1056(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1056(%rdi) +vmovdqa 1088(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1088(%rdi) +vmovdqa 1120(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1120(%rdi) +vmovdqa 1152(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1152(%rdi) +vmovdqa 1184(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1184(%rdi) +vmovdqa 1216(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1216(%rdi) +vmovdqa 1248(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1248(%rdi) +vmovdqa 1280(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1280(%rdi) +vmovdqa 1312(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1312(%rdi) +vmovdqa 1344(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1344(%rdi) +vmovdqa 1376(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1376(%rdi) +vmovdqa 1408(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1408(%rdi) +vmovdqa 1440(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1440(%rdi) +vmovdqa 1472(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1472(%rdi) +vmovdqa 1504(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1504(%rdi) +vmovdqa 1536(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1536(%rdi) +vmovdqa 1568(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1568(%rdi) +vmovdqa 1600(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1600(%rdi) +vmovdqa 1632(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $11, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $12, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1632(%rdi) +ret diff --git a/crypto_kem/ntruhps4096821/avx2/poly_s3_inv.c b/crypto_kem/ntruhps4096821/avx2/poly_s3_inv.c new file mode 100644 index 00000000..5f91f715 --- /dev/null +++ b/crypto_kem/ntruhps4096821/avx2/poly_s3_inv.c @@ -0,0 +1,685 @@ +#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/crypto_kem/ntruhps4096821/avx2/sample.c b/crypto_kem/ntruhps4096821/avx2/sample.c new file mode 100644 index 00000000..f3ddfd27 --- /dev/null +++ b/crypto_kem/ntruhps4096821/avx2/sample.c @@ -0,0 +1,46 @@ +#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); +} + + +#include "crypto_sort_int32.h" +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] << 15) + ((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/crypto_kem/ntruhps4096821/avx2/sample.h b/crypto_kem/ntruhps4096821/avx2/sample.h new file mode 100644 index 00000000..3387cbcc --- /dev/null +++ b/crypto_kem/ntruhps4096821/avx2/sample.h @@ -0,0 +1,15 @@ +#ifndef SAMPLE_H +#define SAMPLE_H + +#include "params.h" +#include "poly.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/crypto_kem/ntruhps4096821/avx2/sample_iid.c b/crypto_kem/ntruhps4096821/avx2/sample_iid.c new file mode 100644 index 00000000..125178a6 --- /dev/null +++ b/crypto_kem/ntruhps4096821/avx2/sample_iid.c @@ -0,0 +1,21 @@ +#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/crypto_kem/ntruhps4096821/avx2/square_102_821_shufbytes.s b/crypto_kem/ntruhps4096821/avx2/square_102_821_shufbytes.s new file mode 100644 index 00000000..0b15b8bb --- /dev/null +++ b/crypto_kem/ntruhps4096821/avx2/square_102_821_shufbytes.s @@ -0,0 +1,9577 @@ +.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/crypto_kem/ntruhps4096821/avx2/square_12_821_shufbytes.s b/crypto_kem/ntruhps4096821/avx2/square_12_821_shufbytes.s new file mode 100644 index 00000000..e930f39d --- /dev/null +++ b/crypto_kem/ntruhps4096821/avx2/square_12_821_shufbytes.s @@ -0,0 +1,10273 @@ +.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/crypto_kem/ntruhps4096821/avx2/square_1_821_patience.s b/crypto_kem/ntruhps4096821/avx2/square_1_821_patience.s new file mode 100644 index 00000000..e3b131df --- /dev/null +++ b/crypto_kem/ntruhps4096821/avx2/square_1_821_patience.s @@ -0,0 +1,158 @@ +.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/crypto_kem/ntruhps4096821/avx2/square_204_821_shufbytes.s b/crypto_kem/ntruhps4096821/avx2/square_204_821_shufbytes.s new file mode 100644 index 00000000..969ccb1e --- /dev/null +++ b/crypto_kem/ntruhps4096821/avx2/square_204_821_shufbytes.s @@ -0,0 +1,16127 @@ +.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/crypto_kem/ntruhps4096821/avx2/square_24_821_shufbytes.s b/crypto_kem/ntruhps4096821/avx2/square_24_821_shufbytes.s new file mode 100644 index 00000000..9dc8351d --- /dev/null +++ b/crypto_kem/ntruhps4096821/avx2/square_24_821_shufbytes.s @@ -0,0 +1,9467 @@ +.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/crypto_kem/ntruhps4096821/avx2/square_3_821_patience.s b/crypto_kem/ntruhps4096821/avx2/square_3_821_patience.s new file mode 100644 index 00000000..9e34eed2 --- /dev/null +++ b/crypto_kem/ntruhps4096821/avx2/square_3_821_patience.s @@ -0,0 +1,524 @@ +.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/crypto_kem/ntruhps4096821/avx2/square_408_821_shufbytes.s b/crypto_kem/ntruhps4096821/avx2/square_408_821_shufbytes.s new file mode 100644 index 00000000..cd9776b7 --- /dev/null +++ b/crypto_kem/ntruhps4096821/avx2/square_408_821_shufbytes.s @@ -0,0 +1,6605 @@ +.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/crypto_kem/ntruhps4096821/avx2/square_51_821_shufbytes.s b/crypto_kem/ntruhps4096821/avx2/square_51_821_shufbytes.s new file mode 100644 index 00000000..8673dbba --- /dev/null +++ b/crypto_kem/ntruhps4096821/avx2/square_51_821_shufbytes.s @@ -0,0 +1,9993 @@ +.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/crypto_kem/ntruhps4096821/avx2/square_6_821_patience.s b/crypto_kem/ntruhps4096821/avx2/square_6_821_patience.s new file mode 100644 index 00000000..4c9936ea --- /dev/null +++ b/crypto_kem/ntruhps4096821/avx2/square_6_821_patience.s @@ -0,0 +1,841 @@ +.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/crypto_kem/ntruhps4096821/avx2/vec32_sample_iid.s b/crypto_kem/ntruhps4096821/avx2/vec32_sample_iid.s new file mode 100644 index 00000000..caf487aa --- /dev/null +++ b/crypto_kem/ntruhps4096821/avx2/vec32_sample_iid.s @@ -0,0 +1,1222 @@ +.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/crypto_kem/ntruhps4096821/clean/Makefile b/crypto_kem/ntruhps4096821/clean/Makefile index 27bf5bdf..5f11ae4c 100644 --- a/crypto_kem/ntruhps4096821/clean/Makefile +++ b/crypto_kem/ntruhps4096821/clean/Makefile @@ -1,10 +1,10 @@ # This Makefile can be used with GNU Make or BSD Make LIB=libntruhps4096821_clean.a -HEADERS=api.h crypto_sort.h owcpa.h params.h poly.h sample.h verify.h -OBJECTS=crypto_sort.o kem.o owcpa.o pack3.o packq.o poly.o poly_lift.o poly_mod.o poly_r2_inv.o poly_rq_mul.o poly_s3_inv.o sample.o sample_iid.o verify.o +HEADERS=api.h cmov.h crypto_sort_int32.h owcpa.h params.h poly.h sample.h +OBJECTS=cmov.o crypto_sort_int32.o kem.o owcpa.o pack3.o packq.o poly.o poly_lift.o poly_mod.o poly_r2_inv.o poly_rq_mul.o poly_s3_inv.o sample.o sample_iid.o -CFLAGS=-O3 -Wall -Wextra -Wpedantic -Werror -Wmissing-prototypes -Wredundant-decls -std=c99 -I../../../common $(EXTRAFLAGS) +CFLAGS=-O3 -Wall -Wextra -Wpedantic -Wvla -Werror -Wredundant-decls -Wmissing-prototypes -std=c99 -I../../../common $(EXTRAFLAGS) all: $(LIB) diff --git a/crypto_kem/ntruhps4096821/clean/Makefile.Microsoft_nmake b/crypto_kem/ntruhps4096821/clean/Makefile.Microsoft_nmake index 91002600..3c179806 100644 --- a/crypto_kem/ntruhps4096821/clean/Makefile.Microsoft_nmake +++ b/crypto_kem/ntruhps4096821/clean/Makefile.Microsoft_nmake @@ -2,7 +2,7 @@ # nmake /f Makefile.Microsoft_nmake LIBRARY=libntruhps4096821_clean.lib -OBJECTS=crypto_sort.obj kem.obj owcpa.obj pack3.obj packq.obj poly.obj poly_lift.obj poly_mod.obj poly_r2_inv.obj poly_rq_mul.obj poly_s3_inv.obj sample.obj sample_iid.obj verify.obj +OBJECTS=cmov.obj crypto_sort_int32.obj kem.obj owcpa.obj pack3.obj packq.obj poly.obj poly_lift.obj poly_mod.obj poly_r2_inv.obj poly_rq_mul.obj poly_s3_inv.obj sample.obj sample_iid.obj CFLAGS=/nologo /O2 /I ..\..\..\common /W4 /WX diff --git a/crypto_kem/ntruhps4096821/clean/api.h b/crypto_kem/ntruhps4096821/clean/api.h index bd916d14..aac12277 100644 --- a/crypto_kem/ntruhps4096821/clean/api.h +++ b/crypto_kem/ntruhps4096821/clean/api.h @@ -8,7 +8,7 @@ #define PQCLEAN_NTRUHPS4096821_CLEAN_CRYPTO_CIPHERTEXTBYTES 1230 #define PQCLEAN_NTRUHPS4096821_CLEAN_CRYPTO_BYTES 32 -#define PQCLEAN_NTRUHPS4096821_CLEAN_CRYPTO_ALGNAME "NTRU-HPS4096821" +#define PQCLEAN_NTRUHPS4096821_CLEAN_CRYPTO_ALGNAME "ntruhps4096821" int PQCLEAN_NTRUHPS4096821_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk); diff --git a/crypto_kem/ntruhps4096821/clean/cmov.c b/crypto_kem/ntruhps4096821/clean/cmov.c new file mode 100644 index 00000000..edc764fe --- /dev/null +++ b/crypto_kem/ntruhps4096821/clean/cmov.c @@ -0,0 +1,11 @@ +#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/crypto_kem/ntruhps4096821/clean/cmov.h b/crypto_kem/ntruhps4096821/clean/cmov.h new file mode 100644 index 00000000..c2a5c600 --- /dev/null +++ b/crypto_kem/ntruhps4096821/clean/cmov.h @@ -0,0 +1,10 @@ +#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/crypto_kem/ntruhps4096821/clean/crypto_sort.c b/crypto_kem/ntruhps4096821/clean/crypto_sort.c deleted file mode 100644 index 5df65a79..00000000 --- a/crypto_kem/ntruhps4096821/clean/crypto_sort.c +++ /dev/null @@ -1,50 +0,0 @@ -// XXX: Temporary placeholder for a faster sort. -// Copied from supercop-20190110/crypto_sort/int32/portable3 - -#include - -#include "crypto_sort.h" - -#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) - -void PQCLEAN_NTRUHPS4096821_CLEAN_crypto_sort(void *array, long long n) { - long long top, p, q, r, i; - int32_t *x = array; - - if (n < 2) { - return; - } - top = 1; - while (top < n - top) { - top += top; - } - - for (p = top; p > 0; p >>= 1) { - for (i = 0; i < n - p; ++i) { - if (!(i & p)) { - int32_MINMAX(x[i], x[i + p]); - } - } - i = 0; - for (q = top; q > p; q >>= 1) { - for (; i < n - q; ++i) { - if (!(i & p)) { - int32_t a = x[i + p]; - for (r = q; r > p; r >>= 1) { - int32_MINMAX(a, x[i + r]); - } - x[i + p] = a; - } - } - } - } -} diff --git a/crypto_kem/ntruhps4096821/clean/crypto_sort.h b/crypto_kem/ntruhps4096821/clean/crypto_sort.h deleted file mode 100644 index 2bc4ef15..00000000 --- a/crypto_kem/ntruhps4096821/clean/crypto_sort.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef CRYPTO_SORT -#define CRYPTO_SORT - -void PQCLEAN_NTRUHPS4096821_CLEAN_crypto_sort(void *array, long long n); - -#endif diff --git a/crypto_kem/ntruhps4096821/clean/crypto_sort_int32.c b/crypto_kem/ntruhps4096821/clean/crypto_sort_int32.c new file mode 100644 index 00000000..b6b7af21 --- /dev/null +++ b/crypto_kem/ntruhps4096821/clean/crypto_sort_int32.c @@ -0,0 +1,86 @@ +// 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/crypto_kem/ntruhps4096821/clean/crypto_sort_int32.h b/crypto_kem/ntruhps4096821/clean/crypto_sort_int32.h new file mode 100644 index 00000000..44b4e984 --- /dev/null +++ b/crypto_kem/ntruhps4096821/clean/crypto_sort_int32.h @@ -0,0 +1,11 @@ +#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/crypto_kem/ntruhps4096821/clean/kem.c b/crypto_kem/ntruhps4096821/clean/kem.c index 252475a7..deaba324 100644 --- a/crypto_kem/ntruhps4096821/clean/kem.c +++ b/crypto_kem/ntruhps4096821/clean/kem.c @@ -1,12 +1,10 @@ -#include - #include "api.h" +#include "cmov.h" #include "fips202.h" #include "owcpa.h" #include "params.h" #include "randombytes.h" #include "sample.h" -#include "verify.h" // API FUNCTIONS int PQCLEAN_NTRUHPS4096821_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk) { @@ -51,7 +49,7 @@ int PQCLEAN_NTRUHPS4096821_CLEAN_crypto_kem_dec(uint8_t *k, const uint8_t *c, co 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. */ + /* See comment in PQCLEAN_NTRUHPS4096821_CLEAN_owcpa_dec for details. */ sha3_256(k, rm, NTRU_OWCPA_MSGBYTES); diff --git a/crypto_kem/ntruhps4096821/clean/owcpa.c b/crypto_kem/ntruhps4096821/clean/owcpa.c index abd9b07f..977bb113 100644 --- a/crypto_kem/ntruhps4096821/clean/owcpa.c +++ b/crypto_kem/ntruhps4096821/clean/owcpa.c @@ -59,6 +59,7 @@ void PQCLEAN_NTRUHPS4096821_CLEAN_owcpa_keypair(unsigned char *pk, 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]; diff --git a/crypto_kem/ntruhps4096821/clean/pack3.c b/crypto_kem/ntruhps4096821/clean/pack3.c index 6b7ffe02..5af5cde4 100644 --- a/crypto_kem/ntruhps4096821/clean/pack3.c +++ b/crypto_kem/ntruhps4096821/clean/pack3.c @@ -12,7 +12,6 @@ void PQCLEAN_NTRUHPS4096821_CLEAN_poly_S3_tobytes(unsigned char msg[NTRU_OWCPA_M 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]) { diff --git a/crypto_kem/ntruhps4096821/clean/params.h b/crypto_kem/ntruhps4096821/clean/params.h index 313938c6..f09b48fa 100644 --- a/crypto_kem/ntruhps4096821/clean/params.h +++ b/crypto_kem/ntruhps4096821/clean/params.h @@ -5,6 +5,7 @@ #define NTRU_N 821 #define NTRU_LOGQ 12 + /* Do not modify below this line */ #define PAD32(X) ((((X) + 31)/32)*32) diff --git a/crypto_kem/ntruhps4096821/clean/poly.h b/crypto_kem/ntruhps4096821/clean/poly.h index 615ee21d..851222ae 100644 --- a/crypto_kem/ntruhps4096821/clean/poly.h +++ b/crypto_kem/ntruhps4096821/clean/poly.h @@ -1,16 +1,13 @@ #ifndef POLY_H #define POLY_H -#include - #include "params.h" +#include + #define MODQ(X) ((X) & (NTRU_Q-1)) typedef struct { - // round to nearest multiple of 32 to make it easier to load into vector - // registers without having to do bound checks -#define NTRU_N_32 PAD32(NTRU_N) uint16_t coeffs[NTRU_N]; } poly; @@ -38,5 +35,4 @@ 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/crypto_kem/ntruhps4096821/clean/poly_lift.c b/crypto_kem/ntruhps4096821/clean/poly_lift.c index 6cf524f0..542e01a1 100644 --- a/crypto_kem/ntruhps4096821/clean/poly_lift.c +++ b/crypto_kem/ntruhps4096821/clean/poly_lift.c @@ -8,3 +8,4 @@ void PQCLEAN_NTRUHPS4096821_CLEAN_poly_lift(poly *r, const poly *a) { PQCLEAN_NTRUHPS4096821_CLEAN_poly_Z3_to_Zq(r); } + diff --git a/crypto_kem/ntruhps4096821/clean/poly_r2_inv.c b/crypto_kem/ntruhps4096821/clean/poly_r2_inv.c index eb35645a..43b733bd 100644 --- a/crypto_kem/ntruhps4096821/clean/poly_r2_inv.c +++ b/crypto_kem/ntruhps4096821/clean/poly_r2_inv.c @@ -1,113 +1,69 @@ +/* Based on supercop-20200702/crypto_core/invhrss701/simpler/core.c */ + #include "poly.h" -#include "verify.h" -#define POLY_R2_ADD(I,A,B,S) \ - for ((I)=0; (I)coeffs[i] ^ b->coeffs[i]) & swap; - a->coeffs[i] ^= t; - b->coeffs[i] ^= t; - } -} - -static inline void poly_divx(poly *a, int s) { - int i; - - for (i = 1; i < NTRU_N; i++) { - a->coeffs[i - 1] = (unsigned char) ((s * a->coeffs[i]) | (!s * a->coeffs[i - 1])); - } - a->coeffs[NTRU_N - 1] = (!s * a->coeffs[NTRU_N - 1]); -} - -static inline void poly_mulx(poly *a, int s) { - int i; - - for (i = 1; i < NTRU_N; i++) { - a->coeffs[NTRU_N - i] = (unsigned char) ((s * a->coeffs[NTRU_N - i - 1]) | (!s * a->coeffs[NTRU_N - i])); - } - a->coeffs[0] = (!s * a->coeffs[0]); +/* return -1 if x<0 and y<0; otherwise return 0 */ +static inline int both_negative_mask(int x, int y) { + return (x & y) >> 15; } void PQCLEAN_NTRUHPS4096821_CLEAN_poly_R2_inv(poly *r, const poly *a) { - /* Schroeppel--Orman--O'Malley--Spatscheck - * "Almost Inverse" algorithm as described - * by Silverman in NTRU Tech Report #14 */ - // with several modifications to make it run in constant-time - int i, j; - int k = 0; - uint16_t degf = NTRU_N - 1; - uint16_t degg = NTRU_N - 1; - int sign, t, swap; - int16_t done = 0; - poly b, f, g; - poly *c = r; // save some stack space - poly *temp_r = &f; + poly f, g, v, w; + int i, loop, delta; + int sign, swap, t; - /* b(X) := 1 */ - for (i = 1; i < NTRU_N; i++) { - b.coeffs[i] = 0; + for (i = 0; i < NTRU_N; ++i) { + v.coeffs[i] = 0; } - b.coeffs[0] = 1; - - /* c(X) := 0 */ - for (i = 0; i < NTRU_N; i++) { - c->coeffs[i] = 0; + for (i = 0; i < NTRU_N; ++i) { + w.coeffs[i] = 0; } + w.coeffs[0] = 1; - /* f(X) := a(X) */ - for (i = 0; i < NTRU_N; i++) { - f.coeffs[i] = a->coeffs[i] & 1; + for (i = 0; i < NTRU_N; ++i) { + f.coeffs[i] = 1; } - - /* g(X) := 1 + X + X^2 + ... + X^{N-1} */ - for (i = 0; i < NTRU_N; i++) { - g.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; - for (j = 0; j < 2 * (NTRU_N - 1) - 1; j++) { - sign = f.coeffs[0]; - swap = sign & !done & ((degf - degg) >> 15); + delta = 1; - cswappoly(&f, &g, swap); - cswappoly(&b, c, swap); - t = (degf ^ degg) & (-swap); - degf ^= t; - degg ^= t; - - POLY_R2_ADD(i, f, g, sign * (!done)); - POLY_R2_ADD(i, b, (*c), sign * (!done)); - - poly_divx(&f, !done); - poly_mulx(c, !done); - degf -= !done; - k += !done; - - done = 1 - (((uint16_t) - degf) >> 15); - } - - k = k - NTRU_N * ((uint16_t)(NTRU_N - k - 1) >> 15); - - /* Return X^{N-k} * b(X) */ - /* This is a k-coefficient rotation. We do this by looking at the binary - representation of k, rotating for every power of 2, and performing a cmov - if the respective bit is set. */ - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = b.coeffs[i]; - } - - for (i = 0; i < 10; i++) { - for (j = 0; j < NTRU_N; j++) { - temp_r->coeffs[j] = r->coeffs[(j + (1 << i)) % NTRU_N]; + 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]; } - PQCLEAN_NTRUHPS4096821_CLEAN_cmov((unsigned char *) & (r->coeffs), - (unsigned char *) & (temp_r->coeffs), sizeof(uint16_t) * NTRU_N, k & 1); - k >>= 1; + v.coeffs[0] = 0; + + sign = g.coeffs[0] & f.coeffs[0]; + swap = both_negative_mask(-delta, -(int) 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/crypto_kem/ntruhps4096821/clean/poly_s3_inv.c b/crypto_kem/ntruhps4096821/clean/poly_s3_inv.c index de54adc4..3369cf1c 100644 --- a/crypto_kem/ntruhps4096821/clean/poly_s3_inv.c +++ b/crypto_kem/ntruhps4096821/clean/poly_s3_inv.c @@ -1,137 +1,78 @@ +/* Based on supercop-20200702/crypto_core/invhrss701/simpler/core.c */ + #include "poly.h" -#include "verify.h" -static uint16_t mod3(uint16_t a) { - uint16_t r; +static inline uint8_t mod3(uint8_t a) { /* a between 0 and 9 */ 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); + a = (a >> 2) + (a & 3); /* between 0 and 4 */ + t = a - 3; + c = t >> 5; + return t ^ (c & (a ^ t)); } -#define POLY_S3_FMADD(I,A,B,S) \ - for ((I)=0; (I)coeffs[i] ^ b->coeffs[i]) & swap; - a->coeffs[i] ^= t; - b->coeffs[i] ^= t; - } -} - -static inline void poly_divx(poly *a, int s) { - int i; - - for (i = 1; i < NTRU_N; i++) { - a->coeffs[i - 1] = (unsigned char) ((s * a->coeffs[i]) | (!s * a->coeffs[i - 1])); - } - a->coeffs[NTRU_N - 1] = (!s * a->coeffs[NTRU_N - 1]); -} - -static inline void poly_mulx(poly *a, int s) { - int i; - - for (i = 1; i < NTRU_N; i++) { - a->coeffs[NTRU_N - i] = (unsigned char) ((s * a->coeffs[NTRU_N - i - 1]) | (!s * a->coeffs[NTRU_N - i])); - } - a->coeffs[0] = (!s * a->coeffs[0]); +/* return -1 if x<0 and y<0; otherwise return 0 */ +static inline int both_negative_mask(int x, int y) { + return (x & y) >> 15; } void PQCLEAN_NTRUHPS4096821_CLEAN_poly_S3_inv(poly *r, const poly *a) { - /* Schroeppel--Orman--O'Malley--Spatscheck - * "Almost Inverse" algorithm as described - * by Silverman in NTRU Tech Report #14 */ - // with several modifications to make it run in constant-time - int i, j; - uint16_t k = 0; - uint16_t degf = NTRU_N - 1; - uint16_t degg = NTRU_N - 1; - int sign, fsign = 0, t, swap; - int16_t done = 0; - poly b, c, f, g; - poly *temp_r = &f; + poly f, g, v, w; + int i, loop, delta; + int sign, swap, t; - /* b(X) := 1 */ - for (i = 1; i < NTRU_N; i++) { - b.coeffs[i] = 0; + for (i = 0; i < NTRU_N; ++i) { + v.coeffs[i] = 0; } - b.coeffs[0] = 1; - - /* c(X) := 0 */ - for (i = 0; i < NTRU_N; i++) { - c.coeffs[i] = 0; + for (i = 0; i < NTRU_N; ++i) { + w.coeffs[i] = 0; } + w.coeffs[0] = 1; - /* f(X) := a(X) */ - for (i = 0; i < NTRU_N; i++) { - f.coeffs[i] = a->coeffs[i]; + for (i = 0; i < NTRU_N; ++i) { + f.coeffs[i] = 1; } - - /* g(X) := 1 + X + X^2 + ... + X^{N-1} */ - for (i = 0; i < NTRU_N; i++) { - g.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; - for (j = 0; j < 2 * (NTRU_N - 1) - 1; j++) { sign = mod3(2 * g.coeffs[0] * f.coeffs[0]); - swap = (((sign & 2) >> 1) | sign) & !done & ((degf - degg) >> 15); + swap = both_negative_mask(-delta, -(int) g.coeffs[0]); + delta ^= swap & (delta ^ -delta); + delta += 1; - cswappoly(&f, &g, swap); - cswappoly(&b, &c, swap); - t = (degf ^ degg) & (-swap); - degf ^= t; - degg ^= t; - - for (i = 0; i < NTRU_N; i++) { - f.coeffs[i] = mod3(f.coeffs[i] + ((uint16_t) (sign * (!done))) * g.coeffs[i]); - } - for (i = 0; i < NTRU_N; i++) { - b.coeffs[i] = mod3(b.coeffs[i] + ((uint16_t) (sign * (!done))) * c.coeffs[i]); + 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; } - poly_divx(&f, !done); - poly_mulx(&c, !done); - degf -= !done; - k += !done; - - done = 1 - (((uint16_t) - degf) >> 15); - } - - fsign = f.coeffs[0]; - k = k - NTRU_N * ((uint16_t)(NTRU_N - k - 1) >> 15); - - /* Return X^{N-k} * b(X) */ - /* This is a k-coefficient rotation. We do this by looking at the binary - representation of k, rotating for every power of 2, and performing a cmov - if the respective bit is set. */ - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = mod3((uint16_t) fsign * b.coeffs[i]); - } - - for (i = 0; i < 10; i++) { - for (j = 0; j < NTRU_N; j++) { - temp_r->coeffs[j] = r->coeffs[(j + (1 << i)) % NTRU_N]; + for (i = 0; i < NTRU_N; ++i) { + g.coeffs[i] = mod3(g.coeffs[i] + sign * f.coeffs[i]); } - PQCLEAN_NTRUHPS4096821_CLEAN_cmov((unsigned char *) & (r->coeffs), - (unsigned char *) & (temp_r->coeffs), sizeof(uint16_t) * NTRU_N, k & 1); - k >>= 1; + for (i = 0; i < NTRU_N; ++i) { + w.coeffs[i] = mod3(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; } - /* Reduce modulo Phi_n */ - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = mod3(r->coeffs[i] + 2 * r->coeffs[NTRU_N - 1]); + sign = f.coeffs[0]; + for (i = 0; i < NTRU_N - 1; ++i) { + r->coeffs[i] = mod3(sign * v.coeffs[NTRU_N - 2 - i]); } + r->coeffs[NTRU_N - 1] = 0; } diff --git a/crypto_kem/ntruhps4096821/clean/sample.c b/crypto_kem/ntruhps4096821/clean/sample.c index 40d33546..f394f84c 100644 --- a/crypto_kem/ntruhps4096821/clean/sample.c +++ b/crypto_kem/ntruhps4096821/clean/sample.c @@ -1,27 +1,30 @@ -#include "crypto_sort.h" #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); } + +#include "crypto_sort_int32.h" 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) - uint32_t s[NTRU_N - 1]; + 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 + 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] << 15) + ((uint32_t) u[15 * i + 14] << 24); } @@ -33,7 +36,7 @@ void PQCLEAN_NTRUHPS4096821_CLEAN_sample_fixed_type(poly *r, const unsigned char s[i] |= 2; } - PQCLEAN_NTRUHPS4096821_CLEAN_crypto_sort(s, NTRU_N - 1); + 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)); diff --git a/crypto_kem/ntruhps4096821/clean/sample.h b/crypto_kem/ntruhps4096821/clean/sample.h index 3512c06e..1587f757 100644 --- a/crypto_kem/ntruhps4096821/clean/sample.h +++ b/crypto_kem/ntruhps4096821/clean/sample.h @@ -1,8 +1,6 @@ #ifndef SAMPLE_H #define SAMPLE_H -#include - #include "params.h" #include "poly.h" @@ -13,4 +11,5 @@ void PQCLEAN_NTRUHPS4096821_CLEAN_sample_iid(poly *r, const unsigned char unifor void PQCLEAN_NTRUHPS4096821_CLEAN_sample_fixed_type(poly *r, const unsigned char uniformbytes[NTRU_SAMPLE_FT_BYTES]); + #endif diff --git a/crypto_kem/ntruhps4096821/clean/verify.c b/crypto_kem/ntruhps4096821/clean/verify.c deleted file mode 100644 index 380f5c98..00000000 --- a/crypto_kem/ntruhps4096821/clean/verify.c +++ /dev/null @@ -1,29 +0,0 @@ -#include -#include - -#include "verify.h" - -/* returns 0 for equal strings, 1 for non-equal strings */ -unsigned char PQCLEAN_NTRUHPS4096821_CLEAN_verify(const unsigned char *a, const unsigned char *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 (unsigned char)r; -} - -/* 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); // Two's complement - for (i = 0; i < len; i++) { - r[i] ^= b & (x[i] ^ r[i]); - } -} diff --git a/crypto_kem/ntruhps4096821/clean/verify.h b/crypto_kem/ntruhps4096821/clean/verify.h deleted file mode 100644 index c1f2a21b..00000000 --- a/crypto_kem/ntruhps4096821/clean/verify.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef VERIFY_H -#define VERIFY_H - -#include - -/* returns 0 for equal strings, 1 for non-equal strings */ -unsigned char PQCLEAN_NTRUHPS4096821_CLEAN_verify(const unsigned char *a, const unsigned char *b, size_t len); - -/* 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); - -#endif diff --git a/crypto_kem/ntruhrss701/META.yml b/crypto_kem/ntruhrss701/META.yml index 7d3d6271..a9a1ba77 100644 --- a/crypto_kem/ntruhrss701/META.yml +++ b/crypto_kem/ntruhrss701/META.yml @@ -1,4 +1,4 @@ -name: NTRU-HRSS701 +name: ntruhrss701 type: kem claimed-nist-level: 3 claimed-security: IND-CCA2 @@ -15,9 +15,22 @@ auxiliary-submitters: - Jeffrey Hoffstein - Andreas Hülsing - Joost Rijneveld + - Tsunekazu Saito - Peter Schwabe - William Whyte + - Keita Xagawa + - Takashi Yamakawa - Zhenfei Zhang implementations: - name: clean - version: https://github.com/jschanck/ntru/tree/485dde03 reference implementation + version: https://github.com/jschanck/ntru/tree/4699d70a reference implementation + - name: avx2 + version: https://github.com/jschanck/ntru/tree/4699d70a avx2 implementation + supported_platforms: + - architecture: x86_64 + operating_systems: + - Linux + - Darwin + required_flags: + - avx2 + - bmi2 diff --git a/crypto_kem/ntruhrss701/avx2/LICENSE b/crypto_kem/ntruhrss701/avx2/LICENSE new file mode 100644 index 00000000..d5d21fff --- /dev/null +++ b/crypto_kem/ntruhrss701/avx2/LICENSE @@ -0,0 +1 @@ +Public Domain diff --git a/crypto_kem/ntruhrss701/avx2/Makefile b/crypto_kem/ntruhrss701/avx2/Makefile new file mode 100644 index 00000000..0e071b59 --- /dev/null +++ b/crypto_kem/ntruhrss701/avx2/Makefile @@ -0,0 +1,24 @@ +# This Makefile can be used with GNU Make or BSD Make + +LIB=libntruhrss701_avx2.a +HEADERS=api.h cmov.h owcpa.h params.h poly.h poly_r2_inv.h sample.h +OBJECTS=cmov.o kem.o owcpa.o pack3.o packq.o poly.o poly_r2_inv.o sample.o sample_iid.o \ + square_1_701_patience.o square_3_701_patience.o square_6_701_patience.o square_12_701_shufbytes.o square_15_701_shufbytes.o square_27_701_shufbytes.o square_42_701_shufbytes.o square_84_701_shufbytes.o square_168_701_shufbytes.o square_336_701_shufbytes.o \ + poly_mod_3_Phi_n.o poly_mod_q_Phi_n.o poly_r2_mul.o poly_rq_mul.o poly_rq_mul_x_minus_1.o poly_rq_to_s3.o poly_s3_inv.o poly_s3_to_rq.o vec32_sample_iid.o + +CFLAGS=-O3 -mavx2 -mbmi2 -Wall -Wextra -Wpedantic -Wvla -Werror -Wredundant-decls -Wmissing-prototypes -std=c99 -I../../../common $(EXTRAFLAGS) + +all: $(LIB) + +%.o: %.s $(HEADERS) + $(AS) -o $@ $< + +%.o: %.c $(HEADERS) + $(CC) $(CFLAGS) -c -o $@ $< + +$(LIB): $(OBJECTS) + $(AR) -r $@ $(OBJECTS) + +clean: + $(RM) $(OBJECTS) + $(RM) $(LIB) diff --git a/crypto_kem/ntruhrss701/avx2/api.h b/crypto_kem/ntruhrss701/avx2/api.h new file mode 100644 index 00000000..d4ce311b --- /dev/null +++ b/crypto_kem/ntruhrss701/avx2/api.h @@ -0,0 +1,19 @@ +#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/crypto_kem/ntruhrss701/avx2/cmov.c b/crypto_kem/ntruhrss701/avx2/cmov.c new file mode 100644 index 00000000..0623bdfe --- /dev/null +++ b/crypto_kem/ntruhrss701/avx2/cmov.c @@ -0,0 +1,11 @@ +#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/crypto_kem/ntruhrss701/avx2/cmov.h b/crypto_kem/ntruhrss701/avx2/cmov.h new file mode 100644 index 00000000..2b90cf9c --- /dev/null +++ b/crypto_kem/ntruhrss701/avx2/cmov.h @@ -0,0 +1,10 @@ +#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/crypto_kem/ntruhrss701/avx2/kem.c b/crypto_kem/ntruhrss701/avx2/kem.c new file mode 100644 index 00000000..73b9259e --- /dev/null +++ b/crypto_kem/ntruhrss701/avx2/kem.c @@ -0,0 +1,68 @@ +#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 = 0; + + /* Check that unused bits of last byte of ciphertext are zero */ + fail |= c[NTRU_CIPHERTEXTBYTES - 1] & (0xff << (8 - (7 & (NTRU_LOGQ * NTRU_PACK_DEG)))); + + 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/crypto_kem/ntruhrss701/avx2/owcpa.c b/crypto_kem/ntruhrss701/avx2/owcpa.c new file mode 100644 index 00000000..55e17579 --- /dev/null +++ b/crypto_kem/ntruhrss701/avx2/owcpa.c @@ -0,0 +1,142 @@ +#include "owcpa.h" +#include "poly.h" +#include "sample.h" + +static int owcpa_check_r(const poly *r) { + /* Check that r is in message space. */ + /* Note: Assumes that r has coefficients in {0, 1, ..., q-1} */ + int i; + uint64_t t = 0; + uint16_t c; + for (i = 0; i < NTRU_N; i++) { + c = MODQ(r->coeffs[i] + 1); + t |= c & (NTRU_Q - 4); /* 0 if c is in {0,1,2,3} */ + t |= (c + 1) & 0x4; /* 0 if c is in {0,1,2} */ + } + t |= MODQ(r->coeffs[NTRU_N - 1]); /* Coefficient n-1 must be zero */ + t = (~t + 1); // two's complement + t >>= 63; + return (int) t; +} + + +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); + + /* NOTE: 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 = 0; + + /* 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/crypto_kem/ntruhrss701/avx2/owcpa.h b/crypto_kem/ntruhrss701/avx2/owcpa.h new file mode 100644 index 00000000..7cdf77a2 --- /dev/null +++ b/crypto_kem/ntruhrss701/avx2/owcpa.h @@ -0,0 +1,22 @@ +#ifndef OWCPA_H +#define OWCPA_H + +#include "params.h" +#include "poly.h" + +void PQCLEAN_NTRUHRSS701_AVX2_owcpa_samplemsg(unsigned char msg[NTRU_OWCPA_MSGBYTES], + const unsigned char seed[NTRU_SEEDBYTES]); + +void PQCLEAN_NTRUHRSS701_AVX2_owcpa_keypair(unsigned char *pk, + unsigned char *sk, + const unsigned char seed[NTRU_SEEDBYTES]); + +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/crypto_kem/ntruhrss701/avx2/pack3.c b/crypto_kem/ntruhrss701/avx2/pack3.c new file mode 100644 index 00000000..08869a53 --- /dev/null +++ b/crypto_kem/ntruhrss701/avx2/pack3.c @@ -0,0 +1,32 @@ +#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/crypto_kem/ntruhrss701/avx2/packq.c b/crypto_kem/ntruhrss701/avx2/packq.c new file mode 100644 index 00000000..7d6a0eb1 --- /dev/null +++ b/crypto_kem/ntruhrss701/avx2/packq.c @@ -0,0 +1,98 @@ +#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/crypto_kem/ntruhrss701/avx2/params.h b/crypto_kem/ntruhrss701/avx2/params.h new file mode 100644 index 00000000..a9dbddd5 --- /dev/null +++ b/crypto_kem/ntruhrss701/avx2/params.h @@ -0,0 +1,35 @@ +#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/crypto_kem/ntruhrss701/avx2/poly.c b/crypto_kem/ntruhrss701/avx2/poly.c new file mode 100644 index 00000000..f35712c8 --- /dev/null +++ b/crypto_kem/ntruhrss701/avx2/poly.c @@ -0,0 +1,67 @@ +#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) { + PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_mul(r, a, b); + 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/crypto_kem/ntruhrss701/avx2/poly.h b/crypto_kem/ntruhrss701/avx2/poly.h new file mode 100644 index 00000000..da42122e --- /dev/null +++ b/crypto_kem/ntruhrss701/avx2/poly.h @@ -0,0 +1,41 @@ +#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/crypto_kem/ntruhrss701/avx2/poly_mod_3_Phi_n.s b/crypto_kem/ntruhrss701/avx2/poly_mod_3_Phi_n.s new file mode 100644 index 00000000..e60c3dee --- /dev/null +++ b/crypto_kem/ntruhrss701/avx2/poly_mod_3_Phi_n.s @@ -0,0 +1,901 @@ +.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/crypto_kem/ntruhrss701/avx2/poly_mod_q_Phi_n.s b/crypto_kem/ntruhrss701/avx2/poly_mod_q_Phi_n.s new file mode 100644 index 00000000..63a8960e --- /dev/null +++ b/crypto_kem/ntruhrss701/avx2/poly_mod_q_Phi_n.s @@ -0,0 +1,104 @@ +.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/crypto_kem/ntruhrss701/avx2/poly_r2_inv.c b/crypto_kem/ntruhrss701/avx2/poly_r2_inv.c new file mode 100644 index 00000000..ecca974e --- /dev/null +++ b/crypto_kem/ntruhrss701/avx2/poly_r2_inv.c @@ -0,0 +1,73 @@ +#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/crypto_kem/ntruhrss701/avx2/poly_r2_inv.h b/crypto_kem/ntruhrss701/avx2/poly_r2_inv.h new file mode 100644 index 00000000..540d7a09 --- /dev/null +++ b/crypto_kem/ntruhrss701/avx2/poly_r2_inv.h @@ -0,0 +1,22 @@ +#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/crypto_kem/ntruhrss701/avx2/poly_r2_mul.s b/crypto_kem/ntruhrss701/avx2/poly_r2_mul.s new file mode 100644 index 00000000..70a55ea5 --- /dev/null +++ b/crypto_kem/ntruhrss701/avx2/poly_r2_mul.s @@ -0,0 +1,466 @@ +.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/crypto_kem/ntruhrss701/avx2/poly_rq_mul.s b/crypto_kem/ntruhrss701/avx2/poly_rq_mul.s new file mode 100644 index 00000000..02b3a24d --- /dev/null +++ b/crypto_kem/ntruhrss701/avx2/poly_rq_mul.s @@ -0,0 +1,8457 @@ +.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 +mask_mod8192: +.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 +.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) +vpand mask_mod8192(%rip), %ymm11, %ymm11 +vmovdqu %ymm11, 0(%rdi) +vpand mask_mod8192(%rip), %ymm6, %ymm6 +vmovdqu %ymm6, 352(%rdi) +vpand mask_mod8192(%rip), %ymm3, %ymm3 +vmovdqu %ymm3, 704(%rdi) +vpand mask_mod8192(%rip), %ymm4, %ymm4 +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) +vpand mask_mod8192(%rip), %ymm5, %ymm5 +vmovdqu %ymm5, 88(%rdi) +vpand mask_mod8192(%rip), %ymm6, %ymm6 +vmovdqu %ymm6, 440(%rdi) +vpand mask_mod8192(%rip), %ymm10, %ymm10 +vmovdqu %ymm10, 792(%rdi) +vpand mask_mod8192(%rip), %ymm9, %ymm9 +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) +vpand mask_mod8192(%rip), %ymm11, %ymm11 +vmovdqu %ymm11, 176(%rdi) +vpand mask_mod8192(%rip), %ymm6, %ymm6 +vmovdqu %ymm6, 528(%rdi) +vpand mask_mod8192(%rip), %ymm8, %ymm8 +vmovdqu %ymm8, 880(%rdi) +vpand mask_mod8192(%rip), %ymm7, %ymm7 +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) +vpand mask_mod8192(%rip), %ymm5, %ymm5 +vmovdqu %ymm5, 264(%rdi) +vpand mask_mod8192(%rip), %ymm6, %ymm6 +vmovdqu %ymm6, 616(%rdi) +vpand mask_mod8192(%rip), %ymm4, %ymm4 +vmovdqu %ymm4, 968(%rdi) +vpand mask_mod8192(%rip), %ymm3, %ymm3 +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 +vpand mask_mod8192(%rip), %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) +vpand mask_mod8192(%rip), %ymm11, %ymm11 +vmovdqu %ymm11, 352(%rdi) +vpand mask_mod8192(%rip), %ymm6, %ymm6 +vmovdqu %ymm6, 704(%rdi) +vpand mask_mod8192(%rip), %ymm9, %ymm9 +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 +vpand mask_mod8192(%rip), %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) +vpand mask_mod8192(%rip), %ymm5, %ymm5 +vmovdqu %ymm5, 440(%rdi) +vpand mask_mod8192(%rip), %ymm6, %ymm6 +vmovdqu %ymm6, 792(%rdi) +vpand mask_mod8192(%rip), %ymm7, %ymm7 +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 +vpand mask_mod8192(%rip), %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) +vpand mask_mod8192(%rip), %ymm11, %ymm11 +vmovdqu %ymm11, 528(%rdi) +vpand mask_mod8192(%rip), %ymm6, %ymm6 +vmovdqu %ymm6, 880(%rdi) +vpand mask_mod8192(%rip), %ymm3, %ymm3 +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 +vpand mask_mod8192(%rip), %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) +vpand mask_mod8192(%rip), %ymm5, %ymm5 +vmovdqu %ymm5, 616(%rdi) +vpand mask_mod8192(%rip), %ymm6, %ymm6 +vmovdqu %ymm6, 968(%rdi) +vpand mask_mod8192(%rip), %ymm10, %ymm10 +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) +vpand mask_mod8192(%rip), %ymm11, %ymm11 +vmovdqu %ymm11, 32(%rdi) +vpand mask_mod8192(%rip), %ymm6, %ymm6 +vmovdqu %ymm6, 384(%rdi) +vpand mask_mod8192(%rip), %ymm2, %ymm2 +vmovdqu %ymm2, 736(%rdi) +vpand mask_mod8192(%rip), %ymm9, %ymm9 +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) +vpand mask_mod8192(%rip), %ymm5, %ymm5 +vmovdqu %ymm5, 120(%rdi) +vpand mask_mod8192(%rip), %ymm6, %ymm6 +vmovdqu %ymm6, 472(%rdi) +vpand mask_mod8192(%rip), %ymm8, %ymm8 +vmovdqu %ymm8, 824(%rdi) +vpand mask_mod8192(%rip), %ymm3, %ymm3 +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) +vpand mask_mod8192(%rip), %ymm11, %ymm11 +vmovdqu %ymm11, 208(%rdi) +vpand mask_mod8192(%rip), %ymm6, %ymm6 +vmovdqu %ymm6, 560(%rdi) +vpand mask_mod8192(%rip), %ymm4, %ymm4 +vmovdqu %ymm4, 912(%rdi) +vpand mask_mod8192(%rip), %ymm10, %ymm10 +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) +vpand mask_mod8192(%rip), %ymm5, %ymm5 +vmovdqu %ymm5, 296(%rdi) +vpand mask_mod8192(%rip), %ymm6, %ymm6 +vmovdqu %ymm6, 648(%rdi) +vpand mask_mod8192(%rip), %ymm9, %ymm9 +vmovdqu %ymm9, 1000(%rdi) +vpand mask_mod8192(%rip), %ymm2, %ymm2 +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 +vpand mask_mod8192(%rip), %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) +vpand mask_mod8192(%rip), %ymm11, %ymm11 +vmovdqu %ymm11, 384(%rdi) +vpand mask_mod8192(%rip), %ymm6, %ymm6 +vmovdqu %ymm6, 736(%rdi) +vpand mask_mod8192(%rip), %ymm3, %ymm3 +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 +vpand mask_mod8192(%rip), %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) +vpand mask_mod8192(%rip), %ymm5, %ymm5 +vmovdqu %ymm5, 472(%rdi) +vpand mask_mod8192(%rip), %ymm6, %ymm6 +vmovdqu %ymm6, 824(%rdi) +vpand mask_mod8192(%rip), %ymm10, %ymm10 +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 +vpand mask_mod8192(%rip), %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) +vpand mask_mod8192(%rip), %ymm11, %ymm11 +vmovdqu %ymm11, 560(%rdi) +vpand mask_mod8192(%rip), %ymm6, %ymm6 +vmovdqu %ymm6, 912(%rdi) +vpand mask_mod8192(%rip), %ymm2, %ymm2 +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 +vpand mask_mod8192(%rip), %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) +vpand mask_mod8192(%rip), %ymm5, %ymm5 +vmovdqu %ymm5, 648(%rdi) +vpand mask_mod8192(%rip), %ymm6, %ymm6 +vmovdqu %ymm6, 1000(%rdi) +vpand mask_mod8192(%rip), %ymm8, %ymm8 +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) +vpand mask_mod8192(%rip), %ymm11, %ymm11 +vmovdqu %xmm11, 64(%rdi) +vextracti128 $1, %ymm11, %xmm11 +vmovq %xmm11, 80(%rdi) +vpand mask_mod8192(%rip), %ymm6, %ymm6 +vmovdqu %xmm6, 416(%rdi) +vextracti128 $1, %ymm6, %xmm6 +vmovq %xmm6, 432(%rdi) +vpand mask_mod8192(%rip), %ymm7, %ymm7 +vmovdqu %xmm7, 768(%rdi) +vextracti128 $1, %ymm7, %xmm7 +vmovq %xmm7, 784(%rdi) +vpand mask_mod8192(%rip), %ymm3, %ymm3 +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) +vpand mask_mod8192(%rip), %ymm5, %ymm5 +vmovdqu %xmm5, 152(%rdi) +vextracti128 $1, %ymm5, %xmm5 +vmovq %xmm5, 168(%rdi) +vpand mask_mod8192(%rip), %ymm6, %ymm6 +vmovdqu %xmm6, 504(%rdi) +vextracti128 $1, %ymm6, %xmm6 +vmovq %xmm6, 520(%rdi) +vpand mask_mod8192(%rip), %ymm4, %ymm4 +vmovdqu %xmm4, 856(%rdi) +vextracti128 $1, %ymm4, %xmm4 +vmovq %xmm4, 872(%rdi) +vpand mask_mod8192(%rip), %ymm2, %ymm2 +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) +vpand mask_mod8192(%rip), %ymm11, %ymm11 +vmovdqu %xmm11, 240(%rdi) +vextracti128 $1, %ymm11, %xmm11 +vmovq %xmm11, 256(%rdi) +vpand mask_mod8192(%rip), %ymm6, %ymm6 +vmovdqu %xmm6, 592(%rdi) +vextracti128 $1, %ymm6, %xmm6 +vmovq %xmm6, 608(%rdi) +vpand mask_mod8192(%rip), %ymm9, %ymm9 +vmovdqu %xmm9, 944(%rdi) +vextracti128 $1, %ymm9, %xmm9 +vmovq %xmm9, 960(%rdi) +vpand mask_mod8192(%rip), %ymm8, %ymm8 +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) +vpand mask_mod8192(%rip), %ymm5, %ymm5 +vmovdqu %xmm5, 328(%rdi) +vextracti128 $1, %ymm5, %xmm5 +vmovq %xmm5, 344(%rdi) +vpshufb shufmin1_mask3(%rip), %ymm5, %ymm5 +vmovdqa %xmm5, 1792(%rsp) +vpand mask_mod8192(%rip), %ymm6, %ymm6 +vmovdqu %xmm6, 680(%rdi) +vextracti128 $1, %ymm6, %xmm6 +vmovq %xmm6, 696(%rdi) +vpshufb shufmin1_mask3(%rip), %ymm6, %ymm6 +vmovdqa %xmm6, 1824(%rsp) +vpand mask_mod8192(%rip), %ymm3, %ymm3 +vmovdqu %xmm3, 1032(%rdi) +vextracti128 $1, %ymm3, %xmm3 +vmovq %xmm3, 1048(%rdi) +vpshufb shufmin1_mask3(%rip), %ymm3, %ymm3 +vmovdqa %xmm3, 1856(%rsp) +vpand mask_mod8192(%rip), %ymm7, %ymm7 +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 +vpand mask_mod8192(%rip), %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) +vpand mask_mod8192(%rip), %ymm11, %ymm11 +vmovdqu %xmm11, 416(%rdi) +vextracti128 $1, %ymm11, %xmm11 +vmovq %xmm11, 432(%rdi) +vpand mask_mod8192(%rip), %ymm6, %ymm6 +vmovdqu %xmm6, 768(%rdi) +vextracti128 $1, %ymm6, %xmm6 +vmovq %xmm6, 784(%rdi) +vpand mask_mod8192(%rip), %ymm2, %ymm2 +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 +vpand mask_mod8192(%rip), %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) +vpand mask_mod8192(%rip), %ymm5, %ymm5 +vmovdqu %xmm5, 504(%rdi) +vextracti128 $1, %ymm5, %xmm5 +vmovq %xmm5, 520(%rdi) +vpand mask_mod8192(%rip), %ymm6, %ymm6 +vmovdqu %xmm6, 856(%rdi) +vextracti128 $1, %ymm6, %xmm6 +vmovq %xmm6, 872(%rdi) +vpand mask_mod8192(%rip), %ymm8, %ymm8 +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 +vpand mask_mod8192(%rip), %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) +vpand mask_mod8192(%rip), %ymm11, %ymm11 +vmovdqu %xmm11, 592(%rdi) +vextracti128 $1, %ymm11, %xmm11 +vmovq %xmm11, 608(%rdi) +vpand mask_mod8192(%rip), %ymm6, %ymm6 +vmovdqu %xmm6, 944(%rdi) +vextracti128 $1, %ymm6, %xmm6 +vmovq %xmm6, 960(%rdi) +vpand mask_mod8192(%rip), %ymm7, %ymm7 +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 +vpand mask_mod8192(%rip), %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) +vpand mask_mod8192(%rip), %ymm5, %ymm5 +vmovdqu %xmm5, 680(%rdi) +vextracti128 $1, %ymm5, %xmm5 +vmovq %xmm5, 696(%rdi) +vpand mask_mod8192(%rip), %ymm6, %ymm6 +vmovdqu %xmm6, 1032(%rdi) +vextracti128 $1, %ymm6, %xmm6 +vmovq %xmm6, 1048(%rdi) +vpand mask_mod8192(%rip), %ymm4, %ymm4 +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 +vpand mask_mod8192(%rip), %ymm11, %ymm11 +vmovdqu %ymm11, 0(%rdi) +vmovdqu 352(%rdi), %ymm11 +vpaddw 2528(%rsp), %ymm11, %ymm11 +vpaddw 2848(%rsp), %ymm11, %ymm11 +vpand mask_mod8192(%rip), %ymm11, %ymm11 +vmovdqu %ymm11, 352(%rdi) +vmovdqu 704(%rdi), %ymm11 +vpaddw 2784(%rsp), %ymm11, %ymm11 +vpaddw 2880(%rsp), %ymm11, %ymm11 +vpand mask_mod8192(%rip), %ymm11, %ymm11 +vmovdqu %ymm11, 704(%rdi) +vmovdqu 88(%rdi), %ymm11 +vpaddw 2048(%rsp), %ymm11, %ymm11 +vpaddw 1920(%rsp), %ymm11, %ymm11 +vpand mask_mod8192(%rip), %ymm11, %ymm11 +vmovdqu %ymm11, 88(%rdi) +vmovdqu 440(%rdi), %ymm11 +vpaddw 2304(%rsp), %ymm11, %ymm11 +vpand mask_mod8192(%rip), %ymm11, %ymm11 +vmovdqu %ymm11, 440(%rdi) +vmovdqu 792(%rdi), %ymm11 +vpaddw 2560(%rsp), %ymm11, %ymm11 +vpand mask_mod8192(%rip), %ymm11, %ymm11 +vmovdqu %ymm11, 792(%rdi) +vmovdqu 176(%rdi), %ymm11 +vpaddw 2080(%rsp), %ymm11, %ymm11 +vpaddw 1952(%rsp), %ymm11, %ymm11 +vpand mask_mod8192(%rip), %ymm11, %ymm11 +vmovdqu %ymm11, 176(%rdi) +vmovdqu 528(%rdi), %ymm11 +vpaddw 2336(%rsp), %ymm11, %ymm11 +vpand mask_mod8192(%rip), %ymm11, %ymm11 +vmovdqu %ymm11, 528(%rdi) +vmovdqu 880(%rdi), %ymm11 +vpaddw 2592(%rsp), %ymm11, %ymm11 +vpand mask_mod8192(%rip), %ymm11, %ymm11 +vmovdqu %ymm11, 880(%rdi) +vmovdqu 264(%rdi), %ymm11 +vpaddw 2112(%rsp), %ymm11, %ymm11 +vpaddw 1984(%rsp), %ymm11, %ymm11 +vpand mask_mod8192(%rip), %ymm11, %ymm11 +vmovdqu %ymm11, 264(%rdi) +vmovdqu 616(%rdi), %ymm11 +vpaddw 2368(%rsp), %ymm11, %ymm11 +vpand mask_mod8192(%rip), %ymm11, %ymm11 +vmovdqu %ymm11, 616(%rdi) +vmovdqu 968(%rdi), %ymm11 +vpaddw 2624(%rsp), %ymm11, %ymm11 +vpand mask_mod8192(%rip), %ymm11, %ymm11 +vmovdqu %ymm11, 968(%rdi) +vmovdqu 352(%rdi), %ymm11 +vpaddw 2144(%rsp), %ymm11, %ymm11 +vpand mask_mod8192(%rip), %ymm11, %ymm11 +vmovdqu %ymm11, 352(%rdi) +vmovdqu 704(%rdi), %ymm11 +vpaddw 2400(%rsp), %ymm11, %ymm11 +vpand mask_mod8192(%rip), %ymm11, %ymm11 +vmovdqu %ymm11, 704(%rdi) +vmovdqu 1056(%rdi), %ymm11 +vpaddw 2656(%rsp), %ymm11, %ymm11 +vpand mask_mod8192(%rip), %ymm11, %ymm11 +vmovdqu %ymm11, 1056(%rdi) +vmovdqu 440(%rdi), %ymm11 +vpaddw 2176(%rsp), %ymm11, %ymm11 +vpand mask_mod8192(%rip), %ymm11, %ymm11 +vmovdqu %ymm11, 440(%rdi) +vmovdqu 792(%rdi), %ymm11 +vpaddw 2432(%rsp), %ymm11, %ymm11 +vpand mask_mod8192(%rip), %ymm11, %ymm11 +vmovdqu %ymm11, 792(%rdi) +vmovdqu 1144(%rdi), %ymm11 +vpaddw 2688(%rsp), %ymm11, %ymm11 +vpand mask_mod8192(%rip), %ymm11, %ymm11 +vmovdqu %ymm11, 1144(%rdi) +vmovdqu 528(%rdi), %ymm11 +vpaddw 2208(%rsp), %ymm11, %ymm11 +vpand mask_mod8192(%rip), %ymm11, %ymm11 +vmovdqu %ymm11, 528(%rdi) +vmovdqu 880(%rdi), %ymm11 +vpaddw 2464(%rsp), %ymm11, %ymm11 +vpand mask_mod8192(%rip), %ymm11, %ymm11 +vmovdqu %ymm11, 880(%rdi) +vmovdqu 1232(%rdi), %ymm11 +vpaddw 2720(%rsp), %ymm11, %ymm11 +vpand mask_mod8192(%rip), %ymm11, %ymm11 +vmovdqu %ymm11, 1232(%rdi) +vmovdqu 616(%rdi), %ymm11 +vpaddw 2240(%rsp), %ymm11, %ymm11 +vpand mask_mod8192(%rip), %ymm11, %ymm11 +vmovdqu %ymm11, 616(%rdi) +vmovdqu 968(%rdi), %ymm11 +vpaddw 2496(%rsp), %ymm11, %ymm11 +vpand mask_mod8192(%rip), %ymm11, %ymm11 +vmovdqu %ymm11, 968(%rdi) +vmovdqu 1320(%rdi), %ymm11 +vpaddw 2752(%rsp), %ymm11, %ymm11 +vpand mask_mod8192(%rip), %ymm11, %ymm11 +vmovdqu %ymm11, 1320(%rdi) +mov %r8, %rsp +pop %r12 +ret diff --git a/crypto_kem/ntruhrss701/avx2/poly_rq_mul_x_minus_1.s b/crypto_kem/ntruhrss701/avx2/poly_rq_mul_x_minus_1.s new file mode 100644 index 00000000..51c668ed --- /dev/null +++ b/crypto_kem/ntruhrss701/avx2/poly_rq_mul_x_minus_1.s @@ -0,0 +1,277 @@ +.data +.p2align 5 +mask_mod8192: +.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_mod8192_omit_lowest: +.word 0 +.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_mod8192_only_lowest: +.word 8191 +.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 +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_Rq_mul_x_minus_1 +.global _PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_mul_x_minus_1 +PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_mul_x_minus_1: +_PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_mul_x_minus_1: +vmovdqu 1374(%rsi), %ymm0 +vpsubw 1376(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 1376(%rdi) +vextracti128 $1, %ymm0, %xmm4 +vpshufb shuf_5_to_0_zerorest(%rip), %ymm4, %ymm4 +vpsubw 0(%rsi), %ymm4, %ymm4 +vpand mask_mod8192_only_lowest(%rip), %ymm4, %ymm4 +vmovdqu 1342(%rsi), %ymm0 +vpsubw 1344(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 1344(%rdi) +vmovdqu 1310(%rsi), %ymm0 +vpsubw 1312(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 1312(%rdi) +vmovdqu 1278(%rsi), %ymm0 +vpsubw 1280(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 1280(%rdi) +vmovdqu 1246(%rsi), %ymm0 +vpsubw 1248(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 1248(%rdi) +vmovdqu 1214(%rsi), %ymm0 +vpsubw 1216(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 1216(%rdi) +vmovdqu 1182(%rsi), %ymm0 +vpsubw 1184(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 1184(%rdi) +vmovdqu 1150(%rsi), %ymm0 +vpsubw 1152(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 1152(%rdi) +vmovdqu 1118(%rsi), %ymm0 +vpsubw 1120(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 1120(%rdi) +vmovdqu 1086(%rsi), %ymm0 +vpsubw 1088(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 1088(%rdi) +vmovdqu 1054(%rsi), %ymm0 +vpsubw 1056(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 1056(%rdi) +vmovdqu 1022(%rsi), %ymm0 +vpsubw 1024(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 1024(%rdi) +vmovdqu 990(%rsi), %ymm0 +vpsubw 992(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 992(%rdi) +vmovdqu 958(%rsi), %ymm0 +vpsubw 960(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 960(%rdi) +vmovdqu 926(%rsi), %ymm0 +vpsubw 928(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 928(%rdi) +vmovdqu 894(%rsi), %ymm0 +vpsubw 896(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 896(%rdi) +vmovdqu 862(%rsi), %ymm0 +vpsubw 864(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 864(%rdi) +vmovdqu 830(%rsi), %ymm0 +vpsubw 832(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 832(%rdi) +vmovdqu 798(%rsi), %ymm0 +vpsubw 800(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 800(%rdi) +vmovdqu 766(%rsi), %ymm0 +vpsubw 768(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 768(%rdi) +vmovdqu 734(%rsi), %ymm0 +vpsubw 736(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 736(%rdi) +vmovdqu 702(%rsi), %ymm0 +vpsubw 704(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 704(%rdi) +vmovdqu 670(%rsi), %ymm0 +vpsubw 672(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 672(%rdi) +vmovdqu 638(%rsi), %ymm0 +vpsubw 640(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 640(%rdi) +vmovdqu 606(%rsi), %ymm0 +vpsubw 608(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 608(%rdi) +vmovdqu 574(%rsi), %ymm0 +vpsubw 576(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 576(%rdi) +vmovdqu 542(%rsi), %ymm0 +vpsubw 544(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 544(%rdi) +vmovdqu 510(%rsi), %ymm0 +vpsubw 512(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 512(%rdi) +vmovdqu 478(%rsi), %ymm0 +vpsubw 480(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 480(%rdi) +vmovdqu 446(%rsi), %ymm0 +vpsubw 448(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 448(%rdi) +vmovdqu 414(%rsi), %ymm0 +vpsubw 416(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 416(%rdi) +vmovdqu 382(%rsi), %ymm0 +vpsubw 384(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 384(%rdi) +vmovdqu 350(%rsi), %ymm0 +vpsubw 352(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 352(%rdi) +vmovdqu 318(%rsi), %ymm0 +vpsubw 320(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 320(%rdi) +vmovdqu 286(%rsi), %ymm0 +vpsubw 288(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 288(%rdi) +vmovdqu 254(%rsi), %ymm0 +vpsubw 256(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 256(%rdi) +vmovdqu 222(%rsi), %ymm0 +vpsubw 224(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 224(%rdi) +vmovdqu 190(%rsi), %ymm0 +vpsubw 192(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 192(%rdi) +vmovdqu 158(%rsi), %ymm0 +vpsubw 160(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 160(%rdi) +vmovdqu 126(%rsi), %ymm0 +vpsubw 128(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 128(%rdi) +vmovdqu 94(%rsi), %ymm0 +vpsubw 96(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 96(%rdi) +vmovdqu 62(%rsi), %ymm0 +vpsubw 64(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 64(%rdi) +vmovdqu 30(%rsi), %ymm0 +vpsubw 32(%rsi), %ymm0, %ymm1 +vpand mask_mod8192(%rip), %ymm1, %ymm1 +vmovdqa %ymm1, 32(%rdi) +vmovdqa 0(%rsi), %ymm3 +vpsrlq $48, %ymm3, %ymm0 +vpermq $147, %ymm0, %ymm0 +vpsllq $16, %ymm3, %ymm2 +vpxor %ymm0, %ymm2, %ymm2 +vpsubw %ymm3, %ymm2, %ymm3 +vpand mask_mod8192_omit_lowest(%rip), %ymm3, %ymm3 +vpxor %ymm3, %ymm4, %ymm3 +vmovdqa %ymm3, 0(%rdi) +ret diff --git a/crypto_kem/ntruhrss701/avx2/poly_rq_to_s3.s b/crypto_kem/ntruhrss701/avx2/poly_rq_to_s3.s new file mode 100644 index 00000000..b6d959c7 --- /dev/null +++ b/crypto_kem/ntruhrss701/avx2/poly_rq_to_s3.s @@ -0,0 +1,1255 @@ +.data +.p2align 5 +const_3_repeating: +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +.word 0x3 +shuf_b8_to_low_doubleword: +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +.byte 8 +.byte 255 +mask_modq: +.word 8191 +.word 8191 +.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 const_3_repeating(%rip), %ymm3 +vmovdqa mask_modq(%rip), %ymm6 +vmovdqa 1376(%rsi), %ymm4 +vpand %ymm6, %ymm4, %ymm4 +vpsrlw $12, %ymm4, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm4 +vpsrlw $8, %ymm4, %ymm5 +vpand mask_ff(%rip), %ymm4, %ymm4 +vpaddw %ymm5, %ymm4, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm4 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm4, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm4 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm4, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm4 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm4, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm4 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm4, %ymm5 +vpsllw $1, %ymm5, %ymm4 +vextracti128 $1, %ymm4, %xmm4 +vpshufb shuf_b8_to_low_doubleword(%rip), %ymm4, %ymm4 +vinserti128 $1, %xmm4, %ymm4, %ymm4 +vmovdqa 0(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 0(%rdi) +vmovdqa 32(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 32(%rdi) +vmovdqa 64(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 64(%rdi) +vmovdqa 96(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 96(%rdi) +vmovdqa 128(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 128(%rdi) +vmovdqa 160(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 160(%rdi) +vmovdqa 192(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 192(%rdi) +vmovdqa 224(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 224(%rdi) +vmovdqa 256(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 256(%rdi) +vmovdqa 288(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 288(%rdi) +vmovdqa 320(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 320(%rdi) +vmovdqa 352(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 352(%rdi) +vmovdqa 384(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 384(%rdi) +vmovdqa 416(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 416(%rdi) +vmovdqa 448(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 448(%rdi) +vmovdqa 480(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 480(%rdi) +vmovdqa 512(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 512(%rdi) +vmovdqa 544(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 544(%rdi) +vmovdqa 576(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 576(%rdi) +vmovdqa 608(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 608(%rdi) +vmovdqa 640(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 640(%rdi) +vmovdqa 672(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 672(%rdi) +vmovdqa 704(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 704(%rdi) +vmovdqa 736(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 736(%rdi) +vmovdqa 768(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 768(%rdi) +vmovdqa 800(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 800(%rdi) +vmovdqa 832(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 832(%rdi) +vmovdqa 864(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 864(%rdi) +vmovdqa 896(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 896(%rdi) +vmovdqa 928(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 928(%rdi) +vmovdqa 960(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 960(%rdi) +vmovdqa 992(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 992(%rdi) +vmovdqa 1024(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1024(%rdi) +vmovdqa 1056(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1056(%rdi) +vmovdqa 1088(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1088(%rdi) +vmovdqa 1120(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1120(%rdi) +vmovdqa 1152(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1152(%rdi) +vmovdqa 1184(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1184(%rdi) +vmovdqa 1216(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1216(%rdi) +vmovdqa 1248(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1248(%rdi) +vmovdqa 1280(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1280(%rdi) +vmovdqa 1312(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1312(%rdi) +vmovdqa 1344(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1344(%rdi) +vmovdqa 1376(%rsi), %ymm1 +vpand %ymm6, %ymm1, %ymm1 +vpsrlw $12, %ymm1, %ymm0 +vpxor %ymm3, %ymm0, %ymm0 +vpsllw $13, %ymm0, %ymm0 +vpaddw %ymm1, %ymm0, %ymm0 +vpaddw %ymm4, %ymm0, %ymm0 +vpsrlw $8, %ymm0, %ymm5 +vpand mask_ff(%rip), %ymm0, %ymm0 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_f(%rip), %ymm5, %ymm0 +vpsrlw $4, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpand mask_3(%rip), %ymm5, %ymm0 +vpsrlw $2, %ymm5, %ymm5 +vpaddw %ymm5, %ymm0, %ymm5 +vpsubw mask_3(%rip), %ymm5, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm0 +vpand %ymm15, %ymm5, %ymm14 +vpxor %ymm14, %ymm0, %ymm5 +vmovdqa %ymm5, 1376(%rdi) +ret diff --git a/crypto_kem/ntruhrss701/avx2/poly_s3_inv.s b/crypto_kem/ntruhrss701/avx2/poly_s3_inv.s new file mode 100644 index 00000000..2cffc9c7 --- /dev/null +++ b/crypto_kem/ntruhrss701/avx2/poly_s3_inv.s @@ -0,0 +1,5449 @@ +.data +.p2align 5 +mask_3: +.word 0x03 +.word 0x03 +.word 0x03 +.word 0x03 +.word 0x03 +.word 0x03 +.word 0x03 +.word 0x03 +.word 0x03 +.word 0x03 +.word 0x03 +.word 0x03 +.word 0x03 +.word 0x03 +.word 0x03 +.word 0x03 +low16: +.word 0xFFFF +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +const_all_1s: +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +const_1: +.word 1 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +const_64: +.word 64 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +const_all_but_1: +.word 0xFFFE +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +const_high_1: +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0x8000 +const_high_2: +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0xC000 +const_high_4: +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0xF000 +const_high_8: +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0xFF00 +const_high_16: +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0xFFFF +const_high_32: +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0xFFFF +.word 0xFFFF +const_high_64: +.word 0x0000 +.word 0x0000 +.word 0x0000 +.word 0x0000 +.word 0x0000 +.word 0x0000 +.word 0x0000 +.word 0x0000 +.word 0x0000 +.word 0x0000 +.word 0x0000 +.word 0x0000 +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +const_high_67: +.word 0x0000 +.word 0x0000 +.word 0x0000 +.word 0x0000 +.word 0x0000 +.word 0x0000 +.word 0x0000 +.word 0x0000 +.word 0x0000 +.word 0x0000 +.word 0x0000 +.word 0xE000 +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +const_all_but_high_1: +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0x7FFF +const_all_but_high_2: +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0x3FFF +const_all_but_high_4: +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0x0FFF +const_all_but_high_8: +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0x00FF +const_all_but_high_16: +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0x0000 +const_all_but_high_32: +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0x0000 +.word 0x0000 +const_all_but_high_64: +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0x0000 +.word 0x0000 +.word 0x0000 +.word 0x0000 +const_all_but_high_67: +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0x1FFF +.word 0 +.word 0 +.word 0 +.word 0 +const_all_but_high_68: +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0x0FFF +.word 0 +.word 0 +.word 0 +.word 0 +const_all_but_high_70: +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0x03FF +.word 0 +.word 0 +.word 0 +.word 0 +const_all_but_high_74: +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0x003F +.word 0 +.word 0 +.word 0 +.word 0 +const_all_but_high_82: +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0x3FFF +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +const_all_but_high_98: +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0xFFFF +.word 0x3FFF +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.word 0 +.text +.global PQCLEAN_NTRUHRSS701_AVX2_poly_S3_inv +.global _PQCLEAN_NTRUHRSS701_AVX2_poly_S3_inv +PQCLEAN_NTRUHRSS701_AVX2_poly_S3_inv: +_PQCLEAN_NTRUHRSS701_AVX2_poly_S3_inv: +push %r12 +push %r13 +push %r14 +mov %rsp, %r8 +andq $-32, %rsp +subq $768, %rsp +mov $281479271743489, %r9 +mov $562958543486978, %rdx +mov $0, %r10 +mov $0, %r11 +mov 0(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +or %rcx, %r10 +or %rax, %r11 +mov 8(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $4, %rcx +shl $4, %rax +or %rcx, %r10 +or %rax, %r11 +mov 16(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $8, %rcx +shl $8, %rax +or %rcx, %r10 +or %rax, %r11 +mov 24(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $12, %rcx +shl $12, %rax +or %rcx, %r10 +or %rax, %r11 +mov 32(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $16, %rcx +shl $16, %rax +or %rcx, %r10 +or %rax, %r11 +mov 40(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $20, %rcx +shl $20, %rax +or %rcx, %r10 +or %rax, %r11 +mov 48(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $24, %rcx +shl $24, %rax +or %rcx, %r10 +or %rax, %r11 +mov 56(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $28, %rcx +shl $28, %rax +or %rcx, %r10 +or %rax, %r11 +mov 64(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $32, %rcx +shl $32, %rax +or %rcx, %r10 +or %rax, %r11 +mov 72(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $36, %rcx +shl $36, %rax +or %rcx, %r10 +or %rax, %r11 +mov 80(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $40, %rcx +shl $40, %rax +or %rcx, %r10 +or %rax, %r11 +mov 88(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $44, %rcx +shl $44, %rax +or %rcx, %r10 +or %rax, %r11 +mov 96(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $48, %rcx +shl $48, %rax +or %rcx, %r10 +or %rax, %r11 +mov 104(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $52, %rcx +shl $52, %rax +or %rcx, %r10 +or %rax, %r11 +mov 112(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $56, %rcx +shl $56, %rax +or %rcx, %r10 +or %rax, %r11 +mov 120(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $60, %rcx +shl $60, %rax +or %rcx, %r10 +or %rax, %r11 +mov %r10, 0(%rsp) +mov %r11, 96(%rsp) +mov $0, %r10 +mov $0, %r11 +mov 128(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +or %rcx, %r10 +or %rax, %r11 +mov 136(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $4, %rcx +shl $4, %rax +or %rcx, %r10 +or %rax, %r11 +mov 144(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $8, %rcx +shl $8, %rax +or %rcx, %r10 +or %rax, %r11 +mov 152(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $12, %rcx +shl $12, %rax +or %rcx, %r10 +or %rax, %r11 +mov 160(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $16, %rcx +shl $16, %rax +or %rcx, %r10 +or %rax, %r11 +mov 168(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $20, %rcx +shl $20, %rax +or %rcx, %r10 +or %rax, %r11 +mov 176(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $24, %rcx +shl $24, %rax +or %rcx, %r10 +or %rax, %r11 +mov 184(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $28, %rcx +shl $28, %rax +or %rcx, %r10 +or %rax, %r11 +mov 192(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $32, %rcx +shl $32, %rax +or %rcx, %r10 +or %rax, %r11 +mov 200(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $36, %rcx +shl $36, %rax +or %rcx, %r10 +or %rax, %r11 +mov 208(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $40, %rcx +shl $40, %rax +or %rcx, %r10 +or %rax, %r11 +mov 216(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $44, %rcx +shl $44, %rax +or %rcx, %r10 +or %rax, %r11 +mov 224(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $48, %rcx +shl $48, %rax +or %rcx, %r10 +or %rax, %r11 +mov 232(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $52, %rcx +shl $52, %rax +or %rcx, %r10 +or %rax, %r11 +mov 240(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $56, %rcx +shl $56, %rax +or %rcx, %r10 +or %rax, %r11 +mov 248(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $60, %rcx +shl $60, %rax +or %rcx, %r10 +or %rax, %r11 +mov %r10, 8(%rsp) +mov %r11, 104(%rsp) +mov $0, %r10 +mov $0, %r11 +mov 256(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +or %rcx, %r10 +or %rax, %r11 +mov 264(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $4, %rcx +shl $4, %rax +or %rcx, %r10 +or %rax, %r11 +mov 272(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $8, %rcx +shl $8, %rax +or %rcx, %r10 +or %rax, %r11 +mov 280(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $12, %rcx +shl $12, %rax +or %rcx, %r10 +or %rax, %r11 +mov 288(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $16, %rcx +shl $16, %rax +or %rcx, %r10 +or %rax, %r11 +mov 296(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $20, %rcx +shl $20, %rax +or %rcx, %r10 +or %rax, %r11 +mov 304(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $24, %rcx +shl $24, %rax +or %rcx, %r10 +or %rax, %r11 +mov 312(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $28, %rcx +shl $28, %rax +or %rcx, %r10 +or %rax, %r11 +mov 320(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $32, %rcx +shl $32, %rax +or %rcx, %r10 +or %rax, %r11 +mov 328(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $36, %rcx +shl $36, %rax +or %rcx, %r10 +or %rax, %r11 +mov 336(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $40, %rcx +shl $40, %rax +or %rcx, %r10 +or %rax, %r11 +mov 344(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $44, %rcx +shl $44, %rax +or %rcx, %r10 +or %rax, %r11 +mov 352(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $48, %rcx +shl $48, %rax +or %rcx, %r10 +or %rax, %r11 +mov 360(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $52, %rcx +shl $52, %rax +or %rcx, %r10 +or %rax, %r11 +mov 368(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $56, %rcx +shl $56, %rax +or %rcx, %r10 +or %rax, %r11 +mov 376(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $60, %rcx +shl $60, %rax +or %rcx, %r10 +or %rax, %r11 +mov %r10, 16(%rsp) +mov %r11, 112(%rsp) +mov $0, %r10 +mov $0, %r11 +mov 384(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +or %rcx, %r10 +or %rax, %r11 +mov 392(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $4, %rcx +shl $4, %rax +or %rcx, %r10 +or %rax, %r11 +mov 400(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $8, %rcx +shl $8, %rax +or %rcx, %r10 +or %rax, %r11 +mov 408(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $12, %rcx +shl $12, %rax +or %rcx, %r10 +or %rax, %r11 +mov 416(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $16, %rcx +shl $16, %rax +or %rcx, %r10 +or %rax, %r11 +mov 424(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $20, %rcx +shl $20, %rax +or %rcx, %r10 +or %rax, %r11 +mov 432(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $24, %rcx +shl $24, %rax +or %rcx, %r10 +or %rax, %r11 +mov 440(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $28, %rcx +shl $28, %rax +or %rcx, %r10 +or %rax, %r11 +mov 448(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $32, %rcx +shl $32, %rax +or %rcx, %r10 +or %rax, %r11 +mov 456(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $36, %rcx +shl $36, %rax +or %rcx, %r10 +or %rax, %r11 +mov 464(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $40, %rcx +shl $40, %rax +or %rcx, %r10 +or %rax, %r11 +mov 472(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $44, %rcx +shl $44, %rax +or %rcx, %r10 +or %rax, %r11 +mov 480(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $48, %rcx +shl $48, %rax +or %rcx, %r10 +or %rax, %r11 +mov 488(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $52, %rcx +shl $52, %rax +or %rcx, %r10 +or %rax, %r11 +mov 496(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $56, %rcx +shl $56, %rax +or %rcx, %r10 +or %rax, %r11 +mov 504(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $60, %rcx +shl $60, %rax +or %rcx, %r10 +or %rax, %r11 +mov %r10, 24(%rsp) +mov %r11, 120(%rsp) +mov $0, %r10 +mov $0, %r11 +mov 512(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +or %rcx, %r10 +or %rax, %r11 +mov 520(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $4, %rcx +shl $4, %rax +or %rcx, %r10 +or %rax, %r11 +mov 528(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $8, %rcx +shl $8, %rax +or %rcx, %r10 +or %rax, %r11 +mov 536(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $12, %rcx +shl $12, %rax +or %rcx, %r10 +or %rax, %r11 +mov 544(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $16, %rcx +shl $16, %rax +or %rcx, %r10 +or %rax, %r11 +mov 552(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $20, %rcx +shl $20, %rax +or %rcx, %r10 +or %rax, %r11 +mov 560(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $24, %rcx +shl $24, %rax +or %rcx, %r10 +or %rax, %r11 +mov 568(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $28, %rcx +shl $28, %rax +or %rcx, %r10 +or %rax, %r11 +mov 576(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $32, %rcx +shl $32, %rax +or %rcx, %r10 +or %rax, %r11 +mov 584(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $36, %rcx +shl $36, %rax +or %rcx, %r10 +or %rax, %r11 +mov 592(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $40, %rcx +shl $40, %rax +or %rcx, %r10 +or %rax, %r11 +mov 600(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $44, %rcx +shl $44, %rax +or %rcx, %r10 +or %rax, %r11 +mov 608(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $48, %rcx +shl $48, %rax +or %rcx, %r10 +or %rax, %r11 +mov 616(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $52, %rcx +shl $52, %rax +or %rcx, %r10 +or %rax, %r11 +mov 624(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $56, %rcx +shl $56, %rax +or %rcx, %r10 +or %rax, %r11 +mov 632(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $60, %rcx +shl $60, %rax +or %rcx, %r10 +or %rax, %r11 +mov %r10, 32(%rsp) +mov %r11, 128(%rsp) +mov $0, %r10 +mov $0, %r11 +mov 640(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +or %rcx, %r10 +or %rax, %r11 +mov 648(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $4, %rcx +shl $4, %rax +or %rcx, %r10 +or %rax, %r11 +mov 656(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $8, %rcx +shl $8, %rax +or %rcx, %r10 +or %rax, %r11 +mov 664(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $12, %rcx +shl $12, %rax +or %rcx, %r10 +or %rax, %r11 +mov 672(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $16, %rcx +shl $16, %rax +or %rcx, %r10 +or %rax, %r11 +mov 680(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $20, %rcx +shl $20, %rax +or %rcx, %r10 +or %rax, %r11 +mov 688(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $24, %rcx +shl $24, %rax +or %rcx, %r10 +or %rax, %r11 +mov 696(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $28, %rcx +shl $28, %rax +or %rcx, %r10 +or %rax, %r11 +mov 704(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $32, %rcx +shl $32, %rax +or %rcx, %r10 +or %rax, %r11 +mov 712(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $36, %rcx +shl $36, %rax +or %rcx, %r10 +or %rax, %r11 +mov 720(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $40, %rcx +shl $40, %rax +or %rcx, %r10 +or %rax, %r11 +mov 728(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $44, %rcx +shl $44, %rax +or %rcx, %r10 +or %rax, %r11 +mov 736(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $48, %rcx +shl $48, %rax +or %rcx, %r10 +or %rax, %r11 +mov 744(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $52, %rcx +shl $52, %rax +or %rcx, %r10 +or %rax, %r11 +mov 752(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $56, %rcx +shl $56, %rax +or %rcx, %r10 +or %rax, %r11 +mov 760(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $60, %rcx +shl $60, %rax +or %rcx, %r10 +or %rax, %r11 +mov %r10, 40(%rsp) +mov %r11, 136(%rsp) +mov $0, %r10 +mov $0, %r11 +mov 768(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +or %rcx, %r10 +or %rax, %r11 +mov 776(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $4, %rcx +shl $4, %rax +or %rcx, %r10 +or %rax, %r11 +mov 784(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $8, %rcx +shl $8, %rax +or %rcx, %r10 +or %rax, %r11 +mov 792(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $12, %rcx +shl $12, %rax +or %rcx, %r10 +or %rax, %r11 +mov 800(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $16, %rcx +shl $16, %rax +or %rcx, %r10 +or %rax, %r11 +mov 808(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $20, %rcx +shl $20, %rax +or %rcx, %r10 +or %rax, %r11 +mov 816(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $24, %rcx +shl $24, %rax +or %rcx, %r10 +or %rax, %r11 +mov 824(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $28, %rcx +shl $28, %rax +or %rcx, %r10 +or %rax, %r11 +mov 832(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $32, %rcx +shl $32, %rax +or %rcx, %r10 +or %rax, %r11 +mov 840(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $36, %rcx +shl $36, %rax +or %rcx, %r10 +or %rax, %r11 +mov 848(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $40, %rcx +shl $40, %rax +or %rcx, %r10 +or %rax, %r11 +mov 856(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $44, %rcx +shl $44, %rax +or %rcx, %r10 +or %rax, %r11 +mov 864(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $48, %rcx +shl $48, %rax +or %rcx, %r10 +or %rax, %r11 +mov 872(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $52, %rcx +shl $52, %rax +or %rcx, %r10 +or %rax, %r11 +mov 880(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $56, %rcx +shl $56, %rax +or %rcx, %r10 +or %rax, %r11 +mov 888(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $60, %rcx +shl $60, %rax +or %rcx, %r10 +or %rax, %r11 +mov %r10, 48(%rsp) +mov %r11, 144(%rsp) +mov $0, %r10 +mov $0, %r11 +mov 896(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +or %rcx, %r10 +or %rax, %r11 +mov 904(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $4, %rcx +shl $4, %rax +or %rcx, %r10 +or %rax, %r11 +mov 912(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $8, %rcx +shl $8, %rax +or %rcx, %r10 +or %rax, %r11 +mov 920(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $12, %rcx +shl $12, %rax +or %rcx, %r10 +or %rax, %r11 +mov 928(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $16, %rcx +shl $16, %rax +or %rcx, %r10 +or %rax, %r11 +mov 936(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $20, %rcx +shl $20, %rax +or %rcx, %r10 +or %rax, %r11 +mov 944(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $24, %rcx +shl $24, %rax +or %rcx, %r10 +or %rax, %r11 +mov 952(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $28, %rcx +shl $28, %rax +or %rcx, %r10 +or %rax, %r11 +mov 960(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $32, %rcx +shl $32, %rax +or %rcx, %r10 +or %rax, %r11 +mov 968(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $36, %rcx +shl $36, %rax +or %rcx, %r10 +or %rax, %r11 +mov 976(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $40, %rcx +shl $40, %rax +or %rcx, %r10 +or %rax, %r11 +mov 984(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $44, %rcx +shl $44, %rax +or %rcx, %r10 +or %rax, %r11 +mov 992(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $48, %rcx +shl $48, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1000(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $52, %rcx +shl $52, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1008(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $56, %rcx +shl $56, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1016(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $60, %rcx +shl $60, %rax +or %rcx, %r10 +or %rax, %r11 +mov %r10, 56(%rsp) +mov %r11, 152(%rsp) +mov $0, %r10 +mov $0, %r11 +mov 1024(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1032(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $4, %rcx +shl $4, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1040(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $8, %rcx +shl $8, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1048(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $12, %rcx +shl $12, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1056(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $16, %rcx +shl $16, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1064(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $20, %rcx +shl $20, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1072(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $24, %rcx +shl $24, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1080(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $28, %rcx +shl $28, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1088(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $32, %rcx +shl $32, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1096(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $36, %rcx +shl $36, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1104(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $40, %rcx +shl $40, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1112(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $44, %rcx +shl $44, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1120(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $48, %rcx +shl $48, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1128(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $52, %rcx +shl $52, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1136(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $56, %rcx +shl $56, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1144(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $60, %rcx +shl $60, %rax +or %rcx, %r10 +or %rax, %r11 +mov %r10, 64(%rsp) +mov %r11, 160(%rsp) +mov $0, %r10 +mov $0, %r11 +mov 1152(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1160(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $4, %rcx +shl $4, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1168(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $8, %rcx +shl $8, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1176(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $12, %rcx +shl $12, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1184(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $16, %rcx +shl $16, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1192(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $20, %rcx +shl $20, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1200(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $24, %rcx +shl $24, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1208(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $28, %rcx +shl $28, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1216(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $32, %rcx +shl $32, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1224(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $36, %rcx +shl $36, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1232(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $40, %rcx +shl $40, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1240(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $44, %rcx +shl $44, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1248(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $48, %rcx +shl $48, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1256(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $52, %rcx +shl $52, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1264(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $56, %rcx +shl $56, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1272(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $60, %rcx +shl $60, %rax +or %rcx, %r10 +or %rax, %r11 +mov %r10, 72(%rsp) +mov %r11, 168(%rsp) +mov $0, %r10 +mov $0, %r11 +mov 1280(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1288(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $4, %rcx +shl $4, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1296(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $8, %rcx +shl $8, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1304(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $12, %rcx +shl $12, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1312(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $16, %rcx +shl $16, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1320(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $20, %rcx +shl $20, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1328(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $24, %rcx +shl $24, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1336(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $28, %rcx +shl $28, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1344(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $32, %rcx +shl $32, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1352(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $36, %rcx +shl $36, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1360(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $40, %rcx +shl $40, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1368(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $44, %rcx +shl $44, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1376(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $48, %rcx +shl $48, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1384(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $52, %rcx +shl $52, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1392(%rsi), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $56, %rcx +shl $56, %rax +or %rcx, %r10 +or %rax, %r11 +mov 1400(%rsi), %rax +and low16(%rip), %rax +pext %r9, %rax, %rcx +pext %rdx, %rax, %rax +shl $60, %rcx +shl $60, %rax +or %rcx, %r10 +or %rax, %r11 +mov %r10, 80(%rsp) +mov %r11, 176(%rsp) +vpxor %ymm11, %ymm11, %ymm11 +vmovdqa %ymm11, 416(%rsp) +vmovdqa %ymm11, 448(%rsp) +vmovdqa %ymm11, 480(%rsp) +vmovdqa %ymm11, 512(%rsp) +vmovdqa %ymm11, 544(%rsp) +mov $1, %r9 +vmovq %r9, %xmm1 +vmovdqa %ymm1, 384(%rsp) +vmovdqa %ymm11, 576(%rsp) +vmovdqa %ymm11, 608(%rsp) +vmovdqa %ymm11, 640(%rsp) +vmovdqa %ymm11, 672(%rsp) +vmovdqa %ymm11, 704(%rsp) +vmovdqa %ymm11, 736(%rsp) +vmovdqa const_all_1s(%rip), %ymm2 +vmovdqa %ymm11, 288(%rsp) +vmovdqa %ymm11, 320(%rsp) +vmovdqa %ymm11, 352(%rsp) +vmovdqa %ymm2, 192(%rsp) +vmovdqa %ymm2, 224(%rsp) +vmovdqa const_all_but_high_67(%rip), %ymm2 +vmovdqa %ymm2, 256(%rsp) +mov $700, %r9 +mov $700, %r10 +mov $0, %rax +mov $1, %rdx +vmovdqa 0(%rsp), %ymm0 +vmovdqa 32(%rsp), %ymm1 +vmovdqa 64(%rsp), %ymm2 +vmovdqa 96(%rsp), %ymm3 +vmovdqa 128(%rsp), %ymm4 +vmovdqa 160(%rsp), %ymm5 +mov $256, %ecx +poly_s3_inv_loop_0: +vpand 192(%rsp), %ymm0, %ymm10 +vpand 288(%rsp), %ymm3, %ymm15 +vpxor %ymm10, %ymm15, %ymm10 +vpand 192(%rsp), %ymm3, %ymm11 +vpand 288(%rsp), %ymm0, %ymm15 +vpxor %ymm11, %ymm15, %ymm11 +vpand %ymm10, %ymm11, %ymm15 +vpxor %ymm15, %ymm10, %ymm10 +vpxor %ymm15, %ymm11, %ymm11 +vpand const_1(%rip), %ymm11, %ymm11 +vpand const_1(%rip), %ymm10, %ymm10 +vpxor %ymm15, %ymm15, %ymm15 +vpsubq %ymm11, %ymm15, %ymm11 +vpsubq %ymm10, %ymm15, %ymm10 +vbroadcastsd %xmm11, %ymm11 +vbroadcastsd %xmm10, %ymm10 +neg %rdx +vmovq %rdx, %xmm12 +vbroadcastsd %xmm12, %ymm12 +vpand %ymm11, %ymm12, %ymm11 +vpand %ymm10, %ymm12, %ymm10 +vpor %ymm11, %ymm10, %ymm9 +mov %r9, %r12 +sub %r10, %r12 +shr $63, %r12 +neg %r12 +vmovq %r12, %xmm13 +vbroadcastsd %xmm13, %ymm13 +vpand %ymm13, %ymm9, %ymm9 +vmovq %xmm9, %r12 +mov %r9, %r13 +xor %r10, %r13 +and %r12, %r13 +xor %r13, %r10 +xor %r13, %r9 +vpxor 192(%rsp), %ymm0, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm0, %ymm15, %ymm0 +vpxor 192(%rsp), %ymm15, %ymm7 +vmovdqa %ymm7, 192(%rsp) +vpxor 288(%rsp), %ymm3, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm3, %ymm15, %ymm3 +vpxor 288(%rsp), %ymm15, %ymm8 +vmovdqa %ymm8, 288(%rsp) +vpand %ymm7, %ymm11, %ymm13 +vpand %ymm8, %ymm10, %ymm15 +vpxor %ymm13, %ymm15, %ymm13 +vpand %ymm8, %ymm11, %ymm14 +vpand %ymm7, %ymm10, %ymm15 +vpxor %ymm14, %ymm15, %ymm14 +vpand %ymm13, %ymm14, %ymm15 +vpxor %ymm15, %ymm13, %ymm13 +vpxor %ymm15, %ymm14, %ymm14 +vpand %ymm0, %ymm13, %ymm15 +vpxor %ymm0, %ymm13, %ymm0 +vpand %ymm3, %ymm14, %ymm13 +vpxor %ymm3, %ymm14, %ymm3 +vpxor %ymm3, %ymm15, %ymm3 +vpor %ymm0, %ymm13, %ymm0 +vpandn %ymm3, %ymm13, %ymm3 +vpand %ymm0, %ymm3, %ymm13 +vpxor %ymm0, %ymm13, %ymm0 +vpxor %ymm3, %ymm13, %ymm3 +vpxor 224(%rsp), %ymm1, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm1, %ymm15, %ymm1 +vpxor 224(%rsp), %ymm15, %ymm7 +vmovdqa %ymm7, 224(%rsp) +vpxor 320(%rsp), %ymm4, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm4, %ymm15, %ymm4 +vpxor 320(%rsp), %ymm15, %ymm8 +vmovdqa %ymm8, 320(%rsp) +vpand %ymm7, %ymm11, %ymm13 +vpand %ymm8, %ymm10, %ymm15 +vpxor %ymm13, %ymm15, %ymm13 +vpand %ymm8, %ymm11, %ymm14 +vpand %ymm7, %ymm10, %ymm15 +vpxor %ymm14, %ymm15, %ymm14 +vpand %ymm13, %ymm14, %ymm15 +vpxor %ymm15, %ymm13, %ymm13 +vpxor %ymm15, %ymm14, %ymm14 +vpand %ymm1, %ymm13, %ymm15 +vpxor %ymm1, %ymm13, %ymm1 +vpand %ymm4, %ymm14, %ymm13 +vpxor %ymm4, %ymm14, %ymm4 +vpxor %ymm4, %ymm15, %ymm4 +vpor %ymm1, %ymm13, %ymm1 +vpandn %ymm4, %ymm13, %ymm4 +vpand %ymm1, %ymm4, %ymm13 +vpxor %ymm1, %ymm13, %ymm1 +vpxor %ymm4, %ymm13, %ymm4 +vpxor 256(%rsp), %ymm2, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm2, %ymm15, %ymm2 +vpxor 256(%rsp), %ymm15, %ymm7 +vmovdqa %ymm7, 256(%rsp) +vpxor 352(%rsp), %ymm5, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm5, %ymm15, %ymm5 +vpxor 352(%rsp), %ymm15, %ymm8 +vmovdqa %ymm8, 352(%rsp) +vpand %ymm7, %ymm11, %ymm13 +vpand %ymm8, %ymm10, %ymm15 +vpxor %ymm13, %ymm15, %ymm13 +vpand %ymm8, %ymm11, %ymm14 +vpand %ymm7, %ymm10, %ymm15 +vpxor %ymm14, %ymm15, %ymm14 +vpand %ymm13, %ymm14, %ymm15 +vpxor %ymm15, %ymm13, %ymm13 +vpxor %ymm15, %ymm14, %ymm14 +vpand %ymm2, %ymm13, %ymm15 +vpxor %ymm2, %ymm13, %ymm2 +vpand %ymm5, %ymm14, %ymm13 +vpxor %ymm5, %ymm14, %ymm5 +vpxor %ymm5, %ymm15, %ymm5 +vpor %ymm2, %ymm13, %ymm2 +vpandn %ymm5, %ymm13, %ymm5 +vpand %ymm2, %ymm5, %ymm13 +vpxor %ymm2, %ymm13, %ymm2 +vpxor %ymm5, %ymm13, %ymm5 +vmovdqa 384(%rsp), %ymm6 +vpxor 576(%rsp), %ymm6, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm6, %ymm15, %ymm6 +vpxor 576(%rsp), %ymm15, %ymm8 +vmovdqa %ymm8, 576(%rsp) +vmovdqa 480(%rsp), %ymm7 +vpxor 672(%rsp), %ymm7, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm7, %ymm15, %ymm7 +vpxor 672(%rsp), %ymm15, %ymm14 +vmovdqa %ymm14, 672(%rsp) +vpand %ymm8, %ymm11, %ymm13 +vpand %ymm14, %ymm10, %ymm15 +vpxor %ymm13, %ymm15, %ymm13 +vpand %ymm14, %ymm11, %ymm14 +vpand %ymm8, %ymm10, %ymm15 +vpxor %ymm14, %ymm15, %ymm14 +vpand %ymm13, %ymm14, %ymm15 +vpxor %ymm15, %ymm13, %ymm13 +vpxor %ymm15, %ymm14, %ymm14 +vpand %ymm6, %ymm13, %ymm15 +vpxor %ymm6, %ymm13, %ymm6 +vpand %ymm7, %ymm14, %ymm13 +vpxor %ymm7, %ymm14, %ymm7 +vpxor %ymm7, %ymm15, %ymm7 +vpor %ymm6, %ymm13, %ymm6 +vpandn %ymm7, %ymm13, %ymm7 +vpand %ymm6, %ymm7, %ymm13 +vpxor %ymm6, %ymm13, %ymm6 +vpxor %ymm7, %ymm13, %ymm7 +vmovdqa %ymm6, 384(%rsp) +vmovdqa %ymm7, 480(%rsp) +vmovdqa 576(%rsp), %ymm6 +vpsllq $1, %ymm6, %ymm15 +vpsrlq $63, %ymm6, %ymm14 +vpermq $147, %ymm14, %ymm7 +vpxor %ymm15, %ymm7, %ymm7 +vpand const_all_but_1(%rip), %ymm7, %ymm7 +vpxor %ymm6, %ymm7, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm6, %ymm15, %ymm6 +vmovdqa %ymm6, 576(%rsp) +vpsrlq $1, %ymm2, %ymm15 +vpsllq $63, %ymm2, %ymm14 +vpermq $57, %ymm14, %ymm8 +vpxor %ymm15, %ymm8, %ymm8 +vpand const_high_1(%rip), %ymm8, %ymm13 +vpand const_all_but_high_67(%rip), %ymm8, %ymm8 +vpsrlq $1, %ymm1, %ymm15 +vpsllq $63, %ymm1, %ymm14 +vpermq $57, %ymm14, %ymm7 +vpxor %ymm15, %ymm7, %ymm7 +vpand const_high_1(%rip), %ymm7, %ymm15 +vpand const_all_but_high_1(%rip), %ymm7, %ymm7 +vpxor %ymm13, %ymm7, %ymm7 +vpsrlq $1, %ymm0, %ymm13 +vpsllq $63, %ymm0, %ymm14 +vpermq $57, %ymm14, %ymm6 +vpxor %ymm13, %ymm6, %ymm6 +vpand const_all_but_high_1(%rip), %ymm6, %ymm6 +vpxor %ymm15, %ymm6, %ymm6 +vpxor %ymm0, %ymm6, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm0, %ymm15, %ymm0 +vpxor %ymm1, %ymm7, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm1, %ymm15, %ymm1 +vpxor %ymm2, %ymm8, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm2, %ymm15, %ymm2 +vmovdqa 672(%rsp), %ymm6 +vpsllq $1, %ymm6, %ymm15 +vpsrlq $63, %ymm6, %ymm14 +vpermq $147, %ymm14, %ymm7 +vpxor %ymm15, %ymm7, %ymm7 +vpand const_all_but_1(%rip), %ymm7, %ymm7 +vpxor %ymm6, %ymm7, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm6, %ymm15, %ymm6 +vmovdqa %ymm6, 672(%rsp) +vpsrlq $1, %ymm5, %ymm15 +vpsllq $63, %ymm5, %ymm14 +vpermq $57, %ymm14, %ymm8 +vpxor %ymm15, %ymm8, %ymm8 +vpand const_high_1(%rip), %ymm8, %ymm13 +vpand const_all_but_high_67(%rip), %ymm8, %ymm8 +vpsrlq $1, %ymm4, %ymm15 +vpsllq $63, %ymm4, %ymm14 +vpermq $57, %ymm14, %ymm7 +vpxor %ymm15, %ymm7, %ymm7 +vpand const_high_1(%rip), %ymm7, %ymm15 +vpand const_all_but_high_1(%rip), %ymm7, %ymm7 +vpxor %ymm13, %ymm7, %ymm7 +vpsrlq $1, %ymm3, %ymm13 +vpsllq $63, %ymm3, %ymm14 +vpermq $57, %ymm14, %ymm6 +vpxor %ymm13, %ymm6, %ymm6 +vpand const_all_but_high_1(%rip), %ymm6, %ymm6 +vpxor %ymm15, %ymm6, %ymm6 +vpxor %ymm3, %ymm6, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm3, %ymm15, %ymm3 +vpxor %ymm4, %ymm7, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm4, %ymm15, %ymm4 +vpxor %ymm5, %ymm8, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm5, %ymm15, %ymm5 +add %rdx, %r9 +sub %rdx, %rax +mov %r9, %rdx +sub $1, %rdx +shr $63, %rdx +not %rdx +and $1, %rdx +dec %ecx +jns poly_s3_inv_loop_0 +mov $256, %ecx +poly_s3_inv_loop_1: +vpand 192(%rsp), %ymm0, %ymm10 +vpand 288(%rsp), %ymm3, %ymm15 +vpxor %ymm10, %ymm15, %ymm10 +vpand 192(%rsp), %ymm3, %ymm11 +vpand 288(%rsp), %ymm0, %ymm15 +vpxor %ymm11, %ymm15, %ymm11 +vpand %ymm10, %ymm11, %ymm15 +vpxor %ymm15, %ymm10, %ymm10 +vpxor %ymm15, %ymm11, %ymm11 +vpand const_1(%rip), %ymm11, %ymm11 +vpand const_1(%rip), %ymm10, %ymm10 +vpxor %ymm15, %ymm15, %ymm15 +vpsubq %ymm11, %ymm15, %ymm11 +vpsubq %ymm10, %ymm15, %ymm10 +vbroadcastsd %xmm11, %ymm11 +vbroadcastsd %xmm10, %ymm10 +neg %rdx +vmovq %rdx, %xmm12 +vbroadcastsd %xmm12, %ymm12 +vpand %ymm11, %ymm12, %ymm11 +vpand %ymm10, %ymm12, %ymm10 +vpor %ymm11, %ymm10, %ymm9 +mov %r9, %r12 +sub %r10, %r12 +shr $63, %r12 +neg %r12 +vmovq %r12, %xmm13 +vbroadcastsd %xmm13, %ymm13 +vpand %ymm13, %ymm9, %ymm9 +vmovq %xmm9, %r12 +mov %r9, %r13 +xor %r10, %r13 +and %r12, %r13 +xor %r13, %r10 +xor %r13, %r9 +vpxor 192(%rsp), %ymm0, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm0, %ymm15, %ymm0 +vpxor 192(%rsp), %ymm15, %ymm7 +vmovdqa %ymm7, 192(%rsp) +vpxor 288(%rsp), %ymm3, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm3, %ymm15, %ymm3 +vpxor 288(%rsp), %ymm15, %ymm8 +vmovdqa %ymm8, 288(%rsp) +vpand %ymm7, %ymm11, %ymm13 +vpand %ymm8, %ymm10, %ymm15 +vpxor %ymm13, %ymm15, %ymm13 +vpand %ymm8, %ymm11, %ymm14 +vpand %ymm7, %ymm10, %ymm15 +vpxor %ymm14, %ymm15, %ymm14 +vpand %ymm13, %ymm14, %ymm15 +vpxor %ymm15, %ymm13, %ymm13 +vpxor %ymm15, %ymm14, %ymm14 +vpand %ymm0, %ymm13, %ymm15 +vpxor %ymm0, %ymm13, %ymm0 +vpand %ymm3, %ymm14, %ymm13 +vpxor %ymm3, %ymm14, %ymm3 +vpxor %ymm3, %ymm15, %ymm3 +vpor %ymm0, %ymm13, %ymm0 +vpandn %ymm3, %ymm13, %ymm3 +vpand %ymm0, %ymm3, %ymm13 +vpxor %ymm0, %ymm13, %ymm0 +vpxor %ymm3, %ymm13, %ymm3 +vpxor 224(%rsp), %ymm1, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm1, %ymm15, %ymm1 +vpxor 224(%rsp), %ymm15, %ymm7 +vmovdqa %ymm7, 224(%rsp) +vpxor 320(%rsp), %ymm4, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm4, %ymm15, %ymm4 +vpxor 320(%rsp), %ymm15, %ymm8 +vmovdqa %ymm8, 320(%rsp) +vpand %ymm7, %ymm11, %ymm13 +vpand %ymm8, %ymm10, %ymm15 +vpxor %ymm13, %ymm15, %ymm13 +vpand %ymm8, %ymm11, %ymm14 +vpand %ymm7, %ymm10, %ymm15 +vpxor %ymm14, %ymm15, %ymm14 +vpand %ymm13, %ymm14, %ymm15 +vpxor %ymm15, %ymm13, %ymm13 +vpxor %ymm15, %ymm14, %ymm14 +vpand %ymm1, %ymm13, %ymm15 +vpxor %ymm1, %ymm13, %ymm1 +vpand %ymm4, %ymm14, %ymm13 +vpxor %ymm4, %ymm14, %ymm4 +vpxor %ymm4, %ymm15, %ymm4 +vpor %ymm1, %ymm13, %ymm1 +vpandn %ymm4, %ymm13, %ymm4 +vpand %ymm1, %ymm4, %ymm13 +vpxor %ymm1, %ymm13, %ymm1 +vpxor %ymm4, %ymm13, %ymm4 +vpxor 256(%rsp), %ymm2, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm2, %ymm15, %ymm2 +vpxor 256(%rsp), %ymm15, %ymm7 +vmovdqa %ymm7, 256(%rsp) +vpxor 352(%rsp), %ymm5, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm5, %ymm15, %ymm5 +vpxor 352(%rsp), %ymm15, %ymm8 +vmovdqa %ymm8, 352(%rsp) +vpand %ymm7, %ymm11, %ymm13 +vpand %ymm8, %ymm10, %ymm15 +vpxor %ymm13, %ymm15, %ymm13 +vpand %ymm8, %ymm11, %ymm14 +vpand %ymm7, %ymm10, %ymm15 +vpxor %ymm14, %ymm15, %ymm14 +vpand %ymm13, %ymm14, %ymm15 +vpxor %ymm15, %ymm13, %ymm13 +vpxor %ymm15, %ymm14, %ymm14 +vpand %ymm2, %ymm13, %ymm15 +vpxor %ymm2, %ymm13, %ymm2 +vpand %ymm5, %ymm14, %ymm13 +vpxor %ymm5, %ymm14, %ymm5 +vpxor %ymm5, %ymm15, %ymm5 +vpor %ymm2, %ymm13, %ymm2 +vpandn %ymm5, %ymm13, %ymm5 +vpand %ymm2, %ymm5, %ymm13 +vpxor %ymm2, %ymm13, %ymm2 +vpxor %ymm5, %ymm13, %ymm5 +vmovdqa 384(%rsp), %ymm6 +vpxor 576(%rsp), %ymm6, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm6, %ymm15, %ymm6 +vpxor 576(%rsp), %ymm15, %ymm8 +vmovdqa %ymm8, 576(%rsp) +vmovdqa 480(%rsp), %ymm7 +vpxor 672(%rsp), %ymm7, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm7, %ymm15, %ymm7 +vpxor 672(%rsp), %ymm15, %ymm14 +vmovdqa %ymm14, 672(%rsp) +vpand %ymm8, %ymm11, %ymm13 +vpand %ymm14, %ymm10, %ymm15 +vpxor %ymm13, %ymm15, %ymm13 +vpand %ymm14, %ymm11, %ymm14 +vpand %ymm8, %ymm10, %ymm15 +vpxor %ymm14, %ymm15, %ymm14 +vpand %ymm13, %ymm14, %ymm15 +vpxor %ymm15, %ymm13, %ymm13 +vpxor %ymm15, %ymm14, %ymm14 +vpand %ymm6, %ymm13, %ymm15 +vpxor %ymm6, %ymm13, %ymm6 +vpand %ymm7, %ymm14, %ymm13 +vpxor %ymm7, %ymm14, %ymm7 +vpxor %ymm7, %ymm15, %ymm7 +vpor %ymm6, %ymm13, %ymm6 +vpandn %ymm7, %ymm13, %ymm7 +vpand %ymm6, %ymm7, %ymm13 +vpxor %ymm6, %ymm13, %ymm6 +vpxor %ymm7, %ymm13, %ymm7 +vmovdqa %ymm6, 384(%rsp) +vmovdqa %ymm7, 480(%rsp) +vmovdqa 416(%rsp), %ymm6 +vpxor 608(%rsp), %ymm6, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm6, %ymm15, %ymm6 +vpxor 608(%rsp), %ymm15, %ymm8 +vmovdqa %ymm8, 608(%rsp) +vmovdqa 512(%rsp), %ymm7 +vpxor 704(%rsp), %ymm7, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm7, %ymm15, %ymm7 +vpxor 704(%rsp), %ymm15, %ymm14 +vmovdqa %ymm14, 704(%rsp) +vpand %ymm8, %ymm11, %ymm13 +vpand %ymm14, %ymm10, %ymm15 +vpxor %ymm13, %ymm15, %ymm13 +vpand %ymm14, %ymm11, %ymm14 +vpand %ymm8, %ymm10, %ymm15 +vpxor %ymm14, %ymm15, %ymm14 +vpand %ymm13, %ymm14, %ymm15 +vpxor %ymm15, %ymm13, %ymm13 +vpxor %ymm15, %ymm14, %ymm14 +vpand %ymm6, %ymm13, %ymm15 +vpxor %ymm6, %ymm13, %ymm6 +vpand %ymm7, %ymm14, %ymm13 +vpxor %ymm7, %ymm14, %ymm7 +vpxor %ymm7, %ymm15, %ymm7 +vpor %ymm6, %ymm13, %ymm6 +vpandn %ymm7, %ymm13, %ymm7 +vpand %ymm6, %ymm7, %ymm13 +vpxor %ymm6, %ymm13, %ymm6 +vpxor %ymm7, %ymm13, %ymm7 +vmovdqa %ymm6, 416(%rsp) +vmovdqa %ymm7, 512(%rsp) +vmovdqa 576(%rsp), %ymm6 +vmovdqa 608(%rsp), %ymm8 +vpsllq $1, %ymm6, %ymm15 +vpsrlq $63, %ymm6, %ymm14 +vpermq $147, %ymm14, %ymm7 +vpxor %ymm15, %ymm7, %ymm7 +vpand const_1(%rip), %ymm7, %ymm13 +vpand const_all_but_1(%rip), %ymm7, %ymm7 +vpsllq $1, %ymm8, %ymm15 +vpsrlq $63, %ymm8, %ymm14 +vpermq $147, %ymm14, %ymm9 +vpxor %ymm15, %ymm9, %ymm9 +vpand const_1(%rip), %ymm9, %ymm15 +vpand const_all_but_1(%rip), %ymm9, %ymm9 +vpxor %ymm13, %ymm9, %ymm9 +vpxor %ymm6, %ymm7, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm6, %ymm15, %ymm6 +vmovdqa %ymm6, 576(%rsp) +vpxor %ymm8, %ymm9, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm8, %ymm15, %ymm8 +vmovdqa %ymm8, 608(%rsp) +vpsrlq $1, %ymm2, %ymm15 +vpsllq $63, %ymm2, %ymm14 +vpermq $57, %ymm14, %ymm8 +vpxor %ymm15, %ymm8, %ymm8 +vpand const_high_1(%rip), %ymm8, %ymm13 +vpand const_all_but_high_67(%rip), %ymm8, %ymm8 +vpsrlq $1, %ymm1, %ymm15 +vpsllq $63, %ymm1, %ymm14 +vpermq $57, %ymm14, %ymm7 +vpxor %ymm15, %ymm7, %ymm7 +vpand const_high_1(%rip), %ymm7, %ymm15 +vpand const_all_but_high_1(%rip), %ymm7, %ymm7 +vpxor %ymm13, %ymm7, %ymm7 +vpsrlq $1, %ymm0, %ymm13 +vpsllq $63, %ymm0, %ymm14 +vpermq $57, %ymm14, %ymm6 +vpxor %ymm13, %ymm6, %ymm6 +vpand const_all_but_high_1(%rip), %ymm6, %ymm6 +vpxor %ymm15, %ymm6, %ymm6 +vpxor %ymm0, %ymm6, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm0, %ymm15, %ymm0 +vpxor %ymm1, %ymm7, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm1, %ymm15, %ymm1 +vpxor %ymm2, %ymm8, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm2, %ymm15, %ymm2 +vmovdqa 672(%rsp), %ymm6 +vmovdqa 704(%rsp), %ymm8 +vpsllq $1, %ymm6, %ymm15 +vpsrlq $63, %ymm6, %ymm14 +vpermq $147, %ymm14, %ymm7 +vpxor %ymm15, %ymm7, %ymm7 +vpand const_1(%rip), %ymm7, %ymm13 +vpand const_all_but_1(%rip), %ymm7, %ymm7 +vpsllq $1, %ymm8, %ymm15 +vpsrlq $63, %ymm8, %ymm14 +vpermq $147, %ymm14, %ymm9 +vpxor %ymm15, %ymm9, %ymm9 +vpand const_1(%rip), %ymm9, %ymm15 +vpand const_all_but_1(%rip), %ymm9, %ymm9 +vpxor %ymm13, %ymm9, %ymm9 +vpxor %ymm6, %ymm7, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm6, %ymm15, %ymm6 +vmovdqa %ymm6, 672(%rsp) +vpxor %ymm8, %ymm9, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm8, %ymm15, %ymm8 +vmovdqa %ymm8, 704(%rsp) +vpsrlq $1, %ymm5, %ymm15 +vpsllq $63, %ymm5, %ymm14 +vpermq $57, %ymm14, %ymm8 +vpxor %ymm15, %ymm8, %ymm8 +vpand const_high_1(%rip), %ymm8, %ymm13 +vpand const_all_but_high_67(%rip), %ymm8, %ymm8 +vpsrlq $1, %ymm4, %ymm15 +vpsllq $63, %ymm4, %ymm14 +vpermq $57, %ymm14, %ymm7 +vpxor %ymm15, %ymm7, %ymm7 +vpand const_high_1(%rip), %ymm7, %ymm15 +vpand const_all_but_high_1(%rip), %ymm7, %ymm7 +vpxor %ymm13, %ymm7, %ymm7 +vpsrlq $1, %ymm3, %ymm13 +vpsllq $63, %ymm3, %ymm14 +vpermq $57, %ymm14, %ymm6 +vpxor %ymm13, %ymm6, %ymm6 +vpand const_all_but_high_1(%rip), %ymm6, %ymm6 +vpxor %ymm15, %ymm6, %ymm6 +vpxor %ymm3, %ymm6, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm3, %ymm15, %ymm3 +vpxor %ymm4, %ymm7, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm4, %ymm15, %ymm4 +vpxor %ymm5, %ymm8, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm5, %ymm15, %ymm5 +add %rdx, %r9 +sub %rdx, %rax +mov %r9, %rdx +sub $1, %rdx +shr $63, %rdx +not %rdx +and $1, %rdx +dec %ecx +jns poly_s3_inv_loop_1 +mov $376, %ecx +poly_s3_inv_loop_2: +vpand 192(%rsp), %ymm0, %ymm10 +vpand 288(%rsp), %ymm3, %ymm15 +vpxor %ymm10, %ymm15, %ymm10 +vpand 192(%rsp), %ymm3, %ymm11 +vpand 288(%rsp), %ymm0, %ymm15 +vpxor %ymm11, %ymm15, %ymm11 +vpand %ymm10, %ymm11, %ymm15 +vpxor %ymm15, %ymm10, %ymm10 +vpxor %ymm15, %ymm11, %ymm11 +vpand const_1(%rip), %ymm11, %ymm11 +vpand const_1(%rip), %ymm10, %ymm10 +vpxor %ymm15, %ymm15, %ymm15 +vpsubq %ymm11, %ymm15, %ymm11 +vpsubq %ymm10, %ymm15, %ymm10 +vbroadcastsd %xmm11, %ymm11 +vbroadcastsd %xmm10, %ymm10 +neg %rdx +vmovq %rdx, %xmm12 +vbroadcastsd %xmm12, %ymm12 +vpand %ymm11, %ymm12, %ymm11 +vpand %ymm10, %ymm12, %ymm10 +vpor %ymm11, %ymm10, %ymm9 +mov %r9, %r12 +sub %r10, %r12 +shr $63, %r12 +neg %r12 +vmovq %r12, %xmm13 +vbroadcastsd %xmm13, %ymm13 +vpand %ymm13, %ymm9, %ymm9 +vmovq %xmm9, %r12 +mov %r9, %r13 +xor %r10, %r13 +and %r12, %r13 +xor %r13, %r10 +xor %r13, %r9 +vpxor 192(%rsp), %ymm0, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm0, %ymm15, %ymm0 +vpxor 192(%rsp), %ymm15, %ymm7 +vmovdqa %ymm7, 192(%rsp) +vpxor 288(%rsp), %ymm3, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm3, %ymm15, %ymm3 +vpxor 288(%rsp), %ymm15, %ymm8 +vmovdqa %ymm8, 288(%rsp) +vpand %ymm7, %ymm11, %ymm13 +vpand %ymm8, %ymm10, %ymm15 +vpxor %ymm13, %ymm15, %ymm13 +vpand %ymm8, %ymm11, %ymm14 +vpand %ymm7, %ymm10, %ymm15 +vpxor %ymm14, %ymm15, %ymm14 +vpand %ymm13, %ymm14, %ymm15 +vpxor %ymm15, %ymm13, %ymm13 +vpxor %ymm15, %ymm14, %ymm14 +vpand %ymm0, %ymm13, %ymm15 +vpxor %ymm0, %ymm13, %ymm0 +vpand %ymm3, %ymm14, %ymm13 +vpxor %ymm3, %ymm14, %ymm3 +vpxor %ymm3, %ymm15, %ymm3 +vpor %ymm0, %ymm13, %ymm0 +vpandn %ymm3, %ymm13, %ymm3 +vpand %ymm0, %ymm3, %ymm13 +vpxor %ymm0, %ymm13, %ymm0 +vpxor %ymm3, %ymm13, %ymm3 +vpxor 224(%rsp), %ymm1, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm1, %ymm15, %ymm1 +vpxor 224(%rsp), %ymm15, %ymm7 +vmovdqa %ymm7, 224(%rsp) +vpxor 320(%rsp), %ymm4, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm4, %ymm15, %ymm4 +vpxor 320(%rsp), %ymm15, %ymm8 +vmovdqa %ymm8, 320(%rsp) +vpand %ymm7, %ymm11, %ymm13 +vpand %ymm8, %ymm10, %ymm15 +vpxor %ymm13, %ymm15, %ymm13 +vpand %ymm8, %ymm11, %ymm14 +vpand %ymm7, %ymm10, %ymm15 +vpxor %ymm14, %ymm15, %ymm14 +vpand %ymm13, %ymm14, %ymm15 +vpxor %ymm15, %ymm13, %ymm13 +vpxor %ymm15, %ymm14, %ymm14 +vpand %ymm1, %ymm13, %ymm15 +vpxor %ymm1, %ymm13, %ymm1 +vpand %ymm4, %ymm14, %ymm13 +vpxor %ymm4, %ymm14, %ymm4 +vpxor %ymm4, %ymm15, %ymm4 +vpor %ymm1, %ymm13, %ymm1 +vpandn %ymm4, %ymm13, %ymm4 +vpand %ymm1, %ymm4, %ymm13 +vpxor %ymm1, %ymm13, %ymm1 +vpxor %ymm4, %ymm13, %ymm4 +vpxor 256(%rsp), %ymm2, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm2, %ymm15, %ymm2 +vpxor 256(%rsp), %ymm15, %ymm7 +vmovdqa %ymm7, 256(%rsp) +vpxor 352(%rsp), %ymm5, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm5, %ymm15, %ymm5 +vpxor 352(%rsp), %ymm15, %ymm8 +vmovdqa %ymm8, 352(%rsp) +vpand %ymm7, %ymm11, %ymm13 +vpand %ymm8, %ymm10, %ymm15 +vpxor %ymm13, %ymm15, %ymm13 +vpand %ymm8, %ymm11, %ymm14 +vpand %ymm7, %ymm10, %ymm15 +vpxor %ymm14, %ymm15, %ymm14 +vpand %ymm13, %ymm14, %ymm15 +vpxor %ymm15, %ymm13, %ymm13 +vpxor %ymm15, %ymm14, %ymm14 +vpand %ymm2, %ymm13, %ymm15 +vpxor %ymm2, %ymm13, %ymm2 +vpand %ymm5, %ymm14, %ymm13 +vpxor %ymm5, %ymm14, %ymm5 +vpxor %ymm5, %ymm15, %ymm5 +vpor %ymm2, %ymm13, %ymm2 +vpandn %ymm5, %ymm13, %ymm5 +vpand %ymm2, %ymm5, %ymm13 +vpxor %ymm2, %ymm13, %ymm2 +vpxor %ymm5, %ymm13, %ymm5 +vmovdqa 384(%rsp), %ymm6 +vpxor 576(%rsp), %ymm6, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm6, %ymm15, %ymm6 +vpxor 576(%rsp), %ymm15, %ymm8 +vmovdqa %ymm8, 576(%rsp) +vmovdqa 480(%rsp), %ymm7 +vpxor 672(%rsp), %ymm7, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm7, %ymm15, %ymm7 +vpxor 672(%rsp), %ymm15, %ymm14 +vmovdqa %ymm14, 672(%rsp) +vpand %ymm8, %ymm11, %ymm13 +vpand %ymm14, %ymm10, %ymm15 +vpxor %ymm13, %ymm15, %ymm13 +vpand %ymm14, %ymm11, %ymm14 +vpand %ymm8, %ymm10, %ymm15 +vpxor %ymm14, %ymm15, %ymm14 +vpand %ymm13, %ymm14, %ymm15 +vpxor %ymm15, %ymm13, %ymm13 +vpxor %ymm15, %ymm14, %ymm14 +vpand %ymm6, %ymm13, %ymm15 +vpxor %ymm6, %ymm13, %ymm6 +vpand %ymm7, %ymm14, %ymm13 +vpxor %ymm7, %ymm14, %ymm7 +vpxor %ymm7, %ymm15, %ymm7 +vpor %ymm6, %ymm13, %ymm6 +vpandn %ymm7, %ymm13, %ymm7 +vpand %ymm6, %ymm7, %ymm13 +vpxor %ymm6, %ymm13, %ymm6 +vpxor %ymm7, %ymm13, %ymm7 +vmovdqa %ymm6, 384(%rsp) +vmovdqa %ymm7, 480(%rsp) +vmovdqa 416(%rsp), %ymm6 +vpxor 608(%rsp), %ymm6, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm6, %ymm15, %ymm6 +vpxor 608(%rsp), %ymm15, %ymm8 +vmovdqa %ymm8, 608(%rsp) +vmovdqa 512(%rsp), %ymm7 +vpxor 704(%rsp), %ymm7, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm7, %ymm15, %ymm7 +vpxor 704(%rsp), %ymm15, %ymm14 +vmovdqa %ymm14, 704(%rsp) +vpand %ymm8, %ymm11, %ymm13 +vpand %ymm14, %ymm10, %ymm15 +vpxor %ymm13, %ymm15, %ymm13 +vpand %ymm14, %ymm11, %ymm14 +vpand %ymm8, %ymm10, %ymm15 +vpxor %ymm14, %ymm15, %ymm14 +vpand %ymm13, %ymm14, %ymm15 +vpxor %ymm15, %ymm13, %ymm13 +vpxor %ymm15, %ymm14, %ymm14 +vpand %ymm6, %ymm13, %ymm15 +vpxor %ymm6, %ymm13, %ymm6 +vpand %ymm7, %ymm14, %ymm13 +vpxor %ymm7, %ymm14, %ymm7 +vpxor %ymm7, %ymm15, %ymm7 +vpor %ymm6, %ymm13, %ymm6 +vpandn %ymm7, %ymm13, %ymm7 +vpand %ymm6, %ymm7, %ymm13 +vpxor %ymm6, %ymm13, %ymm6 +vpxor %ymm7, %ymm13, %ymm7 +vmovdqa %ymm6, 416(%rsp) +vmovdqa %ymm7, 512(%rsp) +vmovdqa 448(%rsp), %ymm6 +vpxor 640(%rsp), %ymm6, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm6, %ymm15, %ymm6 +vpxor 640(%rsp), %ymm15, %ymm8 +vmovdqa %ymm8, 640(%rsp) +vmovdqa 544(%rsp), %ymm7 +vpxor 736(%rsp), %ymm7, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm7, %ymm15, %ymm7 +vpxor 736(%rsp), %ymm15, %ymm14 +vmovdqa %ymm14, 736(%rsp) +vpand %ymm8, %ymm11, %ymm13 +vpand %ymm14, %ymm10, %ymm15 +vpxor %ymm13, %ymm15, %ymm13 +vpand %ymm14, %ymm11, %ymm14 +vpand %ymm8, %ymm10, %ymm15 +vpxor %ymm14, %ymm15, %ymm14 +vpand %ymm13, %ymm14, %ymm15 +vpxor %ymm15, %ymm13, %ymm13 +vpxor %ymm15, %ymm14, %ymm14 +vpand %ymm6, %ymm13, %ymm15 +vpxor %ymm6, %ymm13, %ymm6 +vpand %ymm7, %ymm14, %ymm13 +vpxor %ymm7, %ymm14, %ymm7 +vpxor %ymm7, %ymm15, %ymm7 +vpor %ymm6, %ymm13, %ymm6 +vpandn %ymm7, %ymm13, %ymm7 +vpand %ymm6, %ymm7, %ymm13 +vpxor %ymm6, %ymm13, %ymm6 +vpxor %ymm7, %ymm13, %ymm7 +vmovdqa %ymm6, 448(%rsp) +vmovdqa %ymm7, 544(%rsp) +vmovdqa 576(%rsp), %ymm6 +vmovdqa 608(%rsp), %ymm8 +vmovdqa 640(%rsp), %ymm10 +vpsllq $1, %ymm6, %ymm15 +vpsrlq $63, %ymm6, %ymm14 +vpermq $147, %ymm14, %ymm7 +vpxor %ymm15, %ymm7, %ymm7 +vpand const_1(%rip), %ymm7, %ymm13 +vpand const_all_but_1(%rip), %ymm7, %ymm7 +vpsllq $1, %ymm8, %ymm15 +vpsrlq $63, %ymm8, %ymm14 +vpermq $147, %ymm14, %ymm9 +vpxor %ymm15, %ymm9, %ymm9 +vpand const_1(%rip), %ymm9, %ymm15 +vpand const_all_but_1(%rip), %ymm9, %ymm9 +vpxor %ymm13, %ymm9, %ymm9 +vpsllq $1, %ymm10, %ymm13 +vpsrlq $63, %ymm10, %ymm14 +vpermq $147, %ymm14, %ymm11 +vpxor %ymm13, %ymm11, %ymm11 +vpand const_all_but_1(%rip), %ymm11, %ymm11 +vpxor %ymm15, %ymm11, %ymm11 +vpxor %ymm6, %ymm7, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm6, %ymm15, %ymm6 +vmovdqa %ymm6, 576(%rsp) +vpxor %ymm8, %ymm9, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm8, %ymm15, %ymm8 +vmovdqa %ymm8, 608(%rsp) +vpxor %ymm10, %ymm11, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm10, %ymm15, %ymm10 +vmovdqa %ymm10, 640(%rsp) +vpsrlq $1, %ymm2, %ymm15 +vpsllq $63, %ymm2, %ymm14 +vpermq $57, %ymm14, %ymm8 +vpxor %ymm15, %ymm8, %ymm8 +vpand const_high_1(%rip), %ymm8, %ymm13 +vpand const_all_but_high_67(%rip), %ymm8, %ymm8 +vpsrlq $1, %ymm1, %ymm15 +vpsllq $63, %ymm1, %ymm14 +vpermq $57, %ymm14, %ymm7 +vpxor %ymm15, %ymm7, %ymm7 +vpand const_high_1(%rip), %ymm7, %ymm15 +vpand const_all_but_high_1(%rip), %ymm7, %ymm7 +vpxor %ymm13, %ymm7, %ymm7 +vpsrlq $1, %ymm0, %ymm13 +vpsllq $63, %ymm0, %ymm14 +vpermq $57, %ymm14, %ymm6 +vpxor %ymm13, %ymm6, %ymm6 +vpand const_all_but_high_1(%rip), %ymm6, %ymm6 +vpxor %ymm15, %ymm6, %ymm6 +vpxor %ymm0, %ymm6, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm0, %ymm15, %ymm0 +vpxor %ymm1, %ymm7, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm1, %ymm15, %ymm1 +vpxor %ymm2, %ymm8, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm2, %ymm15, %ymm2 +vmovdqa 672(%rsp), %ymm6 +vmovdqa 704(%rsp), %ymm8 +vmovdqa 736(%rsp), %ymm10 +vpsllq $1, %ymm6, %ymm15 +vpsrlq $63, %ymm6, %ymm14 +vpermq $147, %ymm14, %ymm7 +vpxor %ymm15, %ymm7, %ymm7 +vpand const_1(%rip), %ymm7, %ymm13 +vpand const_all_but_1(%rip), %ymm7, %ymm7 +vpsllq $1, %ymm8, %ymm15 +vpsrlq $63, %ymm8, %ymm14 +vpermq $147, %ymm14, %ymm9 +vpxor %ymm15, %ymm9, %ymm9 +vpand const_1(%rip), %ymm9, %ymm15 +vpand const_all_but_1(%rip), %ymm9, %ymm9 +vpxor %ymm13, %ymm9, %ymm9 +vpsllq $1, %ymm10, %ymm13 +vpsrlq $63, %ymm10, %ymm14 +vpermq $147, %ymm14, %ymm11 +vpxor %ymm13, %ymm11, %ymm11 +vpand const_all_but_1(%rip), %ymm11, %ymm11 +vpxor %ymm15, %ymm11, %ymm11 +vpxor %ymm6, %ymm7, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm6, %ymm15, %ymm6 +vmovdqa %ymm6, 672(%rsp) +vpxor %ymm8, %ymm9, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm8, %ymm15, %ymm8 +vmovdqa %ymm8, 704(%rsp) +vpxor %ymm10, %ymm11, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm10, %ymm15, %ymm10 +vmovdqa %ymm10, 736(%rsp) +vpsrlq $1, %ymm5, %ymm15 +vpsllq $63, %ymm5, %ymm14 +vpermq $57, %ymm14, %ymm8 +vpxor %ymm15, %ymm8, %ymm8 +vpand const_high_1(%rip), %ymm8, %ymm13 +vpand const_all_but_high_67(%rip), %ymm8, %ymm8 +vpsrlq $1, %ymm4, %ymm15 +vpsllq $63, %ymm4, %ymm14 +vpermq $57, %ymm14, %ymm7 +vpxor %ymm15, %ymm7, %ymm7 +vpand const_high_1(%rip), %ymm7, %ymm15 +vpand const_all_but_high_1(%rip), %ymm7, %ymm7 +vpxor %ymm13, %ymm7, %ymm7 +vpsrlq $1, %ymm3, %ymm13 +vpsllq $63, %ymm3, %ymm14 +vpermq $57, %ymm14, %ymm6 +vpxor %ymm13, %ymm6, %ymm6 +vpand const_all_but_high_1(%rip), %ymm6, %ymm6 +vpxor %ymm15, %ymm6, %ymm6 +vpxor %ymm3, %ymm6, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm3, %ymm15, %ymm3 +vpxor %ymm4, %ymm7, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm4, %ymm15, %ymm4 +vpxor %ymm5, %ymm8, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm5, %ymm15, %ymm5 +add %rdx, %r9 +sub %rdx, %rax +mov %r9, %rdx +sub $1, %rdx +shr $63, %rdx +not %rdx +and $1, %rdx +dec %ecx +jns poly_s3_inv_loop_2 +mov $256, %ecx +poly_s3_inv_loop_3: +vpand 192(%rsp), %ymm0, %ymm10 +vpand 288(%rsp), %ymm3, %ymm15 +vpxor %ymm10, %ymm15, %ymm10 +vpand 192(%rsp), %ymm3, %ymm11 +vpand 288(%rsp), %ymm0, %ymm15 +vpxor %ymm11, %ymm15, %ymm11 +vpand %ymm10, %ymm11, %ymm15 +vpxor %ymm15, %ymm10, %ymm10 +vpxor %ymm15, %ymm11, %ymm11 +vpand const_1(%rip), %ymm11, %ymm11 +vpand const_1(%rip), %ymm10, %ymm10 +vpxor %ymm15, %ymm15, %ymm15 +vpsubq %ymm11, %ymm15, %ymm11 +vpsubq %ymm10, %ymm15, %ymm10 +vbroadcastsd %xmm11, %ymm11 +vbroadcastsd %xmm10, %ymm10 +neg %rdx +vmovq %rdx, %xmm12 +vbroadcastsd %xmm12, %ymm12 +vpand %ymm11, %ymm12, %ymm11 +vpand %ymm10, %ymm12, %ymm10 +vpor %ymm11, %ymm10, %ymm9 +mov %r9, %r12 +sub %r10, %r12 +shr $63, %r12 +neg %r12 +vmovq %r12, %xmm13 +vbroadcastsd %xmm13, %ymm13 +vpand %ymm13, %ymm9, %ymm9 +vmovq %xmm9, %r12 +mov %r9, %r13 +xor %r10, %r13 +and %r12, %r13 +xor %r13, %r10 +xor %r13, %r9 +vpxor 192(%rsp), %ymm0, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm0, %ymm15, %ymm0 +vpxor 192(%rsp), %ymm15, %ymm7 +vmovdqa %ymm7, 192(%rsp) +vpxor 288(%rsp), %ymm3, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm3, %ymm15, %ymm3 +vpxor 288(%rsp), %ymm15, %ymm8 +vmovdqa %ymm8, 288(%rsp) +vpand %ymm7, %ymm11, %ymm13 +vpand %ymm8, %ymm10, %ymm15 +vpxor %ymm13, %ymm15, %ymm13 +vpand %ymm8, %ymm11, %ymm14 +vpand %ymm7, %ymm10, %ymm15 +vpxor %ymm14, %ymm15, %ymm14 +vpand %ymm13, %ymm14, %ymm15 +vpxor %ymm15, %ymm13, %ymm13 +vpxor %ymm15, %ymm14, %ymm14 +vpand %ymm0, %ymm13, %ymm15 +vpxor %ymm0, %ymm13, %ymm0 +vpand %ymm3, %ymm14, %ymm13 +vpxor %ymm3, %ymm14, %ymm3 +vpxor %ymm3, %ymm15, %ymm3 +vpor %ymm0, %ymm13, %ymm0 +vpandn %ymm3, %ymm13, %ymm3 +vpand %ymm0, %ymm3, %ymm13 +vpxor %ymm0, %ymm13, %ymm0 +vpxor %ymm3, %ymm13, %ymm3 +vpxor 224(%rsp), %ymm1, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm1, %ymm15, %ymm1 +vpxor 224(%rsp), %ymm15, %ymm7 +vmovdqa %ymm7, 224(%rsp) +vpxor 320(%rsp), %ymm4, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm4, %ymm15, %ymm4 +vpxor 320(%rsp), %ymm15, %ymm8 +vmovdqa %ymm8, 320(%rsp) +vpand %ymm7, %ymm11, %ymm13 +vpand %ymm8, %ymm10, %ymm15 +vpxor %ymm13, %ymm15, %ymm13 +vpand %ymm8, %ymm11, %ymm14 +vpand %ymm7, %ymm10, %ymm15 +vpxor %ymm14, %ymm15, %ymm14 +vpand %ymm13, %ymm14, %ymm15 +vpxor %ymm15, %ymm13, %ymm13 +vpxor %ymm15, %ymm14, %ymm14 +vpand %ymm1, %ymm13, %ymm15 +vpxor %ymm1, %ymm13, %ymm1 +vpand %ymm4, %ymm14, %ymm13 +vpxor %ymm4, %ymm14, %ymm4 +vpxor %ymm4, %ymm15, %ymm4 +vpor %ymm1, %ymm13, %ymm1 +vpandn %ymm4, %ymm13, %ymm4 +vpand %ymm1, %ymm4, %ymm13 +vpxor %ymm1, %ymm13, %ymm1 +vpxor %ymm4, %ymm13, %ymm4 +vmovdqa 384(%rsp), %ymm6 +vpxor 576(%rsp), %ymm6, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm6, %ymm15, %ymm6 +vpxor 576(%rsp), %ymm15, %ymm8 +vmovdqa %ymm8, 576(%rsp) +vmovdqa 480(%rsp), %ymm7 +vpxor 672(%rsp), %ymm7, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm7, %ymm15, %ymm7 +vpxor 672(%rsp), %ymm15, %ymm14 +vmovdqa %ymm14, 672(%rsp) +vpand %ymm8, %ymm11, %ymm13 +vpand %ymm14, %ymm10, %ymm15 +vpxor %ymm13, %ymm15, %ymm13 +vpand %ymm14, %ymm11, %ymm14 +vpand %ymm8, %ymm10, %ymm15 +vpxor %ymm14, %ymm15, %ymm14 +vpand %ymm13, %ymm14, %ymm15 +vpxor %ymm15, %ymm13, %ymm13 +vpxor %ymm15, %ymm14, %ymm14 +vpand %ymm6, %ymm13, %ymm15 +vpxor %ymm6, %ymm13, %ymm6 +vpand %ymm7, %ymm14, %ymm13 +vpxor %ymm7, %ymm14, %ymm7 +vpxor %ymm7, %ymm15, %ymm7 +vpor %ymm6, %ymm13, %ymm6 +vpandn %ymm7, %ymm13, %ymm7 +vpand %ymm6, %ymm7, %ymm13 +vpxor %ymm6, %ymm13, %ymm6 +vpxor %ymm7, %ymm13, %ymm7 +vmovdqa %ymm6, 384(%rsp) +vmovdqa %ymm7, 480(%rsp) +vmovdqa 416(%rsp), %ymm6 +vpxor 608(%rsp), %ymm6, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm6, %ymm15, %ymm6 +vpxor 608(%rsp), %ymm15, %ymm8 +vmovdqa %ymm8, 608(%rsp) +vmovdqa 512(%rsp), %ymm7 +vpxor 704(%rsp), %ymm7, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm7, %ymm15, %ymm7 +vpxor 704(%rsp), %ymm15, %ymm14 +vmovdqa %ymm14, 704(%rsp) +vpand %ymm8, %ymm11, %ymm13 +vpand %ymm14, %ymm10, %ymm15 +vpxor %ymm13, %ymm15, %ymm13 +vpand %ymm14, %ymm11, %ymm14 +vpand %ymm8, %ymm10, %ymm15 +vpxor %ymm14, %ymm15, %ymm14 +vpand %ymm13, %ymm14, %ymm15 +vpxor %ymm15, %ymm13, %ymm13 +vpxor %ymm15, %ymm14, %ymm14 +vpand %ymm6, %ymm13, %ymm15 +vpxor %ymm6, %ymm13, %ymm6 +vpand %ymm7, %ymm14, %ymm13 +vpxor %ymm7, %ymm14, %ymm7 +vpxor %ymm7, %ymm15, %ymm7 +vpor %ymm6, %ymm13, %ymm6 +vpandn %ymm7, %ymm13, %ymm7 +vpand %ymm6, %ymm7, %ymm13 +vpxor %ymm6, %ymm13, %ymm6 +vpxor %ymm7, %ymm13, %ymm7 +vmovdqa %ymm6, 416(%rsp) +vmovdqa %ymm7, 512(%rsp) +vmovdqa 448(%rsp), %ymm6 +vpxor 640(%rsp), %ymm6, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm6, %ymm15, %ymm6 +vpxor 640(%rsp), %ymm15, %ymm8 +vmovdqa %ymm8, 640(%rsp) +vmovdqa 544(%rsp), %ymm7 +vpxor 736(%rsp), %ymm7, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm7, %ymm15, %ymm7 +vpxor 736(%rsp), %ymm15, %ymm14 +vmovdqa %ymm14, 736(%rsp) +vpand %ymm8, %ymm11, %ymm13 +vpand %ymm14, %ymm10, %ymm15 +vpxor %ymm13, %ymm15, %ymm13 +vpand %ymm14, %ymm11, %ymm14 +vpand %ymm8, %ymm10, %ymm15 +vpxor %ymm14, %ymm15, %ymm14 +vpand %ymm13, %ymm14, %ymm15 +vpxor %ymm15, %ymm13, %ymm13 +vpxor %ymm15, %ymm14, %ymm14 +vpand %ymm6, %ymm13, %ymm15 +vpxor %ymm6, %ymm13, %ymm6 +vpand %ymm7, %ymm14, %ymm13 +vpxor %ymm7, %ymm14, %ymm7 +vpxor %ymm7, %ymm15, %ymm7 +vpor %ymm6, %ymm13, %ymm6 +vpandn %ymm7, %ymm13, %ymm7 +vpand %ymm6, %ymm7, %ymm13 +vpxor %ymm6, %ymm13, %ymm6 +vpxor %ymm7, %ymm13, %ymm7 +vmovdqa %ymm6, 448(%rsp) +vmovdqa %ymm7, 544(%rsp) +vmovdqa 576(%rsp), %ymm6 +vmovdqa 608(%rsp), %ymm8 +vmovdqa 640(%rsp), %ymm10 +vpsllq $1, %ymm6, %ymm15 +vpsrlq $63, %ymm6, %ymm14 +vpermq $147, %ymm14, %ymm7 +vpxor %ymm15, %ymm7, %ymm7 +vpand const_1(%rip), %ymm7, %ymm13 +vpand const_all_but_1(%rip), %ymm7, %ymm7 +vpsllq $1, %ymm8, %ymm15 +vpsrlq $63, %ymm8, %ymm14 +vpermq $147, %ymm14, %ymm9 +vpxor %ymm15, %ymm9, %ymm9 +vpand const_1(%rip), %ymm9, %ymm15 +vpand const_all_but_1(%rip), %ymm9, %ymm9 +vpxor %ymm13, %ymm9, %ymm9 +vpsllq $1, %ymm10, %ymm13 +vpsrlq $63, %ymm10, %ymm14 +vpermq $147, %ymm14, %ymm11 +vpxor %ymm13, %ymm11, %ymm11 +vpand const_all_but_1(%rip), %ymm11, %ymm11 +vpxor %ymm15, %ymm11, %ymm11 +vpxor %ymm6, %ymm7, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm6, %ymm15, %ymm6 +vmovdqa %ymm6, 576(%rsp) +vpxor %ymm8, %ymm9, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm8, %ymm15, %ymm8 +vmovdqa %ymm8, 608(%rsp) +vpxor %ymm10, %ymm11, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm10, %ymm15, %ymm10 +vmovdqa %ymm10, 640(%rsp) +vpsrlq $1, %ymm1, %ymm15 +vpsllq $63, %ymm1, %ymm14 +vpermq $57, %ymm14, %ymm7 +vpxor %ymm15, %ymm7, %ymm7 +vpand const_high_1(%rip), %ymm7, %ymm15 +vpand const_all_but_high_1(%rip), %ymm7, %ymm7 +vpsrlq $1, %ymm0, %ymm13 +vpsllq $63, %ymm0, %ymm14 +vpermq $57, %ymm14, %ymm6 +vpxor %ymm13, %ymm6, %ymm6 +vpand const_all_but_high_1(%rip), %ymm6, %ymm6 +vpxor %ymm15, %ymm6, %ymm6 +vpxor %ymm0, %ymm6, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm0, %ymm15, %ymm0 +vpxor %ymm1, %ymm7, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm1, %ymm15, %ymm1 +vmovdqa 672(%rsp), %ymm6 +vmovdqa 704(%rsp), %ymm8 +vmovdqa 736(%rsp), %ymm10 +vpsllq $1, %ymm6, %ymm15 +vpsrlq $63, %ymm6, %ymm14 +vpermq $147, %ymm14, %ymm7 +vpxor %ymm15, %ymm7, %ymm7 +vpand const_1(%rip), %ymm7, %ymm13 +vpand const_all_but_1(%rip), %ymm7, %ymm7 +vpsllq $1, %ymm8, %ymm15 +vpsrlq $63, %ymm8, %ymm14 +vpermq $147, %ymm14, %ymm9 +vpxor %ymm15, %ymm9, %ymm9 +vpand const_1(%rip), %ymm9, %ymm15 +vpand const_all_but_1(%rip), %ymm9, %ymm9 +vpxor %ymm13, %ymm9, %ymm9 +vpsllq $1, %ymm10, %ymm13 +vpsrlq $63, %ymm10, %ymm14 +vpermq $147, %ymm14, %ymm11 +vpxor %ymm13, %ymm11, %ymm11 +vpand const_all_but_1(%rip), %ymm11, %ymm11 +vpxor %ymm15, %ymm11, %ymm11 +vpxor %ymm6, %ymm7, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm6, %ymm15, %ymm6 +vmovdqa %ymm6, 672(%rsp) +vpxor %ymm8, %ymm9, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm8, %ymm15, %ymm8 +vmovdqa %ymm8, 704(%rsp) +vpxor %ymm10, %ymm11, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm10, %ymm15, %ymm10 +vmovdqa %ymm10, 736(%rsp) +vpsrlq $1, %ymm4, %ymm15 +vpsllq $63, %ymm4, %ymm14 +vpermq $57, %ymm14, %ymm7 +vpxor %ymm15, %ymm7, %ymm7 +vpand const_high_1(%rip), %ymm7, %ymm15 +vpand const_all_but_high_1(%rip), %ymm7, %ymm7 +vpsrlq $1, %ymm3, %ymm13 +vpsllq $63, %ymm3, %ymm14 +vpermq $57, %ymm14, %ymm6 +vpxor %ymm13, %ymm6, %ymm6 +vpand const_all_but_high_1(%rip), %ymm6, %ymm6 +vpxor %ymm15, %ymm6, %ymm6 +vpxor %ymm3, %ymm6, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm3, %ymm15, %ymm3 +vpxor %ymm4, %ymm7, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm4, %ymm15, %ymm4 +add %rdx, %r9 +sub %rdx, %rax +mov %r9, %rdx +sub $1, %rdx +shr $63, %rdx +not %rdx +and $1, %rdx +dec %ecx +jns poly_s3_inv_loop_3 +mov $256, %ecx +poly_s3_inv_loop_4: +vpand 192(%rsp), %ymm0, %ymm10 +vpand 288(%rsp), %ymm3, %ymm15 +vpxor %ymm10, %ymm15, %ymm10 +vpand 192(%rsp), %ymm3, %ymm11 +vpand 288(%rsp), %ymm0, %ymm15 +vpxor %ymm11, %ymm15, %ymm11 +vpand %ymm10, %ymm11, %ymm15 +vpxor %ymm15, %ymm10, %ymm10 +vpxor %ymm15, %ymm11, %ymm11 +vpand const_1(%rip), %ymm11, %ymm11 +vpand const_1(%rip), %ymm10, %ymm10 +vpxor %ymm15, %ymm15, %ymm15 +vpsubq %ymm11, %ymm15, %ymm11 +vpsubq %ymm10, %ymm15, %ymm10 +vbroadcastsd %xmm11, %ymm11 +vbroadcastsd %xmm10, %ymm10 +neg %rdx +vmovq %rdx, %xmm12 +vbroadcastsd %xmm12, %ymm12 +vpand %ymm11, %ymm12, %ymm11 +vpand %ymm10, %ymm12, %ymm10 +vpor %ymm11, %ymm10, %ymm9 +mov %r9, %r12 +sub %r10, %r12 +shr $63, %r12 +neg %r12 +vmovq %r12, %xmm13 +vbroadcastsd %xmm13, %ymm13 +vpand %ymm13, %ymm9, %ymm9 +vmovq %xmm9, %r12 +mov %r9, %r13 +xor %r10, %r13 +and %r12, %r13 +xor %r13, %r10 +xor %r13, %r9 +vpxor 192(%rsp), %ymm0, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm0, %ymm15, %ymm0 +vpxor 192(%rsp), %ymm15, %ymm7 +vmovdqa %ymm7, 192(%rsp) +vpxor 288(%rsp), %ymm3, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm3, %ymm15, %ymm3 +vpxor 288(%rsp), %ymm15, %ymm8 +vmovdqa %ymm8, 288(%rsp) +vpand %ymm7, %ymm11, %ymm13 +vpand %ymm8, %ymm10, %ymm15 +vpxor %ymm13, %ymm15, %ymm13 +vpand %ymm8, %ymm11, %ymm14 +vpand %ymm7, %ymm10, %ymm15 +vpxor %ymm14, %ymm15, %ymm14 +vpand %ymm13, %ymm14, %ymm15 +vpxor %ymm15, %ymm13, %ymm13 +vpxor %ymm15, %ymm14, %ymm14 +vpand %ymm0, %ymm13, %ymm15 +vpxor %ymm0, %ymm13, %ymm0 +vpand %ymm3, %ymm14, %ymm13 +vpxor %ymm3, %ymm14, %ymm3 +vpxor %ymm3, %ymm15, %ymm3 +vpor %ymm0, %ymm13, %ymm0 +vpandn %ymm3, %ymm13, %ymm3 +vpand %ymm0, %ymm3, %ymm13 +vpxor %ymm0, %ymm13, %ymm0 +vpxor %ymm3, %ymm13, %ymm3 +vmovdqa 384(%rsp), %ymm6 +vpxor 576(%rsp), %ymm6, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm6, %ymm15, %ymm6 +vpxor 576(%rsp), %ymm15, %ymm8 +vmovdqa %ymm8, 576(%rsp) +vmovdqa 480(%rsp), %ymm7 +vpxor 672(%rsp), %ymm7, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm7, %ymm15, %ymm7 +vpxor 672(%rsp), %ymm15, %ymm14 +vmovdqa %ymm14, 672(%rsp) +vpand %ymm8, %ymm11, %ymm13 +vpand %ymm14, %ymm10, %ymm15 +vpxor %ymm13, %ymm15, %ymm13 +vpand %ymm14, %ymm11, %ymm14 +vpand %ymm8, %ymm10, %ymm15 +vpxor %ymm14, %ymm15, %ymm14 +vpand %ymm13, %ymm14, %ymm15 +vpxor %ymm15, %ymm13, %ymm13 +vpxor %ymm15, %ymm14, %ymm14 +vpand %ymm6, %ymm13, %ymm15 +vpxor %ymm6, %ymm13, %ymm6 +vpand %ymm7, %ymm14, %ymm13 +vpxor %ymm7, %ymm14, %ymm7 +vpxor %ymm7, %ymm15, %ymm7 +vpor %ymm6, %ymm13, %ymm6 +vpandn %ymm7, %ymm13, %ymm7 +vpand %ymm6, %ymm7, %ymm13 +vpxor %ymm6, %ymm13, %ymm6 +vpxor %ymm7, %ymm13, %ymm7 +vmovdqa %ymm6, 384(%rsp) +vmovdqa %ymm7, 480(%rsp) +vmovdqa 416(%rsp), %ymm6 +vpxor 608(%rsp), %ymm6, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm6, %ymm15, %ymm6 +vpxor 608(%rsp), %ymm15, %ymm8 +vmovdqa %ymm8, 608(%rsp) +vmovdqa 512(%rsp), %ymm7 +vpxor 704(%rsp), %ymm7, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm7, %ymm15, %ymm7 +vpxor 704(%rsp), %ymm15, %ymm14 +vmovdqa %ymm14, 704(%rsp) +vpand %ymm8, %ymm11, %ymm13 +vpand %ymm14, %ymm10, %ymm15 +vpxor %ymm13, %ymm15, %ymm13 +vpand %ymm14, %ymm11, %ymm14 +vpand %ymm8, %ymm10, %ymm15 +vpxor %ymm14, %ymm15, %ymm14 +vpand %ymm13, %ymm14, %ymm15 +vpxor %ymm15, %ymm13, %ymm13 +vpxor %ymm15, %ymm14, %ymm14 +vpand %ymm6, %ymm13, %ymm15 +vpxor %ymm6, %ymm13, %ymm6 +vpand %ymm7, %ymm14, %ymm13 +vpxor %ymm7, %ymm14, %ymm7 +vpxor %ymm7, %ymm15, %ymm7 +vpor %ymm6, %ymm13, %ymm6 +vpandn %ymm7, %ymm13, %ymm7 +vpand %ymm6, %ymm7, %ymm13 +vpxor %ymm6, %ymm13, %ymm6 +vpxor %ymm7, %ymm13, %ymm7 +vmovdqa %ymm6, 416(%rsp) +vmovdqa %ymm7, 512(%rsp) +vmovdqa 448(%rsp), %ymm6 +vpxor 640(%rsp), %ymm6, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm6, %ymm15, %ymm6 +vpxor 640(%rsp), %ymm15, %ymm8 +vmovdqa %ymm8, 640(%rsp) +vmovdqa 544(%rsp), %ymm7 +vpxor 736(%rsp), %ymm7, %ymm15 +vpand %ymm9, %ymm15, %ymm15 +vpxor %ymm7, %ymm15, %ymm7 +vpxor 736(%rsp), %ymm15, %ymm14 +vmovdqa %ymm14, 736(%rsp) +vpand %ymm8, %ymm11, %ymm13 +vpand %ymm14, %ymm10, %ymm15 +vpxor %ymm13, %ymm15, %ymm13 +vpand %ymm14, %ymm11, %ymm14 +vpand %ymm8, %ymm10, %ymm15 +vpxor %ymm14, %ymm15, %ymm14 +vpand %ymm13, %ymm14, %ymm15 +vpxor %ymm15, %ymm13, %ymm13 +vpxor %ymm15, %ymm14, %ymm14 +vpand %ymm6, %ymm13, %ymm15 +vpxor %ymm6, %ymm13, %ymm6 +vpand %ymm7, %ymm14, %ymm13 +vpxor %ymm7, %ymm14, %ymm7 +vpxor %ymm7, %ymm15, %ymm7 +vpor %ymm6, %ymm13, %ymm6 +vpandn %ymm7, %ymm13, %ymm7 +vpand %ymm6, %ymm7, %ymm13 +vpxor %ymm6, %ymm13, %ymm6 +vpxor %ymm7, %ymm13, %ymm7 +vmovdqa %ymm6, 448(%rsp) +vmovdqa %ymm7, 544(%rsp) +vmovdqa 576(%rsp), %ymm6 +vmovdqa 608(%rsp), %ymm8 +vmovdqa 640(%rsp), %ymm10 +vpsllq $1, %ymm6, %ymm15 +vpsrlq $63, %ymm6, %ymm14 +vpermq $147, %ymm14, %ymm7 +vpxor %ymm15, %ymm7, %ymm7 +vpand const_1(%rip), %ymm7, %ymm13 +vpand const_all_but_1(%rip), %ymm7, %ymm7 +vpsllq $1, %ymm8, %ymm15 +vpsrlq $63, %ymm8, %ymm14 +vpermq $147, %ymm14, %ymm9 +vpxor %ymm15, %ymm9, %ymm9 +vpand const_1(%rip), %ymm9, %ymm15 +vpand const_all_but_1(%rip), %ymm9, %ymm9 +vpxor %ymm13, %ymm9, %ymm9 +vpsllq $1, %ymm10, %ymm13 +vpsrlq $63, %ymm10, %ymm14 +vpermq $147, %ymm14, %ymm11 +vpxor %ymm13, %ymm11, %ymm11 +vpand const_all_but_1(%rip), %ymm11, %ymm11 +vpxor %ymm15, %ymm11, %ymm11 +vpxor %ymm6, %ymm7, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm6, %ymm15, %ymm6 +vmovdqa %ymm6, 576(%rsp) +vpxor %ymm8, %ymm9, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm8, %ymm15, %ymm8 +vmovdqa %ymm8, 608(%rsp) +vpxor %ymm10, %ymm11, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm10, %ymm15, %ymm10 +vmovdqa %ymm10, 640(%rsp) +vpsrlq $1, %ymm0, %ymm13 +vpsllq $63, %ymm0, %ymm14 +vpermq $57, %ymm14, %ymm6 +vpxor %ymm13, %ymm6, %ymm6 +vpand const_all_but_high_1(%rip), %ymm6, %ymm6 +vpxor %ymm0, %ymm6, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm0, %ymm15, %ymm0 +vmovdqa 672(%rsp), %ymm6 +vmovdqa 704(%rsp), %ymm8 +vmovdqa 736(%rsp), %ymm10 +vpsllq $1, %ymm6, %ymm15 +vpsrlq $63, %ymm6, %ymm14 +vpermq $147, %ymm14, %ymm7 +vpxor %ymm15, %ymm7, %ymm7 +vpand const_1(%rip), %ymm7, %ymm13 +vpand const_all_but_1(%rip), %ymm7, %ymm7 +vpsllq $1, %ymm8, %ymm15 +vpsrlq $63, %ymm8, %ymm14 +vpermq $147, %ymm14, %ymm9 +vpxor %ymm15, %ymm9, %ymm9 +vpand const_1(%rip), %ymm9, %ymm15 +vpand const_all_but_1(%rip), %ymm9, %ymm9 +vpxor %ymm13, %ymm9, %ymm9 +vpsllq $1, %ymm10, %ymm13 +vpsrlq $63, %ymm10, %ymm14 +vpermq $147, %ymm14, %ymm11 +vpxor %ymm13, %ymm11, %ymm11 +vpand const_all_but_1(%rip), %ymm11, %ymm11 +vpxor %ymm15, %ymm11, %ymm11 +vpxor %ymm6, %ymm7, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm6, %ymm15, %ymm6 +vmovdqa %ymm6, 672(%rsp) +vpxor %ymm8, %ymm9, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm8, %ymm15, %ymm8 +vmovdqa %ymm8, 704(%rsp) +vpxor %ymm10, %ymm11, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm10, %ymm15, %ymm10 +vmovdqa %ymm10, 736(%rsp) +vpsrlq $1, %ymm3, %ymm13 +vpsllq $63, %ymm3, %ymm14 +vpermq $57, %ymm14, %ymm6 +vpxor %ymm13, %ymm6, %ymm6 +vpand const_all_but_high_1(%rip), %ymm6, %ymm6 +vpxor %ymm3, %ymm6, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm3, %ymm15, %ymm3 +add %rdx, %r9 +sub %rdx, %rax +mov %r9, %rdx +sub $1, %rdx +shr $63, %rdx +not %rdx +and $1, %rdx +dec %ecx +jns poly_s3_inv_loop_4 +vpand const_1(%rip), %ymm0, %ymm0 +vpand const_1(%rip), %ymm3, %ymm3 +vpxor %ymm15, %ymm15, %ymm15 +vpsubq %ymm0, %ymm15, %ymm0 +vpsubq %ymm3, %ymm15, %ymm3 +vbroadcastsd %xmm0, %ymm0 +vbroadcastsd %xmm3, %ymm3 +vmovdqa 384(%rsp), %ymm6 +vmovdqa 416(%rsp), %ymm7 +vmovdqa 448(%rsp), %ymm8 +vmovdqa 480(%rsp), %ymm9 +vmovdqa 512(%rsp), %ymm10 +vmovdqa 544(%rsp), %ymm11 +vpand %ymm6, %ymm0, %ymm12 +vpand %ymm9, %ymm3, %ymm15 +vpxor %ymm12, %ymm15, %ymm12 +vpand %ymm6, %ymm3, %ymm13 +vpand %ymm9, %ymm0, %ymm15 +vpxor %ymm13, %ymm15, %ymm13 +vpand %ymm12, %ymm13, %ymm15 +vpxor %ymm15, %ymm12, %ymm12 +vpxor %ymm15, %ymm13, %ymm13 +vpand %ymm7, %ymm0, %ymm6 +vpand %ymm10, %ymm3, %ymm15 +vpxor %ymm6, %ymm15, %ymm6 +vpand %ymm7, %ymm3, %ymm9 +vpand %ymm10, %ymm0, %ymm15 +vpxor %ymm9, %ymm15, %ymm9 +vpand %ymm6, %ymm9, %ymm15 +vpxor %ymm15, %ymm6, %ymm6 +vpxor %ymm15, %ymm9, %ymm9 +vpand %ymm8, %ymm0, %ymm7 +vpand %ymm11, %ymm3, %ymm15 +vpxor %ymm7, %ymm15, %ymm7 +vpand %ymm8, %ymm3, %ymm10 +vpand %ymm11, %ymm0, %ymm15 +vpxor %ymm10, %ymm15, %ymm10 +vpand %ymm7, %ymm10, %ymm15 +vpxor %ymm15, %ymm7, %ymm7 +vpxor %ymm15, %ymm10, %ymm10 +vmovdqa %ymm12, 384(%rsp) +vmovdqa %ymm6, 416(%rsp) +vmovdqa %ymm7, 448(%rsp) +vmovdqa %ymm13, 480(%rsp) +vmovdqa %ymm9, 512(%rsp) +vmovdqa %ymm10, 544(%rsp) +mov %rax, %r12 +sub $702, %rax +mov %rax, %r13 +add $1, %rax +shr $63, %r13 +xor %r14, %r14 +sub %r13, %r14 +mov %rax, %rdx +xor %r12, %rax +and %r14, %rax +xor %rdx, %rax +vpxor %ymm11, %ymm11, %ymm11 +vmovdqa 384(%rsp), %ymm3 +vmovdqa 416(%rsp), %ymm4 +vmovdqa 448(%rsp), %ymm5 +vpsrlq $1, %ymm5, %ymm15 +vpsllq $63, %ymm5, %ymm14 +vpermq $57, %ymm14, %ymm2 +vpxor %ymm15, %ymm2, %ymm2 +vpand const_high_1(%rip), %ymm2, %ymm13 +vpand const_all_but_high_67(%rip), %ymm2, %ymm2 +vpsrlq $1, %ymm4, %ymm15 +vpsllq $63, %ymm4, %ymm14 +vpermq $57, %ymm14, %ymm1 +vpxor %ymm15, %ymm1, %ymm1 +vpand const_high_1(%rip), %ymm1, %ymm15 +vpand const_all_but_high_1(%rip), %ymm1, %ymm1 +vpxor %ymm13, %ymm1, %ymm1 +vpsrlq $1, %ymm3, %ymm13 +vpsllq $63, %ymm3, %ymm14 +vpermq $57, %ymm14, %ymm0 +vpxor %ymm13, %ymm0, %ymm0 +vpand const_high_1(%rip), %ymm0, %ymm13 +vpand const_all_but_high_1(%rip), %ymm0, %ymm0 +vpxor %ymm15, %ymm0, %ymm0 +vpermq $57, %ymm13, %ymm13 +vpsrlq $3, %ymm13, %ymm13 +vpxor %ymm13, %ymm2, %ymm2 +vmovq %rax, %xmm10 +vpand const_1(%rip), %ymm10, %ymm12 +vpsubq %ymm12, %ymm11, %ymm12 +vbroadcastsd %xmm12, %ymm12 +vpxor %ymm3, %ymm0, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm3, %ymm15, %ymm3 +vpxor %ymm4, %ymm1, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm4, %ymm15, %ymm4 +vpxor %ymm5, %ymm2, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm5, %ymm15, %ymm5 +vpsrlq $2, %ymm5, %ymm15 +vpsllq $62, %ymm5, %ymm14 +vpermq $57, %ymm14, %ymm2 +vpxor %ymm15, %ymm2, %ymm2 +vpand const_high_2(%rip), %ymm2, %ymm13 +vpand const_all_but_high_68(%rip), %ymm2, %ymm2 +vpsrlq $2, %ymm4, %ymm15 +vpsllq $62, %ymm4, %ymm14 +vpermq $57, %ymm14, %ymm1 +vpxor %ymm15, %ymm1, %ymm1 +vpand const_high_2(%rip), %ymm1, %ymm15 +vpand const_all_but_high_2(%rip), %ymm1, %ymm1 +vpxor %ymm13, %ymm1, %ymm1 +vpsrlq $2, %ymm3, %ymm13 +vpsllq $62, %ymm3, %ymm14 +vpermq $57, %ymm14, %ymm0 +vpxor %ymm13, %ymm0, %ymm0 +vpand const_high_2(%rip), %ymm0, %ymm13 +vpand const_all_but_high_2(%rip), %ymm0, %ymm0 +vpxor %ymm15, %ymm0, %ymm0 +vpermq $57, %ymm13, %ymm13 +vpsrlq $3, %ymm13, %ymm13 +vpxor %ymm13, %ymm2, %ymm2 +vpsrlq $1, %ymm10, %ymm10 +vpand const_1(%rip), %ymm10, %ymm12 +vpsubq %ymm12, %ymm11, %ymm12 +vbroadcastsd %xmm12, %ymm12 +vpxor %ymm3, %ymm0, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm3, %ymm15, %ymm3 +vpxor %ymm4, %ymm1, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm4, %ymm15, %ymm4 +vpxor %ymm5, %ymm2, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm5, %ymm15, %ymm5 +vpsrlq $4, %ymm5, %ymm15 +vpsllq $60, %ymm5, %ymm14 +vpermq $57, %ymm14, %ymm2 +vpxor %ymm15, %ymm2, %ymm2 +vpand const_high_4(%rip), %ymm2, %ymm13 +vpand const_all_but_high_70(%rip), %ymm2, %ymm2 +vpsrlq $4, %ymm4, %ymm15 +vpsllq $60, %ymm4, %ymm14 +vpermq $57, %ymm14, %ymm1 +vpxor %ymm15, %ymm1, %ymm1 +vpand const_high_4(%rip), %ymm1, %ymm15 +vpand const_all_but_high_4(%rip), %ymm1, %ymm1 +vpxor %ymm13, %ymm1, %ymm1 +vpsrlq $4, %ymm3, %ymm13 +vpsllq $60, %ymm3, %ymm14 +vpermq $57, %ymm14, %ymm0 +vpxor %ymm13, %ymm0, %ymm0 +vpand const_high_4(%rip), %ymm0, %ymm13 +vpand const_all_but_high_4(%rip), %ymm0, %ymm0 +vpxor %ymm15, %ymm0, %ymm0 +vpermq $57, %ymm13, %ymm13 +vpsrlq $3, %ymm13, %ymm13 +vpxor %ymm13, %ymm2, %ymm2 +vpsrlq $1, %ymm10, %ymm10 +vpand const_1(%rip), %ymm10, %ymm12 +vpsubq %ymm12, %ymm11, %ymm12 +vbroadcastsd %xmm12, %ymm12 +vpxor %ymm3, %ymm0, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm3, %ymm15, %ymm3 +vpxor %ymm4, %ymm1, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm4, %ymm15, %ymm4 +vpxor %ymm5, %ymm2, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm5, %ymm15, %ymm5 +vpsrlq $8, %ymm5, %ymm15 +vpsllq $56, %ymm5, %ymm14 +vpermq $57, %ymm14, %ymm2 +vpxor %ymm15, %ymm2, %ymm2 +vpand const_high_8(%rip), %ymm2, %ymm13 +vpand const_all_but_high_74(%rip), %ymm2, %ymm2 +vpsrlq $8, %ymm4, %ymm15 +vpsllq $56, %ymm4, %ymm14 +vpermq $57, %ymm14, %ymm1 +vpxor %ymm15, %ymm1, %ymm1 +vpand const_high_8(%rip), %ymm1, %ymm15 +vpand const_all_but_high_8(%rip), %ymm1, %ymm1 +vpxor %ymm13, %ymm1, %ymm1 +vpsrlq $8, %ymm3, %ymm13 +vpsllq $56, %ymm3, %ymm14 +vpermq $57, %ymm14, %ymm0 +vpxor %ymm13, %ymm0, %ymm0 +vpand const_high_8(%rip), %ymm0, %ymm13 +vpand const_all_but_high_8(%rip), %ymm0, %ymm0 +vpxor %ymm15, %ymm0, %ymm0 +vpermq $57, %ymm13, %ymm13 +vpsrlq $3, %ymm13, %ymm13 +vpxor %ymm13, %ymm2, %ymm2 +vpsrlq $1, %ymm10, %ymm10 +vpand const_1(%rip), %ymm10, %ymm12 +vpsubq %ymm12, %ymm11, %ymm12 +vbroadcastsd %xmm12, %ymm12 +vpxor %ymm3, %ymm0, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm3, %ymm15, %ymm3 +vpxor %ymm4, %ymm1, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm4, %ymm15, %ymm4 +vpxor %ymm5, %ymm2, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm5, %ymm15, %ymm5 +vpsrlq $16, %ymm5, %ymm15 +vpsllq $48, %ymm5, %ymm14 +vpermq $57, %ymm14, %ymm2 +vpxor %ymm15, %ymm2, %ymm2 +vpand const_high_16(%rip), %ymm2, %ymm13 +vpand const_all_but_high_82(%rip), %ymm2, %ymm2 +vpsrlq $16, %ymm4, %ymm15 +vpsllq $48, %ymm4, %ymm14 +vpermq $57, %ymm14, %ymm1 +vpxor %ymm15, %ymm1, %ymm1 +vpand const_high_16(%rip), %ymm1, %ymm15 +vpand const_all_but_high_16(%rip), %ymm1, %ymm1 +vpxor %ymm13, %ymm1, %ymm1 +vpsrlq $16, %ymm3, %ymm13 +vpsllq $48, %ymm3, %ymm14 +vpermq $57, %ymm14, %ymm0 +vpxor %ymm13, %ymm0, %ymm0 +vpand const_high_16(%rip), %ymm0, %ymm13 +vpand const_all_but_high_16(%rip), %ymm0, %ymm0 +vpxor %ymm15, %ymm0, %ymm0 +vpermq $57, %ymm13, %ymm13 +vpsrlq $3, %ymm13, %ymm13 +vpxor %ymm13, %ymm2, %ymm2 +vpsrlq $1, %ymm10, %ymm10 +vpand const_1(%rip), %ymm10, %ymm12 +vpsubq %ymm12, %ymm11, %ymm12 +vbroadcastsd %xmm12, %ymm12 +vpxor %ymm3, %ymm0, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm3, %ymm15, %ymm3 +vpxor %ymm4, %ymm1, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm4, %ymm15, %ymm4 +vpxor %ymm5, %ymm2, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm5, %ymm15, %ymm5 +vpsrlq $32, %ymm5, %ymm15 +vpsllq $32, %ymm5, %ymm14 +vpermq $57, %ymm14, %ymm2 +vpxor %ymm15, %ymm2, %ymm2 +vpand const_high_32(%rip), %ymm2, %ymm13 +vpand const_all_but_high_98(%rip), %ymm2, %ymm2 +vpsrlq $32, %ymm4, %ymm15 +vpsllq $32, %ymm4, %ymm14 +vpermq $57, %ymm14, %ymm1 +vpxor %ymm15, %ymm1, %ymm1 +vpand const_high_32(%rip), %ymm1, %ymm15 +vpand const_all_but_high_32(%rip), %ymm1, %ymm1 +vpxor %ymm13, %ymm1, %ymm1 +vpsrlq $32, %ymm3, %ymm13 +vpsllq $32, %ymm3, %ymm14 +vpermq $57, %ymm14, %ymm0 +vpxor %ymm13, %ymm0, %ymm0 +vpand const_high_32(%rip), %ymm0, %ymm13 +vpand const_all_but_high_32(%rip), %ymm0, %ymm0 +vpxor %ymm15, %ymm0, %ymm0 +vpermq $57, %ymm13, %ymm13 +vpsrlq $3, %ymm13, %ymm13 +vpxor %ymm13, %ymm2, %ymm2 +vpsrlq $1, %ymm10, %ymm10 +vpand const_1(%rip), %ymm10, %ymm12 +vpsubq %ymm12, %ymm11, %ymm12 +vbroadcastsd %xmm12, %ymm12 +vpxor %ymm3, %ymm0, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm3, %ymm15, %ymm3 +vpxor %ymm4, %ymm1, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm4, %ymm15, %ymm4 +vpxor %ymm5, %ymm2, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm5, %ymm15, %ymm5 +vpermq $57, %ymm5, %ymm15 +vpand const_high_64(%rip), %ymm15, %ymm14 +vpand const_all_but_high_64(%rip), %ymm15, %ymm2 +vpermq $57, %ymm4, %ymm15 +vpand const_high_64(%rip), %ymm15, %ymm13 +vpand const_all_but_high_64(%rip), %ymm15, %ymm1 +vpxor %ymm1, %ymm14, %ymm1 +vpermq $57, %ymm3, %ymm15 +vpand const_high_64(%rip), %ymm15, %ymm14 +vpand const_all_but_high_64(%rip), %ymm15, %ymm1 +vpxor %ymm0, %ymm13, %ymm0 +vpermq $57, %ymm13, %ymm14 +vpsrlq $3, %ymm14, %ymm14 +vpxor %ymm14, %ymm2, %ymm2 +vpermq $78, %ymm13, %ymm14 +vpsllq $61, %ymm14, %ymm14 +vpxor %ymm14, %ymm2, %ymm2 +vpsrlq $1, %ymm10, %ymm10 +vpand const_1(%rip), %ymm10, %ymm12 +vpsubq %ymm12, %ymm11, %ymm12 +vbroadcastsd %xmm12, %ymm12 +vpxor %ymm3, %ymm0, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm3, %ymm15, %ymm3 +vpxor %ymm4, %ymm1, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm4, %ymm15, %ymm4 +vpxor %ymm5, %ymm2, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm5, %ymm15, %ymm5 +vextracti128 $0, %ymm3, %xmm15 +vextracti128 $1, %ymm3, %xmm0 +vinserti128 $1, %xmm4, %ymm0, %ymm0 +vextracti128 $1, %ymm4, %xmm1 +vinserti128 $1, %xmm5, %ymm1, %ymm1 +vextracti128 $1, %ymm5, %xmm2 +vpsllq $61, %ymm15, %ymm14 +vpsrlq $3, %ymm15, %ymm13 +vpermq $147, %ymm13, %ymm15 +vpxor %ymm14, %ymm15, %ymm15 +vpxor %ymm15, %ymm2, %ymm2 +vpsrlq $1, %ymm10, %ymm10 +vpand const_1(%rip), %ymm10, %ymm12 +vpsubq %ymm12, %ymm11, %ymm12 +vbroadcastsd %xmm12, %ymm12 +vpxor %ymm3, %ymm0, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm3, %ymm15, %ymm3 +vpxor %ymm4, %ymm1, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm4, %ymm15, %ymm4 +vpxor %ymm5, %ymm2, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm5, %ymm15, %ymm5 +vmovdqa %ymm4, %ymm0 +vmovdqa %ymm5, %ymm1 +vpermq $57, %ymm3, %ymm15 +vpsrlq $3, %ymm15, %ymm14 +vpsllq $61, %ymm15, %ymm13 +vpermq $57, %ymm13, %ymm15 +vpxor %ymm14, %ymm15, %ymm15 +vpand const_all_but_high_67(%rip), %ymm15, %ymm2 +vpand const_high_67(%rip), %ymm15, %ymm15 +vpxor %ymm15, %ymm1, %ymm1 +vpsrlq $1, %ymm10, %ymm10 +vpand const_1(%rip), %ymm10, %ymm12 +vpsubq %ymm12, %ymm11, %ymm12 +vbroadcastsd %xmm12, %ymm12 +vpxor %ymm3, %ymm0, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm3, %ymm15, %ymm3 +vpxor %ymm4, %ymm1, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm4, %ymm15, %ymm4 +vpxor %ymm5, %ymm2, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm5, %ymm15, %ymm5 +vpermq $78, %ymm3, %ymm0 +vpsllq $61, %ymm0, %ymm14 +vpsrlq $3, %ymm0, %ymm13 +vpermq $147, %ymm13, %ymm13 +vpxor %ymm14, %ymm13, %ymm0 +vpand const_all_but_high_67(%rip), %ymm0, %ymm15 +vpand const_high_67(%rip), %ymm0, %ymm0 +vpermq $78, %ymm4, %ymm2 +vpsllq $61, %ymm2, %ymm14 +vpsrlq $3, %ymm2, %ymm13 +vpermq $147, %ymm13, %ymm13 +vpxor %ymm14, %ymm13, %ymm2 +vpand const_high_67(%rip), %ymm2, %ymm1 +vpand const_all_but_high_67(%rip), %ymm2, %ymm2 +vpxor %ymm15, %ymm1, %ymm1 +vpxor %ymm5, %ymm0, %ymm0 +vpsrlq $1, %ymm10, %ymm10 +vpand const_1(%rip), %ymm10, %ymm12 +vpsubq %ymm12, %ymm11, %ymm12 +vbroadcastsd %xmm12, %ymm12 +vpxor %ymm3, %ymm0, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm3, %ymm15, %ymm3 +vpxor %ymm4, %ymm1, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm4, %ymm15, %ymm4 +vpxor %ymm5, %ymm2, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm5, %ymm15, %ymm5 +vmovdqa %ymm3, 384(%rsp) +vmovdqa %ymm4, 416(%rsp) +vmovdqa %ymm5, 448(%rsp) +vmovdqa 480(%rsp), %ymm3 +vmovdqa 512(%rsp), %ymm4 +vmovdqa 544(%rsp), %ymm5 +vpsrlq $1, %ymm5, %ymm15 +vpsllq $63, %ymm5, %ymm14 +vpermq $57, %ymm14, %ymm2 +vpxor %ymm15, %ymm2, %ymm2 +vpand const_high_1(%rip), %ymm2, %ymm13 +vpand const_all_but_high_67(%rip), %ymm2, %ymm2 +vpsrlq $1, %ymm4, %ymm15 +vpsllq $63, %ymm4, %ymm14 +vpermq $57, %ymm14, %ymm1 +vpxor %ymm15, %ymm1, %ymm1 +vpand const_high_1(%rip), %ymm1, %ymm15 +vpand const_all_but_high_1(%rip), %ymm1, %ymm1 +vpxor %ymm13, %ymm1, %ymm1 +vpsrlq $1, %ymm3, %ymm13 +vpsllq $63, %ymm3, %ymm14 +vpermq $57, %ymm14, %ymm0 +vpxor %ymm13, %ymm0, %ymm0 +vpand const_high_1(%rip), %ymm0, %ymm13 +vpand const_all_but_high_1(%rip), %ymm0, %ymm0 +vpxor %ymm15, %ymm0, %ymm0 +vpermq $57, %ymm13, %ymm13 +vpsrlq $3, %ymm13, %ymm13 +vpxor %ymm13, %ymm2, %ymm2 +vmovq %rax, %xmm10 +vpand const_1(%rip), %ymm10, %ymm12 +vpsubq %ymm12, %ymm11, %ymm12 +vbroadcastsd %xmm12, %ymm12 +vpxor %ymm3, %ymm0, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm3, %ymm15, %ymm3 +vpxor %ymm4, %ymm1, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm4, %ymm15, %ymm4 +vpxor %ymm5, %ymm2, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm5, %ymm15, %ymm5 +vpsrlq $2, %ymm5, %ymm15 +vpsllq $62, %ymm5, %ymm14 +vpermq $57, %ymm14, %ymm2 +vpxor %ymm15, %ymm2, %ymm2 +vpand const_high_2(%rip), %ymm2, %ymm13 +vpand const_all_but_high_68(%rip), %ymm2, %ymm2 +vpsrlq $2, %ymm4, %ymm15 +vpsllq $62, %ymm4, %ymm14 +vpermq $57, %ymm14, %ymm1 +vpxor %ymm15, %ymm1, %ymm1 +vpand const_high_2(%rip), %ymm1, %ymm15 +vpand const_all_but_high_2(%rip), %ymm1, %ymm1 +vpxor %ymm13, %ymm1, %ymm1 +vpsrlq $2, %ymm3, %ymm13 +vpsllq $62, %ymm3, %ymm14 +vpermq $57, %ymm14, %ymm0 +vpxor %ymm13, %ymm0, %ymm0 +vpand const_high_2(%rip), %ymm0, %ymm13 +vpand const_all_but_high_2(%rip), %ymm0, %ymm0 +vpxor %ymm15, %ymm0, %ymm0 +vpermq $57, %ymm13, %ymm13 +vpsrlq $3, %ymm13, %ymm13 +vpxor %ymm13, %ymm2, %ymm2 +vpsrlq $1, %ymm10, %ymm10 +vpand const_1(%rip), %ymm10, %ymm12 +vpsubq %ymm12, %ymm11, %ymm12 +vbroadcastsd %xmm12, %ymm12 +vpxor %ymm3, %ymm0, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm3, %ymm15, %ymm3 +vpxor %ymm4, %ymm1, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm4, %ymm15, %ymm4 +vpxor %ymm5, %ymm2, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm5, %ymm15, %ymm5 +vpsrlq $4, %ymm5, %ymm15 +vpsllq $60, %ymm5, %ymm14 +vpermq $57, %ymm14, %ymm2 +vpxor %ymm15, %ymm2, %ymm2 +vpand const_high_4(%rip), %ymm2, %ymm13 +vpand const_all_but_high_70(%rip), %ymm2, %ymm2 +vpsrlq $4, %ymm4, %ymm15 +vpsllq $60, %ymm4, %ymm14 +vpermq $57, %ymm14, %ymm1 +vpxor %ymm15, %ymm1, %ymm1 +vpand const_high_4(%rip), %ymm1, %ymm15 +vpand const_all_but_high_4(%rip), %ymm1, %ymm1 +vpxor %ymm13, %ymm1, %ymm1 +vpsrlq $4, %ymm3, %ymm13 +vpsllq $60, %ymm3, %ymm14 +vpermq $57, %ymm14, %ymm0 +vpxor %ymm13, %ymm0, %ymm0 +vpand const_high_4(%rip), %ymm0, %ymm13 +vpand const_all_but_high_4(%rip), %ymm0, %ymm0 +vpxor %ymm15, %ymm0, %ymm0 +vpermq $57, %ymm13, %ymm13 +vpsrlq $3, %ymm13, %ymm13 +vpxor %ymm13, %ymm2, %ymm2 +vpsrlq $1, %ymm10, %ymm10 +vpand const_1(%rip), %ymm10, %ymm12 +vpsubq %ymm12, %ymm11, %ymm12 +vbroadcastsd %xmm12, %ymm12 +vpxor %ymm3, %ymm0, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm3, %ymm15, %ymm3 +vpxor %ymm4, %ymm1, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm4, %ymm15, %ymm4 +vpxor %ymm5, %ymm2, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm5, %ymm15, %ymm5 +vpsrlq $8, %ymm5, %ymm15 +vpsllq $56, %ymm5, %ymm14 +vpermq $57, %ymm14, %ymm2 +vpxor %ymm15, %ymm2, %ymm2 +vpand const_high_8(%rip), %ymm2, %ymm13 +vpand const_all_but_high_74(%rip), %ymm2, %ymm2 +vpsrlq $8, %ymm4, %ymm15 +vpsllq $56, %ymm4, %ymm14 +vpermq $57, %ymm14, %ymm1 +vpxor %ymm15, %ymm1, %ymm1 +vpand const_high_8(%rip), %ymm1, %ymm15 +vpand const_all_but_high_8(%rip), %ymm1, %ymm1 +vpxor %ymm13, %ymm1, %ymm1 +vpsrlq $8, %ymm3, %ymm13 +vpsllq $56, %ymm3, %ymm14 +vpermq $57, %ymm14, %ymm0 +vpxor %ymm13, %ymm0, %ymm0 +vpand const_high_8(%rip), %ymm0, %ymm13 +vpand const_all_but_high_8(%rip), %ymm0, %ymm0 +vpxor %ymm15, %ymm0, %ymm0 +vpermq $57, %ymm13, %ymm13 +vpsrlq $3, %ymm13, %ymm13 +vpxor %ymm13, %ymm2, %ymm2 +vpsrlq $1, %ymm10, %ymm10 +vpand const_1(%rip), %ymm10, %ymm12 +vpsubq %ymm12, %ymm11, %ymm12 +vbroadcastsd %xmm12, %ymm12 +vpxor %ymm3, %ymm0, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm3, %ymm15, %ymm3 +vpxor %ymm4, %ymm1, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm4, %ymm15, %ymm4 +vpxor %ymm5, %ymm2, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm5, %ymm15, %ymm5 +vpsrlq $16, %ymm5, %ymm15 +vpsllq $48, %ymm5, %ymm14 +vpermq $57, %ymm14, %ymm2 +vpxor %ymm15, %ymm2, %ymm2 +vpand const_high_16(%rip), %ymm2, %ymm13 +vpand const_all_but_high_82(%rip), %ymm2, %ymm2 +vpsrlq $16, %ymm4, %ymm15 +vpsllq $48, %ymm4, %ymm14 +vpermq $57, %ymm14, %ymm1 +vpxor %ymm15, %ymm1, %ymm1 +vpand const_high_16(%rip), %ymm1, %ymm15 +vpand const_all_but_high_16(%rip), %ymm1, %ymm1 +vpxor %ymm13, %ymm1, %ymm1 +vpsrlq $16, %ymm3, %ymm13 +vpsllq $48, %ymm3, %ymm14 +vpermq $57, %ymm14, %ymm0 +vpxor %ymm13, %ymm0, %ymm0 +vpand const_high_16(%rip), %ymm0, %ymm13 +vpand const_all_but_high_16(%rip), %ymm0, %ymm0 +vpxor %ymm15, %ymm0, %ymm0 +vpermq $57, %ymm13, %ymm13 +vpsrlq $3, %ymm13, %ymm13 +vpxor %ymm13, %ymm2, %ymm2 +vpsrlq $1, %ymm10, %ymm10 +vpand const_1(%rip), %ymm10, %ymm12 +vpsubq %ymm12, %ymm11, %ymm12 +vbroadcastsd %xmm12, %ymm12 +vpxor %ymm3, %ymm0, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm3, %ymm15, %ymm3 +vpxor %ymm4, %ymm1, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm4, %ymm15, %ymm4 +vpxor %ymm5, %ymm2, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm5, %ymm15, %ymm5 +vpsrlq $32, %ymm5, %ymm15 +vpsllq $32, %ymm5, %ymm14 +vpermq $57, %ymm14, %ymm2 +vpxor %ymm15, %ymm2, %ymm2 +vpand const_high_32(%rip), %ymm2, %ymm13 +vpand const_all_but_high_98(%rip), %ymm2, %ymm2 +vpsrlq $32, %ymm4, %ymm15 +vpsllq $32, %ymm4, %ymm14 +vpermq $57, %ymm14, %ymm1 +vpxor %ymm15, %ymm1, %ymm1 +vpand const_high_32(%rip), %ymm1, %ymm15 +vpand const_all_but_high_32(%rip), %ymm1, %ymm1 +vpxor %ymm13, %ymm1, %ymm1 +vpsrlq $32, %ymm3, %ymm13 +vpsllq $32, %ymm3, %ymm14 +vpermq $57, %ymm14, %ymm0 +vpxor %ymm13, %ymm0, %ymm0 +vpand const_high_32(%rip), %ymm0, %ymm13 +vpand const_all_but_high_32(%rip), %ymm0, %ymm0 +vpxor %ymm15, %ymm0, %ymm0 +vpermq $57, %ymm13, %ymm13 +vpsrlq $3, %ymm13, %ymm13 +vpxor %ymm13, %ymm2, %ymm2 +vpsrlq $1, %ymm10, %ymm10 +vpand const_1(%rip), %ymm10, %ymm12 +vpsubq %ymm12, %ymm11, %ymm12 +vbroadcastsd %xmm12, %ymm12 +vpxor %ymm3, %ymm0, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm3, %ymm15, %ymm3 +vpxor %ymm4, %ymm1, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm4, %ymm15, %ymm4 +vpxor %ymm5, %ymm2, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm5, %ymm15, %ymm5 +vpermq $57, %ymm5, %ymm15 +vpand const_high_64(%rip), %ymm15, %ymm14 +vpand const_all_but_high_64(%rip), %ymm15, %ymm2 +vpermq $57, %ymm4, %ymm15 +vpand const_high_64(%rip), %ymm15, %ymm13 +vpand const_all_but_high_64(%rip), %ymm15, %ymm1 +vpxor %ymm1, %ymm14, %ymm1 +vpermq $57, %ymm3, %ymm15 +vpand const_high_64(%rip), %ymm15, %ymm14 +vpand const_all_but_high_64(%rip), %ymm15, %ymm1 +vpxor %ymm0, %ymm13, %ymm0 +vpermq $57, %ymm13, %ymm14 +vpsrlq $3, %ymm14, %ymm14 +vpxor %ymm14, %ymm2, %ymm2 +vpermq $78, %ymm13, %ymm14 +vpsllq $61, %ymm14, %ymm14 +vpxor %ymm14, %ymm2, %ymm2 +vpsrlq $1, %ymm10, %ymm10 +vpand const_1(%rip), %ymm10, %ymm12 +vpsubq %ymm12, %ymm11, %ymm12 +vbroadcastsd %xmm12, %ymm12 +vpxor %ymm3, %ymm0, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm3, %ymm15, %ymm3 +vpxor %ymm4, %ymm1, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm4, %ymm15, %ymm4 +vpxor %ymm5, %ymm2, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm5, %ymm15, %ymm5 +vextracti128 $0, %ymm3, %xmm15 +vextracti128 $1, %ymm3, %xmm0 +vinserti128 $1, %xmm4, %ymm0, %ymm0 +vextracti128 $1, %ymm4, %xmm1 +vinserti128 $1, %xmm5, %ymm1, %ymm1 +vextracti128 $1, %ymm5, %xmm2 +vpsllq $61, %ymm15, %ymm14 +vpsrlq $3, %ymm15, %ymm13 +vpermq $147, %ymm13, %ymm15 +vpxor %ymm14, %ymm15, %ymm15 +vpxor %ymm15, %ymm2, %ymm2 +vpsrlq $1, %ymm10, %ymm10 +vpand const_1(%rip), %ymm10, %ymm12 +vpsubq %ymm12, %ymm11, %ymm12 +vbroadcastsd %xmm12, %ymm12 +vpxor %ymm3, %ymm0, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm3, %ymm15, %ymm3 +vpxor %ymm4, %ymm1, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm4, %ymm15, %ymm4 +vpxor %ymm5, %ymm2, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm5, %ymm15, %ymm5 +vmovdqa %ymm4, %ymm0 +vmovdqa %ymm5, %ymm1 +vpermq $57, %ymm3, %ymm15 +vpsrlq $3, %ymm15, %ymm14 +vpsllq $61, %ymm15, %ymm13 +vpermq $57, %ymm13, %ymm15 +vpxor %ymm14, %ymm15, %ymm15 +vpand const_all_but_high_67(%rip), %ymm15, %ymm2 +vpand const_high_67(%rip), %ymm15, %ymm15 +vpxor %ymm15, %ymm1, %ymm1 +vpsrlq $1, %ymm10, %ymm10 +vpand const_1(%rip), %ymm10, %ymm12 +vpsubq %ymm12, %ymm11, %ymm12 +vbroadcastsd %xmm12, %ymm12 +vpxor %ymm3, %ymm0, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm3, %ymm15, %ymm3 +vpxor %ymm4, %ymm1, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm4, %ymm15, %ymm4 +vpxor %ymm5, %ymm2, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm5, %ymm15, %ymm5 +vpermq $78, %ymm3, %ymm0 +vpsllq $61, %ymm0, %ymm14 +vpsrlq $3, %ymm0, %ymm13 +vpermq $147, %ymm13, %ymm13 +vpxor %ymm14, %ymm13, %ymm0 +vpand const_all_but_high_67(%rip), %ymm0, %ymm15 +vpand const_high_67(%rip), %ymm0, %ymm0 +vpermq $78, %ymm4, %ymm2 +vpsllq $61, %ymm2, %ymm14 +vpsrlq $3, %ymm2, %ymm13 +vpermq $147, %ymm13, %ymm13 +vpxor %ymm14, %ymm13, %ymm2 +vpand const_high_67(%rip), %ymm2, %ymm1 +vpand const_all_but_high_67(%rip), %ymm2, %ymm2 +vpxor %ymm15, %ymm1, %ymm1 +vpxor %ymm5, %ymm0, %ymm0 +vpsrlq $1, %ymm10, %ymm10 +vpand const_1(%rip), %ymm10, %ymm12 +vpsubq %ymm12, %ymm11, %ymm12 +vbroadcastsd %xmm12, %ymm12 +vpxor %ymm3, %ymm0, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm3, %ymm15, %ymm3 +vpxor %ymm4, %ymm1, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm4, %ymm15, %ymm4 +vpxor %ymm5, %ymm2, %ymm15 +vpand %ymm12, %ymm15, %ymm15 +vpxor %ymm5, %ymm15, %ymm5 +vmovdqa %ymm3, 480(%rsp) +vmovdqa %ymm4, 512(%rsp) +vmovdqa %ymm5, 544(%rsp) +mov $281479271743489, %r9 +mov $562958543486978, %rdx +mov 384(%rsp), %r10 +mov 480(%rsp), %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 0(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 8(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 16(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 24(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 32(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 40(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 48(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 56(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 64(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 72(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 80(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 88(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 96(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 104(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 112(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 120(%rdi) +mov 392(%rsp), %r10 +mov 488(%rsp), %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 128(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 136(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 144(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 152(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 160(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 168(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 176(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 184(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 192(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 200(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 208(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 216(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 224(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 232(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 240(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 248(%rdi) +mov 400(%rsp), %r10 +mov 496(%rsp), %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 256(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 264(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 272(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 280(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 288(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 296(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 304(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 312(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 320(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 328(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 336(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 344(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 352(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 360(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 368(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 376(%rdi) +mov 408(%rsp), %r10 +mov 504(%rsp), %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 384(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 392(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 400(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 408(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 416(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 424(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 432(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 440(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 448(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 456(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 464(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 472(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 480(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 488(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 496(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 504(%rdi) +mov 416(%rsp), %r10 +mov 512(%rsp), %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 512(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 520(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 528(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 536(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 544(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 552(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 560(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 568(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 576(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 584(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 592(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 600(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 608(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 616(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 624(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 632(%rdi) +mov 424(%rsp), %r10 +mov 520(%rsp), %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 640(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 648(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 656(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 664(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 672(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 680(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 688(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 696(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 704(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 712(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 720(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 728(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 736(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 744(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 752(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 760(%rdi) +mov 432(%rsp), %r10 +mov 528(%rsp), %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 768(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 776(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 784(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 792(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 800(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 808(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 816(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 824(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 832(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 840(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 848(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 856(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 864(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 872(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 880(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 888(%rdi) +mov 440(%rsp), %r10 +mov 536(%rsp), %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 896(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 904(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 912(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 920(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 928(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 936(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 944(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 952(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 960(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 968(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 976(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 984(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 992(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1000(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1008(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1016(%rdi) +mov 448(%rsp), %r10 +mov 544(%rsp), %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1024(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1032(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1040(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1048(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1056(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1064(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1072(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1080(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1088(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1096(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1104(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1112(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1120(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1128(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1136(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1144(%rdi) +mov 456(%rsp), %r10 +mov 552(%rsp), %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1152(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1160(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1168(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1176(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1184(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1192(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1200(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1208(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1216(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1224(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1232(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1240(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1248(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1256(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1264(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1272(%rdi) +mov 464(%rsp), %r10 +mov 560(%rsp), %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1280(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1288(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1296(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1304(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1312(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1320(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1328(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1336(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1344(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1352(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1360(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1368(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1376(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1384(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1392(%rdi) +shr $4, %r10 +shr $4, %r11 +pdep %r9, %r10, %r12 +pdep %rdx, %r11, %r13 +or %r12, %r13 +mov %r13, 1400(%rdi) +vmovdqa 1376(%rdi), %ymm0 +vpermq $3, %ymm0, %ymm0 +vpslld $17, %ymm0, %ymm0 +vpsrld $16, %ymm0, %ymm1 +vpor %ymm0, %ymm1, %ymm0 +vbroadcastss %xmm0, %ymm0 +vpaddw 0(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 0(%rdi) +vpaddw 32(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 32(%rdi) +vpaddw 64(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 64(%rdi) +vpaddw 96(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 96(%rdi) +vpaddw 128(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 128(%rdi) +vpaddw 160(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 160(%rdi) +vpaddw 192(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 192(%rdi) +vpaddw 224(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 224(%rdi) +vpaddw 256(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 256(%rdi) +vpaddw 288(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 288(%rdi) +vpaddw 320(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 320(%rdi) +vpaddw 352(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 352(%rdi) +vpaddw 384(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 384(%rdi) +vpaddw 416(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 416(%rdi) +vpaddw 448(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 448(%rdi) +vpaddw 480(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 480(%rdi) +vpaddw 512(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 512(%rdi) +vpaddw 544(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 544(%rdi) +vpaddw 576(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 576(%rdi) +vpaddw 608(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 608(%rdi) +vpaddw 640(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 640(%rdi) +vpaddw 672(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 672(%rdi) +vpaddw 704(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 704(%rdi) +vpaddw 736(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 736(%rdi) +vpaddw 768(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 768(%rdi) +vpaddw 800(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 800(%rdi) +vpaddw 832(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 832(%rdi) +vpaddw 864(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 864(%rdi) +vpaddw 896(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 896(%rdi) +vpaddw 928(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 928(%rdi) +vpaddw 960(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 960(%rdi) +vpaddw 992(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 992(%rdi) +vpaddw 1024(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 1024(%rdi) +vpaddw 1056(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 1056(%rdi) +vpaddw 1088(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 1088(%rdi) +vpaddw 1120(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 1120(%rdi) +vpaddw 1152(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 1152(%rdi) +vpaddw 1184(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 1184(%rdi) +vpaddw 1216(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 1216(%rdi) +vpaddw 1248(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 1248(%rdi) +vpaddw 1280(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 1280(%rdi) +vpaddw 1312(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 1312(%rdi) +vpaddw 1344(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 1344(%rdi) +vpaddw 1376(%rdi), %ymm0, %ymm1 +vpand mask_3(%rip), %ymm1, %ymm2 +vpsrlw $2, %ymm1, %ymm1 +vpaddw %ymm1, %ymm2, %ymm2 +vpsubw mask_3(%rip), %ymm2, %ymm14 +vpsraw $15, %ymm14, %ymm15 +vpandn %ymm14, %ymm15, %ymm1 +vpand %ymm15, %ymm2, %ymm14 +vpxor %ymm14, %ymm1, %ymm2 +vmovdqa %ymm2, 1376(%rdi) +mov %r8, %rsp +pop %r14 +pop %r13 +pop %r12 +ret diff --git a/crypto_kem/ntruhrss701/avx2/poly_s3_to_rq.s b/crypto_kem/ntruhrss701/avx2/poly_s3_to_rq.s new file mode 100644 index 00000000..9b4d341b --- /dev/null +++ b/crypto_kem/ntruhrss701/avx2/poly_s3_to_rq.s @@ -0,0 +1,3118 @@ +.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_1s: +.word 1 +.word 1 +.word 1 +.word 1 +.word 1 +.word 1 +.word 1 +.word 1 +.word 1 +.word 1 +.word 1 +.word 1 +.word 1 +.word 1 +.word 1 +.word 1 +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 +.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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +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 +vpand const_1s(%rip), %ymm3, %ymm3 +vpor %ymm3, %ymm2, %ymm3 +vmovdqa %ymm3, 1376(%rsp) +mov %rsp, %rsi +call PQCLEAN_NTRUHRSS701_AVX2_poly_Rq_mul_x_minus_1 +mov %r8, %rsp +ret diff --git a/crypto_kem/ntruhrss701/avx2/sample.c b/crypto_kem/ntruhrss701/avx2/sample.c new file mode 100644 index 00000000..bc15a9ad --- /dev/null +++ b/crypto_kem/ntruhrss701/avx2/sample.c @@ -0,0 +1,46 @@ +#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/crypto_kem/ntruhrss701/avx2/sample.h b/crypto_kem/ntruhrss701/avx2/sample.h new file mode 100644 index 00000000..d5234c36 --- /dev/null +++ b/crypto_kem/ntruhrss701/avx2/sample.h @@ -0,0 +1,15 @@ +#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/crypto_kem/ntruhrss701/avx2/sample_iid.c b/crypto_kem/ntruhrss701/avx2/sample_iid.c new file mode 100644 index 00000000..ecb00835 --- /dev/null +++ b/crypto_kem/ntruhrss701/avx2/sample_iid.c @@ -0,0 +1,21 @@ +#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/crypto_kem/ntruhrss701/avx2/square_12_701_shufbytes.s b/crypto_kem/ntruhrss701/avx2/square_12_701_shufbytes.s new file mode 100644 index 00000000..e92268d9 --- /dev/null +++ b/crypto_kem/ntruhrss701/avx2/square_12_701_shufbytes.s @@ -0,0 +1,7204 @@ +.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/crypto_kem/ntruhrss701/avx2/square_15_701_shufbytes.s b/crypto_kem/ntruhrss701/avx2/square_15_701_shufbytes.s new file mode 100644 index 00000000..27a16f04 --- /dev/null +++ b/crypto_kem/ntruhrss701/avx2/square_15_701_shufbytes.s @@ -0,0 +1,12747 @@ +.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/crypto_kem/ntruhrss701/avx2/square_168_701_shufbytes.s b/crypto_kem/ntruhrss701/avx2/square_168_701_shufbytes.s new file mode 100644 index 00000000..cfaa06d9 --- /dev/null +++ b/crypto_kem/ntruhrss701/avx2/square_168_701_shufbytes.s @@ -0,0 +1,7918 @@ +.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/crypto_kem/ntruhrss701/avx2/square_1_701_patience.s b/crypto_kem/ntruhrss701/avx2/square_1_701_patience.s new file mode 100644 index 00000000..3eda0814 --- /dev/null +++ b/crypto_kem/ntruhrss701/avx2/square_1_701_patience.s @@ -0,0 +1,137 @@ +.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/crypto_kem/ntruhrss701/avx2/square_27_701_shufbytes.s b/crypto_kem/ntruhrss701/avx2/square_27_701_shufbytes.s new file mode 100644 index 00000000..d2ca5afb --- /dev/null +++ b/crypto_kem/ntruhrss701/avx2/square_27_701_shufbytes.s @@ -0,0 +1,5384 @@ +.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/crypto_kem/ntruhrss701/avx2/square_336_701_shufbytes.s b/crypto_kem/ntruhrss701/avx2/square_336_701_shufbytes.s new file mode 100644 index 00000000..01fb1879 --- /dev/null +++ b/crypto_kem/ntruhrss701/avx2/square_336_701_shufbytes.s @@ -0,0 +1,6738 @@ +.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/crypto_kem/ntruhrss701/avx2/square_3_701_patience.s b/crypto_kem/ntruhrss701/avx2/square_3_701_patience.s new file mode 100644 index 00000000..481dab57 --- /dev/null +++ b/crypto_kem/ntruhrss701/avx2/square_3_701_patience.s @@ -0,0 +1,381 @@ +.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/crypto_kem/ntruhrss701/avx2/square_42_701_shufbytes.s b/crypto_kem/ntruhrss701/avx2/square_42_701_shufbytes.s new file mode 100644 index 00000000..d33008b9 --- /dev/null +++ b/crypto_kem/ntruhrss701/avx2/square_42_701_shufbytes.s @@ -0,0 +1,5974 @@ +.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/crypto_kem/ntruhrss701/avx2/square_6_701_patience.s b/crypto_kem/ntruhrss701/avx2/square_6_701_patience.s new file mode 100644 index 00000000..facbfca5 --- /dev/null +++ b/crypto_kem/ntruhrss701/avx2/square_6_701_patience.s @@ -0,0 +1,554 @@ +.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/crypto_kem/ntruhrss701/avx2/square_84_701_shufbytes.s b/crypto_kem/ntruhrss701/avx2/square_84_701_shufbytes.s new file mode 100644 index 00000000..3164fc25 --- /dev/null +++ b/crypto_kem/ntruhrss701/avx2/square_84_701_shufbytes.s @@ -0,0 +1,4655 @@ +.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/crypto_kem/ntruhrss701/avx2/vec32_sample_iid.s b/crypto_kem/ntruhrss701/avx2/vec32_sample_iid.s new file mode 100644 index 00000000..1760e4f9 --- /dev/null +++ b/crypto_kem/ntruhrss701/avx2/vec32_sample_iid.s @@ -0,0 +1,1042 @@ +.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/crypto_kem/ntruhrss701/clean/Makefile b/crypto_kem/ntruhrss701/clean/Makefile index ca8edc5f..204c9559 100644 --- a/crypto_kem/ntruhrss701/clean/Makefile +++ b/crypto_kem/ntruhrss701/clean/Makefile @@ -1,10 +1,10 @@ # This Makefile can be used with GNU Make or BSD Make LIB=libntruhrss701_clean.a -HEADERS=api.h owcpa.h params.h poly.h sample.h verify.h -OBJECTS=kem.o owcpa.o pack3.o packq.o poly.o poly_lift.o poly_mod.o poly_r2_inv.o poly_rq_mul.o poly_s3_inv.o sample.o sample_iid.o verify.o +HEADERS=api.h cmov.h owcpa.h params.h poly.h sample.h +OBJECTS=cmov.o kem.o owcpa.o pack3.o packq.o poly.o poly_lift.o poly_mod.o poly_r2_inv.o poly_rq_mul.o poly_s3_inv.o sample.o sample_iid.o -CFLAGS=-O3 -Wall -Wextra -Wpedantic -Werror -Wmissing-prototypes -Wredundant-decls -std=c99 -I../../../common $(EXTRAFLAGS) +CFLAGS=-O3 -Wall -Wextra -Wpedantic -Wvla -Werror -Wredundant-decls -Wmissing-prototypes -std=c99 -I../../../common $(EXTRAFLAGS) all: $(LIB) diff --git a/crypto_kem/ntruhrss701/clean/Makefile.Microsoft_nmake b/crypto_kem/ntruhrss701/clean/Makefile.Microsoft_nmake index fc1c8ad0..181243e2 100644 --- a/crypto_kem/ntruhrss701/clean/Makefile.Microsoft_nmake +++ b/crypto_kem/ntruhrss701/clean/Makefile.Microsoft_nmake @@ -2,7 +2,7 @@ # nmake /f Makefile.Microsoft_nmake LIBRARY=libntruhrss701_clean.lib -OBJECTS=kem.obj owcpa.obj pack3.obj packq.obj poly.obj poly_lift.obj poly_mod.obj poly_r2_inv.obj poly_rq_mul.obj poly_s3_inv.obj sample.obj sample_iid.obj verify.obj +OBJECTS=cmov.obj kem.obj owcpa.obj pack3.obj packq.obj poly.obj poly_lift.obj poly_mod.obj poly_r2_inv.obj poly_rq_mul.obj poly_s3_inv.obj sample.obj sample_iid.obj CFLAGS=/nologo /O2 /I ..\..\..\common /W4 /WX diff --git a/crypto_kem/ntruhrss701/clean/api.h b/crypto_kem/ntruhrss701/clean/api.h index de442a06..470fb99d 100644 --- a/crypto_kem/ntruhrss701/clean/api.h +++ b/crypto_kem/ntruhrss701/clean/api.h @@ -8,7 +8,7 @@ #define PQCLEAN_NTRUHRSS701_CLEAN_CRYPTO_CIPHERTEXTBYTES 1138 #define PQCLEAN_NTRUHRSS701_CLEAN_CRYPTO_BYTES 32 -#define PQCLEAN_NTRUHRSS701_CLEAN_CRYPTO_ALGNAME "NTRU-HRSS701" +#define PQCLEAN_NTRUHRSS701_CLEAN_CRYPTO_ALGNAME "ntruhrss701" int PQCLEAN_NTRUHRSS701_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk); diff --git a/crypto_kem/ntruhrss701/clean/cmov.c b/crypto_kem/ntruhrss701/clean/cmov.c new file mode 100644 index 00000000..2283e18e --- /dev/null +++ b/crypto_kem/ntruhrss701/clean/cmov.c @@ -0,0 +1,11 @@ +#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/crypto_kem/ntruhrss701/clean/cmov.h b/crypto_kem/ntruhrss701/clean/cmov.h new file mode 100644 index 00000000..82155035 --- /dev/null +++ b/crypto_kem/ntruhrss701/clean/cmov.h @@ -0,0 +1,10 @@ +#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/crypto_kem/ntruhrss701/clean/kem.c b/crypto_kem/ntruhrss701/clean/kem.c index 435a13bc..fc38e3d7 100644 --- a/crypto_kem/ntruhrss701/clean/kem.c +++ b/crypto_kem/ntruhrss701/clean/kem.c @@ -1,12 +1,10 @@ -#include - #include "api.h" +#include "cmov.h" #include "fips202.h" #include "owcpa.h" #include "params.h" #include "randombytes.h" #include "sample.h" -#include "verify.h" // API FUNCTIONS int PQCLEAN_NTRUHRSS701_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk) { @@ -51,7 +49,7 @@ int PQCLEAN_NTRUHRSS701_CLEAN_crypto_kem_dec(uint8_t *k, const uint8_t *c, const 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. */ + /* See comment in PQCLEAN_NTRUHRSS701_CLEAN_owcpa_dec for details. */ sha3_256(k, rm, NTRU_OWCPA_MSGBYTES); diff --git a/crypto_kem/ntruhrss701/clean/owcpa.c b/crypto_kem/ntruhrss701/clean/owcpa.c index 721f0e0d..52994767 100644 --- a/crypto_kem/ntruhrss701/clean/owcpa.c +++ b/crypto_kem/ntruhrss701/clean/owcpa.c @@ -47,6 +47,7 @@ void PQCLEAN_NTRUHRSS701_CLEAN_owcpa_keypair(unsigned char *pk, } g->coeffs[0] = -(3 * g->coeffs[0]); + PQCLEAN_NTRUHRSS701_CLEAN_poly_Rq_mul(gf, g, f); PQCLEAN_NTRUHRSS701_CLEAN_poly_Rq_inv(invgf, gf); diff --git a/crypto_kem/ntruhrss701/clean/pack3.c b/crypto_kem/ntruhrss701/clean/pack3.c index 880454a7..1191b76c 100644 --- a/crypto_kem/ntruhrss701/clean/pack3.c +++ b/crypto_kem/ntruhrss701/clean/pack3.c @@ -12,7 +12,6 @@ void PQCLEAN_NTRUHRSS701_CLEAN_poly_S3_tobytes(unsigned char msg[NTRU_OWCPA_MSGB 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]) { diff --git a/crypto_kem/ntruhrss701/clean/params.h b/crypto_kem/ntruhrss701/clean/params.h index 9e0ea714..a9dbddd5 100644 --- a/crypto_kem/ntruhrss701/clean/params.h +++ b/crypto_kem/ntruhrss701/clean/params.h @@ -5,6 +5,7 @@ #define NTRU_N 701 #define NTRU_LOGQ 13 + /* Do not modify below this line */ #define PAD32(X) ((((X) + 31)/32)*32) diff --git a/crypto_kem/ntruhrss701/clean/poly.h b/crypto_kem/ntruhrss701/clean/poly.h index c7d0658b..f41fb78e 100644 --- a/crypto_kem/ntruhrss701/clean/poly.h +++ b/crypto_kem/ntruhrss701/clean/poly.h @@ -1,16 +1,13 @@ #ifndef POLY_H #define POLY_H -#include - #include "params.h" +#include + #define MODQ(X) ((X) & (NTRU_Q-1)) typedef struct { - // round to nearest multiple of 32 to make it easier to load into vector - // registers without having to do bound checks -#define NTRU_N_32 PAD32(NTRU_N) uint16_t coeffs[NTRU_N]; } poly; @@ -38,5 +35,4 @@ 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/crypto_kem/ntruhrss701/clean/poly_lift.c b/crypto_kem/ntruhrss701/clean/poly_lift.c index 6ff5f2c1..555da5ab 100644 --- a/crypto_kem/ntruhrss701/clean/poly_lift.c +++ b/crypto_kem/ntruhrss701/clean/poly_lift.c @@ -1,19 +1,5 @@ #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_lift(poly *r, const poly *a) { /* NOTE: Assumes input is in {0,1,2}^N */ @@ -54,9 +40,7 @@ void PQCLEAN_NTRUHRSS701_CLEAN_poly_lift(poly *r, const poly *a) { } /* Finish reduction mod Phi by subtracting Phi * b[N-1] */ - for (i = 0; i < NTRU_N; i++) { - b.coeffs[i] = mod3(b.coeffs[i] + 2 * b.coeffs[NTRU_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); @@ -67,3 +51,4 @@ void PQCLEAN_NTRUHRSS701_CLEAN_poly_lift(poly *r, const poly *a) { r->coeffs[i + 1] = b.coeffs[i] - b.coeffs[i + 1]; } } + diff --git a/crypto_kem/ntruhrss701/clean/poly_r2_inv.c b/crypto_kem/ntruhrss701/clean/poly_r2_inv.c index 49d1acde..3925508a 100644 --- a/crypto_kem/ntruhrss701/clean/poly_r2_inv.c +++ b/crypto_kem/ntruhrss701/clean/poly_r2_inv.c @@ -1,113 +1,69 @@ +/* Based on supercop-20200702/crypto_core/invhrss701/simpler/core.c */ + #include "poly.h" -#include "verify.h" -#define POLY_R2_ADD(I,A,B,S) \ - for ((I)=0; (I)coeffs[i] ^ b->coeffs[i]) & swap; - a->coeffs[i] ^= t; - b->coeffs[i] ^= t; - } -} - -static inline void poly_divx(poly *a, int s) { - int i; - - for (i = 1; i < NTRU_N; i++) { - a->coeffs[i - 1] = (unsigned char) ((s * a->coeffs[i]) | (!s * a->coeffs[i - 1])); - } - a->coeffs[NTRU_N - 1] = (!s * a->coeffs[NTRU_N - 1]); -} - -static inline void poly_mulx(poly *a, int s) { - int i; - - for (i = 1; i < NTRU_N; i++) { - a->coeffs[NTRU_N - i] = (unsigned char) ((s * a->coeffs[NTRU_N - i - 1]) | (!s * a->coeffs[NTRU_N - i])); - } - a->coeffs[0] = (!s * a->coeffs[0]); +/* return -1 if x<0 and y<0; otherwise return 0 */ +static inline int both_negative_mask(int x, int y) { + return (x & y) >> 15; } void PQCLEAN_NTRUHRSS701_CLEAN_poly_R2_inv(poly *r, const poly *a) { - /* Schroeppel--Orman--O'Malley--Spatscheck - * "Almost Inverse" algorithm as described - * by Silverman in NTRU Tech Report #14 */ - // with several modifications to make it run in constant-time - int i, j; - int k = 0; - uint16_t degf = NTRU_N - 1; - uint16_t degg = NTRU_N - 1; - int sign, t, swap; - int16_t done = 0; - poly b, f, g; - poly *c = r; // save some stack space - poly *temp_r = &f; + poly f, g, v, w; + int i, loop, delta; + int sign, swap, t; - /* b(X) := 1 */ - for (i = 1; i < NTRU_N; i++) { - b.coeffs[i] = 0; + for (i = 0; i < NTRU_N; ++i) { + v.coeffs[i] = 0; } - b.coeffs[0] = 1; - - /* c(X) := 0 */ - for (i = 0; i < NTRU_N; i++) { - c->coeffs[i] = 0; + for (i = 0; i < NTRU_N; ++i) { + w.coeffs[i] = 0; } + w.coeffs[0] = 1; - /* f(X) := a(X) */ - for (i = 0; i < NTRU_N; i++) { - f.coeffs[i] = a->coeffs[i] & 1; + for (i = 0; i < NTRU_N; ++i) { + f.coeffs[i] = 1; } - - /* g(X) := 1 + X + X^2 + ... + X^{N-1} */ - for (i = 0; i < NTRU_N; i++) { - g.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; - for (j = 0; j < 2 * (NTRU_N - 1) - 1; j++) { - sign = f.coeffs[0]; - swap = sign & !done & ((degf - degg) >> 15); + delta = 1; - cswappoly(&f, &g, swap); - cswappoly(&b, c, swap); - t = (degf ^ degg) & (-swap); - degf ^= t; - degg ^= t; - - POLY_R2_ADD(i, f, g, sign * (!done)); - POLY_R2_ADD(i, b, (*c), sign * (!done)); - - poly_divx(&f, !done); - poly_mulx(c, !done); - degf -= !done; - k += !done; - - done = 1 - (((uint16_t) - degf) >> 15); - } - - k = k - NTRU_N * ((uint16_t)(NTRU_N - k - 1) >> 15); - - /* Return X^{N-k} * b(X) */ - /* This is a k-coefficient rotation. We do this by looking at the binary - representation of k, rotating for every power of 2, and performing a cmov - if the respective bit is set. */ - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = b.coeffs[i]; - } - - for (i = 0; i < 10; i++) { - for (j = 0; j < NTRU_N; j++) { - temp_r->coeffs[j] = r->coeffs[(j + (1 << i)) % NTRU_N]; + 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]; } - PQCLEAN_NTRUHRSS701_CLEAN_cmov((unsigned char *) & (r->coeffs), - (unsigned char *) & (temp_r->coeffs), sizeof(uint16_t) * NTRU_N, k & 1); - k >>= 1; + v.coeffs[0] = 0; + + sign = g.coeffs[0] & f.coeffs[0]; + swap = both_negative_mask(-delta, -(int) 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/crypto_kem/ntruhrss701/clean/poly_s3_inv.c b/crypto_kem/ntruhrss701/clean/poly_s3_inv.c index 2924455a..d4039d23 100644 --- a/crypto_kem/ntruhrss701/clean/poly_s3_inv.c +++ b/crypto_kem/ntruhrss701/clean/poly_s3_inv.c @@ -1,137 +1,78 @@ +/* Based on supercop-20200702/crypto_core/invhrss701/simpler/core.c */ + #include "poly.h" -#include "verify.h" -static uint16_t mod3(uint16_t a) { - uint16_t r; +static inline uint8_t mod3(uint8_t a) { /* a between 0 and 9 */ 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); + a = (a >> 2) + (a & 3); /* between 0 and 4 */ + t = a - 3; + c = t >> 5; + return t ^ (c & (a ^ t)); } -#define POLY_S3_FMADD(I,A,B,S) \ - for ((I)=0; (I)coeffs[i] ^ b->coeffs[i]) & swap; - a->coeffs[i] ^= t; - b->coeffs[i] ^= t; - } -} - -static inline void poly_divx(poly *a, int s) { - int i; - - for (i = 1; i < NTRU_N; i++) { - a->coeffs[i - 1] = (unsigned char) ((s * a->coeffs[i]) | (!s * a->coeffs[i - 1])); - } - a->coeffs[NTRU_N - 1] = (!s * a->coeffs[NTRU_N - 1]); -} - -static inline void poly_mulx(poly *a, int s) { - int i; - - for (i = 1; i < NTRU_N; i++) { - a->coeffs[NTRU_N - i] = (unsigned char) ((s * a->coeffs[NTRU_N - i - 1]) | (!s * a->coeffs[NTRU_N - i])); - } - a->coeffs[0] = (!s * a->coeffs[0]); +/* return -1 if x<0 and y<0; otherwise return 0 */ +static inline int both_negative_mask(int x, int y) { + return (x & y) >> 15; } void PQCLEAN_NTRUHRSS701_CLEAN_poly_S3_inv(poly *r, const poly *a) { - /* Schroeppel--Orman--O'Malley--Spatscheck - * "Almost Inverse" algorithm as described - * by Silverman in NTRU Tech Report #14 */ - // with several modifications to make it run in constant-time - int i, j; - uint16_t k = 0; - uint16_t degf = NTRU_N - 1; - uint16_t degg = NTRU_N - 1; - int sign, fsign = 0, t, swap; - int16_t done = 0; - poly b, c, f, g; - poly *temp_r = &f; + poly f, g, v, w; + int i, loop, delta; + int sign, swap, t; - /* b(X) := 1 */ - for (i = 1; i < NTRU_N; i++) { - b.coeffs[i] = 0; + for (i = 0; i < NTRU_N; ++i) { + v.coeffs[i] = 0; } - b.coeffs[0] = 1; - - /* c(X) := 0 */ - for (i = 0; i < NTRU_N; i++) { - c.coeffs[i] = 0; + for (i = 0; i < NTRU_N; ++i) { + w.coeffs[i] = 0; } + w.coeffs[0] = 1; - /* f(X) := a(X) */ - for (i = 0; i < NTRU_N; i++) { - f.coeffs[i] = a->coeffs[i]; + for (i = 0; i < NTRU_N; ++i) { + f.coeffs[i] = 1; } - - /* g(X) := 1 + X + X^2 + ... + X^{N-1} */ - for (i = 0; i < NTRU_N; i++) { - g.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; - for (j = 0; j < 2 * (NTRU_N - 1) - 1; j++) { sign = mod3(2 * g.coeffs[0] * f.coeffs[0]); - swap = (((sign & 2) >> 1) | sign) & !done & ((degf - degg) >> 15); + swap = both_negative_mask(-delta, -(int) g.coeffs[0]); + delta ^= swap & (delta ^ -delta); + delta += 1; - cswappoly(&f, &g, swap); - cswappoly(&b, &c, swap); - t = (degf ^ degg) & (-swap); - degf ^= t; - degg ^= t; - - for (i = 0; i < NTRU_N; i++) { - f.coeffs[i] = mod3(f.coeffs[i] + ((uint16_t) (sign * (!done))) * g.coeffs[i]); - } - for (i = 0; i < NTRU_N; i++) { - b.coeffs[i] = mod3(b.coeffs[i] + ((uint16_t) (sign * (!done))) * c.coeffs[i]); + 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; } - poly_divx(&f, !done); - poly_mulx(&c, !done); - degf -= !done; - k += !done; - - done = 1 - (((uint16_t) - degf) >> 15); - } - - fsign = f.coeffs[0]; - k = k - NTRU_N * ((uint16_t)(NTRU_N - k - 1) >> 15); - - /* Return X^{N-k} * b(X) */ - /* This is a k-coefficient rotation. We do this by looking at the binary - representation of k, rotating for every power of 2, and performing a cmov - if the respective bit is set. */ - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = mod3((uint16_t) fsign * b.coeffs[i]); - } - - for (i = 0; i < 10; i++) { - for (j = 0; j < NTRU_N; j++) { - temp_r->coeffs[j] = r->coeffs[(j + (1 << i)) % NTRU_N]; + for (i = 0; i < NTRU_N; ++i) { + g.coeffs[i] = mod3(g.coeffs[i] + sign * f.coeffs[i]); } - PQCLEAN_NTRUHRSS701_CLEAN_cmov((unsigned char *) & (r->coeffs), - (unsigned char *) & (temp_r->coeffs), sizeof(uint16_t) * NTRU_N, k & 1); - k >>= 1; + for (i = 0; i < NTRU_N; ++i) { + w.coeffs[i] = mod3(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; } - /* Reduce modulo Phi_n */ - for (i = 0; i < NTRU_N; i++) { - r->coeffs[i] = mod3(r->coeffs[i] + 2 * r->coeffs[NTRU_N - 1]); + sign = f.coeffs[0]; + for (i = 0; i < NTRU_N - 1; ++i) { + r->coeffs[i] = mod3(sign * v.coeffs[NTRU_N - 2 - i]); } + r->coeffs[NTRU_N - 1] = 0; } diff --git a/crypto_kem/ntruhrss701/clean/sample.c b/crypto_kem/ntruhrss701/clean/sample.c index 51cd725e..52fa202b 100644 --- a/crypto_kem/ntruhrss701/clean/sample.c +++ b/crypto_kem/ntruhrss701/clean/sample.c @@ -3,16 +3,17 @@ 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 sample_iid then conditionally flip */ + /* Sample r using PQCLEAN_NTRUHRSS701_CLEAN_sample_iid then conditionally flip */ /* signs of even index coefficients so that >= 0. */ int i; @@ -42,3 +43,4 @@ void PQCLEAN_NTRUHRSS701_CLEAN_sample_iid_plus(poly *r, const unsigned char unif r->coeffs[i] = 3 & (r->coeffs[i] ^ (r->coeffs[i] >> 15)); } } + diff --git a/crypto_kem/ntruhrss701/clean/sample.h b/crypto_kem/ntruhrss701/clean/sample.h index 518a9433..b68a6624 100644 --- a/crypto_kem/ntruhrss701/clean/sample.h +++ b/crypto_kem/ntruhrss701/clean/sample.h @@ -1,8 +1,6 @@ #ifndef SAMPLE_H #define SAMPLE_H -#include - #include "params.h" #include "poly.h" @@ -11,6 +9,7 @@ void PQCLEAN_NTRUHRSS701_CLEAN_sample_rm(poly *r, poly *m, const unsigned char u 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/crypto_kem/ntruhrss701/clean/verify.c b/crypto_kem/ntruhrss701/clean/verify.c deleted file mode 100644 index 8df86250..00000000 --- a/crypto_kem/ntruhrss701/clean/verify.c +++ /dev/null @@ -1,29 +0,0 @@ -#include -#include - -#include "verify.h" - -/* returns 0 for equal strings, 1 for non-equal strings */ -unsigned char PQCLEAN_NTRUHRSS701_CLEAN_verify(const unsigned char *a, const unsigned char *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 (unsigned char)r; -} - -/* 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); // Two's complement - for (i = 0; i < len; i++) { - r[i] ^= b & (x[i] ^ r[i]); - } -} diff --git a/crypto_kem/ntruhrss701/clean/verify.h b/crypto_kem/ntruhrss701/clean/verify.h deleted file mode 100644 index d9507c76..00000000 --- a/crypto_kem/ntruhrss701/clean/verify.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef VERIFY_H -#define VERIFY_H - -#include - -/* returns 0 for equal strings, 1 for non-equal strings */ -unsigned char PQCLEAN_NTRUHRSS701_CLEAN_verify(const unsigned char *a, const unsigned char *b, size_t len); - -/* 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); - -#endif